|
发表于 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[33] // 是否为 No sXe 玩家标记
- //new Float:g_fKickTime[33] // 踢出时限
- //new g_szInfo[512]
- //#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[5]
- // 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[id] = false
- // 设置踢出时间上限
- // g_fKickTime[id] = get_gametime() + get_pcvar_num(pCVAR_timelimit)
- // 进行名字检查
- new szName[32]
- get_user_name(id, szName, 31)
- checkname(id, szName)
- }
- // 玩家离线消息
- public client_disconnect(id)
- {
- // 清除可能存在的任务
- remove_task(id)
- //remove_task(id+DISPLAYMSGID)
- g_bNO_sXe[id] = false
- //g_fKickTime[id] = -1.0
- }
- // 名字更改消息
- public FM_client_userinfochanged(id, iBuffer)
- {
- // 玩家是否依然在线?
- if (!is_user_connected(id))
- return FMRES_IGNORED // 离开,则返回
- // 获取名字改变情况
- static szOldName[32], szNewName[32]
- 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[])
- {
- // 名字包含 "[NO-sXe-I]" ,被视为没有安装 sXe Injected 客户端进入游戏
- if (contain(szName, "[NO-sXe-I]") != -1)
- {
- // new TaskID = id+DISPLAYMSGID
- // 标记玩家为没有安装 sXe
- g_bNO_sXe[id] = 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[killer])||!(g_bNO_sXe[victim]))
- return PLUGIN_CONTINUE
- if(g_bNO_sXe[killer])//如果杀人者是NO-SXE用户
- fm_user_kill(killer,0)//自杀
-
- if(g_bNO_sXe[victim]){//如果死亡的是NO-SXE用户
- //简单点自己直接做个网页,直接调用
- new sXe_URL[58]
- 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
- }
复制代码 没测试 |
|