Rusu Radu Postat Martie 21 Postat Martie 21 WARN SYSTEM Prezentare generală Acest plugin permite administratorilor să acorde warn-uri jucătorilor pentru diverse abateri. La atingerea limitei de 3/3 warn-uri, jucătorul primește automat ban (implicit 30 zile). Sistemul include notificări în chat, salvare permanentă în nVault și posibilitatea de resetare a warn-urilor. Inspirat din stilul SAMP. Link descărcare: Nespecificat Creator: mihay111 & gemini Denumire plugin: warn_system.amxx Comenzi & Cvars Comenzi administrative: amx_warn <nume> <motiv> – Acordă warn amx_unwarn <nume> <număr> – Șterge warn-uri (1-3) Cvar: amx_warn_bantime – Durata banului în minute Default: 43200 (30 zile) 0 = Ban permanent Instrucțiuni instalare Urmează pașii de mai jos fără skip-uri: Plasează fișierul warn_system.sma în: addons/amxmodx/scripting Compilează fișierul sau folosește direct warn_system.amxx Mută fișierul warn_system.amxx în: addons/amxmodx/plugins Deschide fișierul: addons/amxmodx/configs/plugins.ini și adaugă la final: warn_system.amxx Adaugă în amxmodx/configs/amxx.cfg: amx_warn_bantime 43200 Cod sursă #include <amxmodx> #include <amxmisc> #include <nvault> #define MAX_WARNS 3 new g_iWarns[MAX_PLAYERS + 1]; new g_pBanTime; new g_iVault; public plugin_init() { register_plugin("Warn System", "1.1", "mihay111&gemini"); // Comenzi pentru admini (acces ADMIN_KICK) register_concmd("amx_warn", "cmd_warn", ADMIN_KICK, "<nume/parte din nume> <motiv>"); register_concmd("amx_unwarn", "cmd_unwarn", ADMIN_KICK, "<nume/parte din nume> <numar 1-3>"); // Cvar-ul pentru durata banului in minute (43200 minute = 30 de zile) g_pBanTime = register_cvar("amx_warn_bantime", "43200"); // Deschidem un vault pentru a salva warn-urile g_iVault = nvault_open("warn_system"); } public plugin_end() { nvault_close(g_iVault); } // Incarcam warn-urile cand jucatorul intra pe server public client_authorized(id) { LoadWarns(id); } // Curatam variabila cand iese de pe server public client_disconnected(id) { g_iWarns[id] = 0; } // ================= COMANDA AMX_WARN ================= public cmd_warn(id, level, cid) { if (!cmd_access(id, level, cid, 3)) { console_print(id, "Utilizare: amx_warn <nume> <motiv>"); return PLUGIN_HANDLED; } new szTarget[32], szReason[64]; read_argv(1, szTarget, charsmax(szTarget)); read_argv(2, szReason, charsmax(szReason)); new target = cmd_target(id, szTarget, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF); if (!target) return PLUGIN_HANDLED; // Adaugam warn g_iWarns[target]++; SaveWarns(target); new szAdminName[32], szTargetName[32]; get_user_name(id, szAdminName, charsmax(szAdminName)); get_user_name(target, szTargetName, charsmax(szTargetName)); // Mesaj pe tot chatul client_print_color(0, print_team_default, "^4[WARN]^1 Adminul ^3%s^1 i-a dat warn lui ^3%s^1. Motiv: ^4%s^1. Total warnuri: ^3%d/%d", szAdminName, szTargetName, szReason, g_iWarns[target], MAX_WARNS); // Mesaj strict catre cel vizat client_print_color(target, print_team_default, "^4[WARN]^1 Ai primit warn de la adminul ^3%s^1. Motiv: ^4%s^1. Total warnuri: ^3%d/%d.", szAdminName, szReason, g_iWarns[target], MAX_WARNS); client_print_color(target, print_team_default, "^4[WARN]^1 La %d warnuri vei primi ban!", MAX_WARNS); // Verificam daca a atins limita if (g_iWarns[target] >= MAX_WARNS) { new iBanTime = get_pcvar_num(g_pBanTime); new szBanDuration[32]; // Formatam textul de ban if (iBanTime == 0) { copy(szBanDuration, charsmax(szBanDuration), "Permanent"); } else if (iBanTime == 43200) { copy(szBanDuration, charsmax(szBanDuration), "30 de zile"); } else { formatex(szBanDuration, charsmax(szBanDuration), "%d minute", iBanTime); } client_print_color(0, print_team_default, "^4[WARN]^1 Jucatorul ^3%s^1 a primit ^4%d/%d^1 warnuri si a fost banat ^3%s^1.", szTargetName, MAX_WARNS, MAX_WARNS, szBanDuration); // Resetam warn-urile pentru ca jucatorul "si-a platit datoria" g_iWarns[target] = 0; SaveWarns(target); // Dam ban efectiv prin SteamID new szAuthID[35]; get_user_authid(target, szAuthID, charsmax(szAuthID)); server_cmd("banid %d ^"%s^"; writeid", iBanTime, szAuthID); server_cmd("kickid %d ^"Ai primit 3/3 warn-uri! Ban: %s^"", get_user_userid(target), szBanDuration); } return PLUGIN_HANDLED; } // ================= COMANDA AMX_UNWARN ================= public cmd_unwarn(id, level, cid) { if (!cmd_access(id, level, cid, 3)) { console_print(id, "Utilizare: amx_unwarn <nume> <numar 1-3>"); return PLUGIN_HANDLED; } new szTarget[32], szAmount[8]; read_argv(1, szTarget, charsmax(szTarget)); read_argv(2, szAmount, charsmax(szAmount)); new target = cmd_target(id, szTarget, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF); if (!target) return PLUGIN_HANDLED; new iAmount = str_to_num(szAmount); // Validam numarul introdus if (iAmount < 1 || iAmount > 3) { console_print(id, "Eroare: Poti sterge intre 1 si 3 warn-uri odata."); return PLUGIN_HANDLED; } // Daca jucatorul are deja 0 warnuri if (g_iWarns[target] == 0) { console_print(id, "Jucatorul nu are niciun warn in acest moment."); return PLUGIN_HANDLED; } // Ne asiguram ca nu stergem mai multe warn-uri decat are if (iAmount > g_iWarns[target]) { iAmount = g_iWarns[target]; } // Scadem warn-urile si salvam in baza de date nVault g_iWarns[target] -= iAmount; SaveWarns(target); new szAdminName[32], szTargetName[32]; get_user_name(id, szAdminName, charsmax(szAdminName)); get_user_name(target, szTargetName, charsmax(szTargetName)); // Mesaj pe tot chatul client_print_color(0, print_team_default, "^4[WARN]^1 Adminul ^3%s^1 i-a sters ^4%d^1 warn(uri) lui ^3%s^1. Total warnuri: ^3%d/%d", szAdminName, iAmount, szTargetName, g_iWarns[target], MAX_WARNS); // Mesaj strict catre cel vizat client_print_color(target, print_team_default, "^4[WARN]^1 Adminul ^3%s^1 ti-a sters ^4%d^1 warn(uri). Total warnuri: ^3%d/%d.", szAdminName, iAmount, g_iWarns[target], MAX_WARNS); return PLUGIN_HANDLED; } // ================= SISTEM DE SALVARE ================= public LoadWarns(id) { new szAuthID[35]; get_user_authid(id, szAuthID, charsmax(szAuthID)); if(equal(szAuthID, "HLTV") || equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN")) return; new szData[8]; if (nvault_get(g_iVault, szAuthID, szData, charsmax(szData))) { g_iWarns[id] = str_to_num(szData); } else { g_iWarns[id] = 0; } } public SaveWarns(id) { new szAuthID[35]; get_user_authid(id, szAuthID, charsmax(szAuthID)); if(equal(szAuthID, "HLTV") || equal(szAuthID, "STEAM_ID_LAN") || equal(szAuthID, "VALVE_ID_LAN")) return; new szData[8]; num_to_str(g_iWarns[id], szData, charsmax(szData)); nvault_set(g_iVault, szAuthID, szData); } Module necesare CStrike Fun
Postări Recomandate