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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1990|回复: 37

[求助] 插件二问,刀延迟插件声音,人物动作播放 [复制链接]

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-10-29 15:42:18 |显示全部楼层
本帖最后由 水蛭 于 2011-10-29 15:47 编辑

刀子延迟插件整死我了,好不容易消除了大部分bug,完善了功能,如今缺少的就是声音和动作。

1:
刀子击中人时,只会发出固定声音,对玻璃等有生命物质无效,更没刮墙声。我用了几个方法弄
刮墙声,可如今最好的问题就是——刮空气也能产生刮墙声(毕竟这伤害是群杀,咱没办法)。
2:
人物动作无法播放,我好不容易找到了办法,的确有效……有一半效果……人站着不动就有效果
……一移动,手就不捅人了,一动不动的。我说这个动作的设置方法是不是没人知道啊……
参考:

  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. new button = pev(id, pev_button)
  10. if (button & IN_DUCK) set_pev(id, pev_sequence, any:74)
  11. else set_pev(id, pev_sequence, any:76)
  12. set_pdata_int(id, 73, 28)
  13. set_pev(id, pev_frame, any:0)
  14. set_pev(id, pev_framerate, any:1.5)
  15. set_pev(id, pev_animtime, any:get_gametime())

  16. //几秒后真正造成伤害
  17. set_task(0.1, "knife_melee", id+TASK_STABDELAY)//0.1秒后伤害
  18. set_pdata_float(id, m_flNextAttack, 9999.0, OFFSET_LINUX)
  19. set_pdata_int(wpnent, m_fInReload, 1, OFFSET_LINUX_WEAPONS)
  20. set_pdata_float(wpnent, m_flTimeWeaponIdle, 9999.0, OFFSET_LINUX_WEAPONS)
  21. }
  22. public knife_melee(taskid)
  23. {
  24. static id
  25. if (taskid > g_maxplayers) id = ID_STABDELAY
  26. else id = taskid
  27. new Float:target_origin[3]
  28. get_user_startpos(id, 50.0, 0.0, 0.0, target_origin)//攻击距离(32.0)
  29. new wpnent = fm_get_wpnentity(id, CSW_KNIFE)
  30. set_pdata_float(wpnent, m_flNextPrimaryAttack, 0.5, OFFSET_LINUX)//攻击间隔
  31. set_pdata_float(wpnent, m_flNextSecondaryAttack, 0.5, OFFSET_LINUX)//攻击间隔
  32. new target, num=0
  33. while ((target = engfunc(EngFunc_FindEntityInSphere, any:target, any:target_origin, any:50.0)) != 0)
  34. {
  35.   if (pev(target, pev_health)<=0) continue
  36.   if (get_user_team(target) == get_user_team(id)) continue
  37.   if (entity_range(id, target) > 50.0) continue
  38.   if (num > 0) continue
  39.   num ++
  40.   new Float:origin[3]
  41.   pev(target, pev_origin, any:origin)
  42.   FX_Blood(origin)
  43.   origin[2]+=16.0
  44.   FX_Blood(origin)
  45.   ExecuteHamB(Ham_TakeDamage, any:target, any:wpnent, any:id, any:53.0, any:DMG_SLASH)//伤害53.0
  46.   emit_sound(id, CHAN_WEAPON, "weapons/knife_hit1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)//声音
  47. }
  48. new tg, bd, class[32]
  49. get_user_aiming(id, tg, bd, 50)
  50. pev(tg, pev_classname, any:class, any:31)
  51. if (equal(class, "player")) emit_sound(id, CHAN_WEAPON, "weapons/knife_hit1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)//声音
  52. else emit_sound(id, CHAN_WEAPON, "weapons/knife_hitwall1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)//声音
  53. //几秒后攻击恢复
  54. set_task(0.4, "knife_melee_stop", id+TASK_STABDELAY)
  55. }
  56. public knife_melee_stop(taskid)
  57. {
  58. static id
  59. if (taskid > g_maxplayers) id = ID_STABDELAY
  60. else id = taskid
  61. if (!is_user_alive(id)) return
  62. g_meleeing[id] = false
  63. //刀子恢复后的动作
  64. fm_set_user_anim(id, 0)
  65. }
复制代码
整个源代码



_________________
|咱电脑被人玩坏了,   |
|开游戏没多久就CPU |
|温度100°C,死机.      |
|无法测试插件.          |
|________________|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2011-10-29 17:21:02 |显示全部楼层
...........多难的东西啊?还写那么复杂......麻烦,写的方法都有问题了.EngFunc_FindEntityInSphere就已经获取了范围内的实体了, 你获取名字是否是"worldspawn",这东西表示除实体以外的墙啊,什么的.
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
442
精华
0
声望
3435 点
金币
552 Mold
被赞许
4 次
注册时间
2010-11-27

懒人勋章

发表于 2011-10-29 18:43:51 |显示全部楼层
插件我不懂~希望你做出这个插件来发下出来!
MC

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-10-29 19:29:34 |显示全部楼层
405207401 发表于 2011-10-29 18:43
插件我不懂~希望你做出这个插件来发下出来!

源码已经在上面了,不是我写的,我只是修改修复一下bug增加一些功能而已

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-10-29 19:35:15 |显示全部楼层
DSHGFHDS 发表于 2011-10-29 17:21
...........多难的东西啊?还写那么复杂......麻烦,写的方法都有问题了.EngFunc_FindEntityInSphere就已经获 ...

没错吧,玩家前方50像素²内,设为target坐标,然后用EngFunc_FindEntityInSphere获取这个坐标附近50像素²内的实体。
再次获取玩家附近50像素²内的实体,如此一来,被群杀的对象全部在玩家前方50像素²内,同时又不会出现“打中屁股后面的玩家”这种事。
然后就是——你的意思是说墙壁的类型名是worldspawn?
然后判断target是否是worldspawn?不过要是target里面,玩家和墙壁都有怎么办?

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2011-10-29 21:26:13 |显示全部楼层
那就两声音一起放咯- -还有,那不叫像素,CS的距离是用英寸计算的
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
442
精华
0
声望
3435 点
金币
552 Mold
被赞许
4 次
注册时间
2010-11-27

懒人勋章

发表于 2011-10-29 22:05:15 |显示全部楼层
水蛭 发表于 2011-10-29 19:29
源码已经在上面了,不是我写的,我只是修改修复一下bug增加一些功能而已 ...

我不会把源码转AMXX啊~能帮忙转下不
MC

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-10-29 22:11:57 来自手机 |显示全部楼层
本帖最后由 水蛭 于 2011-10-29 22:13 编辑
DSHGFHDS 发表于 2011-10-29 21:26
那就两声音一起放咯- -还有,那不叫像素,CS的距离是用英寸计算的


cs地图制作的方格都和像素一样大小,cs的坐标距离也和地图方格大小距离一致。而且你在游戏里怎么看出英寸,光是把像素看出厘米都很困难。不管怎样,虽说有些图片在游戏里被放大看不出实际像素,但是依然比英寸好算多了。你可用插件计算两个实体距离,中间放一个128像素图片,两个实体分别放在图片边缘,得出的距离就是128。

¥¥¥¥¥¥
手机手写很痛苦……

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2011-10-29 22:15:45 |显示全部楼层
水蛭 发表于 2011-10-29 22:11
cs地图制作的方格都和像素一样大小,cs的坐标距离也和地图方格大小距离一致。而且你在游戏里怎么看出英寸 ...

说了是英寸就英寸了,总比像素清晰了,人家搞个统一的概念,你搞个像素,谁懂你说多少
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
442
精华
0
声望
3435 点
金币
552 Mold
被赞许
4 次
注册时间
2010-11-27

懒人勋章

发表于 2011-10-29 22:24:10 |显示全部楼层
为什么转成AMXX以后没有声音 但是还是没有延迟啊 告诉我怎么回事
MC

使用道具 举报

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

回顶部