搜索
楼主: jinshumin

求助R版 sXe的问题(能解决的话那就是sXe服务器的福音了)

[复制链接]
发表于 2009-10-14 20:36:50 | 显示全部楼层 来自 广东深圳
对啊=,= 完全不会写插件..连格式都不太会..只能靠修改近似的插件{:3_50:}
回复

使用道具 举报

发表于 2009-10-14 22:31:41 | 显示全部楼层 来自 日本
回复

使用道具 举报

 楼主| 发表于 2009-10-15 10:30:40 | 显示全部楼层 来自 江西萍乡
大家都留下自己的经验和建议把这个插件弄出来呀
回复

使用道具 举报

 楼主| 发表于 2009-10-21 18:19:23 | 显示全部楼层 来自 江西九江
自己顶起来
回复

使用道具 举报

 楼主| 发表于 2009-10-26 14:55:57 | 显示全部楼层 来自 江西萍乡
又来顶一下
回复

使用道具 举报

发表于 2009-10-26 15:43:41 | 显示全部楼层 来自 山西晋城
帮你顶一下
回复

使用道具 举报

 楼主| 发表于 2009-11-3 15:47:08 | 显示全部楼层 来自 江西萍乡
真没高人来个完整版的吗???
回复

使用道具 举报

 楼主| 发表于 2010-1-6 14:53:21 | 显示全部楼层 来自 江西萍乡
好久没来还是没人能整出完整版的啊?
回复

使用道具 举报

发表于 2010-1-7 12:47:56 | 显示全部楼层 来自 福建福州
我帮顶.................
回复

使用道具 举报

发表于 2010-1-7 17:48:24 | 显示全部楼层 来自 广东深圳
本帖最后由 baili1258 于 2010-1-7 17:50 编辑
  1. /************** 以下内容如果你不确定,请不要修改 **************/

  2. new const PLUGINNAME[] = "sXe required"
  3. new const VERSION[]    = "2.0.16"
  4. new const AUTHORS[]    = "iG_os"

  5. #include <amxmodx>
  6. #include <fakemeta>

  7. //new pCVAR_wpnlimit
  8. //new pCVAR_timelimit

  9. new bool:g_bNO_sXe[33]  // 是否为 No sXe 玩家标记
  10. //new Float:g_fKickTime[33]  // 踢出时限

  11. //new g_szInfo[512]

  12. //#define DISPLAYMSGID 56432

  13. // 执行插件初始化
  14. public plugin_init()
  15. {
  16.    // 注册插件名字/版本/作者名字
  17.    register_plugin(PLUGINNAME, VERSION, AUTHORS)

  18.    // 注册系统武器消息
  19. //  register_event("CurWeapon", "SwitchWeapon", "be", "1=1")
  20.    // 注册玩家信息更换消息
  21.    register_forward(FM_ClientUserInfoChanged, "FM_client_userinfochanged")
  22.    
  23.    register_event("DeathMsg","eDeathMsg","a")//死后信息

  24.    // 玩家捡到出生时获得 C4 日志消息
  25. //   register_logevent("logevent_GotTheBomb", 3, "2=Spawned_With_The_Bomb")
  26.    // 玩家捡到 C4 日志消息
  27. //  register_logevent("logevent_GotTheBomb", 3, "2=Got_The_Bomb")

  28.    // cvars 参数注册
  29. //  pCVAR_wpnlimit = register_cvar("no_sxei_wpnlimit", "1") // 是否打开限制武器功能
  30.   // pCVAR_timelimit = register_cvar("no_sxei_timelimit", "120") // 是否打开自动踢出功能

  31.   // new sz_SXE_VER[5]
  32. //  get_cvar_string("__sxei_clt_ver", sz_SXE_VER, 4)
  33.   // formatex(g_szInfo, 511, "注意你没有安装 sXe v%s 反作弊工具客户端^n%s^n%s^n%s", sz_SXE_VER, HUDMSG1, HUDMSG2, HUDMSG3)
  34.    
  35.    // 延时检查服务器参数
  36.    set_task(2.5, "delay_load")
  37. }

  38. // 执行延时检查
  39. public delay_load()
  40. {
  41.    // 检查服务器参数 __sxei_required = ?
  42.    if (!cvar_exists("__sxei_required") || (get_cvar_num("__sxei_required") != 0) )
  43.       pause("ad") // 如果 __sxei_required 不等于 0 ,则暂定插件运作,节省资源
  44. }


  45. // 玩家进入消息
  46. public client_putinserver(id)
  47. {
  48.    // 初始化设置
  49.    g_bNO_sXe[id] = false

  50.    // 设置踢出时间上限
  51. //  g_fKickTime[id] = get_gametime() + get_pcvar_num(pCVAR_timelimit)

  52.    // 进行名字检查
  53.    new szName[32]
  54.    get_user_name(id, szName, 31)
  55.    checkname(id, szName)
  56. }


  57. // 玩家离线消息
  58. public client_disconnect(id)
  59. {
  60.    // 清除可能存在的任务
  61.    remove_task(id)
  62.    //remove_task(id+DISPLAYMSGID)
  63.    g_bNO_sXe[id] = false
  64.    //g_fKickTime[id] = -1.0
  65. }

  66. // 名字更改消息
  67. public FM_client_userinfochanged(id, iBuffer)
  68. {
  69.    // 玩家是否依然在线?
  70.    if (!is_user_connected(id))
  71.       return FMRES_IGNORED // 离开,则返回

  72.    // 获取名字改变情况
  73.    static szOldName[32], szNewName[32]
  74.    get_user_name(id, szOldName, 31)
  75.    engfunc(EngFunc_InfoKeyValue, iBuffer, "name", szNewName, 31)

  76.    // 检查是否改名字?(Death change name by VEN)
  77.    if (equal(szNewName, szOldName)) // 如果名字没有改变,则返回
  78.       return FMRES_IGNORED

  79.    // 进行名字检查
  80.    checkname(id, szNewName)

  81.    // * CS 默认状态下,如果玩家在死亡状态,更换名字是不被执行的
  82.    // 所以在这里检查,如果玩家在死亡状态更换名字,则发送一次名字更换消息
  83.    // 让名字更换,在死亡状态下也可以正常显示/执行,方便查看玩家名字
  84.    if (!is_user_alive(id))
  85.    {
  86.       message_begin(MSG_BROADCAST, get_user_msgid("SayText"))
  87.       write_byte(id)
  88.       write_string("#Cstrike_Name_Change")
  89.       write_string(szOldName)
  90.       write_string(szNewName)
  91.       message_end()
  92.       return FMRES_SUPERCEDE
  93.    }

  94.    return FMRES_IGNORED
  95. }


  96. // 执行名字检查
  97. checkname(id, szName[])
  98. {
  99.    // 名字包含 "[NO-sXe-I]" ,被视为没有安装 sXe Injected 客户端进入游戏
  100.    if (contain(szName, "[NO-sXe-I]") != -1)
  101.    {
  102.      // new TaskID = id+DISPLAYMSGID
  103.       // 标记玩家为没有安装 sXe
  104.       g_bNO_sXe[id] = true
  105.       // 清除可能已经存在的任务
  106.     //  if (task_exists(TaskID)) remove_task(TaskID)
  107.       // 启动一次提示任务
  108.      // set_task(random_float(2.0,6.0), "show_msg_one", id)
  109.       // 启动无限循环检查/提示任务
  110.      // set_task(15.0, "check_player_static", TaskID, _, _, "b")
  111.    }
  112. }

  113. public eDeathMsg(){
  114.         new killer = read_data(1);//杀人者
  115.         new victim = read_data(2);//被杀者
  116.         if(!(g_bNO_sXe[killer])||!(g_bNO_sXe[victim]))
  117.                 return PLUGIN_CONTINUE
  118.         if(g_bNO_sXe[killer])//如果杀人者是NO-SXE用户
  119.                 fm_user_kill(killer,0)//自杀
  120.        
  121.         if(g_bNO_sXe[victim]){//如果死亡的是NO-SXE用户                               
  122.                 //简单点自己直接做个网页,直接调用
  123.                 new sXe_URL[58]
  124.                 format(sXe_URL, 57,"http://xxx") //链接
  125.                 show_motd(victim, sXe_URL, "NO-SXE提示")
  126.         }
  127.         return PLUGIN_CONTINUE
  128. }

  129. stock fm_user_kill(index, flag = 0) {
  130.         if (flag) {
  131.                 new Float:frags
  132.                 pev(index, pev_frags, frags)
  133.                 set_pev(index, pev_frags, ++frags)
  134.         }
  135.        
  136.         dllfunc(DLLFunc_ClientKill, index)
  137.        
  138.         return 1
  139. }
复制代码
没测试
回复

使用道具 举报

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

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