Заявки за GagSystem bY k0st0v.

Ако искате да поръчате да ви намерим определено нещо, без да става дума за коментиране, пишете тук.
Post Reply
User avatar
robertocavalli98
Потребител
Потребител
Posts: 18
Joined: 05 Sep 2016, 16:10

Re: Заявки за GagSystem bY k0st0v.

Post by robertocavalli98 »

1. Префикс: CsForcePlay
2. Нека има
3. flag S
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
User avatar
JackEyedJones
РЕКЛАМАТОР
РЕКЛАМАТОР
Posts: 332
Joined: 18 Apr 2014, 06:17
Skype: voltouch180
CS Nick: <Not Good Simply KoreaN>
Favorite version: CS: 1.6
Location: Plovdiv, Bulgaria, Europe, Entire World
Contact:

Re: Заявки за GagSystem bY k0st0v.

Post by JackEyedJones »

robertocavalli98 wrote:1. Префикс: CsForcePlay
2. Нека има
3. flag S
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
gag.rar
(9.78 KiB) Downloaded 222 times
User avatar
HIGHTER
Потребител
Потребител
Posts: 7
Joined: 09 Sep 2016, 14:28

Re: Заявки за GagSystem bY k0st0v.

Post by HIGHTER »

1.[Cs-ExpressGag] префикса
2.Да няма
3.flag 'a'
На HUD да е
4- Да има префикс!
Ti si bil nakazan v igra
Prichina (Prichina)
Nik na admina -

Аа Гагва по ип -тата на играчите
Минутите да има -
5
15
25
35
45
55
И да имам гаг мену amx_gagmenu
User avatar
JackEyedJones
РЕКЛАМАТОР
РЕКЛАМАТОР
Posts: 332
Joined: 18 Apr 2014, 06:17
Skype: voltouch180
CS Nick: <Not Good Simply KoreaN>
Favorite version: CS: 1.6
Location: Plovdiv, Bulgaria, Europe, Entire World
Contact:

Re: Заявки за GagSystem bY k0st0v.

Post by JackEyedJones »

HIGHTER wrote:1.[Cs-ExpressGag] префикса
2.Да няма
3.flag 'a'
На HUD да е
4- Да има префикс!
Ti si bil nakazan v igra
Prichina (Prichina)
Nik na admina -

Аа Гагва по ип -тата на играчите
Минутите да има -
5
15
25
35
45
55
И да имам гаг мену amx_gagmenu
gag.rar
(9.79 KiB) Downloaded 202 times
Стандартните минути са както следва в плъгина. Не се изменят.

Версията е с Български Support на HUD Текста.
User avatar
ANT.
4funBGofficial. ®
4funBGofficial. ®
Posts: 123
Joined: 08 Aug 2012, 12:13
Skype: ЛС
Favorite version: CS: 1.6
Steam Community ID: antbg
Location: София

Re: Заявки за GagSystem bY k0st0v.

Post by ANT. »

ANT. wrote:1. Префикс: Go-Die.eu
2. Нека има
3. ADMIN_BAN (1<<3) /* flag "d" */
4. Със HUD.
Минутите да има -
5
15
25
35
45
55
И да имам гаг мену amx_gagmenu
User avatar
SaDMan100
Потребител
Потребител
Posts: 2
Joined: 06 Nov 2016, 22:23
Skype: dimitar_gurov
CS Nick: MaSh!NaTa
Favorite version: CS: 1.6

Re: Заявки за GagSystem bY k0st0v.

Post by SaDMan100 »

1. Префикс: Dust2
2. Нека има
3. ADMIN_LEVEL_B
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
User avatar
sladura_1687
Потребител
Потребител
Posts: 7
Joined: 21 Nov 2016, 23:43

Re: Заявки за GagSystem bY k0st0v.

Post by sladura_1687 »

Префикс [Cs-Virus.Info]
Играч (Ник) e lishen ot CHAT opciata.
Prichina -
+ HUD
Да, има гаг -
Но, + да е на български
5 - минути
10
20
30
40
50
60
и PERMANENT
Last edited by NikolayDONG on 02 Dec 2016, 21:36, edited 1 time in total.
Reason: Буквално на латиница няма да се получи. Оформих правилно съдържанието на заявката.
User avatar
xause
V.I.P
Posts: 32
Joined: 12 Feb 2016, 13:55
Skype: live:mazeto.bg
CS Nick: Xaus
Favorite version: CS: 1.6
Steam Community ID: kifii
Contact:

Re: Заявки за GagSystem bY k0st0v.

Post by xause »

1. Префикс: [Cs-Sex.Com]
2. Нека има
3. flag b
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
User avatar
debug
Потребител
Потребител
Posts: 446
Joined: 29 Dec 2012, 22:19
Skype: ЛС!
Favorite version: CS: 1.6
Steam Community ID: deadlysight
Location: CS-BG

Re: Заявки за GagSystem bY k0st0v.

Post by debug »

1. Префикс в менюто: [FragZone-CS]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - a
4. Префикс на HUD съобщението. [FragZone-CS]
User avatar
4SkuLL
VIP
VIP
Posts: 69
Joined: 08 Sep 2016, 20:13
Skype: ЛС!
CS Nick: MadaFackaZ
Favorite version: CS: Global Offensive
Location: Края на Света.
Contact:

Re: Заявки за GagSystem bY k0st0v.

Post by 4SkuLL »

1. [FireZone-CS]
2. /gagmenu
3. Flag - n
4. Не
Да има:
5 - минути.
10
15
20
25
30
40
50
60
+ amx_gagmenu да имам.
User avatar
Mitaka69
Потребител
Потребител
Posts: 2
Joined: 21 Jan 2017, 12:38

Re: Заявки за GagSystem bY k0st0v.

Post by Mitaka69 »

1. Префикс в менюто: [Golden]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - flag "c"
4. С HUD
Да има:
5min
10min
15min
20min
30
40
50
60
User avatar
mushkarov
Потребител
Потребител
Posts: 5
Joined: 03 Dec 2013, 21:11
Favorite version: CS: 1.6
Location: Град Белица, обл. Благоевград

Re: Заявки за GagSystem bY k0st0v.

Post by mushkarov »

1. Префикс в менюто: FunMaps+Rally
2. Дали да има чат команди с които да се отваря. /gagmenu
3. Желан флаг с който да се ползва. flag "c"
4. Префикс на HUD съобщението. Да
5. Да се гагва по ИД
Да има от amx_gagmenu
1мин.
5мин.
10мин.
15мин.
20мин.
12 часа

И не искам антивирусната да ми засича злонамерен софтуер или троянски кон както ми засече на първия който ти си публикувал и на други ми засича, а съм с най-новата. На windols 10 с последна актуализация.
User avatar
HacksBG
V.I.P
V.I.P
Posts: 132
Joined: 29 Dec 2011, 14:17
Favorite version: other

Re: Заявки за GagSystem bY k0st0v.

Post by HacksBG »

mushkarov wrote:1. Префикс в менюто: FunMaps+Rally
2. Дали да има чат команди с които да се отваря. /gagmenu
3. Желан флаг с който да се ползва. flag "c"
4. Префикс на HUD съобщението. Да
5. Да се гагва по ИД
Да има от amx_gagmenu
1мин.
5мин.
10мин.
15мин.
20мин.
12 часа

И не искам антивирусната да ми засича злонамерен софтуер или троянски кон както ми засече на първия който ти си публикувал и на други ми засича, а съм с най-новата. На windols 10 с последна актуализация.

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <unixtime>

static const GagPrefixHUD[] =     "FunMaps+Rally"
#define GagSystemFLAG         ADMIN_KICK
#define GagSystemFLAGHEAD     ADMIN_RCON

//#define SQL

#if defined SQL
    #include <sqlx>
#else
    #include <nvault>
#endif

#pragma semicolon 0

#if defined SQL
    #define PLUGIN   "Gag System [SQLx]"
#else
    #define PLUGIN   "Gag System [nVault]"
#endif

#define AUTHOR   "k0st0v ;]"
#define VERSION   "v1.2"

#if defined SQL
    new Handle:g_iSqlX, Handle:g_iSqlConn;
    new iError[512]
#else
    new iVaultHandle;
#endif
new MsgHudSync, SayText, iTime;
new iCacheUserName[34], bool:iUserGaGed[33];
new iCacheAdmName[34], iCacheUserIp[18];
new iMaxGagTime, iFlagGagTime;

#if !defined SQL
    new const log_file[] = "addons/amxmodx/logs/gagsystem.log"
#endif

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR);
   
   register_cvar("gag_system", VERSION, FCVAR_SERVER|FCVAR_SPONLY);
   
   iMaxGagTime = register_cvar("amx_maxgag_time", "20");
   iFlagGagTime = register_cvar("amx_maxgag_flag", "d");
   
   register_concmd("amx_gag", "cmdGag", GagSystemFLAG, "<name> <time> [reason]");
   register_concmd("amx_ungag", "cmdUnGag", GagSystemFLAG, "<ip>");
   register_concmd("amx_gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say /gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say /gag", "cmdGagMenu", GagSystemFLAG);    
   register_concmd("amx_gagreason", "cmdGagReason", GagSystemFLAG);
   register_concmd("amx_gag_clean", "cmdCleanTable", GagSystemFLAGHEAD);
   
   register_concmd("say", "cmdSayChat", -1);
   register_concmd("say_team", "cmdSayChat", -1);
   
   MsgHudSync   = CreateHudSyncObj();
   SayText    = get_user_msgid("SayText");
   
   #if defined SQL
   set_task(1.0, "plugin_mysql_init");
   set_task(30.0, "plugin_remove_past_gag");
   #else
   iVaultHandle = nvault_open("gagsys");
   if(iVaultHandle == INVALID_HANDLE) {
      log_to_file(log_file, "[%s] nVault ERROR!", PLUGIN);
      set_fail_state("Error opening nVault");
   }
   
   server_print("[%s] The plugin loaded the nVault database.",GagPrefixHUD);
   #endif
}

public plugin_end()
{
   #if defined SQL
   if(g_iSqlConn)
   {
      SQL_FreeHandle(g_iSqlConn);
      SQL_FreeHandle(g_iSqlX);
   }
   #else
   nvault_close(iVaultHandle);
   #endif
}

#if defined SQL
public plugin_mysql_init()
{
   new iHost[64], iUser[64], iPass[64], iDb[64], iErrorCode;
   get_cvar_string("amx_sql_host", iHost, sizeof iHost - 1);
   get_cvar_string("amx_sql_user", iUser, sizeof iUser - 1);
   get_cvar_string("amx_sql_pass", iPass, sizeof iPass - 1);
   get_cvar_string("amx_sql_db", iDb, sizeof iDb - 1);
   
   g_iSqlX    = SQL_MakeDbTuple(iHost, iUser, iPass, iDb);
   g_iSqlConn = SQL_Connect(g_iSqlX, iErrorCode, iError, sizeof iError - 1);
   
   if(!g_iSqlConn)
   {
      server_cmd("Could not connect to SQL database!");
      SQL_FreeHandle(g_iSqlConn);
      SQL_FreeHandle(g_iSqlX);
   }
   
   server_cmd("%s Connected!", PLUGIN);
}

public plugin_remove_past_gag()
{
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE time <= UNIX_TIMESTAMP(now());");
   SQL_Execute(get);
   SQL_FreeHandle(get);
}
#endif

public cmdGag(id, level, cid)
{
   if(!cmd_access(id, level, cid, 3))
   {
      return PLUGIN_HANDLED;
   }
   
   new iArg[32], iTime[5], iReason[129];
   read_argv(1, iArg, sizeof iArg - 1);
   read_argv(2, iTime, sizeof iTime - 1);
   read_argv(3, iReason, sizeof iReason - 1);
   
   new AdminName[33]; 
   get_user_name(id, AdminName, sizeof AdminName - 1);
   
   new iPlayer = cmd_target(id, iArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF);
   new iGetTime = str_to_num(iTime);
   
   new PlayerIp[18];
   get_user_ip(iPlayer, PlayerIp, sizeof PlayerIp - 1, 1);
   
   if(!iPlayer)
   {
      client_print(id, print_console, "Cannot find player %s", iArg);
   } else {
      new iGetCvar[16];
      get_pcvar_string(iFlagGagTime, iGetCvar, sizeof iGetCvar - 1);
      if(iGetTime > get_pcvar_num(iMaxGagTime))
      {
         if(!(get_user_flags(id) & read_flags(iGetCvar)))
         {
            client_print(id, print_console, "You have no right to gag more than %d minutes", get_pcvar_num(iMaxGagTime));
            return PLUGIN_HANDLED;
         }
      }
      GagPlayer(id, iArg, PlayerIp, iGetTime, iReason, AdminName);
   }
   
   return PLUGIN_HANDLED;
}

public cmdUnGag(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
   {
      return PLUGIN_HANDLED;
   }
   
   new PlayerIp[33];
   read_argv(1, PlayerIp, sizeof PlayerIp - 1);
   UnGagPlayer(id, PlayerIp);
   
   return PLUGIN_HANDLED;
}

public cmdCleanTable(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
   {
      return PLUGIN_HANDLED;
   }
   
   TruncateTableMenu(id);
   return PLUGIN_HANDLED;
}

public TruncateTableMenu(id)
{
   new iMenu = menu_create("\r[\yk0st0v Gag System\r] \yAre you sure you want to empty database?", "TruncateTableMenuFunc");
   menu_additem(iMenu, "\rYes", "1", 0);
   menu_additem(iMenu, "\rNo", "2", 0);
   menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
   menu_display(id, iMenu, 0);
}

public TruncateTableMenuFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }
   
   new iData[6], iName[64];
   new access, callback;
    
   menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, sizeof iName - 1, callback);

   new iKey = str_to_num(iData);
   
   switch(iKey)
   {
      case 1:
      {
         #if defined SQL
         new Handle:iTruncate;
         iTruncate = SQL_PrepareQuery(g_iSqlConn, "TRUNCATE TABLE `amx_gag`");
         if(SQL_Execute(iTruncate))
         {
            Gaged(id, "^4The table was cleared ^3successfully^1!");
         } else {
            Gaged(id, "^4There was a problem, the table is not cleared^4!");
         }
         SQL_FreeHandle(iTruncate);
         #else
         if(nvault_prune(iVaultHandle, 0, time())) {
            Gaged(id, "^4The table was cleared ^3successfully^1!");
         }
         else {
            Gaged(id, "^4There was a problem, the table is not cleared^4!");
         }
         #endif
      }
      case 2:
      {
         return PLUGIN_CONTINUE;
      }
   }
   
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdSayChat(id)
{
   new iGetUserIp[18];
   get_user_ip(id, iGetUserIp, sizeof iGetUserIp - 1, 1);
   CheckGagedPlayer(id, iGetUserIp);
   
   if(iUserGaGed[id])
   {
      return PLUGIN_HANDLED;
   }
   
   return PLUGIN_CONTINUE;
}

public client_PreThink(id)
{
   if(is_user_connected(id))
   {
      if(iUserGaGed[id])
      {
         set_speak(id, SPEAK_MUTED);
      } else {
         set_speak(id, SPEAK_NORMAL);
      }
   }
}

public client_connect(id)
{
   iUserGaGed[id] = false;
}

public client_disconnect(id)
{
   iUserGaGed[id] = false;
}

public cmdGagMenu(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED;
   
   new iMenu = menu_create("\r[\yk0st0v\r] \yGag System\w:", "cmdGagMenuFunc");
   new iPlayers[32], iNum, iTarget;
   new UserName[34], szTempID[10];
   get_players(iPlayers, iNum);
   for(new i; i < iNum; i++)
   {
      iTarget = iPlayers[i];
      get_user_name(iTarget, UserName, sizeof UserName - 1);
      num_to_str(iTarget, szTempID, charsmax(szTempID));
      menu_additem(iMenu, UserName, szTempID, _, menu_makecallback("GagMenuPlayers"));
   }

   menu_display(id, iMenu, 0);
   return PLUGIN_HANDLED;
}

public GagMenuPlayers(iClient, iMenu, Item)
{
   new iAccess, Info[3], iCallback;
   menu_item_getinfo(iMenu, Item, iAccess, Info, sizeof Info - 1, _, _, iCallback);
    
   new iGetID = str_to_num(Info);
   
   if(access(iGetID, ADMIN_IMMUNITY))
   {
      return ITEM_DISABLED;
   } 
   
   if(iUserGaGed[iGetID])
   {
      return ITEM_DISABLED;
   }
   
   return ITEM_ENABLED;
}

public cmdGagMenuFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }

   new iData[6], iName[64];
   new access, callback;
   menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);

   new iTarget = str_to_num(iData);
   get_user_name(iTarget, iCacheUserName, sizeof iCacheUserName - 1);
   get_user_name(id, iCacheAdmName, sizeof iCacheAdmName - 1);
   get_user_ip(iTarget, iCacheUserIp, sizeof iCacheUserIp - 1, 1);
   cmdGagMenuTime(id);
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdGagMenuTime(id)
{
   new iMenu = menu_create("\r[\yk0st0v Gag System\r] \ySelect minutes?", "cmdGagMenuTimeFunc");
   menu_additem(iMenu, "\w1 \rminute", "1");
   menu_additem(iMenu, "\w5 \rminutes", "5");
   menu_additem(iMenu, "\w10 \rminutes", "10");
   menu_additem(iMenu, "\w15 \rminutes", "15");
   menu_additem(iMenu, "\w20 \rminutes", "20");
   menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
   menu_display(id, iMenu, 0);
}

public cmdGagMenuTimeFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }
   new iData[6];
   new access, callback;
   menu_item_getinfo(iMenu, Item, access, iData, sizeof iData - 1, _, _, callback);
   iTime = str_to_num(iData);
   client_cmd(id, "messagemode amx_gagreason");
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdGagReason(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED;
   
   new iReason[64];
   read_argv(1, iReason, sizeof iReason - 1);
   GagPlayer(id, iCacheUserName, iCacheUserIp, iTime, iReason, iCacheAdmName);
   return PLUGIN_HANDLED;
}

stock GagPlayer(id, const iPlayer[], const PlayerIp[], iTime, const iReason[], const iAdminName[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT `player_ip` FROM `amx_gag` WHERE `player_ip` = ^"%s^"", PlayerIp);
   
   new ExpireDate = time() + (iTime * 60);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] User ^"%s^" is already gaged", ,GagPrefixHUD, iPlayer);
      } else {
         new Handle:set;
         set = SQL_PrepareQuery(g_iSqlConn, "INSERT INTO `amx_gag` VALUES(NULL, ^"%s^", '%s', '%d', ^"%s^", ^"%s^")", iPlayer, PlayerIp, ExpireDate, iReason, iAdminName);
         SQL_Execute(set);
         SQL_FreeHandle(set);
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
         
         switch(get_cvar_num("amx_show_activity"))
         {
            case 1:
            {
               set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
               ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s", iPlayer, iReason);
            }
            case 2:
            {
               set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
               ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s ^nBy %s", iPlayer, iReason, iAdminName);
            }
         }
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new ExpireData = time() + (iTime * 60);
   new vaultkey[40], vaultdata[512];
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
   new szIp[32];
   if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
      formatex(vaultdata, sizeof vaultdata-1, "^"%s^"#^"%s^"#%i#^"%s^"", iPlayer, iReason, ExpireData, iAdminName);
      nvault_set(iVaultHandle, vaultkey, vaultdata);
      client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
      switch(get_cvar_num("amx_show_activity")) {
         case 1:
         {
            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
            ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s", GagPrefixHUD, iPlayer, iReason);
         }
         case 2:
         {
            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
            ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s ^nBy %s", GagPrefixHUD, iPlayer, iReason, iAdminName);
         }
      }
   }
   else {
      client_print(id, print_console, "[%s] User ^"%s^" is already gaged",GagPrefixHUD,iPlayer);
   }
   #endif
}

stock UnGagPlayer(id, const PlayerIp[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip`= ^"%s^"", PlayerIp);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         new iGetId = SQL_ReadResult(get, 0);
         new Handle:del;
         del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
         SQL_Execute(del);
         client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
         SQL_FreeHandle(del);
         SQL_FreeHandle(get);
      } else {
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new vaultkey[40]
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
   new szIp[32];
   if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
      client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
   }
   else {
      nvault_remove(iVaultHandle, vaultkey);
      client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
   }
   #endif
}

stock CheckGagedPlayer(id, const iPlayerIP[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip` = ^"%s^"", iPlayerIP);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         new iGetId = SQL_ReadResult(get, 0);
         new ExpireDate[11]; SQL_ReadResult(get, 3, ExpireDate, sizeof ExpireDate - 1);
         new iGetReason[129]; SQL_ReadResult(get, 4, iGetReason, sizeof iGetReason - 1);
         if(strlen(ExpireDate) > 0)
         {
            if(time() < str_to_num(ExpireDate))
            {
               new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
               new iUnixTime = str_to_num(ExpireDate);
               UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
               formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Prichina: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, iGetReason);
               Gaged(id, "%s", iGagChat);
               iUserGaGed[id] = true;
               SQL_FreeHandle(get);
            } else {
               new Handle:del;
               del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
               iUserGaGed[id] = false;
               SQL_Execute(del);
               SQL_FreeHandle(del);
               SQL_FreeHandle(get);
            }
         }
      } else {
         iUserGaGed[id] = false;
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new vaultkey[40], vaultdata[512];
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", iPlayerIP);

   if(!nvault_get(iVaultHandle, vaultkey, vaultdata, sizeof vaultdata-1)) {
      iUserGaGed[id] = false;
   }
   else {
      new szPlayerName[32], szReason[64], szExpireDate[32], szAdminName[32];
      replace_all(vaultdata, sizeof vaultdata-1, "#", " ")
      parse(vaultdata, szPlayerName, sizeof szPlayerName-1, szReason, sizeof szReason-1, szExpireDate, sizeof szExpireDate-1, szAdminName, sizeof szAdminName-1)
      if(time() < str_to_num(szExpireDate) || str_to_num(szExpireDate) == 0) {
         new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
         new iUnixTime = str_to_num(szExpireDate);
         UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
         formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Reason: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, szReason);
         Gaged(id, "%s", iGagChat);
         Gaged(id, "Player Name: %s | Reason %s | Expire Date: %s | Admin Name: %s", szPlayerName, szReason, szExpireDate, szAdminName);
         iUserGaGed[id] = true;
      }
      else {
         nvault_remove(iVaultHandle, vaultkey)
         iUserGaGed[id] = false;
      }
   }
   #endif
}

stock Gaged(const id, const input[], any:...)
{
   new count = 1, players[32];
   static msg[191];
   vformat(msg, 190, input, 3);
   if (id) players[0] = id; else get_players(players, count, "ch");
   {
      for (new i = 0; i < count; i++)
      {
         if (is_user_connected(players[i]))
         {
            message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i]) ; 
            write_byte(players[i]);
            write_string(msg);
            message_end();
         }
      }
   }
} 
-- 30 Яну 2017 16:22 --
Mitaka69 wrote:1. Префикс в менюто: [Golden]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - flag "c"
4. С HUD
Да има:
5min
10min
15min
20min
30
40
50
60

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <unixtime>

static const GagPrefixHUD[] =     "[Golden]"
#define GagSystemFLAG         ADMIN_KICK
#define GagSystemFLAGHEAD     ADMIN_RCON

//#define SQL

#if defined SQL
    #include <sqlx>
#else
    #include <nvault>
#endif

#pragma semicolon 0

#if defined SQL
    #define PLUGIN   "Gag System [SQLx]"
#else
    #define PLUGIN   "Gag System [nVault]"
#endif

#define AUTHOR   "k0st0v ;]"
#define VERSION   "v1.2"

#if defined SQL
    new Handle:g_iSqlX, Handle:g_iSqlConn;
    new iError[512]
#else
    new iVaultHandle;
#endif
new MsgHudSync, SayText, iTime;
new iCacheUserName[34], bool:iUserGaGed[33];
new iCacheAdmName[34], iCacheUserIp[18];
new iMaxGagTime, iFlagGagTime;

#if !defined SQL
    new const log_file[] = "addons/amxmodx/logs/gagsystem.log"
#endif

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR);
   
   register_cvar("gag_system", VERSION, FCVAR_SERVER|FCVAR_SPONLY);
   
   iMaxGagTime = register_cvar("amx_maxgag_time", "20");
   iFlagGagTime = register_cvar("amx_maxgag_flag", "d");
   
   register_concmd("amx_gag", "cmdGag", GagSystemFLAG, "<name> <time> [reason]");
   register_concmd("amx_ungag", "cmdUnGag", GagSystemFLAG, "<ip>");
   register_concmd("amx_gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say /gagmenu", "cmdGagMenu", GagSystemFLAG);
   //register_clcmd("say /gag", "cmdGagMenu", GagSystemFLAG);    
   register_concmd("amx_gagreason", "cmdGagReason", GagSystemFLAG);
   register_concmd("amx_gag_clean", "cmdCleanTable", GagSystemFLAGHEAD);
   
   register_concmd("say", "cmdSayChat", -1);
   register_concmd("say_team", "cmdSayChat", -1);
   
   MsgHudSync   = CreateHudSyncObj();
   SayText    = get_user_msgid("SayText");
   
   #if defined SQL
   set_task(1.0, "plugin_mysql_init");
   set_task(30.0, "plugin_remove_past_gag");
   #else
   iVaultHandle = nvault_open("gagsys");
   if(iVaultHandle == INVALID_HANDLE) {
      log_to_file(log_file, "[%s] nVault ERROR!", PLUGIN);
      set_fail_state("Error opening nVault");
   }
   
   server_print("[%s] The plugin loaded the nVault database.",GagPrefixHUD);
   #endif
}

public plugin_end()
{
   #if defined SQL
   if(g_iSqlConn)
   {
      SQL_FreeHandle(g_iSqlConn);
      SQL_FreeHandle(g_iSqlX);
   }
   #else
   nvault_close(iVaultHandle);
   #endif
}

#if defined SQL
public plugin_mysql_init()
{
   new iHost[64], iUser[64], iPass[64], iDb[64], iErrorCode;
   get_cvar_string("amx_sql_host", iHost, sizeof iHost - 1);
   get_cvar_string("amx_sql_user", iUser, sizeof iUser - 1);
   get_cvar_string("amx_sql_pass", iPass, sizeof iPass - 1);
   get_cvar_string("amx_sql_db", iDb, sizeof iDb - 1);
   
   g_iSqlX    = SQL_MakeDbTuple(iHost, iUser, iPass, iDb);
   g_iSqlConn = SQL_Connect(g_iSqlX, iErrorCode, iError, sizeof iError - 1);
   
   if(!g_iSqlConn)
   {
      server_cmd("Could not connect to SQL database!");
      SQL_FreeHandle(g_iSqlConn);
      SQL_FreeHandle(g_iSqlX);
   }
   
   server_cmd("%s Connected!", PLUGIN);
}

public plugin_remove_past_gag()
{
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE time <= UNIX_TIMESTAMP(now());");
   SQL_Execute(get);
   SQL_FreeHandle(get);
}
#endif

public cmdGag(id, level, cid)
{
   if(!cmd_access(id, level, cid, 3))
   {
      return PLUGIN_HANDLED;
   }
   
   new iArg[32], iTime[5], iReason[129];
   read_argv(1, iArg, sizeof iArg - 1);
   read_argv(2, iTime, sizeof iTime - 1);
   read_argv(3, iReason, sizeof iReason - 1);
   
   new AdminName[33]; 
   get_user_name(id, AdminName, sizeof AdminName - 1);
   
   new iPlayer = cmd_target(id, iArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF);
   new iGetTime = str_to_num(iTime);
   
   new PlayerIp[18];
   get_user_ip(iPlayer, PlayerIp, sizeof PlayerIp - 1, 1);
   
   if(!iPlayer)
   {
      client_print(id, print_console, "Cannot find player %s", iArg);
   } else {
      new iGetCvar[16];
      get_pcvar_string(iFlagGagTime, iGetCvar, sizeof iGetCvar - 1);
      if(iGetTime > get_pcvar_num(iMaxGagTime))
      {
         if(!(get_user_flags(id) & read_flags(iGetCvar)))
         {
            client_print(id, print_console, "You have no right to gag more than %d minutes", get_pcvar_num(iMaxGagTime));
            return PLUGIN_HANDLED;
         }
      }
      GagPlayer(id, iArg, PlayerIp, iGetTime, iReason, AdminName);
   }
   
   return PLUGIN_HANDLED;
}

public cmdUnGag(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
   {
      return PLUGIN_HANDLED;
   }
   
   new PlayerIp[33];
   read_argv(1, PlayerIp, sizeof PlayerIp - 1);
   UnGagPlayer(id, PlayerIp);
   
   return PLUGIN_HANDLED;
}

public cmdCleanTable(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
   {
      return PLUGIN_HANDLED;
   }
   
   TruncateTableMenu(id);
   return PLUGIN_HANDLED;
}

public TruncateTableMenu(id)
{
   new iMenu = menu_create("\r[\yk0st0v Gag System\r] \yAre you sure you want to empty database?", "TruncateTableMenuFunc");
   menu_additem(iMenu, "\rYes", "1", 0);
   menu_additem(iMenu, "\rNo", "2", 0);
   menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
   menu_display(id, iMenu, 0);
}

public TruncateTableMenuFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }
   
   new iData[6], iName[64];
   new access, callback;
    
   menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, sizeof iName - 1, callback);

   new iKey = str_to_num(iData);
   
   switch(iKey)
   {
      case 1:
      {
         #if defined SQL
         new Handle:iTruncate;
         iTruncate = SQL_PrepareQuery(g_iSqlConn, "TRUNCATE TABLE `amx_gag`");
         if(SQL_Execute(iTruncate))
         {
            Gaged(id, "^4The table was cleared ^3successfully^1!");
         } else {
            Gaged(id, "^4There was a problem, the table is not cleared^4!");
         }
         SQL_FreeHandle(iTruncate);
         #else
         if(nvault_prune(iVaultHandle, 0, time())) {
            Gaged(id, "^4The table was cleared ^3successfully^1!");
         }
         else {
            Gaged(id, "^4There was a problem, the table is not cleared^4!");
         }
         #endif
      }
      case 2:
      {
         return PLUGIN_CONTINUE;
      }
   }
   
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdSayChat(id)
{
   new iGetUserIp[18];
   get_user_ip(id, iGetUserIp, sizeof iGetUserIp - 1, 1);
   CheckGagedPlayer(id, iGetUserIp);
   
   if(iUserGaGed[id])
   {
      return PLUGIN_HANDLED;
   }
   
   return PLUGIN_CONTINUE;
}

public client_PreThink(id)
{
   if(is_user_connected(id))
   {
      if(iUserGaGed[id])
      {
         set_speak(id, SPEAK_MUTED);
      } else {
         set_speak(id, SPEAK_NORMAL);
      }
   }
}

public client_connect(id)
{
   iUserGaGed[id] = false;
}

public client_disconnect(id)
{
   iUserGaGed[id] = false;
}

public cmdGagMenu(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED;
   
   new iMenu = menu_create("\r[\yk0st0v\r] \yGag System\w:", "cmdGagMenuFunc");
   new iPlayers[32], iNum, iTarget;
   new UserName[34], szTempID[10];
   get_players(iPlayers, iNum);
   for(new i; i < iNum; i++)
   {
      iTarget = iPlayers[i];
      get_user_name(iTarget, UserName, sizeof UserName - 1);
      num_to_str(iTarget, szTempID, charsmax(szTempID));
      menu_additem(iMenu, UserName, szTempID, _, menu_makecallback("GagMenuPlayers"));
   }

   menu_display(id, iMenu, 0);
   return PLUGIN_HANDLED;
}

public GagMenuPlayers(iClient, iMenu, Item)
{
   new iAccess, Info[3], iCallback;
   menu_item_getinfo(iMenu, Item, iAccess, Info, sizeof Info - 1, _, _, iCallback);
    
   new iGetID = str_to_num(Info);
   
   if(access(iGetID, ADMIN_IMMUNITY))
   {
      return ITEM_DISABLED;
   } 
   
   if(iUserGaGed[iGetID])
   {
      return ITEM_DISABLED;
   }
   
   return ITEM_ENABLED;
}

public cmdGagMenuFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }

   new iData[6], iName[64];
   new access, callback;
   menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);

   new iTarget = str_to_num(iData);
   get_user_name(iTarget, iCacheUserName, sizeof iCacheUserName - 1);
   get_user_name(id, iCacheAdmName, sizeof iCacheAdmName - 1);
   get_user_ip(iTarget, iCacheUserIp, sizeof iCacheUserIp - 1, 1);
   cmdGagMenuTime(id);
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdGagMenuTime(id)
{
   new iMenu = menu_create("\r[\yk0st0v Gag System\r] \ySelect minutes?", "cmdGagMenuTimeFunc");
   menu_additem(iMenu, "\w1 \rminute", "1");
   menu_additem(iMenu, "\w5 \rminutes", "5");
   menu_additem(iMenu, "\w10 \rminutes", "10");
   menu_additem(iMenu, "\w15 \rminutes", "15");
   menu_additem(iMenu, "\w20 \rminutes", "20");
   menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
   menu_display(id, iMenu, 0);
}

public cmdGagMenuTimeFunc(id, iMenu, Item)
{
   if(Item == MENU_EXIT)
   {
      menu_destroy(iMenu);
      return PLUGIN_HANDLED;
   }
   new iData[6];
   new access, callback;
   menu_item_getinfo(iMenu, Item, access, iData, sizeof iData - 1, _, _, callback);
   iTime = str_to_num(iData);
   client_cmd(id, "messagemode amx_gagreason");
   menu_destroy(iMenu);
   return PLUGIN_HANDLED;
}

public cmdGagReason(id, level, cid)
{
   if(!cmd_access(id, level, cid, 1))
      return PLUGIN_HANDLED;
   
   new iReason[64];
   read_argv(1, iReason, sizeof iReason - 1);
   GagPlayer(id, iCacheUserName, iCacheUserIp, iTime, iReason, iCacheAdmName);
   return PLUGIN_HANDLED;
}

stock GagPlayer(id, const iPlayer[], const PlayerIp[], iTime, const iReason[], const iAdminName[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT `player_ip` FROM `amx_gag` WHERE `player_ip` = ^"%s^"", PlayerIp);
   
   new ExpireDate = time() + (iTime * 60);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] User ^"%s^" is already gaged", ,GagPrefixHUD, iPlayer);
      } else {
         new Handle:set;
         set = SQL_PrepareQuery(g_iSqlConn, "INSERT INTO `amx_gag` VALUES(NULL, ^"%s^", '%s', '%d', ^"%s^", ^"%s^")", iPlayer, PlayerIp, ExpireDate, iReason, iAdminName);
         SQL_Execute(set);
         SQL_FreeHandle(set);
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
         
         switch(get_cvar_num("amx_show_activity"))
         {
            case 1:
            {
               set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
               ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s", iPlayer, iReason);
            }
            case 2:
            {
               set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
               ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s ^nBy %s", iPlayer, iReason, iAdminName);
            }
         }
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new ExpireData = time() + (iTime * 60);
   new vaultkey[40], vaultdata[512];
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
   new szIp[32];
   if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
      formatex(vaultdata, sizeof vaultdata-1, "^"%s^"#^"%s^"#%i#^"%s^"", iPlayer, iReason, ExpireData, iAdminName);
      nvault_set(iVaultHandle, vaultkey, vaultdata);
      client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
      switch(get_cvar_num("amx_show_activity")) {
         case 1:
         {
            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
            ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s", GagPrefixHUD, iPlayer, iReason);
         }
         case 2:
         {
            set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
            ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s ^nBy %s", GagPrefixHUD, iPlayer, iReason, iAdminName);
         }
      }
   }
   else {
      client_print(id, print_console, "[%s] User ^"%s^" is already gaged",GagPrefixHUD,iPlayer);
   }
   #endif
}

stock UnGagPlayer(id, const PlayerIp[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip`= ^"%s^"", PlayerIp);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         new iGetId = SQL_ReadResult(get, 0);
         new Handle:del;
         del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
         SQL_Execute(del);
         client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
         SQL_FreeHandle(del);
         SQL_FreeHandle(get);
      } else {
         SQL_FreeHandle(get);
         client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new vaultkey[40]
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
   new szIp[32];
   if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
      client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
   }
   else {
      nvault_remove(iVaultHandle, vaultkey);
      client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
   }
   #endif
}

stock CheckGagedPlayer(id, const iPlayerIP[])
{
   #if defined SQL
   new Handle:get;
   get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip` = ^"%s^"", iPlayerIP);
   
   if(SQL_Execute(get))
   {
      if(SQL_NumResults(get) > 0)
      {
         new iGetId = SQL_ReadResult(get, 0);
         new ExpireDate[11]; SQL_ReadResult(get, 3, ExpireDate, sizeof ExpireDate - 1);
         new iGetReason[129]; SQL_ReadResult(get, 4, iGetReason, sizeof iGetReason - 1);
         if(strlen(ExpireDate) > 0)
         {
            if(time() < str_to_num(ExpireDate))
            {
               new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
               new iUnixTime = str_to_num(ExpireDate);
               UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
               formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Prichina: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, iGetReason);
               Gaged(id, "%s", iGagChat);
               iUserGaGed[id] = true;
               SQL_FreeHandle(get);
            } else {
               new Handle:del;
               del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
               iUserGaGed[id] = false;
               SQL_Execute(del);
               SQL_FreeHandle(del);
               SQL_FreeHandle(get);
            }
         }
      } else {
         iUserGaGed[id] = false;
      }
   } else {
      SQL_FreeHandle(get);
   }
   #else
   new vaultkey[40], vaultdata[512];
   formatex(vaultkey, sizeof vaultkey-1, "[user]%s", iPlayerIP);

   if(!nvault_get(iVaultHandle, vaultkey, vaultdata, sizeof vaultdata-1)) {
      iUserGaGed[id] = false;
   }
   else {
      new szPlayerName[32], szReason[64], szExpireDate[32], szAdminName[32];
      replace_all(vaultdata, sizeof vaultdata-1, "#", " ")
      parse(vaultdata, szPlayerName, sizeof szPlayerName-1, szReason, sizeof szReason-1, szExpireDate, sizeof szExpireDate-1, szAdminName, sizeof szAdminName-1)
      if(time() < str_to_num(szExpireDate) || str_to_num(szExpireDate) == 0) {
         new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
         new iUnixTime = str_to_num(szExpireDate);
         UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
         formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Reason: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, szReason);
         Gaged(id, "%s", iGagChat);
         Gaged(id, "Player Name: %s | Reason %s | Expire Date: %s | Admin Name: %s", szPlayerName, szReason, szExpireDate, szAdminName);
         iUserGaGed[id] = true;
      }
      else {
         nvault_remove(iVaultHandle, vaultkey)
         iUserGaGed[id] = false;
      }
   }
   #endif
}

stock Gaged(const id, const input[], any:...)
{
   new count = 1, players[32];
   static msg[191];
   vformat(msg, 190, input, 3);
   if (id) players[0] = id; else get_players(players, count, "ch");
   {
      for (new i = 0; i < count; i++)
      {
         if (is_user_connected(players[i]))
         {
            message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i]) ; 
            write_byte(players[i]);
            write_string(msg);
            message_end();
         }
      }
   }
} 
User avatar
robertocavalli98
Потребител
Потребител
Posts: 18
Joined: 05 Sep 2016, 16:10

Re: Заявки за GagSystem bY k0st0v.

Post by robertocavalli98 »

1. Insane-Cs.INFO
2. Да има
3. ADMIN_Кик
4. Да
5. Да се гагв-а само по IP и да има следните минути:
5 minute
10 minute
30 minute
60 minute
120 minute

не искам с сял
User avatar
HeMcku
Потребител
Потребител
Posts: 154
Joined: 08 Jan 2016, 09:23
Skype: dg-gaming
CS Nick: SchooL
Favorite version: CS: 1.6
Steam Community ID: 99919221
Location: /resetscore

Re: Заявки за GagSystem bY k0st0v.

Post by HeMcku »

robertocavalli98 wrote:1. Insane-Cs.INFO
2. Да има
3. ADMIN_Кик
4. Да
5. Да се гагв-а само по IP и да има следните минути:
5 minute
10 minute
30 minute
60 minute
120 minute

не искам с сял

Code: Select all

    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <unixtime>

    static const GagPrefixHUD[] =     "Insane-Cs.INFO"
    #define GagSystemFLAG         ADMIN_KICK
    #define GagSystemFLAGHEAD     ADMIN_RCON

    //#define SQL

    #if defined SQL
        #include <sqlx>
    #else
        #include <nvault>
    #endif

    #pragma semicolon 0

    #if defined SQL
        #define PLUGIN   "Gag System [SQLx]"
    #else
        #define PLUGIN   "Gag System [nVault]"
    #endif

    #define AUTHOR   "k0st0v ;]"
    #define VERSION   "v1.2"

    #if defined SQL
        new Handle:g_iSqlX, Handle:g_iSqlConn;
        new iError[512]
    #else
        new iVaultHandle;
    #endif
    new MsgHudSync, SayText, iTime;
    new iCacheUserName[34], bool:iUserGaGed[33];
    new iCacheAdmName[34], iCacheUserIp[18];
    new iMaxGagTime, iFlagGagTime;

    #if !defined SQL
        new const log_file[] = "addons/amxmodx/logs/gagsystem.log"
    #endif

    public plugin_init()
    {
       register_plugin(PLUGIN, VERSION, AUTHOR);
       
       register_cvar("gag_system", VERSION, FCVAR_SERVER|FCVAR_SPONLY);
       
       iMaxGagTime = register_cvar("amx_maxgag_time", "20");
       iFlagGagTime = register_cvar("amx_maxgag_flag", "d");
       
       register_concmd("amx_gag", "cmdGag", GagSystemFLAG, "<name> <time> [reason]");
       register_concmd("amx_ungag", "cmdUnGag", GagSystemFLAG, "<ip>");
       register_concmd("amx_gagmenu", "cmdGagMenu", GagSystemFLAG);
       //register_clcmd("say gagmenu", "cmdGagMenu", GagSystemFLAG);
       //register_clcmd("say /gagmenu", "cmdGagMenu", GagSystemFLAG);
       //register_clcmd("say /gag", "cmdGagMenu", GagSystemFLAG);   
       register_concmd("amx_gagreason", "cmdGagReason", GagSystemFLAG);
       register_concmd("amx_gag_clean", "cmdCleanTable", GagSystemFLAGHEAD);
       
       register_concmd("say", "cmdSayChat", -1);
       register_concmd("say_team", "cmdSayChat", -1);
       
       MsgHudSync   = CreateHudSyncObj();
       SayText    = get_user_msgid("SayText");
       
       #if defined SQL
       set_task(1.0, "plugin_mysql_init");
       set_task(30.0, "plugin_remove_past_gag");
       #else
       iVaultHandle = nvault_open("gagsys");
       if(iVaultHandle == INVALID_HANDLE) {
          log_to_file(log_file, "[%s] nVault ERROR!", PLUGIN);
          set_fail_state("Error opening nVault");
       }
       
       server_print("[%s] The plugin loaded the nVault database.",GagPrefixHUD);
       #endif
    }

    public plugin_end()
    {
       #if defined SQL
       if(g_iSqlConn)
       {
          SQL_FreeHandle(g_iSqlConn);
          SQL_FreeHandle(g_iSqlX);
       }
       #else
       nvault_close(iVaultHandle);
       #endif
    }

    #if defined SQL
    public plugin_mysql_init()
    {
       new iHost[64], iUser[64], iPass[64], iDb[64], iErrorCode;
       get_cvar_string("amx_sql_host", iHost, sizeof iHost - 1);
       get_cvar_string("amx_sql_user", iUser, sizeof iUser - 1);
       get_cvar_string("amx_sql_pass", iPass, sizeof iPass - 1);
       get_cvar_string("amx_sql_db", iDb, sizeof iDb - 1);
       
       g_iSqlX    = SQL_MakeDbTuple(iHost, iUser, iPass, iDb);
       g_iSqlConn = SQL_Connect(g_iSqlX, iErrorCode, iError, sizeof iError - 1);
       
       if(!g_iSqlConn)
       {
          server_cmd("Could not connect to SQL database!");
          SQL_FreeHandle(g_iSqlConn);
          SQL_FreeHandle(g_iSqlX);
       }
       
       server_cmd("%s Connected!", PLUGIN);
    }

    public plugin_remove_past_gag()
    {
       new Handle:get;
       get = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE time <= UNIX_TIMESTAMP(now());");
       SQL_Execute(get);
       SQL_FreeHandle(get);
    }
    #endif

    public cmdGag(id, level, cid)
    {
       if(!cmd_access(id, level, cid, 3))
       {
          return PLUGIN_HANDLED;
       }
       
       new iArg[32], iTime[5], iReason[129];
       read_argv(1, iArg, sizeof iArg - 1);
       read_argv(2, iTime, sizeof iTime - 1);
       read_argv(3, iReason, sizeof iReason - 1);
       
       new AdminName[33];
       get_user_name(id, AdminName, sizeof AdminName - 1);
       
       new iPlayer = cmd_target(id, iArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF);
       new iGetTime = str_to_num(iTime);
       
       new PlayerIp[18];
       get_user_ip(iPlayer, PlayerIp, sizeof PlayerIp - 1, 1);
       
       if(!iPlayer)
       {
          client_print(id, print_console, "Cannot find player %s", iArg);
       } else {
          new iGetCvar[16];
          get_pcvar_string(iFlagGagTime, iGetCvar, sizeof iGetCvar - 1);
          if(iGetTime > get_pcvar_num(iMaxGagTime))
          {
             if(!(get_user_flags(id) & read_flags(iGetCvar)))
             {
                client_print(id, print_console, "You have no right to gag more than %d minutes", get_pcvar_num(iMaxGagTime));
                return PLUGIN_HANDLED;
             }
          }
          GagPlayer(id, iArg, PlayerIp, iGetTime, iReason, AdminName);
       }
       
       return PLUGIN_HANDLED;
    }

    public cmdUnGag(id, level, cid)
    {
       if(!cmd_access(id, level, cid, 1))
       {
          return PLUGIN_HANDLED;
       }
       
       new PlayerIp[33];
       read_argv(1, PlayerIp, sizeof PlayerIp - 1);
       UnGagPlayer(id, PlayerIp);
       
       return PLUGIN_HANDLED;
    }

    public cmdCleanTable(id, level, cid)
    {
       if(!cmd_access(id, level, cid, 1))
       {
          return PLUGIN_HANDLED;
       }
       
       TruncateTableMenu(id);
       return PLUGIN_HANDLED;
    }

    public TruncateTableMenu(id)
    {
       new iMenu = menu_create("\r[\yInsane-cS.INFO\r] \yAre you sure you want to empty database?", "TruncateTableMenuFunc");
       menu_additem(iMenu, "\rYes", "1", 0);
       menu_additem(iMenu, "\rNo", "2", 0);
       menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
       menu_display(id, iMenu, 0);
    }

    public TruncateTableMenuFunc(id, iMenu, Item)
    {
       if(Item == MENU_EXIT)
       {
          menu_destroy(iMenu);
          return PLUGIN_HANDLED;
       }
       
       new iData[6], iName[64];
       new access, callback;
       
       menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, sizeof iName - 1, callback);

       new iKey = str_to_num(iData);
       
       switch(iKey)
       {
          case 1:
          {
             #if defined SQL
             new Handle:iTruncate;
             iTruncate = SQL_PrepareQuery(g_iSqlConn, "TRUNCATE TABLE `amx_gag`");
             if(SQL_Execute(iTruncate))
             {
                Gaged(id, "^4The table was cleared ^3successfully^1!");
             } else {
                Gaged(id, "^4There was a problem, the table is not cleared^4!");
             }
             SQL_FreeHandle(iTruncate);
             #else
             if(nvault_prune(iVaultHandle, 0, time())) {
                Gaged(id, "^4The table was cleared ^3successfully^1!");
             }
             else {
                Gaged(id, "^4There was a problem, the table is not cleared^4!");
             }
             #endif
          }
          case 2:
          {
             return PLUGIN_CONTINUE;
          }
       }
       
       menu_destroy(iMenu);
       return PLUGIN_HANDLED;
    }

    public cmdSayChat(id)
    {
       new iGetUserIp[18];
       get_user_ip(id, iGetUserIp, sizeof iGetUserIp - 1, 1);
       CheckGagedPlayer(id, iGetUserIp);
       
       if(iUserGaGed[id])
       {
          return PLUGIN_HANDLED;
       }
       
       return PLUGIN_CONTINUE;
    }

    public client_PreThink(id)
    {
       if(is_user_connected(id))
       {
          if(iUserGaGed[id])
          {
             set_speak(id, SPEAK_MUTED);
          } else {
             set_speak(id, SPEAK_NORMAL);
          }
       }
    }

    public client_connect(id)
    {
       iUserGaGed[id] = false;
    }

    public client_disconnect(id)
    {
       iUserGaGed[id] = false;
    }

    public cmdGagMenu(id, level, cid)
    {
       if(!cmd_access(id, level, cid, 1))
          return PLUGIN_HANDLED;
       
       new iMenu = menu_create("\r[\yCS-INSANE.INFO\r] \yGag System\w:", "cmdGagMenuFunc");
       new iPlayers[32], iNum, iTarget;
       new UserName[34], szTempID[10];
       get_players(iPlayers, iNum);
       for(new i; i < iNum; i++)
       {
          iTarget = iPlayers[i];
          get_user_name(iTarget, UserName, sizeof UserName - 1);
          num_to_str(iTarget, szTempID, charsmax(szTempID));
          menu_additem(iMenu, UserName, szTempID, _, menu_makecallback("GagMenuPlayers"));
       }

       menu_display(id, iMenu, 0);
       return PLUGIN_HANDLED;
    }

    public GagMenuPlayers(iClient, iMenu, Item)
    {
       new iAccess, Info[3], iCallback;
       menu_item_getinfo(iMenu, Item, iAccess, Info, sizeof Info - 1, _, _, iCallback);
       
       new iGetID = str_to_num(Info);
       
       if(access(iGetID, ADMIN_IMMUNITY))
       {
          return ITEM_DISABLED;
       }
       
       if(iUserGaGed[iGetID])
       {
          return ITEM_DISABLED;
       }
       
       return ITEM_ENABLED;
    }

    public cmdGagMenuFunc(id, iMenu, Item)
    {
       if(Item == MENU_EXIT)
       {
          menu_destroy(iMenu);
          return PLUGIN_HANDLED;
       }

       new iData[6], iName[64];
       new access, callback;
       menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);

       new iTarget = str_to_num(iData);
       get_user_name(iTarget, iCacheUserName, sizeof iCacheUserName - 1);
       get_user_name(id, iCacheAdmName, sizeof iCacheAdmName - 1);
       get_user_ip(iTarget, iCacheUserIp, sizeof iCacheUserIp - 1, 1);
       cmdGagMenuTime(id);
       menu_destroy(iMenu);
       return PLUGIN_HANDLED;
    }

    public cmdGagMenuTime(id)
    {
       new iMenu = menu_create("\r[\yk0st0v Gag System\r] \ySelect minutes?", "cmdGagMenuTimeFunc");
       menu_additem(iMenu, "\w5 \rminute", "5");
       menu_additem(iMenu, "\w10 \rminutes", "10");
       menu_additem(iMenu, "\w30 \rminutes", "30");
       menu_additem(iMenu, "\w60 \rminutes", "60");
       menu_additem(iMenu, "\w120 \rminutes", "120");
       menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
       menu_display(id, iMenu, 0);
    }

    public cmdGagMenuTimeFunc(id, iMenu, Item)
    {
       if(Item == MENU_EXIT)
       {
          menu_destroy(iMenu);
          return PLUGIN_HANDLED;
       }
       new iData[6];
       new access, callback;
       menu_item_getinfo(iMenu, Item, access, iData, sizeof iData - 1, _, _, callback);
       iTime = str_to_num(iData);
       client_cmd(id, "messagemode amx_gagreason");
       menu_destroy(iMenu);
       return PLUGIN_HANDLED;
    }

    public cmdGagReason(id, level, cid)
    {
       if(!cmd_access(id, level, cid, 1))
          return PLUGIN_HANDLED;
       
       new iReason[64];
       read_argv(1, iReason, sizeof iReason - 1);
       GagPlayer(id, iCacheUserName, iCacheUserIp, iTime, iReason, iCacheAdmName);
       return PLUGIN_HANDLED;
    }

    stock GagPlayer(id, const iPlayer[], const PlayerIp[], iTime, const iReason[], const iAdminName[])
    {
       #if defined SQL
       new Handle:get;
       get = SQL_PrepareQuery(g_iSqlConn, "SELECT `player_ip` FROM `amx_gag` WHERE `player_ip` = ^"%s^"", PlayerIp);
       
       new ExpireDate = time() + (iTime * 60);
       
       if(SQL_Execute(get))
       {
          if(SQL_NumResults(get) > 0)
          {
             SQL_FreeHandle(get);
             client_print(id, print_console, "[%s] User ^"%s^" is already gaged", ,GagPrefixHUD, iPlayer);
          } else {
             new Handle:set;
             set = SQL_PrepareQuery(g_iSqlConn, "INSERT INTO `amx_gag` VALUES(NULL, ^"%s^", '%s', '%d', ^"%s^", ^"%s^")", iPlayer, PlayerIp, ExpireDate, iReason, iAdminName);
             SQL_Execute(set);
             SQL_FreeHandle(set);
             SQL_FreeHandle(get);
             client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
             
             switch(get_cvar_num("amx_show_activity"))
             {
                case 1:
                {
                   set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
                   ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s", iPlayer, iReason);
                }
                case 2:
                {
                   set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
                   ShowSyncHudMsg(0, MsgHudSync, "%s has been gaged. ^nReason: %s ^nBy %s", iPlayer, iReason, iAdminName);
                }
             }
          }
       } else {
          SQL_FreeHandle(get);
       }
       #else
       new ExpireData = time() + (iTime * 60);
       new vaultkey[40], vaultdata[512];
       formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
       new szIp[32];
       if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
          formatex(vaultdata, sizeof vaultdata-1, "^"%s^"#^"%s^"#%i#^"%s^"", iPlayer, iReason, ExpireData, iAdminName);
          nvault_set(iVaultHandle, vaultkey, vaultdata);
          client_print(id, print_console, "[%s] Player is gaged successfully!",GagPrefixHUD);
          switch(get_cvar_num("amx_show_activity")) {
             case 1:
             {
                set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
                ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s", GagPrefixHUD, iPlayer, iReason);
             }
             case 2:
             {
                set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 12);
                ShowSyncHudMsg(0, MsgHudSync, "[%s] ^n%s has been gaged. ^nReason: %s ^nBy %s", GagPrefixHUD, iPlayer, iReason, iAdminName);
             }
          }
       }
       else {
          client_print(id, print_console, "[%s] User ^"%s^" is already gaged",GagPrefixHUD,iPlayer);
       }
       #endif
    }

    stock UnGagPlayer(id, const PlayerIp[])
    {
       #if defined SQL
       new Handle:get;
       get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip`= ^"%s^"", PlayerIp);
       
       if(SQL_Execute(get))
       {
          if(SQL_NumResults(get) > 0)
          {
             new iGetId = SQL_ReadResult(get, 0);
             new Handle:del;
             del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
             SQL_Execute(del);
             client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
             SQL_FreeHandle(del);
             SQL_FreeHandle(get);
          } else {
             SQL_FreeHandle(get);
             client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
          }
       } else {
          SQL_FreeHandle(get);
       }
       #else
       new vaultkey[40]
       formatex(vaultkey, sizeof vaultkey-1, "[user]%s", PlayerIp);
       new szIp[32];
       if(!nvault_get(iVaultHandle, vaultkey, szIp, sizeof szIp-1)) {
          client_print(id, print_console, "[%s] No user with that ipaddres in the database!",GagPrefixHUD);
       }
       else {
          nvault_remove(iVaultHandle, vaultkey);
          client_print(id, print_console, "[%s] Gag has been removed successfully!",GagPrefixHUD);
       }
       #endif
    }

    stock CheckGagedPlayer(id, const iPlayerIP[])
    {
       #if defined SQL
       new Handle:get;
       get = SQL_PrepareQuery(g_iSqlConn, "SELECT * FROM `amx_gag` WHERE `player_ip` = ^"%s^"", iPlayerIP);
       
       if(SQL_Execute(get))
       {
          if(SQL_NumResults(get) > 0)
          {
             new iGetId = SQL_ReadResult(get, 0);
             new ExpireDate[11]; SQL_ReadResult(get, 3, ExpireDate, sizeof ExpireDate - 1);
             new iGetReason[129]; SQL_ReadResult(get, 4, iGetReason, sizeof iGetReason - 1);
             if(strlen(ExpireDate) > 0)
             {
                if(time() < str_to_num(ExpireDate))
                {
                   new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
                   new iUnixTime = str_to_num(ExpireDate);
                   UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
                   formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Prichina: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, iGetReason);
                   Gaged(id, "%s", iGagChat);
                   iUserGaGed[id] = true;
                   SQL_FreeHandle(get);
                } else {
                   new Handle:del;
                   del = SQL_PrepareQuery(g_iSqlConn, "DELETE FROM `amx_gag` WHERE `id` = '%d'", iGetId);
                   iUserGaGed[id] = false;
                   SQL_Execute(del);
                   SQL_FreeHandle(del);
                   SQL_FreeHandle(get);
                }
             }
          } else {
             iUserGaGed[id] = false;
          }
       } else {
          SQL_FreeHandle(get);
       }
       #else
       new vaultkey[40], vaultdata[512];
       formatex(vaultkey, sizeof vaultkey-1, "[user]%s", iPlayerIP);

       if(!nvault_get(iVaultHandle, vaultkey, vaultdata, sizeof vaultdata-1)) {
          iUserGaGed[id] = false;
       }
       else {
          new szPlayerName[32], szReason[64], szExpireDate[32], szAdminName[32];
          replace_all(vaultdata, sizeof vaultdata-1, "#", " ")
          parse(vaultdata, szPlayerName, sizeof szPlayerName-1, szReason, sizeof szReason-1, szExpireDate, sizeof szExpireDate-1, szAdminName, sizeof szAdminName-1)
          if(time() < str_to_num(szExpireDate) || str_to_num(szExpireDate) == 0) {
             new iGagChat[512], iMonth, iDay, iYear, iHour, iMinute, iSecond;
             new iUnixTime = str_to_num(szExpireDate);
             UnixToTime(iUnixTime , iYear , iMonth , iDay , iHour , iMinute , iSecond, UT_TIMEZONE_EET);
             formatex(iGagChat, sizeof iGagChat - 1, "^4[%s] ^1Ti si ^4gagnat.1! Gag-a ti izticha na: ^3%02d/%02d/%02d - %02d:%02d:%02d ^1: Reason: ^4%s", GagPrefixHUD, iDay, iMonth, iYear, iHour, iMinute , iSecond, szReason);
             Gaged(id, "%s", iGagChat);
             Gaged(id, "Player Name: %s | Reason %s | Expire Date: %s | Admin Name: %s", szPlayerName, szReason, szExpireDate, szAdminName);
             iUserGaGed[id] = true;
          }
          else {
             nvault_remove(iVaultHandle, vaultkey)
             iUserGaGed[id] = false;
          }
       }
       #endif
    }

    stock Gaged(const id, const input[], any:...)
    {
       new count = 1, players[32];
       static msg[191];
       vformat(msg, 190, input, 3);
       if (id) players[0] = id; else get_players(players, count, "ch");
       {
          for (new i = 0; i < count; i++)
          {
             if (is_user_connected(players[i]))
             {
                message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i]) ;
                write_byte(players[i]);
                write_string(msg);
                message_end();
             }
          }
       }
    }  
Компилирай и пробвай. ;)
Post Reply

Return to “Заявки”