对实体用set_task避免崩溃
cs插件吧
全部回复
仅看楼主
level 13
Jep💨 楼主
经过我一段时间的尝试,发现在task里写入删除实体后,在开局后几秒便会崩溃。
public xxxx(ent)
{
set_task(5.0, "delete_ent", ent)
}
public delete_ent(ent)
{
remove_entity(ent) // fakemeta的删除实体也行 我手机党 忘了那句…
}
具体我也不清楚为什么会崩溃,似乎是在task那的实体索引获取到另一个去了,所以判断pev_valid也没用。
解决方法我也说不出好点的,但如果用remove_entity_name 就不会出错,但是全部实体都会被删,至于删除个别实体的方法靠大家了…
2014年04月02日 01点04分 1
level 15
[惊讶]
2014年04月02日 02点04分 2
level 11
你帖出来的代码是没有问题的 关键的xxxx是怎么来却没有告诉我们
2014年04月02日 09点04分 3
level 8
目测你传递的ent值是0,然后想删除world,游戏就崩溃了…
pev_valid世界实体当然返回1有效了,但你想删除它是不可能的。
至于为什么ent的值会是0,就要看你剩下的未公开的代码里是怎么写的…
2014年04月02日 09点04分 4
level 13
Jep💨 楼主
那个xxx不影响,突然想起我是在创建实体后就用了set_task
2014年04月02日 10点04分 5
level 8
呵呵,set_task那个传递的本来就不是实体ID,而是任务ID,用来移除或修改task的。
如果未设置或数据类型什么的弄错了,则传递的taskID将为0,所以问题还是在于你是怎么用的…
2014年04月02日 14点04分 6
你可以自己测试一下,在对ent之前判断下值,如果为0则set_fail_state("set_task错误"),这样的话即使出错也不会退出游戏了。
2014年04月02日 14点04分
那判断classname就能避免错误了吧?
2014年04月03日 08点04分
@Jep💨 谁知道你在干嘛?还是那句,在使用移除前判断下是否为0,然后set_fail_state("set_task错误")就知道你到底是错在哪里了…别人都不会崩溃,只有你用崩了,显然你用法有问题,又不把用法发出来别人也不可能知道你是怎么用的…
2014年04月03日 09点04分
回复 冰火魔法湿 :我手机党…具体也没怎么用 设置实体类型 设置模型 设置移动类型 设置owner 和anim 然后就se_task
2014年04月03日 09点04分
1