搜索
查看: 2172|回复: 2

请各位高手救救我!——这该死的for循环!

[复制链接]
发表于 2007-3-2 16:20:44 | 显示全部楼层 |阅读模式 来自 中国–广东–中山
首先向Rulzy版主提供的优质金钱无限插件表示十分的感谢!
我使用了这个插件之后,按照Rulzy版主的提示,使用cs_get_user_money2(id)和cs_set_user_money2(id, money, flash=1)这两个函数来控制玩家的金钱,已经获得了成功!
但在另外一个插件中却出现了问题,这个插件的用处就是当CT拆除C4或者T引爆C4的时候,给获胜的队伍中存活的队员一定的金钱奖励。代码如下:
/* UTF-8 func by www.DT-Club.net */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <csx>
#include <unlimited_money>
//插件主体
public plugin_init()
{
//定义插件信息
register_plugin("HC_MissionAssistant", "0.1 Test", "Apocalyptic")
//定义CVAR信息,CVAR可以在amxx.cfg中修改它的数值
register_cvar ("hc_ExploedBonus", "6400") //C4爆炸后,仍存活的T可以获得的奖金(如果放C4的人还活着也会得到奖金)
register_cvar ("hc_DefenceBonus", "6400") //拆除C4后存活的CT可以获得的奖金(包括拆C4的人)
//返回继续运行
return PLUGIN_CONTINUE
}
//C4被拆除的事件
public bomb_defused()
{
new Money
new id
new maxplayers = get_maxplayers()
new player[32]
new CsTeams:team
new alive
client_print(0,print_chat,"CT完成任务!所有存活队员每人获得 %d 的奖金!", get_cvar_num("hc_DefenceBonus"))
for(new i = 0; i <= maxplayers; ++i){
id = player
team = cs_get_user_team(i)
alive = is_user_alive (i)
if ( team==CS_TEAM_CT && alive==1)
{
Money = cs_get_user_money2(i)
cs_set_user_money2(i, Money + get_cvar_num("hc_DefenceBonus"),1)
}
}
}
//C4爆炸的事件
public bomb_explode()
{
new Money
new id
new maxplayers = get_maxplayers()
new player[32]
new CsTeams:team
new alive
new j
client_print(0,print_chat,"T完成任务!所有存活队员每人获得 %d 的奖金!", get_cvar_num("hc_ExploedBonus"))
for (j = 1; j <= maxplayers; j=j+1)
{
id = player[j]
team = cs_get_user_team(j)
alive = is_user_alive (j)
if ( team==CS_TEAM_T && alive==1)
{
Money = cs_get_user_money2(j)
cs_set_user_money2(j, Money + get_cvar_num("hc_ExplodeBonus"),1)
}
}
}
当我运行的时候,一旦C4爆炸或者被拆除,就可以看见“T完成任务……”或者“CT完成任务……”的提示,但是金钱数目却没有任何变化。经过反复多次的测试之后,我确定原因在于for循环里面的内容根本没有被执行
请问——为什么会这样啊~~~~~
我都快不行了啊……
:confused: :confused: :confused:
发表于 2007-3-2 18:02:46 | 显示全部楼层 来自 中国–广东–深圳

回复: 请各位高手救救我!——这该死的for循环!

不是 for的问题,是你根本没有掌握用法,看看基本的编写说明
在判断 cs_get_user_team(i) 前,必须确认 i 是在线玩家否则,
程序会被中断,看看你的 amxx log。。。。

看看这个,关于 T 的代码,自己仔细比较下面的来做
[php]
//C4被拆除的事件
public bomb_defused(defuser)
{
   new Money
   new maxplayers = get_maxplayers()
   //new id //不需要
   //new player[32] //不需要
   new CsTeams:team
   //new alive // 不需要
   client_print(0,print_chat,"CT完成任务!所有存活队员每人获得 %d 的奖金!", get_cvar_num("hc_DefenceBonus"))
   // i 为1开始
   for(new i = 1; i <= maxplayers; ++i)
   {
      //id = player // 不需要
      // 先判断是否活者?
      if (!is_user_alive(i))
         continue // 如果是死人,则忽略这个player
      // 判断是否CT
      team = cs_get_user_team(i)
      if (team==CS_TEAM_CT)
      {
         // 加钱
         Money = cs_get_user_money2(i)
         cs_set_user_money2(i, Money + get_cvar_num("hc_DefenceBonus"),1)
      }
   }
   return PLUGIN_CONTINUE
}
[/php]
回复

使用道具 举报

 楼主| 发表于 2007-3-3 16:37:50 | 显示全部楼层 来自 中国–广东–中山

回复: 请各位高手救救我!——这该死的for循环!

原来如此!谢谢指导!
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表