Raised This Month: $32 Target: $400
 8% 

Help edit VIP plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
vase070
Senior Member
Join Date: Jun 2011
Old 07-15-2018 , 03:36   Help edit VIP plugin
Reply With Quote #1

hi all can someone make these changes to this vip plugin i would greatly appreciate it

make the vip menu to close when player leaves the buy zone.. its very unfair that player can open vip menu anytime and anywhere on map ...
perhaps a cvar like this would be great

menu_buyzone_only 1/0 - the vip menu will work only while player is in buyzone

also another cvar like this to control how much time the vip menu will be active [making this based on mp_buytime would be great]

menu_buytime_lock 1/0 - close and lock the VIP menu when mp_buytime ends [to make it more clear if mp_buytime is "0.25" the vip menu should close and lock 15 secs after players spawns which is the same amount of time he has to buy weapons]

a cvar to disable "/vipmenu" say command would be great
also the vipmenu should not close when selecting the unavailable weapons, for example if i press 4 for AWP while it's still not unavailable the menu will close ...

hope someone here can make these changes as i am a bit noob i coding

Code:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta_util>

#define PLUGIN "[SWE] VipSystem"
#define VERSION "1.0"
#define AUTHOR "IIPU3PAK"

static 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)
static const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new gRoundNumber, gBufCount
new gUseRound[33], ITEM[33], gBufName[32][32], gBufNameDeactivate[32][32], gBufWeapon[32][32], gBufRound[32],  who[33] = 0 //0 - Игрок, 1 - VIP
new bool:BlockMaps = false

enum _:cvars
{
	TAB, USE_ROUND, FLAGS, AUTO_OPEN, MAX_HP, KILL, HEAD, KNIFE, M_KILL, M_HEAD, M_KNIFE, CONNECT, DROP_OR_STRIP, OPEN_ROUND
}
new g_Cvars[cvars]

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

	register_clcmd("say /vipmenu", "VipMenu")
	register_clcmd("say_team /vipmenu", "VipMenu")
	register_clcmd("vipmenu", "VipMenu")
	
	RegisterHam(Ham_Spawn, "player", "HamSpawn", 1)
	register_event("HLTV", "StartRound", "a", "1=0", "2=0")
	register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
	register_event("ResetHUD", "event_ResetHUD", "be")
	register_event("DeathMsg", "death", "a", "1>0")
	
	register_dictionary("swe_vipSystem.txt")
}

public client_putinserver(id)
{
	if(get_user_flags(id) & g_Cvars[FLAGS])
		who[id] = 1
	else
		who[id] = 0
	
	if(g_Cvars[CONNECT] == 1)
	{
		if(who[id] >= 1)
		{
			new iName[32]
			get_user_name(id, iName, 31)
			ChatColor(0, "%L %L",LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_CONNECT", iName)
		}
	}
}

public client_disconnect(id)
	who[id] = 0

public plugin_cfg()
{
	new block = 0
	new Buffer[64], BufCvar[33], BufValue[33]
	new const iniPatch[] = "addons/amxmodx/configs/swe_vipSystem.ini"
	new FileID = fopen(iniPatch, "rt")
	new getMap[33]; get_mapname(getMap, charsmax(getMap))
	
	if(!file_exists(iniPatch))
		set_fail_state("^"addons/amxmodx/configs/swe_vipSystem.ini^" Not Found!")
	
	while(!feof(FileID))
	{
		fgets(FileID, Buffer, charsmax(Buffer))
		trim(Buffer)
		
		if(!Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#' || Buffer[0] == '/' && Buffer[1] == '/')
			continue
		
		if(equal(Buffer, "[main]"))
		{
			block = 1
			continue
		}
		else if(equal(Buffer, "[menu]"))
		{
			block = 2
			continue
		}
		else if(equal(Buffer, "[block]"))
		{
			block = 3
			continue
		}
		
		switch(block)
		{
			case 1:
			{
				parse(Buffer, BufCvar, charsmax(BufCvar), BufValue, charsmax(BufValue))
				
				if(equal("flags", BufCvar)) g_Cvars[FLAGS] = read_flags(BufValue)
				else if(equal("item", BufCvar)) ITEM = BufValue
				else if(equal("tab", BufCvar)) g_Cvars[TAB] = str_to_num(BufValue)
				else if(equal("connect", BufCvar)) g_Cvars[CONNECT] = str_to_num(BufValue)
				else if(equal("drop_or_strip", BufCvar)) g_Cvars[DROP_OR_STRIP] = str_to_num(BufValue)
				
				else if(equal("menu_open", BufCvar)) g_Cvars[AUTO_OPEN] = str_to_num(BufValue)
				else if(equal("menu_use_round", BufCvar)) g_Cvars[USE_ROUND] = str_to_num(BufValue)
				else if(equal("menu_open_round", BufCvar)) g_Cvars[OPEN_ROUND] = str_to_num(BufValue)
				
				else if(equal("vampire_max_hp", BufCvar)) g_Cvars[MAX_HP] = str_to_num(BufValue)
				else if(equal("vampire_kill", BufCvar)) g_Cvars[KILL] = str_to_num(BufValue)
				else if(equal("vampire_kill_head", BufCvar)) g_Cvars[HEAD] = str_to_num(BufValue)
				else if(equal("vampire_kill_knife", BufCvar)) g_Cvars[KNIFE] = str_to_num(BufValue)
				
				else if(equal("money_kill", BufCvar)) g_Cvars[M_KILL] = str_to_num(BufValue)
				else if(equal("money_kill_head", BufCvar)) g_Cvars[M_HEAD] = str_to_num(BufValue)
				else if(equal("money_kill_knife", BufCvar)) g_Cvars[M_KNIFE] = str_to_num(BufValue)
			}
			case 2:
			{
				new first[32], second[32], third[32], four[32]
				parse(Buffer, first, charsmax(first), second, charsmax(second), third, charsmax(third), four, charsmax(four))
				
				copy(gBufName[gBufCount], charsmax(gBufName[]), first)
				copy(gBufNameDeactivate[gBufCount], charsmax(gBufNameDeactivate[]), second)
				copy(gBufWeapon[gBufCount], charsmax(gBufWeapon[]), third)
				gBufRound[gBufCount] = str_to_num(four)
				gBufCount++
			}
			case 3:
			{
				if(equal(getMap, Buffer))
				{
					BlockMaps = true
					break
				}
			}
		}
	}
	fclose(FileID)
}

public StartRound()
	gRoundNumber++

public RestartRound()
	gRoundNumber = -1

public VipMenu(id)
{
	if(who[id] == 0)
	{
		ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_NO_ACCESS")
		return PLUGIN_HANDLED
	}
	
	if(BlockMaps)
	{
		ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_BLOCK")
		return PLUGIN_HANDLED
	}
	
	if(!is_user_alive(id))
	{
		ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_DEAD")
		return PLUGIN_HANDLED
	}
	
	if(gRoundNumber < g_Cvars[OPEN_ROUND] - 1)
	{
		ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_OPEN", g_Cvars[OPEN_ROUND] - 1)
		return PLUGIN_HANDLED
	}
	
	if(gUseRound[id] >= g_Cvars[USE_ROUND])
	{
		ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_USED")
		return PLUGIN_HANDLED
	}
	
	new menu = menu_create("\r[SWE] \yVip System", "menu_handler")
	new info[128]
	
	for(new i = 0; i < gBufCount; i++)
	{
		if(gRoundNumber < gBufRound[i] - 1)
		{
			format(info, charsmax(info), "\d%s %L", gBufNameDeactivate[i], LANG_PLAYER, "VIP_DEACTIVATE", gBufRound[i] - 1)
			menu_additem(menu, info, "0")
		}
		else
			menu_additem(menu, gBufName[i], "1")
	}

	menu_setprop(menu, MPROP_BACKNAME, "Back")
	menu_setprop(menu, MPROP_NEXTNAME, "Next")
	menu_setprop(menu, MPROP_EXITNAME, "Exit")

	menu_display(id, menu, 0)
	return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	new data[6], iName[64], access, callback
	menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
	new key = str_to_num(data)

	switch(key)
	{
		case 0:
		{
			ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_WEAPON", gBufRound[item] - 1)
		}
		case 1:
		{
			if(!is_user_alive(id))
			{
				ChatColor(id, "%L %L", LANG_PLAYER, "VIP_TAG", LANG_PLAYER, "VIP_DEAD")
				return PLUGIN_HANDLED
			}
	
			gUseRound[id] ++
			drop_weapons(id, 1)
			give_weapon(id, gBufWeapon[item])
		}
	}
	return PLUGIN_HANDLED
}

public HamSpawn(id)
{
	if(who[id] == 1)
	{
		if(BlockMaps)
			return
			
		if(!is_user_alive(id))
			return
		
		gUseRound[id] = 0
		
		if(g_Cvars[AUTO_OPEN] == 1)
		{
			if(!cs_get_user_hasprim(id) && gRoundNumber >= g_Cvars[OPEN_ROUND] - 1)
				VipMenu(id)
		}
		if(containi(ITEM, "s") != -1)
		{
			drop_weapons(id, 2)
			give_item(id, "weapon_deagle")
			cs_set_user_bpammo(id, CSW_DEAGLE, 36)
		}
		
		if(containi(ITEM, "g") != -1)
		{
			give_item(id, "weapon_hegrenade")
			give_item(id, "weapon_smokegrenade")
			give_item(id, "weapon_flashbang")
			give_item(id, "weapon_flashbang")
		}
		
		if(containi(ITEM, "d") != -1)
		{
			if(get_user_team(id) == 2)
				cs_set_user_defuse(id, 1, 0, 160, 0, _, 0)
		}
			
		if(containi(ITEM, "a") != -1)
			give_item(id, "item_assaultsuit")
	}
}

//////////////////////////	Kill Bonus
public death()
{
	if(BlockMaps)
		return
	
	new Killer = read_data(1)
	new HeadShot = read_data(3)
	
	if(who[Killer] == 0)
		return
		
	if(g_Cvars[MAX_HP] > 0)
	{
		/////HP
		if(g_Cvars[KNIFE] > 0 && get_user_weapon(Killer) == CSW_KNIFE)
			set_user_health(Killer, get_user_health(Killer) + g_Cvars[KNIFE])
		
		if(g_Cvars[HEAD] > 0 && HeadShot)
			set_user_health(Killer, get_user_health(Killer) + g_Cvars[HEAD])
		else{
			if(g_Cvars[KILL] > 0)
				set_user_health(Killer, get_user_health(Killer) + g_Cvars[KILL])
		}
		
		if(get_user_health(Killer) > g_Cvars[MAX_HP])
			set_user_health(Killer, g_Cvars[MAX_HP])
	}
	
	if(g_Cvars[M_KILL] > 0)
	{
		/////Money
		if(g_Cvars[M_KNIFE] > 0 && get_user_weapon(Killer) == CSW_KNIFE)
			set_user_health(Killer, get_user_health(Killer) + g_Cvars[M_KNIFE])
		
		if(g_Cvars[M_HEAD] > 0 && HeadShot)
			cs_set_user_money(Killer, cs_get_user_money(Killer) + g_Cvars[M_HEAD])
		else
			if(g_Cvars[M_KILL] > 0)
				cs_set_user_money(Killer, cs_get_user_money(Killer) + g_Cvars[M_KILL])
	}
}

public event_ResetHUD(id)
{
	if(g_Cvars[TAB] == 1)
		set_task(0.5, "VIP", id + 6910)
}

public VIP(TaskID)
{
	new id = TaskID - 6910
	
	if(who[id] >= 1)
	{
		message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))
		write_byte(id)
		write_byte(4)
		message_end() 
	}
	
	return PLUGIN_HANDLED
}

stock give_weapon(const id, const wpName[32])
{
	static const weaponList[18][16] = {"weapon_scout", "weapon_xm1014", "weapon_mac10", 
									"weapon_aug", "weapon_ump45", "weapon_sg550", 
									"weapon_galil", "weapon_famas", "weapon_awp", 
									"weapon_mp5navy", "weapon_m249", "weapon_m3", 
									"weapon_m4a1", "weapon_tmp", "weapon_g3sg1", 
									"weapon_sg552", "weapon_ak47", "weapon_p90"}
	static const weaponListCSW[18] = {CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, 
										CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_AWP, CSW_MP5NAVY, 
										CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_SG552, 
										CSW_AK47, CSW_P90}
	static const brammoList[18] = {90, 32, 100, 90, 100, 90, 90, 90, 30, 120, 200, 32, 90, 120, 90, 90, 90, 100}
	
	new i
	
	while(i <= charsmax(weaponList))
	{
		if(equal(weaponList[i], wpName))
		{
			break
		}
		i++
	}
	
	give_item(id, weaponList[i])
	cs_set_user_bpammo(id, weaponListCSW[i], brammoList[i])
	
	return weaponList[i]
}

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))
			if(g_Cvars[DROP_OR_STRIP] == 0)
				fm_strip_user_gun(id, weapons[i])
			else
				engclient_cmd(id, "drop", wname)
		}
	}
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32], i
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!n", "^1") // Default Color
    replace_all(msg, 190, "!t", "^3") // Team Color
   
    if(id)players[0] = id; else get_players(players, count, "ch")
    {
        for(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()
            }
        }
    }
}
vase070 is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:59.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode