Mofyfikacja pluginu
_.-*`PaniQ*-._
18.01.2021
Siemka, pomoże ktoś edytować plugin csdm_equip lub może nie trzeba edytować tylko to jest osobny plugin w każdym bądz razie takiego nie znalazłem.
Potrzebuje ustawić tak że po upływie 60sec po starcie mapy otwiera się menu z wyborem gry na jakie bronie grać mapę:
Glosowanie jaką bronia gramy na tej mapie:
Karabiny [0%]
Pistolety [0%]
Snajperki [0%]
Kosy [0%]
Niżej zamieszczam csdm_equip jeśli potrzebne:
Nie mogę wrzucić pliku sma do załącznika nw czemu
/** * csdm_equip.sma * Allows for Counter-Strike to be played as DeathMatch. * * CSDM Equipment Menu * * By Freecode and BAILOPAN * (C)2003-2006 David "BAILOPAN" Anderson * * Give credit where due. * Share the source - it sets you free * http://www.opensource.org/ * http://www.gnu.org/ */ #include <amxmodx> #include <amxmisc> #include <cstrike> #include <csdm> #include <fakemeta> //Tampering with the author and name lines can violate the copyright new PLUGINNAME[] = "CSDM Equip" new VERSION[] = CSDM_VERSION new AUTHORS[] = "CSDM Team" #define EQUIP_PRI (1<<0) #define EQUIP_SEC (1<<1) #define EQUIP_ARMOR (1<<2) #define EQUIP_GREN (1<<3) #define EQUIP_ITEMS (1<<4) #define EQUIP_ALL (EQUIP_PRI|EQUIP_SEC|EQUIP_ARMOR|EQUIP_GREN|EQUIP_ITEMS) //Menus new g_SecMenu[] = "CSDM: Pistolety" // Menu Name new g_SecMenuID = -1 // Menu ID new g_cSecondary // Menu Callback new bool:g_mSecStatus = true // Menu Available? new g_PrimMenu[] = "CSDM: Karabiny" new g_PrimMenuID = -1 new g_cPrimary new bool:g_mPrimStatus = true new g_ArmorMenu[] = "CSDM: Kamizelka" new g_ArmorMenuID = -1 new bool:g_mArmorStatus = true new g_NadeMenu[] = "CSDM: Granaty" new g_NadeMenuID = -1 new bool:g_mNadeStatus = true new g_EquipMenu[] = "CSDM: Ekwipunek" new g_EquipMenuID = -1 new bool:g_mShowuser[33] = true new bool:g_mAutoNades = false new bool:g_mAutoArmor = false //Weapon Selections new g_SecWeapons[33][18] new g_PrimWeapons[33][18] new bool:g_mNades[33] new bool:g_mArmor[33] //Config weapon storage holders new g_BotPrim[MAX_WEAPONS][18] new g_iNumBotPrim new g_BotSec[MAX_WEAPONS][18] new g_iNumBotSec new g_Secondary[MAX_SECONDARY][18] new bool:g_DisabledSec[MAX_WEAPONS] new g_iNumSec new g_Primary[MAX_PRIMARY][18] new bool:g_DisabledPrim[MAX_WEAPONS] new g_iNumPrim #define SILENCED_M4A1 0 #define SILENCED_USP 1 new bool:g_Silenced[33][2] //Misc new g_Armor = 0 new fnadesnum = 0 new bool:g_Flash = false new bool:g_Nade = false new bool:g_Smoke = false new bool:g_NightVision = false new bool:g_DefuseKit = false //Quick Fix for menu pages new g_MenuState[33] = {0} public csdm_Init(const version[]) { if (version[0] == 0) { set_fail_state("CSDM failed to load.") return } // Menus and callbacks g_SecMenuID = menu_create(g_SecMenu, "m_SecHandler", 0) g_PrimMenuID = menu_create(g_PrimMenu, "m_PrimHandler", 0) g_ArmorMenuID = menu_create(g_ArmorMenu, "m_ArmorHandler", 0) g_NadeMenuID = menu_create(g_NadeMenu, "m_NadeHandler", 0) g_EquipMenuID = menu_create(g_EquipMenu, "m_EquipHandler", 0) menu_setprop(g_PrimMenuID, MPROP_EXIT, MEXIT_NEVER) menu_setprop(g_SecMenuID, MPROP_EXIT, MEXIT_NEVER) g_cSecondary = menu_makecallback("c_Secondary") g_cPrimary = menu_makecallback("c_Primary") } public csdm_CfgInit() { // Config reader csdm_reg_cfg("equip", "cfgSetting") // In order for weapon menu csdm_reg_cfg("secondary", "cfgSecondary") csdm_reg_cfg("primary", "cfgPrimary") csdm_reg_cfg("botprimary", "cfgBotPrim") csdm_reg_cfg("botsecondary", "cfgBotSec") } public plugin_init() { register_plugin(PLUGINNAME, VERSION, AUTHORS) // Build Armor/Nade/Equip Menu's buildMenu() register_clcmd("say guns", "enableMenu") register_clcmd("say /guns", "enableMenu") register_clcmd("say enablemenu", "enableMenu") register_clcmd("say enable_menu", "enableMenu") } public client_connect(id) { g_mShowuser[id] = true g_mNades[id] = false g_mArmor[id] = false g_Silenced[id][SILENCED_M4A1] = false g_Silenced[id][SILENCED_USP] = false return PLUGIN_CONTINUE } public client_disconnect(id) { g_mShowuser[id] = true g_mNades[id] = false g_mArmor[id] = false return PLUGIN_CONTINUE } public csdm_RemoveWeapon(owner, entity_id, boxed_id) { new classname[32], weapon if (!pev_valid(entity_id)) { return PLUGIN_CONTINUE } pev(entity_id, pev_classname, classname, 31) weapon = get_weaponid(classname) if (weapon == CSW_M4A1) { g_Silenced[owner][SILENCED_M4A1] = cs_get_weapon_silen(entity_id) ? true : false } else if (weapon == CSW_USP) { g_Silenced[owner][SILENCED_USP] = cs_get_weapon_silen(entity_id) ? true : false } return PLUGIN_CONTINUE } public csdm_PostDeath(killer, victim, headshot, const weapon[]) { /* Clean up any defusal kits we might have made! */ if (!g_DefuseKit) { return } /* This might have a race condition for team switches... */ if (cs_get_user_team(victim) == CS_TEAM_CT) { cs_set_user_defuse(victim, 0) } } public cfgSecondary(readAction, line[], section[]) { if (readAction == CFG_READ) { if (g_iNumSec >= MAX_SECONDARY) return PLUGIN_HANDLED new wep[16], display[48], dis[4] new cmd[6] parse(line, wep, 15, display, 47, dis, 3) new disabled = str_to_num(dis) //Copy weapon into array format(g_Secondary[g_iNumSec], 17, "weapon_%s", wep) g_DisabledSec[g_iNumSec] = disabled ? false : true format(cmd,5,"%d ",g_iNumSec) g_iNumSec++ //TODO: Add menu_destroy_items to remake menu on cfg reload menu_additem(g_SecMenuID, display, cmd, 0, g_cSecondary) } else if (readAction == CFG_RELOAD) { g_SecMenuID = menu_create(g_SecMenu, "m_SecHandler", 0) g_iNumSec = 0 } else if (readAction == CFG_DONE) { //Nothing for now return PLUGIN_HANDLED } return PLUGIN_HANDLED } public cfgPrimary(readAction, line[], section[]) { if (readAction == CFG_READ) { if (g_iNumPrim >= MAX_PRIMARY) return PLUGIN_HANDLED new wep[16], display[48], dis[4] new cmd[6] parse(line, wep, 15, display, 47, dis, 3) new disabled = str_to_num(dis) //Copy weapon into array format(g_Primary[g_iNumPrim], 17, "weapon_%s", wep) g_DisabledPrim[g_iNumPrim] = disabled ? false : true format(cmd, 5, "%d", g_iNumPrim) g_iNumPrim++ //TODO: Add menu_destroy_items to remake menu on cfg reload menu_additem(g_PrimMenuID, display, cmd, 0, g_cPrimary) } else if (readAction == CFG_RELOAD) { g_PrimMenuID = menu_create(g_PrimMenu, "m_PrimHandler", 0) g_iNumPrim = 0 } else if (readAction == CFG_DONE) { //Nothing for now return PLUGIN_HANDLED } return PLUGIN_HANDLED } public cfgBotPrim(readAction, line[], section[]) { if (readAction == CFG_READ) { new wep[16], display[32] parse(line, wep, 15, display, 31) //Copy weapon into array format(g_BotPrim[g_iNumBotPrim], 17, "weapon_%s", wep) g_iNumBotPrim++ } else if (readAction == CFG_RELOAD) { g_iNumBotPrim = 0 } else if (readAction == CFG_DONE) { //Nothing for now return PLUGIN_HANDLED } return PLUGIN_HANDLED } public cfgBotSec(readAction, line[], section[]) { if (readAction == CFG_READ) { new wep[16], display[32] parse(line, wep, 15, display, 31) //Copy weapon into array format(g_BotSec[g_iNumBotSec], 17, "weapon_%s", wep) g_iNumBotSec++ } else if (readAction == CFG_RELOAD) { g_iNumBotSec = 0 } else if (readAction == CFG_DONE) { //Nothing for now return PLUGIN_HANDLED } return PLUGIN_HANDLED } public cfgSetting(readAction, line[], section[]) { if (readAction == CFG_READ) { new setting[16], sign[3], value[6] parse(line, setting, 15, sign, 2, value, 5) // Menus settings if (contain(setting,"menus") != -1) { if (containi(value, "p") != -1) { g_mPrimStatus = true } if (containi(value, "s") != -1) { g_mSecStatus = true } if (containi(value, "a") != -1) { g_mArmorStatus = true } if (containi(value, "g") != -1) { g_mNadeStatus = true } return PLUGIN_HANDLED } else if (contain(setting, "autoitems") != -1) { if (containi(value, "a") != -1) { //Disable Armor Menu g_mArmorStatus = false g_mAutoArmor = true g_Armor = 1 } if (containi(value, "h") != -1) { //Disable Armor Menu g_mArmorStatus = false g_mAutoArmor = true g_Armor = 2 } if (containi(value, "g") != -1) { //Disable Grenade Menu g_mNadeStatus = false g_mAutoNades = true } if (containi(value, "d") != -1) { g_DefuseKit = true } if (containi(value, "n") != -1) { g_NightVision = true } return PLUGIN_HANDLED } else if (contain(setting, "grenades") != -1) { if (containi(value, "f") != -1) { g_Flash = true } if (containi(value, "h") != -1) { g_Nade = true } if (containi(value, "s") != -1) { g_Smoke = true } } else if (contain(setting, "fnadesnum") != -1) { fnadesnum = str_to_num(value) } return PLUGIN_HANDLED } else if (readAction == CFG_RELOAD) { g_mArmorStatus = false g_mNadeStatus = false g_Flash = false g_Nade = false g_Smoke = false g_Armor = 0 g_mSecStatus = false g_mPrimStatus = false g_mAutoNades = false g_DefuseKit = false g_NightVision = false fnadesnum = 1 } else if (readAction == CFG_DONE) { //Nothing for now return PLUGIN_HANDLED } return PLUGIN_HANDLED } //Secondary Weapon Callback public c_Secondary(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) //Check to see if item is disabled if (g_DisabledSec[dis]) { return ITEM_DISABLED } else { return ITEM_ENABLED } return PLUGIN_HANDLED } //Primary Weapon Callback public c_Primary(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE // Get item info new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new dis = str_to_num(cmd) //Check to see if item is disabled if (g_DisabledPrim[dis]) { return ITEM_DISABLED } else { return ITEM_ENABLED } return PLUGIN_HANDLED } //Equipment Menu handler public m_EquipHandler(id, menu, item) { if (item < 0) { return PLUGIN_CONTINUE } // Get item info new cmd[2], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd, 1, iName, 63, callback) new choice = str_to_num(cmd) switch(choice) { case 1: { if (g_mSecStatus) { menu_display(id, g_SecMenuID, 0) return PLUGIN_HANDLED } else if (g_mPrimStatus) { menu_display(id, g_PrimMenuID, 0) return PLUGIN_HANDLED } else if (g_mArmorStatus) { menu_display(id, g_ArmorMenuID, 0) return PLUGIN_HANDLED } else if (g_mNadeStatus) { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } menu_display(id, g_NadeMenuID, 0) return PLUGIN_HANDLED } else { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } if (g_mAutoNades) { equipUser(id, EQUIP_GREN) } equipUser(id, EQUIP_ITEMS) } } case 2: { // Equip person with last settings equipUser(id, EQUIP_ALL) } case 3: { g_mShowuser[id] = false client_print(id, print_chat, "[CSDM] Wpisz ^"guns^" na czacie, aby ponownie wlaczyc menu broni.") equipUser(id, EQUIP_ALL) } } return PLUGIN_HANDLED } //Secondary Wep Menu handler public m_SecHandler(id, menu, item) { // Get item info new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new wep = str_to_num(cmd) copy(g_SecWeapons[id],17,g_Secondary[wep]) equipUser(id, EQUIP_SEC) // Show next menu here if (g_mPrimStatus) { menu_display(id, g_PrimMenuID, 0) return PLUGIN_HANDLED } else if (g_mArmorStatus) { menu_display(id, g_ArmorMenuID, 0) return PLUGIN_HANDLED } else if (g_mNadeStatus) { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } menu_display(id, g_NadeMenuID, 0) return PLUGIN_HANDLED } else { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } if (g_mAutoNades) { equipUser(id, EQUIP_GREN) } equipUser(id, EQUIP_ITEMS) } return PLUGIN_HANDLED } //Primary Wep Menu handler public m_PrimHandler(id, menu, item) { if (item < 0) return PLUGIN_HANDLED // Get item info new cmd[6], iName[64] new access, callback if (menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback)) { new wep = str_to_num(cmd) copy(g_PrimWeapons[id], 17, g_Primary[wep]) equipUser(id, EQUIP_PRI) } // Show next menu here if (g_mArmorStatus) { menu_display(id, g_ArmorMenuID, 0) return PLUGIN_HANDLED } else if (g_mNadeStatus) { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } menu_display(id, g_NadeMenuID, 0) return PLUGIN_HANDLED } else { if (g_mAutoArmor) { equipUser(id, EQUIP_ARMOR) } if (g_mAutoNades) { equipUser(id, EQUIP_GREN) } equipUser(id, EQUIP_ITEMS) } return PLUGIN_HANDLED } //Armor Menu handler public m_ArmorHandler(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE // Get item info new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd,5, iName, 63, callback) new choice = str_to_num(cmd) if (choice == 1) { g_mArmor[id] = true } else if (choice == 2) { g_mArmor[id] = false } equipUser(id, EQUIP_ARMOR) // Show next menu here if (g_mNadeStatus) { menu_display(id, g_NadeMenuID, 0) return PLUGIN_HANDLED } else { if (g_mAutoNades) { equipUser(id, EQUIP_GREN) } equipUser(id, EQUIP_ITEMS) } return PLUGIN_HANDLED } //Nade Menu handler public m_NadeHandler(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE new cmd[6], iName[64] new access, callback menu_item_getinfo(menu, item, access, cmd, 5, iName, 63, callback) new choice = str_to_num(cmd) if (choice == 1) { g_mNades[id] = true } else if (choice == 2) { g_mNades[id] = false } equipUser(id, EQUIP_GREN) equipUser(id, EQUIP_ITEMS) return PLUGIN_HANDLED } buildMenu() { //Equip Menu menu_additem(g_EquipMenuID, "Nowa bron", "1", 0, -1) menu_additem(g_EquipMenuID, "Poprzednia bron", "2", 0, -1) menu_additem(g_EquipMenuID, "Zapisz poprzednia bron", "3", 0, -1) menu_setprop(g_EquipMenuID, MPROP_EXIT, MEXIT_NEVER) //Armor Menu menu_additem(g_ArmorMenuID, "Tak, wez kamizelke", "1", 0, -1) menu_additem(g_ArmorMenuID, "Bez kamizelki", "2", 0, -1) menu_setprop(g_ArmorMenuID, MPROP_EXIT, MEXIT_NEVER) //Nade Menu menu_additem(g_NadeMenuID, "Wszystkie granaty", "1", 0, -1) menu_additem(g_NadeMenuID, "Bez granatow", "2", 0, -1) menu_setprop(g_NadeMenuID, MPROP_EXIT, MEXIT_NEVER) return PLUGIN_HANDLED } equipUser(id, to) { if (!is_user_alive(id) ) return if (to & EQUIP_SEC) { //Give Secondary GiveUserFullWeapon(id, g_SecWeapons[id]) } if (to & EQUIP_PRI) { //Give Primary GiveUserFullWeapon(id, g_PrimWeapons[id]) } if (to & EQUIP_ARMOR) { //Give Armor if (g_mAutoArmor || g_mArmor[id]) { new armor = g_mArmor[id] ? 2 : g_Armor cs_set_user_armor(id, DEFAULT_ARMOR, CsArmorType:armor) } } if (to & EQUIP_GREN) { //Give Nades if (g_mNades[id] || g_mAutoNades) { if (g_Nade) { GiveUserFullWeapon(id,"weapon_hegrenade") } if (g_Smoke) { GiveUserFullWeapon(id, "weapon_smokegrenade") } if (g_Flash && fnadesnum) { GiveUserFullWeapon(id, "weapon_flashbang") if (fnadesnum == 2) { GiveUserFullWeapon(id, "weapon_flashbang") } } } } if (to & EQUIP_ITEMS) { if (g_DefuseKit && (cs_get_user_team(id) == CS_TEAM_CT)) { cs_set_user_defuse(id, 1) } if (g_NightVision) { cs_set_user_nvg(id, 1) } } } GiveUserFullWeapon(id, const wp[]) { /** First check to make sure the user does not have a weapon in this slot */ new wpnid = get_weaponid(wp) new weapons[MAX_WEAPONS], num new name[24], weap new slot if (wpnid == 0) { if (equal(wp, "weapon_shield")) { slot = SLOT_PRIMARY wpnid = -1 } } else { slot = g_WeaponSlots[wpnid] } if ((slot == SLOT_SECONDARY || slot == SLOT_PRIMARY) && wpnid > 0) { get_user_weapons(id, weapons, num) for (new i=0; i<num; i++) { weap = weapons[i] if (weap == wpnid) { continue } if (g_WeaponSlots[weap] == slot) { if (slot == SLOT_SECONDARY && cs_get_user_shield(id)) { //temporary fix! drop_with_shield(id, weap) } else { get_weaponname(weap, name, 23) csdm_force_drop(id, name) } } } } else if (slot == SLOT_PRIMARY && wpnid == -1 && cs_get_user_shield(id)) { return } if (slot == SLOT_PRIMARY && cs_get_user_shield(id) && wpnid > 0) { csdm_fwd_drop(id, -1, "weapon_shield") } new item_id = csdm_give_item(id, wp) if (item_id > 0) { if (wpnid == CSW_M4A1) { cs_set_weapon_silen(item_id, g_Silenced[id][SILENCED_M4A1], 1) } else if (wpnid == CSW_USP) { cs_set_weapon_silen(item_id, g_Silenced[id][SILENCED_USP], 1) } } if (wpnid > 0) { new bpammo = g_MaxBPAmmo[wpnid] if (bpammo) { cs_set_user_bpammo(id, wpnid, bpammo) } } } // MAIN FUNCTION OF THE PLUGIN public csdm_PostSpawn(player) { if (is_user_bot(player)) { new randPrim = random_num(0, g_iNumBotPrim-1) new randSec = random_num(0, g_iNumBotSec-1) // By our lMOSTeast favorite guy KWo RIP - 02.11.2005. new randArm = random_num(0, 2) new randGre = random_num(0, 2) GiveUserFullWeapon(player, g_BotPrim[randPrim]) GiveUserFullWeapon(player, g_BotSec[randSec]) g_mArmor[player] = (g_mArmorStatus && randArm) g_mNades[player] = (g_mNadeStatus && randGre) if (g_mAutoArmor || g_mArmor[player]) { equipUser(player, EQUIP_ARMOR) } if (g_mAutoNades || g_mNades[player]) { equipUser(player, EQUIP_GREN) } if (g_DefuseKit) { equipUser(player, EQUIP_ITEMS) } } else { if (g_mShowuser[player]) { g_MenuState[player] = 1 menu_display(player, g_EquipMenuID, 0) return PLUGIN_HANDLED } else { g_MenuState[player] = 0 equipUser(player, EQUIP_ALL) } } return PLUGIN_CONTINUE } public enableMenu(id) { if (!csdm_active()) return PLUGIN_CONTINUE if (!g_mShowuser[id]) { g_mShowuser[id] = true client_print(id, print_chat, "[CSDM] ON.") if (!g_MenuState[id]) { g_MenuState[id] = 1 menu_display(id, g_EquipMenuID, 0) return PLUGIN_HANDLED } } else { client_print(id, print_chat, "[CSDM] ON.") } return PLUGIN_HANDLED }
Użytkownik Blaaq edytował ten post 18.01.2021 18:03
_.-*`PaniQ*-._
18.01.2021
Znalazłem coś takiego, przerobi ktoś na:
Karabiny [%]
Pistolety [%]
Snajperki [%]
Kosy [%]
#include <amxmodx> #include <fakemeta> #include <hamsandwich> enum _:TASKS { TASK_VOTE_INIT = 1445, TASK_VOTE_TIME, TASK_VOTE_COUNTDOWN }; enum _:MODES { NORMAL = 0, HEAD }; #define get_percent(%1,%2) ( ( %1 ) * 100 ) / ( %1 + %2 ) #define SERVER_TAG " DM VOTE " new g_iMaxPlayers, g_iOnlyHead, g_iVoteTime, g_iVoteCountdown = 7; new cvar_votetime, cvar_blockknife_dmg, cvar_voteinit_time; new g_vote[ 2 ], g_hasvoted[ 33 ]; new const sound_countdown[ ][ ] = { "misc/one.wav", "misc/two.wav", "misc/three.wav", "misc/four.wav", "misc/five.wav" }; public plugin_precache( ) { for( new i = 0; i < sizeof sound_countdown; i++ ) precache_sound( sound_countdown[ i ] ); } public plugin_init( ) { register_plugin( "DeatMatch Mod's Vote", "v1.0", "Neeeeeeeeeel.-" ); register_dictionary( "dm_vote.txt" ); cvar_votetime = register_cvar( "dm_vote_time", "15" ); cvar_blockknife_dmg = register_cvar( "dm_block_knife_dmg", "1" ); cvar_voteinit_time = register_cvar( "dm_voteinit_time", "40" ); RegisterHam( Ham_TraceAttack, "player", "fw_TraceAttack" ); g_iMaxPlayers = get_maxplayers( ); set_task( get_pcvar_float( cvar_voteinit_time ), "show_vote", TASK_VOTE_INIT ); } public client_putinserver( id ) g_hasvoted[ id ] = 0; public show_vote( ) { if( g_iVoteCountdown == 7 ) { g_iVoteCountdown--; set_task( 1.0, "show_vote", TASK_VOTE_COUNTDOWN, _, _, "b" ); return PLUGIN_HANDLED; } else if( g_iVoteCountdown ) { set_hudmessage( 85, 255, 0, -1.0, 0.09, 1, 6.0, 1.0 ); if( g_iVoteCountdown != 1 ) { for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) show_hudmessage( i, "%L", i, "VOTE_STARTS_IN", g_iVoteCountdown - 1 ) } PlaySound( g_iVoteCountdown - 2 ); g_iVoteCountdown--; return PLUGIN_HANDLED; } else { for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) show_hudmessage( i, "%L", i, "VOTE_STARTING" ) } } } remove_task( TASK_VOTE_COUNTDOWN ); g_iVoteTime = get_pcvar_num( cvar_votetime ); set_task( 1.0, "time_vote", TASK_VOTE_TIME, _, _, "b" ); for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) show_menu_vote( i ); } return PLUGIN_HANDLED; } public time_vote( ) { if( !g_iVoteTime ) { remove_task( TASK_VOTE_TIME ); finish_vote( ); return PLUGIN_HANDLED; } set_hudmessage( 85, 255, 0, -1.0, 0.09, 1, 6.0, 1.0 ); for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) show_hudmessage( i, "%L", i, "VOTE_FINISHS_IN", g_iVoteTime ); } g_iVoteTime--; return PLUGIN_HANDLED; } public finish_vote( ) { new result = g_vote[ HEAD ] == g_vote[ NORMAL ] ? 0 : 1; for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) { if( !result ) ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_NOWINNER" ); else { ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_FINISH", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ HEAD ], g_vote[ NORMAL ] ) : 0, ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ NORMAL ], g_vote[ HEAD ] ) : 0 ); ChatColor( i, "!g[%s] %L", SERVER_TAG, i, "VOTE_RESULT", g_vote [ HEAD ] > g_vote[ NORMAL ] ? "Only Headshot mode" : "Normal mode" ); } } } g_iOnlyHead = g_vote[ HEAD ] > g_vote[ NORMAL ] ? true : false; set_cvar_num( "sv_restart", 1 ); } public PlaySound( sound ) client_cmd( 0, "spk ^"%s^"", sound_countdown[ sound ] ); public show_menu_vote( id ) { new data[ 64 ]; formatex( data, charsmax( data ), "%L", id, "VOTE_MENU_TITLE" ); new Menu = menu_create( data, "menu_vote" ); formatex( data, charsmax( data ), "Normal mode \r[\y%d%%\r]", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ NORMAL ], g_vote[ HEAD ] ) : 0 ); menu_additem( Menu, data, "1" ); formatex( data, charsmax( data ), "Only Headshot \r[\y%d%%\r]", ( g_vote[ HEAD ] + g_vote[ NORMAL ] ) > 0 ? get_percent( g_vote[ HEAD ], g_vote[ NORMAL ] ) : 0 ); menu_additem( Menu, data, "2" ); menu_setprop( Menu, MPROP_EXIT, MEXIT_NEVER ); menu_display( id, Menu ); } public menu_vote( id, Menu, item ) { if( g_hasvoted[ id ] ) return PLUGIN_HANDLED; new uName[ 33 ]; get_user_name( id, uName, charsmax( uName ) ); if( item > 1 ) //bugfix item = 0; g_vote[ item ]++; ChatColor( 0, "!g[%s] %L", SERVER_TAG, id, "VOTE_HAS_CHOOSEN", uName, !item ? "Normal" : "OnlyHead" ); for( new i = 1; i <= g_iMaxPlayers; i++ ) { if( is_user_connected( i ) ) show_menu_vote( i ); } g_hasvoted[ id ] = true; return PLUGIN_HANDLED; } public fw_TraceAttack( victim, attacker, Float:damage, Float:direction[3], trace, damageBits ) { if( get_user_weapon( attacker ) == CSW_KNIFE && get_pcvar_num( cvar_blockknife_dmg ) ) return HAM_SUPERCEDE; else if( g_iOnlyHead && victim != attacker && ( 1 <= attacker <= g_iMaxPlayers ) && get_tr2( trace, 9/*TR_iHitGroup*/ ) != HIT_HEAD ) { set_tr2( trace, TR_flFraction, 1.0 ); return HAM_SUPERCEDE; } return HAM_IGNORED; } stock ChatColor( const id, const input[ ], any:... ) { new count = 1, players[ 32 ]; static msg[ 191 ]; vformat( msg, 190, input, 3 ); replace_all( msg, 190, "!g", "^4" ); replace_all( msg, 190, "!y", "^1" ); replace_all( msg, 190, "!team", "^3" ); replace_all( msg, 190, "!team2", "^0" ); if( id ) players[ 0 ] = id; else get_players( players, count, "ch" ); for( new i = 0; i < count; i++ ) { if( is_user_connected( players[ i ] ) ) { message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] ) write_byte( players[ i ] ); write_string( msg ); message_end( ); } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par } */