Pawn.RakNet 1.0.2
Objasnjenje:
- Ovaj plugin vam dozvoljava da radite sa RakNet-om u Pawn-u, i olaksa vam dosta da kreirate dosta efikasan anti-cheat.
Ovaj plugin preporucljivo je koristiti iskljucivo na 0.3.7 verziji ali moguce je i na starijim.
Glavne karakteristike:
Presretanje i procesuiranje dolaznih/odlaznih RPC-ova, dolaznih/odlaznih paketa.
Slanje RPC i paketa do igraca.
Instalacija:
Ubacite pawnraknet.dll/pawnraknet.so i pawnraknet.cfg u plugins folder
Ubacite Pawn.RakNet.inc u pawno/include folder (Windows)
Dodajte u server.cfg kod ostalih plugin-ova sledece: pawnraknet.dll (Windows) ili pawnraknet.so (Linux)
- U vasoj skripti dodajte #include
>
Podesavanje (pawnraknet.cfg):
Vrednosti u zagradama su podrazumevane vrednosti
InterceptIncomingRPC (true)
InterceptIncomingPacket (true)
InterceptOutcomingRPC (true)
InterceptOutcomingPacket (true)
UseCaching (false)
https://github.com/urShadow/Pawn.RakNet/releases
Wiki:
https://github.com/urShadow/Pawn.RakNet/wiki
Source:
https://github.com/urShadow/Pawn.RakNet
Credits:
YourShadow
ostalim SA:MP forum korisnicima na primerima
Primeri:
Anti-InvalidSeat (Anti-Crasher)
const PASSENGER_SYNC = 211;
IPacket:PASSENGER_SYNC(playerid, BitStream:bs){
if GetPlayerVehicleSeat(playerid) == 0 *then{
new string,name;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"[Anti-CrasherHack]: %q (ID:%d) auto-kicked [Reason: InvalidSeat]",name,playerid);
SendClientMessageToAll(-1,string);
string = EOS;
Kick(playerid);
return false;
}
return true;
}Anti-SpeedCar
const VEHICLE_SYNC = 200;
IPacket:VEHICLE_SYNC(playerid, BitStream:bs)
{
new inCarData;
BS_IgnoreBits(bs, 8);
BS_ReadInCarSync(bs, inCarData);
static Float:S = floatsqroot(floatpower(floatabs(inCarData), 2.0) + floatpower(floatabs(inCarData), 2.0) + floatpower(floatabs(inCarData), 2.0)) * 253.3;
if(S > 350.0) {
new string,name;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"{FF0000}[Anti-SpeedCar]: {FFFF00}%s {999999}(ID:%d) {00FF00}auto-kicked {FF0000}[Reason: SpeedCar]", name,playerid);
SendClientMessageToAll(-Unu, string);
string = EOS;
Kick(playerid);
return false;
}
return true;
}Anti-SpeedSkin
const PLAYER_SYNC = 207;
IPacket:PLAYER_SYNC(playerid, BitStream:bs)
{
new onFootData;
BS_IgnoreBits(bs, 8);
BS_ReadInCarSync(bs, onFootData);
static Float:S = floatsqroot(floatpower(floatabs(onFootData), 2.0) + floatpower(floatabs(onFootData), 2.0) + floatpower(floatabs(onFootData), 2.0)) * 253.3;
if(S > 100.0) {
new string,name;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"{FF0000}[Anti-SpeedSkin]: {FFFF00}%s {999999}(ID:%d) {00FF00}auto-kicked {FF0000}[Reason: SpeedSkin]", name,playerid);
SendClientMessageToAll(-Unu, string);
string = EOS;
Kick(playerid);
return false;
}
return true;
}Anti-Minigun (Anti -Invisible Weapon Minigun)
Detektuje samo kada igrac puca
const BULLET_SYNC = 206;
IPacket:BULLET_SYNC(playerid, BitStream:bs)
{
new bulletData;
BS_IgnoreBits(bs, 8);
BS_ReadBulletSync(bs, bulletData);
if(!IsPlayerAdmin(playerid) && bulletData == WEAPON_MINIGUN){ //it is allowed to use minigun, only rcon admin!
new string,name;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"{FF0000}[Anti-Minigun]: {FFFF00}%s {999999}(ID:%d) {00FF00}auto-kicked {FF0000}[Reason: MinigunHack]", name,playerid);
SendClientMessageToAll(-1, string);
string = EOS;
Kick(playerid);
return false;
}
return true;
}Anti - CleoFly (Anti-Cheat)
Samo detektuje Cleo fly cheat
const PLAYER_SYNC = 207;
IPacket:PLAYER_SYNC(playerid, BitStream:bs)
{
new onFootData;
BS_IgnoreBits(bs, 8);
BS_ReadOnFootSync(bs, onFootData);
if(onFootData == 958 && onFootData != WEAPON_PARACHUTE || onFootData == 959 && onFootData != WEAPON_PARACHUTE){
new string,name;
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"{FF0000}[Anti-CleoFly]: {FFFF00}%s {999999}(ID:%d) {00FF00}auto-kicked {FF0000}[Reason: CleoFly]", name,playerid);
SendClientMessageToAll(-1, string);
string = EOS;
Kick(playerid);
return false;
}
return true;
}


