Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

CsxBans перекидывает за другую команду

, ошибка в плагине CsxBans
Статус пользователя elf01
сообщение 5.5.2016, 8:05
Сообщение #1
Стаж: 10 лет

Сообщений: 6
Благодарностей: 1
Полезность: 0

Ребят помогите исправить исходник. Ситуация такая: Когда заходишь на сервер, к примеру на строну спецназа, то через пару секунд как прогрузится всё, ты остаешься за команду спецназ, а в таблице счета показывает что ты за команду террористов, но когда раунд закончится, то нормально показывается, что ты за команду спецназа.

Код:
/* Plugin generated by AMXX-Studio */

/* */
/* CSXBans #1.6 presents by <CsxTeams> */
/* */
/*
CSXBans System, AMX Mod X Plugin
Copyright © 2014 <CsxTeams>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Current version: # 1.6
--------------------------------------------------------------
Changelog for Plugin Csxbans changes/fixes by ReVKa...
--------------------------------------------------------------
v1.0 alpha ///
-- First
v1.2 ///

--Remake Plagin
--Added new menu
--SQLX Version
--Console Commands
--remake ban system

# v1.4

* Added Web Server
* Added Nem Commands
* Added plugin CSXBans_add.amxx
* Added Include <CsxInc>
* Added Regex Function
* And many more

# v1.6

*** Remake Ban Sestem
*** Remake SQLX and Web Server(Pro Version)
*** A large code optimization
* Added Subnet Ban
* Added Ban on Name
* Remake commands for superban amx_fullban(csx_fullban)
* Added to SuperBan Ban by Name
* Subnet Ban :
- Bans on the main ip and dedicated subnet
- You can ban all subnets
- Ban Permament

< This version divided into 2 part >

Pro Version (100 ruble(30 Uan) skype revcrew77)
* Added Ban on LAST Name(if palyer changes steam or ip or name it would still be banned)
* Subnet Ban :
- Is banned now will not differentiate amongst your server in the server list
- Ban is now has high property
*In pro version you can use Web server and resourse(SQLX Version)
*Technical Support
*And many more
*/

#include <amxmodx>
#include <amxmisc>
#include <CsxInc>

//If you want use logging for your server, then uncomment the line below
#define LOGS_USED

//General Settings <Not Change>
#define MAX_SAY 8

#define ADMIN_LEVEL ADMIN_BAN
#define PLUGIN "CSX:| Bans"
#define VERSION "# 1.6 Fix"
#define AUTHOR "<Csx Teams>"

//Cvars
new g_Delay, g_admin_active;
//End
//Files
#if defined LOGS_USED
new g_szLogsDir[64];
#endif
new g_ban_file[64];
//End

//Bans Variable
enum _:BannedData
{
bd_name[32],
bd_steamid[35],
bd_banlength,
bd_unbantime[32],
bd_reason[128],
bd_admin_name[64],
bd_admin_steamid[35]
};

new Trie:g_trie;
new Array:g_array;

new g_total_bans;
//End
new g_immune[33];

new g_Admin[33];
new Player_Ban[33];
new banReason[33];
new time_ban[33];
new time_bans[33][12];
new reasons[33][128]

new Say_word[MAX_SAY][] =
{
"0","1","2","3","4","5","6","7"
}
new BanTimes[7][] =
{
"UserBanTime", "10", "30", "60", "140", "300", "1440"
}
new BanReason[7][] =
{
"Своя Причина", "Читер", "Неадекват", "Кемперит", "Без Причины", "Оскорбление", "Нарушение Правил"
}

new g_max_player;

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_Delay = register_cvar("amx_bandelay", "3.0")
g_admin_active = register_cvar("amx_show_active", "1")


register_clcmd("CSXBans_SetProperty", "SetPropertyReason");
register_clcmd("CSXBans_SetPropertyTime", "SetPropertyTime");

register_concmd("amx_banmenu", "cmdsBanMenu", ADMIN_BAN, "- displays ban menu")
register_concmd("amx_fullban", "cmdBanSuper",ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_ban", "cmdBan",ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_banip", "cmdBanIP",ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_unban", "CmdUnban", ADMIN_BAN, "<authid or ip>");
register_concmd("amx_banlist", "CmdBanList", ADMIN_BAN, "Shows everyone who is banned");

g_trie = TrieCreate();
g_array = ArrayCreate(BannedData);

g_max_player = get_maxplayers()

server_print("^n***************************^n[CSX:|Bans] Initialization")
server_print("[CSX:|Bans] Plugin Name %s",PLUGIN)
server_print("[CSX:|Bans] Plugin Version %s",VERSION)
server_print("[CSX:|Bans] Plugin Autor %s",AUTHOR)
server_print("[CSX:|Bans] This server is protected by CSX:|Bans # %s",VERSION)

get_datadir(g_ban_file, sizeof(g_ban_file) - 1);
add(g_ban_file, sizeof(g_ban_file) - 1, "/Csxbans_ban.txt");

server_print("[CSX:|Bans] Loaded Ban from File^n***************************^n")
LoadBans();

CheckBans();
}

public plugin_cfg()
{
#if defined LOGS_USED
get_datadir(g_szLogsDir,charsmax(g_szLogsDir))
add(g_szLogsDir, charsmax(g_szLogsDir), "/Logs");

if(!dir_exists(g_szLogsDir)) mkdir(g_szLogsDir);
#endif
}
public client_putinserver(client)
{
g_Admin[client]= bool:access(client,ADMIN_BAN)
g_immune[client] = bool:access(client,ADMIN_IMMUNITY)

static authid[25];
get_user_authid(client, authid, sizeof(authid) - 1);

static ip[25];
get_user_ip(client, ip, sizeof(ip) - 1, 1);

static array_pos;

static name[33];
get_user_name(client,name,32)

if( TrieGetCell(g_trie, authid, array_pos) || TrieGetCell(g_trie, ip, array_pos) || TrieGetCell(g_trie, name, array_pos) )
{
static data[BannedData];
ArrayGetArray(g_array, array_pos, data);

Print_Ban_Info(client, data[bd_name], data[bd_steamid], data[bd_reason], data[bd_banlength], data[bd_unbantime])
set_task(Float:get_pcvar_float(g_Delay), "Disconnected", client);
}
}

//********************************************************************************
// ----------------------------------------------------------------------------- Console Command Ban START-------------------------------------------------------------

public cmdBan(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED


new target[32], minutes[16], reason[256]

read_argv(1, target, 31)
read_argv(2, minutes, 15)
read_argv(3, reason, 255)


new player = cmd_target(id, target,9)

if (!player)
return PLUGIN_HANDLED

Stock_Add_Ban(id,player,2, minutes,reason)


return PLUGIN_HANDLED
}
public cmdBanIP(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32], minutes[16], reason[256]

read_argv(1, target, 31)
read_argv(2, minutes, 15)
read_argv(3, reason, 255)


new player = cmd_target(id, target,9)

if (!player)
return PLUGIN_HANDLED

Stock_Add_Ban(id,player,3, minutes,reason)


return PLUGIN_HANDLED
}
public cmdBanSuper(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32], minutes[16], reason[256]

read_argv(1, target, 31)
read_argv(2, minutes, 15)
read_argv(3, reason, 255)


new player = cmd_target(id, target,9)

if (!player)
return PLUGIN_HANDLED

Stock_Add_Ban(id,player,4, minutes,reason)


return PLUGIN_HANDLED
}
public CmdUnban(client, level, cid)
{
if( !cmd_access(client, level, cid, 2) ) return PLUGIN_HANDLED;

static arg[35];
read_argv(1, arg, sizeof(arg) - 1);

if( TrieKeyExists(g_trie, arg) )
{
static array_pos;
TrieGetCell(g_trie, arg, array_pos);

static data[BannedData];
ArrayGetArray(g_array, array_pos, data);

new name_adm[32];
get_user_name(client,name_adm,31)

Print_Color(0, "^4Админ^1 %s ^3разбанил^1 игрока '%s' [^3Причина бана:^4 %s^1]",name_adm, data[bd_name], data[bd_reason]);

RemoveBan(array_pos, data[bd_steamid]);

Logs("[CSXBans] Admin %s unbanned %s [%s] with reason %s",name_adm, data[bd_name],data[bd_steamid], data[bd_reason])

return PLUGIN_HANDLED;
}

return PLUGIN_HANDLED;
}

public SetPropertyTime(id)
{
static arg[5];
read_argv(1, arg, charsmax(arg));

if ( !strlen(arg) )
{
Print_Color(id, "You can't set a property blank! Please type a new value.");
client_cmd(id, "messagemode CSXBans_SetPropertyTime");
return PLUGIN_HANDLED;
}
else if ( !IsStrFloat(arg) )
{
Print_Color(id, "You can't use letters in a property! Please type a new value.");
client_cmd(id, "messagemode CSXBans_SetPropertyTime");
return PLUGIN_HANDLED;
}
new check = str_to_num(arg);
if(check < 0 || check > 3600)
{
Print_Color(id, "The property has to be between^3 0^1 and^4 3600^1!");
client_cmd(id, "messagemode CSXBans_SetPropertyTime");
return PLUGIN_HANDLED;
}

//time_ban[id]= str_to_num(arg)
copy(time_bans[id],charsmax(arg),arg)

menu_bantype(id);
return PLUGIN_HANDLED;
}
public SetPropertyReason(id)
{
static arg[36];
read_argv(1, arg, charsmax(arg));

if ( !strlen(arg) )
{
Print_Color(id, "You can't set a property blank! Please type a new value.");
client_cmd(id, "messagemode CSXBans_SetPropertyReason");
return PLUGIN_HANDLED;
}

copy(reasons[id],charsmax(arg),arg)

MenuBanTime(id)
return PLUGIN_HANDLED;

}
////////////////////////////////////////////////////////////////////////////
// =============================================From Advanced Bans===================
public CmdBanList(client, level, cid)
{
if( !cmd_access(client, level, cid, 1) ) return PLUGIN_HANDLED;

if( !g_total_bans )
{
console_print(client, "[CSXBans] Invalid Bans");
return PLUGIN_HANDLED;
}

static start;

if( read_argc() > 1 )
{
static arg[5];
read_argv(1, arg, sizeof(arg) - 1);

start = min(str_to_num(arg), g_total_bans) - 1;
}
else
{
start = 0;
}

new last = min(start + 5, g_total_bans);

client_print(client,print_console, "Listing banned players %i - %i.", start + 1, last);

for( new i = start; i < last; i++ )
{
static data[BannedData];
ArrayGetArray(g_array, i, data);

Print_Ban_Info(client, data[bd_name], data[bd_steamid], data[bd_reason], data[bd_banlength], data[bd_unbantime]);
}

if( ++last < g_total_bans )
{
client_print(client,print_console, "Use amx_banlist %i for the next people in the list", last);
}

return PLUGIN_HANDLED;
}
public CheckBans()
{
if( g_total_bans > 0 )
{
static _hours[5], _minutes[5], _seconds[5], _month[5], _day[5], _year[7];
format_time(_hours, sizeof(_hours) - 1, "%H");
format_time(_minutes, sizeof(_minutes) - 1, "%M");
format_time(_seconds, sizeof(_seconds) - 1, "%S");
format_time(_month, sizeof(_month) - 1, "%m");
format_time(_day, sizeof(_day) - 1, "%d");
format_time(_year, sizeof(_year) - 1, "%Y");

// c = current
// u = unban

new c_hours = str_to_num(_hours);
new c_minutes = str_to_num(_minutes);
new c_seconds = str_to_num(_seconds);
new c_month = str_to_num(_month);
new c_day = str_to_num(_day);
new c_year = str_to_num(_year);

static unban_time[64];
static u_hours, u_minutes, u_seconds, u_month, u_day, u_year;

for( new i = 0; i < g_total_bans; i++ )
{

static data[BannedData];
ArrayGetArray(g_array, i, data);
if( data[bd_banlength] == 0 ) continue;

copy(unban_time, sizeof(unban_time) - 1, data[bd_unbantime]);

replace_all(unban_time, sizeof(unban_time) - 1, ":", " ");
replace_all(unban_time, sizeof(unban_time) - 1, ".", " ");

parse(unban_time,\
_day, sizeof(_hours) - 1,\
_month, sizeof(_minutes) - 1,\
_year, sizeof(_seconds) - 1,\
_hours, sizeof(_month) - 1,\
_minutes, sizeof(_day) - 1,\
_seconds, sizeof(_year) - 1
);

u_hours = str_to_num(_hours);
u_minutes = str_to_num(_minutes);
u_seconds = str_to_num(_seconds);
u_month = str_to_num(_month);
u_day = str_to_num(_day);
u_year = str_to_num(_year);

if( u_year < c_year
|| u_year == c_year && u_month < c_month
|| u_year == c_year && u_month == c_month && u_day < c_day
|| u_year == c_year && u_month == c_month && u_day == c_day && u_hours < c_hours
|| u_year == c_year && u_month == c_month && u_day == c_day && u_hours == c_hours && u_minutes < c_minutes
|| u_year == c_year && u_month == c_month && u_day == c_day && u_hours == c_hours && u_minutes == c_minutes && u_seconds <= c_seconds )
{
Logs("Ban time is up for: %s [%s]", data[bd_name], data[bd_steamid]);

Print_Color(0," %s^x01[^x04%s^x01]^x03 время бана вышло!^x01 [^3Причина бана:^4 %s ^1]", data[bd_name], data[bd_steamid], data[bd_reason]);

RemoveBan(i, data[bd_steamid]);

i--; // current pos was replaced with another ban, so we need to check it again.
}
}
}

set_task(10.0, "CheckBans",1327)
}
RemoveBan(pos, const authid[])
{
TrieDeleteKey(g_trie, authid);
ArrayDeleteItem(g_array, pos);

g_total_bans--;

new f = fopen(g_ban_file, "wt");

new data[BannedData];
for( new i = 0; i < g_total_bans; i++ )
{
ArrayGetArray(g_array, i, data);
TrieSetCell(g_trie, data[bd_steamid], i);

fprintf(f, "^"%s^" ^"%s^" %i ^"%s^" ^"%s^" ^"%s^" ^"%s^"^n",\
data[bd_steamid],\
data[bd_name],\
data[bd_banlength],\
data[bd_unbantime],\
data[bd_reason],\
data[bd_admin_name],\
data[bd_admin_steamid]
);
}

fclose(f);
}


LoadBans()
{
if( file_exists(g_ban_file) )
{
new f = fopen(g_ban_file, "rt");

static filedata[512], length[10];

static data[BannedData];
while( !feof(f) )
{
fgets(f, filedata, charsmax(filedata));

if( !filedata[0] ) continue;

parse(filedata,\
data[bd_steamid], sizeof(data[bd_steamid]) - 1,\
data[bd_name], sizeof(data[bd_name]) - 1,\
length, sizeof(length) - 1,\
data[bd_unbantime], sizeof(data[bd_unbantime]) - 1,\
data[bd_reason], sizeof(data[bd_reason]) - 1,\
data[bd_admin_name], sizeof(data[bd_admin_name]) - 1,\
data[bd_admin_steamid], sizeof(data[bd_admin_steamid]) - 1
);

data[bd_banlength] = str_to_num(length);

ArrayPushArray(g_array, data);
TrieSetCell(g_trie, data[bd_steamid], g_total_bans);

g_total_bans++;
}

fclose(f);
}

// load these after, so when they are added to the file with AddBan(), they aren't loaded again from above.

/*#if defined KEEP_DEFAULT_BANS
LoadOldBans("banned.cfg");
LoadOldBans("listip.cfg");
#endif
*/
}
////////////////////////////////////////////////////////////////////////////
// =============================================From Advanced Bans END===================


// **************************************** AMXBans BAN and Stock START **************************************************
Stock_Add_Ban(const id_admin, const id_player, const type, const minutes[], const reason[])
{

new player = id_player
new admin = id_admin

if (!player)
return PLUGIN_HANDLED

new authid[32], name2[32], authid2[32], name[32]
new userid2 = get_user_userid(player)

get_user_authid(player, authid2, 31)
get_user_authid(admin, authid, 31)
get_user_name(player, name2, 31)
get_user_name(admin, name, 31)

new ip[32];
get_user_ip(player,ip,31)
new nNum = str_to_num(minutes)

static unban_time[64];

if( nNum == 0 )
{
formatex(unban_time, sizeof(unban_time) - 1, "Бан навсегда");
}
else
{
GenerateUnbanTime(nNum, unban_time, sizeof(unban_time) - 1);
}

if( TrieKeyExists(g_trie, authid2) || TrieKeyExists(g_trie, ip))
{
console_print(admin, "[CSX:|Bans] This STEAM ID or IP are banned...");
return PLUGIN_HANDLED;
}

switch(type)
{

case 1:
{
BanToFile(name2,name2,reason,nNum,unban_time,name,authid)
}
case 2:
{
if(Steam_Cheack(authid2))
{
BanToFile(name2,ip,reason,nNum,unban_time,name,authid)
}
else
{
BanToFile(name2,authid2,reason,nNum,unban_time,name,authid)
}
}
case 3:
{
BanToFile(name2,ip,reason,nNum,unban_time,name,authid)
}
case 4:
{
if(!Steam_Cheack(authid2))
BanToFile(name2,authid2,reason,nNum,unban_time,name,authid)
BanToFile(name2,ip,reason,nNum,unban_time,name,authid)
}

}
#if defined LOGS_USED
Logs("CSX:|Bans: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><><%s>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(admin), authid, name2, userid2, authid2,ip, minutes, reason);
#endif

Print_Ban_Info(player,name2,authid2,reason,nNum,unban_time)

// Display the message to all clients
static bantime[64]
GetBanTime(nNum, bantime, 63)

new msg[256];
new len;
new maxpl = get_maxplayers();
for (new i = 1; i <= maxpl; i++)
{
if (is_user_connected(i) && !is_user_bot(i))
{
// if(get_pcvar_num(g_admin_active))
len = formatex(msg, charsmax(msg), "Игрок %s ^3был забанен^1 ", name2);
// else
//len = formatex(msg, charsmax(msg), "^4Админ^1 ADMIN ^1забанил игрока^4 '%s'", name2);
if (nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "^1 на^4 %s", bantime);
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "^4НАВСЕГДА^1");
}
if (strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " ^1Причина бана: ^3'%s'", reason);
}
Print_Color(i,msg)
}
}

set_hudmessage(200,200,250, 0.03,0.20,0,0.2,8.0,0.1,1.0,false)
show_hudmessage(0,"=====================^n[CSX:|Bans]^nИнформация о бане^nАдминистратор %s^nЗабанил игрока %s^nПродолжительность '%s'^nПричина бана '%s'^n =====================",name,name2, bantime, reason)

/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(0, "[CSXBans] %s got banned for %s minutes by Admin %s", name2, minutes,name)

/*SET USER Frozen*/
set_user_frozen(player)

set_task(Float:get_pcvar_float(g_Delay), "Disconnected", player);

return PLUGIN_HANDLED

}

public Disconnected(id)
{
server_cmd("kick #%d ^"You have been banned...Cheack your console^"",get_user_userid(id))
}


stock BanToFile(const target_name[], const target_steamid[], const reason[], const length, const unban_time[], const admin_name[], const admin_steamid[])
{
new file_ban = fopen(g_ban_file, "a+");

fprintf(file_ban, "^"%s^" ^"%s^" %i ^"%s^" ^"%s^" ^"%s^" ^"%s^"^n",\
target_steamid,\
target_name,\
length,\
unban_time,\
reason,\
admin_name,\
admin_steamid
);

fclose(file_ban);

static data[BannedData];
copy(data[bd_name], sizeof(data[bd_name]) - 1, target_name);
copy(data[bd_steamid], sizeof(data[bd_steamid]) - 1, target_steamid);
data[bd_banlength] = length;
copy(data[bd_unbantime], sizeof(data[bd_unbantime]) - 1, unban_time);
copy(data[bd_reason], sizeof(data[bd_reason]) - 1, reason);
copy(data[bd_admin_name], sizeof(data[bd_admin_name]) - 1, admin_name);
copy(data[bd_admin_steamid], sizeof(data[bd_admin_steamid]) - 1, admin_steamid);

TrieSetCell(g_trie, target_steamid, g_total_bans);
ArrayPushArray(g_array, data);

g_total_bans++;

}
stock Steam_Cheack(const Authid[])
{
if (equal("4294967295", Authid)
|| equal("HLTV", Authid)
|| equal("STEAM_ID_LAN", Authid)
|| equali("VALVE_ID_LAN", Authid)
)
return 1;

return 0;
}
stock Logs(const szMessage[], any:...)
{
new szMsg[256], szFile[64], szTime[10];
vformat(szMsg, charsmax(szMsg), szMessage, 2);
get_time("%Y%m", szTime, charsmax(szTime));
formatex(szFile, charsmax(szFile), "%s/CsxBans_%s.log", g_szLogsDir, szTime);
log_to_file(szFile, szMsg);
}
stock ReplacesAdmins()
{
for( new i = 1; i <= g_max_player; i++ )
if(is_user_connecting(i) && !is_user_bot(i) && !is_user_hltv(i))
{
g_Admin[i] = bool:access(i,ADMIN_BAN)
g_immune[i] = bool:access(i,ADMIN_IMMUNITY)
}
}

bool:IsStrFloat(string[])
{
new len = strlen(string);
for ( new i = 0; i < len; i++ )
{
switch ( string[i] )
{
case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-', '*':continue;
default: return false;
}
}

return true;
}


// **************************************** CSXBans BAN and Stock END **************************************************
stock MenuSetProps(id, menu)
{
new szText[128]
formatex(szText, 127, "Назад")
menu_setprop(menu, MPROP_BACKNAME, szText)

formatex(szText, 127, "Вперед")
menu_setprop(menu, MPROP_NEXTNAME, szText)

formatex(szText, 127, "Выход ^n^n\wБан Система \yCSX:|Bans \r[%s]^n\dNot Full Version", VERSION)
menu_setprop(menu, MPROP_EXITNAME, szText)

return 1
}
public cmdsBanMenu(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL))
return PLUGIN_HANDLED
new title[512]; formatex(title, sizeof(title) - 1, "\rБан Меню \y[Игроки]^n\dЧасть \w1\d из \w4")

//Create the menu
new p_Menu = menu_create(title, "menu_chooose_user")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
new szTemp[120];
get_players(s_Players, i_Num)

MenuSetProps(id, p_Menu)


for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
if (g_immune[i_Player]) formatex ( szTemp, sizeof ( szTemp ) - 1, "\d%s\r**", s_Name);
else formatex ( szTemp, sizeof ( szTemp ) - 1, "\w%s", s_Name);
menu_additem(p_Menu, szTemp, s_Player, 0)
}

menu_display(id, p_Menu, 0)
return PLUGIN_HANDLED;
}
public menu_chooose_user(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new s_Data[12], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
Player_Ban[id] = str_to_num(s_Data)
if(g_immune[Player_Ban[id]]) return PLUGIN_HANDLED
MenuBanReason(id)

menu_destroy(menu)
return PLUGIN_HANDLED
}
public MenuBanReason(id)
{
new title[512]; formatex(title, sizeof(title) - 1, "\rБан Меню\y[Причина]^n\dЧасть \w2\d из \w4")
//Create the menu
new p_Menu = menu_create(title, "Menu_BanReason")

MenuSetProps(id, p_Menu)

for (new i; i < 7; i++)
{
menu_additem(p_Menu, BanReason[i], Say_word[i+1], 0)
}

menu_display(id, p_Menu, 0)
}
public Menu_BanReason(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new s_Data[6], s_Name[64], i_Access, i_Callback;
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
banReason[id] = str_to_num(s_Data)
if((str_to_num(s_Data)-1) != 0)
{
MenuBanTime(id)
}
else{
client_cmd(id, "messagemode CSXBans_SetProperty");
Print_Color(id,"Type the variable BAN Reason")
}
menu_destroy(menu)
return PLUGIN_HANDLED;

}
public MenuBanTime(id)
{
new title[512]; formatex(title, sizeof(title) - 1, "\rБан Меню \y[Время]^n\dЧасть \w3\d из \w4")
//Create the menu
new p_Menu = menu_create(title, "Menu_BanTime")

MenuSetProps(id, p_Menu)

for (new i; i < 7; i++)
{
menu_additem(p_Menu, BanTimes[i], Say_word[i+1], 0)
}

menu_display(id, p_Menu, 0)
}
public Menu_BanTime(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new s_Data[6], s_Name[64], i_Access, i_Callback;
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
time_ban[id] = str_to_num(s_Data)
if((str_to_num(s_Data)-1) != 0)
{
menu_bantype(id);
}
else{
client_cmd(id, "messagemode CSXBans_SetPropertyTime");
Print_Color(id,"Type the variable BAN Time")
}

menu_destroy(menu)
return PLUGIN_HANDLED;

}
public menu_bantype(id)
{

new title[512]; formatex(title, sizeof(title) - 1, "\rБан Меню \y[Тип Бана]^n\dЧасть \w4\d из \w4")
//Create the menu
new p_Menu = menu_create(title, "Menu_bantype")

MenuSetProps(id, p_Menu)

menu_additem(p_Menu," \wБан по \yName","1")
menu_additem(p_Menu," \wБан по \ySTEAM ID","2")
menu_additem(p_Menu," \wБан по \yIP ","3")
menu_additem(p_Menu," \wБан по \ySuperBan[IP+STEAM +Name]^n","4")
menu_additem(p_Menu," \wБан по \rПодсетям [Навсегда]","5")
menu_additem(p_Menu," \dБан по \rПоследниму нику \y<не активна>","6")

menu_display(id, p_Menu, 0)
}
public Menu_bantype(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new s_Data[6], s_Name[64], i_Access, i_Callback, nickname[32];
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new num = str_to_num(s_Data)
get_user_name(Player_Ban[id],nickname,31)
if(num != 5 && num !=6)
{
if((banReason[id] - 1) != 0)
{
if(time_ban[id] - 1 != 0)
Stock_Add_Ban(id,Player_Ban[id],num, BanTimes[time_ban[id]-1],BanReason[banReason[id]-1])
else
Stock_Add_Ban(id,Player_Ban[id],num,time_bans[id],BanReason[banReason[id]-1])
}
else
{
if(time_ban[id] - 1 != 0)
Stock_Add_Ban(id,Player_Ban[id],num,BanTimes[time_ban[id]-1],reasons[id])
else
Stock_Add_Ban(id,Player_Ban[id],num,time_bans[id],reasons[id])
}
}
else if(num == 5)
{
new player_ip[23]
get_user_ip(Player_Ban[id], player_ip, 22,1)
replace_all(player_ip,22,"."," ")
new okteta1[4],okteta2[4],okteta3[4],okteta4[4]
parse(player_ip,okteta1,charsmax(okteta1),okteta2,charsmax(okteta2),okteta3,char
smax(okteta3),okteta4,charsmax(okteta4))
new n0[23], n1[23], n2[23], n3[23]

format(n0, 22, "%s.%s.%s.%s", okteta1, okteta2,okteta3,okteta4)
format(n1, 22, "%s.%s.%s.0", okteta1, okteta2,okteta3)
format(n2, 22, "%s.%s.0.0", okteta1, okteta2)
format(n3, 22, "%s.0.0.0", okteta1)

new name[33];
new authid[33];
get_user_name(id,name,32)
get_user_authid(id,authid,32)

new names[33];
get_user_name(Player_Ban[id],names,32)

BanToFile(names,n0,"",0,"Permament",name,authid)
BanToFile(names,n1,"",0,"Permament",name,authid)
BanToFile(names,n2,"",0,"Permament",name,authid)
BanToFile(names,n3,"",0,"Permament",name,authid)

Print_Color(0, "^3Admin^1 %s block subnet for player %s [^4%s^1]",name,names,n0)
console_print(id, "^3Admin^1 %s block subnet for player %s [^4%s^1]",name,names,n0)
console_print(id, "^3Admin^1 %s block subnet for player %s [^4%s^1]",name,names,n1)
console_print(id, "^3Admin^1 %s block subnet for player %s [^4%s^1]",name,names,n2)
console_print(id, "^3Admin^1 %s block subnet for player %s [^4%s^1]",name,names,n3)

set_task(Float:get_pcvar_float(g_Delay), "Disconnected", Player_Ban[id]);

}

menu_destroy(menu)
return PLUGIN_HANDLED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: