找回密码
 点一下
查看: 1934|回复: 19

新手有个关于变量的一个小问题

[复制链接]
发表于 2011-4-8 10:05:24 | 显示全部楼层 |阅读模式
我最近想做个图,想实现当玩家1建筑分家的时候变量+1
但是,我找不到怎么识别分家名称的函数,请问各位大大怎么应该怎么实现呢。
发表于 2011-4-8 11:00:50 | 显示全部楼层
建筑分家是什么啊?你是说开分基地的意思?

如果你是针对AI玩家,那么确实有专门函数。而如果你是活人的话,怎么可能有这样的函数。


因为开分基地这话本来就没法有一个严谨说法,比如当两片矿连在一块时,你造两个基地算不算开分基?或者,你在另一个矿区造油厂,却不造主基地的话又算怎么样?

你若是有严格的界定方式,倒是可以自行实现是否开了分基地的判断。
回复

使用道具 举报

 楼主| 发表于 2011-4-8 11:39:18 | 显示全部楼层
就是每次建造主基地的时候,本人变量+1,别人建造一个主基地,别人变量+1
回复

使用道具 举报

发表于 2011-4-8 11:44:31 | 显示全部楼层
如果只是单纯计算基地数量,这个倒是很容易解决的。不过顺便问下,你这变量算的是所有已经建造完成的呢?还是把建造中的也算进去?

造过但是被打掉那些算不算进去呢?你造别的族的基地算不算进去呢?
回复

使用道具 举报

 楼主| 发表于 2011-4-8 12:07:05 | 显示全部楼层
玩家1建造了基地1个,玩家1变量+1
玩家2建造了基地1个,玩家2变量+1
玩家1摧毁了自己的基地1个,玩家1变量-1
变量赋予的着块我会,就是怎么叫地图知道是玩家1或是玩家2建造的基地。
回复

使用道具 举报

发表于 2011-4-8 12:19:26 | 显示全部楼层
使用函数,获得“单位拥有者”就可以。另外按照你这个情况,每次发生建造完成事件和单位死亡事件时直接计算玩家所拥有的基地总数比每次+1/-1要准确得多。

首先新建一个长度为16的全局变量,比如叫BaseCount,记录每个玩家的基地个数,然后两个触发就能解决问题。

[trigger]
Finished
    Events
        Unit - Any Unit construction progress is Completed
    Local Variables
        Owner = (Owner of (Triggering progress unit)) <Integer>
    Conditions
        ((Unit type of (Triggering progress unit)) is Prevents melee-disabled status) == true
    Actions
        Variable - Modify BaseCount[Owner]: + 1
[/trigger]

[trigger]
Death
    Events
        Unit - Any Unit dies
    Local Variables
        Owner = (Owner of (Triggering unit)) <Integer>
    Conditions
        ((Unit type of (Triggering unit)) is Prevents melee-disabled status) == true
    Actions
        Variable - Modify BaseCount[Owner]: - 1
[/trigger]

你可以下了演示去看。

另外,如果你要连还未建造完成的也算进去,那么第一个触发的事件改为单位被创建就成了。

BaseCount.SC2Map

15 KB, 下载次数: 7

回复

使用道具 举报

 楼主| 发表于 2011-4-8 13:58:20 | 显示全部楼层

回 5楼(麦德三世) 的帖子

我中文版现在是这么设置的,估计是笨点。
问题1.png
回复

使用道具 举报

发表于 2011-4-8 14:00:06 | 显示全部楼层
你直接把地图下去然后打开就能看到中文版啦。
回复

使用道具 举报

 楼主| 发表于 2011-4-8 14:04:01 | 显示全部楼层
我试试
回复

使用道具 举报

 楼主| 发表于 2011-4-8 14:47:54 | 显示全部楼层
现在我编成这样的了,但是分不出玩家1和2的变量了
问题1.png
回复

使用道具 举报

发表于 2011-4-8 14:57:09 | 显示全部楼层
你那个变量要钩上数组。

用数组下标来代表不同的玩家。
回复

使用道具 举报

 楼主| 发表于 2011-4-8 15:27:54 | 显示全部楼层
我现在是这样,不知道,大大的QQ是多少MM的发给我,好么,这么发好慢!
问题1.png
回复

使用道具 举报

发表于 2011-4-8 15:28:25 | 显示全部楼层
怎么?你没下我那个演示?
回复

使用道具 举报

 楼主| 发表于 2011-4-8 15:30:20 | 显示全部楼层
我再仔细研究下
回复

使用道具 举报

发表于 2011-4-8 15:31:58 | 显示全部楼层
钩上数组,然后在大小的第一行填写16。因为SC2总共就16个玩家。后面3行都留0好了。

因为这里用不到多维数组。
回复

使用道具 举报

 楼主| 发表于 2011-4-8 15:59:35 | 显示全部楼层
然后我应该怎么测试呢?
回复

使用道具 举报

发表于 2011-4-8 19:57:55 | 显示全部楼层
你可以直接把数字显示到屏幕上呗。

Screenshot2011-04-08 19_56_57.jpg

BaseCount.SC2Map

17 KB, 下载次数: 3

回复

使用道具 举报

 楼主| 发表于 2011-4-9 09:29:53 | 显示全部楼层
我现在想这么做,但是,出现了问题,不识别玩家,大大帮着按思路纠正下么

测试.SC2Map

2.87 MB, 下载次数: 2

回复

使用道具 举报

发表于 2011-4-9 09:49:58 | 显示全部楼层
把触发玩家的所有者改成触发进度的玩家的所有者。
回复

使用道具 举报

 楼主| 发表于 2011-4-9 10:18:18 | 显示全部楼层
厉害,这一块解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-24 02:40 , Processed in 0.106654 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表