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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 384|回复: 2

[求助] [插件]怎样更改hitzone? [复制链接]

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2012-5-28 19:33:04 |显示全部楼层
本帖最后由 水蛭 于 2012-5-28 19:34 编辑
  1. enum (*=2)
  2. {
  3.         HZ_GENERIC=1,
  4.         HZ_HEAD,
  5.         HZ_CHEST,
  6.         HZ_STOMACH,
  7.         HZ_LEFTARM,
  8.         HZ_RIGHTARM,
  9.         HZ_LEFTLEG,
  10.         HZ_RIGHTLEG
  11. }

  12. public fw_TraceAttack(victim, attacker, Float:damage, Float:direction[3], trace, bits)
  13. {
  14.         if (!is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED
  15.         if (get_user_team(victim)!=1) return HAM_IGNORED

  16.         new Float:end[3]
  17.         get_tr2(trace, TR_vecEndPos, end)
  18.         new hitbone = find_closest_bone(victim, end)

  19.         if (!hitbone)
  20.         {
  21.                 set_tr2(trace, TR_iHitgroup, HIT_GENERIC)
  22.                 set_user_hitzones(0, victim, HZ_GENERIC)
  23.         }
  24.         if (hitbone && hitbone<=2)
  25.         {
  26.                 set_tr2(trace, TR_iHitgroup, HIT_CHEST)
  27.                 set_user_hitzones(0, victim, HZ_CHEST)
  28.         }
  29.         if (hitbone>2 && hitbone<=5)
  30.         {
  31.                 set_tr2(trace, TR_iHitgroup, HIT_RIGHTARM)
  32.                 set_user_hitzones(0, victim, HZ_RIGHTARM)
  33.         }
  34.         if (hitbone>5 && hitbone<=8)
  35.         {
  36.                 set_tr2(trace, TR_iHitgroup, HIT_LEFTARM)
  37.                 set_user_hitzones(0, victim, HZ_LEFTARM)
  38.         }
  39.         if (hitbone>8 && hitbone<=17)
  40.         {
  41.                 set_tr2(trace, TR_iHitgroup, HIT_HEAD)
  42.                 set_user_hitzones(0, victim, HZ_HEAD)
  43.         }
  44.         if (hitbone>17 && hitbone<=20)
  45.         {
  46.                 set_tr2(trace, TR_iHitgroup, HIT_LEFTLEG)
  47.                 set_user_hitzones(0, victim, HZ_LEFTLEG)
  48.         }
  49.         if (hitbone>20 && hitbone<=23)
  50.         {
  51.                 set_tr2(trace, TR_iHitgroup, HIT_RIGHTLEG)
  52.                 set_user_hitzones(0, victim, HZ_RIGHTLEG)
  53.         }
  54.         if (hitbone==24)
  55.         {
  56.                 set_tr2(trace, TR_iHitgroup, HIT_STOMACH)
  57.                 set_user_hitzones(0, victim, HZ_STOMACH)
  58.         }
  59.         if (hitbone>24 && hitbone<=28)
  60.         {
  61.                 set_tr2(trace, TR_iHitgroup, HIT_RIGHTLEG)
  62.                 set_user_hitzones(0, victim, HZ_RIGHTLEG)
  63.         }
  64.         if (hitbone>28 && hitbone<=32)
  65.         {
  66.                 set_tr2(trace, TR_iHitgroup, HIT_LEFTLEG)
  67.                 set_user_hitzones(0, victim, HZ_LEFTLEG)
  68.         }
  69.         if (hitbone>32 && hitbone<=34)
  70.         {
  71.                 set_tr2(trace, TR_iHitgroup, HIT_STOMACH)
  72.                 set_user_hitzones(0, victim, HZ_STOMACH)
  73.         }
  74.         return HAM_IGNORED
  75. }

  76. stock find_closest_bone(id, Float:endtrace[3])
  77. {
  78.         new Float:ang[3], Float:org[3], Float:dist = 400.0, Float:curorigin[3], bone_nr
  79.         for (new i=1;i<=34;i++)
  80.         {
  81.                 engfunc(EngFunc_GetBonePosition, any:id, any:i, any:curorigin, any:ang)
  82.                 xs_vec_sub(curorigin, endtrace, ang)

  83.                 if (xs_vec_len(ang)<=dist)
  84.                 {
  85.                         org = curorigin
  86.                         dist = xs_vec_len(ang)
  87.                         bone_nr = i
  88.                 }
  89.                 if (dist<=2.0) break
  90.         }
  91.         return bone_nr
  92. }
复制代码




不知道为什么,这样设置,进入游戏后攻击匪徒会直接弹出游戏。
是不是少了什么或者不能再TraceAttack里面设置hitzones?

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
102
精华
0
声望
1290 点
金币
260 Mold
被赞许
11 次
注册时间
2010-3-8
发表于 2012-6-11 19:58:07 |显示全部楼层
本帖最后由 sk@.@ 于 2012-6-11 19:59 编辑

RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack");

public fw_TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damage_type)
{
        if (get_tr2(tracehandle, TR_iHitgroup) != HIT_HEAD)
                   set_tr2(tracehandle, TR_iHitgroup, HIT_HEAD);
}

以上為不爆頭

則當作爆頭

点评

nan  =.= sk大  发表于 2012-6-11 22:32:39

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2012-6-11 21:20:48 |显示全部楼层
sk@.@ 发表于 2012-6-11 19:58
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack");

public fw_TraceAttack(victim, attacker, F ...

我只不过想把“击中头部爆头”改为“击中鸟部爆头”而已。必须怪物把头长在下面了……

使用道具 举报

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

回顶部