set_task中关于参数传递的问题
如果我需要在某种情况下,延迟一点时间,然后对一个玩家实施伤害,我使用了这样的代码:public hurt(Victim,hurtdamage)
{
user_slap(Victim,hurtdamage)
}
问题是,现在我需要在set_task中给函数传递两个参数:Victim和hurtdamage,我这样写:
set_task(1.0,"hurt",Victim,hurtdamage)
这样的话,hurtdamage就会出现类型错误。
按照官方的说明,set_task是这样的:
set_task ( Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0 )
我理解为:第一个是延迟的时间,第二个是需要执行的函数,第三个是传递到函数的参数,第四五个我还不明白,第六个是标记,第七个是重复次数。
请高手指教,如何才能实现我的目的?
回复: set_task中关于参数传递的问题
set_task ( Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0 )第三个是 taskid(用于标识这个TASK,可以使用 remove_task(taskid) 移除这个task), 第四个是参数,第五个是参数的长度。
set_task 较常用的方式有两种:
1. 当只传递一个整数时,使用如下方式:
set_task(0.1, "task", taskid)
或 set_task(0.1, "task", taskid, _, _, "a", 7)
或 set_task(0.1, "task", taskid, _, _, "b")
public task(taskid)
{
....
}
这样,set_task中的taskid是什么值,task函数中的taskid就是什么值。“_”表示当有默认参数时使用默认参数。
2. 传递两个或两个以上参数时(以两个参数为例):
new param
param=1
param=2
set_task(0.1, "task", taskid, param, 2)
或 set_task(0.1, "task", taskid, param, 2, "a", 7)
或 set_task(0.1, "task", taskid, param, 2, "b")
public task(param[])
{
....
}
这样,set_task 函数中的 param 和 task 函数中的 param 各个元素一一对应。即在上面的task函数中,param的值为1, param的值为2。
回复: set_task中关于参数传递的问题
原来要使用数组来传递参数,难怪我一直弄不出来!谢谢了!
回复: set_task中关于参数传递的问题
好像不行。比如说,我在一个伤害事件中用Attacker和Victim分别代表攻击者和受害者的id,read_data(2)直接读取伤害程度。我这样赋值:
new new param
param=Attacker
param=Victim
param=read_data(2)
目前已知上述这些赋值都是成功的。但在函数中
public task(param[])
{
....
}
task读取到的数组中的每一个数值都是0,我觉得这个数组并没有被正确传递过去,请问是什么原因?
回复: set_task中关于参数传递的问题
public plugin_init(){
........
register_event("Damage", "damage_event", "b", "2!0")
........
}
public demage_event(id)
{
new param
param=id
param=get_user_attacker(id)
param=read_data(2)
set_task(0.1, "task", _, param, 3)
}
public task(param[])
{
new attacker=param
new victim=param
new damage=param
........
}
回复: set_task中关于参数传递的问题
Post by Rulzypublic task(param[])
{
new attacker=param
new victim=param
new damage=param
........
}
:brick: :brick: :brick:
我就是这么写的,还是不行啊~~
怎么传递过去的都是0呢?
回复: set_task中关于参数传递的问题
已认真拜读,谢谢楼主无私指导 set_task(0.1, "task", taskid, _, _, "b")这样写的时候,传送的参数是taskid 而且是1个的意思吗? 我也明白了,谢谢!
页:
[1]