Raised This Month: $51 Target: $400
 12% 

Costumes in cs go remake?


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
GaBy96
Member
Join Date: Oct 2012
Location: Spain
Old 11-14-2020 , 03:23   Costumes in cs go remake?
Reply With Quote #1

I have this plugin:
Code:
#include <amxmodx>
#include <amxmisc>
#include <cs_player_models_api>
#include <hamsandwich>
#include <fakemeta>
#include <nvault>
#include <sqlx>

#define PLUGIN "CSO Costumes"
#define VERSION "3.9"
#define AUTHOR "Smilex_Gamer"

//#define ZP_SUPPORT

#if defined ZP_SUPPORT
	#include <zombieplague>
#endif

#if !defined client_disconnected
	#define client_disconnected client_disconnect
#endif

#define PREFIX_CHAT "!g[CSO Costumes]!n"
#define PREFIX_MENU "\r[CSO Costumes]"

#define MAX_COSTUMES 257

#if defined ZP_SUPPORT
	new Total_Skin = 1
#else
	new Total_SkinCT = 1, Total_SkinTR = 1
#endif

new File[64], Total_Head = 1, Total_Back = 1, Total_Pelvis = 1
new Handle:g_SqlTuple, g_Error[512], g_Vault, g_szAuthID[33][35]

enum _:Configuration
{
	Cash_per_Kill,
	Saving_Method,
	Host[128],
	User[128],
	Pass[128],
	Db[128],
	Table[128],
	Vault[128],
	ZP43_Support
}

enum _:Vars
{
	g_name[128],
	g_price,
	g_model[128],
	g_anim,
	g_preview[128]
}

enum _:Vars2
{
#if defined ZP_SUPPORT
	g_skin,
	g_acquiredSkin[MAX_COSTUMES],
#else
	g_skinct,
	g_skintr,
	g_acquiredSkinCT[MAX_COSTUMES],
	g_acquiredSkinTR[MAX_COSTUMES],
#endif
	g_head,
	g_back,
	g_pelvis,
	g_cash,
	g_buying,
	g_costume,
	g_CostumeModelHead,
	g_CostumeModelBack,
	g_CostumeModelPelvis,
	g_acquiredHead[MAX_COSTUMES],
	g_acquiredBack[MAX_COSTUMES],
	g_acquiredPelvis[MAX_COSTUMES],
	bool:is_connected,
	bool:is_bot_or_hltv
}

#if defined ZP_SUPPORT
	new Costumes_Skin[MAX_COSTUMES][Vars]
#else
	new Costumes_SkinCT[MAX_COSTUMES][Vars], Costumes_SkinTR[MAX_COSTUMES][Vars]
#endif

new Costumes_Head[MAX_COSTUMES][Vars], Costumes_Back[MAX_COSTUMES][Vars], Costumes_Pelvis[MAX_COSTUMES][Vars], g_vars[33][Vars2], g_settings[Configuration]

#if defined ZP_SUPPORT
	const y = 1; const z = 3
#else
	const y = 2; const z = 4
#endif

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar("CSOCostumes", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)

	register_dictionary("cso_costumes.txt")

	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
	register_event("DeathMsg", "Event_DeathMsg", "a")

	register_clcmd("say /costumes", "clcmd_costumes")
	register_clcmd("say_team /costumes", "clcmd_costumes")
	register_clcmd("say /inventory", "clcmd_inventory")
	register_clcmd("say_team /inventory", "clcmd_inventory")
	register_clcmd("say /shop", "clcmd_shop")
	register_clcmd("say_team /shop", "clcmd_shop")
	register_clcmd("say /deactivate", "clcmd_deactivate")
	register_clcmd("say_team /deactivate", "clcmd_deactivate")
	register_clcmd("say /cash", "clcmd_cash")
	register_clcmd("say_team /cash", "clcmd_cash")
	register_concmd("costumes_give_cash", "Cmd_GiveCash", ADMIN_RCON, "<nick|#userid> <amount>")

	if(g_settings[Saving_Method] != 0)
	{
		register_event("TextMsg", "Save_Data", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
		register_event("SendAudio", "Save_Data", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
		register_forward(FM_Sys_Error, "Save_Data")
		register_forward(FM_GameShutdown, "Save_Data")
		register_forward(FM_ServerDeactivate, "Save_Data")

		switch(g_settings[Saving_Method])
		{
			case 1: Nvault_Init()
			case 2: MySql_Init()
		}
	}
}

public plugin_precache()
{
	new cfgDir[32]
	get_configsdir(cfgDir, charsmax(cfgDir))
	formatex(File, charsmax(File), "%s/costumes.ini", cfgDir)

	Load_Configuration(0)
	Load_Costumes()

#if defined ZP_SUPPORT
	for(new i = 1; i < Total_Skin; i++)
	{
		precache_player_model(Costumes_Skin[i][g_model])
	}
#else
	for(new i = 1; i < Total_SkinCT; i++)
	{
		precache_player_model(Costumes_SkinCT[i][g_model])
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		precache_player_model(Costumes_SkinTR[i][g_model])
	}
#endif

	for(new i = 1; i < Total_Head; i++)
	{
		precache_model(Costumes_Head[i][g_model])
	}

	for(new i = 1; i < Total_Back; i++)
	{
		precache_model(Costumes_Back[i][g_model])
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		precache_model(Costumes_Pelvis[i][g_model])
	}
}

public plugin_end()
{
	switch(g_settings[Saving_Method])
	{
		case 1: nvault_close(g_Vault)
		case 2: SQL_FreeHandle(g_SqlTuple)
	}
}

Load_Configuration(MySQL_to_Nvault)
{
	if(file_exists(File))
	{
		new sfLineData[256], Config[32], Value[128], value
		new file = fopen(File, "rt")

		while(file && !feof(file))
		{
			fgets(file, sfLineData, charsmax(sfLineData))

			if(sfLineData[0] == ';' || strlen(sfLineData) <= 2 || (sfLineData[0] == '/' && sfLineData[1] == '/'))
			{
				continue
			}

			parse(sfLineData, Config, charsmax(Config), Value, charsmax(Value))
			value = str_to_num(Value)

			if(MySQL_to_Nvault)
			{
				if(equal(Config, "VAULT"))
				{
					if(!Value[0])
					{
						server_print("[CSO Costumes] No Vault name was defined! Continuing with the default setting: ^"cso_costumes^".")
						copy(g_settings[Vault], charsmax(g_settings[Vault]), "cso_costumes")
					}
					else
					{
						copy(g_settings[Vault], charsmax(g_settings[Vault]), Value)
					}

					Nvault_Init()
					break
				}
				else
				{
					continue
				}
			}

			if(equal(Config, "CASH_PER_KILL"))
			{
				if(value <= 0)
				{
					server_print("[CSO Costumes] Cash per kill is less than or equal to 0! Continuing with the default setting: 5.")
					g_settings[Cash_per_Kill] = 5
				}
				else
				{
					g_settings[Cash_per_Kill] = value
				}

				continue
			}
			else if(equal(Config, "SAVING_METHOD"))
			{
				switch(value)
				{
					case 0..2: g_settings[Saving_Method] = value
					default:
					{
						server_print("[CSO Costumes] No valid saving system was defined! Continuing without saving system.")
						g_settings[Saving_Method] = 0
					}
				}

				continue
			}
			else if(equal(Config, "ZP43_SUPPORT"))
			{
			#if defined ZP_SUPPORT
				switch(value)
				{
					case 0,1: g_settings[ZP43_Support] = value
					default:
					{
						server_print("[CSO Costumes] No valid input was defined! Continuing without Zombie Plague 4.3 Support.")
						g_settings[ZP43_Support] = 0
					}
				}
			#else
				if(value >= 1)
				{
					server_print("[CSO Costumes] You need to edit the source code and uncomment ^"#define ZP_SUPPORT^" in order to support Zombie Plague 4.3 (line 13).")
				}
			#endif

				continue
			}

			switch(g_settings[Saving_Method])
			{
				case 0: break
				case 1:
				{
					if(equal(Config, "VAULT"))
					{
						if(!Value[0])
						{
							server_print("[CSO Costumes] No Vault name was defined! Continuing with the default setting: ^"cso_costumes^".")
							copy(g_settings[Vault], charsmax(g_settings[Vault]), "cso_costumes")
						}
						else
						{
							copy(g_settings[Vault], charsmax(g_settings[Vault]), Value)
						}

						break
					}
				}
				case 2:
				{
					if(equal(Config, "HOST"))
					{
						if(!Value[0])
						{
							server_print("[CSO Costumes] No Hostname was defined! Continuing with Nvault saving system.")
							g_settings[Saving_Method] = 1
						}
						else
						{
							copy(g_settings[Host], charsmax(g_settings[Host]), Value)
						}
					}
					else if(equal(Config, "USER"))
					{
						if(!Value[0])
						{
							server_print("[CSO Costumes] No Username was defined! Continuing with Nvault saving system.")
							g_settings[Saving_Method] = 1
						}
						else
						{
							copy(g_settings[User], charsmax(g_settings[User]), Value)
						}
					}
					else if(equal(Config, "PASSWORD"))
					{
						copy(g_settings[Pass], charsmax(g_settings[Pass]), Value)
					}
					else if(equal(Config, "DATABASE"))
					{
						if(!Value[0])
						{
							server_print("[CSO Costumes] No Database name was defined! Continuing with Nvault saving system.")
							g_settings[Saving_Method] = 1
						}
						else
						{
							copy(g_settings[Db], charsmax(g_settings[Db]), Value)
						}
					}
					else if(equal(Config, "TABLE"))
					{
						if(!Value[0])
						{
							server_print("[CSO Costumes] No Table name was defined! Continuing with the default setting: ^"cso_costumes^".")
							copy(g_settings[Table], charsmax(g_settings[Table]), "cso_costumes")
						}
						else
						{
							copy(g_settings[Table], charsmax(g_settings[Table]), Value)
						}

						break
					}
				}
			}
		}

		if(file && !MySQL_to_Nvault)
		{
			server_print("[CSO Costumes] Configuration loaded")
			fclose(file)
		}
	}
	else
	{
		set_fail_state("File ^"costumes.ini^" is missing! Plugin stopped.")
	}
}

Load_Costumes()
{
	if(file_exists(File))
	{
		new sfLineData[256], Costume[10], CostumeName[128], CostumePrice[10], CostumeModel[128], CostumeAnim[10], CostumePreview[128], TotalCostumes = 0
		new file = fopen(File, "rt")

		while(file && !feof(file))
		{
			fgets(file, sfLineData, charsmax(sfLineData))

			if(sfLineData[0] != '"')
			{
				continue
			}

			parse(sfLineData, Costume, charsmax(Costume), CostumeName, charsmax(CostumeName), CostumePrice, charsmax(CostumePrice), CostumeModel, charsmax(CostumeModel), CostumeAnim, charsmax(CostumeAnim), CostumePreview, charsmax(CostumePreview))

		#if defined ZP_SUPPORT
			if(equal(Costume, "SkinCT") || equal(Costume, "SkinTR"))
			{
				copy(Costumes_Skin[Total_Skin][g_name], charsmax(Costumes_Skin[][g_name]), CostumeName)
				Costumes_Skin[Total_Skin][g_price] = str_to_num(CostumePrice)
				copy(Costumes_Skin[Total_Skin][g_model], charsmax(Costumes_Skin[][g_model]), CostumeModel)
				copy(Costumes_Skin[Total_Skin][g_preview], charsmax(Costumes_Skin[][g_model]), CostumePreview)

				Total_Skin += 1
				TotalCostumes += 1
			}
		#else
			if(equal(Costume, "SkinCT"))
			{
				copy(Costumes_SkinCT[Total_SkinCT][g_name], charsmax(Costumes_SkinCT[][g_name]), CostumeName)
				Costumes_SkinCT[Total_SkinCT][g_price] = str_to_num(CostumePrice)
				copy(Costumes_SkinCT[Total_SkinCT][g_model], charsmax(Costumes_SkinCT[][g_model]), CostumeModel)
				copy(Costumes_SkinCT[Total_SkinCT][g_preview], charsmax(Costumes_SkinCT[][g_preview]), CostumePreview)

				Total_SkinCT += 1
				TotalCostumes += 1
			}
			else if(equal(Costume, "SkinTR"))
			{
				copy(Costumes_SkinTR[Total_SkinTR][g_name], charsmax(Costumes_SkinTR[][g_name]), CostumeName)
				Costumes_SkinTR[Total_SkinTR][g_price] = str_to_num(CostumePrice)
				copy(Costumes_SkinTR[Total_SkinTR][g_model], charsmax(Costumes_SkinTR[][g_model]), CostumeModel)
				copy(Costumes_SkinTR[Total_SkinTR][g_preview], charsmax(Costumes_SkinTR[][g_preview]), CostumePreview)

				Total_SkinTR += 1
				TotalCostumes += 1
			}
		#endif
			else if(equal(Costume, "Head"))
			{
				copy(Costumes_Head[Total_Head][g_name], charsmax(Costumes_Head[][g_name]), CostumeName)
				Costumes_Head[Total_Head][g_price] = str_to_num(CostumePrice)
				copy(Costumes_Head[Total_Head][g_model], charsmax(Costumes_Head[][g_model]), CostumeModel)
				Costumes_Head[Total_Head][g_anim] = str_to_num(CostumeAnim)
				copy(Costumes_Head[Total_Head][g_preview], charsmax(Costumes_Head[][g_preview]), CostumePreview)

				Total_Head += 1
				TotalCostumes += 1
			}
			else if(equal(Costume, "Back"))
			{
				copy(Costumes_Back[Total_Back][g_name], charsmax(Costumes_Back[][g_name]), CostumeName)
				Costumes_Back[Total_Back][g_price] = str_to_num(CostumePrice)
				copy(Costumes_Back[Total_Back][g_model], charsmax(Costumes_Back[][g_model]), CostumeModel)
				Costumes_Back[Total_Back][g_anim] = str_to_num(CostumeAnim)
				copy(Costumes_Back[Total_Back][g_preview], charsmax(Costumes_Back[][g_preview]), CostumePreview)

				Total_Back += 1
				TotalCostumes += 1
			}
			else if(equal(Costume, "Pelvis"))
			{
				copy(Costumes_Pelvis[Total_Pelvis][g_name], charsmax(Costumes_Pelvis[][g_name]), CostumeName)
				Costumes_Pelvis[Total_Pelvis][g_price] = str_to_num(CostumePrice)
				copy(Costumes_Pelvis[Total_Pelvis][g_model], charsmax(Costumes_Pelvis[][g_model]), CostumeModel)
				Costumes_Pelvis[Total_Pelvis][g_anim] = str_to_num(CostumeAnim)
				copy(Costumes_Pelvis[Total_Pelvis][g_preview], charsmax(Costumes_Pelvis[][g_preview]), CostumePreview)

				Total_Pelvis += 1
				TotalCostumes += 1
			}

			if(TotalCostumes >= MAX_COSTUMES-1)
			{
				server_print("[CSO Costumes] Costumes limit reached [%d]", MAX_COSTUMES-1)
				break
			}
		}

		if(file)
		{
			server_print("[CSO Costumes] %d Costumes loaded", TotalCostumes)
			fclose(file)
		}
	}
}

#if defined ZP_SUPPORT
public zp_user_infected_post(id)
{
	if(!g_vars[id][is_connected] || g_vars[id][is_bot_or_hltv])
	{
		return
	}

	if(g_settings[ZP43_Support])
	{
		cs_reset_player_model(id)
	}

	reset_costume(id, 1)
	reset_costume(id, 2)
	reset_costume(id, 3)
}

public zp_user_humanized_post(id, survivor)
{
	if(!g_vars[id][is_connected] || g_vars[id][is_bot_or_hltv])
	{
		return
	}

	if(survivor)
	{
		if(g_settings[ZP43_Support])
		{
			cs_reset_player_model(id)
		}

		reset_costume(id, 1)
		reset_costume(id, 2)
		reset_costume(id, 3)
	}
	else
	{
		checkCostumes(id, 0)
		checkCostumes(id, 1)
		checkCostumes(id, 2)
		checkCostumes(id, 3)
	}
}

public ZP43_checkCostumes(id)
{
	checkCostumes(id, 0)
	checkCostumes(id, 1)
	checkCostumes(id, 2)
	checkCostumes(id, 3)
}
#endif

public Nvault_Init()
{
	g_Vault = nvault_open(g_settings[Vault])

	if(g_Vault == INVALID_HANDLE)
	{
		g_settings[Saving_Method] = 0
		server_print("[CSO Costumes] Failed to use Nvault saving system! Continuing without saving system.")
		nvault_close(g_Vault)
	}
}

public Load_Nvault(id)
{
	new szCash[64]; formatex(szCash, charsmax(szCash), "%sCash", g_szAuthID[id])

	g_vars[id][g_cash] = nvault_get(g_Vault, szCash)

#if defined ZP_SUPPORT
	new szSkin[64]; formatex(szSkin, charsmax(szSkin), "%sSkin", g_szAuthID[id])

	g_vars[id][g_skin] = nvault_get(g_Vault, szSkin)

	if(g_vars[id][g_skin] >= Total_Skin)
	{
		g_vars[id][g_skin] = 0
	}

	for(new i = 1; i < Total_Skin; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkin%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredSkin][i] = nvault_get(g_Vault, szKey)
	}
#else
	new szSkinCT[64]; formatex(szSkinCT, charsmax(szSkinCT), "%sSkinCT", g_szAuthID[id])
	new szSkinTR[64]; formatex(szSkinTR, charsmax(szSkinTR), "%sSkinTR", g_szAuthID[id])

	g_vars[id][g_skinct] = nvault_get(g_Vault, szSkinCT)
	g_vars[id][g_skintr] = nvault_get(g_Vault, szSkinTR)

	if(g_vars[id][g_skinct] >= Total_SkinCT)
	{
		g_vars[id][g_skinct] = 0
	}

	if(g_vars[id][g_skintr] >= Total_SkinTR)
	{
		g_vars[id][g_skintr] = 0
	}

	for(new i = 1; i < Total_SkinCT; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinCT%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredSkinCT][i] = nvault_get(g_Vault, szKey)
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinTR%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredSkinTR][i] = nvault_get(g_Vault, szKey)
	}
#endif

	new szHead[64]; formatex(szHead, charsmax(szHead), "%sHead", g_szAuthID[id])
	new szBack[64]; formatex(szBack, charsmax(szBack), "%sBack", g_szAuthID[id])
	new szPelvis[64]; formatex(szPelvis, charsmax(szPelvis), "%sPelvis", g_szAuthID[id])

	g_vars[id][g_head] = nvault_get(g_Vault, szHead)
	g_vars[id][g_back] = nvault_get(g_Vault, szBack)
	g_vars[id][g_pelvis] = nvault_get(g_Vault, szPelvis)

	if(g_vars[id][g_head] >= Total_Head)
	{
		g_vars[id][g_head] = 0
	}

	if(g_vars[id][g_back] >= Total_Back)
	{
		g_vars[id][g_back] = 0
	}

	if(g_vars[id][g_pelvis] >= Total_Pelvis)
	{
		g_vars[id][g_pelvis] = 0
	}

	for(new i = 1; i < Total_Head; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sHead%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredHead][i] = nvault_get(g_Vault, szKey)
	}

	for(new i = 1; i < Total_Back; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sBack%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredBack][i] = nvault_get(g_Vault, szKey)
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sPelvis%d", g_szAuthID[id], i)
		g_vars[id][g_acquiredPelvis][i] = nvault_get(g_Vault, szKey)
	}
}

public Save_Nvault(id)
{
	new szCash[64]; formatex(szCash, charsmax(szCash), "%sCash", g_szAuthID[id])
	new szCash1[11]; num_to_str(g_vars[id][g_cash], szCash1, charsmax(szCash1))

	nvault_pset(g_Vault, szCash, szCash1)

#if defined ZP_SUPPORT
	new szSkin[64]; formatex(szSkin, charsmax(szSkin), "%sSkin", g_szAuthID[id])
	new szSkin1[11]; num_to_str(g_vars[id][g_skin], szSkin1, charsmax(szSkin1))

	nvault_pset(g_Vault, szSkin, szSkin1)

	for(new i = 1; i < Total_Skin; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkin%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkin][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}
#else
	new szSkinCT[64]; formatex(szSkinCT, charsmax(szSkinCT), "%sSkinCT", g_szAuthID[id])
	new szSkinCT1[11]; num_to_str(g_vars[id][g_skinct], szSkinCT1, charsmax(szSkinCT1))

	new szSkinTR[64]; formatex(szSkinTR, charsmax(szSkinTR), "%sSkinTR", g_szAuthID[id])
	new szSkinTR1[11]; num_to_str(g_vars[id][g_skintr], szSkinTR1, charsmax(szSkinTR1))

	nvault_pset(g_Vault, szSkinCT, szSkinCT1)
	nvault_pset(g_Vault, szSkinTR, szSkinTR1)

	for(new i = 1; i < Total_SkinCT; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinCT%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkinCT][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sSkinTR%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredSkinTR][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}
#endif

	new szHead[64]; formatex(szHead, charsmax(szHead), "%sHead", g_szAuthID[id])
	new szHead1[11]; num_to_str(g_vars[id][g_head], szHead1, charsmax(szHead1))

	new szBack[64]; formatex(szBack, charsmax(szBack), "%sBack", g_szAuthID[id])
	new szBack1[11]; num_to_str(g_vars[id][g_back], szBack1, charsmax(szBack1))

	new szPelvis[64]; formatex(szPelvis, charsmax(szPelvis), "%sPelvis", g_szAuthID[id])
	new szPelvis1[11]; num_to_str(g_vars[id][g_pelvis], szPelvis1, charsmax(szPelvis1))

	nvault_pset(g_Vault, szHead, szHead1)
	nvault_pset(g_Vault, szBack, szBack1)
	nvault_pset(g_Vault, szPelvis, szPelvis1)

	for(new i = 1; i < Total_Head; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sHead%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredHead][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}

	for(new i = 1; i < Total_Back; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sBack%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredBack][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		new szKey[64]; formatex(szKey, charsmax(szKey), "%sPelvis%d", g_szAuthID[id], i)
		new szKey2[2]; num_to_str(g_vars[id][g_acquiredPelvis][i], szKey2, charsmax(szKey2))
		nvault_pset(g_Vault, szKey, szKey2)
	}
}

public MySql_Init()
{
	g_SqlTuple = SQL_MakeDbTuple(g_settings[Host], g_settings[User], g_settings[Pass], g_settings[Db])

	new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode, g_Error, charsmax(g_Error))
	if(SqlConnection == Empty_Handle)
	{
		log_amx(g_Error)
		g_settings[Saving_Method] = 1
		server_print("[CSO Costumes] Failed to use MySQL saving system! Continuing with Nvault saving system.")
		SQL_FreeHandle(g_SqlTuple)
		Load_Configuration(1)
		return
	}

	static len; len = 0
	static szTemp[8192]

#if defined ZP_SUPPORT
	len += formatex(szTemp[len], charsmax(szTemp), "CREATE TABLE IF NOT EXISTS `%s` (\
	`Id` INT(11) AUTO_INCREMENT PRIMARY KEY, `SteamID` varchar(35), `Cash` INT(11),\
	`Skin` INT(11), `Head` INT(11), `Back` INT(11), `Pelvis` INT(11)", g_settings[Table])

	for(new i = 1; i < Total_Skin; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Skin%d` INT(1)", i)
	}
#else
	len += formatex(szTemp[len], charsmax(szTemp), "CREATE TABLE IF NOT EXISTS `%s` (\
	`Id` INT(11) AUTO_INCREMENT PRIMARY KEY, `SteamID` varchar(35), `Cash` INT(11),\
	`SkinCT` INT(11), `SkinTR` INT(11), `Head` INT(11), `Back` INT(11), `Pelvis` INT(11)", g_settings[Table])

	for(new i = 1; i < Total_SkinCT; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d` INT(1)", i)
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d` INT(1)", i)
	}
#endif

	for(new i = 1; i < Total_Head; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d` INT(1)", i)
	}

	for(new i = 1; i < Total_Back; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d` INT(1)", i)
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d` INT(1)", i)
	}

	len += formatex(szTemp[len], charsmax(szTemp), ")")

	new Handle:Queries
	Queries = SQL_PrepareQuery(SqlConnection, szTemp)

	if(!SQL_Execute(Queries))
	{
		SQL_QueryError(Queries, g_Error, charsmax(g_Error))
		log_amx(g_Error)
		g_settings[Saving_Method] = 1
		server_print("[CSO Costumes] Failed to use MySQL saving system! Continuing with Nvault saving system.")
		SQL_FreeHandle(g_SqlTuple)
		Load_Configuration(1)
		return
	}

	SQL_FreeHandle(Queries)
	SQL_FreeHandle(SqlConnection)

	MySql_Init2()
}

public MySql_Init2()
{
	new szTemp[128], Data[1]; Data[0] = 1

	formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s`", g_settings[Table])
	SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, sizeof(Data))
}

public Load_MySql(id)
{
	new szTemp[256], Data[1]; Data[0] = id

	formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE (`%s`.`SteamID` = '%s')", g_settings[Table], g_settings[Table], g_szAuthID[id])
	SQL_ThreadQuery(g_SqlTuple, "register_client", szTemp, Data, sizeof(Data))
}

public register_client(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
	switch(FailState)
	{
		case TQUERY_CONNECT_FAILED: log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error)
		case TQUERY_QUERY_FAILED: log_amx("Load - Query failed. [%d] %s", Errcode, Error)
	}

	new id; id = Data[0]

	if(SQL_NumResults(Query) < 1)
	{
		if(equal(g_szAuthID[id], "ID_PENDING"))
		{
			return
		}

		static len; len = 0
		new szTemp[128], Data[1]; Data[0] = 0

		len += formatex(szTemp[len], charsmax(szTemp), "INSERT INTO `%s` (`SteamID`) VALUES ('%s')", g_settings[Table], g_szAuthID[id])

		SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, sizeof(Data))

		Save_MySql(id)
	}
	else
	{
		new query; query = 2

		g_vars[id][g_cash] = SQL_ReadResult(Query, query); query++

	#if defined ZP_SUPPORT
		g_vars[id][g_skin] = SQL_ReadResult(Query, query); query++

		if(g_vars[id][g_skin] >= Total_Skin)
		{
			g_vars[id][g_skin] = 0
		}

		for(new i = 1; i < Total_Skin; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Skin%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredSkin][i] = SQL_ReadResult(Query, num)
		}
	#else
		g_vars[id][g_skinct] = SQL_ReadResult(Query, query); query++
		g_vars[id][g_skintr] = SQL_ReadResult(Query, query); query++

		if(g_vars[id][g_skinct] >= Total_SkinCT)
		{
			g_vars[id][g_skinct] = 0
		}

		if(g_vars[id][g_skintr] >= Total_SkinTR)
		{
			g_vars[id][g_skintr] = 0
		}

		for(new i = 1; i < Total_SkinCT; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "SkinCT%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredSkinCT][i] = SQL_ReadResult(Query, num)
		}

		for(new i = 1; i < Total_SkinTR; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "SkinTR%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredSkinTR][i] = SQL_ReadResult(Query, num)
		}
	#endif

		g_vars[id][g_head] = SQL_ReadResult(Query, query); query++
		g_vars[id][g_back] = SQL_ReadResult(Query, query); query++
		g_vars[id][g_pelvis] = SQL_ReadResult(Query, query); query++

		if(g_vars[id][g_head] >= Total_Head)
		{
			g_vars[id][g_head] = 0
		}

		if(g_vars[id][g_back] >= Total_Back)
		{
			g_vars[id][g_back] = 0
		}

		if(g_vars[id][g_pelvis] >= Total_Pelvis)
		{
			g_vars[id][g_pelvis] = 0
		}

		for(new i = 1; i < Total_Head; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Head%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredHead][i] = SQL_ReadResult(Query, num)
		}

		for(new i = 1; i < Total_Back; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Back%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredBack][i] = SQL_ReadResult(Query, num)
		}

		for(new i = 1; i < Total_Pelvis; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Pelvis%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			g_vars[id][g_acquiredPelvis][i] = SQL_ReadResult(Query, num)
		}
	}
}

public Save_MySql(id)
{
	static szTemp[8192]
	new Data[1]; Data[0] = 0
	static len; len = 0

#if defined ZP_SUPPORT
	len += formatex(szTemp[len], charsmax(szTemp), "UPDATE `%s` SET `Cash` = '%i', `Skin` = '%i', `Head` = '%i',\
	`Back` = '%i', `Pelvis` = '%i'", g_settings[Table], g_vars[id][g_cash], g_vars[id][g_skin], g_vars[id][g_head], g_vars[id][g_back], g_vars[id][g_pelvis])

	for(new i = 1; i < Total_Skin; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Skin%d` = '%i'", i, g_vars[id][g_acquiredSkin][i])
	}
#else
	len += formatex(szTemp[len], charsmax(szTemp), "UPDATE `%s` SET `Cash` = '%i', `SkinCT` = '%i', `SkinTR` = '%i', `Head` = '%i', `Back` = '%i',\
	`Pelvis` = '%i'", g_settings[Table], g_vars[id][g_cash], g_vars[id][g_skinct], g_vars[id][g_skintr], g_vars[id][g_head], g_vars[id][g_back], g_vars[id][g_pelvis])

	for(new i = 1; i < Total_SkinCT; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d` = '%i'", i, g_vars[id][g_acquiredSkinCT][i])
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d` = '%i'", i, g_vars[id][g_acquiredSkinTR][i])
	}
#endif

	for(new i = 1; i < Total_Head; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d` = '%i'", i, g_vars[id][g_acquiredHead][i])
	}

	for(new i = 1; i < Total_Back; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d` = '%i'", i, g_vars[id][g_acquiredBack][i])
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d` = '%i'", i, g_vars[id][g_acquiredPelvis][i])
	}

	formatex(szTemp[len], charsmax(szTemp), " WHERE `%s`.`SteamID` = '%s';", g_settings[Table], g_szAuthID[id])

	SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data, sizeof(Data))
}

public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
	new VerifyCostumes; VerifyCostumes = Data[0]

	if(VerifyCostumes)
	{
		new Data1[1]; Data1[0] = 0

	#if defined ZP_SUPPORT
		for(new i = 1; i < Total_Skin; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Skin%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}
	#else
		for(new i = 1; i < Total_SkinCT; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "SkinCT%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}

		for(new i = 1; i < Total_SkinTR; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "SkinTR%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}
	#endif

		for(new i = 1; i < Total_Head; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Head%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}

		for(new i = 1; i < Total_Back; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Back%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}

		for(new i = 1; i < Total_Pelvis; i++)
		{
			new szname[20]; formatex(szname, charsmax(szname), "Pelvis%d", i)
			new num = SQL_FieldNameToNum(Query, szname)

			if(num == -1)
			{
				new szTemp[128]; formatex(szTemp, charsmax(szTemp), "ALTER TABLE `%s` ADD COLUMN `%s` INT(1) NOT NULL", g_settings[Table], szname)
				SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp, Data1, sizeof(Data1))
			}
		}
	}

	SQL_FreeHandle(Query)
}

public Save_Data()
{
	if(g_settings[Saving_Method] != 0)
	{
		new players[32], num, player
		get_players(players, num, "ch")

		for(new i = 0; i < num; i++)
		{
			player = players[i]

			switch(g_settings[Saving_Method])
			{
				case 1: Save_Nvault(player)
				case 2: Save_MySql(player)
			}
		}
	}
}

public client_disconnected(id)
{
	g_vars[id][is_connected] = false

	if(g_vars[id][is_bot_or_hltv])
	{
		g_vars[id][is_bot_or_hltv] = false
		return
	}

	switch(g_settings[Saving_Method])
	{
		case 1: Save_Nvault(id)
		case 2: Save_MySql(id)
	}
}

public client_authorized(id)
{
	if(is_user_bot(id) || is_user_hltv(id))
	{
		g_vars[id][is_bot_or_hltv] = true
		return
	}

	reset_vars(id)

	if(g_settings[Saving_Method] != 0)
	{
		get_user_authid(id, g_szAuthID[id], charsmax(g_szAuthID[]))

		switch(g_settings[Saving_Method])
		{
			case 1: Load_Nvault(id)
			case 2: Load_MySql(id)
		}
	}
}

public client_putinserver(id)
{
	g_vars[id][is_connected] = true
}

public fw_PlayerSpawn_Post(id)
{
	if(is_user_alive(id) && !g_vars[id][is_bot_or_hltv])
	{
		if(g_settings[ZP43_Support])
		{
			set_task(0.1, "ZP43_checkCostumes", id)
		}
		else
		{
			checkCostumes(id, 0)
			checkCostumes(id, 1)
			checkCostumes(id, 2)
			checkCostumes(id, 3)
		}
	}
}

public Event_DeathMsg()
{
	new attacker = read_data(1)
	new victim = read_data(2)

	if(attacker == victim || attacker == 0 || !g_vars[attacker][is_connected] || !g_vars[victim][is_connected] || g_vars[attacker][is_bot_or_hltv])
	{
		return
	}

	new victimname[32]
	get_user_name(victim, victimname, charsmax(victimname))

	ColorChat(attacker, "%L", attacker, "KILL_PLAYER", g_settings[Cash_per_Kill], victimname)
	g_vars[attacker][g_cash] += g_settings[Cash_per_Kill]
}

public clcmd_costumes(id)
{
	show_menu_costumes(id)

	return PLUGIN_HANDLED
}

public clcmd_inventory(id)
{
	show_menu_inventory(id)

	return PLUGIN_HANDLED
}

public clcmd_shop(id)
{
	show_menu_shop(id)

	return PLUGIN_HANDLED
}

public clcmd_deactivate(id)
{
#if defined ZP_SUPPORT
	g_vars[id][g_skin] = 0
#else
	g_vars[id][g_skinct] = 0
	g_vars[id][g_skintr] = 0
#endif

	g_vars[id][g_head] = 0
	g_vars[id][g_back] = 0
	g_vars[id][g_pelvis] = 0

	checkCostumes(id, 0)
	reset_costume(id, 1)
	reset_costume(id, 2)
	reset_costume(id, 3)

	ColorChat(id, "%L", id, "DEACTIVATED_COSTUMES")

	return PLUGIN_HANDLED
}

public clcmd_cash(id)
{
	ColorChat(id, "%L", id, "CASH", g_vars[id][g_cash])

	return PLUGIN_HANDLED
}

public Cmd_GiveCash(id, iLevel, iCid)
{
	if(!cmd_access(id, iLevel, iCid, 3))
	{
		return PLUGIN_HANDLED
	}

	new szPlayer[32]
	read_argv(1, szPlayer, charsmax(szPlayer))

	new iPlayer = cmd_target(id, szPlayer, 0)

	if(!iPlayer || g_vars[iPlayer][is_bot_or_hltv])
	{
		return PLUGIN_HANDLED
	}

	new szName[2][32], szAmount[10]
	read_argv(2, szAmount, charsmax(szAmount))
	get_user_name(id, szName[0], charsmax(szName[]))
	get_user_name(iPlayer, szName[1], charsmax(szName[]))

	new szKey[32], iCash = str_to_num(szAmount)
	g_vars[iPlayer][g_cash] += iCash

	if(g_vars[iPlayer][g_cash] < 0)
	{
		g_vars[iPlayer][g_cash] = 0
	}

	if(iCash >= 0)
	{
		copy(szKey, charsmax(szKey), "GIVE_CASH")
	}
	else
	{
		copy(szKey, charsmax(szKey), "TAKE_CASH")
		iCash *= -1
	}

	ColorChat(0, "%L", id, szKey, szName[0], iCash, szName[1])
	return PLUGIN_HANDLED
}

public menu_costumes(id, menu, item)
{
	switch(item)
	{
		case 0: show_menu_inventory(id)
		case 1: show_menu_shop(id)
	}

	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_costumes(id)
{
	new msgm[128], msg1[32], msg2[32], msgexit[32]
	formatex(msgm, charsmax(msgm), "%s \y%L", PREFIX_MENU, id, "COSTUMES")
	formatex(msg1, charsmax(msg1), "%L", id, "INVENTORY")
	formatex(msg2, charsmax(msg2), "%L", id, "SHOP")
	formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT")

	new menu = menu_create(msgm, "menu_costumes")

	menu_additem(menu, msg1, "0", 0)
	menu_additem(menu, msg2, "1", 0)

	menu_setprop(menu, MPROP_EXITNAME, msgexit)

	menu_display(id, menu, 0)
}

public menu_inventory(id, menu, item)
{
	switch(item)
	{
		case 0..z:
		{
		#if defined ZP_SUPPORT
			if(Total_Skin == 1 && item == 0 || Total_Head == 1 && item == 1 || Total_Back == 1 && item == 2 || Total_Pelvis == 1 && item == 3)
			{
				ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "")
				show_menu_inventory(id)
			}
		#else
			if(Total_SkinCT == 1 && item == 0 || Total_SkinTR == 1 && item == 1 || Total_Head == 1 && item == 2 || Total_Back == 1 && item == 3 || Total_Pelvis == 1 && item == 4)
			{
				ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? item > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "")
				show_menu_inventory(id)
			}
		#endif
			else
			{
				g_vars[id][g_costume] = item
				show_menu_costumeinv(id)
			}
		}
		case z+1:
		{
			clcmd_deactivate(id)
			show_menu_inventory(id)
		}
		case MENU_EXIT:
		{
			if(g_vars[id][is_connected])
			{
				show_menu_costumes(id)
			}
		}
	}

	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_inventory(id)
{
	new msgm[128], msghead[32], msgback[32], msgpelvis[32], msg1[64], msgexit[32]
	formatex(msgm, charsmax(msgm), "%s \y%L", PREFIX_MENU, id, "INVENTORY")
	formatex(msghead, charsmax(msghead), "%L", id, "COSTUME_HEAD")
	formatex(msgback, charsmax(msgback), "%L", id, "COSTUME_BACK")
	formatex(msgpelvis, charsmax(msgpelvis), "%L", id, "COSTUME_PELVIS")
	formatex(msg1, charsmax(msg1), "%L", id, "DEACTIVATE_ALLCOSTUMES")
	formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT")

	new menu = menu_create(msgm, "menu_inventory")

#if defined ZP_SUPPORT
	new msgskin[32]; formatex(msgskin, charsmax(msgskin), "%L", id, "COSTUME_SKIN")

	menu_additem(menu, msgskin, "0", 0)
	menu_additem(menu, msghead, "1", 0)
	menu_additem(menu, msgback, "2", 0)
	menu_additem(menu, msgpelvis, "3", 0)
	menu_additem(menu, msg1, "4", 0)
#else
	new msgskinct[32], msgskintr[32]
	formatex(msgskinct, charsmax(msgskinct), "%L", id, "COSTUME_SKINCT")
	formatex(msgskintr, charsmax(msgskintr), "%L", id, "COSTUME_SKINTR")

	menu_additem(menu, msgskinct, "0", 0)
	menu_additem(menu, msgskintr, "1", 0)
	menu_additem(menu, msghead, "2", 0)
	menu_additem(menu, msgback, "3", 0)
	menu_additem(menu, msgpelvis, "4", 0)
	menu_additem(menu, msg1, "5", 0)
#endif

	menu_setprop(menu, MPROP_EXITNAME, msgexit)

	menu_display(id, menu, 0)
}

public menu_costumeinv(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		if(g_vars[id][is_connected])
		{
			show_menu_inventory(id)
		}

		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	if(item == 0)
	{
	#if defined ZP_SUPPORT
		if(!g_vars[id][g_skin] && g_vars[id][g_costume] == 0 || !g_vars[id][g_head] && g_vars[id][g_costume] == 1 || !g_vars[id][g_back] && g_vars[id][g_costume] == 2 || !g_vars[id][g_pelvis] && g_vars[id][g_costume] == 3)
		{
			ColorChat(id, "%L", id, "ALREADY_DEACTIVATED")
		}
	#else
		if(!g_vars[id][g_skinct] && g_vars[id][g_costume] == 0 || !g_vars[id][g_skintr] && g_vars[id][g_costume] == 1 || !g_vars[id][g_head] && g_vars[id][g_costume] == 2 || !g_vars[id][g_back] && g_vars[id][g_costume] == 3 || !g_vars[id][g_pelvis] && g_vars[id][g_costume] == 4)
		{
			ColorChat(id, "%L", id, "ALREADY_DEACTIVATED")
		}
	#endif
		else
		{
			switch(g_vars[id][g_costume])
			{
			#if defined ZP_SUPPORT
				case 0:
				{
					g_vars[id][g_skin] = 0
					checkCostumes(id, 0)
				}
			#else
				case 0:
				{
					g_vars[id][g_skinct] = 0
					checkCostumes(id, 0)
				}
				case 1:
				{
					g_vars[id][g_skintr] = 0
					checkCostumes(id, 0)
				}
			#endif
				case y:
				{
					g_vars[id][g_head] = 0
					reset_costume(id, 1)
				}
				case y+1:
				{
					g_vars[id][g_back] = 0
					reset_costume(id, 2)
				}
				case y+2:
				{
					g_vars[id][g_pelvis] = 0
					reset_costume(id, 3)
				}
			}

			#if defined ZP_SUPPORT
				ColorChat(id, "%L", id, "DEACTIVATE_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "")
			#else
				ColorChat(id, "%L", id, "DEACTIVATE_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "")
			#endif
		}
	}
	else
	{
		new keyc = 1

		switch(g_vars[id][g_costume])
		{
		#if defined ZP_SUPPORT
			case 0:
			{
				for(new i = 1; i < Total_Skin; i++)
				{
					if(!g_vars[id][g_acquiredSkin][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_skin] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_skin] = i
							checkCostumes(id, 0)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Skin[i][g_name])
						}

						break
					}

					keyc++
				}
			}
		#else
			case 0:
			{
				for(new i = 1; i < Total_SkinCT; i++)
				{
					if(!g_vars[id][g_acquiredSkinCT][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_skinct] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_skinct] = i
							checkCostumes(id, 0)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_SkinCT[i][g_name])
						}

						break
					}

					keyc++
				}
			}
			case 1:
			{
				for(new i = 1; i < Total_SkinTR; i++)
				{
					if(!g_vars[id][g_acquiredSkinTR][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_skintr] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_skintr] = i
							checkCostumes(id, 0)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_SkinTR[i][g_name])
						}

						break
					}

					keyc++
				}
			}
		#endif
			case y:
			{
				for(new i = 1; i < Total_Head; i++)
				{
					if(!g_vars[id][g_acquiredHead][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_head] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_head] = i
							checkCostumes(id, 1)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Head[i][g_name])
						}

						break
					}

					keyc++
				}
			}
			case y+1:
			{
				for(new i = 1; i < Total_Back; i++)
				{
					if(!g_vars[id][g_acquiredBack][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_back] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_back] = i
							checkCostumes(id, 2)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Back[i][g_name])
						}

						break
					}

					keyc++
				}
			}
			case y+2:
			{
				for(new i = 1; i < Total_Pelvis; i++)
				{
					if(!g_vars[id][g_acquiredPelvis][i])
					{
						continue
					}

					if(keyc == item)
					{
						if(g_vars[id][g_pelvis] == i)
						{
							ColorChat(id, "%L", id, "ALREADY_ACTIVATED")
						}
						else
						{
							g_vars[id][g_pelvis] = i
							checkCostumes(id, 3)
							ColorChat(id, "%L", id, "ACTIVATE_COSTUME", Costumes_Pelvis[i][g_name])
						}

						break
					}

					keyc++
				}
			}
		}
	}

	show_menu_costumeinv(id)
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_costumeinv(id)
{
	new msgm[128], msg[128], msg1[16], msgactivated[32], msgback[32], msgnext[32], msgexit[32], item = 1
#if defined ZP_SUPPORT
	formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\r", PREFIX_MENU, id, "INVENTORY", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "")
#else
	formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\r", PREFIX_MENU, id, "INVENTORY", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "")
#endif
	formatex(msgactivated, charsmax(msgactivated), " \r[%L]", id, "ACTIVATED")
	formatex(msgback, charsmax(msgback), "%L", id, "MENU_BACK")
	formatex(msgnext, charsmax(msgnext), "%L", id, "MENU_NEXT")
	formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT")

	new menu = menu_create(msgm, "menu_costumeinv")

	formatex(msg, charsmax(msg), "%L", id, "COSTUME_NONE")
	menu_additem(menu, msg, "0", 0)

	switch(g_vars[id][g_costume])
	{
	#if defined ZP_SUPPORT
		case 0:
		{
			for(new i = 1; i < Total_Skin; i++)
			{
				if(!g_vars[id][g_acquiredSkin][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_Skin[i][g_name], g_vars[id][g_skin] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
	#else
		case 0:
		{
			for(new i = 1; i < Total_SkinCT; i++)
			{
				if(!g_vars[id][g_acquiredSkinCT][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_SkinCT[i][g_name], g_vars[id][g_skinct] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
		case 1:
		{
			for(new i = 1; i < Total_SkinTR; i++)
			{
				if(!g_vars[id][g_acquiredSkinTR][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_SkinTR[i][g_name], g_vars[id][g_skintr] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
	#endif
		case y:
		{
			for(new i = 1; i < Total_Head; i++)
			{
				if(!g_vars[id][g_acquiredHead][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_Head[i][g_name], g_vars[id][g_head] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
		case y+1:
		{
			for(new i = 1; i < Total_Back; i++)
			{
				if(!g_vars[id][g_acquiredBack][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_Back[i][g_name], g_vars[id][g_back] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
		case y+2:
		{
			for(new i = 1; i < Total_Pelvis; i++)
			{
				if(!g_vars[id][g_acquiredPelvis][i])
				{
					continue
				}

				formatex(msg, charsmax(msg), "%s%s", Costumes_Pelvis[i][g_name], g_vars[id][g_pelvis] == i ? msgactivated : "")
				num_to_str(item, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)

				item++
			}
		}
	}

	if(item == 1)
	{
	#if defined ZP_SUPPORT
		ColorChat(id, "%L", id, "NO_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "")
	#else
		ColorChat(id, "%L", id, "NO_COSTUME", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "")
	#endif
		show_menu_inventory(id)
		menu_destroy(menu)
		return
	}

	menu_setprop(menu, MPROP_BACKNAME, msgback)
	menu_setprop(menu, MPROP_NEXTNAME, msgnext)
	menu_setprop(menu, MPROP_EXITNAME, msgexit)

	menu_display(id, menu, 0)
}

public menu_shop(id, menu, item)
{
	switch(item)
	{
		case 0..z:
		{
		#if defined ZP_SUPPORT
			if(Total_Skin == 1 && item == 0 || Total_Head == 1 && item == 1 || Total_Back == 1 && item == 2 || Total_Pelvis == 1 && item == 3)
			{
				ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "")
				show_menu_shop(id)
			}
		#else
			if(Total_SkinCT == 1 && item == 0 || Total_SkinTR == 1 && item == 1 || Total_Head == 1 && item == 2 || Total_Back == 1 && item == 3 || Total_Pelvis == 1 && item == 4)
			{
				ColorChat(id, "%L", id, "NOT_AVAILABLE", id, item > -1 ? item > 0 ? item > 1 ? item > 2 ? item > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "")
				show_menu_shop(id)
			}
		#endif
			else
			{
				g_vars[id][g_costume] = item
				show_menu_costumeshop(id)
			}
		}
		case MENU_EXIT:
		{
			if(g_vars[id][is_connected])
			{
				show_menu_costumes(id)
			}
		}
	}

	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_shop(id)
{
	new msgm[128], msghead[32], msgback[32], msgpelvis[32], msgexit[32]
	formatex(msgm, charsmax(msgm), "%s \y%L^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "MENU_CASH", g_vars[id][g_cash])
	formatex(msghead, charsmax(msghead), "%L", id, "COSTUME_HEAD")
	formatex(msgback, charsmax(msgback), "%L", id, "COSTUME_BACK")
	formatex(msgpelvis, charsmax(msgpelvis), "%L", id, "COSTUME_PELVIS")
	formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT")

	new menu = menu_create(msgm, "menu_shop")

#if defined ZP_SUPPORT
	new msgskin[32]; formatex(msgskin, charsmax(msgskin), "%L", id, "COSTUME_SKIN")

	menu_additem(menu, msgskin, "0", 0)
	menu_additem(menu, msghead, "1", 0)
	menu_additem(menu, msgback, "2", 0)
	menu_additem(menu, msgpelvis, "3", 0)
#else
	new msgskinct[32], msgskintr[32]
	formatex(msgskinct, charsmax(msgskinct), "%L", id, "COSTUME_SKINCT")
	formatex(msgskintr, charsmax(msgskintr), "%L", id, "COSTUME_SKINTR")

	menu_additem(menu, msgskinct, "0", 0)
	menu_additem(menu, msgskintr, "1", 0)
	menu_additem(menu, msghead, "2", 0)
	menu_additem(menu, msgback, "3", 0)
	menu_additem(menu, msgpelvis, "4", 0)
#endif

	menu_setprop(menu, MPROP_EXITNAME, msgexit)

	menu_display(id, menu, 0)
}

public menu_costumeshop(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		if(g_vars[id][is_connected])
		{
			show_menu_shop(id)
		}

		menu_destroy(menu)
		return PLUGIN_HANDLED
	}

	new key = item+1

#if defined ZP_SUPPORT
	if(g_vars[id][g_costume] == 0 && g_vars[id][g_acquiredSkin][key] || g_vars[id][g_costume] == 1 && g_vars[id][g_acquiredHead][key] || g_vars[id][g_costume] == 2 && g_vars[id][g_acquiredBack][key] || g_vars[id][g_costume] == 3 && g_vars[id][g_acquiredPelvis][key])
	{
		ColorChat(id, "%L", id, "ALREADY_HAVECOSTUME")
		show_menu_costumeshop(id)
	}
#else
	if(g_vars[id][g_costume] == 0 && g_vars[id][g_acquiredSkinCT][key] || g_vars[id][g_costume] == 1 && g_vars[id][g_acquiredSkinTR][key] || g_vars[id][g_costume] == 2 && g_vars[id][g_acquiredHead][key] || g_vars[id][g_costume] == 3 && g_vars[id][g_acquiredBack][key] || g_vars[id][g_costume] == 4 && g_vars[id][g_acquiredPelvis][key])
	{
		ColorChat(id, "%L", id, "ALREADY_HAVECOSTUME")
		show_menu_costumeshop(id)
	}
#endif
	else
	{
		g_vars[id][g_buying] = key
		show_menu_buycostume(id)
	}

	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_costumeshop(id)
{
	new msgm[128], msg[128], msg1[16], msg2[64], msgacquired[32], msgback[32], msgnext[32], msgexit[32]
#if defined ZP_SUPPORT
	formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%d^n", PREFIX_MENU, id, "SHOP", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKIN" : "", id, "MENU_CASH", g_vars[id][g_cash])
#else
	formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%d^n", PREFIX_MENU, id, "SHOP", id, g_vars[id][g_costume] > -1 ? g_vars[id][g_costume] > 0 ? g_vars[id][g_costume] > 1 ? g_vars[id][g_costume] > 2 ? g_vars[id][g_costume] > 3 ? "COSTUME_PELVIS" : "COSTUME_BACK" : "COSTUME_HEAD" : "COSTUME_SKINTR" : "COSTUME_SKINCT" : "", id, "MENU_CASH", g_vars[id][g_cash])
#endif
	formatex(msgacquired, charsmax(msgacquired), "[%L]", id, "ACQUIRED")
	formatex(msgback, charsmax(msgback), "%L", id, "MENU_BACK")
	formatex(msgnext, charsmax(msgnext), "%L", id, "MENU_NEXT")
	formatex(msgexit, charsmax(msgexit), "%L", id, "MENU_EXIT")

	new menu = menu_create(msgm, "menu_costumeshop")

	switch(g_vars[id][g_costume])
	{
	#if defined ZP_SUPPORT
		case 0:
		{
			for(new i = 1; i < Total_Skin; i++)
			{
				formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Skin[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkin][i] ? "\d" : "", Costumes_Skin[i][g_name], g_vars[id][g_acquiredSkin][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
	#else
		case 0:
		{
			for(new i = 1; i < Total_SkinCT; i++)
			{
				formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_SkinCT[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkinCT][i] ? "\d" : "", Costumes_SkinCT[i][g_name], g_vars[id][g_acquiredSkinCT][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
		case 1:
		{
			for(new i = 1; i < Total_SkinTR; i++)
			{
				formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_SkinTR[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredSkinTR][i] ? "\d" : "", Costumes_SkinTR[i][g_name], g_vars[id][g_acquiredSkinTR][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
	#endif
		case y:
		{
			for(new i = 1; i < Total_Head; i++)
			{
				formatex(msg2, charsmax(msg1), "[%L: %d]", id, "PRICE", Costumes_Head[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredHead][i] ? "\d" : "", Costumes_Head[i][g_name], g_vars[id][g_acquiredHead][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
		case y+1:
		{
			for(new i = 1; i < Total_Back; i++)
			{
				formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Back[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredBack][i] ? "\d" : "", Costumes_Back[i][g_name], g_vars[id][g_acquiredBack][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
		case y+2:
		{
			for(new i = 1; i < Total_Pelvis; i++)
			{
				formatex(msg2, charsmax(msg2), "[%L: %d]", id, "PRICE", Costumes_Pelvis[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_vars[id][g_acquiredPelvis][i] ? "\d" : "", Costumes_Pelvis[i][g_name], g_vars[id][g_acquiredPelvis][i] ? msgacquired : msg2)
				num_to_str(i-1, msg1, charsmax(msg1))
				menu_additem(menu, msg, msg1, 0)
			}
		}
	}

	menu_setprop(menu, MPROP_BACKNAME, msgback)
	menu_setprop(menu, MPROP_NEXTNAME, msgnext)
	menu_setprop(menu, MPROP_EXITNAME, msgexit)

	menu_display(id, menu, 0)
}

public menu_buycostume(id, menu, item)
{
	switch(item)
	{
		case 0:
		{
			show_motd_costume(id)
			show_menu_buycostume(id)
		}
		case 1:
		{
			switch(g_vars[id][g_costume])
			{
			#if defined ZP_SUPPORT
				case 0:
				{
					if(g_vars[id][g_cash] >= Costumes_Skin[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_Skin[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredSkin][g_vars[id][g_buying]] = 1
						g_vars[id][g_skin] = g_vars[id][g_buying]
						checkCostumes(id, 0)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Skin[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
			#else
				case 0:
				{
					if(g_vars[id][g_cash] >= Costumes_SkinCT[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_SkinCT[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredSkinCT][g_vars[id][g_buying]] = 1
						g_vars[id][g_skinct] = g_vars[id][g_buying]
						checkCostumes(id, 0)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_SkinCT[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
				case 1:
				{
					if(g_vars[id][g_cash] >= Costumes_SkinTR[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_SkinTR[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredSkinTR][g_vars[id][g_buying]] = 1
						g_vars[id][g_skintr] = g_vars[id][g_buying]
						checkCostumes(id, 0)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_SkinTR[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
			#endif
				case y:
				{
					if(g_vars[id][g_cash] >= Costumes_Head[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_Head[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredHead][g_vars[id][g_buying]] = 1
						g_vars[id][g_head] = g_vars[id][g_buying]
						checkCostumes(id, 1)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Head[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
				case y+1:
				{
					if(g_vars[id][g_cash] >= Costumes_Back[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_Back[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredBack][g_vars[id][g_buying]] = 1
						g_vars[id][g_back] = g_vars[id][g_buying]
						checkCostumes(id, 2)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Back[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
				case y+2:
				{
					if(g_vars[id][g_cash] >= Costumes_Pelvis[g_vars[id][g_buying]][g_price])
					{
						g_vars[id][g_cash] -= Costumes_Pelvis[g_vars[id][g_buying]][g_price]
						g_vars[id][g_acquiredPelvis][g_vars[id][g_buying]] = 1
						g_vars[id][g_pelvis] = g_vars[id][g_buying]
						checkCostumes(id, 3)

						ColorChat(id, "%L", id, "BOUGHT_COSTUME", Costumes_Pelvis[g_vars[id][g_buying]][g_name])
						ColorChat(id, "%L", id, "BOUGHT_COSTUME2")
					}
					else
					{
						ColorChat(id, "%L", id, "NO_CASH")
					}
				}
			}

			show_menu_costumeshop(id)
		}
		case MENU_EXIT:
		{
			if(g_vars[id][is_connected])
			{
				show_menu_costumeshop(id)
			}
		}
	}

	menu_destroy(menu)
	return PLUGIN_HANDLED
}

show_menu_buycostume(id)
{
	new msgm[256], msgpreview[32], msgbuy[32], msgcancel[32]
	formatex(msgpreview, charsmax(msgpreview), "%L", id, "PREVIEW")
	formatex(msgbuy, charsmax(msgbuy), "%L", id, "BUY")
	formatex(msgcancel, charsmax(msgcancel), "%L", id, "CANCEL_PURCHASE")

	switch(g_vars[id][g_costume])
	{
	#if defined ZP_SUPPORT
		case 0: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKIN", id, "COSTUME", Costumes_Skin[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Skin[g_vars[id][g_buying]][g_price])
	#else
		case 0: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKINCT", id, "COSTUME", Costumes_SkinCT[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_SkinCT[g_vars[id][g_buying]][g_price])
		case 1: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_SKINTR", id, "COSTUME", Costumes_SkinTR[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_SkinTR[g_vars[id][g_buying]][g_price])
	#endif
		case y: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_HEAD", id, "COSTUME", Costumes_Head[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Head[g_vars[id][g_buying]][g_price])
		case y+1: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_BACK", id, "COSTUME", Costumes_Back[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Back[g_vars[id][g_buying]][g_price])
		case y+2: formatex(msgm, charsmax(msgm), "%s \y%L: %L^n\w%L: \r%s^n\w%L: \r%d", PREFIX_MENU, id, "SHOP", id, "COSTUME_PELVIS", id, "COSTUME", Costumes_Pelvis[g_vars[id][g_buying]][g_name], id, "PRICE", Costumes_Pelvis[g_vars[id][g_buying]][g_price])
	}

	new menu = menu_create(msgm, "menu_buycostume")

	menu_additem(menu, msgpreview, "0", 0)
	menu_additem(menu, msgbuy, "1", 0)

	menu_setprop(menu, MPROP_EXITNAME, msgcancel)

	menu_display(id, menu, 0)
}

public show_motd_costume(id)
{
	new motd[512], motd_name[128]

	switch(g_vars[id][g_costume])
	{
	#if defined ZP_SUPPORT
		case 0:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Skin[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Skin[g_vars[id][g_buying]][g_name])
		}
	#else
		case 0:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_SkinCT[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_SkinCT[g_vars[id][g_buying]][g_name])
		}
		case 1:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_SkinTR[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_SkinTR[g_vars[id][g_buying]][g_name])
		}
	#endif
		case y:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Head[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Head[g_vars[id][g_buying]][g_name])
		}
		case y+1:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Back[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Back[g_vars[id][g_buying]][g_name])
		}
		case y+2:
		{
			formatex(motd, charsmax(motd), "<html><head><style>img{display:block;margin-top:125px;margin-left:auto;margin-right:auto;}</style></head><body style=^"margin:0px;background:#000000;^"><img src=^"%s^"></body></html>", Costumes_Pelvis[g_vars[id][g_buying]][g_preview])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Pelvis[g_vars[id][g_buying]][g_name])
		}
	}

	show_motd(id, motd, motd_name)
}

reset_vars(id)
{
	g_vars[id][g_cash] = 0

#if defined ZP_SUPPORT
	g_vars[id][g_skin] = 0

	for(new i = 1; i < Total_Skin; i++)
	{
		g_vars[id][g_acquiredSkin][i] = 0
	}
#else
	g_vars[id][g_skinct] = 0
	g_vars[id][g_skintr] = 0

	for(new i = 1; i < Total_SkinCT; i++)
	{
		g_vars[id][g_acquiredSkinCT][i] = 0
	}

	for(new i = 1; i < Total_SkinTR; i++)
	{
		g_vars[id][g_acquiredSkinTR][i] = 0
	}
#endif

	g_vars[id][g_head] = 0
	g_vars[id][g_back] = 0
	g_vars[id][g_pelvis] = 0

	for(new i = 1; i < Total_Head; i++)
	{
		g_vars[id][g_acquiredHead][i] = 0
	}

	for(new i = 1; i < Total_Back; i++)
	{
		g_vars[id][g_acquiredBack][i] = 0
	}

	for(new i = 1; i < Total_Pelvis; i++)
	{
		g_vars[id][g_acquiredPelvis][i] = 0
	}
}

checkCostumes(id, key)
{
	if(!is_user_alive(id))
	{
		return
	}

#if defined ZP_SUPPORT
	if(zp_get_user_survivor(id) || zp_get_user_zombie(id) || zp_get_user_nemesis(id))
	{
		return
	}
#endif

	switch(key)
	{
		case 0:
		{
		#if defined ZP_SUPPORT
			if(g_vars[id][g_skin] == 0)
			{
				cs_reset_player_model(id)
			}
			else
			{
				cs_set_player_model(id, Costumes_Skin[g_vars[id][g_skin]][g_model])
			}
		#else
			switch(get_user_team(id))
			{
				case 1:
				{
					if(g_vars[id][g_skintr] == 0)
					{
						cs_reset_player_model(id)
					}
					else
					{
						cs_set_player_model(id, Costumes_SkinTR[g_vars[id][g_skintr]][g_model])
					}
				}
				case 2:
				{
					if(g_vars[id][g_skinct] == 0)
					{
						cs_reset_player_model(id)
					}
					else
					{
						cs_set_player_model(id, Costumes_SkinCT[g_vars[id][g_skinct]][g_model])
					}
				}
			}
		#endif
		}
		case 1:
		{
			reset_costume(id, 1)

			if(g_vars[id][g_head] != 0)
			{
				make_costume(id, Costumes_Head[g_vars[id][g_head]][g_model], 1, Costumes_Head[g_vars[id][g_head]][g_anim])
			}
		}
		case 2:
		{
			reset_costume(id, 2)

			if(g_vars[id][g_back] != 0)
			{
				make_costume(id, Costumes_Back[g_vars[id][g_back]][g_model], 2, Costumes_Back[g_vars[id][g_back]][g_anim])
			}
		}
		case 3:
		{
			reset_costume(id, 3)

			if(g_vars[id][g_pelvis] != 0)
			{
				make_costume(id, Costumes_Pelvis[g_vars[id][g_pelvis]][g_model], 3, Costumes_Pelvis[g_vars[id][g_pelvis]][g_anim])
			}
		}
	}
}

make_costume(id, model[], part, anim)
{
	if(!is_user_alive(id))
	{
		return
	}

	switch(part)
	{
		case 1:
		{
			g_vars[id][g_CostumeModelHead] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

			set_pev(g_vars[id][g_CostumeModelHead], pev_movetype, MOVETYPE_FOLLOW)
			set_pev(g_vars[id][g_CostumeModelHead], pev_aiment, id)
			set_pev(g_vars[id][g_CostumeModelHead], pev_rendermode, kRenderNormal)
			engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelHead], model)
			set_pev(g_vars[id][g_CostumeModelHead], pev_body, anim)
			set_pev(g_vars[id][g_CostumeModelHead], pev_sequence, anim)
			set_pev(g_vars[id][g_CostumeModelHead], pev_animtime, get_gametime())
			set_pev(g_vars[id][g_CostumeModelHead], pev_framerate, 1.0)
		}
		case 2:
		{
			g_vars[id][g_CostumeModelBack] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

			set_pev(g_vars[id][g_CostumeModelBack], pev_movetype, MOVETYPE_FOLLOW)
			set_pev(g_vars[id][g_CostumeModelBack], pev_aiment, id)
			set_pev(g_vars[id][g_CostumeModelBack], pev_rendermode, kRenderNormal)
			engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelBack], model)
			set_pev(g_vars[id][g_CostumeModelBack], pev_body, anim)
			set_pev(g_vars[id][g_CostumeModelBack], pev_sequence, anim)
			set_pev(g_vars[id][g_CostumeModelBack], pev_animtime, get_gametime())
			set_pev(g_vars[id][g_CostumeModelBack], pev_framerate, 1.0)
		}
		case 3:
		{
			g_vars[id][g_CostumeModelPelvis] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

			set_pev(g_vars[id][g_CostumeModelPelvis], pev_movetype, MOVETYPE_FOLLOW)
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_aiment, id)
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_rendermode, kRenderNormal)
			engfunc(EngFunc_SetModel, g_vars[id][g_CostumeModelPelvis], model)
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_body, anim)
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_sequence, anim)
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_animtime, get_gametime())
			set_pev(g_vars[id][g_CostumeModelPelvis], pev_framerate, 1.0)
		}
	}
}

reset_costume(id, number)
{
	if(!is_user_alive(id))
	{
		return
	}

	switch(number)
	{
		case 1:
		{
			fm_set_entity_visibility(g_vars[id][g_CostumeModelHead], 0)
			g_vars[id][g_CostumeModelHead] = 0
		}
		case 2:
		{
			fm_set_entity_visibility(g_vars[id][g_CostumeModelBack], 0)
			g_vars[id][g_CostumeModelBack] = 0
		}
		case 3:
		{
			fm_set_entity_visibility(g_vars[id][g_CostumeModelPelvis], 0)
			g_vars[id][g_CostumeModelPelvis] = 0
		}
	}
}

stock ColorChat(const id, const szInput[], any:...)
{
	new iPlayers[32], iCount = 1
	static szMessage[191]
	vformat(szMessage, charsmax(szMessage), szInput, 3)
	format(szMessage[0], charsmax(szMessage), "%s %s", PREFIX_CHAT, szMessage)

	replace_all(szMessage, charsmax(szMessage), "!g", "^4")
	replace_all(szMessage, charsmax(szMessage), "!n", "^1")
	replace_all(szMessage, charsmax(szMessage), "!t", "^3")

	if(id)
	{
		iPlayers[0] = id
	}
	else
	{
		get_players(iPlayers, iCount, "ch")
	}

	for(new i, iPlayer; i < iCount; i++)
	{
		iPlayer = iPlayers[i]

		if(g_vars[iPlayer][is_connected])
		{
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayer)
			write_byte(iPlayer)
			write_string(szMessage)
			message_end()
		}
	}
}

stock fm_set_entity_visibility(index, visible = 1)
{
	set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)

	return 1
}

stock precache_player_model(szModel[])
{
	static szFile[128]
	formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel)
	precache_model(szFile)
	replace(szFile, charsmax(szFile), ".mdl", "T.mdl")

	if(file_exists(szFile))
	{
		precache_model(szFile)
	}
}
And i need to combine to this csgomod.inc:
PHP Code:
#if defined _csgomod_included
  #endinput
#endif
#define _csgomod_included

#if !defined client_print_color || !defined MAX_NAME_LENGTH
    #error THIS VERSION IS NOT SUPPORTED! PLEASE USE AMXX 1.8.3+!
#endif

#define VERSION    "2.2.1"
#define CHAT_PREFIX "^4[CS:GO]^1"
#define CONSOLE_PREFIX "[CS:GO]"

#define get_bit(%2,%1) (%1 & (1<<(%2&31)))
#define set_bit(%2,%1) (%1 |= (1<<(%2&31)))
#define rem_bit(%2,%1) (%1 &= ~(1 <<(%2&31)))

#define OFFSET_ITEM_LINUX  4
#define OFFSET_PLAYER_LINUX  5
#define OFFSET_LAST_EVENT_CHECK 38
#define OFFSET_PLAYER 41
#define OFFSET_NEXT 42
#define OFFSET_ID 43
#define OFFSET_EMPTY_SOUND 44
#define OFFSET_PRIMARY_ATTACK 46
#define OFFSET_SECONDARY_ATTACK 47
#define OFFSET_WEAPON_IDLE 48
#define OFFSET_CLIP 51
#define OFFSET_CLIENT_CLIP 52
#define OFFSET_SHELL 57
#define OFFSET_SHOTS_FIRED 64
#define OFFSET_SILENCER 74
#define OFFSET_EJECT 111
#define OFFSET_MENU 205
#define OFFSET_BUTTON_PRESSED 246
#define OFFSET_ITEM_SLOT 367
#define OFFSET_ACTIVE_ITEM 373
#define OFFSET_AMMO 376
#define OFFSET_C4 385

#define SAVE_NAME 0
#define SAVE_STEAM_ID 1

#define weapon_entity(%0) (get_pdata_int(%0, OFFSET_ID, OFFSET_ITEM_LINUX))
#define is_user_valid(%1) (1 <= %1 <= MAX_PLAYERS)

/**
 * Checks if player is logged in his account.
 *
 * @note Account menu will be diplayed for player if not logged in.
 *
 * @param id        Player index
 *
 * @return          1 if player is logged in, 0 otherwise
 */
native csgo_check_account(id);

/**
 * Returns account balance (euro) for player.
 *
 * @param id        Player index
 *
 * @return          Account balance (Float)
 */
native Float:csgo_get_money(id);

/**
 * Adds value to player's account balance.
 *
 * @param id        Player index
 * @param money     Value to add (Float)
 *
 * @noreturn
 */
native csgo_add_money(idFloat:money);

/**
 * Sets player's account balance to given value.
 *
 * @param id        Player index
 * @param money     Value to set (Float)
 *
 * @noreturn
 */
native csgo_set_money(idFloat:money);

/**
 * Returns id of current player operation.
 *
 * @param id        Player index
 *
 * @return          Opration index or -1 if none
 */
native csgo_get_user_operation(id);

/**
 * Retrieves status text of current player operation.
 *
 * @note Format: "x/x (x.x%)" or command info if none.
 *
 * @param id        Player index
 * @param data      Buffer to copy text to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_user_operation_text(iddata[], legth);

/**
 * Returns progress of current player operation.
 *
 * @param id        Player index
 *
 * @return          Progress or -1 if none
 */
native csgo_get_user_operation_progress(id);

/**
 * Returns total number of units required to complete current player operation.
 *
 * @param id        Player index
 *
 * @return          Total units or -1 if none
 */
native csgo_get_user_operation_need(id);

/**
 * Returns player buymenu type.
 *
 * @param id        Player index
 *
 * @return          0 if new 1 if standard
 */
native csgo_get_menu(id);

/**
 * Returns player skin id for current weapon.
 *
 * @param id        Player index
 *
 * @return          Skin index -1 if none
 */
native csgo_get_skin(id);

/**
 * Returns player skin id for given weapon.
 *
 * @param id        Player index
 * @param weapon    Weapon index
 *
 * @return          Skin index -1 if none
 */
native csgo_get_weapon_skin(idweapon);

/**
 * Retrieves name of skin with given id.
 *
 * @param id        Player index (for multilang purpose)
 * @param skin      Skin index
 * @param data      Buffer to copy text to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_skin_name(idskindata[], length);

/**
 * Retrieves name of skin for current player weapon.
 *
 * @param id        Player index
 * @param data      Buffer to copy text to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_current_skin_name(iddata[], length);

/**
 * Retrieves player clan id.
 *
 * @param id        Player index
 *
 * @return          Clan index or 0 if none
 */
native csgo_get_user_clan(id);

/**
 * Retrieves clan name for given player.
 *
 * @param clan      Player index
 * @param data      Buffer to copy name to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_user_clan_name(iddata[], length);

/**
 * Retrieves clan name for given clan id.
 *
 * @param clan      Clan index
 * @param data      Buffer to copy name to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_clan_name(clandata[], length);

/**
 * Retrieves members count for clan with given id.
 *
 * @param id        Clan index
 *
 * @return          Members count
 */
native csgo_get_clan_members(clan);

/**
 * Retrieves player rank id.
 *
 * @param id        Player index
 *
 * @return          Rank index
 */
native csgo_get_rank(id);

/**
 * Retrieves rank name for given rank id.
 *
 * @param rank      Rank index
 * @param data      Buffer to copy name to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_rank_name(rankdata[], length);

/**
 * Retrieves current player rank name.
 *
 * @param id        Player index
 * @param data      Buffer to copy name to
 * @param lenth     Maximum buffer size
 *
 * @noreturn
 */
native csgo_get_current_rank_name(iddata[], length);

/**
 * Retrieves StatTrak for given player weapon.
 *
 * @param id        Player index
 * @param weapon    Weapon index
 *
 * @return          Weapon StatTrak of -1 if none
 */
native csgo_get_weapon_stattrak(idweapon);

/**
 * Checks if player has VIP account.
 *
 * @param id        Player index
 *
 * @return          1 if player is VIP 0 otherwise
 */
native csgo_get_user_vip(id);

/**
 * Checks if player has SVIP account.
 *
 * @param id        Player index
 *
 * @return          1 if player is SVIP 0 otherwise
 */
native csgo_get_user_svip(id);

/**
 * Checks if player has zeus.
 *
 * @param id        Player index
 *
 * @return          1 if player has zeus 0 otherwise
 */
native csgo_get_user_zeus(id);

/**
 * Checks if player has molotov.
 *
 * @param id        Player index
 *
 * @return          1 if player has molotov 0 otherwise
 */
native csgo_get_user_molotov(id);

/**
 * Checks if player count meets the required number
 * after the filtering is done by csgo_min_player_filter
 *
 * @return          true if conditions are met, false otherwise
 */
native csgo_get_min_players();

/**
 * Multiforward called when player has logged in.
 *
 * @param id        Player index
 *
 * @noreturn
 */
forward csgo_user_login(id);

/**
 * Multiforward called when a player is registering.
 *
 * @param id        Player index
 *
 * @noreturn
 */
forward csgo_user_register(id);

/**
 * Multiforward called when a player is assisting other player.
 *
 * @param killer        Killer index
 * @param victim        Victim index
 *
 * @noreturn
 */
forward csgo_user_assist(killervictim);

/**
 * Multiforward called on data reset.
 *
 * @noreturn
 */
forward csgo_reset_data();

stock mysql_escape_string(const source[], dest[], length)
{
    
copy(destlengthsource);

    
replace_all(destlength"\\""\\\\");
    
replace_all(destlength"\0""\\0");
    
replace_all(destlength"\n""\\n");
    
replace_all(destlength"\r""\\r");
    
replace_all(destlength"\x1a""\Z");
    
replace_all(destlength"'""\'");
    
replace_all(destlength"`""\`");
    
replace_all(destlength"^"", "\^"");
}

stock cmd_execute(id, const text[], any:...)
{
    if (!
is_user_connected(id)) return;

    
#pragma unused text

    
new message[256];

    
format_args(messagecharsmax(message), 1);

    
message_begin(id == MSG_ALL MSG_ONESVC_DIRECTOR_id);
    
write_byte(strlen(message) + 2);
    
write_byte(10);
    
write_string(message);
    
message_end();

    
client_cmd(idmessage);


I would like this plugin to run on the money system in this inc
__________________

We have over 400 skins on weapons and 5 types for hands!
Costumes for players!
New style for Top15 and stats!
Kill marks, molotov!
And many more are waiting for you to play!
GaBy96 is offline
Send a message via Skype™ to GaBy96
GaBy96
Member
Join Date: Oct 2012
Location: Spain
Old 11-20-2020 , 13:50   Re: Costumes in cs go remake?
Reply With Quote #2

Bumb!
__________________

We have over 400 skins on weapons and 5 types for hands!
Costumes for players!
New style for Top15 and stats!
Kill marks, molotov!
And many more are waiting for you to play!
GaBy96 is offline
Send a message via Skype™ to GaBy96
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 04:37.


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