Szerző Téma: [Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!  (Megtekintve 2601 alkalommal)

Gang[St]e[R]

  • Vendég
[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Dátum: 2012. április 11. - 18:49:36 »
+1 Show voters
Üdv!
Sok szerver tulajdonosnak problémája akadt egy új hackel, amellyel külsûlegesen mesterséges játékosokat lehet felküldeni, ezeket a játékosokat a TAB is jelzi. DaVe már elõttem próbálkozott ellene védelemmel, de MIND a gl_npcs-bõl levõ és a többi is egytõl-egyig hibás volt. A maxips nevû scriptbe már a SA:MP fejlesztõi ezt megoldották, mivel ezek a npc-k mind 1 ip címrõl származnak, ez a funkció bannolja azokat a játékosokat, akik ugyanarról az ip címrõl vannak! Egy kicsit módosítottam a for cikluson Zsolesszka ciklusos megoldásával, így a ciklus nem terheli annyira a processzort. Nálam a szerverembe ez így bent is van, a sima támadó NPC-ket mind beengedi és a sima játékosokat is, csak a kártékony BOT-okat bannolja, mivel megvan a hack le is tudtam tesztelni!
 

#define MAX_CONNECTIONS_FROM_IP     3
stock GetNumberOfPlayersOnThisIP(test_ip[])
{
new against_ip[32+1];
new x = -1; // Javítva 0 playerid érték is vizsgálatra kerüljön.
new ip_count = 0;
for(; x++ < MAX_PLAYERS ;) {
if(IsPlayerConnected(x)) {
    GetPlayerIp(x,against_ip,32);
    if(!strcmp(against_ip,test_ip)) ip_count++;
}
}
return ip_count;
}
public OnPlayerConnect(playerid)
{
new connecting_ip[32+1];
GetPlayerIp(playerid,connecting_ip,32);
new num_players_on_ip = GetNumberOfPlayersOnThisIP(connecting_ip);
if(num_players_on_ip > MAX_CONNECTIONS_FROM_IP)
{
printf(\"MAXIPs: Connecting player(%d) exceeded %d IP connections from %s.\", playerid, MAX_CONNECTIONS_FROM_IP, connecting_ip);
    BanEx(playerid, \"BOT attack!\");
     return 1;
}
return 0;
}

 
A visszatérési értékek nem viccbõl vannak, figyeljetek ezekre, mert másik fórumon egy scripter azok nélkül tette be és csodálkozott ,hogy mi a hiba.
Még egyszer elmondom: Ez a funkció benne van a szerverembe, a támadó npc-ket és a sima játékosokat mind beengedi, csak a kártékony npc-ket bannolja, TESZTELVE mivel megvan a BOT felküldõ hack és kipróbáltam, télleg bannolja! :) Aki nem hiszi kipróbálhatja: 91.82.85.203:7804, nyugodtan küldjön fel npc-t úgy is bannolja!
« Utoljára szerkesztve: 2012. április 12. - 19:51:07 írta ɐʞzssǝlosz »

[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #1 Dátum: 2012. április 11. - 19:10:55 »
0 Show voters
Jó lett, a csatlakozó-spamelõ botok ellen.
Ha csak 1-et küldök fel, akkor nem dobja ki.
« Utoljára szerkesztve: 2012. április 11. - 20:52:55 írta 1ST_Chr »

Gang[St]e[R]

  • Vendég
[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #2 Dátum: 2012. április 11. - 19:22:39 »
0 Show voters
Idézetet írta: 1ST_Chr date=1334164255\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20033\" data-ipsquote-contentclass=\"forums_Topic
Jó lett, a csatlakoz-spamelõ botok ellen.
Ha csak 1-et küldök fel, akkor nem dobja ki.
 
Igen, ez valóban igaz, de a hackerek mikor ilyen támadást csinálnak nem 1et küldenek hanem 20-30 darabokat :D és az ellen hatásos.

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #3 Dátum: 2012. április 11. - 20:18:41 »
0 Show voters
Énis ezt a megoldást használom és nekem is megy probléma nélkül.
Amúgy meg ez elvileg 0.3e-ben javítva van.

[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #4 Dátum: 2012. április 11. - 20:52:15 »
0 Show voters
Ne felejtsétek el a script elején definiálni a max. azonos IP-k számát.
 
#define MAX_CONNECTIONS_FROM_IP 3

 

Idézetet írta: 1ST_Chr date=1334164255\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20033\" data-ipsquote-contentclass=\"forums_Topic
Jó lett, a csatlakoz-spamelõ botok ellen.
Ha csak 1-et küldök fel, akkor nem dobja ki.
 
Amúgy az egy bot ellen is lehet védekezni:
Csatlakozásnál kötelezõ regisztráció, a bot nyilván nem tud regisztrálni, egy 1 perces korlátot adsz utána kick, ha többször visszajön reg nélkül az nyilván bot->ban.
Még egyszerûbb ha nem is regisztrációt mutatsz neki, hanem egy hasonló dialogot:
(Generált betûk)
 
Írd be ezt: wgrwrg[/quote]
Ha nem írja be akkor nyilván bot/külföldi.

Gang[St]e[R]

  • Vendég
[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #5 Dátum: 2012. április 12. - 17:28:23 »
0 Show voters
Jaj tényleg, kiegészítettem azzal a definícióval! :D

[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #6 Dátum: 2012. április 12. - 19:55:56 »
+3 Show voters
Kicsit javítottam a kódon javaslom mindig egy kis apró teszt elvégzését ez a postfix (x++;) és prefix (++x;) érték növelés elég fura dolgokat mûvel pawn nyelvben.
Egy apró printf sor beszúrása a for ciklusba és konzolban látni milyen értékekkel fut le.
 
printf(\"x:%d\", x);

 
Amúgy meg ******* meg aki arra élvez hogy más szerverére küld fel bot játékosokat.  :@

[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #7 Dátum: 2012. július 04. - 20:51:50 »
0 Show voters
Én még kiegészíteném ezt azzal, hogy azt a további két botot kickelje:
 
#include <a_samp>
#define MAX_CONNECTIONS_FROM_IP     3
stock GetNumberOfPlayersOnThisIP(test_ip[])
{
new against_ip[32+1];
new x = -1; // Javítva 0 playerid érték is vizsgálatra kerüljön.
new ip_count = 0;
for(; x++ < MAX_PLAYERS ;) {
if(IsPlayerConnected(x)) {
    GetPlayerIp(x,against_ip,32);
    if(!strcmp(against_ip,test_ip)) ip_count++;
}
}
return ip_count;
}
public OnPlayerConnect(playerid)
{
new connecting_ip[32+1];
GetPlayerIp(playerid,connecting_ip,32);
new num_players_on_ip = GetNumberOfPlayersOnThisIP(connecting_ip);
if(num_players_on_ip > MAX_CONNECTIONS_FROM_IP)
{
printf(\"MAXIPs: Connecting player(%d) exceeded %d IP connections from %s.\", playerid, MAX_CONNECTIONS_FROM_IP, connecting_ip);
    BanEx(playerid, \"BOT attack!\");
    new against_ip[32+1],test_ip[32+1];
    GetPlayerIp(playerid,test_ip,32);
new x = -1; // Javítva 0 playerid érték is vizsgálatra kerüljön.
for(; x++ < MAX_PLAYERS ;)
{
   if(IsPlayerConnected(x))
   {
       GetPlayerIp(x,against_ip,32);
       if(!strcmp(against_ip,test_ip)) Kick(x);
   }
}
 
     return 1;
}
return 0;
}

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
[Leírás] Külsõ NPC elleni védelem! HIBÁTLAN!
« Válasz #8 Dátum: 2012. július 05. - 18:05:02 »
0 Show voters
Prefix (++x) kell és nem postifx (x++), ugyanis postfixszel, lefut egészen 0-tól 500-ig (500 is beletartozik, illetve a 0). Prefixszel pedig 0-tõl 499-ig (499 is beletartozik, illetve a 0).

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal