Jump to content

[PAWN] - Sistem Anti-DM/DB


FnZ
 Share

Recommended Posts

In acest tutorial va voi arata cum sa faceti un sistem Anti-DM/DB pe care il puteti pune pe server-ul dumneavoastra.


Sistemul nu este copiat din alte GM-uri "Originale" si buguite de pe internet, ci este creata de mine.



  • Mergem la Call-Back-ul OnPlayerGiveDamage (parametrii ii aveti in Gamemode, cautand functia, nu ii voi insira si aici), daca vreti sa vedeti in detaliu acest call-back apasati aici.
  • ​Adaugam urmatoarele linii de cod la acel call-back:

    if(amount >= 90.0) //daca damage amount mai mare ca 90 si nu este pasager (atunci face DB) executa cele de mai jos. Atentie ca cei de la war sa fie feriti de aceasta functie sau orice alt membru de mafie puneti la if daca jucatorul nu este intr-o factiune de tip mafie sau trage asupra cop-ilor. Depinde de ce variabile aveti la enum-ul dvs.
    {
    new pName[MAX_PLAYER_NAME], hName[MAX_PLAYER_NAME]; //initiam un string de 128 de caractere si 2 valori ce vor stoca numele jucatorului ce trage si acela aspura carui se trage.
    GetPlayerName(playerid, pName, sizeof(pName));
    GetPlayerName(damagedid, hName, sizeof(hName));

    new weaponname[64];
    GetWeaponName(weaponid, weaponname, sizeof(weaponname)); //ia numele armei cu care jucatorul a tras.

    if(GetPlayerState(playerid) != 2 || GetPlayerState(playerid) != 3) //daca jucatorul nu este driver sau pasager se considera DM
    {
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s[%d] has been kicked by AdmBot, reason: Death-Match (on player: %s[%d], damage: %.0f, weapon: %s)",pName,playerid,hName,damagedid,amount,weaponname);
    SendClientMessageToAll(0xFF0000FF, string); //trimite mesajul de mai sus tuturor jucatorilor. (!) printr-un query (daca vreti) puteti sa bagati ca log in tabel-ul destinat logurilor pe care le aveti.
    Kick(playerid); //il dam pe jucatorul dm-ist afara
    SetPlayerHealth(damagedid, 100); //primeste jucatorul, care a primit daune, 100 HP
    }
    if(GetPlayerState(playerid) == 3) // daca jucatorul este pasager se considera DB.
    {
    new string1[256], carid;
    GetPlayerVehicleID(playerid, carid);
    format(string, sizeof(string), "AdmCmd: %s[%d] has been kicked by AdmBot, reason: Drive-By (on player: %s[%d], damage: %.0f, weapon: %s, from car: %d)",pName,playerid,hName,damagedid,amount,weaponname, carid);
    SendClientMessageToAll(0xFF0000FF, string); //trimite mesajul de mai sus tuturor jucatorilor. (!) printr-un query (daca vreti) puteti sa bagati ca log in tabel-ul destinat logurilor pe care le aveti.
    Kick(playerid); //il dam pe jucatorul db-ist afara
    SetPlayerHealth(damagedid, 100); //primeste jucatorul, care a primit daune, 100 HP
    }
    }


Pentru nelamuriri puteti posta in acest topic. Daca doriti alte tutoriale imi puteti da un PM pe forum cu functia/comanda pe care o doriti in urmatorul tutorial. Zi buna!


Edited by TheLittle
Link to comment
Share on other sites

Esti constient de faptul ca acest cod e gresit nu?

Daca un jucator face damage >= 90, atunci asta ia kick mereu. (if(GetPlayerState(playerid) != 2 || GetPlayerState(playerid) != 3) - tot ce e pe ramura asta se executa mereu)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.