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 <Pawn.RakNet>
Podesavanje (pawnraknet.cfg):Vrednosti u zagradama su podrazumevane vrednosti
- InterceptIncomingRPC (true)
- InterceptIncomingPacket (true)
- InterceptOutcomingRPC (true)
- InterceptOutcomingPacket (true)
- UseCaching (false)
Download: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)[pawn]const PASSENGER_SYNC = 211;
IPacket:PASSENGER_SYNC(playerid, BitStream:bs){
if GetPlayerVehicleSeat(playerid) == 0 *then{
new string[100],name[MAX_PLAYER_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[0] = EOS;
Kick(playerid);
return false;
}
return true;
}[/pawn]
Anti-SpeedCar[pawn]const VEHICLE_SYNC = 200;
IPacket:VEHICLE_SYNC(playerid, BitStream:bs)
{
new inCarData[PR_InCarSync];
BS_IgnoreBits(bs, 8);
BS_ReadInCarSync(bs, inCarData);
static Float:S = floatsqroot(floatpower(floatabs(inCarData[PR_velocity][0]), 2.0) + floatpower(floatabs(inCarData[PR_velocity][1]), 2.0) + floatpower(floatabs(inCarData[PR_velocity][2]), 2.0)) * 253.3;
if(S > 350.0) {
new string[144],name[MAX_PLAYER_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[0] = EOS;
Kick(playerid);
return false;
}
return true;
}[/pawn]
Anti-SpeedSkin[pawn]const PLAYER_SYNC = 207;
IPacket:PLAYER_SYNC(playerid, BitStream:bs)
{
new onFootData[PR_OnFootSync];
BS_IgnoreBits(bs, 8);
BS_ReadInCarSync(bs, onFootData);
static Float:S = floatsqroot(floatpower(floatabs(onFootData[PR_velocity][0]), 2.0) + floatpower(floatabs(onFootData[PR_velocity][1]), 2.0) + floatpower(floatabs(onFootData[PR_velocity][2]), 2.0)) * 253.3;
if(S > 100.0) {
new string[144],name[MAX_PLAYER_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[0] = EOS;
Kick(playerid);
return false;
}
return true;
}[/pawn]
Anti-Minigun (Anti -Invisible Weapon Minigun)Detektuje samo kada igrac puca
[pawn]const BULLET_SYNC = 206;
IPacket:BULLET_SYNC(playerid, BitStream:bs)
{
new bulletData[PR_BulletSync];
BS_IgnoreBits(bs, 8);
BS_ReadBulletSync(bs, bulletData);
if(!IsPlayerAdmin(playerid) && bulletData[PR_weaponId] == WEAPON_MINIGUN){ //it is allowed to use minigun, only rcon admin!
new string[144],name[MAX_PLAYER_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[0] = EOS;
Kick(playerid);
return false;
}
return true;
}[/pawn]
Anti - CleoFly (Anti-Cheat)Samo detektuje Cleo fly cheat
[pawn]const PLAYER_SYNC = 207;
IPacket:PLAYER_SYNC(playerid, BitStream:bs)
{
new onFootData[PR_OnFootSync];
BS_IgnoreBits(bs, 8);
BS_ReadOnFootSync(bs, onFootData);
if(onFootData[PR_animationId] == 958 && onFootData[PR_weaponId] != WEAPON_PARACHUTE || onFootData[PR_animationId] == 959 && onFootData[PR_weaponId] != WEAPON_PARACHUTE){
new string[144],name[MAX_PLAYER_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[0] = EOS;
Kick(playerid);
return false;
}
return true;
}[/pawn]
A dali znate da postoji pravilo koje kaze, citiram "Zabranjeno citiranje samog posta bez vlastitog komentara". Mnogi to rade, ali ocito moderatore boli racku. Zato molim moderatora da obriše 'komentare' iznad.