找回密码
 点一下
查看: 2383|回复: 21

关于英雄属性的问题。

[复制链接]
发表于 2010-9-8 16:47:31 | 显示全部楼层 |阅读模式
一直在自己研究技能,都是利用马甲什么的效果,很少使用的英雄属性,最近我发现一个非常简单

的技能我都搞不明白,希望大神们能帮忙解决下。

我那技能很简单,叫智慧灌输,顾名思义就是给目标英雄增加XX点智力,在XX秒后,效果结束,

XX变成原来的那个数值。可是我在制作的过程中发现,假如不给目标设置一个单位变量,等待几秒

后想减去那加上的几点智力时候,就判断不到目标。这技能是一个BUFF技能,还有就是设置一个

变量的话单单对一个目标施放的话,CD短的话就发生叠加,前面增加的智力就不会扣下去,对其

他单位施放的话就问题就更多了,第一个单位智力就不会扣下去。啊啊啊。搞得我好乱呀,有谁能

帮帮我解决一下这种问题啊。或者发一个教学图给我自己研究下,在此谢谢了,(如果大家没听动

我的描述,你就可以理解成DOTA里的黑鸟什么的,偷智力,偷完后返还的效果,或者小鱼人的那

个偷属性一样。)
发表于 2010-9-8 16:58:54 | 显示全部楼层
先问下,lz有没有jass基础呢?尤其是关于数据绑定的,比如timer与hashtable结合之类的
回复

使用道具 举报

 楼主| 发表于 2010-9-8 17:06:12 | 显示全部楼层
没有jass基础,完全搞不懂那个触发器里的数据绑定什么的~
回复

使用道具 举报

发表于 2010-9-8 17:09:01 | 显示全部楼层
那就T吧
回复

使用道具 举报

 楼主| 发表于 2010-9-8 17:10:49 | 显示全部楼层

回 3楼(a595859893) 的帖子

怎么弄?
回复

使用道具 举报

 楼主| 发表于 2010-9-8 17:11:14 | 显示全部楼层
求教学图。
回复

使用道具 举报

发表于 2010-9-8 17:15:07 | 显示全部楼层
[trigger]
1
    事件
        任意单位 释放技能
    条件
        (释放技能)等于 XX
    动作
        设置X = X + 1
        循环整数A   1-X做动作
        如果条件成立则做动作1,否则做动作2
                条件
                    XX[循环整数A] 等于 没有单位
                则做动作
                    设置 XX[X] = (技能释放目标)
                    英雄 - 增加 XXX 点智力给 XX[X]
                    计时器 - 开启 XXXX[X] 计时方式 一次性
                    为 2 添加事件 XXXX[X] 到期
                    如果条件成立则做动作1,否则做动作2
                        条件
                            循环整数A 不等于 X
                        则做动作
                            设置 X = X - 1
                        则做动作   
                            无动作
                则做动作
                    无动作
[/trigger]
[trigger]
2
    事件
    条件
    动作
        循环整数A   1-X做动作
            如果条件成立则做动作1,否则做动作2
                条件
                    到期的计时器=XXXX[循环整数A]
                则做动作
                    减少XXX点智力给XX[X]
                    设置XX[X]=没有单位
                    如果条件成立则做动作1,否则做动作2
                        如果
                            循环整数A等于X
                        则做动作
                            设置 X = X - 1
                        则做动作
                            无动作
                    则做动作
                        无动作
[/trigger]

大概是这样吧。。。
回复

使用道具 举报

发表于 2010-9-8 17:25:21 | 显示全部楼层
T的话会很麻烦,即使你可以用两个整数作为索引区分别指向数组中当前被执行到的和最大被使用到的这两项,你无法保证当前执行的下一项就是你接下来应该去或许的,因为时间可能不同

比如你在第1秒记录了单位a,时间为10秒
在第3秒记录了单位b,时间为5秒
那么第8秒时第一次即时到期,正确的获取单位应该是b,但你很有可能获取的是a

当然也可以像ls那样单位和计时器两边都用数组,不过这样就必须要去遍历,效率也会有一定影响
而且我没记错的话,计时器比较在原版WE中是不存在的(原版WE控鹿过),仍然需要自定义代码支持
回复

使用道具 举报

发表于 2010-9-8 17:36:05 | 显示全部楼层
直接“等待”不可以吗?就算不行不是还有局部变量啊…
回复

使用道具 举报

发表于 2010-9-8 17:36:24 | 显示全部楼层
其实还可以奢侈的用自定义值这东西
[trigger]
1
    事件
        任意单位释放技能
    条件
        技能等于XXXX
    动作
        添加XXX点XX给X
        设置单位自定义值为XXXX
[/trigger]
[trigger]
2
    事件
        每0.01秒触发事件
    条件
    动作
        (选取(可用地图区域)内所有(自定义值 大于 0 ))内的所有单位单位做动作
             设置(选取单位)的自定义值为((选取单位)的自定义值)-1
             如果条件成立则做动作1,否则做动作2
                 条件
                     ((选取单位)的自定义值))小于或等于 0
                 则做动作
                     减少XXX点XX从(选取单位)
                 则做动作
[/trigger]
回复

使用道具 举报

 楼主| 发表于 2010-9-8 19:09:23 | 显示全部楼层
谢谢9楼呀。我试试。
回复

使用道具 举报

 楼主| 发表于 2010-9-8 19:30:42 | 显示全部楼层
啊,6楼的触发看得我有点头晕,自己在WE试了下,不行呀,是我太菜了。希望6楼能发个附件,好人一生平安。
回复

使用道具 举报

发表于 2010-9-8 19:42:20 | 显示全部楼层
计时器数组需要手动设置大小,或者自己手动创建实例,否则会有问题(WE只会创建数组中所因为0-你设置的大小的项,默认为1)
伸手不是好的行为哦
回复

使用道具 举报

 楼主| 发表于 2010-9-8 20:05:19 | 显示全部楼层

回 12楼(zhuzeitou) 的帖子

主要是我太菜了,一些设置在哪都搞不懂,但我又热爱这玩意。9楼的自定义值会有BUG,同时施放两次后,前面那次的智力就不会扣除了。
回复

使用道具 举报

发表于 2010-9-8 20:46:47 | 显示全部楼层
唉,我觉得这样就可以了……
[trigger]
对战初始化
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 驱散
    动作
        自定义代码: local unit udg_Unit=GetSpellTargetUnit()
        英雄 - 修改 智力 对 Unit : 添加 10 点
        等待 10.00 秒游戏时间
        英雄 - 修改 智力 对 Unit : 减去 10 点
[/trigger]
回复

使用道具 举报

发表于 2010-9-8 20:48:31 | 显示全部楼层
union bug在1.24已经不可以了
回复

使用道具 举报

发表于 2010-9-8 20:50:51 | 显示全部楼层
这是根据13L而修改的东东,依然用到了自定义值
[trigger]
1
    事件
        任意单位释放技能
    条件
        技能等于XXXX
    动作
        添加XXX点XX给X
        设置(技能释放目标)的自定义值为((技能释放目标)的自定义值)+XXXX
[/trigger]
[trigger]
2
    事件
        每0.01秒触发事件
    条件
    动作
        (选取(可用地图区域)内所有(自定义值 大于 0 ))内的所有单位单位做动作
             设置(选取单位)的自定义值为((选取单位)的自定义值)-1
             如果条件成立则做动作1,否则做动作2
                 条件
                     ((选取单位)的自定义值)modXXXX)等于 0
                 则做动作
                     减少XXX点XX从(选取单位)
                 则做动作
[/trigger]
回复

使用道具 举报

发表于 2010-9-8 21:03:14 | 显示全部楼层
引用第15楼zhuzeitou于2010-09-08 20:48发表的  :
union bug在1.24已经不可以了
额,是说不会出现union bug了,还是说一用就会出错呢?
我对1.24不是很清楚……

那么就像这样做吧 test.w3x (15 KB, 下载次数: 6)
[trigger]
对战初始化
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 驱散
    动作
        自定义代码: local unit Target_Unit=GetSpellTargetUnit()
        自定义代码: call ModifyHeroStat( bj_HEROSTAT_INT, Target_Unit, bj_MODIFYMETHOD_ADD, 10 )
        自定义代码: call PolledWait( 10.00 )
        自定义代码: call ModifyHeroStat( bj_HEROSTAT_INT, Target_Unit, bj_MODIFYMETHOD_SUB, 10 )
[/trigger]
代码的意思很简单,就和LSSS的T差不多。
回复

使用道具 举报

发表于 2010-9-8 22:40:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2010-9-8 22:41:46 | 显示全部楼层
引用第17楼希瓦于2010-09-08 21:03发表的  :

额,是说不会出现union bug了,还是说一用就会出错呢?
我对1.24不是很清楚……

那么就像这样做吧
.......

好像是编译通不过了,和return bug一样
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 03:31 , Processed in 0.044969 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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