找回密码
 点一下
查看: 2413|回复: 9

我做了个J技能请大家看看可行不

[复制链接]
发表于 2013-7-27 12:07:10 | 显示全部楼层 |阅读模式
本帖最后由 o0木子0o 于 2013-7-27 21:14 编辑

我想做个离中心越近伤害越大的技能
与是出现了这个技能
由于可以用魔兽争霸的网吧被查封了,所以我无法验证这技能是否可行
大家帮看看可行不
function Trig_______uConditions takes nothing returns boolean
    return ( ( GetSpellAbilityId() == 'AHfs' ) )        //'AHfs' 这是烈焰风暴
endfunction
function Trig_______uActions takes nothing returns nothing
    if ( ( GetUnitAbilityLevel(GetSpellAbilityUnit(), 'AHfs') == 1 ) ) then
        local integer a = 10
        loop
        set a =a+1
        call CreateNUnitsAtLoc(1, 'hfoo', Player(0), GetSpellTargetLoc(), bj_UNIT_FACING)
        call UnitApplyTimedLife(GetLastCreatedUnit(), 'BHwe', 1.00)
        call UnitDamagePointLoc(GetTriggerUnit(), 0.10, a, GetSpellTargetLoc(), a, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_DIVINE)
        exitwhnen (a==500)
    else
    endif
endfunction
发现了一个问题那就是如果按上面的话,单位要创建489次.........大问题....卡死你
下面是我修改后的
function Trig_______uConditions takes nothing returns boolean
    return ( ( GetSpellAbilityId() == 'AHfs' ) )        //'AHfs' 这是烈焰风暴
endfunction
function Trig_______uActions takes nothing returns nothing
    if ( ( GetUnitAbilityLevel(GetSpellAbilityUnit(), 'AHfs') == 1 ) ) then
        local integer a = 10
        call CreateNUnitsAtLoc(1, 'hfoo', Player(0), GetSpellTargetLoc(), bj_UNIT_FACING)
        call UnitApplyTimedLife(GetLastCreatedUnit(), 'BHwe', 1.00)
        loop
        call UnitDamagePointLoc(GetTriggerUnit(), 0.10, AAA, GetSpellTargetLoc(), AAA, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_DIVINE)
        set AAA =a+10
        exitwhnen (a==500)
    else
    endif
endfunction

OK了.....要我翻译成T吗


发表于 2013-7-27 21:01:38 | 显示全部楼层
魔兽争霸到底招惹谁了……为啥要疯掉啊……

点评

魔兽争霸没招惹谁,网吧被封是因为它是黑网吧......  详情 回复 发表于 2013-7-27 21:06
回复

使用道具 举报

 楼主| 发表于 2013-7-27 21:06:38 | 显示全部楼层
lo 发表于 2013-7-27 21:01
魔兽争霸到底招惹谁了……为啥要疯掉啊……

魔兽争霸没招惹谁,网吧被封是因为它是黑网吧......
回复

使用道具 举报

发表于 2013-7-27 21:16:02 | 显示全部楼层
原来是这样啊……我也觉得魔兽没问题……jass确实看不懂呐……T版就好了……
回复

使用道具 举报

发表于 2013-7-27 21:21:05 | 显示全部楼层
应该有用的样子 在中心的单位会受到50次伤害 在边缘的单位只会受到1~几次伤害 不过你这样的话就不能加伤害显示系统了

点评

问题就在这,我给地图加伤害显示了555555  详情 回复 发表于 2013-7-27 21:24
回复

使用道具 举报

 楼主| 发表于 2013-7-27 21:24:34 | 显示全部楼层
咚咚咚、查水表 发表于 2013-7-27 21:21
应该有用的样子 在中心的单位会受到50次伤害 在边缘的单位只会受到1~几次伤害 不过你这样的话就不能加伤害 ...

问题就在这,我给地图加伤害显示了555555
回复

使用道具 举报

发表于 2013-7-27 21:30:28 | 显示全部楼层
其实可以变量记录技能施放点,然后选取范围内的单位造成伤害。
比如说这样:
设置点 p0 = 技能施放点
设置单位组 group = 以 p0 为中心,300范围内的所有单位
选取 group 内的所有单位做动作
    loop
        设置 p1 =选取单位的位置
        命令英雄对选取单位造成 400 - (p0到p1距离) 点伤害
        清除 p1
清除 p0
删除group

这样也就能完成离中心点越近,伤害越高了,不过这个是最简单的一次函数,精通数学的可以设置成其他更科学的公式来造成伤害。


点评

好蛋疼,找了好多资料 是如此吗 function Trig_______uConditions takes nothing returns boolean return ( ( GetSpellAbilityId() == 'AHfs' ) ) //'AHfs' 这是烈焰风暴 endfunction function Trig  详情 回复 发表于 2013-7-27 22:43
回复

使用道具 举报

 楼主| 发表于 2013-7-27 22:43:13 | 显示全部楼层
lo 发表于 2013-7-27 21:30
其实可以变量记录技能施放点,然后选取范围内的单位造成伤害。
比如说这样:
设置点 p0 = 技能施放点

好蛋疼,找了好多资料
是如此吗
function Trig_______uConditions takes nothing returns boolean
    return ( ( GetSpellAbilityId() == 'AHfs' ) )        //'AHfs' 这是烈焰风暴
endfunction
function Trig_______uActions takes nothing returns nothing
    if ( ( GetUnitAbilityLevel(GetSpellAbilityUnit(), 'AHfs') == 1 ) ) then
       local location p0 =  GetSpellTargetLoc()
       local group A =GroupEnumUnitsInRangeOfLoc(300,p0)
       local location p1 =  GetUnitLoc(GetEnumUnit())  //是这个吗还是local location p1 =  GetEnumUnit( GetUnitLoc())  
       call UnitDamageTargetBJ( GetLastCreatedUnit(), A,400-(p0到p1距离), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )   //400-(p0到p1距离)这个我没找到所以.....
       set p0 =null
       set p0 =null
       call DestroyGroup(A)
    else
    endif
endfunction


function Trig_______uConditions takes nothing returns boolean
    return ( ( 施放技能() == 'AHfs' ) )        //'AHfs' 这是烈焰风暴
endfunction
function Trig_______uActions takes nothing returns nothing
    if ( ( 单位技能等级 [R](施法单位(), 'AHfs') == 1 ) ) then
       局部变量 点 p0 =  技能施放点()
       局部变量 单位组 A =为单位组添加单位(指定范围)(点) [新](300,p0)
       局部变量 点 p1 =  单位位置(选取单位())  //是这个吗还是局部变量 点 p1 =  选取单位( 单位位置())  
       call 伤害目标 [R]( 最后创建的单位 [旧](), A,400-(p0到p1距离), 法术, 法术 )   //400-(p0到p1距离)这个我没找到所以.....
       set p0 =null
       set p0 =null
       call 删除单位组 [R](A)
    else
    endif
endfunction

回复

使用道具 举报

发表于 2013-7-28 11:19:03 | 显示全部楼层
看不懂呀……用T吧……我记得有文本转化工具的,你再去找找……

点评

没找到...... [attachimg]145370[/attachimg][attachimg]145371[/attachimg]  详情 回复 发表于 2013-7-28 13:41
回复

使用道具 举报

 楼主| 发表于 2013-7-28 13:41:07 | 显示全部楼层
本帖最后由 o0木子0o 于 2013-7-28 13:49 编辑
lo 发表于 2013-7-28 11:19
看不懂呀……用T吧……我记得有文本转化工具的,你再去找找……


没找到......
s.jpg sw.jpg
.........
发现个不给力的.....连默认建筑朝向都不知道了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 02:49 , Processed in 0.568627 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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