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

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

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

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

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

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

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

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

Плагин грузит сервер.

Статус пользователя TyTuKeT
сообщение 11.9.2017, 13:30
Сообщение #1


Стаж: 9 лет
Город: Чита

Сообщений: 74
Благодарностей: 4
Полезность: 41

Всем доброго времени суток, есть три плагина, один или все сильно грузят сервер что тот уходит в рестарт без ошибок просто падение и все. Прошу помощи экспертов взглянуть на код и высказать мнение.
Вип за топ
Код:

#include <amxmodx>
#include <amxmisc>
#include <csx>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>

#define print_team_default DontChange
#define print_team_default Grey
#define print_team_red Red
#define print_team_blue Blue
#endif

#define PLUGIN "TOP VIP (Auto Set)"
#define VERSION "1.0a"
#define AUTHOR "Leo_[BH]"

new g_Flags_Vip, g_Top_Num
new g_Chat_Enable, g_Hud_Enable, g_Sound_Enable

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

g_Flags_Vip = register_cvar("amx_top_vip_access", "t")
g_Top_Num = register_cvar("amx_top_vip_players", "3")

g_Chat_Enable = register_cvar("amx_top_vip_chat_msg", "1")
g_Hud_Enable = register_cvar("amx_top_vip_hud_msg", "1")
g_Sound_Enable = register_cvar("amx_top_vip_sound", "1")

register_cvar("amx_top_vip_task", "15.0")

register_clcmd("say /rank", "CmdRank");

register_event("HLTV", "event_round_start", "a", "1=0", "2=0")

return PLUGIN_CONTINUE;
}

public plugin_cfg(){
new configsdir[128]
get_localinfo("amxx_configsdir", configsdir, 127)
return server_cmd("exec %s/top_vip.cfg", configsdir)
}

public client_putinserver(id)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id) || is_user_steam(id))
{
return PLUGIN_CONTINUE;
}

new Float:g_szSetTime = get_cvar_float("amx_top_vip_task")
set_task(g_szSetTime, "csx_check", id)
}

public csx_check(id)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

// client_print(id,print_console,"[ Cs-Chita.Tk ] Rank: %d", irank)

if ( (irank <= get_pcvar_num(g_Top_Num)) )
{
set_vip(id)
}

return PLUGIN_CONTINUE;
}

public set_vip(id)
{
// SET VIP ACCESS!!!
new g_szFlagsVip[64]
get_pcvar_string( g_Flags_Vip, g_szFlagsVip, 63 );

new r_flag_z, flags_vip;

r_flag_z = read_flags("z");
remove_user_flags(id,r_flag_z);

flags_vip = read_flags(g_szFlagsVip);
set_user_flags(id,flags_vip);

// Info VIP Set
new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

if(get_pcvar_num(g_Chat_Enable))
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3Вы награждены ^4VIP-Привилегиями ^3за ^4%d-ое ^3место в топе сервера!", irank)
}

if(get_pcvar_num(g_Hud_Enable))
{
set_dhudmessage(0, 200, 0, -1.0, 0.28, 2, 6.0, 2.5, 0.05, 1.5);
show_dhudmessage(id, "Вы награждены VIP-Привилегиями ^nЗа %d-ое место в топе сервера!", irank);
}

if(get_pcvar_num(g_Sound_Enable))
{
client_cmd(id, "spk doop")
}

return PLUGIN_CONTINUE;
}

public event_round_start()
{
new id
for(id = 1; id <= 32; id++)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

// client_print(id,print_console,"[Cs-Chita.Tk] Rank: %d", irank)

if ( (irank <= get_pcvar_num(g_Top_Num)) )
{
set_vip(id)
}
}
return PLUGIN_CONTINUE;
}

public CmdRank(id)
{
new topnum = get_pcvar_num(g_Top_Num)

if(get_pcvar_num(g_Hud_Enable))
{
set_dhudmessage(0, 200, 0, -1.0, 0.28, 2, 6.0, 2.5, 0.05, 1.5);

if(topnum == 1)
{
show_dhudmessage(id, "За первое место:^n VIP Выдается автоматически!");
}
else if(topnum <= 4)
{
show_dhudmessage(id, "За первые %d места:^n VIP Выдается автоматически!", topnum);
}
else{
show_dhudmessage(id, "За первые %d мест:^n VIP Выдается автоматически!", topnum);
}
}

if(get_pcvar_num(g_Chat_Enable))
{
if(topnum == 1)
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первое^4 %d ^3мест: ^4VIP бесплатно!")
}
else if(topnum <= 4)
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первые^4 %d ^3места: ^4VIP бесплатно!", topnum)
}
else{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первые^4 %d ^3мест: ^4VIP бесплатно!", topnum)
}
}

return PLUGIN_CONTINUE;
}

stock bool:is_user_steam( id )
{
static dp_pointer;

if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

return false;
}


Автоматическая выдача вип стим игрокам
Код:

#include <amxmodx>
#include <amxmisc>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue
#endif

#define PLUGIN "Auto VIP [STEAM]"
#define VERSION "1.1"
#define AUTHOR "ArtHa"

new bool:steam[33];
new vipaccess[32];
new defaccess[32];

new check_time, amx_vip_access, amx_default_access, steam_check;

new const PREFIX[] = "^1[^4 CS-Chita.Tk ^1]";

public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR )
register_dictionary( "auto_steam_vip.txt" )

check_time = register_cvar( "amx_check_after", "10.0" )
amx_vip_access = register_cvar( "amx_vip_access", "bit" )
amx_default_access = register_cvar( "amx_default_access", "z" )
steam_check = register_cvar( "amx_steam_check", "1" )

register_clcmd("say", "handle_say")
}

public plugin_cfg( )
{
new cfgdir[ 32 ]
get_configsdir( cfgdir, charsmax( cfgdir ) )

server_cmd( "exec %s/auto_steam_vip.cfg", cfgdir )
}

public client_putinserver( id )
{
set_task( get_pcvar_float( check_time ), "check_access", id )
}

public check_access( id )
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

steam[ id ] = ( is_user_steam( id ) )

get_pcvar_string( amx_vip_access, vipaccess, 31 )
get_pcvar_string( amx_default_access, defaccess, 31 )

new defaccess2 = read_flags( defaccess )
new vipaccess2 = read_flags( vipaccess )

static szName[32];
get_user_name(id, szName, charsmax(szName));

if( steam[ id ] )
{
if ( defaccess2 )
{
remove_user_flags( id, defaccess2 )
set_user_flags( id, vipaccess2 )

set_dhudmessage(random(255), random(255), random(255), -1.0, 0.3, 0, 0.0, 5.0);
show_dhudmessage(id, "Привет, %s!^nУ тебя Steam!^nТы получаешь VIP!", szName);
client_print_color( id, print_team_default, "%L", id, "GIVE_VIP", PREFIX )
client_print_color( id, print_team_default, "%L", id, "GOOD_LUCK", PREFIX )
}
else {
show_dhudmessage(id, "Привет, %s!^nИграй со Steam и получи VIP!", szName);
}
}
}

public handle_say( id )
{
new said[192]
read_args( said,192 )

if( get_pcvar_num( steam_check ) == 1 )
{
if( containi(said, "/steam") != -1 )
show_users( id )
}

return PLUGIN_CONTINUE
}

public show_users( user )
{
new steamnames[32][33]
new message[256]
new id, count, x, len

new players[32], playersnum
get_players( players, playersnum, "ch" )
for( --playersnum; playersnum >= 0; playersnum-- )
{
id = players[playersnum]

if( steam[ id ] )
{
get_user_name( id, steamnames[count++], charsmax(steamnames[]) )
}
}

len = formatex(message, charsmax(message), "%L", user, "STEAM_ONLINE" )
if( count > 0 )
{
for( x = 0 ; x < count ; x++ )
{
len += formatex(message[len], charsmax(message)-len, "^4 %s%s", steamnames[x], x < (count-1) ? ", ":"." )
if( len > 96 )
{
client_print_color( print_team_default, user, message )
len = format( message, 255, "" )
}
}
client_print_color( print_team_default, user, message )
}
else
{
len += format( message[len], 255-len, "^4 %L", user, "STEAM_OFFLINE" )
client_print_color( print_team_default, user, message )
}
}

stock bool:is_user_steam( id )
{
static dp_pointer;

if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

return false;
}

вип меню
Код:

#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <fun>

#include <fakemeta>

#include <fakemeta_util>

#include <engine>

#include <hamsandwich>

#define VIP_ACCESS ADMIN_LEVEL_H

#define DAMAGE_RECIEVED



#define PLUGIN "vips"

#define VERSION "0.1"

#define AUTHOR "tatarstan"
#define INUM1 1
new iNum[33], iNum2[33]



const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};

new vip_damage, g_HudSync, g_roundCount, g_HudSync2, OnOffDamage[33], bool:Damage[33]
new g_StartTime
new bool:g_iBlockPlugin

public plugin_init()

{

register_plugin(PLUGIN, VERSION, AUTHOR)



register_event("ResetHUD", "ResetHUD", "be")

register_event("Damage", "eventDamage", "b", "2!0", "3=0", "4!0")

register_logevent("round_end", 2, "1=Round_End")

register_event("HLTV", "logevent_round_start", "a", "1=0", "2=0")

register_clcmd("say /vipmenu", "Menu")

register_clcmd("say_team /vipmenu", "Menu")

register_clcmd("vipmenu", "Menu");

register_clcmd("damage", "ClCmdDamage");

vip_damage = register_cvar("vip_damage", "1");

g_HudSync = CreateHudSyncObj()

new iMap_Name[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
get_mapname(iMap_Name, charsmax(iMap_Name))
for(new i; i < sizeof iMap_Prefix; i++)
{
if(containi(iMap_Name, iMap_Prefix[i]) != -1)
g_iBlockPlugin = true
}

#if defined DAMAGE_RECIEVED

g_HudSync2 = CreateHudSyncObj()

#endif

}



public Event_GameRestart()

g_roundCount = 1



public round_end()

g_roundCount++



public client_putinserver(id)

{

if(get_user_flags(id) & ADMIN_IMMUNITY)

set_task(0.1, "adminconnect", id)


OnOffDamage[id] = true

if(get_user_flags(id) & ADMIN_LEVEL_B)

set_task(0.1, "vipconnect", id)

}



public adminconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[Админ] ^3присоединился - ^4%s^1", name)

}

public vipconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[VIP] ^3присоединился - ^4%s^1", name)

}


public logevent_round_start()
{
g_StartTime = get_systime()

new iPlayers[32], iNums
get_players(iPlayers, iNums) // Получаем игроков
for(new i; i < iNums; i++)
{
iNum[iPlayers[i]] = INUM1 // Устанавливаем число.
iNum2[iPlayers[i]] = INUM1
}
}



public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910)
}


public VIP(TaskID)

{

new id = TaskID - 6910

if(is_user_admin(id))

{

if(is_user_alive(id))

{

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))

write_byte(id)

write_byte(4)

message_end()

give_item(id,"item_assaultsuit")

give_item(id,"item_thighpack")

// Проверяем на все пистолеты

for (new i = 0; i < 6; i++)

{

// Если у игрока есть пистолет с заданным индексом...

if (user_has_weapon(id, pistols[i]))

{

// ...забираем его

fm_strip_user_gun(id, pistols[i]);

// Так как у игрока не может быть больше

// одного пистолета выходим из цикла

break;

}

}

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Выдача ^4Deagle ^3и гранат запрещена на этой карте!");
return PLUGIN_HANDLED
}

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

give_item(id,"weapon_hegrenade")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_smokegrenade")

}
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED

}



public eventDamage(id)
{
new attacker = get_user_attacker(id)
new damage = read_data(2)
if(get_pcvar_num(vip_damage))
{
if(is_user_connected(attacker) && is_user_connected(id))
{

if(get_user_flags(attacker) & VIP_ACCESS && OnOffDamage[attacker])
{
set_hudmessage(0, 100, 200, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
if(get_user_flags(id) & VIP_ACCESS && OnOffDamage[id])
{
set_hudmessage(255, 0, 0, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(id, g_HudSync2, "%i", damage)
}
}
}
}



public Menu(id)

{

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню недоступно на этой карте!");
return PLUGIN_HANDLED
}

if(get_systime() - g_StartTime > 30)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Брать оружие можно только в течении^4 30 секунд ^3от начала раунда!")
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню доступно только живым!")
return PLUGIN_HANDLED
}

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

new msg[222], name[32]

get_user_name(id, name, 31)

formatex(msg, charsmax(msg), "\rВ\wип меню \d[\r[CS-Chita.Tk]\d]^n\rИ\wмя игрока: \d%s", name)

new menu = menu_create(msg, "menu_handler")



menu_additem(menu, "\wВзять \r[\yDeagle\r] \wс \r1-го \wраунда", "1", 0)

menu_additem(menu, "\wВзять \r[\yAK-47\r] \wс \r3-го \wраунда", "2", 0)

menu_additem(menu, "\wВзять \r[\yM4a1\r] \wс \r3-го \wраунда", "3", 0)

menu_additem(menu, "\wВзять \r[\yAWP\r] \wс \r4-го \wраунда", "4", 0)

menu_additem(menu, "\wВзять \r[\yFAMAS\r] \wсо \r2-го \wраунда", "5", 0)



if(Damage[id] == true)

menu_additem(menu,"\wДамагер: \rВыключен", "6", 0)

else

menu_additem(menu,"\wДамагер: \yВключен", "6", 0)


menu_setprop(menu, MPROP_EXITNAME, "\yВыход")

menu_display(id, menu, 0)

}

else nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы не покупали VIP права ^4say /vipka")



return PLUGIN_HANDLED

}



public menu_handler(id, menu, item)

{

if(item == MENU_EXIT)

{

menu_destroy(menu)

return PLUGIN_HANDLED

}

new data[6], iName[64], name[32]

new access, callback

get_user_name(id, name, 31)

menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)

new key = str_to_num(data)

switch(key)

{

case 1:

{

if(is_user_alive(id))

{

if(iNum2[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Подождите... ^4deagle ^1используется^4 1 ^3раз за раунд.") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 2)

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

nChatPrint(id, "^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4deagle", name)

iNum2[id]--

}

}



case 2:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_ak47")

cs_set_user_bpammo(id, CSW_AK47, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AK-47", name)

iNum[id]-- //

}



case 3:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_m4a1")

cs_set_user_bpammo(id, CSW_M4A1, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4m4a1", name)

iNum[id]-- //

}



case 4:

{

if(g_roundCount < 4)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 4 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_awp")

cs_set_user_bpammo(id, CSW_AWP, 30)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AWP", name)
iNum[id]-- //

}



case 5:

{

if(g_roundCount < 2)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 2 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_famas")

cs_set_user_bpammo(id, CSW_FAMAS, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4FAMAS", name)

iNum[id]-- //

}



case 6:

{

switch(Damage[id])

{

case true:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 включил(а) ^4damage^3!", name)

Damage[id] = false

Menu(id)

}

case false:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 выключил(а) ^4damage^3!", name)

Damage[id] = true

Menu(id)

}

}

}

}

return PLUGIN_HANDLED

}



stock drop_weapons(id, dropwhat)

{

static weapons[32], num, i, weaponid

num = 0

get_user_weapons(id, weapons, num)



for (i = 0; i < num; i++)

{

weaponid = weapons[i]

if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

{

static wname[32]

get_weaponname(weaponid, wname, charsmax(wname))

engclient_cmd(id, "drop", wname)

}

}

}



stock nChatPrint(const id, const input[], any:...)

{

new nCount = 1, nNum[32]

static nMsgs[191]

vformat(nMsgs, 190, input, 3)

replace_all(nMsgs, 190, "!g", "^4")

replace_all(nMsgs, 190, "!n", "^1")

replace_all(nMsgs, 190, "!t", "^3")

if(id) nNum[0] = id; else get_players(nNum, nCount, "ch")

{

for(new i = 0; i < nCount; i++)

{

if(is_user_connected(nNum[i]))

{

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, nNum[i])

write_byte(nNum[i])

write_string(nMsgs)

message_end()

}

}

}

}



public ClCmdDamage(id)

{

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

if(OnOffDamage[id])

OnOffDamage[id] = false

else

OnOffDamage[id] = true

}

return 0

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Vasiok007
сообщение 11.9.2017, 15:17
Сообщение #2


Стаж: 15 лет
Город: Кишинев

Сообщений: 157
Благодарностей: 56
Полезность: 258

Попробуй так
Вип за топ
#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <dhudmessage>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue
#endif

#define PLUGIN "TOP VIP (Auto Set)"
#define VERSION "1.0a"
#define AUTHOR "Leo_[BH]"

new g_Flags_Vip, g_Top_Num
new g_Chat_Enable, g_Hud_Enable, g_Sound_Enable

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

g_Flags_Vip = register_cvar("amx_top_vip_access", "t")
g_Top_Num = register_cvar("amx_top_vip_players", "3")

g_Chat_Enable = register_cvar("amx_top_vip_chat_msg", "1")
g_Hud_Enable = register_cvar("amx_top_vip_hud_msg", "1")
g_Sound_Enable = register_cvar("amx_top_vip_sound", "1")

register_cvar("amx_top_vip_task", "15.0")

register_clcmd("say /rank", "CmdRank");

register_event("HLTV", "event_round_start", "a", "1=0", "2=0")

return PLUGIN_CONTINUE;
}

public plugin_cfg(){
new configsdir[128]
get_localinfo("amxx_configsdir", configsdir, 127)
return server_cmd("exec %s/top_vip.cfg", configsdir)
}

public client_putinserver(id)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id) || is_user_steam(id))
{
return PLUGIN_CONTINUE;
}

new Float:g_szSetTime = get_cvar_float("amx_top_vip_task")
set_task(g_szSetTime, "csx_check", id)

return PLUGIN_CONTINUE;
}

public csx_check(id)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

// client_print(id,print_console,"[ Cs-Chita.Tk ] Rank: %d", irank)

if ( (irank <= get_pcvar_num(g_Top_Num)) )
{
set_vip(id)
}

return PLUGIN_CONTINUE;
}

public set_vip(id)
{
// SET VIP ACCESS!!!
new g_szFlagsVip[64]
get_pcvar_string( g_Flags_Vip, g_szFlagsVip, 63 );

new r_flag_z, flags_vip;

r_flag_z = read_flags("z");
remove_user_flags(id,r_flag_z);

flags_vip = read_flags(g_szFlagsVip);
set_user_flags(id,flags_vip);

// Info VIP Set
new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

if(get_pcvar_num(g_Chat_Enable))
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3Вы награждены ^4VIP-Привилегиями ^3за ^4%d-ое ^3место в топе сервера!", irank)
}

if(get_pcvar_num(g_Hud_Enable))
{
set_dhudmessage(0, 200, 0, -1.0, 0.28, 2, 6.0, 2.5, 0.05, 1.5);
show_dhudmessage(id, "Вы награждены VIP-Привилегиями ^nЗа %d-ое место в топе сервера!", irank);
}

if(get_pcvar_num(g_Sound_Enable))
{
client_cmd(id, "spk doop")
}

return PLUGIN_CONTINUE;
}

public event_round_start()
{
new id
for(id = 1; id <= 32; id++)
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

// client_print(id,print_console,"[Cs-Chita.Tk] Rank: %d", irank)

if ( (irank <= get_pcvar_num(g_Top_Num)) )
{
set_vip(id)
}
}
return PLUGIN_CONTINUE;
}

public CmdRank(id)
{
new topnum = get_pcvar_num(g_Top_Num)

if(get_pcvar_num(g_Hud_Enable))
{
set_dhudmessage(0, 200, 0, -1.0, 0.28, 2, 6.0, 2.5, 0.05, 1.5);

if(topnum == 1)
{
show_dhudmessage(id, "За первое место:^n VIP Выдается автоматически!");
}
else if(topnum <= 4)
{
show_dhudmessage(id, "За первые %d места:^n VIP Выдается автоматически!", topnum);
}
else{
show_dhudmessage(id, "За первые %d мест:^n VIP Выдается автоматически!", topnum);
}
}

if(get_pcvar_num(g_Chat_Enable))
{
if(topnum == 1)
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первое^4 %d ^3мест: ^4VIP бесплатно!")
}
else if(topnum <= 4)
{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первые^4 %d ^3места: ^4VIP бесплатно!", topnum)
}
else{
client_print_color ( id, print_team_default, "^1[^4 CS-Chita.Tk ^1] ^3За первые^4 %d ^3мест: ^4VIP бесплатно!", topnum)
}
}

return PLUGIN_CONTINUE;
}

stock bool:is_user_steam( id )
{
static dp_pointer;

if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

return false;
}


Автоматическая выдача вип стим игрокам
#include <amxmodx>
#include <amxmisc>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#include <dhudmessage>

#define print_team_default DontChange
#define print_team_grey Grey
#define print_team_red Red
#define print_team_blue Blue
#endif

#define PLUGIN "Auto VIP [STEAM]"
#define VERSION "1.1"
#define AUTHOR "ArtHa"

new bool:steam[33];
new vipaccess[32];
new defaccess[32];

new check_time, amx_vip_access, amx_default_access, steam_check;

new const PREFIX[] = "^1[^4 CS-Chita.Tk ^1]";

public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR )
register_dictionary( "auto_steam_vip.txt" )

check_time = register_cvar( "amx_check_after", "10.0" )
amx_vip_access = register_cvar( "amx_vip_access", "bit" )
amx_default_access = register_cvar( "amx_default_access", "z" )
steam_check = register_cvar( "amx_steam_check", "1" )

register_clcmd("say", "handle_say")
}

public plugin_cfg( )
{
new cfgdir[ 32 ]
get_configsdir( cfgdir, charsmax( cfgdir ) )

server_cmd( "exec %s/auto_steam_vip.cfg", cfgdir )
}

public client_putinserver( id )
{
set_task( get_pcvar_float( check_time ), "check_access", id )
}

public check_access( id )
{
if(!is_user_connected(id) || is_user_admin(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE;
}

steam[ id ] = ( is_user_steam( id ) )

get_pcvar_string( amx_vip_access, vipaccess, 31 )
get_pcvar_string( amx_default_access, defaccess, 31 )

new defaccess2 = read_flags( defaccess )
new vipaccess2 = read_flags( vipaccess )

static szName[32];
get_user_name(id, szName, charsmax(szName));

if( steam[ id ] )
{
if ( defaccess2 )
{
remove_user_flags( id, defaccess2 )
set_user_flags( id, vipaccess2 )

set_dhudmessage(random(255), random(255), random(255), -1.0, 0.3, 0, 0.0, 5.0);
show_dhudmessage(id, "Привет, %s!^nУ тебя Steam!^nТы получаешь VIP!", szName);
client_print_color( id, print_team_default, "%L", id, "GIVE_VIP", PREFIX )
client_print_color( id, print_team_default, "%L", id, "GOOD_LUCK", PREFIX )
}
else {
show_dhudmessage(id, "Привет, %s!^nИграй со Steam и получи VIP!", szName);
}
}
return PLUGIN_CONTINUE
}

public handle_say( id )
{
new said[192]
read_args( said,192 )

if( get_pcvar_num( steam_check ) == 1 )
{
if( containi(said, "/steam") != -1 )
show_users( id )
}

return PLUGIN_CONTINUE
}

public show_users( user )
{
new steamnames[32][33]
new message[256]
new id, count, x, len

new players[32], playersnum
get_players( players, playersnum, "ch" )
for( --playersnum; playersnum >= 0; playersnum-- )
{
id = players[playersnum]

if( steam[ id ] )
{
get_user_name( id, steamnames[count++], charsmax(steamnames[]) )
}
}

len = formatex(message, charsmax(message), "%L", user, "STEAM_ONLINE" )
if( count > 0 )
{
for( x = 0 ; x < count ; x++ )
{
len += formatex(message[len], charsmax(message)-len, "^4 %s%s", steamnames[x], x < (count-1) ? ", ":"." )
if( len > 96 )
{
client_print_color( print_team_default, user, message )
len = format( message, 255, "" )
}
}
client_print_color( print_team_default, user, message )
}
else
{
len += format( message[len], 255-len, "^4 %L", user, "STEAM_OFFLINE" )
client_print_color( print_team_default, user, message )
}
}

stock bool:is_user_steam( id )
{
static dp_pointer;

if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}

return false;
}


вип меню
#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <fun>

#include <fakemeta>

#include <fakemeta_util>

#include <engine>

#include <hamsandwich>

#define VIP_ACCESS ADMIN_LEVEL_H

#define DAMAGE_RECIEVED



#define PLUGIN "vips"

#define VERSION "0.1"

#define AUTHOR "tatarstan"
#define INUM1 1
new iNum[33], iNum2[33]



const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};

new vip_damage, g_HudSync, g_roundCount, g_HudSync2, OnOffDamage[33], bool:Damage[33]
new g_StartTime
new bool:g_iBlockPlugin

public plugin_init()

{

register_plugin(PLUGIN, VERSION, AUTHOR)



register_event("ResetHUD", "ResetHUD", "be")

register_event("Damage", "eventDamage", "b", "2!0", "3=0", "4!0")

register_logevent("round_end", 2, "1=Round_End")

register_event("HLTV", "logevent_round_start", "a", "1=0", "2=0")

register_clcmd("say /vipmenu", "Menu")

register_clcmd("say_team /vipmenu", "Menu")

register_clcmd("vipmenu", "Menu");

register_clcmd("damage", "ClCmdDamage");

vip_damage = register_cvar("vip_damage", "1");

g_HudSync = CreateHudSyncObj()

new iMap_Name[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
get_mapname(iMap_Name, charsmax(iMap_Name))
for(new i; i < sizeof iMap_Prefix; i++)
{
if(containi(iMap_Name, iMap_Prefix[i]) != -1)
g_iBlockPlugin = true
}

#if defined DAMAGE_RECIEVED

g_HudSync2 = CreateHudSyncObj()

#endif

}



public Event_GameRestart()

g_roundCount = 1



public round_end()

g_roundCount++



public client_putinserver(id)

{

if(get_user_flags(id) & ADMIN_IMMUNITY)

set_task(0.1, "adminconnect", id)


OnOffDamage[id] = true

if(get_user_flags(id) & ADMIN_LEVEL_B)

set_task(0.1, "vipconnect", id)

}



public adminconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[Админ] ^3присоединился - ^4%s^1", name)

}

public vipconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[VIP] ^3присоединился - ^4%s^1", name)

}


public logevent_round_start()
{
g_StartTime = get_systime()

new iPlayers[32], iNums
get_players(iPlayers, iNums) // Получаем игроков
for(new i; i < iNums; i++)
{
iNum[iPlayers[i]] = INUM1 // Устанавливаем число.
iNum2[iPlayers[i]] = INUM1
}
}



public ResetHUD(id)
{
set_task(0.5, "VIP", id + 6910)
}


public VIP(TaskID)

{

new id = TaskID - 6910

if(is_user_admin(id))

{

if(is_user_alive(id))

{

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))

write_byte(id)

write_byte(4)

message_end()

give_item(id,"item_assaultsuit")

give_item(id,"item_thighpack")

// Проверяем на все пистолеты

for (new i = 0; i < 6; i++)

{

// Если у игрока есть пистолет с заданным индексом...

if (user_has_weapon(id, pistols[i]))

{

// ...забираем его

fm_strip_user_gun(id, pistols[i]);

// Так как у игрока не может быть больше

// одного пистолета выходим из цикла

break;

}

}

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Выдача ^4Deagle ^3и гранат запрещена на этой карте!");
return PLUGIN_HANDLED
}

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

give_item(id,"weapon_hegrenade")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_smokegrenade")

}
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED

}



public eventDamage(id)
{
new attacker = get_user_attacker(id)
new damage = read_data(2)
if(get_pcvar_num(vip_damage))
{
if(is_user_connected(attacker) && is_user_connected(id))
{

if(get_user_flags(attacker) & VIP_ACCESS && OnOffDamage[attacker])
{
set_hudmessage(0, 100, 200, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
if(get_user_flags(id) & VIP_ACCESS && OnOffDamage[id])
{
set_hudmessage(255, 0, 0, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(id, g_HudSync2, "%i", damage)
}
}
}
}



public Menu(id)

{

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню недоступно на этой карте!");
return PLUGIN_HANDLED
}

if(get_systime() - g_StartTime > 30)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Брать оружие можно только в течении^4 30 секунд ^3от начала раунда!")
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню доступно только живым!")
return PLUGIN_HANDLED
}

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

new msg[222], name[32]

get_user_name(id, name, 31)

formatex(msg, charsmax(msg), "\rВ\wип меню \d[\r[CS-Chita.Tk]\d]^n\rИ\wмя игрока: \d%s", name)

new menu = menu_create(msg, "menu_handler")



menu_additem(menu, "\wВзять \r[\yDeagle\r] \wс \r1-го \wраунда", "1", 0)

menu_additem(menu, "\wВзять \r[\yAK-47\r] \wс \r3-го \wраунда", "2", 0)

menu_additem(menu, "\wВзять \r[\yM4a1\r] \wс \r3-го \wраунда", "3", 0)

menu_additem(menu, "\wВзять \r[\yAWP\r] \wс \r4-го \wраунда", "4", 0)

menu_additem(menu, "\wВзять \r[\yFAMAS\r] \wсо \r2-го \wраунда", "5", 0)



if(Damage[id] == true)

menu_additem(menu,"\wДамагер: \rВыключен", "6", 0)

else

menu_additem(menu,"\wДамагер: \yВключен", "6", 0)


menu_setprop(menu, MPROP_EXITNAME, "\yВыход")

menu_display(id, menu, 0)

}

else nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы не покупали VIP права ^4say /vipka")



return PLUGIN_HANDLED

}



public menu_handler(id, menu, item)

{

if(item == MENU_EXIT)

{

menu_destroy(menu)

return PLUGIN_HANDLED

}

new data[6], iName[64], name[32]

new access, callback

get_user_name(id, name, 31)

menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)

new key = str_to_num(data)

switch(key)

{

case 1:

{

if(is_user_alive(id))

{

if(iNum2[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Подождите... ^4deagle ^1используется^4 1 ^3раз за раунд.") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 2)

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

nChatPrint(id, "^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4deagle", name)

iNum2[id]--

}

}



case 2:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_ak47")

cs_set_user_bpammo(id, CSW_AK47, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AK-47", name)

iNum[id]-- //

}



case 3:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_m4a1")

cs_set_user_bpammo(id, CSW_M4A1, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4m4a1", name)

iNum[id]-- //

}



case 4:

{

if(g_roundCount < 4)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 4 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_awp")

cs_set_user_bpammo(id, CSW_AWP, 30)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AWP", name)
iNum[id]-- //

}



case 5:

{

if(g_roundCount < 2)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 2 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_famas")

cs_set_user_bpammo(id, CSW_FAMAS, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4FAMAS", name)

iNum[id]-- //

}



case 6:

{

switch(Damage[id])

{

case true:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 включил(а) ^4damage^3!", name)

Damage[id] = false

Menu(id)

}

case false:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 выключил(а) ^4damage^3!", name)

Damage[id] = true

Menu(id)

}

}

}

}

return PLUGIN_HANDLED

}



stock drop_weapons(id, dropwhat)

{

static weapons[32], num, i, weaponid

num = 0

get_user_weapons(id, weapons, num)



for (i = 0; i < num; i++)

{

weaponid = weapons[i]

if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

{

static wname[32]

get_weaponname(weaponid, wname, charsmax(wname))

engclient_cmd(id, "drop", wname)

}

}

}



stock nChatPrint(const id, const input[], any:...)

{

new nCount = 1, nNum[32]

static nMsgs[191]

vformat(nMsgs, 190, input, 3)

replace_all(nMsgs, 190, "!g", "^4")

replace_all(nMsgs, 190, "!n", "^1")

replace_all(nMsgs, 190, "!t", "^3")

if(id) nNum[0] = id; else get_players(nNum, nCount, "ch")

{

for(new i = 0; i < nCount; i++)

{

if(is_user_connected(nNum[i]))

{

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, nNum[i])

write_byte(nNum[i])

write_string(nMsgs)

message_end()

}

}

}

}



public ClCmdDamage(id)

{

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

if(OnOffDamage[id])

OnOffDamage[id] = false

else

OnOffDamage[id] = true

}

return 0

}


Мир всем местным
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 11.9.2017, 19:14
Сообщение #3


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

вип меню
а что будет если подключиться к серверу с vip/админкой, заспавниться, выкинуть все оружие и гранаты и прописать в консоли клиента fullupdate и record demo несколько раз?

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TyTuKeT
сообщение 12.9.2017, 6:11
Сообщение #4


Стаж: 9 лет
Город: Чита

Сообщений: 74
Благодарностей: 4
Полезность: 41

Legenda, fullupdate выдает заново все можно бегать с бесконечными гранатами) record demo пишет Already recording. Випку переделал через Ham_Spawn выдает 1 раз.
Vasiok007, по моему только ошибок не стало при компиляций) Разницы не заметил, или чего то не понимаю.
Из-за этого плагина может сервак падать?

Отредактировал: TyTuKeT, - 12.9.2017, 8:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Vasiok007
сообщение 12.9.2017, 10:59
Сообщение #5


Стаж: 15 лет
Город: Кишинев

Сообщений: 157
Благодарностей: 56
Полезность: 258

TyTuKeT, Предполагаю что проблема в вип меню. Какие-то странные манипуляции с выдачей оружия в начале раунда и отлов начала раунда через Reset HUD не очень хорошо.


Мир всем местным
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TyTuKeT
сообщение 12.9.2017, 14:24
Сообщение #6


Стаж: 9 лет
Город: Чита

Сообщений: 74
Благодарностей: 4
Полезность: 41

К сожалению это были не они, сервер все равно падает периодически. Вспомнил про еще один плагин чата лайт транслит с префиксами вот туда добавлял стим нон стим пристаки и топ игрок или ранг показывает, может чего то лишнего и накидал в него. Просьба взглянуть на код.
Vasiok007, единственное на что хватило моих познаний это прикрутить Ham_Spawn. Манипуляций с пистолетом проще не нашел осталось прежней. Теперь так работает.
випменю
Код:

#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <fun>

#include <fakemeta>

#include <fakemeta_util>

#include <engine>

#include <hamsandwich>

#define VIP_ACCESS ADMIN_LEVEL_H

#define DAMAGE_RECIEVED



#define PLUGIN "vips"

#define VERSION "0.1"

#define AUTHOR "tatarstan"
#define INUM1 1
new iNum[33], iNum2[33]



const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_GALIL, CSW_USP, CSW_GLOCK18};

new vip_damage, g_HudSync, g_roundCount, g_HudSync2, OnOffDamage[33], bool:Damage[33]
new g_StartTime
new bool:g_iBlockPlugin

public plugin_init()

{

register_plugin(PLUGIN, VERSION, AUTHOR)



RegisterHam(Ham_Spawn,"player","item_all")

register_event("Damage", "eventDamage", "b", "2!0", "3=0", "4!0")

register_logevent("round_end", 2, "1=Round_End")

register_event("HLTV", "logevent_round_start", "a", "1=0", "2=0")

register_clcmd("say /vipmenu", "Menu")

register_clcmd("say_team /vipmenu", "Menu")

register_clcmd("vipmenu", "Menu");

register_clcmd("damage", "ClCmdDamage");

vip_damage = register_cvar("vip_damage", "1");

g_HudSync = CreateHudSyncObj()

new iMap_Name[32], iMap_Prefix[][] = { "awp_", "aim_", "35hp", "fy_" };
get_mapname(iMap_Name, charsmax(iMap_Name))
for(new i; i < sizeof iMap_Prefix; i++)
{
if(containi(iMap_Name, iMap_Prefix[i]) != -1)
g_iBlockPlugin = true
}

#if defined DAMAGE_RECIEVED

g_HudSync2 = CreateHudSyncObj()

#endif

}



public Event_GameRestart()

g_roundCount = 1



public round_end()

g_roundCount++



public client_putinserver(id)

{

if(get_user_flags(id) & ADMIN_IMMUNITY)

set_task(0.1, "adminconnect", id)


OnOffDamage[id] = true

if(get_user_flags(id) & ADMIN_LEVEL_B)

set_task(0.1, "vipconnect", id)

}



public adminconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[Админ] ^3присоединился - ^4%s^1", name)

}

public vipconnect(id)

{

new name[32]

get_user_name(id, name, 31)

nChatPrint(0, "^1[^4 CS-Chita.Tk ^1] ^4[VIP] ^3присоединился - ^4%s^1", name)

}


public logevent_round_start()
{
g_StartTime = get_systime()

new iPlayers[32], iNums
get_players(iPlayers, iNums) // Получаем игроков
for(new i; i < iNums; i++)
{
iNum[iPlayers[i]] = INUM1 // Устанавливаем число.
iNum2[iPlayers[i]] = INUM1
}
}



public item_all(id)
{
set_task(0.5, "VIP", id + 6910)
}


public VIP(TaskID)

{

new id = TaskID - 6910

if(is_user_admin(id))

{

if(is_user_alive(id))

{

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))

write_byte(id)

write_byte(4)

message_end()

give_item(id,"item_assaultsuit")

give_item(id,"item_thighpack")

// Проверяем на все пистолеты

for (new i = 0; i < 6; i++)

{

// Если у игрока есть пистолет с заданным индексом...

if (user_has_weapon(id, pistols[i]))

{

// ...забираем его

fm_strip_user_gun(id, pistols[i]);

// Так как у игрока не может быть больше

// одного пистолета выходим из цикла

break;

}

}

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Выдача ^4Deagle ^3и гранат запрещена на этой карте!");
return PLUGIN_HANDLED
}

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

give_item(id,"weapon_hegrenade")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_flashbang")

give_item(id,"weapon_smokegrenade")

}
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED

}



public eventDamage(id)
{
new attacker = get_user_attacker(id)
new damage = read_data(2)
if(get_pcvar_num(vip_damage))
{
if(is_user_connected(attacker) && is_user_connected(id))
{

if(get_user_flags(attacker) & VIP_ACCESS && OnOffDamage[attacker])
{
set_hudmessage(0, 100, 200, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_HudSync, "%i", damage)
}
if(get_user_flags(id) & VIP_ACCESS && OnOffDamage[id])
{
set_hudmessage(255, 0, 0, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(id, g_HudSync2, "%i", damage)
}
}
}
}



public Menu(id)

{

if(g_iBlockPlugin)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню недоступно на этой карте!");
return PLUGIN_HANDLED
}

if(get_systime() - g_StartTime > 30)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Брать оружие можно только в течении^4 30 секунд ^3от начала раунда!")
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Оружейное меню доступно только живым!")
return PLUGIN_HANDLED
}

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

new msg[222], name[32]

get_user_name(id, name, 31)

formatex(msg, charsmax(msg), "\rВ\wип меню \d[\r[CS-Chita.Tk]\d]^n\rИ\wмя игрока: \d%s", name)

new menu = menu_create(msg, "menu_handler")



menu_additem(menu, "\wВзять \r[\yDeagle\r] \wс \r1-го \wраунда", "1", 0)

menu_additem(menu, "\wВзять \r[\yAK-47\r] \wс \r3-го \wраунда", "2", 0)

menu_additem(menu, "\wВзять \r[\yM4a1\r] \wс \r3-го \wраунда", "3", 0)

menu_additem(menu, "\wВзять \r[\yAWP\r] \wс \r4-го \wраунда", "4", 0)

menu_additem(menu, "\wВзять \r[\yFAMAS\r] \wсо \r2-го \wраунда", "5", 0)



if(Damage[id] == true)

menu_additem(menu,"\wДамагер: \rВыключен", "6", 0)

else

menu_additem(menu,"\wДамагер: \yВключен", "6", 0)


menu_setprop(menu, MPROP_EXITNAME, "\yВыход")

menu_display(id, menu, 0)

}

else nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы не покупали VIP права ^4say /vipka")



return PLUGIN_HANDLED

}



public menu_handler(id, menu, item)

{

if(item == MENU_EXIT)

{

menu_destroy(menu)

return PLUGIN_HANDLED

}

new data[6], iName[64], name[32]

new access, callback

get_user_name(id, name, 31)

menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)

new key = str_to_num(data)

switch(key)

{

case 1:

{

if(is_user_alive(id))

{

if(iNum2[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Подождите... ^4deagle ^1используется^4 1 ^3раз за раунд.") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 2)

give_item(id,"weapon_deagle")

cs_set_user_bpammo(id, CSW_DEAGLE, 35)

nChatPrint(id, "^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4deagle", name)

iNum2[id]--

}

}



case 2:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_ak47")

cs_set_user_bpammo(id, CSW_AK47, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AK-47", name)

iNum[id]-- //

}



case 3:

{

if(g_roundCount < 3)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 3 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_m4a1")

cs_set_user_bpammo(id, CSW_M4A1, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4m4a1", name)

iNum[id]-- //

}



case 4:

{

if(g_roundCount < 4)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 4 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_awp")

cs_set_user_bpammo(id, CSW_AWP, 30)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4AWP", name)
iNum[id]-- //

}



case 5:

{

if(g_roundCount < 2)

{

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Это оружие доступно с^4 2 ^3раунда")

return PLUGIN_HANDLED

}

if(iNum[id] <= 0)
{
nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Вы уже использовали. Подождите...") // выводим сообщение
return PLUGIN_CONTINUE
}

drop_weapons(id, 1)

give_item(id,"weapon_famas")

cs_set_user_bpammo(id, CSW_FAMAS, 90)

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты взял(а) ^4FAMAS", name)

iNum[id]-- //

}



case 6:

{

switch(Damage[id])

{

case true:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 включил(а) ^4damage^3!", name)

Damage[id] = false

Menu(id)

}

case false:

{

client_cmd(id, "damage")

nChatPrint(id,"^1[^4 CS-Chita.Tk ^1] ^3Ты ^4%s^3 выключил(а) ^4damage^3!", name)

Damage[id] = true

Menu(id)

}

}

}

}

return PLUGIN_HANDLED

}



stock drop_weapons(id, dropwhat)

{

static weapons[32], num, i, weaponid

num = 0

get_user_weapons(id, weapons, num)



for (i = 0; i < num; i++)

{

weaponid = weapons[i]

if((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

{

static wname[32]

get_weaponname(weaponid, wname, charsmax(wname))

engclient_cmd(id, "drop", wname)

}

}

}



stock nChatPrint(const id, const input[], any:...)

{

new nCount = 1, nNum[32]

static nMsgs[191]

vformat(nMsgs, 190, input, 3)

replace_all(nMsgs, 190, "!g", "^4")

replace_all(nMsgs, 190, "!n", "^1")

replace_all(nMsgs, 190, "!t", "^3")

if(id) nNum[0] = id; else get_players(nNum, nCount, "ch")

{

for(new i = 0; i < nCount; i++)

{

if(is_user_connected(nNum[i]))

{

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, nNum[i])

write_byte(nNum[i])

write_string(nMsgs)

message_end()

}

}

}

}



public ClCmdDamage(id)

{

if(get_user_flags(id) & ADMIN_LEVEL_H)

{

if(OnOffDamage[id])

OnOffDamage[id] = false

else

OnOffDamage[id] = true

}

return 0

}

плагин чата

Код:

// ********************************************************************************
*****//
// Плагин загружен с www.neugomon.ru //
// Автор: Neygomon [ https://neugomon.ru/members/1/ ] //
// Официальная тема поддержки: https://neugomon.ru/threads/70/ //
// При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! //
// ********************************************************************************
*****//

#include <amxmodx>
#include <csx>
#include <colorchat>
#include <fun>
/*
Спасибо PRoSToTeM@ за новый способ транслитерации
*/

#define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ]
#if defined TAGS
#define LT_PREFIXES // Свои префиксы. Файл addons/amxmodx/configs/lt_prefixes.ini [ По умолчанию выключен ]
#endif
#define STEAM // Тег стим игрока [ По умолчанию выключен ]
#define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ]
#define AES // Поддержка системы армейских званий - AES ( <a href="https://c-s.net.ua/forum/topic56564.html" target="_blank"></a> ) [ По умолчанию выключен ]
#define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ]
#define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
#define ADMIN ADMIN_BAN // Флаг доступа для тега "Админ" в чате
#define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате
#define ANTIFLOOD // Замена стандартного плагина antiflood.amxx [ По умолчанию выключен ]
#define AD_TIME 0.75 // Время между сообщениями, когда сработает антифлуд система
#define ADMIN_ALLCHAT // Показывать весь чат админам [ По умолчанию включен ]
//#define DEFAULT_CS_CHAT // Cтандартный чат кс [ По умолчанию выключен ]
//Живые общаются только с живыми, мертвые с мертвыми. Админ видит весь чат если ADMIN_ALLCHAT
#define TOPGAMER
#if defined AES
enum _:
{
AES_ST_EXP,
AES_ST_LEVEL,
AES_ST_BONUSES,
AES_ST_NEXTEXP,
AES_ST_END
};
native aes_get_player_stats(id, data[4]);
native aes_get_level_name(lvlnum, level[], len, idLang = 0);

public plugin_natives()
set_native_filter("native_filter");

public native_filter(const name[], index, trap)
return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
#endif

new const g_chConvert[94 * 2 char] =
{
0x2100D0AD, 0x2300D0B6, 0x25003F00, 0xD18D2800, 0x29002A00, 0x2B00D0B1, 0x2D00D18E, 0x2E003000,
0x31003200, 0x33003400, 0x35003600, 0x37003800, 0x3900D096, 0xD0B6D091, 0x3D00D0AE, 0x2C002200,
0xD0A4D098, 0xD0A1D092, 0xD0A3D090, 0xD09FD0A0, 0xD0A8D09E, 0xD09BD094, 0xD0ACD0A2, 0xD0A9D097,
0xD099D09A, 0xD0ABD095, 0xD093D09C, 0xD0A6D0A7, 0xD09DD0AF, 0xD1855C00, 0xD18A3A00, 0x5F00D191,
0xD184D0B8, 0xD181D0B2, 0xD183D0B0, 0xD0BFD180, 0xD188D0BE, 0xD0BBD0B4, 0xD18CD182, 0xD189D0B7,
0xD0B9D0BA, 0xD18BD0B5, 0xD0B3D0BC, 0xD186D187, 0xD0BDD18F, 0xD0A52F00, 0xD0AAD081
};

new bool:g_bUseRus[33];
#if defined STEAM
new bool:g_bIsSteam[33];
#endif
#if defined LT_PREFIXES
enum _:DATA
{
TYPE[2],
AUTH[32],
PREFIX[64]
};
new Array:g_aData, g_PlayerData[DATA];
new g_szPrefix[33][64];
#endif

#define GetBit(%1,%2) (%1 & (1 << (%2 & 31)))
#define SetBit(%1,%2) %1 |= (1 << (%2 & 31))
#define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31))
#if defined ADMIN_ALLCHAT
new g_bitAdmin;
#endif
new g_bitAlive;

public plugin_init()
{
#define VERSION "2.8"
register_plugin("Lite Translit", VERSION, "neygomon");
register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_clcmd("say /rus", "LangCtrlRus");
register_clcmd("say /eng", "LangCtrlEng");

register_clcmd("say", "HandlerSay");
register_clcmd("say_team", "HandlerSayTeam");

register_event("ResetHUD", "eResetHUD", "be");
register_event("DeathMsg", "eDeathMsg", "a", "1>0");
}

#if defined LT_PREFIXES
public plugin_cfg()
{
g_aData = ArrayCreate(DATA);

new buff[256], fp = fopen("addons/amxmodx/configs/lt_prefixes.ini", "rt");
if(!fp) return set_fail_state("File ^"addons/amxmodx/configs/lt_prefixes.ini^" not found");

while(!feof(fp))
{
fgets(fp, buff, charsmax(buff));
if(buff[0] && buff[0] != ';' && parse(buff, g_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX])))
ArrayPushArray(g_aData, g_PlayerData);
}
return fclose(fp);
}
#endif
public client_putinserver(id)
{
#if defined LT_PREFIXES
set_task(10.0, "SearchClient", id)
#endif
#if defined DEF_RUS
g_bUseRus[id] = true;
#else
g_bUseRus[id] = false;
#endif
#if defined STEAM
g_bIsSteam[id] = is_user_steam(id) ? true : false;
#endif
#if defined ADMIN_ALLCHAT
if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id);
else ResetBit(g_bitAdmin, id);
#endif
}

public client_disconnected(id) ResetBit(g_bitAlive, id);
public eResetHUD(id) SetBit(g_bitAlive, id);
public eDeathMsg() ResetBit(g_bitAlive, read_data(2));

public HandlerSay(id) return FormatMsg(id, false);
public HandlerSayTeam(id) return FormatMsg(id, true);

public LangCtrlRus(id)
{
if(g_bUseRus[id])
client_print_color(id, print_chat, "^1[^4 CS-Chita.Tk ^1] ^3Русский язык ^4УЖЕ ^3включен!");
else
{
client_print_color(id, print_chat, "^1[^4 CS-Chita.Tk ^1] ^3Русский язык активирован!");
g_bUseRus[id] = true;
client_cmd(id, "spk buttons/blip1.wav");
}
}

public LangCtrlEng(id)
{
if(!g_bUseRus[id])
client_print_color(id, print_chat, "^1[^4 CS-Chita.Tk ^1] ^3Английский язык ^4УЖЕ ^3включен!");
else
{
client_print_color(id, print_chat, "^1[^4 CS-Chita.Tk ^1] ^3Английский язык активирован!");
g_bUseRus[id] = false;
client_cmd(id, "spk buttons/blip1.wav");
}
}

FormatMsg(id, bool:IsTeam)
{
#define MAX_BYTES 180
static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 2 + 1];
read_args(sMessage, charsmax(sMessage));
remove_quotes(sMessage);trim(sMessage);

if(sMessage[0] == EOS || sMessage[0] == '/')
return PLUGIN_HANDLED_MAIN;
#if defined ANTIFLOOD
static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33];

if(fTimeFlood[id] > (fGameTime = get_gametime()))
{
if(++iFloodWarn[id] > 2)
{
client_print_color(id, print_chat, "^1[^4 CS-Chita.Tk ^1] ^3Прекратите флудить!");
fTimeFlood[id] = fGameTime + AD_TIME + 3.0;
return PLUGIN_HANDLED;
}
}
else if(iFloodWarn[id]) iFloodWarn[id]--;
fTimeFlood[id] = fGameTime + AD_TIME;
#endif
static iLen, sTags[MAX_BYTES], idTeam, sTeam[16];
idTeam = get_user_team(id, sTeam, charsmax(sTeam));

switch(idTeam)
{
case 1: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^3" : "^3*^4Мертвый^3* ", IsTeam ? "^3[^4TT^3]" : "");
case 2: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^3" : "^3*^4Мертвый^3* ", IsTeam ? "^3[^4CT^3]" : "");
default:iLen = formatex(sTags, charsmax(sTags), "^1*^3Spec^1* ");
}
#if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES)
static IsAccess; IsAccess = CheckFlags(id);
#endif
#if defined AES
static AESLvl[33][64], aStats[AES_ST_END];
aes_get_player_stats(id, aStats); aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], charsmax(AESLvl[]), LANG_SERVER);
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3[^4%s^3] ", AESLvl[id]);
#endif
#if defined TOPGAMER

new stats[8],bodyhits[8],irank
irank = get_user_stats(id,stats,bodyhits)

if(irank <= 3)
{
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3[^4TOP Игрок^3] ");
}else{
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3[^4Ранг: %d^3] ",irank);
}
#endif
#if defined STEAM
if(g_bIsSteam[id])
{
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3[^4Steam^3] ");
}else{
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3[^4No Steam^3] ");
}
#endif
#if defined TAGS
#if defined LT_PREFIXES
if(g_szPrefix[id][0])
{
replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1");
replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3");
replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4");
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]);
}
#else
static const szAdminPrefix[][] = { "", "^3[^4Гл. Админ^3] ", "^3[^4Админ^3] ", "^3[^4VIP^3] " };
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]);
#endif
#endif
static sName[32];
get_user_name(id, sName, charsmax(sName));
#if defined GREEN_MSG
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 : %s", sName, IsAccess ? "^4" : "");
#else
iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%s^1 : ", sName);
#endif
if(g_bUseRus[id])
{
new nLen;
for(new n; sMessage[n] != EOS; n++)
{
if('!' <= sMessage[n] <= '~')
{
sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2};
if(g_chConvert{(sMessage[n] - '!') * 2 + 1} != EOS)
sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2 + 1};
}
else sConvertStr[nLen++] = sMessage[n];
}
sConvertStr[nLen] = EOS;
}
else sConvertStr = sMessage;

static iByteLimit; iByteLimit = MAX_BYTES;
while(iLen + strlen(sConvertStr) > MAX_BYTES)
sConvertStr[iByteLimit -= 10] = 0;

iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, sConvertStr);

static players[32], pcount; get_players(players, pcount, "c");
switch(IsTeam)
{
case true:
{
for(new i; i < pcount; i++)
{
#if defined ADMIN_ALLCHAT
if(GetBit(g_bitAdmin, players[i]) || (GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i])))
#else
if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i]))
#endif
SendMsgChat(players[i], idTeam, sTags);
}
}
case false:
{
for(new i; i < pcount; i++)
#if defined DEFAULT_CS_CHAT
#if defined ADMIN_ALLCHAT
if(GetBit(g_bitAdmin, players[i]) || GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]))
#else
if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]))
#endif
SendMsgChat(players[i], idTeam, sTags);
#else
SendMsgChat(players[i], idTeam, sTags);
#endif
}
}
static sAuthId[25]; get_user_authid(id, sAuthId, charsmax(sAuthId));
log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, IsTeam ? "say_team" : "say" , sConvertStr);
return PLUGIN_HANDLED;
}

stock SendMsgChat(player, team, msg[])
{
switch(team)
{
case 1: client_print_color(player, print_team_red, msg);
case 2: client_print_color(player, print_team_blue, msg);
default:client_print_color(player, print_team_grey, msg);
}
}

public SearchClient(const id)
{
for(new i; i < ArraySize(g_aData); i++)
{
ArrayGetArray(g_aData, i, g_PlayerData);
switch(g_PlayerData[TYPE])
{
case 'n':
{
static sName[32]; get_user_name(id, sName, 31);
if(equal(g_PlayerData[AUTH], sName))
{
return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
}
}
case 'f':
{
if(get_user_flags(id) & read_flags(g_PlayerData[AUTH]))
return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
}
case 'i':
{
static sIP[16]; get_user_ip(id, sIP, charsmax(sIP), 1);
if(!strcmp(g_PlayerData[AUTH], sIP))
return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
}
case 's':
{
static sAuthid[25]; get_user_authid(id, sAuthid, charsmax(sAuthid));
if(!strcmp(g_PlayerData[AUTH], sAuthid))
return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]);
}
}
}
return g_szPrefix[id][0] = 0;
}

stock CheckFlags(id)
{
static iFlags; iFlags = get_user_flags(id);
if(iFlags & GL_ADMIN) return 1;
else if(iFlags & ADMIN) return 2;
else if(iFlags & VIP) return 3;
return 0;
}

stock bool:is_user_steam(id)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}



Отредактировал: TyTuKeT, - 12.9.2017, 15:15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: