搜索
楼主: epic

[AMXX 带源码] [已解决]点通的高手前辈们,我写的插件错在哪里,谢谢

[复制链接]
发表于 2010-1-13 12:02:53 | 显示全部楼层 来自 中国–广东–深圳
其实我觉得这样写好像是错误的...
被你弄混了
我等下重新写个吧
回复

使用道具 举报

 楼主| 发表于 2010-1-13 12:11:39 | 显示全部楼层 来自 中国–天津–天津
那太感谢了
回复

使用道具 举报

发表于 2010-1-13 15:07:38 | 显示全部楼层 来自 中国–广东–深圳
  1. #include <amxmodx>
  2. #include <fakemeta>



  3. #define PLUGIN  "Convert ping to frags"
  4. #define VERSION "0.1"
  5. #define AUTHOR  "epic"


  6. new High_ping
  7. new Extra_frags
  8. new ActionTimes
  9. new sZpingNum[33]
  10. new bool:HighPlayer[33]
  11. // CS Teams
  12. enum
  13. {
  14.         CS_TEAM_UNASSIGNED = 0,
  15.         CS_TEAM_T,
  16.         CS_TEAM_CT,
  17.         CS_TEAM_SPECTATOR
  18. }

  19. public plugin_init()
  20. {
  21.         register_plugin(PLUGIN, VERSION, AUTHOR)
  22.         register_event("DeathMsg", "DeathEvent", "a")
  23.         register_logevent("EventJoinedTeam",3,"1=joined team")
  24.         High_ping = register_cvar( "Convertpingtofrags_Highping", "10" )
  25.         Extra_frags = register_cvar( "Convertpingtofrags_Extrafrags", "2" )
  26.         ActionTimes = register_cvar( "sZ_ActionTimes", "3" )
  27. }
  28. public DeathEvent()
  29. {
  30.         new victimId = read_data(2)
  31.         new killerId = read_data(1)
  32.         if (!killerId || killerId==victimId)
  33.                 return PLUGIN_CONTINUE
  34.         if (get_user_team(killerId)==get_user_team(victimId))
  35.                 return PLUGIN_CONTINUE
  36.         if(!HighPlayer[killerId])
  37.                 return PLUGIN_CONTINUE
  38.        
  39.         UpdateFrags(killerId)         
  40.        
  41.         return PLUGIN_CONTINUE
  42. }
  43. public EventJoinedTeam(){
  44.        
  45.         new log[64],username[32],userid,authid[32],oldteam[32],id
  46.         read_logargv(0,log,63)
  47.         parse_loguser(log,username,31,userid,authid,31,oldteam,31)
  48.        
  49.         if(equali(oldteam,"CT")||equali(oldteam,"TERRORIST")||equali(oldteam,"spectator"))
  50.                 return PLUGIN_CONTINUE;
  51.        
  52.         HighPlayer[id] = false
  53.         sZpingNum[id]=0
  54.         id=get_user_index(username)
  55.         new param[1]
  56.         param[0] = id
  57.         set_task(10.0, "CheckPing", 123+id,param, _, "a", 6)//每10秒检查一次!只检查6次!来确认玩家的ping是否是高于所定义的ping
  58.         return PLUGIN_CONTINUE;
  59. }
  60. public CheckPing(param[]){
  61.        
  62.         new id = param[0]
  63.         if(is_user_connected(id)){
  64.        
  65.                 new ping, loss
  66.                 get_user_ping(id, ping, loss)
  67.                 if (ping >= High_ping)
  68.                         sZpingNum[id]++
  69.                 else if(ping < High_ping)
  70.                         sZpingNum[id]--
  71.                 if(sZpingNum[id] > ActionTimes)
  72.                         HighPlayer[id] = true
  73.         }
  74. }
  75. public client_disconnect(id){
  76.         HighPlayer[id] = false
  77.         sZpingNum[id]=0
  78. }

  79. UpdateFrags(killerId)
  80. {
  81.         set_pev(killerId, pev_frags, float(pev(killerId, pev_frags) + Extra_frags))
  82.        
  83.         // Update scoreboard
  84.         message_begin(MSG_BROADCAST,get_user_msgid("ScoreInfo"));
  85.         write_byte(killerId)
  86.         write_short(pev(killerId, pev_frags))
  87.         write_short(fm_get_user_deaths(killerId))
  88.         write_short(0)
  89.         write_short(fm_get_user_team(killerId))
  90.         message_end()
  91. }
  92. // Get User Deaths
  93. stock fm_get_user_deaths(id)
  94. {
  95.         return get_pdata_int(id, 444, 5);
  96. }
  97. // Get User Team
  98. stock fm_get_user_team(id)
  99. {
  100.         return get_pdata_int(id, 114, 5);
  101. }

复制代码
这样再试下,我这里没条件测试
回复

使用道具 举报

 楼主| 发表于 2010-1-13 17:37:53 | 显示全部楼层 来自 中国–天津–天津
好的,我晚上到家马上测试:handshake
回复

使用道具 举报

 楼主| 发表于 2010-1-13 23:39:40 | 显示全部楼层 来自 中国–天津–天津
可以compile,但是在服务器里测试还是和以前一样,没变化
回复

使用道具 举报

 楼主| 发表于 2010-2-2 10:35:18 | 显示全部楼层 来自 中国–天津–天津
过了这些天,我又看了一下我之前写的代码

我将
   High_ping = register_cvar( "Convertpingtofrags_Highping", "100" )

   Extra_frags = register_cvar( "Convertpingtofrags_Extrafrags", "2" )
改为全局变量

#define High_ping 100
#define Extra_frags 2

就成功了

哈哈

插件发出来,如我上面所说献给所有高PING却热爱CS的玩家

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2010-2-2 11:00:38 | 显示全部楼层 来自 中国–河南–南阳
学习中。。。
回复

使用道具 举报

发表于 2010-2-3 17:19:48 | 显示全部楼层 来自 中国–广东–潮州
简单看了一下,应该是cvar的用法不熟悉,用手机看,不怎么清楚,还是说一下我的认识,
  1. new cvar;
  2. //代码
  3. cvar = register_cvar("amx_cvar", "1")
  4. //然后在代码中这样使用
  5. get_pcvar_num(cvar)
复制代码

说得不对的地方请指正!
回复

使用道具 举报

发表于 2010-2-3 17:22:32 | 显示全部楼层 来自 中国–广东–潮州
用#define是可以,但没有cvar方便!
回复

使用道具 举报

发表于 2010-2-3 17:55:51 | 显示全部楼层 来自 中国–广东–深圳

我也忽略这个问题了,看来还是长时间没有碰
又要多学了
回复

使用道具 举报

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

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