Заявки за GagSystem bY k0st0v.
- robertocavalli98
- Потребител
- Posts: 18
- Joined: 05 Sep 2016, 16:10
Re: Заявки за GagSystem bY k0st0v.
1. Префикс: CsForcePlay
2. Нека има
3. flag S
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
2. Нека има
3. flag S
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
- 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.
robertocavalli98 wrote:1. Префикс: CsForcePlay
2. Нека има
3. flag S
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
- HIGHTER
- Потребител
- Posts: 7
- Joined: 09 Sep 2016, 14:28
Re: Заявки за GagSystem bY k0st0v.
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
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
- 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.
Стандартните минути са както следва в плъгина. Не се изменят.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
Версията е с Български Support на HUD Текста.
- ANT.
- 4funBGofficial. ®
- Posts: 123
- Joined: 08 Aug 2012, 12:13
- Skype: ЛС
- Favorite version: CS: 1.6
- Steam Community ID: antbg
- Location: София
Re: Заявки за GagSystem bY k0st0v.
Минутите да има -ANT. wrote:1. Префикс: Go-Die.eu
2. Нека има
3. ADMIN_BAN (1<<3) /* flag "d" */
4. Със HUD.
5
15
25
35
45
55
И да имам гаг мену amx_gagmenu
- 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.
1. Префикс: Dust2
2. Нека има
3. ADMIN_LEVEL_B
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
2. Нека има
3. ADMIN_LEVEL_B
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
- sladura_1687
- Потребител
- Posts: 7
- Joined: 21 Nov 2016, 23:43
Re: Заявки за GagSystem bY k0st0v.
Префикс [Cs-Virus.Info]
Играч (Ник) e lishen ot CHAT opciata.
Prichina -
+ HUD
Да, има гаг -
Но, + да е на български
5 - минути
10
20
30
40
50
60
и PERMANENT
Играч (Ник) 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: Буквално на латиница няма да се получи. Оформих правилно съдържанието на заявката.
Reason: Буквално на латиница няма да се получи. Оформих правилно съдържанието на заявката.
- 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.
1. Префикс: [Cs-Sex.Com]
2. Нека има
3. flag b
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
2. Нека има
3. flag b
4. Със HUD.
Да има:
5min
10min
15min
20min
30
40
50
60
- 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.
1. Префикс в менюто: [FragZone-CS]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - a
4. Префикс на HUD съобщението. [FragZone-CS]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - a
4. Префикс на HUD съобщението. [FragZone-CS]
- 4SkuLL
- VIP
- Posts: 69
- Joined: 08 Sep 2016, 20:13
- Skype: ЛС!
- CS Nick: MadaFackaZ
- Favorite version: CS: Global Offensive
- Location: Края на Света.
- Contact:
Re: Заявки за GagSystem bY k0st0v.
1. [FireZone-CS]
2. /gagmenu
3. Flag - n
4. Не
Да има:
5 - минути.
10
15
20
25
30
40
50
60
+ amx_gagmenu да имам.
2. /gagmenu
3. Flag - n
4. Не
Да има:
5 - минути.
10
15
20
25
30
40
50
60
+ amx_gagmenu да имам.
- Mitaka69
- Потребител
- Posts: 2
- Joined: 21 Jan 2017, 12:38
Re: Заявки за GagSystem bY k0st0v.
1. Префикс в менюто: [Golden]
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - flag "c"
4. С HUD
Да има:
5min
10min
15min
20min
30
40
50
60
2. Дали да има чат команди с които да се отваря. - Да (/gagmenu)
3. Желан флаг с който да се ползва. - flag "c"
4. С HUD
Да има:
5min
10min
15min
20min
30
40
50
60
- mushkarov
- Потребител
- Posts: 5
- Joined: 03 Dec 2013, 21:11
- Favorite version: CS: 1.6
- Location: Град Белица, обл. Благоевград
Re: Заявки за GagSystem bY k0st0v.
1. Префикс в менюто: FunMaps+Rally
2. Дали да има чат команди с които да се отваря. /gagmenu
3. Желан флаг с който да се ползва. flag "c"
4. Префикс на HUD съобщението. Да
5. Да се гагва по ИД
Да има от amx_gagmenu
1мин.
5мин.
10мин.
15мин.
20мин.
12 часа
И не искам антивирусната да ми засича злонамерен софтуер или троянски кон както ми засече на първия който ти си публикувал и на други ми засича, а съм с най-новата. На windols 10 с последна актуализация.
2. Дали да има чат команди с които да се отваря. /gagmenu
3. Желан флаг с който да се ползва. flag "c"
4. Префикс на HUD съобщението. Да
5. Да се гагва по ИД
Да има от amx_gagmenu
1мин.
5мин.
10мин.
15мин.
20мин.
12 часа
И не искам антивирусната да ми засича злонамерен софтуер или троянски кон както ми засече на първия който ти си публикувал и на други ми засича, а съм с най-новата. На windols 10 с последна актуализация.
- HacksBG
- V.I.P
- Posts: 132
- Joined: 29 Dec 2011, 14:17
- Favorite version: other
Re: Заявки за GagSystem bY k0st0v.
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();
}
}
}
}
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();
}
}
}
}
- robertocavalli98
- Потребител
- Posts: 18
- Joined: 05 Sep 2016, 16:10
Re: Заявки за GagSystem bY k0st0v.
1. Insane-Cs.INFO
2. Да има
3. ADMIN_Кик
4. Да
5. Да се гагв-а само по IP и да има следните минути:
5 minute
10 minute
30 minute
60 minute
120 minute
не искам с сял
2. Да има
3. ADMIN_Кик
4. Да
5. Да се гагв-а само по IP и да има следните минути:
5 minute
10 minute
30 minute
60 minute
120 minute
не искам с сял
- 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.
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();
}
}
}
}