RSSy MYGO.pl Opublikowano Październik 4, 2020 o 13:36 RSSy Udostępnij Opublikowano Październik 4, 2020 o 13:36 How can I provide a dedicated weapon to VIP? Edit this plugin to make it understandable The name of the weapon is Xbowx Not w_Xbowx.mdl is (p) or (v) _Xbowx.mdl PHP Code: #include <amxmodx>#include <amxmisc>#include <cstrike>#include <fakemeta>#include <fakemeta_util>#include <hamsandwich>#include <fun>#define PLUGIN "VIP Plugin"#define VERSION "5.4.5"#define AUTHOR "Unkolix"#define VIP_FLAG ADMIN_LEVEL_H#define MAXPLAYERS 32 + 1#define ALPHA_FULLBLINDED 255#define g_Buffer 1536#define find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)static const COLOR[] = "^x04" //greenconst m_flFlashedUntil = 514;const m_flFlashedAt = 515;const m_flFlashHoldTime = 516;const m_flFlashDuration = 517;const m_iFlashAlpha = 518;const m_flFlashDuration = 517;new gMenuUsed[33];new money_per_damage, money_kill_bonus, money_headshot_bonus;new health_add, health_hs_add, health_max;new nKiller, nKiller_hp, nHp_add, nHp_max;new g_sniper_active, g_menu_active, g_map_active, g_awp_active, awp_active;new g_menu_uses, g_awp_ct, g_awp_tr, g_menu_round, g_awp_menu_round, g_sniper_pickup;new map_active, CT, TR, menu_round, awp_menu_round, menu_uses;new CurrentRound;new bool:g_bHasBombSite;new bool:g_freezetime;new bool:bAwpMap = false;new bool:g_bCurrentMapIsInList = false; new bool:g_bCurrentAWPMapIsInList = false;new bool:g_bRoundEnd;new iTCount, iCTCount;new g_type, g_enabled, g_recieved, bool:g_showrecieved, g_hudmsg1, g_hudmsg2;new g_models_enabled, models_enabled;new const VIP_CT[] = "vip_ct";new const VIP_CT_MODEL[] = "models/player/gs/vip_ct/vip_ct.mdl";new const VIP_TR[] = "vip_tr";new const VIP_TR_MODEL[] = "models/player/gs/vip_tr/vip_tr.mdl";new player_model[33][32];new bool:g_model[33];new g_color_msg, color_msg, g_menu_number_color, menu_number_color;new g_vips_list, vips_list;new const vipmenu[][] ={ //Commands to call VIP menu "say /vipmenu", "say vipmenu", "say_team /vipmenu", "say_team vipmenu", "say vmenu", "say_team vmenu"} new const VIPweapons[][] ={ //Weapons which normal players can't pick up. "awp", "sg550", "g3sg1"}new const wantvip[][] ={ //Command to call wantvip.txt motd window "say /wantvip", "say wantvip", "say_team /wantvip", "say_team wantvip", "say /noriuvip", "say noriuvip", "say_team /noriuvip", "say_team noriuvip", "say /chciecvip", "say chciecvip", "say_team /chciecvip", "say_team chciecvip", "say /willenvip", "say willenvip", "say_team /willenvip", "say_team willenvip", "say /vouloirvip", "say vouloirvip", "say_team /vouloirvip", "say_team vouloirvip"}new const vipguns[][] ={ "weapon_awp", "weaopn_g3sg1", "weapon_sg550"}public plugin_init(){ register_plugin(PLUGIN, VERSION, AUTHOR) register_event("HLTV", "event_new_round", "a", "1=0", "2=0"); register_logevent("LogEvent_RoundStart", 2, "1=Round_Start" ); register_logevent("LogEvent_RoundEnd", 2, "1=Round_End"); register_logevent("LogEvent_GameCommencing", 2, "0=World triggered", "1=Game_Commencing"); register_event("TextMsg","Event_RoundRestart","a","2&#Game_w"); register_event("DeathMsg", "hook_death", "a", "1>0"); register_event("DeathMsg","death_msg","a"); register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0"); register_event("Damage","Damage","b"); RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1); RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon"); RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon"); register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue"); register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged"); for(new i = 0; i < sizeof vipmenu; i++) register_clcmd(vipmenu[i], "cmdvipmenu") //Checks const vipmenu, that is above plugin_init for(new i = 0; i < sizeof VIPweapons; i++) register_clcmd(VIPweapons[i], "HandleCmd") //Checks const VIPweapons, that is above plugin_init for(new i = 0; i < sizeof wantvip; i++) register_clcmd(wantvip[i], "ShowMotd") register_clcmd("say /vips","print_adminlist") //If someone says /vips it starts the function print_adminlist register_cvar("vip_contactinfo", "contact info here", FCVAR_SERVER) register_cvar("vip_price", "your price here", FCVAR_SERVER) money_per_damage = register_cvar("vip_money_per_damage","3") //How many $ VIP will get per 1 damage money_kill_bonus = register_cvar("vip_money_kill_bonus","200") //How many $ VIP will get per kill money_headshot_bonus = register_cvar("vip_money_hs_bonus","500") //How many $ VIP will get per head shot kill health_add = register_cvar("vip_hp", "15") //How many hp VIP will get per kill health_hs_add = register_cvar("vip_hp_hs", "30") //How many hp VIP will get per head shot kill health_max = register_cvar("vip_max_hp", "100") //How many hp VIP can have in total g_sniper_active = register_cvar("vip_sniper_active", "1") //Who can buy SNIPERS? 0 - everyone, 1 - only VIP g_menu_active = register_cvar("vip_menu_active", "1") //Will VIP get VIP menu? 0 - won't get the menu, 1 - will get the menu. g_map_active = register_cvar("vip_map_active", "1") //VIP menu works on the maps in mapnames.ini? 0 - Yes (VIP will get VIP menu), 1 - No g_awp_active = register_cvar("vip_awp_active", "1") // 1 - VIP can get AWP choice; 0 - cann't g_menu_uses = register_cvar("vip_menu_uses", "1") // How many times VIP can use VIP menu per round? g_awp_ct = register_cvar("vip_awp_ct", "5") //How many counter terrorist must be in a team to AWP choice show up g_awp_tr = register_cvar("vip_awp_tr", "5") //How many terrorist must be in a team to AWP choice show up g_menu_round = register_cvar("vip_menu_round", "2") //Round from which VIP will get VIP menu g_awp_menu_round = register_cvar("vip_awp_menu_round", "3") //Round from which VIP will get AWP choice g_sniper_pickup = register_cvar("vip_sniper_pickup", "1") //0 - everyone can pickup snipers, 1 - only VIP g_recieved = register_cvar("vip_bulletdamage_recieved","1") //0 - bullet damage disabled, 1 - show damage done, 2 - show damage done, but not via wall g_type = register_cvar("vip_bulletdamage","1") // Enable or disable showing recieved damage g_models_enabled = register_cvar("vip_models", "1") //0 - VIP models disabled, 1 - enabled. g_color_msg = register_cvar("vip_colored_text_message", "1")// Print /vips and info about vip text. 1 - colored, 0 - normal g_menu_number_color = register_cvar("vip_menu_number_color", "0") //0 - red, 1 - yellow, 2 - white, 3 - grey. g_vips_list = register_cvar("vip_show_list", "3") // /vips show. 0 - off, 1 - chat message, 2 - motd window. g_hudmsg1 = CreateHudSyncObj() g_hudmsg2 = CreateHudSyncObj() if( find_ent_by_class(-1, "func_bomb_target") || find_ent_by_class(-1, "info_bomb_target") ) //Checks if the map has bombsite { g_bHasBombSite = true; //If the map has bombsite it is set to true } get_user_msgid("ScreenFade") register_dictionary( "vip.txt" );}public plugin_cfg(){ map_active = get_pcvar_num (g_map_active); //Gets the value of g_map_active awp_active = get_pcvar_num (g_awp_active); //Gets the value of g_awp_active CT = get_pcvar_num (g_awp_ct); //Gets the value of g_awp_ct TR = get_pcvar_num (g_awp_tr); //Gets the value of g_awp_tr menu_round = get_pcvar_num (g_menu_round); awp_menu_round = get_pcvar_num (g_awp_menu_round); menu_uses = get_pcvar_num (g_menu_uses); models_enabled = get_pcvar_num(g_models_enabled); color_msg = get_pcvar_num(g_color_msg); menu_number_color = get_pcvar_num(g_menu_number_color); vips_list = get_pcvar_num(g_vips_list) new szmapnames[128], szData[32], szCurrentMap[32], szawpmapnames[128]; format( szmapnames, 128, "addons/amxmodx/configs/mapnames.ini" ) if(!file_exists(szmapnames)) { server_print("[VIP] File %s is missing!", szmapnames); server_print("[VIP] File %s is created.", szmapnames); write_file(szmapnames, "awp_") write_file(szmapnames, "cs_deagle") write_file(szmapnames, "knf_") write_file(szmapnames, "1hp_") write_file(szmapnames, "aim") } if(file_exists(szmapnames)) { get_configsdir(szmapnames, charsmax(szmapnames)); // Get the AMX Mod X configs directory (folder). add(szmapnames, charsmax(szmapnames), "/mapnames.ini"); // Add your filename to the filepath. get_mapname(szCurrentMap, charsmax(szCurrentMap)); // Get the current map. new f = fopen(szmapnames, "rt"); // Open the file. while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). { fgets(f, szData, charsmax(szData)); // Get all text from current line. trim(szData); // Trim off the new line and carriage return characters. if( containi(szCurrentMap, szData) != -1 ) // Check if the current map is equal to the map listed on this line. { g_bCurrentMapIsInList = true; // Set boolean to true so that you know if the map was in the file. break; // Stop looping (reading the file) because you found what you came for. } } fclose(f); // Close the file. } format( szawpmapnames, 128, "addons/amxmodx/configs/awpmapnames.ini" ) if(!file_exists(szawpmapnames)) { server_print("[VIP] File %s is missing!", szawpmapnames); server_print("[VIP] File %s is created.", szawpmapnames); write_file(szawpmapnames, "2x2") write_file(szawpmapnames, "3x3") write_file(szawpmapnames, "4x4") write_file(szawpmapnames, "cs_max") write_file(szawpmapnames, "aim") } if(file_exists(szawpmapnames)) { //Now lets check if current map is in awpmapnames.ini get_configsdir(szawpmapnames, charsmax(szawpmapnames)); // Get the AMX Mod X configs directory (folder). add(szawpmapnames, charsmax(szawpmapnames), "awpmapnames.ini"); // Add your filename to the filepath. get_mapname(szCurrentMap, charsmax(szCurrentMap)); // Get the current map. new f = fopen(szawpmapnames, "rt"); // Open the file. while( !feof(f) ) // Loop until it finds the End Of the File (aka EOF). { fgets(f, szData, charsmax(szData)); // Get all text from current line. trim(szData); // Trim off the new line and carriage return characters. if( containi(szCurrentMap, szData) != -1 ) // Check if the current map is equal to the map listed on this line. { g_bCurrentAWPMapIsInList = true; // Set boolean to true so that you know if the map was in the file. break; // Stop looping (reading the file) because you found what you came for. } } fclose(f); // Close the file. }}public plugin_precache() { if(models_enabled == 1) { precache_model(VIP_TR_MODEL) precache_model(VIP_CT_MODEL) }} public event_new_round(id){ g_freezetime = false; // Freeze time has ended, so lets set it to false g_enabled = get_pcvar_num(g_type) if(get_pcvar_num(g_recieved)) g_showrecieved = true}public LogEvent_RoundStart(id){ g_freezetime = true; g_bRoundEnd = false; gMenuUsed[id] = 0; iTCount = 0; iCTCount = 0; CurrentRound++; new players[32], player, pnum; get_players(players, pnum, "a"); for ( new i; i < pnum; i++ ) { switch( cs_get_user_team( players[i] ) ) { case CS_TEAM_T: iTCount++; case CS_TEAM_CT: iCTCount++; } } for(new i = 0; i < pnum; i++) { player = players[i]; if (!get_pcvar_num(g_menu_active)) return PLUGIN_CONTINUE if( CurrentRound >= menu_round && get_user_flags(id) & VIP_FLAG ) { Showrod(player); } } return PLUGIN_CONTINUE}public LogEvent_RoundEnd(){ g_bRoundEnd = true;}public Event_RoundRestart(id){ CurrentRound=0;}public LogEvent_GameCommencing(id){ CurrentRound=0;}public hook_death(){ new hp_added[64]; // Killer id nKiller = read_data(1) if(is_user_alive(nKiller)) { if ( (read_data(3) == 1) && (read_data(5) == 0) ) { nHp_add = get_pcvar_num (health_hs_add) } else nHp_add = get_pcvar_num (health_add) nHp_max = get_pcvar_num (health_max) // Updating Killer HP if(!(get_user_flags(nKiller) & VIP_FLAG)) return; nKiller_hp = get_user_health(nKiller) nKiller_hp += nHp_add // Maximum HP check if (nKiller_hp > nHp_max) nKiller_hp = nHp_max set_user_health(nKiller, nKiller_hp) // Hud message "Healed +15/+30 hp" if(nKiller_hp < nHp_max) { format(hp_added, sizeof(hp_added), "%L", nKiller, "HP_ADDED") set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1) show_hudmessage(nKiller, hp_added, nHp_add) } // Screen fading if(!get_user_flashed(nKiller)) //Checks if user is not flashed { message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, nKiller) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(0) write_byte(0) write_byte(200) write_byte(75) message_end() } }}public death_msg(){ if(read_data(1)<=MAXPLAYERS && read_data(1) && read_data(1)!=read_data(2)) cs_set_user_money(read_data(1),cs_get_user_money(read_data(1)) + get_pcvar_num(money_kill_bonus) - 300)}public on_damage(id){ if(g_enabled) { static attacker; attacker = get_user_attacker(id) static damage; damage = read_data(2) if(g_showrecieved) { set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1) ShowSyncHudMsg(id, g_hudmsg2, "%i^n", damage) } if(is_user_connected(attacker)) { switch(g_enabled) { case 1: { set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1) ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage) } case 2: { if(fm_is_ent_visible(attacker,id)) { set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1) ShowSyncHudMsg(attacker, g_hudmsg1, "%i^n", damage) } } } } }}public Damage(id){ new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint) if(attacker<=MAXPLAYERS && is_user_alive(attacker) && attacker!=id) if(get_user_flags(id) & VIP_FLAG) { new money = read_data(2) * get_pcvar_num(money_per_damage) if(hitpoint==1) money += get_pcvar_num(money_headshot_bonus) cs_set_user_money(attacker,cs_get_user_money(attacker) + money) }}public fwHamPlayerSpawnPost(id){ gMenuUsed[id] = 0; //Make sure that VIP didn't use VIP menu on his spawn if(is_user_alive(id)) { if(get_user_flags(id) & VIP_FLAG) { if(!g_bCurrentMapIsInList) //Checks if map is not the one written in mapnames.ini, if user is alive and if e has flag H { give_item(id, "weapon_hegrenade"); //Gives HE grenade give_item(id, "weapon_flashbang"); //Gives FB grenade give_item(id, "weapon_flashbang"); //Gives BF grenade give_item(id, "weapon_smokegrenade"); //Gives SG grenade give_item(id, "item_assaultsuit"); //Gives armor if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT) //Checks if current map has bombsite { give_item(id, "item_thighpack"); //Gives defuse kit } } if(models_enabled == 1) { if(cs_get_user_team(id) & CS_TEAM_T) { copy(player_model[id], sizeof(player_model), VIP_TR) new currentmodel[32]; fm_get_user_model(id, currentmodel, sizeof currentmodel - 1); if(!equal(currentmodel, player_model[id])) { fm_set_user_model(id, player_model[id]) } } else if(cs_get_user_team(id) & CS_TEAM_CT) { copy(player_model[id], sizeof(player_model), VIP_CT) new currentmodel[32]; fm_get_user_model(id, currentmodel, sizeof currentmodel - 1); if(!equal(currentmodel, player_model[id])) { fm_set_user_model(id, player_model[id]) } } } } }}public fw_TouchWeapon(weapon, id) { if (!get_pcvar_num(g_sniper_pickup)) //Checks if g_sniper_pickup is disactivated (set to 0) return PLUGIN_CONTINUE //If it is, let players pick up snipers if (!is_user_alive(id) || get_user_flags(id) & VIP_FLAG) { return HAM_IGNORED } static classname[32] pev(weapon, pev_classname, classname, charsmax(classname)) for(new i = 0; i < sizeof vipguns; i++) if (g_bCurrentMapIsInList && equal(classname, vipguns[i])) { //Sends a message that snipers are only for VIP client_print(id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP") return HAM_SUPERCEDE } return HAM_IGNORED} public fw_SetClientKeyValue(id, infobuffer, key[], value[]){ if (g_model[id] && equal(key, "model")) return FMRES_SUPERCEDE return FMRES_IGNORED}public fw_ClientUserInfoChanged(id, infobuffer){ if (!g_model[id]) return FMRES_IGNORED new currentmodel[32]; fm_get_user_model(id, currentmodel, sizeof currentmodel - 1); if(!equal(currentmodel, player_model[id])) fm_set_user_model(id, player_model[id]) return FMRES_IGNORED}public cmdvipmenu(id) { if ( is_user_alive(id) ) { if( get_user_flags(id) & VIP_FLAG ) { if ( CurrentRound < menu_round ) { client_print( id, print_center, "%L", id, "VIP_MENU_ROUND", menu_round ); //Sends a message that VIP can use VIP menu only from specific round } if ( map_active == 1 ) //Checks if map_active is 1 { if( g_bCurrentMapIsInList ) //Checks if current map is in mapnames list { client_print( id, print_center, "%L", id, "VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map } } if ( gMenuUsed[id] >= menu_uses ) { client_print( id, print_center, "%L", id, "VIP_MENU_PER_ROUND", menu_uses ); //Message that VIP can only take VIP menu few time that is set as VIPUsed } if ( !g_freezetime ) //Checks if freezetime is not over yet and if user is alive and he has flag H { client_print( id, print_center, "%L", id, "VIP_MENU_ONLY_FROM_ROUND_START" ); //Message that's set in vipplugin.txt as VIP_MENU_ONLY_FROM_ROUND_START } if(g_freezetime) //Checks if freezetime is over { if ( gMenuUsed[id] < menu_uses ) //Checks if VIP has already used VIP menu before, the amount of times we set as VIPUsed { if( CurrentRound >= menu_round ) //Checks if current round is more or equal to the round that is set as VIPMenuRound { if (!get_pcvar_num(g_menu_active)) //Checks if g_menu_active is disactivated (set to 0) return PLUGIN_CONTINUE //If so, VIP won't get VIP menu Showrod(id) //Shows VIP menu } } } } else // If user doesn't have VIP_FLAG { PrintText(id) //Sets a task in 0.1 seconds and starts PrintTect } } else if( get_user_flags(id) & VIP_FLAG ) //Checks if user is death and he have VIP_FLAG { client_print( id, print_center, "%L", id, "VIP_MENU_MUST_BE_ALIVE" ); //Sends a message that VIP must be alive to use VIP menu } else //If user is death and doesn't have VIP_FLAG { PrintText(id) //Prints PrintText } return PLUGIN_HANDLED;}public Showrod(id){ if (get_user_flags(id) & VIP_FLAG) //Checks if player has flag H { if (map_active) //Checks if map_active is 1 { if( g_bCurrentMapIsInList ) //Checks if current map is in mapnames.ini, if so print the message and cancels the menu showup { client_print( id, print_center, "%L", id, "VIP_MENU_WRONG_MAP" ); //Sends a message that VIP can't use VIP menu on that map return; //Stop VIP from getting the VIP menu } } if( g_bCurrentAWPMapIsInList ) //Checks if map is in awpmapnames.ini { bAwpMap = true //If so sets bAwpMap to true, so AWP choice would work in maps that are in awpmapnames.ini } new newmenu[64], choice_1[64], choice_2[64], choice_3[64] format(newmenu, sizeof(newmenu), "%L", id, "NEW_MENU"); //Shows a menu message that's set in vipplugin.txt as NEW_MENU_PRIMARY new menu = menu_create(newmenu, "Pressedrod"); //Creates menu that's in Pressedrod format(choice_1, sizeof(choice_1), "%L", id, "MENU_CHOICE_1"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_1 menu_additem(menu, choice_1, "1", 0); //Menu choice/case 1 format(choice_2, sizeof(choice_2), "%L", id, "MENU_CHOICE_2"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_2 menu_additem(menu, choice_2, "2", 0); //Menu choice/case 2 if ( iTCount >= TR && iCTCount >= CT ) //Checks that each team has 5 or more people to AWP choice appear in the menu { if (awp_active == 1) //Checks if vips can get awp choice, 0 - no; 1 - yes { if ( CurrentRound >= awp_menu_round ) //Checks if current round is more or equal to 3, so AWP choice would come out { if( !bAwpMap ) //Checks if map is not one in awpmapnames.xfg, if so shows the fifth menu item { format(choice_3, sizeof(choice_3), "%L", id, "MENU_CHOICE_3"); //Shows a menu message that's set in vipplugin.txt as MENU_CHOICE_PRIMARY_5 menu_additem(menu, choice_3, "3", 0); //Menu choice/case 5 } } } } new menu_exit_name[64]; format(menu_exit_name, sizeof(menu_exit_name), "%L", id, "MENU_EXIT_NAME") menu_setprop(menu, MPROP_EXITNAME, menu_exit_name) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); if(menu_number_color == 1) //Checks if menu_number_color is set to 3 { menu_setprop(menu,MPROP_NUMBER_COLOR,"\y"); // ets the number color to yello } else if(menu_number_color == 2) //Checks if menu_number_color is set to 3 { menu_setprop(menu,MPROP_NUMBER_COLOR,"\w"); //Sets the number color to white } else if(menu_number_color == 3) //Checks if menu_number_color is set to 3 { menu_setprop(menu,MPROP_NUMBER_COLOR,"\d"); //Sets the number color to grey } else //In any other case the menu_number_color is set to { menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); //Sets the number color to red } menu_display(id, menu, 0) }}public Pressedrod(id, menu, item){ if( item == MENU_EXIT ) //Checks if player clicks menu exit (0) { menu_destroy(menu); //If so the menu will be destroyed return PLUGIN_HANDLED; } new iFlashes = cs_get_user_bpammo( id, CSW_FLASHBANG ); new HasC4[33], HasHE[33], HasSG[33]; new weapons = pev(id, pev_weapons) HasC4[id] = ( weapons & 1<<CSW_C4 ) HasHE[id] = ( weapons & 1<<CSW_HEGRENADE ) && cs_get_user_bpammo(id, CSW_HEGRENADE) HasSG[id] = ( weapons & 1<<CSW_SMOKEGRENADE ) && cs_get_user_bpammo(id, CSW_SMOKEGRENADE) new data[6], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); if(is_user_alive(id) && !g_bRoundEnd) { strip_user_weapons( id ); switch(key) { case 1: { give_item(id,"weapon_m4a1") //Gives M4A1 cs_set_user_bpammo(id, CSW_M4A1, 90); //Sets M4A1 back pack ammo to 90 client_print( id, print_center, "%L", id, "CHOSE_M4A1" ); //Shows a message that's set in vipplugin.txt as CHOSE_M4A1 } case 2: { give_item(id,"weapon_ak47") //Gives AK47 cs_set_user_bpammo(id, CSW_AK47, 90); //Sets AK47 back pack ammo to 90 client_print( id, print_center, "%L", id, "CHOSE_AK47" ); //Shows a message that's set in vipplugin.txt as CHOSE_AK47 } case 3: { give_item(id,"weapon_awp") //Gives AWP cs_set_user_bpammo(id, CSW_AWP, 30); //Sets AWP back pack ammo to 30 client_print( id, print_center, "%L", id, "CHOSE_AWP" ); //Shows a message that's set in vipplugin.txt as CHOSE_AWP } } if (HasC4[id]) { give_item(id, "weapon_c4"); cs_set_user_plant( id ); set_pev(id, pev_body, 1); } if (HasHE[id]) { give_item(id, "weapon_hegrenade") } if (HasSG[id]) { give_item(id, "weapon_smokegrenade"); } if( iFlashes > 0 ) { give_item( id, "weapon_flashbang" ); cs_set_user_bpammo( id, CSW_FLASHBANG, iFlashes ); } give_item(id,"weapon_knife") //Gives knife give_item(id,"weapon_deagle") //Gives deagle cs_set_user_bpammo(id, CSW_DEAGLE, 35); //Sets deagle back pack ammo to 35 if(g_bHasBombSite && cs_get_user_team(id) == CS_TEAM_CT) //Checks if current map has bombsite { give_item(id, "item_thighpack"); //Gives defuse kit } gMenuUsed[id]++ //Makes sure that VIP really made a choice } menu_destroy(menu); //Destroys menu return PLUGIN_CONTINUE}public HandleCmd(id){ if (!get_pcvar_num(g_sniper_active)) //Checks if g_awp_active is disactivated (set to 0) return PLUGIN_CONTINUE //If it is, let players buy snipers if(get_user_flags(id) & VIP_FLAG) //Checks if player has flag H return PLUGIN_CONTINUE client_print( id, print_center, "%L", id, "SNIPER_ONLY_FOR_VIP" ); //Sends a message that snipers are only for VIP return PLUGIN_HANDLED}public ShowMotd(id){ new contact[112]; get_cvar_string("vip_contactinfo", contact, 63) new price[112]; get_cvar_string("vip_price", price, 63) static MOTD[1501]; new len = formatex(MOTD, 1500,"<style type=text/css>body{background-color: #000000;font-family:Verdana,Tahoma;}</style>"); len += formatex(MOTD[len],1500-len,"<font size=2 color=#e0a518><b><center>%L</center></b></font><br /><font size=1 color=#c0c0ff><UL>", id, "MOTD_LINE_01"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_02"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_03"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_04"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_05"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_06"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_07"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_08"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI>", id, "MOTD_LINE_09"); len += formatex(MOTD[len],1500-len,"%L", id, "MOTD_LINE_10"); len += formatex(MOTD[len],1500-len,"<br>%L", id, "MOTD_LINE_11"); len += formatex(MOTD[len],1500-len,"<br>%L", id, "MOTD_LINE_12"); len += formatex(MOTD[len],1500-len,"<LI>%L</LI><br>", id, "MOTD_LINE_13"); len += formatex(MOTD[len],1500-len,"<font size=1 color=#00c000><strong>%L</strong></font>", id, "MOTD_LINE_14") len += formatex(MOTD[len],1500-len,"<br>%L %s", id, "MOTD_LINE_15", price) len += formatex(MOTD[len],1500-len,"<br>%L <font color=#FF6600>%s</font>", id, "MOTD_LINE_16", contact); new motd_name[64]; format(motd_name, 64, "%L", id, "WANTVIP_MOTD_NAME"); show_motd(id,MOTD, motd_name); return PLUGIN_HANDLED}public client_putinserver(id){ if (!task_exists(id + 1000)) set_task(30.0, "PrintText", id + 1000) //Checks if task already exist, if not print text set in public PrintText}public PrintText(id){ if(color_msg == 1) { client_print_color( id, "%L", id, "PRINT_TEXT_COLORED" ); //Message which is sent } else { client_print_color( id, "%L", id, "PRINT_TEXT" ); //Message which is sent }}public print_adminlist(user) { new id, count, x, len, adminnames[33][32]; for(id = 1 ; id <= MAXPLAYERS ; id++) if(is_user_connected(id)) if(get_user_flags(id) & VIP_FLAG) get_user_name(id, adminnames[count++], 31) if(vips_list == 2 || vips_list == 3) { new contact[112]; get_cvar_string("vip_contactinfo", contact, 63) new price[112]; get_cvar_string("vip_price", price, 63) new Data[g_Buffer]; len = formatex(Data[len], g_Buffer - len, "<html><center><font color=yellow>%L <font color=green>%s.<font color=yellow> %L <font color=green>%s</font><body bgcolor=Black>", user, "CONTACT", contact, user, "MOTD_LINE_15", price); len += formatex(Data[len], g_Buffer - len, "<br><table border=1 width=300 cellspacing=0 bordercolor=#4A4344 style=color:#56A5EC;text-align:center;>"); len += formatex(Data[len], g_Buffer- len, "<tr><td><b>#</b></td><td><b>%L</b></td></tr>", user, "VIPS_ONLINE"); if(count > 0) { for(x = 0 ; x < count ; x++) { len += formatex(Data[len], g_Buffer - len, "<tr><td><font color=Red>%d</font></td>", x + 1); len += formatex(Data[len], g_Buffer - len, "<td>%s</td></tr>", adminnames[x]); } } len += formatex(Data[len],g_Buffer - len,"</center></body></html>"); new motd_name[64]; format(motd_name, 64, "%L", user, "WANTVIP_MOTD_NAME"); show_motd(user, Data, motd_name); } if(vips_list == 1 || vips_list == 3) { new message[256], contact[112] if(color_msg == 1) { len = format(message, 255, "%L", user, "VIPS_ONLINE_COLORED", COLOR) } else { len = format(message, 255, "%L", user, "VIPS_ONLINE") } if(count > 0) { for(x = 0 ; x < count ; x++) { len += format(message[len], 255-len, " %s%s ", adminnames[x], x < (count-1) ? ", ":"") if(len > 96 ) { client_print_color(user, message) if(color_msg == 1) { len = format(message, 255, "%s",COLOR) } else { len = format(message, 255, "") } } } client_print_color(user, message) } else { len += format(message[len], 255-len, " %L", id, "NO_VIPS_ONLINE") client_print_color(user, message) } get_cvar_string("vip_contactinfo", contact, charsmax(contact)) if(contact[0]) { if(color_msg == 1) { client_print_color(user, "%L %s", user, "CONTACT_COLORED", contact) } else { client_print_color(user, "%L %s", user, "CONTACT", contact) } } }}stock fm_set_user_model(player, modelname[]){ engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname) g_model[player] = true}stock fm_get_user_model(player, model[], len){ engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)}stock fm_reset_user_model(player){ g_model[player] = false dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))}get_user_flashed(id, &iPercent=0) { new Float:flFlashedAt = get_pdata_float(id, m_flFlashedAt) if( !flFlashedAt ) { return 0 } new Float:flGameTime = get_gametime() new Float:flTimeLeft = flGameTime - flFlashedAt new Float:flFlashDuration = get_pdata_float(id, m_flFlashDuration) new Float:flFlashHoldTime = get_pdata_float(id, m_flFlashHoldTime) new Float:flTotalTime = flFlashHoldTime + flFlashDuration if( flTimeLeft > flTotalTime ) { return 0 } new iFlashAlpha = get_pdata_int(id, m_iFlashAlpha) if( iFlashAlpha == ALPHA_FULLBLINDED ) { if( get_pdata_float(id, m_flFlashedUntil) - flGameTime > 0.0 ) { iPercent = 100 } else { iPercent = 100-floatround(((flGameTime - (flFlashedAt + flFlashHoldTime))*100.0)/flFlashDuration) } } else { iPercent = 100-floatround(((flGameTime - flFlashedAt)*100.0)/flTotalTime) } return iFlashAlpha }stock client_print_color(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^x04"); // Green Color replace_all(msg, 190, "!n", "^x01"); // Default Color replace_all(msg, 190, "!t", "^x03"); // Team Color 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(); } } } } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi