702033080 发表于 2009-10-14 20:36:50

对啊=,= 完全不会写插件..连格式都不太会..只能靠修改近似的插件{:3_50:}

cityhonghu 发表于 2009-10-14 22:31:41

有了,看这里
http://www.dt-club.net/forum/thread-45748-1-4.html

jinshumin 发表于 2009-10-15 10:30:40

大家都留下自己的经验和建议把这个插件弄出来呀

jinshumin 发表于 2009-10-21 18:19:23

自己顶起来

jinshumin 发表于 2009-10-26 14:55:57

又来顶一下

小白 发表于 2009-10-26 15:43:41

帮你顶一下

jinshumin 发表于 2009-11-3 15:47:08

真没高人来个完整版的吗???

jinshumin 发表于 2010-1-6 14:53:21

好久没来还是没人能整出完整版的啊?

feixiang12 发表于 2010-1-7 12:47:56

我帮顶.................

baili1258 发表于 2010-1-7 17:48:24

本帖最后由 baili1258 于 2010-1-7 17:50 编辑

/************** 以下内容如果你不确定,请不要修改 **************/

new const PLUGINNAME[] = "sXe required"
new const VERSION[]    = "2.0.16"
new const AUTHORS[]    = "iG_os"

#include <amxmodx>
#include <fakemeta>

//new pCVAR_wpnlimit
//new pCVAR_timelimit

new bool:g_bNO_sXe// 是否为 No sXe 玩家标记
//new Float:g_fKickTime// 踢出时限

//new g_szInfo

//#define DISPLAYMSGID 56432

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

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

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

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

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

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


// 玩家进入消息
public client_putinserver(id)
{
   // 初始化设置
   g_bNO_sXe = false

   // 设置踢出时间上限
//g_fKickTime = get_gametime() + get_pcvar_num(pCVAR_timelimit)

   // 进行名字检查
   new szName
   get_user_name(id, szName, 31)
   checkname(id, szName)
}


// 玩家离线消息
public client_disconnect(id)
{
   // 清除可能存在的任务
   remove_task(id)
   //remove_task(id+DISPLAYMSGID)
   g_bNO_sXe = false
   //g_fKickTime = -1.0
}

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

   // 获取名字改变情况
   static szOldName, szNewName
   get_user_name(id, szOldName, 31)
   engfunc(EngFunc_InfoKeyValue, iBuffer, "name", szNewName, 31)

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

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

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

   return FMRES_IGNORED
}


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

public eDeathMsg(){
        new killer = read_data(1);//杀人者
        new victim = read_data(2);//被杀者
        if(!(g_bNO_sXe)||!(g_bNO_sXe))
                return PLUGIN_CONTINUE
        if(g_bNO_sXe)//如果杀人者是NO-SXE用户
                fm_user_kill(killer,0)//自杀
       
        if(g_bNO_sXe){//如果死亡的是NO-SXE用户                               
                //简单点自己直接做个网页,直接调用
                new sXe_URL
                format(sXe_URL, 57,"http://xxx") //链接
                show_motd(victim, sXe_URL, "NO-SXE提示")
        }
        return PLUGIN_CONTINUE
}

stock fm_user_kill(index, flag = 0) {
        if (flag) {
                new Float:frags
                pev(index, pev_frags, frags)
                set_pev(index, pev_frags, ++frags)
        }
       
        dllfunc(DLLFunc_ClientKill, index)
       
        return 1
}没测试
页: 1 2 [3] 4
查看完整版本: 求助R版 sXe的问题(能解决的话那就是sXe服务器的福音了)