|
想把一个技能用jass的局部变量做成多人使用的.
但是自己用局部量变替换以后.保存没有问题.但是技能施放以后无效.
自己想不太明白.所以就发上来问问高手们是哪里出了问题.
需要说明的是 这个t中用到了自定义代码.如: [jass]call KissGroupXuanqu( d[1], u[1] )[/jass] 是不是 局部变量不能够传递的问题?[trigger]YZ
事件
单位 - 任意单位 发动技能效果
条件
(施放技能) 等于 影掌压之术
((触发单位) 是 英雄) 等于 TRUE
动作
设置 u[1] = (触发单位)
设置 d[1] = (技能施放点)
设置 damage = (转换 ((u[1] 的智力值(包括 加成)) x (u[1] 的 影掌压之术 技能等级)) 为实数)
循环动作[end]从 1 到 index, 运行 (Loop - 动作)
Loop - 动作
设置 d[2] = (从 d[1] 开始,距离 Form[end] ,方向为 Faci[end] 度的位移处)
设置 u[2] = (新建 (u[1] 的所有者) 的 黑手马甲 在 d[2] 面向角度:Faci[end] 度)
特殊效果 - 删除 (新建特效 Abilities\Spells\Other\Awaken\Awaken.mdl 在 d[2] 处)
点 - 清除 d[2]
等待 0.40 秒
自定义代码: call KissGroupXuanqu( udg_d[1], udg_u[1] )
单位组 - 选取 (代码: gg) 内所有单位做动作
Loop - 动作
设置 u[2] = (新建 (u[1] 的所有者) 的 技能马甲 在(((选取单位) 所在X轴坐标),((选取单位) 所在Y轴坐标)),面向角度:0.00 度)
单位 - 为 u[2] 添加 风暴之锤
单位 - 对 u[2] 发布 人族山丘之王 - 风暴之锤 命令到目标: (选取单位)
单位 - 命令 u[1] 对 (选取单位) 造成 damage 点伤害(是 攻击伤害, 不是远程攻击) 攻击类型: 英雄 伤害类型: 普通 武器类型: 无
等待 0.40 秒
循环动作[end]从 1 到 index, 运行 (Loop - 动作)
Loop - 动作
设置 d[2] = (从 d[1] 开始,距离 Form[end] ,方向为 Faci[end] 度的位移处)
特殊效果 - 删除 (新建特效 Abilities\Spells\Items\AItb\AItbTarget.mdl 在 d[2] 处)
点 - 清除 d[2]
点 - 清除 d[1]
[/trigger]
[jass]
function Trig_YZ_DbfFG25jZs6EConditions takes nothing returns boolean
return ((GetSpellAbilityId() == 'A000') and (IsUnitType(GetTriggerUnit(), UNIT_TYPE_HERO) == true))
endfunction
function Trig_YZ_DbfFG25jZs6EFunc010A takes nothing returns nothing
local unit array u
local real damage
set u[2] = CreateUnit(GetOwningPlayer(u[1]), 'e000', GetUnitX(GetEnumUnit()), GetUnitY(GetEnumUnit()), 0)
call UnitAddAbility( u[2], 'A001' )
call IssueTargetOrderById( u[2], 852095, GetEnumUnit() )
call UnitDamageTarget( u[1], GetEnumUnit(), udg_damage, true, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS )
set u[1]=null
set u[2]=null
endfunction
function Trig_YZ_DbfFG25jZs6EActions takes nothing returns nothing
local unit array u
local location array d
local real damage
local integer end
local integer index
local real array Form
local real array Faci
set u[1] = GetTriggerUnit()
set d[1] = GetSpellTargetLoc()
set damage = I2R(( GetHeroInt(u[1], true) * GetUnitAbilityLevel(u[1], 'A000') ))
set end = 1
loop
exitwhen end > index
set d[2] = PolarProjectionBJ(d[1], Form[end], Faci[end])
set u[2] = CreateUnitAtLoc(GetOwningPlayer(u[1]), 'e007', d[2], Faci[end])
call DestroyEffect( AddSpecialEffectLoc("Abilities\\Spells\\Other\\Awaken\\Awaken.mdl", d[2]) )
call RemoveLocation( d[2] )
set end = end + 1
endloop
call TriggerSleepAction(0.40)
call KissGroupXuanqu( d[1], u[1] )
call ForGroupBJ( (gg), function Trig_YZ_DbfFG25jZs6EFunc010A )
call TriggerSleepAction(0.40)
set end = 1
loop
exitwhen end > index
set d[2] = PolarProjectionBJ(d[1], Form[end], Faci[end])
call DestroyEffect( AddSpecialEffectLoc("Abilities\\Spells\\Items\\AItb\\AItbTarget.mdl", d[2]) )
call RemoveLocation( d[2] )
set end = end + 1
endloop
call RemoveLocation( d[1] )
set d[1]= null
set d[2]=null
set u[1]=null
set u[2]=null
endfunction
//===========================================================================
function InitTrig_YZ_DbfFG25jZs6E takes nothing returns nothing
set gg_trg_YZ_DbfFG25jZs6E = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_YZ_DbfFG25jZs6E, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition(gg_trg_YZ_DbfFG25jZs6E, Condition(function Trig_YZ_DbfFG25jZs6EConditions))
call TriggerAddAction(gg_trg_YZ_DbfFG25jZs6E, function Trig_YZ_DbfFG25jZs6EActions)
endfunction
[/jass] |
|