设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 476|回复: 3

[求助] 求解几个函数的意思。 [复制链接]

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-10-24 19:21:59 |显示全部楼层
set_pdata_float(wpnent, 46, 1.0, 5);//攻击间隔
set_pdata_float(wpnent, 47, 1.0, 5);//攻击间隔
这是什么意思?这两个来自刀子延迟插件(hz_melee)的zombie_stab片段。也就是按下攻击按钮经过延迟后的。
还有一个,get_user_startpos(id, 64.0, 0.0, 0.0, target_origin)
这个64.0是不是代表攻击的距离?也就是瞄准的目标与自己之间的距离?
依然有一个:
while ((target = engfunc(EngFunc_FindEntityInSphere, target, target_origin, 32.0)) != 0)
应该也是距离……范围?目标与瞄准的坐标之间的范围?也就是群杀的效果制作是吗?(猜测)不等于0是啥?

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
249
精华
0
声望
1627 点
金币
438 Mold
被赞许
7 次
注册时间
2011-1-27

可爱小猫 懒人勋章

发表于 2011-10-24 21:41:11 |显示全部楼层
攻击间隔指的是两次出刀之间的时间,至于下面的你去看看导弹插件原理,还有刀的范围这个更困难,只设置刀的范围是做不到CF群伤的效果的,要另做效果
路见不顺     拳打脚踢

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-10-25 06:20:01 |显示全部楼层
kc1992 发表于 2011-10-24 21:41
攻击间隔指的是两次出刀之间的时间,至于下面的你去看看导弹插件原理,还有刀的范围这个更困难,只设置刀的 ...
  1. public fw_WeaponFire_Melee(wpnent)
  2. {
  3. if (!pev_valid(wpnent)) return
  4. new id = pev(wpnent, pev_owner)
  5. if (g_meleeing[id] || g_stabing[id]) return
  6. g_meleeing[id] = true
  7. //播放V模型动作
  8. fm_set_user_anim(id, random_num(6,7))//播放第6/7个动作
  9. //几秒后真正造成伤害
  10. set_task(0.2, "knife_melee", id+TASK_STABDELAY)//0.5秒后伤害
  11. set_pdata_float(id, m_flNextAttack, 9999.0, OFFSET_LINUX)
  12. set_pdata_int(wpnent, m_fInReload, 1, OFFSET_LINUX_WEAPONS)
  13. set_pdata_float(wpnent, m_flTimeWeaponIdle, 9999.0, OFFSET_LINUX_WEAPONS)
  14. }
  15. public knife_melee(taskid)
  16. {
  17. static id
  18. if (taskid > g_maxplayers) id = ID_STABDELAY
  19. else id = taskid
  20. new Float:target_origin[3]
  21. get_user_startpos(id, 48.0, 0.0, 0.0, target_origin)//攻击距离(48.0)
  22. new target, num = 0
  23. new wpnent = fm_get_wpnentity(id, CSW_KNIFE)
  24. set_pdata_float(wpnent, 46, 1.0, 5)//攻击间隔
  25. set_pdata_float(wpnent, 47, 1.0, 5)//攻击间隔
  26. while ((target = engfunc(EngFunc_FindEntityInSphere, any:target, any:target_origin, any:48.0)) != 0)
  27. {
  28.   if (!is_user_alive(target)) continue
  29.   if (get_user_team(target) == get_user_team(id)) continue
  30.   if (num > 0) continue
  31.   num ++
  32.   ExecuteHamB(Ham_TakeDamage, target, wpnent, id, 45.0, DMG_CLUB)//伤害99自己改
  33.   engfunc(EngFunc_EmitSound, any:id, any:CHAN_WEAPON, any:"weapons/knife_stab.wav", any:VOL_NORM, any:ATTN_NORM, any:0, any:PITCH_NORM)
  34. }
  35. //几秒后攻击恢复
  36. set_task(0.5, "knife_melee_stop", id+TASK_STABDELAY)
  37. }
复制代码

你看着整个

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2011-10-25 13:33:24 |显示全部楼层
46和47是offset的值, 46是普通攻击的速度,枪的射速 ==, 47是特殊攻击的,也是刀的右键
EngFunc_FindEntityInSphere是用来获取某个点指定范围内的实体
欢迎加入讨论群 164384320

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部