cityhonghu 发表于 2009-10-3 19:45:03

求助,武器判断小代码这样写是否对?(已解决)

本帖最后由 cityhonghu 于 2009-10-4 11:53 编辑

要做到的是,如果玩家使用雷类就切换至刀。如果使用其他武器则丢掉该武器。
疑问:
1。engclient_cmd和client_cmd用哪个比较好呢?
2。wpn的值是否也可以表现为数值呢?比如 if(wpn == 6)
3。CSW_HEGRENADE不需要""符号吗?
代码如下。谢谢new wpn = get_user_weapon(id)
switch (N) {
case 1:
   
case 2:
    //如果为手雷,闪光,烟幕弹,则强制换刀。
    if (wpn == CSW_HEGRENADE || wpn == CSW_SMOKEGRENADE || wpn == CSW_FLASHBANG)
      engclient_cmd(id, "weapon_knife")
    //如果持有其他武器则丢掉该武器
    else{
      if (wpn != CSW_KNIFE) { //当不是刀的时候丢掉
      engclient_cmd(id, "wpn") //为防止快速切换至其他武器,先切换至该武器
      engclient_cmd(id, "drop") //丢掉
      }
    }
}

Rulzy 发表于 2009-10-4 00:36:06

get_user_weapon(id) 返回的本来就是一个整数,像 CSW_HEGRENADE 这些是一个预定义常量,在 amxconst.inc 中定义。CSW_HEGRENADE 其实就是整数4。
像你说的,可以改成这样:new wpn = get_user_weapon(id)
switch (wpn) {
        case CSW_HEGRENADE, CSW_SMOKEGRENADE, CSW_FLASHBANG:
                engclient_cmd(id, "weapon_knife");//换成刀
        case CSW_KNIFE:
                ; //不做任何事
        default:
                client_cmd(id, "drop"); //丢掉该武器
}

cityhonghu 发表于 2009-10-4 04:50:53

谢谢rulzy版大,还是你写的一目了然。借用一下了。

cityhonghu 发表于 2009-10-4 06:01:22

借用了一下,但是编译出现错误。出现错误的行为[; //不做任何事]
// E:\HLDS27016\cstrike\addons\amxmodx\scripting\sxei_required2.sma(353) : error
036: empty statement

Rulzy 发表于 2009-10-4 10:03:23

改成new wpn = get_user_weapon(id)
switch (wpn) {
      case CSW_HEGRENADE, CSW_SMOKEGRENADE, CSW_FLASHBANG:
                engclient_cmd(id, "weapon_knife");//换成刀
      case CSW_KNIFE:
                {} //不做任何事
      default:
                client_cmd(id, "drop"); //丢掉该武器
}忘了,sma是允许用空语句的。

cityhonghu 发表于 2009-10-4 11:53:36

这回可以了,谢谢版大。

lili2009 发表于 2010-3-14 19:52:15

http://forums.alliedmods.net/forumdisplay.php?f=3
页: [1]
查看完整版本: 求助,武器判断小代码这样写是否对?(已解决)