|
Стаж: 11 лет
Сообщений: 1106
Благодарностей: 383
Полезность: 520
|
Код:
/* * Top Awards 10/22/2012 * * Плагин добавляет флаг(и) TOPx игрокам * Квары: * top_ranks - максимальный ранг, который может иметь игрок (конец TOPX) * top_flags - какие флаги добавляются * * Игнорируются игроки с флагом IGNORE_FLAG (по умолчанию это флаг m) и игроки, уже имеющие ВСЕ добавляемые флаги. * Поясняющая надпись игроку выводится цветным чатом. * * Credits: * - original plugin's authors SimonLogic & RoleX * - c-s.net.ua users 3aB}{o3 & cs-portal for the idea and link */
#include <amxmodx> #include <csstats>
#define IGNORE_FLAG ADMIN_LEVEL_A /* flag "m" */
new pRanks, pFlags
public plugin_init() { register_plugin( "Top Awards", "0.11c", "Safety1st" ) register_dictionary( "topawards.txt" ) pRanks = register_cvar( "top_ranks", "5" ) pFlags = register_cvar( "top_flags", "t" ) }
public client_putinserver(id) { set_task( 0.3, "CheckStats", id ) // we need to use delay otherwise we will get rank = 0 }
public CheckStats(id) { new iFlags = get_user_flags(id) new szAddFlags[16] get_pcvar_string( pFlags, szAddFlags, 15 ) new iAddFlags = read_flags(szAddFlags)
if ( iFlags & IGNORE_FLAG || iFlags & iAddFlags == iAddFlags ) // ignore player with IGNORE_FLAG or having all additional flags return
new iRanks = get_pcvar_num(pRanks) if ( !iRanks ) return
new szStats[8], szBodyHits[8] new iRank = get_user_stats( id, szStats, szBodyHits )
if ( iRank && iRank <= iRanks ) { // 1st check for safety. may be player not ranked at all yet set_user_flags( id, iFlags | iAddFlags ) new data[2] data[0] = id data[1] = iRanks set_task( 5.0, "PrintMessage", _, data, 2 ) } }
public PrintMessage( data[2] ) { if ( !is_user_connected(data[0]) ) return
ColorPrint( data[0], "%L", data[0], "TOP_AWARDS", data[1] ) }
ColorPrint( iReceiver, const szRawMessage[ ], any:... ) { static iMsgSayText = 0 if( !iMsgSayText ) iMsgSayText = get_user_msgid( "SayText" )
new szMessage[192] vformat( szMessage, charsmax(szMessage) - 1, szRawMessage, 3 ) replace_all( szMessage, charsmax(szMessage) - 1, "!n", "^1" ) replace_all( szMessage, charsmax(szMessage) - 1, "!t", "^3" ) replace_all( szMessage, charsmax(szMessage) - 1, "!g", "^4" ) if ( szMessage[0] != '^1' || szMessage[0] != '^3' || szMessage[0] != '^4' ) format( szMessage, charsmax(szMessage) - 1, "^1%s", szMessage ) // we must set initial default color if it is not provided explicitly
message_begin( MSG_ONE_UNRELIABLE, iMsgSayText, _, iReceiver ) write_byte(iReceiver) // use target player as sender to see colors at all (and his own team color for ^3) write_string(szMessage) message_end() } Код:
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <dhudmessage>
#define PLUGIN "IDEAL VIP by Ba/lePa & Wikiname" #define VERSION "3.2.5" #define AUTHOR "Ba/lePa | Remake by Wikiname"
#define VIP_TAG (1<<2) // vip в таблицу #define vip_flag ADMIN_LEVEL_H // флаг доступа //#define EXP_SHOW // раскомментируйте чтобы показать срок випки
#define music // Если звук при входе админа не нужен, то поставьте // перед #define
#define MAX_TEXT_LENGTH 200 #define MAX_NAME_LENGTH 40
#pragma semicolon 1
new bool:g_bBlockMap;
new g_Round, g_iWeapon[33], g_iVip ; new g_iPlayerBomb[33] = false; new cvar_connect, Float: cvar_x, Float: cvar_y; new cvar_prefix; new cvar_round, cvar_open, cvar_show, cvar_chat, cvar_pistols, cvar_funk, cvar_tab; new Float: cvar_health, Float: cvar_health_head, Float: cvar_health_max; new cvar_money, cvar_money_head; new cvar_music; new cvar_awplimit; #if defined EXP_SHOW native admin_expired(index); #endif new vip_opened[33]; new g_iMaxPlayers = 0; new msgSayText; new g_iPistols[6] = {CSW_USP, CSW_GLOCK18, CSW_ELITE, CSW_FIVESEVEN, CSW_P228, CSW_DEAGLE}; new bool: g_Chosen[33] = false;
new string[32];
public plugin_precache(){ if(IsBlockMap()) { g_bBlockMap = true; return; } #if defined(music) precache_sound("IDEAL_VIP/ideal_sound.wav"); #endif } public plugin_init(){ register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("ideal_vip.txt"); g_iMaxPlayers = get_maxplayers(); register_message(get_user_msgid( "ScoreAttrib" ), "msgScoreAttrib"); register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0"); register_event("TextMsg", "EventRoundRestart", "a", "2=#Game_will_restart_in","2=#Game_Commencing"); RegisterHam(Ham_Killed, "player", "HamPlayerKilled_Post", 1); RegisterHam(Ham_Spawn, "player", "HamSpawn_Post", 1);
register_clcmd("say /vipmenu", "MainMenu"); register_clcmd("say_team /vipmenu", "MainMenu"); register_clcmd("say /vip_menu", "MainMenu"); register_clcmd("say_team /vip_menu", "MainMenu"); register_clcmd("vipmenu", "MainMenu"); register_clcmd("say /vips", "vip_online"); register_clcmd("say_team /vips", "vip_online"); register_clcmd("say /adminka", "admin_motd"); register_clcmd("say_team /adminka", "admin_motd"); register_clcmd("say /vipka", "vip_motd"); register_clcmd("say_team /vipka", "vip_motd"); msgSayText = get_user_msgid("SayText"); } public plugin_cfg(){ new szConfigDir[128]; cvar_round = get_pcvar_num(register_cvar("amx_vipround", "2")); cvar_open = get_pcvar_num(register_cvar("amx_vipzaround", "2")); cvar_show = get_pcvar_num(register_cvar("amx_vipshow","0")); cvar_chat = get_pcvar_num(register_cvar("amx_chatshow", "0")); cvar_pistols = get_pcvar_num(register_cvar("amx_vipautopistols", "1")); cvar_funk = get_pcvar_num(register_cvar("amx_vipautoset", "1")); cvar_health = get_pcvar_float(register_cvar("amx_viphealth", "5.0")); cvar_health_head = get_pcvar_float(register_cvar("amx_viphealth_head", "10.0")); cvar_health_max = get_pcvar_float(register_cvar("amx_viphealth_max", "120.0")); cvar_money = get_pcvar_num(register_cvar("amx_vipmoney", "300")); cvar_money_head = get_pcvar_num(register_cvar("amx_vipmoney_head", "500")); cvar_tab = get_pcvar_num(register_cvar("amx_viptab", "1")); cvar_connect = get_pcvar_num(register_cvar("amx_showconnect", "0")); cvar_x = get_pcvar_float(register_cvar("amx_vipXcoord", "-1.0")); cvar_y = get_pcvar_float(register_cvar("amx_vipYcoord", "0.6")); cvar_prefix = register_cvar("amx_vip_prefix", "!g[!tVIP!g]"); #if defined(music) cvar_music = get_pcvar_num(register_cvar("amx_vipMusic", "1")); #endif cvar_awplimit = get_pcvar_num(register_cvar("amx_awproundlimit", "3")); get_pcvar_string(cvar_prefix, string, charsmax(string)); get_localinfo("amxx_configsdir", szConfigDir, charsmax(szConfigDir)); server_cmd("exec %s/ideal_vip.cfg", szConfigDir); }
public admin_motd(id, level, cid){ if(!cmd_access(id, level, cid, 1)) return PLUGIN_CONTINUE; show_motd(id, "adminka.txt", "Как купить админку"); return PLUGIN_CONTINUE; }
public vip_motd(id, level, cid){ if(!cmd_access(id, level, cid, 1)) return PLUGIN_CONTINUE; show_motd(id, "vipka.txt", "Как купить випку"); return PLUGIN_CONTINUE; }
public client_putinserver(id){ g_iWeapon[id] = 0; if(IsUserCool(id)) set_task(0.5, "vip_connect", id + 132); } public client_disconnect(id){ g_iWeapon[id] = 0; g_Chosen[id] = false; }
public vip_connect(TASKID){ new id = TASKID - 132; #if defined(music) if(cvar_music) client_cmd(0, "spk IDEAL_VIP/ideal_sound.wav"); #endif new name[32]; get_user_name(id, name, charsmax(name)); new g_iRed = random_num(1,255),g_iGreen = random_num(1,255),g_iBlue = random_num(1,255); //рандомные цвета для HUD и DHUD switch(cvar_connect) { case 1: { ChatColor(0, "%L", id, "VIP_CONNECT", string, name); } case 2: { set_hudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 0, 0.0, 6.0, 0.0, 0.0, -1); if(get_user_flags(id) & ADMIN_BAN) show_hudmessage(0, "%L", id, "VIP_CONNECT2", name); else show_hudmessage(0, "%L", id, "VIP_CONNECT2", name); } case 3: { set_dhudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, false); if(get_user_flags(id) & ADMIN_BAN) show_dhudmessage(0, "%L", id, "VIP_CONNECT2", name); else show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name); } case 4: { ChatColor(0, "%L", id, "VIP_CONNECT", string, name); set_hudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, -1); show_hudmessage(0, "%L", id, "VIP_CONNECT1", name); } case 5: { ChatColor(0, "%L", id, "VIP_CONNECT", string, name); set_dhudmessage(g_iRed, g_iGreen, g_iBlue, cvar_x, cvar_y, 1, 0.0, 6.0, 0.0, 0.0, false); show_dhudmessage(0, "%L", id, "VIP_CONNECT1", name); } } } public EventRoundStart() g_Round++; public EventRoundRestart() g_Round = 0; public HamSpawn_Post(id){ g_iPlayerBomb[id] = false; vip_opened[id] = 0; if(!g_bBlockMap) { if(IsUserCool(id)) { if(g_Round == 0) FirstMenu(id); if(is_user_alive(id)) { if(cvar_funk == 1) task_funk(id); if(cvar_show == 1 && g_Round >= cvar_round) MainMenu(id); } } } } public HamPlayerKilled_Post(iVictim, iKiller, corpse){ static const m_LastHitGroup = 75; if(!g_bBlockMap) { if(IsUserCool(iVictim)) if(!g_Chosen[iVictim]) set_task(1.0, "FirstMenu", iVictim); } if(IsUserCool(iKiller)) { if(is_user_alive(iKiller)) { if( get_pdata_int( iVictim, m_LastHitGroup ) == HIT_HEAD) { set_pev(iKiller, pev_health, pev(iKiller, pev_health) + cvar_health_head); if(get_user_health(iKiller) > cvar_health_max) set_pev(iKiller, pev_health, cvar_health_max); cs_set_user_money(iKiller, cs_get_user_money(iKiller) + cvar_money_head); } else { set_pev(iKiller, pev_health, pev(iKiller, pev_health) + cvar_health); if(pev(iKiller, pev_health) > cvar_health_max) set_pev(iKiller, pev_health, cvar_health_max); cs_set_user_money(iKiller, cs_get_user_money(iKiller) + cvar_money); } } } }
GiveDefaultItems( id, secondary_weapon, strip_and_task = 1 ) { if( strip_and_task ) { fm_strip_user_weapons(id); task_funk(id); }
switch( secondary_weapon ) { case 0: { FirstMenu(id); } case 1: { fm_give_item(id, "weapon_deagle"); cs_set_user_bpammo(id, CSW_DEAGLE, 35); } case 2: { fm_give_item(id, "weapon_usp"); cs_set_user_bpammo(id, CSW_USP, 100); } case 3: { fm_give_item(id, "weapon_glock18"); cs_set_user_bpammo(id, CSW_GLOCK18, 120); } } }
public task_funk(id){ fm_give_item(id, "weapon_knife"); fm_give_item(id, "item_thighpack"); fm_give_item(id, "weapon_hegrenade"); fm_give_item(id, "weapon_flashbang"); fm_give_item(id, "weapon_flashbang"); fm_give_item(id, "weapon_smokegrenade"); fm_give_item(id, "item_assaultsuit"); if(g_iPlayerBomb[id]) { fm_give_item(id, "weapon_c4"); cs_set_user_plant(id); g_iPlayerBomb[id] = false; } if(cvar_pistols) { for(new i = 0; i < 6; i++) fm_strip_user_gun(id, g_iPistols[i]); GiveDefaultItems( id, g_iWeapon[id], .strip_and_task = 0 ); } }
public MainMenu(id){ if(g_bBlockMap) { ChatColor(id, "%L", id, "VIP_WARNING6", string); } else { if(IsUserCool(id)) { if(is_user_alive(id)) { if(vip_opened[id] < cvar_open || cvar_open == 0) { if(g_Round >= cvar_round) { new szTitle[64], szName[32], szPistol[32], szMenuMulti[64]; get_user_name(id, szName, charsmax(szName)); switch(g_iWeapon[id]) { case 0: szPistol = "NONE"; case 1: szPistol = "Deagle"; case 2: szPistol = "Usp"; case 3: szPistol = "Glock"; } #if defined EXP_SHOW new exp = admin_expired(id); if(exp > 0) { new systime = get_systime(); if(exp - systime > 0) { if((exp - systime) / 86400 > 0) formatex(szTitle, charsmax(szTitle), "\w Осталось \y%d \wдней \rVIP\w-ки ^n^n", ((exp - systime) / 86400)); else formatex(szTitle, charsmax(szTitle), "\r Последний \wдень \rVIP\w-ки ^n^n"); } } else if(exp == 0) formatex(szTitle, charsmax(szTitle), " \rVIP \w- Права \yбессрочны ^n^n"); #else formatex(szTitle, charsmax(szTitle), "%L", id, "VIP_MENU", szName); #endif new i_Menu = menu_create(szTitle, "MainMenu_Handler", 1); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU1", szPistol); menu_additem(i_Menu, szMenuMulti, "1", 0); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU2", szPistol); menu_additem(i_Menu, szMenuMulti, "2", 0); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU3", szPistol); menu_additem(i_Menu, szMenuMulti, "3", 0); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU4", szPistol); menu_additem(i_Menu, szMenuMulti, "4", 0); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU5", szPistol); menu_additem(i_Menu, szMenuMulti, "5", 0); menu_addblank(i_Menu, 0); formatex(szMenuMulti, charsmax(szMenuMulti), "%L", id, "ITEM_MENU6"); menu_additem(i_Menu, szMenuMulti, "6", 0); menu_addblank(i_Menu, 1);
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход"); menu_display(id, i_Menu, 0); } else { if(cvar_round == 2) { ChatColor(id, "%L", id, "VIP_WARNING5", string, cvar_round); return PLUGIN_HANDLED; } else { ChatColor(id, "%L", id, "VIP_WARNING1", string, cvar_round); return PLUGIN_HANDLED; } } } else ChatColor(id, "%L", id, "VIP_WARNING2", string); } else ChatColor(id, "%L", id, "VIP_WARNING3", string); } else ChatColor(id, "%L", id, "VIP_WARNING4", string); } return PLUGIN_HANDLED; } public MainMenu_Handler(id, iMenu, item){ if(item == MENU_EXIT) { menu_destroy(iMenu); return PLUGIN_HANDLED; } new szData[6], szName[60], iAccess, iCallback; menu_item_getinfo(iMenu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback); get_user_name(id, szName, charsmax(szName)); new iKey = str_to_num(szData); switch(iKey) { case 1: { vip_opened[id]++; if(user_has_weapon(id, CSW_C4)) g_iPlayerBomb[id] = true; GiveDefaultItems( id, g_iWeapon[id] ); fm_give_item(id, "weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 90); if(cvar_chat == 1) ChatColor(0, "%L", id, "VIP_M4A1", string, szName); } case 2: { vip_opened[id]++; if(user_has_weapon(id, CSW_C4)) g_iPlayerBomb[id] = true; GiveDefaultItems( id, g_iWeapon[id] ); fm_give_item(id, "weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 90); if(cvar_chat == 1) ChatColor(0, "%L", id, "VIP_AK47", string, szName); } case 3: { if(g_Round >= cvar_awplimit) { vip_opened[id]++; if(user_has_weapon(id, CSW_C4)) g_iPlayerBomb[id] = true; GiveDefaultItems( id, g_iWeapon[id] ); fm_give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, 30); if(cvar_chat == 1) ChatColor(0, "%L", id, "VIP_AWP", string, szName); } else ChatColor(id, "%L", id, "VIP_WARNING7", string, cvar_awplimit); } case 4: { vip_opened[id]++; if(user_has_weapon(id, CSW_C4)) g_iPlayerBomb[id] = true; GiveDefaultItems( id, g_iWeapon[id] ); fm_give_item(id, "weapon_famas"); cs_set_user_bpammo(id, CSW_FAMAS, 90); if(cvar_chat == 1) ChatColor(0, "%L", id, "VIP_FAMAS", string, szName); } case 5: { vip_opened[id]++; if(user_has_weapon(id, CSW_C4)) g_iPlayerBomb[id] = true; GiveDefaultItems( id, g_iWeapon[id] ); fm_give_item(id, "weapon_scout"); cs_set_user_bpammo(id, CSW_SCOUT, 90); if(cvar_chat == 1) ChatColor(0, "%L", id, "VIP_SCOUT", string, szName); } case 6: { FirstMenu(id); } } menu_destroy(iMenu); return PLUGIN_HANDLED; }
public FirstMenu(id){ if(!is_user_connected(id)) return; new i_Menu = menu_create("\rЧто вы предпочитаете?", "FirstMenu_Handler");
menu_additem(i_Menu, "\yDeagle", "1", 0); menu_additem(i_Menu, "\yGlock", "2", 0); menu_additem(i_Menu, "\rUsp", "3", 0); menu_setprop(i_Menu, MPROP_EXITNAME, "Выход"); menu_display(id, i_Menu, 0); } public FirstMenu_Handler(id, iMenu, item){ if(item == MENU_EXIT) { menu_destroy(iMenu); return PLUGIN_HANDLED; } new szData[6], szName[60], iAccess, iCallback; menu_item_getinfo(iMenu, item, iAccess, szData, charsmax(szData), szName, charsmax(szName), iCallback); new iKey = str_to_num(szData); for(new i = 0; i < 6; i++) fm_strip_user_gun(id, g_iPistols[i]); switch(iKey) { case 1: { g_Chosen[id] = true; g_iWeapon[id] = 1; fm_give_item(id, "weapon_deagle"); cs_set_user_bpammo(id, CSW_DEAGLE, 35); } case 2: { g_Chosen[id] = true; g_iWeapon[id] = 3; fm_give_item(id, "weapon_glock18"); cs_set_user_bpammo(id, CSW_GLOCK18, 120); } case 3: { g_Chosen[id] = true; g_iWeapon[id] = 2; fm_give_item(id, "weapon_usp"); cs_set_user_bpammo(id, CSW_USP, 100); } } menu_destroy(iMenu); return PLUGIN_CONTINUE; }
public msgScoreAttrib(const MsgId, const MsgType, const MsgDest){ if(cvar_tab) { if(IsUserCool(get_msg_arg_int(1)) && !get_msg_arg_int(2)) set_msg_arg_int(2, ARG_BYTE, VIP_TAG); } }
public vip_online(id){ g_iVip = 0; new Len, message[512], name[32]; new iPlayer;
for(iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++) { if(IsUserCool(iPlayer)) { g_iVip++; get_user_name(iPlayer, name, charsmax(name)); if(g_iVip == 1) Len += format(message[Len], 511 - Len, "%s", name); else Len += format(message[Len], 511 - Len, " , %s", name); } } if(g_iVip < 1) ChatColor(id, "%L", id, "VIP_ONLINE", string); else ChatColor(id, "%s: !t%s", string, message); }
stock ChatColor(const id, const input[], any:...){ new iCount = 1, iPlayers[32]; static szMsg[191]; vformat(szMsg, 190, input, 3); replace_all(szMsg, 190, "!g", "^4"); // Green Color replace_all(szMsg, 190, "!y", "^1"); // Default Color replace_all(szMsg, 190, "!t", "^3"); // Team Color if (id) iPlayers[0] = id; else get_players(iPlayers, iCount, "ch"); { for(new iPlayer = 0; iPlayer < iCount; iPlayer++ ) { if( is_user_connected(iPlayers[iPlayer]) ) { message_begin(MSG_ONE_UNRELIABLE, msgSayText, _, iPlayers[iPlayer]); write_byte(iPlayers[iPlayer]); write_string(szMsg); message_end(); } } } } stock IsBlockMap(){ new got_line, line_num, len; new cfgdir[MAX_TEXT_LENGTH]; new cfgpath[MAX_TEXT_LENGTH]; new mapname[MAX_NAME_LENGTH]; new txt[MAX_TEXT_LENGTH];
get_localinfo("amxx_configsdir", cfgdir, charsmax(cfgdir)); get_mapname(mapname, MAX_NAME_LENGTH-1);
format(cfgpath, MAX_TEXT_LENGTH, "%s/ideal_block_maps.ini", cfgdir);
if (file_exists(cfgpath)) { got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len); while (got_line>0) { if (equali(txt, mapname)) return 1; line_num++; got_line = read_file(cfgpath, line_num, txt, MAX_TEXT_LENGTH-1, len); } } return 0; } stock bool: IsUserCool(const id){ if(!is_user_connected(id)) return false; if((get_user_flags(id) & vip_flag)) return true; return false; }
|