jass 懂得进
function xgvh takes nothing returns boolean
return IsUnitEnemy(GetTriggerUnit(),GetOwningPlayer(GetFilterUnit()))==true
endfunction
function bmm1 takes nothing returns nothing
local unit p5=GetTriggerUnit()
local unit l=GetSpellTargetUnit()
local unit n=null
local integer i=GetUnitAbilityLevel(p5,'A04C')
local real x=GetUnitX(l)
local real y=GetUnitY(l)
local group g=CreateGroup()
local boolexpr b=null
local unit x=CreateUnit(GetOwningPlayer(p5),'e00E',x,y,0)
call GroupEnumUnitsInRange(g,x,y,100,Condition(function xgvh))
loop
set n=FirstOfGroup(g)
exitwhen n==null
call UnitAddAbility(x,'A04C')
call SetUnitAbilityLevel(x,'A04C',i)
call IssueTargetOrder(x,"entanglingroots",n)
call UnitApplyTimedLife("entanglingroots",'BTLF',4)
set x=null
call GroupRemoveUnit(g,n)
endloop
call DestroyGroup(g)
set p5=null
set l=null
endfunction
function bmm0 takes nothing returns boolean
if GetSpellAbilityId()=='A04C' then
call bmm1()
endif
return false
endfunction
function rxvv takes nothing returns nothing
local trigger t=CreateTrigger()
call gg_RegisterPlayerEvent(t,EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(t,Condition(function bmm0))
set t=null
endfunction
经你改后的图没多大变化呀,(你自己在魔兽里运行过没?)还是一样:冰女一放第二招冰冻魔兽就直接退出(无错误提示),和原来我改的效果一样,呵呵,你们能改对也行啊,我直说了吧,只要能把冰女第二招对周围所有人作用的代码写出来,分就给谁,你们都没找到实质性错误
而且还加分 ,还有三楼你真搞,你的QQ拒绝被添加,我怎么加呢? 展开
你也别光丢一堆代码上来 说说每个FUNCTION的功能和传入参数 代码看的我头晕
运行能通过吗?
等等 注册出发时 用的gg_RegisterPlayerEvent (t,EVENT_PLAYER_UNIT_SPELL_CAST)
为什么不用单位事件 着看着像是一个技能
== JASS从上大下的执行 那么迹拆
function bmm0 takes nothing returns boolean
if GetSpellAbilityId()=='A04C' then
call bmm1()
endif
return false
endfunction
这个函数肯定会RETURN false 不过这好像没问题
了解了 上个函数RETURN FLASE 那么这个触发这么写
call TriggerAddCondition(t,Condition(function bmm0))
触发不执行
那么
后面
LOCAL UNIT p5=GetTriggerUnit()
得不到实际值 主要错误
后面还有很多这种错误
触发不执行 害死人
war3是从下向上的编译代码 其旦州亩检测机制有点像C
但是 你说的情况我没模森有发生 代码我的魔兽不会退出
只是什么都没有罢了
但是确实也不是 触发器执行的问题
奇怪 研究研究
我研究了一下 发现我用JASS CRAFT 编译你的代码
首先 我不知道你的那几个自定义技能是什么 也不知道 你的魔兽版本
但是魔兽是可以运行 (改了好一阵)
但是JASSCRAFT检测结果如下
自己看看 变量重名
句柄类变量释放后即(SET NULL)调用源类型
导致 类型不一样
我很惊讶 这样的代码都能运行
如果是冰晶的第二个技能 我做的话根本用不到马甲
用绑定数据做一个计时器伤害
在搞一个绑定的特效就OK了
DOTA 并不是完美的
为什么不用单位事件 着看着像是一个技能
== JASS从上大下的执行 那么
function bmm0 takes nothing returns boolean
if GetSpellAbilityId()=='A04C' then
call bmm1()
endif
return false
endfunction
这个函数肯定会RETURN false 不过这好像没问题
了解了 上个函数RETURN FLASE 那么这个触发这么写
call TriggerAddCondition(t,Condition(function bmm0))
触发不执行
那么
后面
LOCAL UNIT p5=GetTriggerUnit()
得不到实际值 主要错误
后面还有很多这种错误
触发昌团逗不执行 害死人
war3是从下向上的编译代码 其检测机制有点像C
但是 你说的情况我没有发生 代码我的魔兽不会退出
只是什么都没有罢了
但是确实也不是 触发器执行的问题
奇怪 研究研究
我研究了一下 发现我用JASS CRAFT 编译你的代码
首先 我不知道你的那几耐卖个自定义技能是什么 也不知道 你的魔兽版本
但是魔兽是可以运行 (改了好一阵)
但是JASSCRAFT检测结果如下
自己看看 变量重名
句柄类变量释放后即(SET NULL)调用源类型
导致 类型不一样
我很惊讶 这样的代码都能运行
如果是冰晶的第二个技能 我做的话根本用不到马甲
用绑定数据做一个计或谨时器伤害
在搞一个绑定的特效就OK了
DOTA 并不是完美的
local real x=GetUnitX(l)
local unit x=CreateUnit(GetOwningPlayer(p5),'e00E',x,y,0)
修改unit x为其它变量名,就是那句错了,下面的很多对单位x的语句都发生了语法错误;
还有注册事件错了,以下这句
call gg_RegisterPlayerEvent(t,EVENT_PLAYER_UNIT_SPELL_CAST)
你可以用
call TriggerRegisterPlayerUnitEven(触发,缓铅玩家几,事件,布尔表达式)
布尔表达式一般为null,对所有玩家注册事件可以用
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_CAST)直接搞定:
顺便帮你修碧塌改下了所有代码,无错扰慧好!
function xgvh takes nothing returns boolean
return IsUnitEnemy(GetTriggerUnit(),GetOwningPlayer(GetFilterUnit()))==true
endfunction
function bmm1 takes nothing returns nothing
local unit p5=GetTriggerUnit()
local unit l=GetSpellTargetUnit()
local unit n=null
local integer i=GetUnitAbilityLevel(p5,'A04C')
local real x=GetUnitX(l)
local real y=GetUnitY(l)
local group g=CreateGroup()
local boolexpr b=null
local unit u=CreateUnit(GetOwningPlayer(p5),'e00E',x,y,0)
call GroupEnumUnitsInRange(g,x,y,100,Condition(function xgvh))
loop
set n=FirstOfGroup(g)
exitwhen n==null
call UnitAddAbility(u,'A04C')
call SetUnitAbilityLevel(u,'A04C',i)
call IssueTargetOrder(u,"entanglingroots",n)
call UnitApplyTimedLife(u,'BTLF',4)
set u=null
call GroupRemoveUnit(g,n)
endloop
call DestroyGroup(g)
set p5=null
set l=null
endfunction
function bmm0 takes nothing returns boolean
if GetSpellAbilityId()=='A04C' then
call bmm1()
endif
return false
endfunction
function rxvv takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerAddCondition(t,Condition(function bmm0))
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_CAST)
set t=null
endfunction
call GroupEnumUnitsInRange(g,x,y,100,Condition(function xgvh))
loop
set n=FirstOfGroup(g)
exitwhen n==null
call UnitAddAbility(x,'A04C')
call SetUnitAbilityLevel(x,'A04C',i)
call IssueTargetOrder(x,"entanglingroots",n)
call UnitApplyTimedLife("entanglingroots",'BTLF',4)
set x=null
call GroupRemoveUnit(g,n)
endloop
call DestroyGroup(g)
set p5=null
set l=null
endfunction
function bmm0 takes nothing returns boolean
if GetSpellAbilityId()=='A04C' then
call bmm1()
endif
return false
endfunction
function rxvv takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerAddCondition(t,Condition(function bmm0))
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_CAST)
set t=null
endfunction
我是wow8的!有什么问题可加QQ921977939