现在有没有插件似的反作弊系统?
我想在服务器装个反作弊插件,不要求客户端开任何反作弊程序。有没有这样的插件:)回复: 现在有没有插件似的反作弊系统?
等你开发咯。我觉得参考findcheater和hlg来搞一个,应该效果不错的吧?
不知道一般用到哪些函数,谁能把函数以及大概意义提供下。
回复: 现在有没有插件似的反作弊系统?
我一直用HLG1.8和findcheater0.4........回复: 现在有没有插件似的反作弊系统?
其实可以在服务器绑定F1-12键,以及所有功能键。可以抵制部分作弊器,可是我不会。回复: 现在有没有插件似的反作弊系统?
应该考虑在玩家进入服务器的时候给他自动下载客户端并运行的反作弊器。这样的话就可以鱼与熊掌兼得!
回复: 现在有没有插件似的反作弊系统?
Post by degame应该考虑在玩家进入服务器的时候给他自动下载客户端并运行的反作弊器。
这样的话就可以鱼与熊掌兼得!
所有的反作弊客户端都是要先运行它的反作弊器再运行CS才有用的,呵呵。
回复: 现在有没有插件似的反作弊系统?
VAC就是这个原理啊...回复: 现在有没有插件似的反作弊系统?
唉!真没办法啊!我也是折腾了几个月回复: 现在有没有插件似的反作弊系统?
我编的防自瞄作弊器插件(欢迎测试):#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
#define ACCESS_CONSOLE 131072
new STRING_VERSION = "2.1.8";
public teaminfo(id, iTeam) {
new Team;
new cmd;
if(iTeam==1){
strcpy(Team, "terrorist", MAX_NAME_LENGTH);
}
else if(iTeam==2||iTeam==4){
strcpy(Team, "ct", MAX_NAME_LENGTH);
}
else if(iTeam==9){
strcpy(Team, "team1", MAX_NAME_LENGTH);
}
else if(iTeam==10||iTeam==12){
strcpy(Team, "team2", MAX_NAME_LENGTH);
}
else{
strcpy(Team, "unassigned", MAX_NAME_LENGTH);
}
snprintf( cmd, 200, "MESSAGE_BEGIN 2 TeamInfo;WRITE_BYTE %d;WRITE_STRING %s;MESSAGE_END", id, Team );
exec(cmd);
}
// Used to detect respawn (round start)
// Format of msg: "index of player"
public event_sm_abstart(HLCommand,HLData,HLUserName,UserIndex) {
new emsg;
convert_string(HLData,emsg,MAX_DATA_LENGTH);
new sIndex;
strgsplit(emsg, " ","^"", sIndex, 8);
new iIndex = strtonum(sIndex);
new Name;
new iSessionID;
new iTeam;
new iWONID;
if (playerinfo(iIndex,Name,MAX_NAME_LENGTH,iSessionID,iWONID,iTeam)==1){
teaminfo(iIndex,iTeam+8);
}
return PLUGIN_CONTINUE;
}
// Used to detect death
// Format of msg: "global target" "killer" "victim" ...
public event_sm_abdeath(HLCommand,HLData,HLUserName,UserIndex) {
new emsg, csrc, killer, victim;
convert_string(HLData,emsg,MAX_DATA_LENGTH);
strgsplit(emsg, " ","^"", csrc, 4, killer, 4, victim,4);
new vIndex= strtonum(victim);
new iSessionID,iWONID,iTeam,Name;
if (playerinfo(vIndex,Name,MAX_NAME_LENGTH,iSessionID,iWONID,iTeam)==1){
teaminfo(vIndex,iTeam);
}
return PLUGIN_CONTINUE;
}
// Used to detect end of round
// Format of msg: "audio type" "sound" (NOTE: sound prints as !MRAD_... but in fact it's %!MRAD_...)
public event_sm_abend(HLCommand,HLData,HLUserName,UserIndex) {
new emsg;
convert_string(HLData,emsg,MAX_DATA_LENGTH);
//"0" "0" "%!MRAD_terwin" - we will skip first 9 chars.
//selfmessage(emsg); //debug
if (strstr(emsg,"%!MRAD_terwin^"")||strstr(emsg,"%!MRAD_ctwin^"")||strstr(emsg,"%!MRAD_rounddraw^"")){
new iMaxPlayers = maxplayercount();
new Name,iSessionID, iTeam ,iWONID, i;
for (i = 1; i <= iMaxPlayers; i++) {
if(playerinfo(i,Name,MAX_NAME_LENGTH,iSessionID,iWONID,iTeam)==1){
teaminfo(i,iTeam);
}
}
}
return PLUGIN_CONTINUE;
}
public plugin_init() {
plugin_registerinfo("Aimbot disabler","Aimbot disabler.",STRING_VERSION);
plugin_registercmd("event_sm_abdeath","event_sm_abdeath",ACCESS_CONSOLE,"");
plugin_registercmd("event_sm_abend","event_sm_abend",ACCESS_CONSOLE,"");
plugin_registercmd("event_sm_abstart","event_sm_abstart",ACCESS_CONSOLE,"");
exec("sm_register DeathMsg ^"admin_command event_sm_abdeath^"");
exec("sm_register ResetHUD ^"admin_command event_sm_abstart^"");
// here 1 (at the end) means - get only audio send globaly
// 2 - only to specified player
// none - accept both (like i.e. ResetHUD)
exec("sm_register SendAudio ^"admin_command event_sm_abend^" 1");
return PLUGIN_CONTINUE;
}
回复: 现在有没有插件似的反作弊系统?
不会用:confused:
页:
[1]
2