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
}没测试