CSO Costumes plugin error mysql - no save

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
mar1anx
Извън линия
Foreigner
Foreigner
Мнения: 41
Регистриран на: 17 Сеп 2018, 00:56
Се отблагодари: 4 пъти
Получена благодарност: 2 пъти

CSO Costumes plugin error mysql - no save

Мнение от mar1anx » 25 Мар 2019, 23:38

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>

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

#if !defined MAX_PLAYERS
#define MAX_PLAYERS			32
#endif

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

//#define MYSQL

#if defined MYSQL
#include <sqlx>

new cvar_host, cvar_user, cvar_pass, cvar_db, cvar_table
new Host[64], User[64], Pass[64], Db[64], Table[64]
new Handle:g_SqlTuple
new g_Error[512]
#endif

#define PREFIX "[CSO Costumes]"

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

new const Costumes_SkinCT[][Vars] =
{
	// { Name, Price, ModelName, Image }
	{ }, // Don't Remove it
	{ "Natasha", 100, "natasha", "https://i.imgur.com/Jo86p64.png" },
	{ "Choi Ji Yoon" , 100, "choijiyoon", "https://i.imgur.com/OVHJFiu.png" },
	{ "Criss", 100, "criss", "https://i.imgur.com/W4Q4R8D.png" },
	{ "May", 100, "chngirl01", "https://i.imgur.com/mEW2QeN.png" },
	{ "Keith Icahn", 100, "hunter", "https://i.imgur.com/5Vo0wkT.png" },
	{ "Gerard", 100, "gerrard", "https://i.imgur.com/rUStUht.png" },
	{ "Lucia", 100, "marinegirl", "https://i.imgur.com/N1CT6sF.png" },
	{ "Enzo", 100, "marineboy", "https://i.imgur.com/lQsuDDS.png" },
	{ "Natasha (casual)", 100, "natasha2", "https://i.imgur.com/hy8wN9s.png" },
	{ "Alice (Limited Edition)", 100, "alice2", "https://i.imgur.com/HD9PthU.png" },
	{ "Walter", 100, "mercenaryct", "https://i.imgur.com/VREpWz1.png" },
	{ "Choi Ji Yoon (Limited Edition)", 100, "choijiyoon2", "https://i.imgur.com/ellRnmI.png" },
	{ "Isabelle", 100, "boxxergirl", "https://i.imgur.com/s40JELb.png" },
	{ "Henry", 100, "henry", "https://i.imgur.com/1yvYqvU.png" },
	{ "Dominique", 100, "dominique", "https://i.imgur.com/4Jhtr50.png" },
	{ "Soi", 100, "soi", "https://i.imgur.com/aQQKPwf.png" },
	{ "Ha Ly", 100, "vngirl", "https://i.imgur.com/ehGS4lC.png" },
	{ "Dr. Han", 100, "jinct", "https://i.imgur.com/Og0n0gD.png" },
	{ "Rebecca", 100, "police", "https://i.imgur.com/nMKb6QQ.png" },
	{ "Ian", 100, "twctclass", "https://i.imgur.com/7tUcrB4.png" },
	{ "Dorothy Dark Knight", 100, "buffclassa", "https://i.imgur.com/EB2TxL7.png" },
	{ "Sonya Lycanthrope", 100, "buffclasslycan", "https://i.imgur.com/t832kJo.png" },
	{ "Transcendent Choi Ji Yoon", 100, "buffclasschoijiyoon", "https://i.imgur.com/EjpzPIA.png" },
	{ "Lisa", 100, "lisa", "https://i.imgur.com/zDescEb.png" },
	{ "Transcendent Fernando", 100, "buffclassfernando", "https://i.imgur.com/xi84CWH.png" },
	{ "Fernando", 100, "fernando", "https://i.imgur.com/5UdqwVM.png" },
	{ "Alice", 100, "ma_aliceblue", "https://i.imgur.com/3wVYnFd.png" },
	{ "Choi Ji Yoon (Soccer)", 100, "sccjy", "https://i.imgur.com/x9iQp8a.png" },
	{ "Max Thacker", 100, "scvip", "https://i.imgur.com/DEn4vUL.png" },
	{ "Special Agent Lucia", 100, "19s1marinegirl", "https://i.imgur.com/5hT7tK1.png" }
}

new const Costumes_SkinTR[][Vars] =
{
	// { Name, Price, ModelName, Image }
	{ }, // Don't Remove it
	{ "Jennifer", 100, "jennifer", "https://i.imgur.com/BUkavV4.png" },
	{ "Ritsuka" , 100, "ritsuka", "https://i.imgur.com/RDRTofq.png" },
	{ "Yuri", 100, "yuri", "https://i.imgur.com/ey0ebvp.png" },
	{ "Erika", 100, "jpngirl01", "https://i.imgur.com/o8f0zZy.png" },
	{ "Spade", 100, "spade", "https://i.imgur.com/yz4kC2d.jpg" },
	{ "David Black", 100, "davidblack", "https://i.imgur.com/bZgyHbJ.png" },
	{ "Michaela", 100, "pirategirl", "https://i.imgur.com/84brccu.png" },
	{ "Raven", 100, "pirateboy", "https://i.imgur.com/Ap2NaIL.png" },
	{ "Jennifer (Uniform)", 100, "jennifer2", "https://i.imgur.com/ZmHSXgH.png" },
	{ "Yuri (Limited Edition)", 100, "yuri2", "https://i.imgur.com/OQaZo8u.png" },
	{ "Carlito", 100, "mercenarytr", "https://i.imgur.com/WafIOGW.png" },
	{ "Michaela (Limited Edition)", 100, "pirategirl2", "https://i.imgur.com/QQexlaF.png" },
	{ "Lingling", 100, "idolgirl", "https://i.imgur.com/MTcZcg6.png" },
	{ "Gunsmith", 100, "gunsmith", "https://i.imgur.com/l9qTQ2H.png" },
	{ "Alin", 100, "alin", "https://i.imgur.com/svfRWlV.png" },
	{ "Jim", 100, "zim", "https://i.imgur.com/mqGJqf0.png" },
	{ "Krieg", 100, "vnman", "https://i.imgur.com/YK5vUAs.png" },
	{ "Jenny", 100, "jintr", "https://i.imgur.com/Ve5gNRb.png" },
	{ "Ace", 100, "thief", "https://i.imgur.com/rdVfw2R.png" },
	{ "Yuwei", 100, "twtrclass", "https://i.imgur.com/kGNfjKh.png" },
	{ "Flora Paladin", 100, "buffclassb", "https://i.imgur.com/oOrdD9K.png" },
	{ "Elizabeth Crimson Hunter", 100, "buffclasshunter", "https://i.imgur.com/WOc5Ko7.png" },
	{ "Transcendent Yuri", 100, "buffclassyuri", "https://i.imgur.com/rUrJk28.png" },
	{ "Transcendent Michaela", 100, "buffclasspirategirl", "https://i.imgur.com/9ewbvwe.png" },
	{ "Mila", 100, "mila", "https://i.imgur.com/KGd9w38.png" },
	{ "Transcendent Blair", 100, "buffclassblair", "https://i.imgur.com/ird6KaU.png" },
	{ "Rose Phoenix", 100, "buffclassphoenix", "https://i.imgur.com/NrLUbLB.png" },
	{ "Blair", 100, "blair", "https://i.imgur.com/swmpFqB.png" },
	{ "Alice", 100, "ma_alicered", "https://i.imgur.com/ui323NB.png" },
	{ "Yuri (Soccer)", 100, "scyuri", "https://i.imgur.com/DNnhVKq.png" },
	{ "Asia Red Army (Soccer)", 100, "scjra", "https://i.imgur.com/hJSFqFF.png" },
	{ "Pirate Michaela", 100, "19s1pirategirl", "https://i.imgur.com/wI1MugO.png" }
}

new const CostumeModels[][] =
{
	"models/costumes/costume_head.mdl", // ModelNo 0
	"models/costumes/costume_head2.mdl", // ModelNo 1
	"models/costumes/costume_back.mdl", // ModelNo 2
	"models/costumes/costume_back2.mdl", // ModelNo 3
	"models/costumes/costume_pelvis.mdl" // ModelNo 4
}

enum _:Vars2
{
	g_name[90],
	g_price,
	g_model,
	g_anim,
	g_preview1[90]
}

new const Costumes_Head[][Vars2] =
{
	// { Name, Price, ModelNo, Sequence, Image }
	{ }, // Don't Remove it
	{ "Angel Halo", 100, 0, 2, "https://i.imgur.com/rJ2rwJh.png" },
	{ "Cat Ears", 100, 0, 7, "https://i.imgur.com/p4KdlQl.png" },
	{ "Devil Horns", 100, 0, 10, "https://i.imgur.com/scMYPcv.png" },
	{ "Polar Bear Head", 100, 0, 20, "https://i.imgur.com/vtUP9es.png" },
	{ "Bunny Ears", 100, 0, 1, "https://i.imgur.com/ECPYhjS.png" },
	{ "Non La", 100, 0, 15, "https://i.imgur.com/GbnFNak.png" },
	{ "Pharaoh Mask", 100, 1, 2, "https://i.imgur.com/Ttvtu8a.png" },
	{ "Pumpkin Head", 100, 0, 22, "https://i.imgur.com/JiCtqcX.png" },
	{ "Snowman Head", 100, 0, 23, "https://i.imgur.com/KeNUBJs.png" },
	{ "Pig Ears", 100, 0, 19, "https://i.imgur.com/iRx6Qks.png" },
	{ "Panda Ears", 100, 0, 18, "https://i.imgur.com/DNhprvg.png" },
	{ "Bazzi Head", 100, 0, 3, "https://i.imgur.com/VfqMRoS.png" },
	{ "Dao Head", 100, 0, 9, "https://i.imgur.com/WPE2sfU.png" },
	{ "Squirrel Ears", 100, 0, 24, "https://i.imgur.com/JjWs8vL.png" },
	{ "Indian Warbonnet", 100, 0, 14, "https://i.imgur.com/eNTEPaN.png" },
	{ "Indian Face", 100, 1, 4, "https://i.imgur.com/UhsyweB.png" },
	{ "Dinosaur Head", 100, 0, 11, "https://i.imgur.com/pKq1qFu.png" },
	{ "Dark Knight Mask", 100, 0, 26, "https://i.imgur.com/gHwccpv.png" },
	{ "Paladin Crown", 100, 0, 27, "https://i.imgur.com/2DIczIt.png" },
	{ "Crimson Hunter Bat Headband", 100, 0, 6, "https://i.imgur.com/MXVHzRq.png" },
	{ "Golden Mask", 100, 0, 13, "https://i.imgur.com/GuDGLmn.png" },
	{ "Afro Hair", 100, 0, 0, "https://i.imgur.com/l00fOYT.png" },
	{ "Elegant Hair", 100, 0, 8, "https://i.imgur.com/RxyFifi.png" },
	{ "Provocation Apple", 100, 0, 21, "https://i.imgur.com/UgXui4o.png" },
	{ "Gentleman Mustache", 100, 0, 12, "https://i.imgur.com/Rosh32h.png" },
	{ "Idol Sunglasses", 100, 1, 3, "https://i.imgur.com/2sQJ02F.png" },
	{ "Boxing Headgear", 100, 0, 4, "https://i.imgur.com/87i7J1y.png" },
	{ "Superhero Helmet", 100, 0, 25, "https://i.imgur.com/oSTCdNG.png" },
	{ "Crono Athletic's Face", 100, 1, 1, "https://i.imgur.com/p6MnPvX.png" },
	{ "Jack's Mask", 100, 1, 5, "https://i.imgur.com/ybdKDYc.png" },
	{ "Oberon's Bomb Hair Band", 100, 0, 17, "https://i.imgur.com/NqkO0th.png" },
	{ "Oberon's Horn", 100, 0, 16, "https://i.imgur.com/KSiSL2F.png" },
	{ "Bunny Ears", 100, 1, 9, "https://i.imgur.com/gidqo62.png" },
	{ "Butterfly Antenna", 100, 1, 10, "https://i.imgur.com/LpS16VW.png" },
	{ "Rooster Comb", 100, 1, 11, "https://i.imgur.com/4qWnMhq.png" }
}

new const Costumes_Back[][Vars2] =
{
	// { Name, Price, ModelNo, Sequence, Image }
	{ }, // Don't Remove it
	{ "Angel Wings", 100, 2, 0, "https://i.imgur.com/pTezbbF.png" },
	{ "Cat Tuna", 100, 2, 2, "https://i.imgur.com/WBEuHBO.png" },
	{ "Devil Wings", 100, 2, 4, "https://i.imgur.com/S631X5G.png" },
	{ "Penguin Doll", 100, 2, 16, "https://i.imgur.com/sN3YhKp.png" },
	{ "Mummy Doll", 100, 2, 6, "https://i.imgur.com/sIpLF1P.png" },
	{ "Kid Ghost", 100, 2, 18, "https://i.imgur.com/aofwXbV.png" },
	{ "Christmas Socks", 100, 2, 19, "https://i.imgur.com/Nks0qjS.png" },
	{ "Pig Fork", 100, 2, 15, "https://i.imgur.com/98lqB8B.png" },
	{ "Panda Doll", 100, 2, 14, "https://i.imgur.com/RDFwncd.png" },
	{ "Acorn", 100, 2, 20, "https://i.imgur.com/bRhC4Bx.png" },
	{ "Clock", 100, 2, 23, "https://i.imgur.com/PpYDnn7.png" },
	{ "Chinese Flag", 100, 3, 0, "https://i.imgur.com/wOSvI3g.png" },
	{ "Indian Shield", 100, 2, 12, "https://i.imgur.com/tGgJuNT.png" },
	{ "Dinosaur Puppet", 100, 2, 5, "https://i.imgur.com/Fm9FboU.png" },
	{ "Phoenix Wings", 100, 3, 3, "https://i.imgur.com/ZWhYlX5.png" },
	{ "Golden Shield", 100, 2, 9, "https://i.imgur.com/nYXjCTv.png" },
	{ "Provocation Target", 100, 2, 17, "https://i.imgur.com/LE4mGBy.png" },
	{ "Gentleman Stick", 100, 2, 8, "https://i.imgur.com/Zra6Fle.png" },
	{ "Idol Microphone", 100, 2, 11, "https://i.imgur.com/yv6RHAp.png" },
	{ "Superhero Backpack", 100, 2, 21, "https://i.imgur.com/aAawWC6.png" },
	{ "Tyrant Crab's Bag", 100, 2, 3, "https://i.imgur.com/IOJfKov.png" },
	{ "Mr. X's shell", 100, 3, 1, "https://i.imgur.com/x5AOlmY.png" },
	{ "Crono Wing's Wings", 100, 3, 2, "https://i.imgur.com/bBEIwm3.png" },
	{ "Laser Wing's Wings", 100, 2, 10, "https://i.imgur.com/elTVPvV.png" },
	{ "Frozen Terror's Bat", 100, 2, 7, "https://i.imgur.com/v0a441u.png" },
	{ "Kraken's Bazooka", 100, 2, 13, "https://i.imgur.com/A6mwOwR.png" },
	{ "Titan Doll", 100, 2, 22, "https://i.imgur.com/GIXLSYY.png" },
	{ "Angra's Wings", 100, 2, 1, "https://i.imgur.com/DenbUHq.png" },
	{ "Military Assault Pack", 100, 3, 4, "https://i.imgur.com/5VaxvDa.png" },
	{ "Butterfly Wings", 100, 3, 5, "https://i.imgur.com/YkfHRxc.png" }
}

new const Costumes_Pelvis[][Vars2] =
{
	// { Name, Price, ModelNo, Sequence, Image }
	{ }, // Don't Remove it
	{ "Cat Tail", 100, 4, 1, "https://i.imgur.com/79l8GfB.png" },
	{ "Devil Tail", 100, 4, 3, "https://i.imgur.com/0Ns1zSI.png" },
	{ "Pig Tail", 100, 4, 7, "https://i.imgur.com/oTfAOIb.png" },
	{ "Panda Tail", 100, 4, 6, "https://i.imgur.com/dIZr4cC.png" },
	{ "Squirrel Tail", 100, 4, 9, "https://i.imgur.com/vRE74rB.png" },
	{ "Indian Belt", 100, 4, 5, "https://i.imgur.com/IJ7quzL.png" },
	{ "Lycanthrope Wolf Tail", 100, 4, 0, "https://i.imgur.com/HeC0knd.png" },
	{ "Provocation Arrow", 100, 4, 8, "https://i.imgur.com/4HYNDic.png" },
	{ "Gentleman Hand Clock", 100, 4, 4, "https://i.imgur.com/zEzjnll.png" },
	{ "Boxing Champion Belt", 100, 4, 10, "https://i.imgur.com/UToRFtl.png" },
	{ "3D Maneuver Gear", 100, 4, 2, "https://i.imgur.com/pJlIhN0.png" },
	{ "Bunny Tail", 100, 4, 11, "https://i.imgur.com/dYsXh5P.png" }
}

enum _:Vars3
{
	g_skinct,
	g_skintr,
	g_head,
	g_back,
	g_pelvis,
	g_cash,
	g_buying,
	g_costume,
	g_CostumeModelHead,
	g_CostumeModelBack,
	g_CostumeModelPelvis
}

new g_vars[33][Vars3]
new g_acquiredSkinCT[33][sizeof Costumes_SkinCT], g_acquiredSkinTR[33][sizeof Costumes_SkinTR], g_acquiredHead[33][sizeof Costumes_Head], g_acquiredBack[33][sizeof Costumes_Back], g_acquiredPelvis[33][sizeof Costumes_Pelvis]
new cvar_killcash

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
	register_event("DeathMsg", "Event_DeathMsg", "a")
	
	register_clcmd("say /costumes", "clcmd_costumes")
	register_clcmd("say /inventory", "clcmd_inventory")
	register_clcmd("say /shop", "clcmd_shop")
	register_clcmd("say /deactivate", "clcmd_deactivate")
	register_clcmd("say /cash", "clcmd_cash")
	
	cvar_killcash = register_cvar("cash_kill", "5")
	
	#if defined MYSQL
	register_event("SendAudio", "Event_Round_End", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw")
	
	cvar_host = register_cvar("Host_Costumes", "")
	cvar_user = register_cvar("User_Costumes", "")
	cvar_pass = register_cvar("Pass_Costumes", "")
	cvar_db = register_cvar("Db_Costumes", "")
	cvar_table = register_cvar("Table_Costumes", "")
	
	set_task(1.0, "MySql_Init")
	#endif
}

public plugin_precache()
{
	new buffer[128]
	
	for(new i = 0; i < sizeof CostumeModels; i++)
		precache_model(CostumeModels[i])
		
	for(new i = 1; i < sizeof Costumes_SkinCT; i++)
	{
		formatex(buffer, charsmax(buffer), "models/player/%s/%s.mdl", Costumes_SkinCT[i][g_model], Costumes_SkinCT[i][g_model])
		precache_model(buffer)
	}
	
	for(new i = 1; i < sizeof Costumes_SkinTR; i++)
	{
		formatex(buffer, charsmax(buffer), "models/player/%s/%s.mdl", Costumes_SkinTR[i][g_model], Costumes_SkinTR[i][g_model])
		precache_model(buffer)
	}
}

#if defined MYSQL
public MySql_Init()
{
	get_pcvar_string(cvar_host, Host, charsmax(Host))
	get_pcvar_string(cvar_user, User, charsmax(User))
	get_pcvar_string(cvar_pass, Pass, charsmax(Pass))
	get_pcvar_string(cvar_db, Db, charsmax(Db))
	get_pcvar_string(cvar_table, Table, charsmax(Table))
	
	g_SqlTuple = SQL_MakeDbTuple(Host, User, Pass, Db)
	
	new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode, g_Error, charsmax(g_Error))
	if(SqlConnection == Empty_Handle)
		set_fail_state(g_Error)
	
	static len; len = 0
	new szTemp[4000]
	
	len += formatex(szTemp[len], charsmax(szTemp), "CREATE TABLE IF NOT EXISTS %s (Id INT(11) AUTO_INCREMENT PRIMARY KEY,SteamId varchar(32),Cash INT(11),SkinCT INT(11),SkinTR INT(11),Head INT(11),Back INT(11),Pelvis INT(11)", Table)
	
	for(new i = 1; i < sizeof Costumes_SkinCT; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",SkinCT%d INT(1)", i)
		
	for(new i = 1; i < sizeof Costumes_SkinTR; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",SkinTR%d INT(1)", i)
		
	for(new i = 1; i < sizeof Costumes_Head; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",Head%d INT(1)", i)
		
	for(new i = 1; i < sizeof Costumes_Back; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",Back%d INT(1)", i)
		
	for(new i = 1; i < sizeof Costumes_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))
		set_fail_state(g_Error)
	}
	
	SQL_FreeHandle(Queries)
	SQL_FreeHandle(SqlConnection)
}

public plugin_end() SQL_FreeHandle(g_SqlTuple)

public Load_MySql(id)
{
	new szSteamId[32], szTemp[512]; get_pcvar_string(cvar_table, Table, charsmax(Table))
	get_user_authid(id, szSteamId, charsmax(szSteamId))
	
	new Data[1]
	Data[0] = id
	
	formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE (`%s`.`SteamId` = '%s')", Table, Table, szSteamId)
	SQL_ThreadQuery(g_SqlTuple, "register_client", szTemp, Data, 1)
}

public register_client(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
	if(FailState == TQUERY_CONNECT_FAILED)
	{
		log_amx("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)
	}
	else if(FailState == TQUERY_QUERY_FAILED)
	{
		log_amx("Load Query failed. [%d] %s", Errcode, Error)
	}
	
	new id
	id = Data[0]
	
	if(SQL_NumResults(Query) < 1) 
	{
		new szSteamId[32]
		get_user_authid(id, szSteamId, charsmax(szSteamId))
		
		if (equal(szSteamId, "ID_PENDING"))
			return PLUGIN_HANDLED
		
		static len; len = 0
		new szTemp[4000]; get_pcvar_string(cvar_table, Table, charsmax(Table))
		
		len += formatex(szTemp[len], charsmax(szTemp), "INSERT INTO `%s` (`SteamId`,`Cash`,`SkinCT`,`SkinTR`,`Head`,`Back`,`Pelvis`", Table)
		
		for(new i = 1; i < sizeof Costumes_SkinCT; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d`", i)
			
		for(new i = 1; i < sizeof Costumes_SkinTR; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d`", i)
			
		for(new i = 1; i < sizeof Costumes_Head; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d`", i)
			
		for(new i = 1; i < sizeof Costumes_Back; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d`", i)
			
		for(new i = 1; i < sizeof Costumes_Pelvis; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d`", i)
		
		len += formatex(szTemp[len], charsmax(szTemp), ") VALUES ('%s','0','0','0','0','0','0'", szSteamId)
		
		for(new i = 1; i < sizeof Costumes_SkinCT; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",'0'")
			
		for(new i = 1; i < sizeof Costumes_SkinTR; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",'0'")
			
		for(new i = 1; i < sizeof Costumes_Head; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",'0'")
			
		for(new i = 1; i < sizeof Costumes_Back; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",'0'")
			
		for(new i = 1; i < sizeof Costumes_Pelvis; i++)
			len += formatex(szTemp[len], charsmax(szTemp), ",'0'")
		
		len += formatex(szTemp[len], charsmax(szTemp), ")")
		
		SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
	} 
	else 
	{
		static query = 2;
		
		g_vars[id][g_cash] = SQL_ReadResult(Query, query); query++
		g_vars[id][g_skinct] = SQL_ReadResult(Query, query); query++
		g_vars[id][g_skintr] = SQL_ReadResult(Query, query); query++
		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++
		
		for(new i = 1; i < sizeof Costumes_SkinCT; i++)
		{
			g_acquiredSkinCT[id][i] = SQL_ReadResult(Query, query)
			query++
		}
			
		for(new i = 1; i < sizeof Costumes_SkinTR; i++)
		{
			g_acquiredSkinTR[id][i] = SQL_ReadResult(Query, query)
			query++
		}

		for(new i = 1; i < sizeof Costumes_Head; i++)
		{
			g_acquiredHead[id][i] = SQL_ReadResult(Query, query)
			query++
		}
		
		for(new i = 1; i < sizeof Costumes_Back; i++)
		{
			g_acquiredBack[id][i] = SQL_ReadResult(Query, query)
			query++
		}
		
		for(new i = 1; i < sizeof Costumes_Pelvis; i++)
		{
			g_acquiredPelvis[id][i] = SQL_ReadResult(Query, query)
			query++
		}
	}
	
	return PLUGIN_HANDLED
}

public Save_MySql(id)
{
	new szSteamId[32], szTemp[4000]; get_pcvar_string(cvar_table, Table, charsmax(Table))
	get_user_authid(id, szSteamId, charsmax(szSteamId))
	static len; len = 0
	
	len += formatex(szTemp[len], charsmax(szTemp), "UPDATE `%s` SET `Cash` = '%i', `SkinCT` = '%i', `SkinTR` = '%i', `Head` = '%i', `Back` = '%i', `Pelvis` = '%i'", 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 < sizeof Costumes_SkinCT; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinCT%d` = '%i'", i, g_acquiredSkinCT[id][i])
		
	for(new i = 1; i < sizeof Costumes_SkinTR; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",`SkinTR%d` = '%i'", i, g_acquiredSkinTR[id][i])
		
	for(new i = 1; i < sizeof Costumes_Head; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",`Head%d` = '%i'", i, g_acquiredHead[id][i])
		
	for(new i = 1; i < sizeof Costumes_Back; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",`Back%d` = '%i'", i, g_acquiredBack[id][i])
		
	for(new i = 1; i < sizeof Costumes_Pelvis; i++)
		len += formatex(szTemp[len], charsmax(szTemp), ",`Pelvis%d` = '%i'", i, g_acquiredPelvis[id][i])
	
	formatex(szTemp[len], charsmax(szTemp), " WHERE `%s`.`SteamId` = '%s';", Table, szSteamId)
	
	SQL_ThreadQuery(g_SqlTuple, "IgnoreHandle", szTemp)
}

public IgnoreHandle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
	SQL_FreeHandle(Query)
	
	return PLUGIN_HANDLED
}

public Event_Round_End()
{
	for(new i = 1; i <= get_maxplayers(); i++)
	{
		if(is_user_connected(i))
			Save_MySql(i)
	}
}

public client_disconnect(id) Save_MySql(id)
#endif

public client_putinserver(id)
{
	g_vars[id][g_cash] = 0
	g_vars[id][g_skinct] = 0
	g_vars[id][g_skintr] = 0
	g_vars[id][g_head] = 0
	g_vars[id][g_back] = 0
	g_vars[id][g_pelvis] = 0
	
	for(new i = 1; i < sizeof Costumes_SkinCT; i++)
		g_acquiredSkinCT[id][i] = 0
		
	for(new i = 1; i < sizeof Costumes_SkinTR; i++)
		g_acquiredSkinTR[id][i] = 0
	
	for(new i = 1; i < sizeof Costumes_Head; i++)
		g_acquiredHead[id][i] = 0
		
	for(new i = 1; i < sizeof Costumes_Back; i++)
		g_acquiredBack[id][i] = 0
		
	for(new i = 1; i < sizeof Costumes_Pelvis; i++)
		g_acquiredPelvis[id][i] = 0
	
	#if defined MYSQL
	Load_MySql(id)
	#endif
}

public fw_PlayerSpawn_Post(id)
{
	if(is_user_alive(id))
	{
		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)
	
	new victimname[32]
	get_user_name(victim, victimname, charsmax(victimname))
	
	if(attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim))
		return PLUGIN_HANDLED;
	
	colorchat(attacker, "^04%s^01 You won ^04%d^01 Cash for killing ^04%s^01.", PREFIX, get_pcvar_num(cvar_killcash), victimname)
	g_vars[attacker][g_cash] += get_pcvar_num(cvar_killcash)
	
	return PLUGIN_HANDLED;
}

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)
{
	g_vars[id][g_skinct] = 0
	g_vars[id][g_skintr] = 0
	g_vars[id][g_head] = 0
	g_vars[id][g_back] = 0
	g_vars[id][g_pelvis] = 0
	
	cs_reset_user_model(id)
	reset_costume(id, 1)
	reset_costume(id, 2)
	reset_costume(id, 3)
	
	colorchat(id, "^04%s^01 You deactivated all your ^04Costumes^01.", PREFIX)
	
	return PLUGIN_HANDLED;
}

public clcmd_cash(id)
{
	colorchat(id, "^04%s^01 You have ^04%d^01 Cash.", PREFIX, g_vars[id][g_cash])
	
	return PLUGIN_HANDLED;
}

public menu_costumes(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	
	switch (key)
	{
		case 0:
		{
			show_menu_inventory(id)
		}
		case 1:
		{
			show_menu_shop(id)
		}
	}
	
	return PLUGIN_HANDLED;
}

show_menu_costumes(id)
{
	new msgm[128]
	formatex(msgm, charsmax(msgm), "\r%s \yCostumes", PREFIX)
	new menu = menu_create(msgm, "menu_costumes")
	
	menu_additem(menu, "Inventory", "0", 0);
	menu_additem(menu, "Shop", "1", 0);
	
	menu_setprop(menu, MPROP_EXITNAME, "\wExit")
	
	menu_display(id, menu, 0)
}

public menu_inventory(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		show_menu_costumes(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	
	switch (key)
	{
		case 0..4:
		{
			g_vars[id][g_costume] = key
			show_menu_costumeinv(id)
		}
		case 5:
		{
			clcmd_deactivate(id)
			show_menu_inventory(id)
		}
	}
	
	return PLUGIN_HANDLED;
}

show_menu_inventory(id)
{
	new msgm[128]
	formatex(msgm, charsmax(msgm), "\r%s \yInventory", PREFIX)
	new menu = menu_create(msgm, "menu_inventory")
	
	menu_additem(menu, "Skin CT", "0", 0);
	menu_additem(menu, "Skin TR", "1", 0);
	menu_additem(menu, "Head", "2", 0);
	menu_additem(menu, "Back", "3", 0);
	menu_additem(menu, "Pelvis", "4", 0);
	menu_additem(menu, "Deactivate all Costumes", "5", 0);
	
	menu_setprop(menu, MPROP_EXITNAME, "\wFechar")
	
	menu_display(id, menu, 0)
}

public menu_costumeinv(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		show_menu_inventory(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	
	new keyc
	
	switch(g_vars[id][g_costume])
	{
		case 0:
		{
			for(new i = 1; i < sizeof Costumes_SkinCT; i++)
			{
				if(!g_acquiredSkinCT[id][i])
					continue
			
				if(keyc == key)
				{
					g_vars[id][g_skinct] = i
					break;
				}
				
				keyc++
			}
			
			checkCostumes(id, 0)
			colorchat(id, "^04%s^01 You activated the Costume^04 %s^01.", PREFIX, Costumes_SkinCT[g_vars[id][g_skinct]][g_name])
		}
		case 1:
		{
			for(new i = 1; i < sizeof Costumes_SkinTR; i++)
			{
				if(!g_acquiredSkinTR[id][i])
					continue
					
				if(keyc == key)
				{
					g_vars[id][g_skintr] = i
					break;
				}
				
				keyc++
			}
			
			checkCostumes(id, 0)
			colorchat(id, "^04%s^01 You activated the Costume^04 %s^01.", PREFIX, Costumes_SkinTR[g_vars[id][g_skintr]][g_name])
		}
		case 2:
		{
			for(new i = 1; i < sizeof Costumes_Head; i++)
			{
				if(!g_acquiredHead[id][i])
					continue
					
				if(keyc == key)
				{
					g_vars[id][g_head] = i
					break;
				}
				
				keyc++
			}
			
			checkCostumes(id, 1)
			colorchat(id, "^04%s^01 You activated the Costume^04 %s^01.", PREFIX, Costumes_Head[g_vars[id][g_head]][g_name])
		}
		case 3:
		{
			for(new i = 1; i < sizeof Costumes_Back; i++)
			{
				if(!g_acquiredBack[id][i])
					continue
					
				if(keyc == key)
				{
					g_vars[id][g_back] = i
					break;
				}
				
				keyc++
			}
			
			checkCostumes(id, 2)
			colorchat(id, "^04%s^01 You activated the Costume^04 %s^01.", PREFIX, Costumes_Back[g_vars[id][g_back]][g_name])
		}
		case 4:
		{
			for(new i = 1; i < sizeof Costumes_Pelvis; i++)
			{
				if(!g_acquiredPelvis[id][i])
					continue
				
				if(keyc == key)
				{
					g_vars[id][g_pelvis] = i
					break;
				}
				
				keyc++
			}
			
			checkCostumes(id, 3)
			colorchat(id, "^04%s^01 You activated the Costume^04 %s^01.", PREFIX, Costumes_Pelvis[g_vars[id][g_pelvis]][g_name])
		}
	}
	
	show_menu_costumeinv(id)
	return PLUGIN_HANDLED;
}

show_menu_costumeinv(id)
{
	new msgm[128], msg[128], msg1[128], item
	
	formatex(msgm, charsmax(msgm), "\r%s \yInventory: %s^n\r", PREFIX, 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 ? "Pelvis" : "Back" : "Head" : "Skin TR" : "Skin CT" : "")
	new menu = menu_create(msgm, "menu_costumeinv")
	
	switch(g_vars[id][g_costume])
	{
		case 0:
		{
			for(new i = 1; i < sizeof Costumes_SkinCT; i++)
			{
				if(!g_acquiredSkinCT[id][i])
					continue
				
				formatex(msg, charsmax(msg), "%s%s", Costumes_SkinCT[i][g_name], g_vars[id][g_skinct] == i ? " \r[Activated]" : "")
				formatex(msg1, charsmax(msg1), "%d", item)
				menu_additem(menu, msg, msg1, 0);
				
				item++
			}
		}
		case 1:
		{
			for(new i = 1; i < sizeof Costumes_SkinTR; i++)
			{
				if(!g_acquiredSkinTR[id][i])
					continue
				
				formatex(msg, charsmax(msg), "%s%s", Costumes_SkinTR[i][g_name], g_vars[id][g_skintr] == i ? " \r[Activated]" : "")
				formatex(msg1, charsmax(msg1), "%d", item)
				menu_additem(menu, msg, msg1, 0);
				
				item++
			}
		}
		case 2:
		{
			for(new i = 1; i < sizeof Costumes_Head; i++)
			{
				if(!g_acquiredHead[id][i])
					continue
				
				formatex(msg, charsmax(msg), "%s%s", Costumes_Head[i][g_name], g_vars[id][g_head] == i ? " \r[Activated]" : "")
				formatex(msg1, charsmax(msg1), "%d", item)
				menu_additem(menu, msg, msg1, 0);
				
				item++
			}
		}
		case 3:
		{
			for(new i = 1; i < sizeof Costumes_Back; i++)
			{
				if(!g_acquiredBack[id][i])
					continue
					
				formatex(msg, charsmax(msg), "%s%s", Costumes_Back[i][g_name], g_vars[id][g_back] == i ? " \r[Activated]" : "")
				formatex(msg1, charsmax(msg1), "%d", item)
				menu_additem(menu, msg, msg1, 0);
				
				item++
			}
		}
		case 4:
		{
			for(new i = 1; i < sizeof Costumes_Pelvis; i++)
			{
				if(!g_acquiredPelvis[id][i])
					continue
				
				formatex(msg, charsmax(msg), "%s%s", Costumes_Pelvis[i][g_name], g_vars[id][g_pelvis] == i ? " \r[Activated]" : "")
				formatex(msg1, charsmax(msg1), "%d", item)
				menu_additem(menu, msg, msg1, 0);
				
				item++
			}
		}
	}
	
	menu_setprop(menu, MPROP_BACKNAME, "\wBack")
	menu_setprop(menu, MPROP_NEXTNAME, "\wNext")
	menu_setprop(menu, MPROP_EXITNAME, "\wExit")
	
	menu_display(id, menu, 0)
	
	if(!item)
	{
		colorchat(id, "^04%s^01 You don't have any ^04%s^01 Costume in your inventory.", PREFIX, 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 ? "Pelvis" : "Back" : "Head" : "Skin TR" : "Skin CT" : "")
		show_menu_inventory(id)
	}
}

public menu_shop(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		show_menu_costumes(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	
	g_vars[id][g_costume] = key
	
	show_menu_costumeshop(id)
	return PLUGIN_HANDLED;
}

show_menu_shop(id)
{
	new msgm[128]
	formatex(msgm, charsmax(msgm), "\r%s \yShop^n\wCash: \r%d", PREFIX, g_vars[id][g_cash])
	
	new menu = menu_create(msgm, "menu_shop")
	
	menu_additem(menu, "Skin CT", "0", 0);
	menu_additem(menu, "Skin TR", "1", 0);
	menu_additem(menu, "Head", "2", 0);
	menu_additem(menu, "Back", "3", 0);
	menu_additem(menu, "Pelvis", "4", 0);
	
	menu_setprop(menu, MPROP_EXITNAME, "\wExit")
	
	menu_display(id, menu, 0)
}

public menu_costumeshop(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		show_menu_shop(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)
	
	if(!g_vars[id][g_costume] && g_acquiredSkinCT[id][key+1] || g_vars[id][g_costume] == 1 && g_acquiredSkinTR[id][key+1] || g_vars[id][g_costume] == 2 && g_acquiredHead[id][key+1] || g_vars[id][g_costume] == 3 && g_acquiredBack[id][key+1] || g_vars[id][g_costume] == 4 && g_acquiredPelvis[id][key+1])
	{
		colorchat(id, "^04%s^01 You already have this ^04Costume^01!", PREFIX)
		show_menu_costumeshop(id)
	}
	else
	{
		g_vars[id][g_buying] = key+1
		show_menu_buycostume(id)
	}
	
	return PLUGIN_HANDLED;
}

show_menu_costumeshop(id)
{
	new msgm[128], msg[128], msg1[128], msg2[128]
	formatex(msgm, charsmax(msgm), "\r%s \yShop: %s^n\wCash: \r%d^n", PREFIX, 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 ? "Pelvis" : "Back" : "Head" : "Skin TR" : "Skin CT" : "", g_vars[id][g_cash])
	new menu = menu_create(msgm, "menu_costumeshop")
	
	switch(g_vars[id][g_costume])
	{
		case 0:
		{
			for(new i = 1; i < sizeof Costumes_SkinCT; i++)
			{
				formatex(msg2, charsmax(msg2), "[Price: %d]", Costumes_SkinCT[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_acquiredSkinCT[id][i] ? "\d" : "", Costumes_SkinCT[i][g_name], g_acquiredSkinCT[id][i] ? "[Acquired]" : msg2)
				formatex(msg1, charsmax(msg1), "%d", i-1)
				menu_additem(menu, msg, msg1, 0);
			}
		}
		case 1:
		{
			for(new i = 1; i < sizeof Costumes_SkinTR; i++)
			{
				formatex(msg2, charsmax(msg2), "[Price: %d]", Costumes_SkinTR[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_acquiredSkinTR[id][i] ? "\d" : "", Costumes_SkinTR[i][g_name], g_acquiredSkinTR[id][i] ? "[Acquired]" : msg2)
				formatex(msg1, charsmax(msg1), "%d", i-1)
				menu_additem(menu, msg, msg1, 0);
			}
		}
		case 2:
		{
			for(new i = 1; i < sizeof Costumes_Head; i++)
			{
				formatex(msg2, charsmax(msg1), "[Price: %d]", Costumes_Head[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_acquiredHead[id][i] ? "\d" : "", Costumes_Head[i][g_name], g_acquiredHead[id][i] ? "[Acquired]" : msg2)
				formatex(msg1, charsmax(msg1), "%d", i-1)
				menu_additem(menu, msg, msg1, 0);
			}
		}
		case 3:
		{
			for(new i = 1; i < sizeof Costumes_Back; i++)
			{
				formatex(msg2, charsmax(msg2), "[Price: %d]", Costumes_Back[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_acquiredBack[id][i] ? "\d" : "", Costumes_Back[i][g_name], g_acquiredBack[id][i] ? "[Acquired]" : msg2)
				formatex(msg1, charsmax(msg1), "%d", i-1)
				menu_additem(menu, msg, msg1, 0);
			}
		}
		case 4:
		{
			for(new i = 1; i < sizeof Costumes_Pelvis; i++)
			{
				formatex(msg2, charsmax(msg2), "[Price: %d]", Costumes_Pelvis[i][g_price])
				formatex(msg, charsmax(msg), "%s%s \r%s", g_acquiredPelvis[id][i] ? "\d" : "", Costumes_Pelvis[i][g_name], g_acquiredPelvis[id][i] ? "[Acquired]" : msg2)
				formatex(msg1, charsmax(msg1), "%d", i-1)
				menu_additem(menu, msg, msg1, 0);
			}
		}
	}
	
	menu_setprop(menu, MPROP_BACKNAME, "\wBack")
	menu_setprop(menu, MPROP_NEXTNAME, "\wNext")
	menu_setprop(menu, MPROP_EXITNAME, "\wExit")
	
	menu_display(id, menu, 0)
}

public menu_buycostume(id, menu, item)
{
	if (item == MENU_EXIT)
	{
		show_menu_costumeshop(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
	new key = str_to_num(data)	
	
	if(!key)
	{
		show_motd_costume(id)
		show_menu_buycostume(id)
		return PLUGIN_HANDLED
	}
		
	switch(g_vars[id][g_costume])
	{
		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_acquiredSkinCT[id][g_vars[id][g_buying]] = 1
				g_vars[id][g_skinct] = g_vars[id][g_buying]
				checkCostumes(id, 0)
		
				colorchat(id, "^04%s^01 You bought the Costume^04 %s^01 successfully.", PREFIX, Costumes_SkinCT[g_vars[id][g_buying]][g_name])
				colorchat(id, "^04%s^01 You can deactivate all Costumes in your Inventory or writing ^04/deactivate^01.", PREFIX)
			}
			else
				colorchat(id, "^04%s^01 You don't have enough ^04Cash^01 to buy this Costume!", PREFIX)
		}
		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_acquiredSkinTR[id][g_vars[id][g_buying]] = 1
				g_vars[id][g_skintr] = g_vars[id][g_buying]
				checkCostumes(id, 0)
				
				colorchat(id, "^04%s^01 You bought the Costume^04 %s^01 successfully.", PREFIX, Costumes_SkinTR[g_vars[id][g_buying]][g_name])
				colorchat(id, "^04%s^01 You can deactivate all Costumes in your Inventory or writing ^04/deactivate^01.", PREFIX)
			}
			else
				colorchat(id, "^04%s^01 You don't have enough ^04Cash^01 to buy this Costume!", PREFIX)
		}
		case 2:
		{
			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_acquiredHead[id][g_vars[id][g_buying]] = 1
				g_vars[id][g_head] = g_vars[id][g_buying]
				checkCostumes(id, 1)
		
				colorchat(id, "^04%s^01 You bought the Costume^04 %s^01 successfully.", PREFIX, Costumes_Head[g_vars[id][g_buying]][g_name])
				colorchat(id, "^04%s^01 You can deactivate all Costumes in your Inventory or writing ^04/deactivate^01.", PREFIX)
			}
			else
				colorchat(id, "^04%s^01 You don't have enough ^04Cash^01 to buy this Costume!", PREFIX)
		}
		case 3:
		{
			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_acquiredBack[id][g_vars[id][g_buying]] = 1
				g_vars[id][g_back] = g_vars[id][g_buying]
				checkCostumes(id, 2)
		
				colorchat(id, "^04%s^01 You bought the Costume^04 %s^01 successfully.", PREFIX, Costumes_Back[g_vars[id][g_buying]][g_name])
				colorchat(id, "^04%s^01 You can deactivate all Costumes in your Inventory or writing ^04/deactivate^01.", PREFIX)
			}
			else
				colorchat(id, "^04%s^01 You don't have enough ^04Cash^01 to buy this Costume!", PREFIX)
		}
		case 4:
		{
			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_acquiredPelvis[id][g_vars[id][g_buying]] = 1
				g_vars[id][g_pelvis] = g_vars[id][g_buying]
				checkCostumes(id, 3)
		
				colorchat(id, "^04%s^01 You bought the Costume^04 %s^01 successfully.", PREFIX, Costumes_Pelvis[g_vars[id][g_buying]][g_name])
				colorchat(id, "^04%s^01 You can deactivate all Costumes in your Inventory or writing ^04/deactivate^01.", PREFIX)
			}
			else
				colorchat(id, "^04%s^01 You don't have enough ^04Cash^01 to buy this Costume!", PREFIX)
		}
	}
	
	show_menu_costumeshop(id)
	return PLUGIN_HANDLED;
}

show_menu_buycostume(id)
{
	new msgm[128]
	
	switch(g_vars[id][g_costume])
	{
		case 0: formatex(msgm, charsmax(msgm), "\r%s \yShop: Skin CT^n\wCostume: \r%s^n\wPrice: \r%d", PREFIX, Costumes_SkinCT[g_vars[id][g_buying]][g_name], Costumes_SkinCT[g_vars[id][g_buying]][g_price])
		case 1: formatex(msgm, charsmax(msgm), "\r%s \yShop: Skin TR^n\wCostume: \r%s^n\wPrice: \r%d", PREFIX, Costumes_SkinTR[g_vars[id][g_buying]][g_name], Costumes_SkinTR[g_vars[id][g_buying]][g_price])
		case 2: formatex(msgm, charsmax(msgm), "\r%s \yShop: Head^n\wCostume: \r%s^n\wPrice: \r%d", PREFIX, Costumes_Head[g_vars[id][g_buying]][g_name], Costumes_Head[g_vars[id][g_buying]][g_price])
		case 3: formatex(msgm, charsmax(msgm), "\r%s \yShop: Back^n\wCostume: \r%s^n\wPrice: \r%d", PREFIX, Costumes_Back[g_vars[id][g_buying]][g_name], Costumes_Back[g_vars[id][g_buying]][g_price])
		case 4: formatex(msgm, charsmax(msgm), "\r%s \yShop: Pelvis^n\wCostume: \r%s^n\wPrice: \r%d", PREFIX, Costumes_Pelvis[g_vars[id][g_buying]][g_name], Costumes_Pelvis[g_vars[id][g_buying]][g_price])
	}
	
	new menu = menu_create(msgm, "menu_buycostume")
	
	menu_additem(menu, "Preview", "0", 0);
	menu_additem(menu, "Buy", "1", 0);
	
	menu_setprop(menu, MPROP_EXITNAME, "\wCancel Purchase")
	
	menu_display(id, menu, 0)
}

public show_motd_costume(id)
{
	static motd[2001], motd_name[128]
	
	switch(g_vars[id][g_costume])
	{
		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: #0e0e0e;^"><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: #0e0e0e;^"><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]);
		}
		case 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: #0e0e0e;^"><img src=^"%s^"></body></html>", Costumes_Head[g_vars[id][g_buying]][g_preview1])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Head[g_vars[id][g_buying]][g_name]);
		}
		case 3:
		{
			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: #0e0e0e;^"><img src=^"%s^"></body></html>", Costumes_Back[g_vars[id][g_buying]][g_preview1])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Back[g_vars[id][g_buying]][g_name]);
		}
		case 4:
		{
			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: #0e0e0e;^"><img src=^"%s^"></body></html>", Costumes_Pelvis[g_vars[id][g_buying]][g_preview1])
			formatex(motd_name, charsmax(motd_name), "%s", Costumes_Pelvis[g_vars[id][g_buying]][g_name]);
		}
	}
	
	show_motd(id, motd, motd_name);
}

public checkCostumes(id, key)
{
	switch(key)
	{
		case 0:
		{
			switch(cs_get_user_team(id))
			{
				case CS_TEAM_T:
				{
					if(g_vars[id][g_skintr])
						cs_set_user_model(id, Costumes_SkinTR[g_vars[id][g_skintr]][g_model])
				}
				case CS_TEAM_CT:
				{
					if(g_vars[id][g_skinct])
						cs_set_user_model(id, Costumes_SkinCT[g_vars[id][g_skinct]][g_model])
				}
			}
		}
		case 1:
		{
			reset_costume(id, 1)
			
			if(g_vars[id][g_head])
				make_costume(id, CostumeModels[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])
				make_costume(id, CostumeModels[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])
				make_costume(id, CostumeModels[Costumes_Pelvis[g_vars[id][g_pelvis]][g_model]], 3, Costumes_Pelvis[g_vars[id][g_pelvis]][g_anim])
		}
	}
}

public make_costume(id, model[], part, anim)
{
	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)
		}
	}
}

public reset_costume(id, number)
{
	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
		}
	}
}

colorchat(id, const input[], any:...)
{
	static szMsg[191], msgSayText;
    
	if (!msgSayText)
		msgSayText = get_user_msgid("SayText");
    
	replace_all(szMsg, 190, "!g", "^04");
	replace_all(szMsg, 190, "!y", "^01");
	replace_all(szMsg, 190, "!t", "^03");
    
	vformat(szMsg, 190, input, 3);
    
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
	write_byte(id ? id : 33);
	write_string(szMsg);
	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;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
L 03/25/2019 - 23:22:05: [MySQL] Invalid column: 101
L 03/25/2019 - 23:22:05: [AMXX] Displaying debug trace (plugin "costumes.amxx", version "1.1")
L 03/25/2019 - 23:22:05: [AMXX] Run time error 10: native error (native "SQL_ReadResult")
L 03/25/2019 - 23:22:05: [AMXX] [0] costumes.sma::register_client (line 370)

Аватар
Autumn Shade
Извън линия
Потребител
Потребител
Мнения: 269
Регистриран на: 14 Мар 2019, 13:20
Се отблагодари: 48 пъти
Получена благодарност: 150 пъти

CSO Costumes plugin error mysql - no save

Мнение от Autumn Shade » 26 Мар 2019, 08:15

With clean AMXX build, 1.8.2, Изображение

Аватар
mar1anx
Извън линия
Foreigner
Foreigner
Мнения: 41
Регистриран на: 17 Сеп 2018, 00:56
Се отблагодари: 4 пъти
Получена благодарност: 2 пъти

CSO Costumes plugin error mysql - no save

Мнение от mar1anx » 26 Мар 2019, 08:34

Is not saving items/cash mysql. I don't have problem with compile.

Аватар
Autumn Shade
Извън линия
Потребител
Потребител
Мнения: 269
Регистриран на: 14 Мар 2019, 13:20
Се отблагодари: 48 пъти
Получена благодарност: 150 пъти

CSO Costumes plugin error mysql - no save

Мнение от Autumn Shade » 26 Мар 2019, 08:55

Forgive my previous post. I do not know what is happening to me these days. Although, I've tried reproducing your error, unfortunately, without luck. Could you please explain how did you come to this error?

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

CSO Costumes plugin error mysql - no save

Мнение от hackera457 » 26 Мар 2019, 11:00

The plugin is really bad coded, SQL statements are written badly, so this errors will appear. The solution for you is to check one by one tables columns, and fix SQL statements, because now have some stupid counter for queries that i think come this problem, so SQL part needes to be rewritten, but i think all plugin needs to be rewritten
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта