Raised This Month: $ Target: $400
 0% 

FIXED


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
tom1kIG
Junior Member
Join Date: May 2021
Old 05-30-2021 , 15:52   FIXED
Reply With Quote #1

Hello!
I am using this blockmaker shop plugin, but when u write /shop and you are CT it says that u have to be T, but usually the blockmaker shops plugin should work for CT not for T, so if possible fix that and i would like to remove the middle top hud that is showing BM Points / XP and etc. If possible to remove the button N to open the shop, i would like to work only when u write /shop
Code:
/*==================================================================================================

			       |**********************************|
			       |==================================|
			       |=     BlockMaker Item Shop	 =|
			       |==================================|
			       |**********************************|

|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =|
 |												   |
 |												   |
 |			Copyright © 2017-2018, AJW1337// 					   |
 |			This file is provided as is (no warranties) 				   |
 |												   |
 |			BlockMaker Item Shop is free software; 			  		   |
 |			you can redistribute it and/or modify it under the terms of the 	   |
 |			GNU General Public License as published by the Free Software Foundation.   |
 |												   |	
 |			This program is distributed in the hope that it will be useful,            |
 |			but WITHOUT ANY WARRANTY; without even the implied warranty of             |
 |			MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 			   |
 |												   |
 |												   |
 |			Plugin requested by Coca Cola _-FxF-_					   |
 |												   |
|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =| 
					  |---------------|
					  |   Changelog   |
					  |---------------|
				v1.0 Official Plugin Release
											 
==================================================================================================*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <fvault>
#include <WPMGPrintChatColor>
#include <hamsandwich>
#include <engine>

#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
	#define client_disconnected client_disconnect
#endif

native add_user_immune(id)
native remove_user_immune(id)

native hnsxp_get_user_xp(id)
native hnsxp_set_user_xp(id, iExp)

stock hnsxp_add_user_xp(id, iExp)
	return hnsxp_set_user_xp(id, hnsxp_get_user_xp(id) + iExp)


new const PLUGIN[] = "BlockMaker Item Shop"
new const VERSION[] = "1.0"
new const AUTHOR[] = "AJW1337//"
new const BM_ItemShopDB[] = "BM_ItemShop_DataBase"

enum _:Info
{
	PRICE = 0,
	LIMIT,
	AMOUNT
}

enum _:Items
{
	HEALTH,
	ARMOR,
	HE_NADE,
	NO_FROST,
	NO_FLASH,
	AWP,
	M3,
	DEAGLE,
	XP,
	RESPAWN
}

new const szItemNames[Items][] =
{
	"Health",
	"Armor",
	"HE Grenade",
	"Anti Frost",
	"Anti Flash",
	"AWP",
	"M3",
	"Deagle",
	"XP",
	"Respawn"
}

new ItemInfo[Items][Info], g_ItemsLimit[33][Items], bool:g_IsBought[33][Items]
new g_iPoints[33], bool:g_bConnected[33]
new g_iSyncMessage

// For Anti Flash
new Float:g_flGameTime[2], g_iOwner
new g_iGrenade[32], bool:g_iTrackEnemy, bool:g_iTrack[33]
new g_iMsgScreenFade, g_iLast, g_iSyncData
new g_bNoFlash[33]
// For Anti Flash

enum
{
	SECTION_SHOP = 1,
	SECTION_PRICE,
	SECTION_LIMIT,
	SECTION_AMOUNT
}

enum _:DataItems
{
	SHOP_PREFIX[32],
	SHOP_MENU_PREFIX[32],
	SHOP_COMMAND[32],
	HS_KILL_POINTS,
	KILL_POINTS,
	PRINT_COLOR,
	D_HUD_MESSAGE,
	D_HUD_CUSTOM_COLOR,
	RED_COLOR,
	GREEN_COLOR,
	BLUE_COLOR,
	Float:COORD_X,
	Float:COORD_Y
}

new g_eItems[DataItems]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar("BM_ItemShop", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	register_dictionary("blockmaker_itemshop.txt")
	
	register_clcmd("say", "Command_HookSay")
	register_clcmd("say_team", "Command_HookSay")
	
	register_concmd("amx_reload_file", "Command_ReloadFile", ADMIN_BAN)
	
	register_clcmd("BM_Points_Amount", "Command_BM_Points_Amount", ADMIN_BAN)

	register_event("DeathMsg", "eventDeathMsg", "a")
	register_logevent("eventRoundStart", 2, "1=Round_Start")
	
	register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199")
	register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
	register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
	register_event("99", "grenade_throw", "b")
	set_task(2.0, "flash", .flags="b")
	g_iMsgScreenFade = get_user_msgid("ScreenFade")
	
	new iEnt = create_entity("info_target")
	entity_set_string(iEnt, EV_SZ_classname, "task_entity")
	
	register_think("task_entity", "HudEntity")
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 2.0)
	
	g_iSyncMessage = CreateHudSyncObj()
	
	ReadFile()
}
public plugin_natives()
{
	register_native("get_user_bm_points", "_get_user_bm_points")
	register_native("set_user_bm_points", "_set_user_bm_points")
}
public Command_ReloadFile(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		goto Handled
	
	ReadFile()
		
	Handled:
	return PLUGIN_HANDLED
}
ReadFile()
{
	static szConfigsDir[64], iFile
	get_configsdir(szConfigsDir, charsmax(szConfigsDir))
	add(szConfigsDir, charsmax(szConfigsDir), "/BM_ItemShop.ini")
	iFile = fopen(szConfigsDir, "rt")
	
	if (iFile)
	{
		static szLineData[160], szKey[32], szValue[128], iSection
		
		while (!feof(iFile))
		{
			fgets(iFile, szLineData, charsmax(szLineData))
			trim(szLineData)
			
			switch (szLineData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					if (szLineData[strlen(szLineData) -1] == ']')
					{
						if (containi(szLineData, "item shop") != -1)
							iSection = SECTION_SHOP
						else if (containi(szLineData, "item prices") != -1)
							iSection = SECTION_PRICE
						else if (containi(szLineData, "item limits") != -1)
							iSection = SECTION_LIMIT
						else if (containi(szLineData, "item amounts") != -1)
							iSection = SECTION_AMOUNT
					}					
					else
						continue
				}
				default:
				{
					strtok(szLineData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey)
					trim(szValue)
					
					if (is_eos_line(szValue))
						continue
						
					switch(iSection)
					{
						case SECTION_SHOP:
						{
							if (equal(szKey, "BM_SHOP_COMMANDS"))
							{
								while (szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
								{
									trim(szKey)
									trim(szValue)
									register_clcmd(szKey, "Command_Shop")
								}
							}
							else if (equal(szKey, "BM_SHOP_PRINT_COLOR"))
								g_eItems[PRINT_COLOR] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_PREFIX"))
								copy(g_eItems[SHOP_PREFIX], charsmax(g_eItems[SHOP_PREFIX]), szValue)
							else if (equal(szKey, "BM_SHOP_MENU_PREFIX"))
								copy(g_eItems[SHOP_MENU_PREFIX], charsmax(g_eItems[SHOP_MENU_PREFIX]), szValue)
							else if (equal(szKey, "BM_SHOP_HEADSHOT_KILL_POINTS"))
								g_eItems[HS_KILL_POINTS] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_NORMAL_KILL_POINTS"))
								g_eItems[KILL_POINTS] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_D_HUD_MESSAGE"))
								g_eItems[D_HUD_MESSAGE] = clamp(hud_dhud(szValue), false, true)
							else if (equal(szKey, "BM_SHOP_D_HUD_CUSTOM_COLOR"))
								g_eItems[D_HUD_CUSTOM_COLOR] = clamp(on_off(szValue), false, true)
							else if (equal(szKey, "BM_SHOP_D_HUD_RED_COLOR"))
								g_eItems[RED_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_GREEN_COLOR"))
								g_eItems[GREEN_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_BLUE_COLOR"))
								g_eItems[BLUE_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_COORD_X"))
								g_eItems[COORD_X] = _:str_to_float(szValue)
							else if (equal(szKey, "BM_SHOP_D_HUD_COORD_Y"))
								g_eItems[COORD_Y] = _:str_to_float(szValue)
						}
						case SECTION_PRICE:
						{
							if (equal(szKey, "BM_HEALTH_PRICE"))
								ItemInfo[HEALTH][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_PRICE"))
								ItemInfo[ARMOR][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_PRICE"))
								ItemInfo[HE_NADE][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_PRICE"))
								ItemInfo[NO_FROST][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_PRICE"))
								ItemInfo[NO_FLASH][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_PRICE"))
								ItemInfo[AWP][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_PRICE"))
								ItemInfo[M3][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_PRICE"))
								ItemInfo[DEAGLE][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_PRICE"))
								ItemInfo[XP][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_PRICE"))
								ItemInfo[RESPAWN][PRICE] = str_to_num(szValue)
						}
						case SECTION_LIMIT:
						{
							if (equal(szKey, "BM_HEALTH_LIMIT"))
								ItemInfo[HEALTH][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_LIMIT"))
								ItemInfo[ARMOR][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_LIMIT"))
								ItemInfo[HE_NADE][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_LIMIT"))
								ItemInfo[NO_FROST][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_LIMIT"))
								ItemInfo[NO_FLASH][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_LIMIT"))
								ItemInfo[AWP][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_LIMIT"))
								ItemInfo[M3][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_LIMIT"))
								ItemInfo[DEAGLE][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_LIMIT"))
								ItemInfo[XP][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_LIMIT"))
								ItemInfo[RESPAWN][LIMIT] = str_to_num(szValue)
						}
						case SECTION_AMOUNT:
						{
							if (equal(szKey, "BM_HEALTH_AMOUNT"))
								ItemInfo[HEALTH][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_AMOUNT"))
								ItemInfo[ARMOR][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_AMOUNT"))
								ItemInfo[HE_NADE][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_AMOUNT"))
								ItemInfo[NO_FROST][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_AMOUNT"))
								ItemInfo[NO_FLASH][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_AMOUNT"))
								ItemInfo[AWP][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_AMOUNT"))
								ItemInfo[M3][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_AMOUNT"))
								ItemInfo[DEAGLE][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_AMOUNT"))
								ItemInfo[XP][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_AMOUNT"))
								ItemInfo[RESPAWN][AMOUNT] = str_to_num(szValue)
						}
					}
				}
			}
			
		}
		fclose(iFile)
	}
}
bool:is_eos_line(szString[]) return szString[0] == EOS ? true : false
bool:hud_dhud(szString[]) return szString[0] == 'd' ? true : false
bool:on_off(szString[]) return szString[1] == 'n' ? true : false

public _get_user_bm_points(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return -1
	
	return g_iPoints[id]
}

public _set_user_bm_points(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return false
	
	g_iPoints[id] = get_param(2)
	return true
}

public HudEntity(iEnt)
{
	static iPlayers[32], iNum, id, szHostName[64]
	get_players(iPlayers, iNum, "ch")
	
	for (new i = 0; i < iNum; i++)
	{
		id = iPlayers[i]
		
		if (!is_user_connected(id) || !is_user_alive(id))
			continue
		
		get_user_name(0, szHostName, charsmax(szHostName))
		
		if (!g_eItems[D_HUD_MESSAGE])
		{
			if (g_eItems[D_HUD_CUSTOM_COLOR])
				set_hudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			else
				set_hudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			
			if(get_cvar_num("mp_timelimit")) 
			{
				ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
				get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
			}
			else 
			{
				ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
				get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
			}
		}
		else if (g_eItems[D_HUD_MESSAGE])
		{
			if (g_eItems[D_HUD_CUSTOM_COLOR])
				set_dhudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			else
				set_dhudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
				
			if(get_cvar_num("mp_timelimit")) 
			{
				show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
				get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
			}
			else 
			{
				show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
				get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
			}
		}
	}
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.5)
}

public client_putinserver(id)
{
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		g_IsBought[id][i] = false
		g_ItemsLimit[id][i] = 0
	}
	
	g_bNoFlash[id] = false
	remove_user_immune(id)
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	
	set_task(0.1, "LoadData", id, szName, charsmax(szName))
}

public client_disconnected(id)
{
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		g_IsBought[id][i] = false
		g_ItemsLimit[id][i] = 0
	}
	
	g_bNoFlash[id] = false
	remove_user_immune(id)
	
	if (g_bConnected[id])
	{
		new szName[32]
		get_user_name(id, szName, charsmax(szName))
		
		SaveData(id, szName)
		
		g_bConnected[id] = false
	}
}

public eventRoundStart()
{
	for (new i = 0; i < get_maxplayers(); i++)
	{
		for (new j = 0; j < Items; j++)
		{
			g_IsBought[i][j] = false
			g_ItemsLimit[i][j] = 0
		}
		remove_user_immune(i)
		g_bNoFlash[i] = false
	}
}

public eventDeathMsg()
{
	new iKiller = read_data(1)
	,iVictim = read_data(2)
	,iHeadShot = read_data(3)
	
	if (iKiller == iVictim || !is_user_connected(iKiller))
		return
	
	new szName[32]
	get_user_name(iKiller, szName, charsmax(szName))
	
	for (new i = 0; i < sizeof(szItemNames); i++)
		g_IsBought[iVictim][i] = false
	
	g_iPoints[iKiller] += iHeadShot == 1 ? g_eItems[HS_KILL_POINTS] : g_eItems[KILL_POINTS]
	
	if (g_bConnected[iKiller])
		SaveData(iKiller, szName)
}

public Command_HookSay(id)
{
	new szArgs[64], szCommand[32], szUser[32], szAmount[8]
	read_args(szArgs, charsmax(szArgs))
	remove_quotes(szArgs)
	parse(szArgs, szCommand, charsmax(szCommand), szUser, charsmax(szUser), szAmount, charsmax(szAmount))
	
	if (equal(szCommand, "/points"))
	{
		if (szUser[0] == EOS)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "YOUR_POINTS", g_eItems[SHOP_PREFIX], g_iPoints[id])
			return PLUGIN_HANDLED
		}
		else
		{
			new iTarget = cmd_target(id, szUser, 0)
			
			if (!iTarget)
			{
				PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND",g_eItems[SHOP_PREFIX])
				return PLUGIN_HANDLED
			}
			
			new szName[32]
			get_user_name(iTarget, szName, charsmax(szName))
			
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], szName, g_iPoints[iTarget])
			return PLUGIN_HANDLED
		}
	}
	else if (equal(szCommand, "/shopmenu"))
	{
		if (get_user_flags(id) & ADMIN_BAN)
			ToggleShopMenu(id)
		else
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_ACCESS", g_eItems[SHOP_PREFIX])
		
		return PLUGIN_HANDLED
	}
	else if (equal(szCommand, "/give"))
	{
		if (szUser[0] == EOS || szAmount[0] == EOS)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "USAGE_GIVE", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		new iAmount = str_to_num(szAmount)
		
		if (iAmount <= 0)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ONLY_POSITIVE", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		new iTarget = cmd_target(id, szUser, 0)
		
		if (!iTarget)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		if (iTarget == id)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "CANT_GIVE_TO_YOURSELF", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
			
		if (iAmount > g_iPoints[id])
			iAmount = g_iPoints[id]
		
		new szName[2][32]
		get_user_name(id, szName[0], charsmax(szName[]))
		get_user_name(iTarget, szName[1], charsmax(szName[]))
		
		g_iPoints[id] -= iAmount
		g_iPoints[iTarget] += iAmount
		
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_GAVE", g_eItems[SHOP_PREFIX], iAmount, szName[1])
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_RECEIVE", g_eItems[SHOP_PREFIX], szName[0], iAmount)
		
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}
public Command_Shop(id)
{
	if (cs_get_user_team(id) == CS_TEAM_T)
		OpenItemShop(id)
	else
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MUST_BE_TERROR", g_eItems[SHOP_PREFIX])
			
	return PLUGIN_HANDLED
}
public OpenItemShop(id)
{
	static szTitle[128]
	formatex(szTitle, charsmax(szTitle), "%L", id, "ITEM_SHOP_MENU_NAME", g_eItems[SHOP_MENU_PREFIX], g_iPoints[id])
	new iMenu = menu_create(szTitle, "shop_handler")
	
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		new szItem[128]
		
		if (i == HEALTH || i == ARMOR || i == XP)
		{
			formatex(szItem, charsmax(szItem), "%L", id, "HP_AP_XP_SHOP_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
			ItemInfo[i][AMOUNT], szItemNames[i], ItemInfo[i][PRICE],
			g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
		}
		else
		{
			formatex(szItem, charsmax(szItem), "%L", id, "ALL_OTHER_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
			szItemNames[i], ItemInfo[i][PRICE],
			g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
		}
		menu_additem(iMenu, szItem)
	}
	menu_display(id, iMenu)
	return PLUGIN_HANDLED
}

public shop_handler(id, iMenu, Item)
{
	if (!is_user_connected(id))
		goto Handled
	
	if (Item == MENU_EXIT)
	{
		menu_cancel(id)
		goto Handled
	}
	
	if (g_iPoints[id] < ItemInfo[Item][PRICE])
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_MONEY", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	if (g_ItemsLimit[id][Item] >= ItemInfo[Item][LIMIT])
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MAX_BUYS", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	if (!is_user_alive(id) && Item != RESPAWN)
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_ALIVE", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	switch (Item)
	{
		case HEALTH: fm_set_user_health(id, get_user_health(id) + ItemInfo[HEALTH][AMOUNT])
		case ARMOR: fm_set_user_armor(id, get_user_armor(id) + ItemInfo[ARMOR][AMOUNT])
		case HE_NADE:
		{
			if (!user_has_weapon(id, CSW_HEGRENADE))
				fm_give_item(id, "weapon_hegrenade")
			else
			{
				fm_give_item(id, "weapon_hegrenade")
				cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + ItemInfo[HE_NADE][AMOUNT])
			}
		}
		case NO_FROST: add_user_immune(id)
		case NO_FLASH: g_bNoFlash[id] = true
		case AWP:
		{
			new iWeapon = fm_give_item(id, "weapon_awp")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[AWP][AMOUNT])
			}
		}
		case M3:
		{
			new iWeapon = fm_give_item(id, "weapon_m3")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[M3][AMOUNT])
			}
		}
		case DEAGLE:
		{
			new iWeapon = fm_give_item(id, "weapon_deagle")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[DEAGLE][AMOUNT])
			}
		}
		case XP: hnsxp_add_user_xp(id, ItemInfo[XP][AMOUNT])
		case RESPAWN:
		{
			if (is_user_alive(id))
			{
				PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "RESPAWN_ALIVE", g_eItems[SHOP_PREFIX])
				return PLUGIN_CONTINUE
			}
			ExecuteHamB(Ham_CS_RoundRespawn, id)
		}
	}
	
	g_iPoints[id] -= ItemInfo[Item][PRICE]
	g_ItemsLimit[id][Item]++
	g_IsBought[id][Item] = true
	
	if (Item == HEALTH || Item == ARMOR || Item == XP)
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "HP_AP_XP_SHOP_ITEMS_CHAT", g_eItems[SHOP_PREFIX], ItemInfo[Item][AMOUNT], szItemNames[Item], ItemInfo[Item][PRICE])
	else
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ALL_OTHER_ITEMS_CHAT", g_eItems[SHOP_PREFIX], szItemNames[Item], ItemInfo[Item][PRICE])
		
	menu_destroy(iMenu)
	
	Handled:
	return PLUGIN_HANDLED
}

// Anti-Flash - Start
public flash()
{
	new Float:flGameTime = get_gametime()
	
	if (flGameTime - g_flGameTime[1] > 2.5)
	{
		for (new i = 0; i < 32; i++)
			g_iGrenade[i] = 0
	}
}

public eventFlash(id)
{
	new Float:flGameTime = get_gametime()
	
	if (flGameTime != g_flGameTime[0])
	{
		g_iOwner = get_grenade_owner()
		g_flGameTime[0] = flGameTime
		
		for (new i = 0; i < 32; i++)
			g_iTrack[i] = false
			
		g_iTrackEnemy = false
	}
	if (is_user_connected(g_iOwner) && g_bNoFlash[id])
	{
		g_iTrackEnemy = true
		
		message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, id)
		write_short(1)
		write_short(1)
		write_short(1)
		write_byte(0)
		write_byte(0)
		write_byte(0)
		write_byte(255)
		message_end()
	}
}
public flash_delay()
{
	if (!g_iTrackEnemy)
	{
		for (new i = 0; i < 33; i++)
		{
			if (g_iTrack[i] && is_user_connected(i))
			{
				message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, i) 
				write_short(1)
				write_short(1)
				write_short(1)
				write_byte(0)
				write_byte(0)
				write_byte(0)
				write_byte(255)
				message_end()
			}
		}
	}
}

public grenade_throw()
{
	if (g_iSyncData == 0)
		goto Continue
		
	g_iSyncData--
	
	if (read_datanum() < 2)
		return PLUGIN_HANDLED_MAIN
		
	if (read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
		add_grenade_owner(g_iLast)
	
	Continue:
	return PLUGIN_CONTINUE
}
public fire_in_the_hole()
{
	new szName[32]
	read_data(3, szName, charsmax(szName))
	
	new iTempLast = get_user_index(szName)
	new iJunk
	
	if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
		goto Continue
	
	if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
	{
		g_iLast  =iTempLast
		g_iSyncData = 2
	}
	
	Continue:
	return PLUGIN_CONTINUE
}

public fire_in_the_hole2()
{
	new szName[32]
	read_data(4, szName, charsmax(szName))
	
	new iTempLast = get_user_index(szName)
	new iJunk
	
	if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
		goto Continue
	
	if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
	{
		g_iLast  =iTempLast
		g_iSyncData = 2
	}
	
	Continue:
	return PLUGIN_CONTINUE
}
add_grenade_owner(iOwner)
{
	new Float:flGameTime = get_gametime()
	
	g_flGameTime[1] = flGameTime
	
	for (new i = 0; i < 32; i++)
	{
		if (g_iGrenade[i] == 0)
		{
			g_iGrenade[i] = iOwner
			return
		}
	}
}
get_grenade_owner()
{
	new iWhich = g_iGrenade[0]
	
	for (new i = 1; i < 32; i++)
		g_iGrenade[i-1] = g_iGrenade[i]
	
	g_iGrenade[31] = 0
	return iWhich
}

public fw_emitsound(entity, channel, const szSample[], Float:volume, Float:attenuation, fFlags, pitch)
{
	if(!equali(szSample,"weapons/flashbang-1.wav") && !equali(szSample,"weapons/flashbang-2.wav"))
		goto Ignored
	
	new Float:flGameTime = get_gametime()
	
	if(flGameTime != g_flGameTime[0])
	{
		g_iOwner = get_grenade_owner()
		goto Ignored
	}
	
	Ignored:
	return FMRES_IGNORED;
}

/* ================================================
	Shop Points Menu
================================================ */
new g_iPlayer[33], g_iMenuType[33]

public ToggleShopMenu(id)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "%s \d~ \wShop Admin Menu", g_eItems[SHOP_MENU_PREFIX])
	new iMenu = menu_create(szTitle, "shopmenu_handler")
	
	menu_additem(iMenu, "\yGive \dPlayer \rBM Points")
	menu_additem(iMenu, "\yTake \dPlayer \rBM Points^n")
	
	menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\w")
	menu_setprop(iMenu, MPROP_EXITNAME, "\yExit \rShop \dAdmin \rMenu\d..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public shopmenu_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		menu_destroy(iMenu)
		goto Handled
	}
	
	switch(Item)
	{
		case 0: PlayerPointsMenu(id, 1)
		case 1: PlayerPointsMenu(id, 2)
	}
	
	menu_destroy(iMenu)
	Handled:
	return PLUGIN_HANDLED
}

public PlayerPointsMenu(id, iType)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "Choose Player to %s XP", iType == 1 ? "Give" : "Take")
	new iMenu = menu_create(szTitle, "points_handler")
	
	g_iMenuType[id] = iType
	
	new iPlayers[32], iNum, iPlayer
	new szName[34], szTempID[10]
	get_players(iPlayers, iNum)
	
	for(new i; i < iNum; i++)
	{
		iPlayer = iPlayers[i]
		if(!is_user_connected(iPlayer))
			continue
		
		get_user_name(iPlayer, szName, sizeof szName - 1)
		num_to_str(iPlayer, szTempID, charsmax(szTempID))
		menu_additem(iMenu, szName, szTempID)
	}
	menu_setprop(iMenu, MPROP_EXITNAME, "Go back..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public points_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		ToggleShopMenu(id)
		g_iMenuType[id] = 0
		goto Handled
	}
	
	new szData[6], iName[64], iAccess, iCallBack
	menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), iName, charsmax(iName), iCallBack)
	
	g_iPlayer[id] = str_to_num(szData)
	
	if (!is_user_connected(g_iPlayer[id]))
	{
		g_iPlayer[id] = 0
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
		goto Handled
	}
	
	PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], iName, g_iPoints[g_iPlayer[id]])
	
	client_cmd(id, "messagemode BM_Points_Amount")
	menu_destroy(iMenu)
	Handled:
	return PLUGIN_HANDLED
}
public Command_BM_Points_Amount(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		goto Handled
		
	if (!g_iPlayer[id])
		goto Handled
		
	if (!is_user_connected(g_iPlayer[id]))
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
		goto Handled
	}
	
	new szArgs[12]
	read_argv(1, szArgs, charsmax(szArgs))
	
	new iBM_Points = str_to_num(szArgs)
	
	new szNames[2][32]
	get_user_name(id, szNames[0], charsmax(szNames[]))
	get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))
	
	switch (g_iMenuType[id])
	{
		case 1:
		{
			g_iPoints[g_iPlayer[id]] += iBM_Points
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_GAVE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
		}
		case 2:
		{
			g_iPoints[g_iPlayer[id]] -= iBM_Points
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_TAKE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
		}
	}
	g_iPlayer[id] = 0
	g_iMenuType[id] = 0
	
	ToggleShopMenu(id)
	
	Handled:
	return PLUGIN_HANDLED
}
public client_infochanged(id)
{
	if (!is_user_connected(id))
		goto Handled
	
	new szNewName[32], szOldName[32]
	get_user_name(id, szOldName, charsmax(szOldName))
	get_user_info(id, "name", szNewName, charsmax(szNewName))
	
	if (!equal(szNewName, szOldName))
	{
		SaveData(id, szOldName)
		set_task(0.1, "LoadData", id, szNewName, charsmax(szNewName))
		goto Handled
	}
	
	Handled:
	return PLUGIN_HANDLED
}
public SaveData(id, szName[])
{
	new szData[18]
	num_to_str(g_iPoints[id], szData, charsmax(szData))
	
	fvault_set_data(BM_ItemShopDB, szName, szData)
}

public LoadData(szName[], id)
{
	new szData[18]
	
	if (fvault_get_data(BM_ItemShopDB, szName, szData, charsmax(szData)))
		g_iPoints[id] = str_to_num(szData)
	else
		g_iPoints[id] = 0
	
	g_bConnected[id] = true
}

Last edited by tom1kIG; 06-02-2021 at 11:33.
tom1kIG is offline
Reply



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:26.


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