我错在那儿 ?

Home Home
引用 | 编辑 火之新城
2012-07-11 13:50
楼主
推文 x0
虽然能够编绎,但是功能没法正常使用。

amx_bank 没法开出选单,在控制台打 bank_menu 没有任何东西弹出。

VIP_wea 武器攻击力没有生效,请大大们帮我看看。

这是我第 1 次修改插件。

本帖包含附件
档名: zip sma.rar   (2022-06-09 14:20 / 7 KB)   下载次数:9


献花 x0
引用 | 编辑 ccw111
2012-07-11 17:45
1楼
  
关于VIP_wea.sma
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type, id)

正确是这个
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type )

至于bank_menu没法开启的原因,
就是因为你module.ini中
没有把mysql前面的;去掉
;mysql
;sqlite

因此令插件无法读取

献花 x0
引用 | 编辑 火之新城
2012-07-11 19:46
2楼
  
下面是引用 ccw111 于 2012-07-11 17:45 发表的 : 到引言文
关于VIP_wea.sma
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type, id)

正确是这个
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type )

至于bank_menu没法开启的原因,
就是因为你module.ini中
没有把mysql前面的;去掉
;mysql
;sqlite

因此令插件无法读取

我把 public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type, id)

变成

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type) 后

他说 VIP_wea 的第 31 行出现错误 017 "id"



bank_menu 仍然没弹出来 (已删除 ; 号),但是插件的确在运行中。

献花 x0
引用 | 编辑 ccw111
2012-07-12 01:38
3楼
  
因为的的id未定义

所以你可以把attacker换成id

献花 x0
引用 | 编辑 火之新城
2012-07-12 08:38
4楼
  
下面是引用 ccw111 于 2012-07-12 01:38 发表的 : 到引言文
因为的的id未定义

所以你可以把attacker换成id
换了后功能没显着



bank_menu 仍然没法开

献花 x0
引用 | 编辑 ccw111
2012-07-12 10:09
5楼
  
下面是引用 火之新城 于 2012-07-12 08:38 发表的 : 到引言文

换了后功能没显着



bank_menu 仍然没法开

我把VIP_wea.sma修改了一部分
试试这个吧,不过我未测试过

至于bank_menu
好像要2个玩家才能使用
请恕我无法协助( 我是单机测试的 )

本帖包含附件
档名: zip VIP_wea.rar   (2022-06-09 14:20 / 2 KB)   下载次数:4


献花 x0
引用 | 编辑 观众甲
2012-07-13 15:08
6楼
  
bank_menu你确定你有足够权限吗?

献花 x0
引用 | 编辑 zxzyman
2012-07-17 17:55
7楼
  
bank_restrict 0   // 0=所有用户都能使用银行     1=只有文件内的用户


不然就是


bank_offrounds 1   // 地图开始 1 回合内禁止使用银行功能!



再来是上帝说的


bank_min_players 2 //至少须要多少玩家才能开启银行

献花 x0
引用 | 编辑 sonic0103
2012-07-20 08:30
8楼
  
VIP_wea.sma.sma 有出现3个警告讯息你可能要注意一下:

loose indentation:39行、44行 //区块编排错误
function "fw_TakeDamage" should return: 47行 //函数"fw_TakeDamage"应该要有回传值

复制程式
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type, id)
       if (is_user_alive(id) && (get_user_flags(id)&ADMIN_SLAY)) //这里不该出现判断式
       {
              new weaponID = read_data(2)
              if(weaponID == CSW_AK47)
              {
                     damage = (damage * 1.5)
                     SetHamParamFloat(4, damage)
              }
       else if (weaponID == CSW_M4A1)
              {
                     damage = (damage * 2.5)
                     SetHamParamFloat(4, damage)
              }
       return HAM_IGNORED
}


31行应该是写错了,少了区块括号{}
在fw_TakeDamage 函数区块外就多了判断式
if (is_user_alive(id) && (get_user_flags(id)&ADMIN_SLAY))

修改后程式码应该为这样:
复制程式
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type, id)
{
       if (is_user_alive(id) && (get_user_flags(id)&ADMIN_SLAY))
       {
              new weaponID = read_data(2)
              if(weaponID == CSW_AK47)
              {
                     damage = (damage * 1.5)
                     SetHamParamFloat(4, damage)
              }
              else if (weaponID == CSW_M4A1)
              {
                     damage = (damage * 2.5)
                     SetHamParamFloat(4, damage)
              }
       }
       return HAM_IGNORED
}


献花 x0