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