KUNT Posted July 12, 2017 Posted July 12, 2017 Sunt oameni de la Samp.Acesta este un tutorial simplu și scurt despre cum să prindeți un jucător care încearcă să se conecteze la RCON.Sper serios, nu doar copiați + lipiți totul, ci citiți mai degrabă fiecare explicație și scrieți-vă în schimb,Numai atunci, acest tutorial a ajuns la indiciu pentru tine.Bine, să începem mai întâi să creăm variabile.Creați această variabilă în afara unui apel invers undeva pe scriptul dvs.Cod PHP: Noul RconAttempt [MAX_PLAYERS]; // Această variabilă va ține cont de numărul de încercări pe care le are jucătorulVom crea o cantitate maximă de încercări pentru ca jucătorul să încerce să se conecteze la RCONEu personal am merge pentru 2 încercări, pentru că să spunem că sunteți proprietarul real și că tu ai greșit în mod accidental parola lui rcon. Cod PHP: #define MAX_RCONATTEMPTS 2 // Aceasta stabilește maximum de încercări la 2 Bine, acestea sunt, în principiu, singurele variabile de care avem nevoie.Să trecem la următorul apel invers în scenariul nostru. Cod PHP: Public OnRconLoginAttempt (ip [], parola [], succes) Vom verifica dacă jucătorul care încearcă să se autentifice nu a reușit să se autentifice, pentru că numai atunci vom mări variabila "RconAttempt".Cod PHP: Dacă (! Succes) // aceasta verifică dacă jucătorul nu a reușit să se autentifice { Șir nou [128], pIP [32], pname [MAX_PLAYER_NAME]; // Aceasta va păstra mesajul pe care îl vom trimite tuturor jucătorilor // Acum va trebui să ne confruntăm prin toți jucătorii online deoarece "playerid" nu este utilizabil în acest callback. Pentru (new i = 0, j = GetPlayerPoolSize (); i <= j; i ++) // Aceasta este bucla, 'GetPlayerPoolSize' verifică cel mai înalt ID IG, așadar prefer să folosesc acea buclă în loc de MAX_PLAYERS; { Dacă (IsPlayerConnected (i)) // Verificați dacă playerul este chiar conectat { GetPlayerName (i, pname, MAX_PLAYER_NAME); // Obține numele jucătorului GetPlayerIp (i, pIP, 32); // Verificați IP-ul jucătorului Dacă [RconAttempt <MAX_RCONATTEMPTS &&! Strcmp (ip, pIP)) // Verificați dacă playerul nu a atins MAX_RCONATTEMPTS { RconAttempt ++; // dacă nu este atinsă, vom mări această variabilă } Altfel dacă (RconAttempt > = MAX_RCONATTEMPTS &&! Strcmp (ip, pIP)) // Verificați dacă playerul a ajuns la încercările maxime (2) { Format (șir, dimensiunea șirului, "% s a fost interzisă automat de la server. Motiv: Încercarea de a hacka parola RCON", pname); SendClientMessageToAll (COLOR_RED, șir); // Trimiteți mesajul formatat tuturor celor roșii. Ban (i); / Blocați jucătorul care a încercat să se conecteze de două ori. } } } } Acesta ar trebui să arate codul în final: Cod PHP: Public OnRconLoginAttempt (ip [], parola [], succes) { if (! succes) { Șir nou [128], pIP [32], pname [MAX_PLAYER_NAME]; Pentru (nou i = 0, j = GetPlayerPoolSize (); i <= j; i ++) { if (IsPlayerConnected (i)) { GetPlayerName (i, pname, MAX_PLAYER_NAME); GetPlayerIp (i, pIP, 32); Dacă (RconAttempt <MAX_RCONATTEMPTS &&! Strcmp (ip, pIP)) { RconAttempt ++; } Altfel dacă (RconAttempt > = MAX_RCONATTEMPTS &&! Strcmp (ip, pIP)) { Format (șir, dimensiunea șirului, "% s a fost interzisă automat de la server. Motiv: Încercarea de a hacka parola RCON", pname); SendClientMessageToAll (COLOR_RED, șir); Ban (i); } } } } }Notă: mesajul formatat nu va fi văzut pentru playerul interzis, va trebui să creați un cronometru pentru asta, dar asta este ceva în afara acestui tutorial.Sper că acest tutorial este util pentru cel puțin 1 persoană.Pacea afară.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now