Advertisement
Gagi123

Prost MUTE sistem u PAWN-u i MySQL-u

Jan 19th, 2025 (edited)
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.46 KB | Gaming | 0 0
  1. #include    <a_samp>
  2. #include    <a_mysql>
  3. #include    <zcmd>
  4. #include    <sscanf2>
  5. #include    <YSI_Coding\y_timers>
  6.  
  7. #define     ADMIN_MSG_COLOR   0xFF444499
  8.  
  9. public OnPlayerText(playerid, text[])
  10. {
  11.     // Provjerava da li je igrac mutiran
  12.     if (Player[playerid][Mute] > 0)
  13.     {
  14.         new message[128]; // Deklaracija niza za poruku
  15.         // Formatira poruku koja obavestava igraca o preostalom vremenu mutiranja
  16.         format(message, sizeof(message), "Ne mozete pricati jos %d minut/a. Mutirani ste!", Player[playerid][Mute]);
  17.         // Salje igracu poruku
  18.         SendClientMessage(playerid, -1, message);
  19.         return 0;
  20.     }
  21.  
  22.     new string[144]; // Deklaracija niza za formatiranu poruku
  23.     // Formatira poruku koja sadrzi ID igraca i tekst koji je poslao
  24.     format(string, sizeof (string), "(%d) %s", playerid, text);
  25.     // Salje formatiranu poruku svim igracima
  26.     SendPlayerMessageToAll(playerid, string);
  27.  
  28.     // Vracanje 0 ignorise podrazumevani format poruke i salje prilagodjeni umesto toga
  29.     // Vracanje 1 ce rezultirati dupliciranjem poruke, jer ce podrazumevana poruka takodje biti poslana.
  30.     return 0; // Vraca 0 da bi se koristila prilagodjena poruka
  31. }
  32.  
  33.  
  34. CMD:mute(playerid, params[])
  35. {
  36.     if (IsPlayerAdmin(playerid)) // Proverava da li je igrac rcon admin
  37.     {
  38.         new target_id, mute_time, mute_reason[21]; // Deklaracija varijabli za ciljanog igraca
  39.         if (sscanf(params, "uds[21]", target_id, mute_time, mute_reason)) // Parsiranje parametara
  40.             return SendClientMessage(playerid, -1, "UPOTREBA: /mute [playerid] [vreme] [razlog]"); // Poruka o pravilnoj upotrebi komande
  41.  
  42.         //if (IsPlayerAdmin(target_id)) return SendClientMessage(playerid, -1, "Ne mozete mutirati Admina."); // Provera da li je ciljani igrac admin
  43.         if (!IsPlayerConnected(target_id)) return SendClientMessage(playerid, -1, "Korisnik nije online."); // Provera da li je igrac online
  44.         if (Player[target_id][Mute] != 0) return SendClientMessage(playerid, -1, "Korisnik je vec mutiran."); // Provera da li je igrac vec mutiran
  45.  
  46.         if (target_id != INVALID_PLAYER_ID) // Provera da li je ciljani igrac validan
  47.         {
  48.             new query[128], msg_toall[170]; // Deklaracija varijabli za SQL upit i poruku za sve igrace
  49.  
  50.             Player[target_id][Mute] = mute_time; // Postavljanje vremena mute-a za ciljanog igraca
  51.             Player[target_id][IsMuted] = 1; // Postavljanje statusa mute-a za ciljanog igraca
  52.  
  53.             mysql_format(g_SQL, query, sizeof query, // Formiranje SQL upita za azuriranje mute statusa u bazi podataka
  54.                 "UPDATE players SET mute = %d, is_muted = 1 WHERE id = %d LIMIT 1", Player[target_id][Mute], Player[target_id][ID]);
  55.             mysql_tquery(g_SQL, query); // Izvrsavanje SQL upita
  56.  
  57.             format(msg_toall, sizeof(msg_toall), // Formiranje poruke za sve igrace
  58.                 "AdmCmd: %s je utisan/a od strane Admina %s. [Razlog: %s, Vreme: %d min.]",
  59.                 Player[target_id][Name], Player[playerid][Name], mute_reason, mute_time);
  60.             SendClientMessageToAll(ADMIN_MSG_COLOR, msg_toall); // Slanje poruke svim igracima
  61.         }
  62.     }
  63.     else return SendClientMessage(playerid, -1, "  Nemate ovlascenje!"); // Poruka o nedostatku ovlascenja
  64.  
  65.     return 1; // Izadji ovde
  66. }
  67.  
  68. CMD:unmute(playerid, params[])
  69. {
  70.     new target_id; // Deklaracija varijable za ciljanog igraca
  71.     if (sscanf(params, "u", target_id)) return SendClientMessage(playerid, -1, "UPOTREBA: /unmute [playerid]"); // Provera parametara
  72.     if (!IsPlayerConnected(target_id)) return SendClientMessage(playerid, -1, "Korisnik nije online."); // Provera da li je igrac online
  73.  
  74.     new query[80], message[80]; // Deklaracija varijabli za SQL upit i poruku
  75.  
  76.     Player[target_id][Mute] = 0; // Resetovanje mute vremena za ciljanog igraca
  77.     Player[target_id][IsMuted] = 0; // Resetovanje mute statusa za ciljanog igraca
  78.  
  79.     mysql_format(g_SQL, query, sizeof query, // Formiranje SQL upita za azuriranje mute statusa u bazi podataka
  80.         "UPDATE players SET mute = 0, is_muted = 0 WHERE id = %d LIMIT 1", Player[target_id][ID]);
  81.     mysql_tquery(g_SQL, query); // Izvrsavanje SQL upita
  82.    
  83.     format(message, sizeof(message), "Ukinuli ste zabranu pisanja korisniku %s.", Player[target_id][Name]); // Formiranje poruke o ukidanju mute-a
  84.     SendClientMessage(playerid, -1, message); // Slanje poruke adminu
  85.     SendClientMessage(target_id, -1, "Ukinuta vam je zabrana pisanja od strane Admina."); // Slanje poruke ciljanom igracu
  86.  
  87.     return 1; // Izadji ovde
  88. }
  89.  
  90. task MuteTimer[60000]() // Task koji se izvrsava svake minute
  91. {
  92.     foreach(new i : Player) // Iteracija kroz sve online igrace
  93.     {
  94.         if (Player[i][Mute] > 0) // Provera da li igrac ima aktivan mute
  95.         {
  96.             new query[70]; // Deklaracija varijable za SQL upit
  97.             Player[i][Mute] = max(0, Player[i][Mute] - 1); // Smanjenje mute vremena za 1, ako je (0, 0,) vrati value1(odnosno 0)
  98.             mysql_format(g_SQL, query, sizeof query, // Formiranje SQL upita za azuriranje mute vremena u bazi podataka
  99.                 "UPDATE `players` SET `mute` = %d WHERE `id` = %d LIMIT 1", Player[i][Mute], Player[i][ID]);
  100.             mysql_tquery(g_SQL, query); // Izvrsavanje SQL upita
  101.  
  102.             if (Player[i][Mute] == 0 && Player[i][IsMuted] == 1) // Provera da li je mute vreme isteklo
  103.             {
  104.                 SendClientMessage(i, -1, "Istekla vam je kazna. Vise niste mutirani. Pazite na recnik."); // Poruka igracu o isteku mute-a
  105.                 Player[i][IsMuted] = 0; // Resetovanje mute statusa
  106.                 mysql_format(g_SQL, query, sizeof query, // Formiranje SQL upita za azuriranje mute statusa u bazi podataka
  107.                     "UPDATE `players` SET `is_muted` = 0 WHERE `id` = %d LIMIT 1", Player[i][ID]);
  108.                 mysql_tquery(g_SQL, query); // Izvrsavanje SQL upita
  109.             }
  110.         }
  111.     }
  112. }
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement