找回密码
 点一下
查看: 5598|回复: 26

关于一个自制的DotA技能

[复制链接]
发表于 2008-8-19 18:13:21 | 显示全部楼层 |阅读模式
Jass代码如下:
function IsSpellA1MX takes nothing returns boolean
local player PLY=GetOwningPlayer(GetTriggerUnit())
local integer LVL=GetUnitAbilityLevel(GetTriggerUnit(),'A1MX')
return ((GetSpellAbilityId()=='A1MX')and(GetPlayerState(PLY,PLAYER_STATE_RESOURCE_GOLD)>=LVL*100+400))
endfunction

function SpellA1MX takes nothing returns nothing
local player PLY=GetOwningPlayer(GetTriggerUnit())
local integer LVL=GetUnitAbilityLevel(GetTriggerUnit(),'A1MX')
call SetPlayerState(PLY,PLAYER_STATE_RESOURCE_GOLD,(GetPlayerState(PLY,PLAYER_STATE_RESOURCE_GOLD)+LVL*50+50))
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Transmute\\PileofGold.mdl",GetTriggerUnit(),"origin"))
endfunction

function TriggerSpellA1MX takes nothing returns nothing
local trigger t=CreateTrigger()
call V0X(t,EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(t,Condition(function IsSpellA1MX))
call TriggerAddAction(t,function SpellA1MX)
set t=null
endfunction

技能说明:
技能代码为A1MX,原型为AHtc(其他相关的SLK文件已经写好了),V0X为DotA作者编写好的注册触发器函数。
当施放该技能时,如果玩家英雄身上的金钱大于500/600/700/800,则自动增加金钱100/150/200/250.

不过有个问题,就是在DotA里,使用该技能后,技能会耗魔,会进入冷却时间,但就是没有效果,玩家英雄身上不增加金钱,头上也没有冒金币,不知为啥...

PS:另外问一下,函数TriggerRegisterAnyUnitEvent和TriggerRegisterAnyUnitEventBJ、函数UnitDamageTarget和UnitDamageTargetBJ有什么区别?

高人求助啊,有重谢!!!

函数V0X代码为:
function V0X takes trigger t,playerunitevent V1X returns nothing
local integer MLV=0
loop
call TriggerRegisterPlayerUnitEvent(t,Player(MLV),V1X,null)
set MLV=MLV+1
exitwhen MLV==16
endloop
endfunction
发表于 2008-8-19 19:30:22 | 显示全部楼层
TriggerRegisterAnyUnitEvent这个函数是不存在的吧~~

[codes=jass]function UnitDamageTargetBJ takes unit whichUnit, unit target, real amount, attacktype whichAttack, damagetype whichDamage returns boolean
    return UnitDamageTarget(whichUnit, target, amount, true, false, whichAttack, whichDamage, WEAPON_TYPE_WHOKNOWS)
endfunction[/codes]

bj函数是blizzard.j里的,是调用common.j里的函数的,效率以及功能上差一点

dota AI汉化者光顾GA啦,呵呵
回复

使用道具 举报

 楼主| 发表于 2008-8-19 20:51:20 | 显示全部楼层
嗯,谢啦。
光顾很久了,只是这一次遇到了点难题望jass高手指教——怎么能让这个技能有效果?
有重谢!
回复

使用道具 举报

发表于 2008-8-19 21:07:34 | 显示全部楼层
初看了下感觉没什么问题,所以问一些些问题
1、TriggerSpellA1MX这个函数有没有被调用呢?
2、技能id会不会疏忽写错了呢?
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:18:35 | 显示全部楼层
引用第3楼zhuzeitou于2008-08-19 21:07发表的  :
初看了下感觉没什么问题,所以问一些些问题
1、TriggerSpellA1MX这个函数有没有被调用呢?
2、技能id会不会疏忽写错了呢?

1.不晓得
2.没有拼错,技能就是A1MX
回复

使用道具 举报

发表于 2008-8-19 21:21:51 | 显示全部楼层
额,为什么是不晓得,唉唉………………
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:26:44 | 显示全部楼层
引用第5楼zhuzeitou于2008-08-19 21:21发表的  :
额,为什么是不晓得,唉唉………………

因为我也不知道函数IsSpellA1MX有没有被调用
回复

使用道具 举报

发表于 2008-8-19 21:31:22 | 显示全部楼层
额………………那我也跟着囧吧………………
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:32:50 | 显示全部楼层
引用第7楼zhuzeitou于2008-08-19 21:31发表的  :
额………………那我也跟着囧吧………………

刚刚确定了,没有被调用,难道是触发器注册方面有问题?
回复

使用道具 举报

发表于 2008-8-19 21:34:37 | 显示全部楼层
这个函数是初始化触发器,就是注册任意单位释放这个技能的
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:42:19 | 显示全部楼层
那真的不知道问题在哪里~
做过测试,IsSpellA1MX就是没被调用
A1MX用AHtc作为原型有没有错?
回复

使用道具 举报

发表于 2008-8-19 21:45:10 | 显示全部楼层
这个应该没问题,按触发描述看就是一个无目标的技能,和原技能是符合的

那么IsSpellA1MX是判断技能以及资源,而TriggerSpellA1MX是为所与单位注册发动技能效果的事件,并添加条件和动作,如果Trigger那个函数没被调用过的话,这个技能也就不会有效了
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:51:58 | 显示全部楼层
那么如何才能让函数TriggerSpellA1MX被调用?
这跟摆放位置有没有关系,放在函数main前面行不行?
回复

使用道具 举报

发表于 2008-8-19 21:55:00 | 显示全部楼层
这个要自己在代码里call这个函数额,不call的话不会自己被调用的口牙
回复

使用道具 举报

 楼主| 发表于 2008-8-19 21:59:47 | 显示全部楼层
问一下,函数ExecuteFunc是什么作用?
回复

使用道具 举报

发表于 2008-8-19 22:03:41 | 显示全部楼层
call函数调用时必须满足被调用函数在调用者的位置之前
ExecuteFunc可以忽略函数位置去调用,但是只能调用无参函数

比如说一个函数叫a,ExecuteFunc("a")就可以了
回复

使用道具 举报

 楼主| 发表于 2008-8-19 22:07:46 | 显示全部楼层
call ExecuteFunc("TriggerSpellA1MX")
这样调用行不行?
回复

使用道具 举报

发表于 2008-8-19 22:08:49 | 显示全部楼层
恩,应该可以的,call ExecuteFunc("TriggerSpellA1MX")

修正了之前的一个错误说法

为什么不直接call TriggerSpellA1MX()呢?
回复

使用道具 举报

 楼主| 发表于 2008-8-19 22:13:47 | 显示全部楼层
哦,DotA里IF就这么写的……
回复

使用道具 举报

发表于 2008-8-19 22:15:04 | 显示全部楼层
哦哦,期待harreke同学成功咯~~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 09:05 , Processed in 0.134836 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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