GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: _[G]M[K]_Sh1ft_ - 2015. Január 02. - 19:52:44

Cím: Hírdetés elleni védelem
Írta: _[G]M[K]_Sh1ft_ - 2015. Január 02. - 19:52:44
Sziasztok!
A scriptet én készítettem, mint a címből is biztosan kiderült hírdetés elleni védelmre jó. (Tesztelve)
Működése: Ha a játékos a chatbe IP címet ír akkor bannolja.
Akkor is bannol ha a(z) IP cím közepén van egy betű mivel, akkor bannol ha meg található a \"player\" által írt szövegben:
  -3 pont ÉS 1 kettős pont ÉS 9-nél több szám
(Ami egy IP címnek felel meg)
Na de mivan ha nem csak egyet ír? A scriptet arra is írtam hogyha 9-nél több számot ír a chatbe akkor ne jelenítse meg a szöveget és hiba üzenetet küldjön neki.
A scriptnek szükséges, hogy létrehozzatok egy mappát és egy jegyzet tömböt (.txt kiterjesztéssel, de ha letöltitek csak \"át kell húzni\")
Szükséges elérési útvonal: [szervered mappája]/scriptfiles/slogs/Hirdetesek.txt
Megjegyzésem:
          A script hasznos az esetek 90%-ban. Mivel nincs tökéletes védelem véleményem szerint. A script lehet
          egyszerűnek tűnik (mert az is), de lehet jó lesz valakinek. :D
Link: http://www.mediafire.com/download/m09kjw22ql74n9z/HirdetesElleniVedelem.rar
Kód:

/*
Készítette:                     _[G]M[K]_Sh1ft_
Készítési idő(teszteléssel):    25 < perc
Köszönet a TUT-okért:
                                       sampforum.hu & wiki.sa-mp.com
Megjegyzésem:
   A scriptet szabadon fellehet használni / és terjeszteni, hiszen az a cél,
   hogy ne hírdessenek. A script IGÉNYELI, hogy a server scriptfiles mappájába
   létrehozzál egy \'slogs\' nevű mappát azon belül egy jegyzet tömböt .txt
   kiterjesztéssel melynek neve: Hirdetesek
                                                             */
#include <a_samp>
#include <dini>
public OnPlayerText(playerid, text[])
{
   new PONTok, KettosPONTok, SZAMok;
    for(new l = strlen(text), p; p < l; ++p)
   {
       if(text[p] == \'.\') ++PONTok;
       if(text[p] == \':\') ++KettosPONTok;
        if(\'0\' <= text[p] <= \'9\') ++SZAMok;
   }
   if( PONTok >= 3 && KettosPONTok >= 1 && SZAMok >= 10 )
   {
      new swcys[128], name[MAX_PLAYER_NAME], hdate[16],htime[16],strng[256],year,month,day,hours,minutes,seconds;
      GetPlayerName(playerid, name, sizeof(name));
     
      //Ez a folyamat arra jó, hogy elmentsük: MIKOR? KI? és MIT? reklámozott.
      format(swcys, sizeof(swcys),\"/slogs/Hirdetesek.txt\");
      getdate(year, month, day), gettime(hours, minutes, seconds);
      format(hdate, sizeof hdate, \"%d.%s%d.%s%d\", year, ((month < 10) ? (\"0\") : (\"\")), month,((day < 10) ? (\"0\") : (\"\")), day);
      format(htime, sizeof htime, \"%s%d:%s%d:%s%d\", (hours < 10) ? (\"0\") : (\"\"), hours, (minutes < 10) ? (\"0\") : (\"\"), minutes, (seconds < 10) ? (\"0\") : (\"\"), seconds);
      format(strng, sizeof strng, \"%s %s %s: %s\", hdate, htime, name, text);
      dini_IntSet(swcys,strng,1);
     
      //Kiírjuk az áldozatnak hogy mi lett vele...
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFFFFFFAA, \"Örülj, hogy nem az ujjaidat amputáltam!\" );
     
      //Bannoljuk 0,5mp múlva, AZÉRT csak annyi hogy legyen idő kiírjnia a szöveget.
      HBan(playerid);
       return 0;
    }
   if(SZAMok >=9)
   {
      SendClientMessage( playerid, -1, \"Szerver:{ffffff} Hírdetés gyanus, amit írtál, ezért nem jelent meg a \'közös/nyílt\' chatben. Sorry!\");
      return 0;
   }
   return 1;
}
stock HBan(playerid) SetTimerEx(\"SBan\", 500, false, \"i\", playerid);
forward SBan(playerid);
public SBan(playerid)
{
   SendClientMessageToAll(0xFFFFFFAA,\"Valaki ki lett bannolva hirdetésért!\");
   return Ban(playerid);
}
Cím: Hírdetés elleni védelem
Írta: [GA]MER - 2015. Január 02. - 21:20:25

      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
      SendClientMessage(playerid, 0xFF0000AA, \"Bannolva lettél hírdetés miatt!\");
[/quote]
Ez most egy kisebb flood lenne az \"Áldozat\" részére?   :unsure:
Cím: Hírdetés elleni védelem
Írta: Pedró - 2015. Január 02. - 21:32:10
Egy tipp, régen én is így csináltam.
A számok elé a 0-t könyebben is odavarázsolhatod.
Formázott stringnél %d helyett %02d -t adj meg :D és nemkell xarakodni a többivel, csak elég hogy seconds rá és kész
Cím: Hírdetés elleni védelem
Írta: kurta999 - 2015. Január 02. - 21:40:22
Bocs de ez a védelem nem épp tökéletes, ha nem sikerül jobbra, ajánlom, hogy ne bannolj miatta. Sima üzenet, hogy nem hirdethetsz és csá.
Cím: Hírdetés elleni védelem
Írta: Flash - 2015. Január 02. - 21:43:44
Nos, leírom személy szerinti véleményemet.
Kicsit kételkedek abban, hogy a hirdetés lekérdezését egymagad írtad volna ugyanis ezt a megoldást már nem egy helyen láttam már.
itt egy példa még a 70-es évekről: http://sampforum.hu/index.php?topic=16051.0 és ahogy nézegetek a scriptet szerintem csak összekaparintottad és átalakítottad kicsit.
Persze azt is értékelni kell, hogy erre szántál időt és megosztottad a többiekkel ezért azt mondom jó munka.
Viszont:
Én se értem azt a SendClientMessage-s üzenet \'floodolást\' inkább lefuttathatnál egy 100 értékig ciklust ami semmit nem írna ki. Ez az ún. \"ClearChat\" (Admin rendszerekben ismert).
Plusz szerintem ha egy játékos hirdet az azért teszi, mert hogy kevesen vannak a szerverén, vagy irigy hogy jobb szervere van a másnak, vagy valamilyen más indok. A Banolás szerintem nem célszerű a reklámozók ellen, mivel a Magyar SA:MP-os kutatóink szerint a játékosokat jobban idegesíti ha például börtönözést vagy némítást kapnak ;) És manapság azért könnyebben kihasználják az IP Ban-t sajnos :/
Cím: Hírdetés elleni védelem
Írta: blackdog476 - 2015. Január 02. - 22:28:03
192.168.1.100:7777 BAN
192,168,1,100 - 7777 NINCS BAN
192-168,1,100 - 7777 itt se
Ki lehet küszöbölni.
Maximum kiírják betűkkel:
százkilencvenkettő pont százhatvannyolc pont egy pont száz kettőspont héthéthéthét
Cím: Hírdetés elleni védelem
Írta: _[G]M[K]_Sh1ft_ - 2015. Január 02. - 23:03:06
Köszönöm a véleményeiteket!
A floodolás rész nekem könnyebbnek tűnt hogy CRT+C CRT+V :P :D Nem akartam nagyon bonyolítani. De jobb megoldás ha lefutatom 60x :D
A bannolásos rész azért részesíteném előnyben, mert már nem először találkozok olyan hackerrel/hirdetővel aki esetleg nem érdekli, hogy börtönben/fagyasztva van vagy éppen némítva (úgy értem hogy az algoritmusban kikerüli a dolgokat (cheat vagy kihasználja a szerver adottságait pl: /pm), bár ezekre mind van sok-sok megoldás pl: admin :D Csak egyszerűbb vagy még itt a kick is jobb lehet, de ez a számos se igazán jó mert van rá megoldás kikerülni példát most nem írnék :D
De flash jól mondta aki hirdet, azért hirdet, mert neki nem jön össze, és ezzel saját magát minősíti :D
Lassan, már most (tapasztalataim szerint is) a ban annyit (fog) ér(ni), mint a kick, de a ban akkor is több (lesz).
 
Idézetet írta: blackdog476 date=1420234083\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"52037\" data-ipsquote-contentclass=\"forums_Topic
192.168.1.100:7777 BAN
192,168,1,100 - 7777 NINCS BAN
192-168,1,100 - 7777 itt se
Ki lehet küszöbölni.
Maximum kiírják betűkkel:
százkilencvenkettő pont százhatvannyolc pont egy pont száz kettőspont héthéthéthét
 
OTT TÉNYLEG NINCS BAN de nem jeleníti meg chatben. És ha nem olvastad akkor írtam a megjegyzésemhez:  \"A script hasznos az esetek 90%-ban. Mivel nincs tökéletes védelem véleményem szerint.\"
Cím: Hírdetés elleni védelem
Írta: [Nickki] - 2015. Január 03. - 12:04:47
Hirdetés ellen szinte nem is lehet mit tenni, szerintem. Ha a hirdető játékos tisztában van azzal, hogy a szerver védelmekkel van ellátva, akkor máshogy közli a többiekkel az IP-t: Skype, FB. Manapság a nevek körbe-körbe járnak a szervereken is.


Játékon belül pedig ugyan ilyen szemtelenek, megoldják valahogy az IP közzétételét. Szerintem kézenfekvőbb megoldás az, (hogy ha megoldható) hogy a legforgalmasabb időszakokban mindig legyen a szerveren egy admin/moderátor. Jó esetben az ő figyelmét már nehéz kijátszani :)
Persze egy ilyen FS kiszűri a tapasztalatlanabb hirdetőket, nem kétség  :yes: