搜索
查看: 1973|回复: 4

Rulzy老大还有问题请教,请进,谢谢。

[复制链接]
发表于 2007-5-24 23:45:40 | 显示全部楼层 |阅读模式 来自 中国–广西–柳州–柳北区
想弄个队伍平衡插件,可不知道怎么获取换队伍和加入队伍的事件,看了好多相关插件还是不懂,比如
register_event("TextMsg","team_join","a","1=1","2&Game_join_te","2&Game_join_ct")
是吗?然后
public team_join(id) {
    new team[2]
    read_data( 1, team, 1 )
    g_teamScore[ (team[0]=='C') ? 1 : 0 ] = read_data(2)
    if ( g_teamScore[0] > g_teamScore[0] + 5 )
    {
    new players, Tcount
    cs_set_user_team(players,CS_TEAM_T)
    Tcount++
    }
}
可以通过吗?换队伍和加入队伍的事件可以归到一个事件里吗?谢谢。
发表于 2007-5-25 00:59:29 | 显示全部楼层 来自 中国–福建–漳州

回复: Rulzy老大还有问题请教,请进,谢谢。

  1. register_logevent("team_join",3,"1=joined team","2=TERRORIST","2=CT","2=SPECTATOR")
  2. public team_join()
  3. {
  4.     new user[128]
  5.     read_logargv(0, user, 127)
  6.     new name[32], oldteam[12]={0}
  7.     parse_loguser(user, name, 31, _, _, _, oldteam, 11)
  8.     new id = get_user_index(name)
  9.     new newteam[16]
  10.     read_logargv(2,newteam, 15)
  11.     if(equal(newteam,"SPECTATOR")) //加入观察员
  12.     {
  13.         if(equal(oldteam, "TERRORIST")) //从T加入观察员
  14.         {
  15.             ....
  16.         }else if(equal(oldteam, "CT")){ //从CT加入观察员
  17.             ....
  18.         }else{  //进入服务器就加入观察员
  19.             ....
  20.         }
  21.     }else if(equal(newteam,"TERRORIST")){  //加入T队伍
  22.         if(equal(oldteam,"SPECTATOR")){  //从观察员加入T
  23.             ....
  24.         }else if(equal(oldteam,"CT")){  //从CT加入T
  25.             ....
  26.         }else if(oldteam[0]==0){  //连接到服务器就加入T或CT
  27.             ....
  28.         }
  29.     }else if(equal(newteam,"CT")){  //加入CT队伍
  30.         if(equal(oldteam,"TERRORIST")){  //从T加入CT
  31.             ....
  32.         }else if(equal(oldteam,"SPECTATOR")){  //从观察员加入CT
  33.             ....
  34.         }else if(oldteam[0]==0){  //连接到服务器就加入CT
  35.             ....
  36.         }
  37.     }
  38. }
复制代码
可以这样得到,但这只是得到,并不能阻止,要想阻止,用下面的方法:
  1. register_menucmd(-2,(1<<0)|(1<<1)|(1<<4)|(1<<5),"team_select")
  2. register_menucmd(register_menuid("Team_Select", 1),(1<<0)|(1<<1)|(1<<4)|(1<<5),"team_select")
  3. public team_select(id, key){
  4.     //这里的key对应选择队伍时的菜单项,但key值小1。
  5.     //即key为0指选择菜单项1(选择T),key为1指选择菜单项2(选择CT),
  6.     //即key为4指选择菜单项5(自动选择),key为5指选择菜单项6(选择观察员)
  7.     //如果阻止,return PLUGIN_HANDLED;否则 return PLUGIN_CONTINUE
  8. }
  9. public client_command(id)
  10. {
  11.     new command[32]
  12.     read_argv(0, command, 31)
  13.     if(equali(command, "jointeam"))
  14.     {
  15.         new num, snum[3]
  16.         read_argv(1, snum, 2)
  17.         num = str_to_num(snum)
  18.         return team_select(id, num-1)
  19.     }
  20.     return PLUGIN_CONTINUE
  21. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2007-5-25 04:04:42 | 显示全部楼层 来自 中国–广西–柳州–柳北区

回复: Rulzy老大还有问题请教,请进,谢谢。

谢谢老大,第二个这里
public team_select(id, key){
    //这里的key对应选择队伍时的菜单项,但key值小1。
    //即key为0指选择菜单项1(选择T),key为1指选择菜单项2(选择CT),
    //即key为4指选择菜单项5(自动选择),key为5指选择菜单项6(选择观察员)
    //如果阻止,return PLUGIN_HANDLED;否则 return PLUGIN_CONTINUE
}
谜糊得很,就用第一个了。还有请问
    new team[2]

    read_data( 1, team, 1 )

    g_teamScore[ (team[0]=='C') ? 1 : 0 ] = read_data(2)

    if ( g_teamScore[0] > g_teamScore[0] + 5 )

    {

    new players, Tcount

    cs_set_user_team(players,CS_TEAM_T)

    Tcount++

    }

}  
这里是不是错了,我的本意是当土匪胜的局数大于5时就把人分配到警察那边,但是好像运行不成功。麻烦你了。
回复

使用道具 举报

发表于 2007-5-25 21:09:00 | 显示全部楼层 来自 中国–福建–漳州

回复: Rulzy老大还有问题请教,请进,谢谢。

if ( g_teamScore[0] > g_teamScore[0] + 5 )

这个条件可能成立吗???
回复

使用道具 举报

 楼主| 发表于 2007-5-26 00:12:26 | 显示全部楼层 来自 中国–广西–柳州–柳北区

回复: Rulzy老大还有问题请教,请进,谢谢。

:embarrass:embarrass:embarrass不好意思,搞错。谢谢。调试去了。
回复

使用道具 举报

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

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