找回密码
 点一下
查看: 1325|回复: 12

触发玩家索引如何在其他触发中出现且不会与其他触发者发生冲突

[复制链接]
发表于 2010-7-17 22:18:26 | 显示全部楼层 |阅读模式
比如施放一个技能:冲锋
就要至少有一个施法单位变量SpellUnit和一个目标单位变量TargeUnit由于触发中需要一些等待的时间,因此不能只用单一变量(防止等待时变量被其他触发者更新)
要用到单位索引
我想要问的是如何让SpellUnit((触发玩家)的玩家索引号)注册,能在其他触发中出现,而且可以不必与其他触发者冲突(就是这一点把我难住了)
如果用单一的变量记录((触发玩家)的玩家索引号)的话,还是有可能引起冲突,但是如果依然用单位索引的话,就再次掉落到这个死循环圈里了。。。
在线等到有解为止啊。。。
发表于 2010-7-17 22:34:57 | 显示全部楼层
[trigger]
飘过的触发器
    事件
        单位 - 任意单位 开始施放技能
    条件
        (施放技能) 等于 冲锋
    动作
        For循环整数A从 1 到 10000, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        SpellUnit[(循环整数A)] 等于 没有单位
                    Then - 动作
                        设置 SpellUnit[(循环整数A)] = (触发单位)
                        设置 TargeUnit[(循环整数A)] = (技能施放目标)
                        跳过剩余动作
                    Else - 动作
[/trigger]
不知道你是不是要这种。。。。
回复

使用道具 举报

 楼主| 发表于 2010-7-17 22:39:59 | 显示全部楼层
我竟然忘记了循环整数了!
LS这种利用是否有单位保证不会发生冲突的概念太有创意了
这里学习了
非常感谢
回复

使用道具 举报

发表于 2010-7-17 22:44:32 | 显示全部楼层

回 3楼(幻夜の风) 的帖子

问题解决,请改分类。
回复

使用道具 举报

 楼主| 发表于 2010-7-17 22:48:43 | 显示全部楼层
但是要怎么用呢?
怎么在其他动作读取记录的单位?
回复

使用道具 举报

发表于 2010-7-17 22:57:10 | 显示全部楼层
引用第5楼幻夜の风于2010-07-17 22:48发表的  :
但是要怎么用呢?
怎么在其他动作读取记录的单位?
看不懂什么意思。。。。
可以详细一点吗?
回复

使用道具 举报

 楼主| 发表于 2010-7-17 23:02:47 | 显示全部楼层
我是说在接下来的动作里
怎么才能利用到这些循环整数的变量
回复

使用道具 举报

发表于 2010-7-17 23:08:49 | 显示全部楼层
[trigger]
飘过的触发器2号
    事件
        时间 - 每 1.00 秒触发事件
    条件
    动作
        For循环整数A从 1 到 10000, 做动作
            Loop - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        SpellUnit[(循环整数A)] 不等于 没有单位
                    Then - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (生命值 对于 TargeUnit[(循环整数A)]) 大于或等于 50.00
                            Then - 动作
                                单位 - 命令 SpellUnit[(循环整数A)] 对 TargeUnit[(循环整数A)] 造成 2.00 点伤害,攻击类型: 法术 伤害类型: 普通
                            Else - 动作
                                设置 SpellUnit[(循环整数A)] = 没有单位
                                设置 TargeUnit[(循环整数A)] = 没有单位
                    Else - 动作
[/trigger]
虽然这样貌似很奢侈。。。。。
回复

使用道具 举报

 楼主| 发表于 2010-7-17 23:09:45 | 显示全部楼层
岁数大了,记性也差了~
转换思想都忘光光了
回复

使用道具 举报

发表于 2010-7-18 12:51:02 | 显示全部楼层
其实最好将“跳过剩余动作”改成“自定义代码:exitwhen(true)”。
这样就可以直接在下面的语言中写动作了。

如果LZ会J的话,那么其实可以定义一个简单的函数来完成此效果:
function timerunit takes timer tq returns integer
local integer ia=0
loop
exitwhen udg_timer[ia]==tq
set ia=ia+1
endloop
return ia
endfunction

udg_timer是一个计时器数组全局变量
这个函数的作用就是在udg_timer中找到特定的计时器的序号

比如:local integer yigeint=timerunit(null) 就是找到空位来存放计时器,并将其放到yigeint之中。

不过说起来,直接就可以用“局部变量”轻松解决,完全没必要用数组啊。
回复

使用道具 举报

发表于 2010-7-18 22:38:45 | 显示全部楼层
如果纯T的话,施法单位,施法单位点,施法目标,单位组,目标点这些你可能用到的全部变成数组,然后就可以用玩家索引了,只要不是特别复杂或长时间的技能完全没有问题,
回复

使用道具 举报

发表于 2010-7-18 22:40:52 | 显示全部楼层
能用單位組+單位自定義值
回复

使用道具 举报

发表于 2010-7-18 23:42:29 | 显示全部楼层
这种一般的解决方式是:

1、局部变量+GetHandleId+HT
2、TimerDataSystem
3、栈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-29 00:17 , Processed in 0.287075 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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