SMA一問(傷害無效)(200雅幣~)

Home Home
引用 | 編輯 觀眾甲
2012-02-04 23:27
樓主
推文 x0
請問各位大大
如果我想寫
if(get_user_weapon(id) != CSW_KNIFE)
{
       傷害無效(類似無敵模式,但是只對某一人)
}
類似cs_set_user_godmode,但是如果我真的要用這個指令碼
如果一個人用KNIFE,另一個人用USP
同時攻擊某個受傷者
要不然就不會受傷
要不然就USP+KNIFE的傷害
所以我希望弄到如果武器不是KNIFE的話
傷害無效

獻花 x0
引用 | 編輯 ChaosX
2012-02-05 02:06
1樓
  
很簡單阿...
在fw_TakeDamage裡面做就可以了
方法你知道的

獻花 x0
引用 | 編輯 觀眾甲
2012-02-05 10:57
2樓
  
takedamage我知道啊...
只是不知道用啥字造成傷害無效==
是return HAM_XXXXX嗎= =

獻花 x0
引用 | 編輯 8106125
2012-02-05 12:29
3樓
  
複製程式
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
       if (victim == attacker || !is_user_connected(attacker))
              return HAM_IGNORED;

       if(get_user_weapon(attacke) != CSW_KNIFE)
       {
              damage *=0.0
              SetHamParamFloat(4, damage)
       }

       return HAM_IGNORED;
}

試試看這段

獻花 x1
引用 | 編輯 kevin961104
2012-02-05 12:40
4樓
  
[quote]下面是引用 8106125 於 2012-02-05 12:29 發表的 : 到引言文
複製程式
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
       if (victim == attacker || !is_user_connected(attacker))
              return HAM_IGNORED;
.......[/quote][font=verdana,][color=#659b28][backcolor=][align=left]
 



這位大大的好像是把攻擊*0而已...
並不是無效化..


無效化的話

複製程式
new nohurt[33]
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
       if (victim == attacker || !is_user_connected(attacker))
              return HAM_IGNORED;


       if(get_user_weapon(attacker) != CSW_KNIFE)
       {
              if(nohurt[victim])
                    return HAM_SUPERCEDE;
       }
       return HAM_IGNORED;
}



nohurt可以是你設定成某一人的ID
並使傷害無效..

獻花 x1
引用 | 編輯 husano896
2012-02-06 09:45
5樓
  
下面是引用 上帝的右手^^ 於 2012-02-05 21:04 發表的 : 到引言文
測試過上面大大的代碼,但也無效X.X
如果有大大可以幫忙的話,雙倍獎賞:D


2/6 17:57修改:traceattack版

複製程式
#define TASK_GOTHURT CSW_KNIFE
#define DOUBLE_ATTACK_TIME 0.2 //同時攻擊有效的時間
new nohurt[33], Float:g_damage[33]

public fw_TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damage_type)
{
       if (victim == attacker || !is_user_connected(attacker))
              return HAM_IGNORED;

       if (!is_user_connected(victim))
              return HAM_IGNORED;

       switch (nohurt[victim])
       {
              case 0:
              {
                     if(get_user_weapon(attacker) == CSW_KNIFE)
                            nohurt[victim] = 1
                     else if(get_user_weapon(attacker) == CSW_USP)
                            nohurt[victim] = 2
                     set_task(DOUBLE_ATTACK_TIME,"remove_hurt",id+TASK_GOTHURT)
                     g_damage[victim] += damage 
                     return HAM_SUPERCEDE;
              }
              case 1:
              {
                     if(get_user_weapon(attacker) == CSW_USP)
                     {
                            damage +=g_damage[victim]
                            SetHamParamFloat(3, damage)
                            remove_hurt(id+TASK_GOTHURT)
                            return HAM_IGNORED;
                     }
                     return HAM_SUPERCEDE;
              }
              case 2:
              {
                     if(get_user_weapon(attacker) == CSW_KNIFE)
                     {
                            damage +=g_damage[victim]
                            SetHamParamFloat(3, damage)
                            remove_hurt(id+TASK_GOTHURT)
                            return HAM_IGNORED;
                     }
                     return HAM_SUPERCEDE;
              }
       }
       return HAM_IGNORED;
}

ZBOT支援省略(炸飛

獻花 x1
引用 | 編輯 觀眾甲
2012-02-06 15:42
6樓
  
下面是引用 kevin961104 於 2012-02-05 12:40 發表的 : 到引言文
[/code] 

這位大大的好像是把攻擊*0而已...
.......
原來這條指令是可以的:D
只是上次我測試的時候沒詳細,所以沒測試出
"但是還是會噴血跟畫面震動:("
那麼有大大可以幫忙嗎= =不會噴血跟屏幕震動


獻花 x0
引用 | 編輯 HiNess
2012-02-06 17:26
7樓
  
 
下面是引用 上帝的右手^^ 於 2012-02-06 15:42 發表的 : 到引言文
原來這條指令是可以的:D
只是上次我測試的時候沒詳細,所以沒測試出
"但是還是會噴血跟畫面震動:("
那麼有大大可以幫忙嗎= =不會噴血跟屏幕震動

複製程式
public fw_TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damage_type)
{
  if (victim == attacker || !is_user_connected(attacker))
    return HAM_IGNORED;
  
  if(get_user_weapon(attacker) != CSW_KNIFE)
  {
    if(nohurt[victim])
      return HAM_SUPERCEDE;
  }
  
  return HAM_IGNORED;
}

貌似TraceAttack也要控制


獻花 x1
引用 | 編輯 觀眾甲
2012-02-06 19:00
8樓
  
下面是引用 husano896 於 2012-02-06 09:45 發表的 : 到引言文


2/6 17:57修改:traceattack版
[code]#define TASK_GOTHURT CSW_KNIFE
.......
HiNess的代碼已經成功了^^
感謝各位大大.問題已解決

獻花 x0