搜索
查看: 2551|回复: 6

[AMXX 带源码] 8874323斑竹帮帮忙

[复制链接]
发表于 2009-6-14 10:20:29 | 显示全部楼层 |阅读模式 来自 中国–广东–中山
本帖最后由 20576526 于 2009-6-14 18:54 编辑
  1. /* UTF-8 func by www.DT-Club.net */

  2. #include <amxmodx>
  3. #include <amxmisc>
  4. #include <fun>
  5. #include <cstrike>

  6. #define MAX_PLAYERS 32

  7. #define PLUGIN_NAME        "HC_Spy"
  8. #define PLUGIN_VERSION        "1.0"
  9. #define PLUGIN_AUTHOR        "Apocalyptic"

  10. new UserName[33][33]//存放玩家名字的二位数组
  11. new CT_models[4][] = {"gign","gsg9","sas","urban"}//存放CT皮肤的数组
  12. new T_models[4][]={"atctic","guerilla","leet","terror"}//存放T皮肤的数组
  13. new up[33]//存放玩家是否已经伪装的数据
  14. new bool:g_restart_attempt[MAX_PLAYERS + 1]//跟重新开局有关的变量
  15. new msg[513]//多彩信息函数使用的数组

  16. public plugin_init()
  17. {
  18.         register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
  19.         //玩家重生事件
  20.         register_event("ResetHUD", "event_hud_reset", "be")
  21.         register_clcmd("fullupdate", "clcmd_fullupdate")
  22.         register_event("TextMsg", "event_restart_attempt", "a", "2=#Game_will_restart_in")
  23.         //注册控制台命令
  24.         register_concmd("hc_spy", "upgrade",0,"Spy")
  25.         //注册CVAR
  26.         register_cvar("hc_Spy", "8000") //进行伪装所需要的资金
  27.         //伤害玩家的事件
  28.         //register_event("Damage","Damage","b","2!0")
  29.         return PLUGIN_CONTINUE
  30. }

  31. //多彩信息函数
  32. public client_color(playerid, colorid, msg[])
  33. {
  34.         message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),_,playerid)
  35.         write_byte(colorid)
  36.         write_string(msg)
  37.         message_end()
  38. }

  39. //玩家加入服务器
  40. public client_putinserver(id)
  41. {
  42.         //绑定F1为伪装键
  43.         client_cmd(id, "")
  44. }

  45. //当玩家重新开局的时候
  46. public clcmd_fullupdate()
  47. {
  48.         return PLUGIN_HANDLED
  49. }

  50. public event_restart_attempt()
  51. {
  52.         new players[32], num
  53.         get_players(players, num, "a")
  54.         for (new i; i < num; ++i)
  55.                 g_restart_attempt[players[i]] = true
  56. }

  57. public event_hud_reset(id)
  58. {
  59.         if (g_restart_attempt[id])
  60.         {
  61.                 g_restart_attempt[id] = false
  62.                 return
  63.         }
  64.         event_player_spawn(id)
  65. }

  66. public  event_player_spawn(id)
  67. {
  68.         //获取玩家的名字
  69.         get_user_name(id,UserName[id],32)
  70.         //显示提示信息
  71.         set_hudmessage(27, 247, 27, -1.0, -1.0, 0, 6.0, 12.0)
  72.         show_hudmessage(id, "【系统提示】:^n请输入MENU选择间谍伪装需要8000元!")
  73.         if (up[id]==1)
  74.         {//如果玩家在上一个回合已经伪装,就让他恢复原形
  75.                 if (cs_get_user_team(id)==CS_TEAM_CT)
  76.                 {//扮演CT的玩家随机选择一个CT皮肤
  77.                         cs_set_user_model(id,CT_models[random_num(0,3)])
  78.                 }
  79.                 if (cs_get_user_team(id)==CS_TEAM_T)
  80.                 {//扮演T的玩家随机选择一个T皮肤
  81.                         cs_set_user_model(id,T_models[random_num(0,3)])
  82.                 }
  83.         }
  84. }

  85. //伪装的命令
  86. public upgrade(id)
  87. {
  88.         if (up[id]==1)
  89.         {//如果玩家已经伪装,显示提示信息
  90.                 format(msg, 513, "^x04【系统提示】^x01您已经购买了^x04间谍伪装^x01!")
  91.                 client_color(id,id, msg)
  92.                 return PLUGIN_HANDLED
  93.         }
  94.         if (!cs_get_user_buyzone(id))
  95.         {//如果玩家不在购买区内,显示提示信息
  96.                 format(msg, 513, "^x04【系统提示】^x01您必须在^x04购买区域^x01内才能使用!")
  97.                 client_color(id,id, msg)
  98.                 return PLUGIN_HANDLED
  99.         }
  100.         if (!is_user_alive(id))
  101.         {//如果玩家已死,显示提示信息
  102.                 format(msg, 513, "^x04【系统提示】^x01您必须在^x04存活^x01状态下使用!")
  103.                 client_color(id,id, msg)
  104.                 return PLUGIN_HANDLED
  105.         }
  106.         if (cs_get_user_money(id)<get_cvar_num("hc_Spy"))
  107.         {//如果玩家的资金不足,显示提示信息
  108.                 format(msg, 513, "^x04【系统提示】^x01您不够金钱来买伪装术!至少需要^x04%d^x01!",get_cvar_num("hc_Spy"))
  109.                 client_color(id,id, msg)
  110.                 return PLUGIN_HANDLED
  111.         }       
  112.         else
  113.         {//如果以上条件都满足,就允许伪装
  114.                 //扣除所需要的资金
  115.                 cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("hc_Spy"),1)
  116.                 if (cs_get_user_team(id)==CS_TEAM_CT)
  117.                 {//给扮演CT的玩家随机选择一个T的模型
  118.                         cs_set_user_model(id,T_models[random_num(0,3)])
  119.                 }
  120.                 if (cs_get_user_team(id)==CS_TEAM_T)
  121.                 {//给扮演T的玩家随机选择一个CT的模型
  122.                         cs_set_user_model(id,CT_models[random_num(0,3)])
  123.                 }
  124.                 //设置玩家已经伪装
  125.                 up[id]=1
  126.                 for (new x=1;x<=32;x=x+1)
  127.                 {//循坏查找每个玩家
  128.                         if(is_user_connected(x)&&is_user_alive(x))
  129.                         {//排除已死或者不在线的玩家
  130.                                 if (cs_get_user_team(x)==cs_get_user_team(id) && x!=id)
  131.                                 {//查找队友
  132.                                         format(msg, 513, "^x04【系统提示】^x01请注意!队友^x03%s^x01已经伪装成敌人!请注意分辨!",UserName[id])
  133.                                         client_color(x,id, msg)
  134.                                 }
  135.                                 if (cs_get_user_team(x)!=cs_get_user_team(id) && cs_get_user_team(x)!=CS_TEAM_SPECTATOR)
  136.                                 {//不是队友也不是观察者的人
  137.                                         format(msg, 513, "^x04【系统提示】^x01请注意!敌人^x03%s^x01已经伪装成我们的人!请注意分辨!",UserName[id])
  138.                                         client_color(x,id, msg)
  139.                                 }
  140.                                 if (x==id)
  141.                                 {//伪装者自己
  142.                                         format(msg, 513, "^x04【系统提示】^x01升级^x04间谍伪装^x01成功!")
  143.                                         client_color(id,id, msg)
  144.                                 }
  145.                         }
  146.                 }
  147.         }
  148.         return PLUGIN_CONTINUE
  149. }
复制代码
这个插件问题:第一局购买间谍伪装就没有问题,然后到了第二局你在购买间谍伪装,就提示你已经购买了间谍伪装了,后面就没有办法使用了,我觉得好象少个判断只类的命令,后台老是提示:没有找到带着那个名字或编号的客户端帮帮忙呀
 楼主| 发表于 2009-6-15 20:29:42 | 显示全部楼层 来自 中国–江苏–南京
自己先顶着吧:L
回复

使用道具 举报

发表于 2009-6-16 01:51:10 | 显示全部楼层 来自 中国–广东–广州
LZ,你这个源码是你自己写的还是别人写的!
我怎么看上去觉得有好多错误吖!
回复

使用道具 举报

发表于 2009-6-16 02:48:58 | 显示全部楼层 来自 中国–广东–广州
你这个东西我越看越觉得漏洞百出,能说一下这是谁写的吗??
回复

使用道具 举报

发表于 2009-6-16 06:14:34 | 显示全部楼层 来自 中国–四川–遂宁
本帖最后由 sakulekingz 于 2009-6-16 06:19 编辑

大致的看了下源代码,发现了楼主说的问题所在
  1. event_player_spawn
复制代码
改成这样
  1. public event_player_spawn(id)
  2. {
  3.         //获取玩家的名字
  4.        
  5.         get_user_name(id,UserName[id],32)
  6.         //显示提示信息
  7.         set_hudmessage(27, 247, 27, -1.0, -1.0, 0, 6.0, 12.0)
  8.         show_hudmessage(id, "【系统提示】:^n请输入MENU选择间谍伪装需要8000元!")
  9.        
  10.         if (up[id]==1)
  11.         {
  12.                 //如果玩家在上一个回合已经伪装,就让他恢复原形
  13.                
  14.                 if (cs_get_user_team(id)==CS_TEAM_CT)
  15.                 {
  16.                         //扮演CT的玩家随机选择一个CT皮肤
  17.                         cs_set_user_model(id,CT_models[random_num(0,3)])
  18.                 }
  19.                 if (cs_get_user_team(id)==CS_TEAM_T)
  20.                 {
  21.                         //扮演T的玩家随机选择一个T皮肤
  22.                         cs_set_user_model(id,T_models[random_num(0,3)])
  23.                 }
  24.                 up[id]=0
  25.         }
  26. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2009-6-16 09:48:02 | 显示全部楼层 来自 中国–广东–中山
那就请kk阿朗帮忙把原文件修改一下吧,不是我写的,哈哈没有哪个本事
回复

使用道具 举报

发表于 2009-6-17 00:47:29 | 显示全部楼层 来自 中国–广东–广州
我看你还不如说一下你想怎么样的一个插件,我试试看能不能帮你写一个!!
回复

使用道具 举报

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

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