View Single Post
Colombinus
Junior Member
Join Date: Nov 2020
Old 05-03-2022 , 11:33   Re: Help Error: Expected token: "}", but found "-string-" on line 45
Reply With Quote #7

To not open another theme in this plugin it tells me

Error: Cannot read from file: "api_oldmenu" on line 11

Code:
/* Script generated by Pawn Studio */

#include < amxmodx >
#include < amxmisc >
#include < cstrike >
#include < engine >
#include < fun >
#include < hamsandwich >
#include < fakemeta >
#include < xs >
#include < api_oldmenu >

#define PLUGIN "CSGO RANGOS"
#define VERSION "1.0b"
#define AUTHOR "Hypnotize"

#define m_LastHitGroup 75
#define TASK_SHOWHUD     50000
#define ID_SHOWHUD     (taskid - TASK_SHOWHUD)
#define ENG_NULLENT        -1 
#define EV_INT_WEAPONKEY    EV_INT_impulse 
#define porcentaje(%0,%1) (%0 / %1) * 100

#define IsValidConnected(%1) (1 <= %1 <= g_iMaxplayers && is_user_connected(%1))

//#define SQL_SYSTEM

#if defined SQL_SYSTEM
	#include < sqlx >
#else
	#include < mysqlt >
	new Handle:g_hConnection;
#endif

#if AMXX_VERSION_NUM < 183
	#include < dhudmessage >
	#define client_disconnected client_disconnect
	
	#else
	new g_szHashUser[ 33 ][ 34 ], g_szHashPass[ 33 ][ 34 ];
#endif

//*************************		ENUMERADORES	*****************************//

enum { REGISTRAR_CUENTA, LOGUEAR_CUENTA, GUARDAR_DATOS, INSERTAR_PJ, CARGAR_PJS, LOGUEAR_PJ, CARGAR_DATOS, CARGAR_DATOS2, SQL_RANK, SQL_TOP };
enum { DESCONECTADO = 0, CONECTADO, LOGUEADO, JUGANDO };

enum eLogros { szLogro[ 90 ], iNecesario, iGanancia, szDescripcion[ 200 ] };
enum { USP = 0, GLOCK18, SOBREVIVE, AS3, KN1, AP, MAXL };

enum eRangos { rangos_nombre[ 64 ], nivel_requerido, url_foto[ 200 ] };

enum _:eAdmin { ADMIN_TYPE[ 30 ], ADMIN_FLAGS[ 90 ], iMult };

enum TutorColor { TUTOR_RED = 1, TUTOR_BLUE, TUTOR_YELLOW, TUTOR_GREEN };

enum _:Armas{ CSW_NAME, WPN_ID[ 40 ], V_MDL[ 100 ], P_MDL[ 100 ], W_MDL[ 100 ], NAMEE[ 200 ], NIVEL, COSTO, CATEGORIA, WID, IS_ADMIN };
enum { cKNIFES = 0, cM4A1, cAWP, cDEAGLE, cGLOCK18, cAK47, cUSP, cMAX_ARMA };

//****************************************************************************//

//--------------------------------------------------------------------------------------------

//***********************	SISTEMA DE CUENTAS		**************************//

#if defined SQL_SYSTEM
new const g_szDBSQL[ ] = "BASE_DE_DATOS";
#else
new const MYSQL_HOST[] =  "127.0.0.1";
new const MYSQL_USER[] =  ""; 
new const MYSQL_PASS[] =  ""; 
new const MYSQL_DATEBASE[] =  "tcagame_svc129"; 
#endif

new const g_szCuentas[ ] = "ct_Cuentas";
new const g_szDatos[ ] = "ct_datos";

new const g_szPrefix[ ] = "[ CSGO ]";
new const DISPONIBLE[ ] = "DISPONIBLE";

new g_id[ 33 ], g_idCuenta[ 33 ];
new g_usuario[ 33 ][ 34 ];
new g_password[ 33 ][ 34 ];
new g_playername[ 33 ][ 33 ];
new g_iEstado[ 33 ];
new g_szPersonajes[ 5 ][ 32 ];

new g_iMenuPj;
new Handle:g_hTuple;

//****************************************************************************//

//-------------------------------------------------------------------------------------

//***********************	SISTEMA DE ADMINS		**************************//

new const Admins[][eAdmin] =
{
	{ "[ Creator ]", "l", 4 },
	{ "[ Owner ]", "l", 4 },
	{ "[ Staff ]", "a", 3 },
	{ "[ Leader ]", "d", 3 }
};

new g_iTipo[ 33 ][ 32 ], g_iMultiplicador[ 33 ];

//****************************************************************************//

//-------------------------------------------------------------------------------------

//***********************	SISTEMA DE LOGROS		**************************//

new const iLogros[ ][ eLogros ] = 
{
	{"1ra Primera Sangre", 1, 2, "Mata tu primer enemigo!"},//0
	{"Pro with USP", 1, 3, "haz 3 frags con USP!"},//1
	{"Pro with glock18", 1, 15, "15 Kills con glock18"},//2
	{"El Superviviente", 1, 25, "Sobrevive 3 rondas seguidas!"},//3
	{"Soy rico", 1, 15, "Consigue 9,000 Puntos"},//4
	{"Quiero ser Millonario", 1, 10, "Consigue 200,000 Puntos!"},//5
	{"ACE!", 1, 10, "Mata a 5 Jugadores seguidos!"},//6
	{"Ninja!", 1, 7, "Mata 7 mans con knife!"},//7
	{"Pro with AWP", 1, 7, "Mata a 3 seguidos con awp"}//8
};
new g_IsLogros[ 33 ][ sizeof(iLogros) ], g_isArma[ 33 ][ MAXL ]; 

new const iLogrosKill[ ][ eLogros ] = 
{
	{"1ra Primera Sangre", 1, 2, "Mata tu primer enemigo!"},
	{"uanjondred", 300, 50, "Pulberisa 100 nuvs!"},
	{"¿5*100?", 500, 100, "Acaba con 500 enemigos!"},
	{"Mi primera 1k", 1000, 200, "Mata 1000 Nuvs!"},
	{"1500 Kills", 1500, 300, "Mata 1500 Enemigos!"},
	{"¿1k * 2?", 2000, 250, "Acaba con 2000 enemigos!"},
	{"Conviertete en 5k", 5000, 500, "Mata 5000 enemigos!"}
}
new g_isKills[ 33 ], g_iLogro[ 33 ];
new g_iPuntos[ 33 ];
//****************************************************************************//

//-------------------------------------------------------------------------------------

//***********************	SISTEMA DE DOMINACION		**************************//

new g_iMatados[ 33 ][ 33 ];
new g_iMuertes[ 33 ][ 33 ];

new g_iScreenFade;

//****************************************************************************//

//-------------------------------------------------------------------------------------

//***********************	SISTEMA DE RANGOS		**************************//

new const rangos[ ][ eRangos ] =  
{
	{ "Recruit", 200, "" },
	{ "Private", 700, "https://ibb.co/BsH2MW1" },
	{ "Private First Class", 1300, "https://ibb.co/6D6Vbqx" },
	{ "Specialist", 2000, "https://ibb.co/z6j2xqr" },
	{ "Corporal", 2900, "https://ibb.co/zNW4khC" },
	{ "Sergeant", 4100, "https://ibb.co/zsWZ8Pg" },
	{ "Sergeant First Class", 5400, "https://ibb.co/QJq9fpk" },
	{ "Master Sergeant", 6200, "https://ibb.co/ZWVLcLc" },
	{ "First Sergeant", 8200, "https://ibb.co/vHJygtF" },
	{ "Sergeant Major", 10000, "https://ibb.co/86fbjr3" },
	{ "Command Sergeant Major", 12000, "https://ibb.co/fYQRRBD" },
	{ "Sergeant Major of the Army", 15000, "https://ibb.co/GPpBfjk" },
	{ "Second Lieutenant", 19000, "https://ibb.co/JdFLCZz" },
	{ "First Lieutenant", 24000, "https://ibb.co/hftdK5B" },
	{ "Captain", 30000, "https://ibb.co/QcBKGPN" },
	{ "Major", 37000, "https://ibb.co/c3q0wFY" },
	{ "Lieutenant Colonel",45000, "https://ibb.co/Ln613zQ" },
	{ "Colonel", 54000, "https://ibb.co/4dp1Nfs" },
	{ "Brigadier General", 64000, "https://ibb.co/jHhYTGp" }
	{ "Major General", "https://ibb.co/48V7qh2"}
	{ "Lieutenant General", "https://ibb.co/JvSNxqG"}
	{ "General", "https://ibb.co/SKL9fLQ"}
	{ "General of the Army", "https://ibb.co/86fbjr3"}
}
new g_iRango[ 33 ];
new g_iHud;

//****************************************************************************//

//-----------------------------------------------------------------------------------

//************************		SISTEMA DE SKINS		***************************//

new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
    "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
    "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
    "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }

new const Modelos[][Armas] = 
{
    { CSW_KNIFE, "weapon_knife", "v_knife", "default", "default", "Default cs:go", 0, 0, cKNIFES, 1110, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_daggers_CH", "default", "default", "Daggers - Case Hardened", 0, 50, cKNIFES, 1111, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_falchion_CH", "default", "default", "Falchion - Slaughter", 0, 120, cKNIFES, 1112, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_butterfly_marblefade", "default", "default", "Butterfly - MarbleFade", 1, 200, cKNIFES, 1113, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bowie_vanilla", "default", "default", "Bowie - Vanilla", 13, 1000, cKNIFES, 1114, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_karambit_doppler2", "default", "default", "Karambit - Doppler Phase 2", 2, 300, cKNIFES, 1115, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bayonet_tiger", "default", "default", "Bayonet - Tiger Tooth", 5, 490, cKNIFES, 1116, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bayonet_marble", "default", "default", "Bayonet - Marble Fade", 6, 300, cKNIFES, 1117, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_daggers_boreal", "default", "default", "Daggers - Boreal", 7, 410, cKNIFES, 1118, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bayonet_crimson", "default", "default", "Bayonet - Crimson", 8, 400, cKNIFES, 1119, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bayonet_doppler1", "default", "default", "Bayonet - Doppler1", 9, 500, cKNIFES, 1120, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_bayonet_doppler4", "default", "default", "Bayonet - Doppler4", 10, 520, cKNIFES, 1121, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_karambit_tiger", "default", "default", "Karambit - Tiger", 11, 490, cKNIFES, 1122, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_flip_ruby", "default", "default", "Flip - Ruby", 12, 500, cKNIFES, 1123, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_huntsman_crimson", "default", "default", "Hunstman - Crimson", 13, 570, cKNIFES, 1124, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_karambit_fade", "default", "default", "Karambit - Fade", 14, 900, cKNIFES, 1125, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_karambit_magna", "default", "default", "Karambit - Magna", 15, 1000, cKNIFES, 1126, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_flip_doppler4", "default", "default", "Flip - Doppler4", 16, 1010, cKNIFES, 1127, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_falchion_slaughter", "default", "default", "Falchion - Slaughter", 16, 1400, cKNIFES, 1128, -1 },
    { CSW_KNIFE, "weapon_knife", "v_knife_m9_marble", "default", "default", "M9 - Marble V.I.P", 17, 2000, cKNIFES, 1129, -1 },

    
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_chanticos_fire", "p_m4a1_chanticos_fire", "w_m4a1_chanticos_fire", "M4a1 - Chanticos", 0, 200, cM4A1, 2220, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_flashback", "p_m4a1_flashback", "w_m4a1_flashback", "M4a1 - Flashback", 0, 380, cM4A1, 2221, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_decimator", "p_m4a1_decimator", "w_m4a1_decimator", "M4a1 - Decimator", 3, 500, cM4A1, 2222, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_mecha", "p_m4a1_mecha", "w_m4a1_mecha", "M4a1 - Mecha", 4, 800, cM4A1, 2223, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_masterpiece", "p_m4a1_masterpiece", "w_m4a1_masterpiece", "M4a1 - Masterpice", 7, 1000, cM4A1, 2224, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_golden_coil", "p_m4a1_golden_coil", "w_m4a1_golden_coil", "M4a1 - Golden Coil", 10, 2000, cM4A1, 2225, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_hyper_beast", "p_m4a1_hyper_beast", "w_m4a1_hyper_beast", "M4a1 - Hyper Beast", 15, 5000, cM4A1, 2226, -1 },
    { CSW_M4A1, "weapon_m4a1", "v_m4a1_howl", "p_m4a1_howl", "w_m4a1_howl", "M4a1 - Howl V.I.P.", 17, 8000, cM4A1, 2222, -1 },
    
    
    { CSW_AWP, "weapon_awp", "v_awp_phobos", "p_awp_phobos", "w_awp_phobos", "AWP - Phobos", 0, 220, cAWP, 3330, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_asiimov", "p_awp_asiimov", "w_awp_asiimov", "AWP - Asiimov", 3, 400, cAWP, 3331, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_medusa", "p_awp_medusa", "w_awp_medusa", "AWP - Medusa", 7, 600, cAWP, 3332, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_boom", "p_awp_boom", "w_awp_boom", "AWP - Boom", 5, 110, cAWP, 3333, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_oni_taiji", "p_awp_oni_taiji", "w_awp_oni_taiji", "AWP - Oni Taiji", 10, 1100, cAWP, 3334, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_dragon_lore", "p_awp_dragon_lore", "w_awp_dragon_lore", "AWP - Dragon Lore", 14, 3000, cAWP, 3335, -1 },
    { CSW_AWP, "weapon_awp", "v_awp_hyper_beast", "p_awp_hyper_beast", "w_awp_hyper_beast", "AWP - Hyper Beast", 17, 110, cAWP, 3336, -1 },
    
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_blaze", "default", "default", "Deagle - Blaze", 0, 250, cDEAGLE, 4440, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_directive", "default", "default", "Deagle - Directive", 0, 500, cDEAGLE, 4441, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_fire_elemental", "default", "default", "Deagle - Fire Elemental", 5, 800, cDEAGLE, 4442, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_whitetiger", "default", "default", "Deagle - Whitetiger", 3, 600, cDEAGLE, 4443, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_salient", "default", "default", "Deagle - Salient", 7, 600, cDEAGLE, 4444, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_kumicho", "default", "default", "Deagle - Kumicho", 13, 1000, cDEAGLE, 4445, -1 },
    { CSW_DEAGLE, "weapon_deagle", "v_deagle_doomsday", "default", "default", "Deagle - Domm Sday", 15, 1100, cDEAGLE, 4446, -1 },
    
    
    { CSW_GLOCK18, "weapon_glock18", "v_glock18_fire_elemental", "default", "default", "Glock - Fire Elemental", 0, 100, cGLOCK18, 5550, -1 },
    { CSW_GLOCK18, "weapon_glock18", "v_glock18_tristrike", "default", "default", "Glock - Tristrike", 4, 270, cGLOCK18, 5551, -1 },
    { CSW_GLOCK18, "weapon_glock18", "v_glock18_water_elemental", "default", "default", "Glock - Water elemental", 8, 500, cGLOCK18, 5552, -1 },
    { CSW_GLOCK18, "weapon_glock18", "v_glock18_weasel", "default", "default", "Glock - Weasel", 13, 900, cGLOCK18, 5553, -1 },
    
    
    { CSW_AK47, "weapon_ak47", "v_ak47_fuel_injector", "p_ak47_fuel_injector", "w_ak47_fuel_injector", "AK47 - Fuel Injector", 0, 250, cAK47, 6660, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_vulcan", "p_ak47_vulcan", "w_ak47_vulcan", "AK47 - Vulcan", 3, 600, cAK47, 6661, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_case_hardened", "p_ak47_case_hardened", "w_ak47_case_hardened", "AK47 - Case Hardened", 0, 100, cAK47, 6662, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_neon_revolution", "p_ak47_neon_revolution", "w_ak47_neon_revolution", "AK47 - Neon Rev.", 7, 500, cAK47, 6663, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_point_disarray", "p_ak47_point_disarray", "w_ak47_point_disarray", "AK47 - Point Disarray", 9, 800, cAK47, 6664, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_blood_sport", "p_ak47_blood_sport", "w_ak47_blood_sport", "AK47 - Blood Sport", 12, 1500, cAK47, 6665, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_aquamarine", "p_ak47_aquamarine", "w_ak47_aquamarine", "AK47 - Marine", 15, 3000, cAK47, 6666, -1 },
    { CSW_AK47, "weapon_ak47", "v_ak47_fire_serpent", "p_ak47_fire_serpent", "w_ak47_fire_serpent", "AK47 - Fire Serpent", 17, 5000, cAK47, 6667, -1 },
    
    
    { CSW_USP, "weapon_usp", "v_usp_caiman", "default", "default", "USP - Caiman", 0, 180, cUSP, 7770, -1 },
    { CSW_USP, "weapon_usp", "v_usp_cyrex", "default", "default", "USP - Cyrex", 0, 400, cUSP, 7771, -1 },
    { CSW_USP, "weapon_usp", "v_usp_nightfire_dragon", "default", "default", "USP - Nightifre", 5, 700, cUSP, 7772, -1 },
    { CSW_USP, "weapon_usp", "v_usp_orion", "default", "default", "USP - Orion", 9, 1000, cUSP, 7773, -1 }
}

new const eWeapon[ 8 ][ ] = { "models/w_knife.mdl", "models/w_m4a1.mdl", "models/w_awp.mdl", "models/w_deagle.mdl", "models/w_glock18.mdl", "models/w_ak47.mdl", "models/w_usp.mdl",  "" };

new g_iCategoria[ 33 ];

new g_iElegida[ 33 ][ cMAX_ARMA ];
new g_iRecogida[ 33 ][ cMAX_ARMA ];
new g_iComprada[ 33 ][ cMAX_ARMA ][ 25 ];

//****************************************************************************//

//-----------------------------------------------------------------------------------

new const g_szLogro[ ] = "up.wav";

new const g_TutorPrecache[][] = 
{  
	"gfx/career/icon_!.tga", 
	"gfx/career/icon_!-bigger.tga", 
	"gfx/career/icon_i.tga",  
	"gfx/career/icon_i-bigger.tga", 
	"gfx/career/icon_skulls.tga",
	"gfx/career/round_corner_ne.tga", 
	"gfx/career/round_corner_nw.tga", 
	"gfx/career/round_corner_se.tga", 
	"gfx/career/round_corner_sw.tga", 
	"resource/TutorScheme.res", 
	"resource/UI/TutorTextWindow.res"
}

new g_iMsgTutClose, g_iMsgTutor;

new g_iPlanted, g_iDefuse;
new DefuseId, PlantedId;

new g_iConteo;
new g_bCalentamiento = true;

new g_iFrag[ 33 ];
new g_iElo[ 33 ];

new g_isLen[ 4000 ];
new g_iMaxplayers;
new g_msgVGUIMenu, g_msgShowMenu;

const m_iVGUI = 510;
const TASK_TUTOR = 467666646;

new const szGrenadeTT[][] = { "NsPnext_generation/t_grenade01.wav", "NsPnext_generation/t_grenade02.wav", "NsPnext_generation/t_grenade03.wav" };
new const szGrenadeCT[][] = { "NsPnext_generation/ct_grenade01.wav", "NsPnext_generation/ct_grenade02.wav", "NsPnext_generation/ct_grenade03.wav" };

new const szSmokeTT[][] = { "NsPnext_generation/t_smoke01.wav", "NsPnext_generation/t_smoke02.wav" };
new const szSmokeCT[][] = { "NsPnext_generation/ct_smoke01.wav", "NsPnext_generation/ct_smoke02.wav", "NsPnext_generation/ct_smoke03.wav" };

new const szFlashTT[][] = { "NsPnext_generation/t_flashbang01.wav", "NsPnext_generation/t_flashbang02.wav", "NsPnext_generation/t_flashbang03.wav" };
new const szFlashCT[][] = { "NsPnext_generation/ct_flashbang01.wav", "NsPnext_generation/ct_flashbang02.wav", "NsPnext_generation/ct_flashbang03.wav" };

new const g_szMdlGrenade[] = "models/NsPnext_generation/v_henade.mdl";
new const g_szMdlSmoke[] = "models/NsPnext_generation/v_smokenade.mdl";
new const g_szMdlFlash[] = "models/NsPnext_generation/v_flash.mdl";

public plugin_init( )  
{
	register_plugin( PLUGIN, VERSION, AUTHOR );
	
	register_clcmd( "CREAR_USUARIO", "reg_usuario" );
	register_clcmd( "CREAR_PASSWORD", "reg_password" );
	register_clcmd( "LOGUEAR_USUARIO", "log_usuario" );
	register_clcmd( "LOGUEAR_PASSWORD", "log_password" );
	register_clcmd( "say /skins", "cmdMenu" );
	register_clcmd( "chooseteam", "clcmd_changeteam" );
	register_clcmd( "jointeam", "clcmd_changeteam" );
	register_clcmd("say", "BlockSay");
	register_clcmd( "say /top15", "checkTop" );
	register_clcmd("say /rank", "checkRank");
	register_clcmd( "sayteam /top15", "checkTop" );
	register_clcmd("sayteam /rank", "checkRank");
	
	g_msgShowMenu = get_user_msgid("ShowMenu");
	g_msgVGUIMenu = get_user_msgid("VGUIMenu");
	register_message( g_msgShowMenu, "message_ShowMenu" );
	register_message( g_msgVGUIMenu, "message_VGUIMenu" );
	register_message( get_user_msgid( "TextMsg" ), "message_textmsg" );
	register_message( get_user_msgid( "SendAudio" ), "MESSAGE_SendAudio" );
	
	register_event( "HLTV", "event_round_start", "a", "1=0", "2=0" );
	
	register_logevent( "RoundEnd", 2, "1=Round_End" );
	
	for( new i = 1; i < sizeof WEAPONENTNAMES; i++ )
	{
        if( WEAPONENTNAMES[ i ][ 0 ] ) 
		{
			RegisterHam( Ham_Item_Deploy, WEAPONENTNAMES[ i ], "ham_ItemDeploy_AllWeapons", 1 );
			RegisterHam( Ham_Item_AddToPlayer, WEAPONENTNAMES[ i ], "fw_AddToPlayer", 1 );
		}
	}
	RegisterHam(Ham_Spawn,         "player",     "ham_PlayerSpawn_Post", 1);
	RegisterHam(Ham_Killed, "player", "Ham_PlayerKilled", 1);
	
	register_forward(FM_SetModel, "fw_SetModel");
	register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged");
	register_forward(FM_ClientKill, "Fw_ClientKill");
	
	g_iMaxplayers = get_maxplayers( );
	g_iScreenFade = get_user_msgid("ScreenFade");
	g_iHud = CreateHudSyncObj( );
	
	g_iMsgTutor = get_user_msgid("TutorText");
	g_iMsgTutClose = get_user_msgid("TutorClose");
	
	MySQLx_Init( );
	oldmenu_register( );
	
	g_iConteo = 60;
	g_bCalentamiento = true;
	set_task( 1.0, "fnCalentamiento", 8596, _, _, "b" );
}
public plugin_precache( )
{
	new i, szModels[ 500 ];
	
	for( i = 0; i < sizeof g_TutorPrecache; ++i ) engfunc( EngFunc_PrecacheGeneric,g_TutorPrecache[ i ] );
	
	for( i = 0; i < sizeof Modelos; i++ )
	{
		if( !equal( Modelos[ i ][ V_MDL ], "default" ) )
		{
			formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ i ][ V_MDL ] );
			precache_model( szModels );
		}
		if( !equal( Modelos[ i ][ P_MDL ], "default" ) )
		{
			formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ i ][ P_MDL ] );
			precache_model( szModels );
		}
	}
	
	precache_model( g_szMdlGrenade );
	precache_model( g_szMdlSmoke );
	precache_model( g_szMdlFlash );
	
	for( i = 0; i < sizeof( szGrenadeTT ); ++i ) precache_sound( szGrenadeTT[ i ] );
	for( i = 0; i < sizeof( szGrenadeCT ); ++i ) precache_sound( szGrenadeCT[ i ] );
		
	for( i = 0; i < sizeof( szSmokeTT ); ++i ) precache_sound( szSmokeTT[ i ] );
	for( i = 0; i < sizeof( szSmokeCT ); ++i ) precache_sound( szSmokeCT[ i ] );
		
	for( i = 0; i < sizeof( szFlashTT ); ++i ) precache_sound( szFlashTT[ i ] );
	for( i = 0; i < sizeof( szFlashCT ); ++i ) precache_sound( szFlashCT[ i ] );
	
	precache_player_Sound( g_szLogro );
}
public client_disconnected(  id ) 
{
	if( g_iEstado[ id ] == JUGANDO ) 
	{
		g_iEstado[ id ] = DESCONECTADO;
		guardar_datos( id );
		remove_task( id+TASK_SHOWHUD ); 
	}
	
	g_usuario[ id ][ 0 ] = '^0';
	g_password[ id ][ 0 ] = '^0';
}
public client_putinserver( id )
{
	new i;
	
	get_user_name(id, g_playername[ id ], charsmax( g_playername[] ));
	
	set_task( 0.5, "show_login_menu", id );
	
	for( i = 0; i < sizeof( g_szPersonajes ); ++i )
		g_szPersonajes[ i ] = DISPONIBLE;
	
	for( i = 1; i <= g_iMaxplayers; ++i )
	{
		for( new cate = 0; cate < cMAX_ARMA; ++cate )
		{
			for( new arma = 0; arma < 25; ++arma )
				g_iComprada[ i ][ cate ][ arma ] = 0;
		}
	}
	
	g_iTipo[ id ] = "^0";
	g_iMultiplicador[ id ] = 1;
	g_iCategoria[ id ] = 0;
	
	arrayset( g_iRecogida[ id ], -1, sizeof( g_iRecogida[ ] ) );
	
	if( is_user_admin( id ) )
	{
		for( new i = 0 ; i < sizeof Admins ; i++ ) 
		{
			if( has_flag( id, Admins[ i ][ ADMIN_FLAGS ] ) )
			{                     
				formatex( g_iTipo[ id ], charsmax( g_iTipo ), "%s", Admins[ i ][ ADMIN_TYPE ] );
				g_iMultiplicador[ id ] = Admins[ i ][ iMult ];
				break;
			}
		}
	}
}
public Fw_ClientKill()
{
    return FMRES_SUPERCEDE
} 
public fnCalentamiento( )
{
	set_dhudmessage( 125, 125, 125, 0.38, 0.30, 1, 1.0, 0.1 );
	show_dhudmessage( 0,     "===================^n\
            ..:::> PARTIDA EN: %i <:::..^n\
            ===================", g_iConteo );
	--g_iConteo;
	
	if( g_iConteo <= 0 )
	{
		server_cmd( "amx_cvar sv_restart 1" );
		g_bCalentamiento = false;
		remove_task ( 8596 );
		return;
	}
}
public MESSAGE_SendAudio()
{
	static SZ_Text[18];
	
	get_msg_arg_string(2, SZ_Text, charsmax(SZ_Text))
	
	if(equal(SZ_Text,"%!MRAD_FIREINHOLE"))
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
} 
public message_textmsg()
{
	static textmsg[22]
	
	if (get_msg_args() == 5 && get_msg_argtype(5) == ARG_STRING)
	{
		get_msg_arg_string(5, textmsg, sizeof textmsg - 1)
		
		if (equal(textmsg, "#Fire_in_the_hole"))
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE;
}
public grenade_throw( id, greindex, wId ) 
{
	if( wId == CSW_HEGRENADE )
	{
		if( get_user_team( id ) == 1)
			emit_sound (id, CHAN_VOICE, szGrenadeTT[ random_num( 0, charsmax( szGrenadeTT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
		else
			emit_sound (id, CHAN_VOICE, szGrenadeCT[ random_num( 0, charsmax( szGrenadeCT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
		
		printf( id, "!team[ ^4CSGO !team] Haz lanzado una ^4Granada!" );
		return PLUGIN_HANDLED;
	}
	if( wId == CSW_FLASHBANG ) 
	{
		if( get_user_team( id ) == 1)
			emit_sound (id, CHAN_VOICE, szFlashTT[ random_num( 0, charsmax( szFlashTT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
		else
			emit_sound (id, CHAN_VOICE, szFlashCT[ random_num( 0, charsmax( szFlashCT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
			
		printf( id, "!team[ ^4CSGO !team] Haz lanzado una ^4Flash!" );
		return PLUGIN_HANDLED;
	}
	if( wId == CSW_SMOKEGRENADE )
	{
		if( get_user_team( id ) == 1)
			emit_sound (id, CHAN_VOICE, szSmokeTT[ random_num( 0, charsmax( szSmokeTT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
		else
			emit_sound (id, CHAN_VOICE, szSmokeCT[ random_num( 0, charsmax( szSmokeCT ) ) ], 0.9, ATTN_NORM, 0, PITCH_NORM);
			
		printf( id, "!team[ ^4CSGO !team] Haz lanzado una ^4Smoke!" );
		return PLUGIN_HANDLED;
	}
	return PLUGIN_HANDLED;
} 
public fnPricipal( id )
{
	new gMenu;
	gMenu = menu_create("MENU \yPRINCIPAL^n____________________", "fnMenu");
	
	menu_additem(gMenu, "CAMBIAR A \yTT", "1");
	menu_additem(gMenu, "CAMBIAR A \yCT", "2") ;
	menu_additem(gMenu, "MENU DE \ySKINS", "3");
	menu_additem(gMenu, "MENU DE \yLOGROS", "3");
	menu_additem(gMenu, "TOP \yPLAYERS", "3");
	
	menu_display( id, gMenu, 0 );
	return PLUGIN_HANDLED;
}
public fnMenu( id, menu, item )
{
	if ( item == MENU_EXIT ) 
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;   
	}
	switch( item )   
	{
		case 0:
		{
			if( cs_get_user_team( id ) == CS_TEAM_T )
			{
				engclient_cmd( id, "jointeam", "1" );
				engclient_cmd( id, "joinclass", "5" );
			}
		}
		case 1:
		{
			if( cs_get_user_team( id ) == CS_TEAM_CT )
			{
				engclient_cmd( id, "jointeam", "2" );
				engclient_cmd( id, "joinclass", "5" );
			}
		}
		case 2: cmdMenu( id );
		case 3: menu_Logros( id );
		case 4: checkTop( id );
	}
	return PLUGIN_HANDLED;
}

//------------------------------------------------------------------------------------------------

//***********************	SISTEMA DE SKINS		**************************//

public cmdMenu( id )
{
	new gMenu = menu_create( "\rMenu skins", "handlerMenu" );
	menu_additem( gMenu, "Knives", "1" );
	menu_additem( gMenu, "m4a1", "2" );
	menu_additem( gMenu, "Awp", "3" ) ;
	menu_additem( gMenu, "Deagle", "4" ) ;
	menu_additem( gMenu, "Glock18", "5" ) ;
	menu_additem( gMenu, "Ak47", "6" ) ;
	menu_additem( gMenu, "Usp", "7" ) ;
	
	menu_display( id, gMenu, 0 );
	return PLUGIN_HANDLED;
}

public handlerMenu( id, menu, item ) 
{
	if( item == MENU_EXIT ) 
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	g_iCategoria[ id ] = item;
	menu_armas( id, g_iCategoria[ id ]  );
	return PLUGIN_HANDLED;
} 

public menu_armas( id, item )
{
	new menu = menu_create( "Menu Skins", "handler_skins" );
	new Item[ 30 ], cont = 0;
	
	for( new i = 0; i < sizeof Modelos; i++ )
	{
		formatex( Item, charsmax( Item ), "%d", i );
		
		if( Modelos[ i ][ CATEGORIA ] != item ) 
			continue;
		
		if( ( g_iRango[ id ] >= Modelos[ i ][ NIVEL ] && g_iPuntos[ id ] >= Modelos[ i ][ COSTO ] ) || g_iComprada[ id ][ item ][ cont ] >= 1 ) 
			menu_additem( menu, Modelos[ i ][ NAMEE ], Item );
		else menu_additem( menu, "\r[Locked]", Item );
		
		++cont;
	}
	menu_display( id, menu );
	return PLUGIN_HANDLED;
} 
public handler_skins( id, menu, item ) 
{
	if(item == MENU_EXIT) 
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	new szData[ 20 ], Item[ 400 ];
	new item_access, item_callback;
	menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), Item, charsmax(Item), item_callback );
	
	new item2 = str_to_num( szData );
	
	if ( ( g_iRango[ id ] >= Modelos[ item2 ][ NIVEL ] && g_iPuntos[ id ] >= Modelos[ item2 ][ COSTO ] ) || g_iComprada[ id ][ g_iCategoria[ id ] ][ item ] >= 1 )
	{
		g_iElegida[ id ][ g_iCategoria[ id ] ] = item2;
		g_iComprada[ id ][ g_iCategoria[ id ] ][ item ] = 1;
		if( g_iComprada[ id ][ g_iCategoria[ id ] ][ item ] < 1 )
			g_iPuntos[ id ] -= Modelos[ item2 ][ COSTO ];
			
		return PLUGIN_HANDLED;
	}
	return PLUGIN_HANDLED;
}
public ham_ItemDeploy_AllWeapons( wpn )
{
	static id; id = fm_cs_get_weapon_ent_owner( wpn );
	static IDWeapon; IDWeapon = cs_get_weapon_id( wpn );
	new szModels[ 500 ];
	
	if ( !pev_valid( id ) ) 
		return;
	
	if( !is_user_alive( id ) ) 
		return;
	
	switch( IDWeapon )
	{
		case CSW_FLASHBANG:
		{
			entity_set_string( id, EV_SZ_viewmodel, g_szMdlFlash );
		}
		case CSW_HEGRENADE:
		{
			entity_set_string( id, EV_SZ_viewmodel, g_szMdlGrenade );
		}
		case CSW_SMOKEGRENADE:
		{
			entity_set_string( id, EV_SZ_viewmodel, g_szMdlSmoke );
		}
	}
	
	for( new i = 0; i < cMAX_ARMA; i++ )
	{
		if( g_iRecogida[ id ][ i ] == -1 )
		{
			if( IDWeapon == Modelos[ g_iElegida[ id ][ i ] ][ CSW_NAME ] )
			{
				if( !equal( Modelos[ g_iElegida[ id ][ i ] ][ V_MDL ], "default" ) )
				{
					formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ g_iElegida[ id ][ i ] ][ V_MDL ] );
					entity_set_string( id, EV_SZ_viewmodel, szModels );
				}			
				if( !equal( Modelos[ g_iElegida[ id ][ i ] ][ P_MDL ], "default" ) )
				{
					formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ g_iElegida[ id ][ i ] ][ P_MDL ] );
					entity_set_string( id, EV_SZ_weaponmodel, szModels );
				}
				break;
			}
		}
		else
		{
			if( IDWeapon == Modelos[ g_iRecogida[ id ][ i ] ][ CSW_NAME ] )
			{
				if( !equal( Modelos[ g_iRecogida[ id ][ i ] ][ V_MDL ], "default" ) )
				{
					formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ g_iRecogida[ id ][ i ] ][ V_MDL ] );
					entity_set_string( id, EV_SZ_viewmodel, szModels );
				}
				if( !equal( Modelos[ g_iRecogida[ id ][ i ] ][ P_MDL ], "default" ) )
				{
					formatex( szModels, charsmax( szModels ), "models/NsPnext_generation/%s.mdl", Modelos[ g_iRecogida[ id ][ i ] ][ P_MDL ] );
					entity_set_string( id, EV_SZ_weaponmodel, szModels );
				}
				break;
			}
		}
	}
}
public fw_SetModel( entity, model[ ] ) 
{
	if( !is_valid_ent( entity ) ) 
		return FMRES_IGNORED;
	
	static szClassName[ 33 ]; entity_get_string( entity, EV_SZ_classname, szClassName, charsmax( szClassName ) );
	static iOwner; iOwner = entity_get_edict( entity, EV_ENT_owner );
	
	if( !equal( szClassName, "weaponbox" ) )
		return FMRES_IGNORED;
	
	if( !is_user_alive( iOwner ) ) 
		return FMRES_IGNORED;
	
	for( new i = 0; i < cMAX_ARMA; ++i )
	{
		//continue < 0
		if( equal( model, eWeapon[ i ] ) )
		{			
			static StoredId; StoredId = find_ent_by_owner( ENG_NULLENT, Modelos[ g_iElegida[ iOwner ][ i ] ][ WPN_ID ], entity );
				
			if( is_valid_ent( StoredId ) ) 
			{
				if( g_iRecogida[ iOwner ][ i ] > 0 )
					g_iRecogida[ iOwner ][ i ] = -1;
					
				entity_set_int( StoredId, EV_INT_WEAPONKEY, Modelos[ g_iElegida[ iOwner ][ i ] ][ WID ] );
					
			}
			break;
		}
	}
	return FMRES_IGNORED;
}
public fw_AddToPlayer( ent, id )
{
	if( !is_valid_ent( ent ) || !is_user_alive( id ) || !is_user_connected( id ) )
		return HAM_IGNORED
	
	static IDWeapon; IDWeapon = cs_get_weapon_id( ent );
	
	for( new i = 0; i < sizeof( Modelos ); ++i )
	{
		if( IDWeapon == Modelos[ i ][ CSW_NAME ] )
		{
			if( entity_get_int( ent, EV_INT_WEAPONKEY ) == Modelos[ i ][ WID ] )
			{
				g_iRecogida[ id ][ Modelos[ i ][ CATEGORIA ] ] = i;//
				entity_set_int( ent, EV_INT_WEAPONKEY, 0 );
				break;
			}
		}
	}
	
	return HAM_HANDLED	
}

//****************************************************************************************//

//------------------------------------------------------------------------------------------------

//***********************	SISTEMA DE MEJORES JUGADORES		**************************//

public RoundEnd( )
{  
	fnBestPlayer(); 
}

public fnBestPlayer( )
{
	if( g_iDefuse )
	{
		formatex( g_isLen, charsmax( g_isLen ), "El mejor Jugador es %s, ^nPOR HABER DEFUSADO LA C4!", g_playername[ DefuseId ] );
		Hud( 0, g_isLen, 225, 0, 0, 5.0 );
	}
	else
	{
		if( g_iPlanted )
		{
			formatex( g_isLen, charsmax( g_isLen ), "El mejor Jugador es %s, ^nPOR HABER PLANTADO LA C4!", g_playername[ PlantedId ] );
			Hud( 0, g_isLen, 225, 0, 0, 5.0 );
		}
		else
		{
			static gs, Kills; Kills = 1;
			gs = g_iFrag[ 0 ];
			for ( new i = Kills; i <= g_iMaxplayers; ++i ) 
			{
				if( g_iFrag[ i ] > gs )
					Kills = i;
			}	
			formatex( g_isLen, charsmax( g_isLen ), "El mejor Jugador es %s, ^nPOR HABER HECHO MAS KILLS!", g_playername[ Kills ] );
			Hud( 0, g_isLen, 225, 0, 0, 5.0 );
		}
	}
}

public bomb_planted( id ) 
{
	if( !is_user_connected( id ) ) 
		return;
	
	g_iPlanted= true;
	PlantedId = id;
	
	chequear_rango( id, 2, "GANASTE" );
}


public bomb_defused( id )
{
	if( !is_user_connected( id ) ) 
		return;
	
	g_iDefuse = true;
	DefuseId = id;
	
	chequear_rango( id, 2, "GANASTE" );
} 

//****************************************************************************//

//----------------------------------------------------------------------------

public fnRevivirJugador( id ) 
{
	if ( !is_user_connected( id ) ) 
		return; 
	
	ExecuteHamB( Ham_CS_RoundRespawn, id );
}
public ham_PlayerSpawn_Post( id )
{
	if( !is_user_alive( id ) ) 
		return;
	
	if( is_user_admin( id ) )
	{
		set_user_health( id, 120 );
		printf( id,  "!g%s !teamEn hora buena! Recibiste !g120 !teamde HP por ser !gADMIN.", g_szPrefix );
	}
	tutorMake( id, TUTOR_GREEN, 3.0, "[%s] Plugin hecho por Hypnotize.'", g_szPrefix );
	printf( id,  "%s Plugin hecho por ^4Hypnotize.'^1.", g_szPrefix );
}
public Ham_PlayerKilled( const victim, const attacker, const shouldgib ) 
{
	if ( !is_user_connected( attacker ) ) 
		return HAM_IGNORED; 
	
	static MoristeSolo; MoristeSolo = ( victim == attacker || !IsValidConnected( attacker ) ) ? 1 : 0
	
	if( MoristeSolo )
		return HAM_IGNORED;
	
	for( new i = 0; i < cMAX_ARMA; ++i )
	{
		if( g_iRecogida[ victim ][ i ] > 0 )
			g_iRecogida[ victim ][ i ] = -1;
	}
	
	new szweapon[ 64 ]; read_data( 4, szweapon, charsmax( szweapon ) );
	static iUsersAlive, iGana2; iUsersAlive = fnAlive( ); iGana2 = 0;
	get_user_name( attacker, g_playername[ attacker ], sizeof(  g_playername[ ] ) );
	get_user_name( victim, g_playername[ victim ], sizeof(  g_playername[ ] ) );
	
	if( g_bCalentamiento )
	{
		set_task( 2.0, "fnRevivirJugador", victim );
	}
	else
	{
		if( g_iElo[ victim ] >= 6 )
		{
			if( get_pdata_int( victim, m_LastHitGroup, 5 ) == HIT_HEAD )
			{
				chequear_rango( attacker, 4, "!gGANASTE!y" );
				chequear_rango( victim, -2, "!gPERDISTE!y" );	
			}
			else if ( get_user_weapon( attacker ) == CSW_KNIFE )
			{
				chequear_rango( attacker, 3, "!gGANASTE!y" );
				chequear_rango( victim, -2, "!gPERDISTE!y" );	
			}
			else
			{
				chequear_rango( attacker, 1, "!gGANASTE!y" );
				chequear_rango( victim, -1, "!gPERDISTE!y" );		
			}
		}
		else if( g_iElo[ victim ] == 0 )
		{
			if( get_pdata_int( victim, m_LastHitGroup, 5 ) == HIT_HEAD ) chequear_rango( attacker, 3, "!gGANASTE!y" );
			else if ( get_user_weapon( attacker ) == CSW_KNIFE ) chequear_rango( attacker, 2, "!gGANASTE!y" );
			else chequear_rango( attacker, 1, "!gGANASTE!y" );
		} 
	}
	
	
	++g_iMatados[ attacker ][ victim ];
	++g_iMuertes[ victim ][ attacker ];
	
	if( g_iMuertes[ attacker ][ victim ] >= 3 ) 
	{
		printf(0,    "%s^4 %s^1 se a vengado de ^4%s^1.", g_szPrefix, g_playername[ attacker ], g_playername[ victim ] );
		printf(attacker,   "%s^4 %s^1 te has vengado de ^4%s^1.", g_szPrefix, g_playername[ attacker ], g_playername[ victim ] );
		tutorMake(attacker, TUTOR_RED, 3.0, "%s %s te has vengado de %s.", g_szPrefix, g_playername[ attacker ], g_playername[ victim ] );
		printf(victim,   "%s^4 %s^1 se ha vengado.", g_szPrefix, g_playername[ attacker ] );
		
		g_iMuertes[ attacker ][ victim ] = 0;
		g_iMatados[ victim ][ attacker ] = 0;
	}
	else if ( g_iMatados[ attacker ][ victim ] == 3 )
	{
		printf(0,  "%s^4 %s^1 Esta dominando a ^4%s^1.", g_szPrefix, g_playername[ attacker ], g_playername[ victim ] );
		printf(attacker,    "%s Estas dominando a ^4%s^1.", g_szPrefix, g_playername[ victim ] );
		tutorMake(attacker, TUTOR_RED, 3.0, "%s Estas dominando a %s.", g_szPrefix, g_playername[ victim ] );
		printf(victim,  "%s^4 %s^1 Te esta dominando.", g_szPrefix, g_playername[ attacker ] );
		
	}
	else if ( g_iMatados[ attacker ][ victim ] > 3 )    
	{
		printf(0,   "%s^4 %s^1 Sigue dominando a^4 %s^1.", g_szPrefix, g_playername[ attacker ], g_playername[ victim ] );
		printf(attacker,   "%s^1 Sigues dominando a^4 %s^1.", g_szPrefix, g_playername[ victim ] );
		tutorMake(attacker, TUTOR_RED, 3.0, "%s Sigues dominando a %s.", g_szPrefix, g_playername[ victim ] );
		printf(victim,   "%s^4 %s^1 Te sigue dominando.", g_szPrefix, g_playername[ attacker ] );
		
	}
	
	Efect(victim, 200, 0, 0, 1);
	
	
	fnCheckLogro( attacker, 0 );
	
	if( iUsersAlive == 1 )
	{
		++g_isArma[ attacker][ SOBREVIVE ];
		if( g_isArma[ attacker ][ SOBREVIVE ] >= 3 ) fnCheckLogro( attacker, 3 );
	}
	
	g_isArma[ victim ][ AP ] = g_isArma[ victim ][ SOBREVIVE ] = g_isArma[ victim ][ AS3 ] = 0;
	
	if( ++g_isArma[ attacker ][ AS3 ] >= 5 ) fnCheckLogro( attacker, 6 );
		
	if ( equali( szweapon, "usp" ) )
	{
		if( ++g_isArma[ attacker ][ USP ] >= 3 ) 
			fnCheckLogro( attacker, 1 );
	}
	else if ( equali( szweapon, "glock18" ) )
	{
		if( ++g_isArma[ attacker ][ GLOCK18 ] >= 15 )
			fnCheckLogro( attacker, 2 );
	}
	else if ( equali( szweapon, "knife" ) )
	{
		if( ++g_isArma[ attacker ][ KN1 ] >= 50 )
			fnCheckLogro( attacker, 7 );
	}
	else if ( equali( szweapon, "awp" ) )
	{
		if( ++g_isArma[attacker][AP] >= 3 )
			fnCheckLogro( attacker, 8 );
	}
	
	
	++g_isKills[ attacker ];
	++g_iFrag[ attacker ];
	
	iGana2 = 2 * g_iMultiplicador[ attacker ];
	g_iPuntos[ attacker ] += iGana2;
	printf( attacker, "!g%s !yGanaste !team%i !yPuntos.", g_szPrefix, iGana2 );
	
	fnLogrosKills( attacker );
	return HAM_IGNORED;
}
//****************************************************************************//

//------------------------------------------------------------------------------------------------

//***********************	SISTEMA DE RANGOS		**************************//

public chequear_rango( id, cant, msj[] )
{
	static level; level = g_iRango[ id ];
	
	g_iElo[ id ] += cant * g_iMultiplicador[ id ];
	printf( id,  "!g%s !team%s !g%d de ELO", g_szPrefix, msj, cant );
	
	while( g_iElo[ id ] >= rangos[ g_iRango[ id ] ][ nivel_requerido ] && g_iRango[ id ] < sizeof( rangos )-1 )
		++g_iRango[ id ];
	
	if( g_iRango[ id ] > 0 )
	{
		if( g_iElo[ id ] < rangos[ g_iRango[ id ]-1 ][ nivel_requerido ] && g_iRango[ id ] > 0 )
			--g_iRango[ id ];
	}
	if ( g_iRango[ id ] > level )
	{
		tutorMake(id, TUTOR_GREEN, 3.0, "[%s] Subiste al rango: %s.", g_szPrefix, rangos[ g_iRango[ id ] ][ rangos_nombre ])
		printf(id,   "%s Subiste al rango: ^4%s^1.", g_szPrefix, rangos[ g_iRango[ id ] ][ rangos_nombre ])
	}
	else if ( g_iRango[ id ] < level )
	{
		tutorMake(id, TUTOR_GREEN, 3.0, "[%s] Bajaste al rango: %s.", g_szPrefix, rangos[ g_iRango[ id ] ][ rangos_nombre ])
		printf(id,   "%s^x Bajaste al rango: ^4%s^1.", g_szPrefix, rangos[ g_iRango[ id ] ][ rangos_nombre ])
	}
	return cant;
} 

public ShowHUD( taskid )
{
	new id;
	id = ID_SHOWHUD;
	
	if ( !is_user_alive( id ) )
	{
		id = pev( id, pev_iuser2 );
		return;
	}
	
	set_hudmessage( 0, 212, 255, -1.0, 0.9, 0, 6.0, 1.1, 0.0, 0.0 );
	if( g_iRango[ id ] < sizeof( rangos ) -1 )
	{
	ShowSyncHudMsg( id, g_iHud, "Rango: [ %s ] - ELO %d/%d [ %0.2f%% ]^nKills: %d - Puntos: %d", 
	rangos[ g_iRango[ id ] ][ rangos_nombre ], g_iElo[ id ], rangos[ g_iRango[ id ] ][ nivel_requerido ], porcentaje( g_iElo[ id ], rangos[ g_iRango[ id ] ][ nivel_requerido ] ), g_isKills[ id ], g_iPuntos[ id ] );
	}
	else
	{
	ShowSyncHudMsg( id, g_iHud, "Rango: [ %s ] - ELO %d/%d [ %0.2f%% ]^nKills: %d - Puntos: %d", 
	rangos[ g_iRango[ id ]-1 ][ rangos_nombre ], g_iElo[ id ], rangos[ g_iRango[ id ]-1 ][ nivel_requerido ], porcentaje( g_iElo[ id ], rangos[ g_iRango[ id ]-1 ][ nivel_requerido ] ), g_isKills[ id ], g_iPuntos[ id ] );
	} 
}

public BlockSay( index )
{
	static said[ 191 ];
	read_args( said, charsmax( said ) );
	remove_quotes( said );
	replace_all( said, charsmax( said ), "%", " " ); 
	replace_all( said, charsmax( said ), "#", " " );
	
	if ( !ValidMessage( said, 1 ) ) return PLUGIN_CONTINUE;
	
	static color[ 11 ], prefix[ 91 ];
	get_user_team( index, color, charsmax( color ) );
	
	formatex( prefix, charsmax( prefix ), "%s ^x04%s^x01[ ^x04%s ^x01] ^x03%s", 
	is_user_alive( index ) ? "^x01" : "^x01*MUERTO* ",  g_iTipo[ index ], rangos[ g_iRango[ index ] ][ rangos_nombre ], g_playername[ index ]);
	
	if ( is_user_admin( index ) ) format( said, charsmax( said ), "^x04%s", said ); 
	
	format( said, charsmax( said ), "%s^x01 :  %s", prefix, said );
	
	static i, team[ 11 ];
	for ( i = 1; i <= g_iMaxplayers; i++ )
	{
		if ( !is_user_connected( i ) ) 
			continue;
		
		if (is_user_admin( i ) || is_user_alive( index ) && is_user_alive( i ) || !is_user_alive( index ) && !is_user_alive( i ) )
		{        
			get_user_team( i, team, charsmax( team ) );            
			changeTeamInfo( i, color );            
			writeMessage( i, said );
			changeTeamInfo( i, team );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

public changeTeamInfo( player, team[ ] )
{
	message_begin( MSG_ONE, get_user_msgid( "TeamInfo" ), _, player );
	write_byte( player );
	write_string( team );
	message_end( );
}

public writeMessage( player, message[] )
{
	message_begin( MSG_ONE, get_user_msgid( "SayText" ), {0, 0, 0}, player );
	write_byte( player);
	write_string( message);
	message_end( );
}

//****************************************************************************//

//------------------------------------------------------------------------------------------------

//***********************	SISTEMA DE LOGROS		**************************//

public menu_Logros( id )
{
	oldmenu_create( "handler_Logros", "\rMenu Logros^n\yCS:GO (BETA)" );
	oldmenu_additem( 1, 0, "\r1. \wLogros Kills" );
	oldmenu_additem( 2, 0, "\r3. \wLogros Especiales" );
	
	oldmenu_additem( 0, 0, "^n^n\r0. \wSalir" );
	oldmenu_display( id );
	
	return PLUGIN_HANDLED;
}

public handler_Logros( id, item, value, page)
{
	if ( item == MENU_EXIT ) 
		return PLUGIN_HANDLED;
	
	switch( item )
	{
		case 1: fnLogros( id );
		case 2: fnLogros2( id );
	}
	return PLUGIN_HANDLED;
}

public fnLogros( id )
{
	new menu = menu_create( "Menu de logros Por Kills", "handlerLogros" );
	for( new i = 0; i < sizeof(iLogrosKill); ++i )
	{
		if( g_isKills[ id ] >= iLogrosKill[ i ][ iNecesario ] )
			menu_additem( menu, iLogrosKill[ i ][ szLogro ] );
		else 
		{	
			formatex( g_isLen, charsmax( g_isLen ), "\d%s", iLogrosKill[ i ][ szLogro ] );
			menu_additem( menu, g_isLen );
		}
	}
	menu_setprop( menu, MPROP_EXITNAME, "Cerrar" );
	
	menu_display( id, menu )
	return PLUGIN_HANDLED;
}

public handlerLogros( id, menu, item )
{
	if ( item == MENU_EXIT ) 
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	fnViewLogros( id, iLogrosKill[ item ][ szLogro ], iLogrosKill[ item ][ szDescripcion ], iLogrosKill[ item ][ iNecesario ], g_isKills[ id ] );
	return PLUGIN_HANDLED;
}

public fnLogros2( id )
{
	new menu = menu_create( "Menu de logros", "MenuLogros_h" );
	for( new i = 0; i < sizeof(iLogros); ++i )
	{
		if( g_IsLogros[ id ][ i ] >= iLogros[ i ][ iNecesario ] )
			menu_additem( menu, iLogros[ i ][ szLogro ] );
		else 
		{	
			formatex( g_isLen, charsmax( g_isLen ), "\d%s", iLogros[ i ][ szLogro ] );
			menu_additem( menu, g_isLen );
		}
	}
	menu_setprop( menu, MPROP_EXITNAME, "Cerrar" );
	
	menu_display( id, menu )
	return PLUGIN_HANDLED;
}

public MenuLogros_h( id, menu, item )
{
	if ( item == MENU_EXIT ) 
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	fnViewLogros( id, iLogros[ item ][ szLogro ], iLogros[ item ][ szDescripcion ], iLogros[ item ][ iNecesario ], g_IsLogros[ id ][ item ] );
	return PLUGIN_HANDLED;
}

public fnViewLogros( id, nombrel[ ], desl[ ], porcentaje, faltante )
{
	oldmenu_create( "handler_sLogros", "\rLogro:" );
	
	
	oldmenu_additem( -1, 0, "\y%s", nombrel );
	oldmenu_additem( -1, 0, "\dDescripcion: \y%s", desl );
	oldmenu_additem( -1, 0, "\y%d/\r%d", faltante, porcentaje );
	oldmenu_additem( -1, 0, "\r%.1f", ( ( faltante/porcentaje ) * 100.0 ) );
	
	oldmenu_additem( 0, 0, "^n^n\r0. \wSalir" );
	oldmenu_display( id );
	return PLUGIN_HANDLED;
}

public handler_sLogros( id, item, value, page )
{
	if ( item == 0 ) 
		return PLUGIN_HANDLED;
	
	menu_Logros( id );
	return PLUGIN_HANDLED;
}

public fnCheckLogro( id, Lg )
{
	if ( g_IsLogros[ id ][ Lg ] ) return;
	
	g_IsLogros[ id ][ Lg ] = 1;
	
	if( g_IsLogros[ id ][ Lg ] ) g_iElo[ id ] += iLogros[ Lg ][ iGanancia ];//le damos recompenza
	
	if( g_iPuntos[ id ] >= 9000 )  fnCheckLogro( id, 4 );
	else if( g_iPuntos[ id ] >= 200000 )  fnCheckLogro( id, 5 );
	PlaySound( 0, g_szLogro );
} 

public fnLogrosKills( index )
{
	while( g_isKills[ index ] >= iLogrosKill[ g_iLogro[ index ]+1 ][ iNecesario ])
	{
		++g_iLogro[ index ];
		g_iElo[ index ] += iLogrosKill[ g_iLogro[ index ] ][ iGanancia ];
	}
}

//****************************************************************************//

//------------------------------------------------------------------------------------------------

//***********************	SISTEMA DE CUENTAS		**************************//

public ClientUserInfoChanged( id ) 
{ 
	static const name[ ] = "name";
	static szOldName[ 32 ], szNewName[ 32 ];
	pev( id, pev_netname, szOldName, charsmax( szOldName ) );
	
	if( szOldName[ 0 ] ) 
	{ 
		get_user_info( id, name, szNewName, charsmax( szNewName ) );
		if( !equal( szOldName, szNewName ) ) 
		{ 
			set_user_info( id, name, szOldName ); 
			return FMRES_HANDLED;
		} 
	} 
	return FMRES_IGNORED 
} 

public message_VGUIMenu( iMsgid, iDest, id ) 
{
	if( g_iEstado[ id ] >= CONECTADO ||  get_msg_arg_int( 1 ) != 2 ) 
		return PLUGIN_CONTINUE;
	
	return PLUGIN_HANDLED;
}

public message_ShowMenu( iMsgid, iDest, id ) 
{
	if( g_iEstado[ id ] >= CONECTADO )
		return PLUGIN_CONTINUE;
	
	static sMenuCode[ 33 ];
	get_msg_arg_string( 4, sMenuCode, charsmax( sMenuCode ) );
	
	if( containi( sMenuCode, "Team_Select" ) != -1 ) 
		return PLUGIN_HANDLED;
	
	return PLUGIN_CONTINUE;
}

public clcmd_changeteam( id ) 
{
	if( g_iEstado[ id ] == DESCONECTADO ) 
	{
		show_login_menu( id );
		
		return PLUGIN_HANDLED;
	}
	if( g_iEstado[ id ] == LOGUEADO ) 
	{
		fnPj( id );
		return PLUGIN_HANDLED;
	}
	if( g_iEstado[ id ] == JUGANDO ) 
	{
		fnPricipal( id );
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public show_login_menu( id ) 
{
	
	oldmenu_create( "login_menu", "BIENVENIDOS AL \yCS:GO + SKINS^nVersion: \r%s \w- \yCreador: \r%s", VERSION, AUTHOR );
	
	oldmenu_additem( -1, -1, "\r____________________________^n" );
	
	oldmenu_additem( 1, 0, "\r1. \wCREAR CUENTA");
	oldmenu_additem( 2, 0, "\r2. \wLOGUEAR CUENTA");
	
	oldmenu_additem( -1, -1, "^n\yCuentas Registradas: \r5" );
	oldmenu_display( id );
	
	return PLUGIN_HANDLED;
}

public login_menu( id, item, value, page )
{
	
	switch( item ) 
	{
		case 1: client_cmd( id, "messagemode CREAR_USUARIO" );
		case 2: client_cmd( id, "messagemode LOGUEAR_USUARIO" );
	}
	
	return PLUGIN_HANDLED;
}

public checkTop( id )
{
	new szTabla[ 200 ], iData[ 2 ];
	
	iData[ 0 ] = id;
	iData[ 1 ] = SQL_TOP;
	formatex( szTabla, charsmax( szTabla ), "SELECT Personaje, Rango, Elo FROM %s ORDER BY Rango DESC, Elo DESC LIMIT 15", g_szDatos );
	
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szTabla, iData, 2 );
	#else
	mysql_query( g_hConnection, "DataHandler", szTabla, iData, 2 );
	#endif
}
public checkRank( id )
{
	new szTabla[ 200 ], iData[ 2 ];
	
	iData[ 0 ] = id;
	iData[ 1 ] = SQL_RANK;
	formatex( szTabla, charsmax( szTabla ), "SELECT (COUNT(*) + 1) FROM `%s` WHERE `Rango` > '%d' OR (`Rango` = '%d' AND `Elo` > '%d')", g_szDatos, g_iRango[ id ], g_iRango[ id ], g_iElo[ id ] );
	
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szTabla, iData, 2 );
	#else
	mysql_query( g_hConnection, "DataHandler", szTabla, iData, 2 );
	#endif
}
public fnPj( id )
{
	new szQuery[ 700 ], iData[ 2 ];
	
	iData[ 0 ] = id;
	iData[ 1 ] = CARGAR_PJS;
	
	formatex( szQuery, charsmax( szQuery ), "SELECT Personaje FROM %s WHERE idDatos= %d", g_szDatos, g_id[ id ] );
	
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
	#else
	mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
	#endif
	return PLUGIN_CONTINUE;
}
public select_pj( id, menu, item ) 
{
	if( item == MENU_EXIT )
	{
		menu_destroy( menu );
		return PLUGIN_HANDLED;
	}
	
	new szData[ 2 ], Item[ 400 ], szName[ 33 ];
	new item_access, item_callback;
	menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), Item, charsmax(Item), item_callback );
	
	new szQuery[ 700 ], iData[ 2 ];
	iData[ 0 ] = id;
	
	if( equal( Item, DISPONIBLE ) )
	{
		iData[ 1 ] = INSERTAR_PJ;
		
		formatex( szQuery, charsmax( szQuery ), "insert into %s (idDatos, Personaje) values(%d, ^"%s^")", g_szDatos, g_id[ id ], g_playername[ id ]);
		#if defined SQL_SYSTEM
		SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
		#else
		mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
		#endif
	}
	else
	{
		get_user_name( id, szName, charsmax( szName ) );
		
		if( equal( Item, szName ) )
		{
			iData[ 1 ] = LOGUEAR_PJ;
			
			formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Personaje=^"%s^"", g_szDatos, Item );
			#if defined SQL_SYSTEM
			SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
			#else
			mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
			#endif
		}
		else
		{
			fnPj( id );
			printf( id, "!g%s!team TU NICK NO ES IGUAL, HAZ RETRY O CREA UN NUEVO PERSONAJE PARA USAR ESE NICK", g_szPrefix );
		}
	}
	return PLUGIN_HANDLED;
}

public reg_usuario( id ) 
{
	read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) );
	remove_quotes( g_usuario[ id ] );
	trim( g_usuario[ id ] );
	#if AMXX_VERSION_NUM < 183
	md5( g_usuario[ id ], g_usuario[ id ] );
	#else
	hash_string( g_usuario[ id ], Hash_Md5, g_szHashUser[ id ], charsmax( g_szHashUser[] ) );
	#endif
	client_cmd( id, "messagemode CREAR_PASSWORD" );
	
	return PLUGIN_HANDLED;
}

public reg_password( id ) 
{
	read_args( g_password[ id ], charsmax( g_password[ ] ) );
	remove_quotes( g_password[ id ] );
	trim( g_password[ id ] );
	#if AMXX_VERSION_NUM < 183
	md5( g_password[ id ], g_password[ id ] );
	#else
	hash_string( g_password[ id ], Hash_Md5, g_szHashPass[ id ], charsmax( g_szHashPass[] ) );
	#endif
	
	new szQuery[ 700 ], iData[ 2 ];
	
	iData[ 0 ] = id;
	iData[ 1 ] = REGISTRAR_CUENTA;
	
	get_user_name( id, g_playername[ id ], charsmax( g_playername[ ] ) );
	#if AMXX_VERSION_NUM < 183
	formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password) VALUES (^"%s^", ^"%s^")", g_szCuentas, g_usuario[ id ], g_password[ id ] );
	#else
	formatex( szQuery, charsmax( szQuery ), "INSERT INTO %s (Usuario, Password) VALUES (^"%s^", ^"%s^")", g_szCuentas, g_szHashUser[ id ], g_szHashPass[ id ] );
	#endif
	
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
	#else
	mysql_query(g_hConnection, "DataHandler", szQuery, iData, 2);
	#endif
	
	return PLUGIN_HANDLED;
}

public log_usuario( id ) 
{
	read_args( g_usuario[ id ], charsmax( g_usuario[ ] ) );
	remove_quotes( g_usuario[ id ] );
	trim( g_usuario[ id ] );
	#if AMXX_VERSION_NUM < 183
	md5( g_usuario[ id ], g_usuario[ id ] );
	#else
	hash_string( g_usuario[ id ], Hash_Md5, g_szHashUser[ id ], charsmax( g_szHashUser[] ) );
	#endif
	
	client_cmd( id, "messagemode LOGUEAR_PASSWORD" );
	
	return PLUGIN_HANDLED;
}

public log_password( id ) 
{
	read_args( g_password[ id ], charsmax( g_password[ ] ) );
	remove_quotes( g_password[ id ] );
	trim( g_password[ id ] );
	#if AMXX_VERSION_NUM < 183
	md5( g_password[ id ], g_password[ id ] );
	#else
	hash_string( g_password[ id ], Hash_Md5, g_szHashPass[ id ], charsmax( g_szHashPass[] ) );
	#endif
	new szQuery[ 700 ], iData[ 2 ];
	
	iData[ 0 ] = id;
	iData[ 1 ] = LOGUEAR_CUENTA;
	
	#if AMXX_VERSION_NUM < 183
	formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^"", g_szCuentas, g_usuario[ id ], g_password[ id ] );
	#else
	formatex( szQuery, charsmax( szQuery ), "SELECT * FROM %s WHERE Usuario=^"%s^" AND Password=^"%s^"", g_szCuentas, g_szHashUser[ id ], g_szHashPass[ id ] );
	#endif
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
	#else
	mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
	#endif
	
	return PLUGIN_HANDLED;
}

new szQuery[ 3000 ], iData[ 2 ], len = 0;
new szgLogros[ 300 ], szARMAS[ 300 ], szM4[ 300 ], szDeagle[ 300 ], szAwp[ 300 ], szGlock[ 300 ], szAk[ 300 ], szUsp[ 300 ], szArmas[ 100 ];

public guardar_datos( id ) 
{
	if( g_idCuenta[ id ] != g_id[ id ] )
	{
		printf( id, "!team[ !gCSGO !team] !yTU !gID_CUENTA %d!y NO ES IGUAL A TU !gID_PJ %d", g_id[ id ], g_idCuenta[ id ] );
		return;
	}
	
	/*static szQuery[ 3000 ], iData[ 2 ], len = 0;
	static szgLogros[ 300 ], szARMAS[ 300 ], szM4[ 300 ]//, szDeagle[ 300 ], szAwp[ 300 ];
*/
	//arrayset( szM4, EOS, charsmax( szM4 ) );
	//arrayset( szARMAS, EOS, charsmax( szARMAS ) );
	iData[ 0 ] = id;
	iData[ 1 ] = GUARDAR_DATOS;

	arraynum_to_str( g_IsLogros[ id ], sizeof( g_IsLogros[ ] ), szgLogros, charsmax( szgLogros ), true );
	arraynum_to_str( g_iComprada[ id ][ cKNIFES ], 25, szARMAS, charsmax( szARMAS ), true );
	arraynum_to_str( g_iComprada[ id ][ cM4A1 ], 25, szM4, charsmax( szM4 ), true );
	arraynum_to_str( g_iComprada[ id ][ cAWP ], 25, szAwp, charsmax( szAwp ), true );
	arraynum_to_str( g_iComprada[ id ][ cDEAGLE ], 25, szDeagle, charsmax( szDeagle ), true );
	
	arraynum_to_str( g_iComprada[ id ][ cGLOCK18 ], 25, szGlock, charsmax( szGlock ), true );
	arraynum_to_str( g_iComprada[ id ][ cAK47 ], 25, szAk, charsmax( szAk ), true );
	arraynum_to_str( g_iComprada[ id ][ cUSP ], 25, szUsp, charsmax( szUsp ), true );
	arraynum_to_str( g_iElegida[ id ], sizeof( g_iElegida[ ] ), szArmas, charsmax( szArmas ), true );
	
	formatex( szQuery, charsmax( szQuery ), "UPDATE %s SET Logros= ^"%s^", Kills= %d, Elo= %d, Logro= %d, Puntos= %d, Rango= %d, Knifes= ^"%s^", M4= ^"%s^", Awp= ^"%s^", Deagle= ^"%s^", Glock= ^"%s^", Ak= ^"%s^", Usp= ^"%s^", armas= ^"%s^" WHERE idDatos ='%d' AND Personaje = ^"%s^"", 
	g_szDatos, szgLogros, g_isKills[ id ], g_iElo[ id ], g_iLogro[ id ], g_iPuntos[ id ], g_iRango[ id ], szARMAS, szM4, szAwp, szDeagle, szGlock, szAk, szUsp, szArmas, g_id[ id ], g_playername[ id ] );
	
	#if defined SQL_SYSTEM
	SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
	#else
	mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
	#endif
	
}


#if defined SQL_SYSTEM
public DataHandler(failstate, Handle:Query, error[], error2, data[], size, Float:queuetime)
{
	#else
	public DataHandler( failstate, error[], error2, data[], size, Float:queuetime )
	{
		#endif
		static id; id = data[ 0 ];
		
		if( !is_user_connected( id ) ) return;
		
		switch( failstate ) {
			case TQUERY_CONNECT_FAILED: 
			{
				log_to_file( "SQL_LOG_TQ.txt", "Error en la conexion al MySQL [%i]: %s", error2, error );
				return;
			}
			case TQUERY_QUERY_FAILED: log_to_file( "SQL_LOG_TQ.txt", "Error en la consulta al MySQL [%i]: %s", error2, error );
		}
		
		switch( data[ 1 ] ) 
		{
			case REGISTRAR_CUENTA: 
			{
				if( failstate < TQUERY_SUCCESS ) 
				{
					if( containi( error, "Usuario" ) != -1 )
						printf( id,  "%s El usuario ya existe.", g_szPrefix );
					
					else if( containi( error, "Pj" ) != -1 ) printf( id,  "%s El nombre de personaje esta en uso.", g_szPrefix );
					else printf( id,  "%s Error al crear la cuenta. Intente nuevamente.", g_szPrefix );
					
					client_cmd( id, "spk buttons/button10.wav" );
					
					show_login_menu( id );
				}
				else 
				{
					new szQuery[ 128 ], iData[ 2 ];
					
					iData[ 0 ] = id;
					iData[ 1 ] = CARGAR_DATOS;
					#if AMXX_VERSION_NUM < 183
					formatex( szQuery, charsmax( szQuery ), "SELECT idCuenta FROM %s WHERE Usuario=^"%s^"", g_szCuentas, g_usuario[ id ] );
					#else
					formatex( szQuery, charsmax( szQuery ), "SELECT idCuenta FROM %s WHERE Usuario=^"%s^"", g_szCuentas, g_szHashUser[ id ] );
					#endif
					
					#if defined SQL_SYSTEM
					SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
					#else
					mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
					#endif
				}
				
			}
			case LOGUEAR_CUENTA: 
			{
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					g_iEstado[ id ] = LOGUEADO;
					
					g_id[ id ] = SQL_ReadResult( Query, 0 );
					
					fnPj( id );
				}
				#else
				if( mysql_num_results( ) ) 
				{
					g_iEstado[ id ] = LOGUEADO;
					
					g_id[ id ] = mysql_read_result( 0 );
					
					fnPj( id );
				}
				#endif
				else 
				{
					printf( id,  "[ %s ] Usuario o Contraseñ incorrecta.", g_szPrefix );
					client_cmd( id, "spk buttons/button10.wav" );
					
					show_login_menu( id );
				}
			}
			case GUARDAR_DATOS: 
			{
				if( failstate < TQUERY_SUCCESS ) console_print( id, "%s Error en el guardado de datos.", g_szPrefix );
				else console_print( id, "%s Datos guardados.", g_szPrefix );
			}
			case INSERTAR_PJ:
			{
				if( failstate < TQUERY_SUCCESS ) 
				{
					if( containi( error, "Personaje" ) != -1 ) printf( id,  "%s El nombre de personaje esta en uso.", g_szPrefix );
					else printf( id,  "%s Error al crear la cuenta. Intente nuevamente.", g_szPrefix );
					
					client_cmd( id, "spk buttons/button10.wav" );
				}
				else 
				{
					printf( id,  "%s Tu Personaje ha sido creada correctamente.", g_szPrefix );
					
					new szQuery[ 700 ], iData[ 2 ];
					
					iData[ 0 ] = id;
					iData[ 1 ] = CARGAR_DATOS2;
					
					formatex( szQuery, charsmax( szQuery ), "SELECT idDatos FROM %s WHERE Personaje=^"%s^"", g_szDatos, g_playername[ id ] );
					#if defined SQL_SYSTEM
					SQL_ThreadQuery(g_hTuple, "DataHandler", szQuery, iData, 2);
					#else
					mysql_query( g_hConnection, "DataHandler", szQuery, iData, 2 );
					#endif
				}
			}
			case CARGAR_PJS:
			{
				new text[ 500 ]; formatex( text, charsmax( text ), "\r[ \wMENU DE \yPERSONAJES \r]^n^n\r____________________________^n");
				g_iMenuPj = menu_create( text, "select_pj" );
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					new pj[ 300 ], iPosition = 0;
					
					while( SQL_MoreResults( Query ) )
					{
						SQL_ReadResult( Query, 0, pj, sizeof( pj ) );
						menu_additem(g_iMenuPj, pj);
						++iPosition;
						
						SQL_NextRow( Query );
					}
					if( iPosition < 5 ) menu_additem( g_iMenuPj, "DISPONIBLE" );
				}
				#else
				if( mysql_num_results() ) 
				{
					new pj[ 300 ], iPosition = 0;
					
					while( mysql_more_results( ) )
					{
						mysql_read_result( 0, pj, sizeof( pj ) );
						menu_additem(g_iMenuPj, pj);
						++iPosition;
						
						mysql_next_row( );
					}
					if( iPosition < 5 ) menu_additem( g_iMenuPj, "DISPONIBLE" );
				}
				#endif
				else 
				{
					menu_additem( g_iMenuPj, "DISPONIBLE" );
				}
				menu_display( id, g_iMenuPj );
			}
			case LOGUEAR_PJ:
			{
				new sztLogro[ 330 ], szARMAS[ 300 ], szM4[ 300 ], szDeagle[ 300 ], szAwp[ 300 ], szGlock[ 300 ], szAk[ 300 ], szUsp[ 300 ], szArmas[ 100 ];
				
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					g_idCuenta[ id ] = SQL_ReadResult( Query, 1 );
					SQL_ReadResult( Query, 2, g_playername[ id ], charsmax( g_playername[ ] ) );
					SQL_ReadResult( Query, 3, sztLogro, charsmax( sztLogro ) );
					g_isKills[ id ] = SQL_ReadResult( Query, 4 );
					g_iElo[ id ] = SQL_ReadResult( Query, 5 );
					g_iLogro[ id ] = SQL_ReadResult( Query, 6 );
					g_iPuntos[ id ] = SQL_ReadResult( Query, 7 );
					g_iRango[ id ] = SQL_ReadResult( Query, 8 );
					SQL_ReadResult( Query, 9, szARMAS, charsmax( szARMAS ) );
					SQL_ReadResult( Query, 10, szM4, charsmax( szM4 ) );
					SQL_ReadResult( Query, 11, szDeagle, charsmax( szDeagle ) );
					SQL_ReadResult( Query, 12, szAwp, charsmax( szAwp ) );
					SQL_ReadResult( Query, 13, szGlock, charsmax( szGlock ) );
					SQL_ReadResult( Query, 14, szAk, charsmax( szAk ) );
					SQL_ReadResult( Query, 15, szUsp, charsmax( szUsp ) );
					SQL_ReadResult( Query, 16, szArmas, charsmax( szArmas ) );
					
					str_to_arraynum( sztLogro, g_IsLogros[ id ], sizeof( g_IsLogros[ ] ) );
					str_to_arraynum( szARMAS, g_iComprada[ id ][ cKNIFES ], 25 );
					str_to_arraynum( szM4, g_iComprada[ id ][ cM4A1 ], 25 );
					str_to_arraynum( szDeagle, g_iComprada[ id ][ cDEAGLE ], 25 );
					str_to_arraynum( szAwp, g_iComprada[ id ][ cAWP ], 25 );
					str_to_arraynum( szM4, g_iComprada[ id ][ cGLOCK18 ], 25 );
					str_to_arraynum( szDeagle, g_iComprada[ id ][ cAK47 ], 25 );
					str_to_arraynum( szAwp, g_iComprada[ id ][ cUSP ], 25 );
					str_to_arraynum( szArmas, g_iElegida[ id ], sizeof( g_iElegida[ ] ) );
					
					func_login_success( id );
				}
				#else
				if( mysql_num_results() ) 
				{
					g_idCuenta[ id ] = mysql_read_result( 1 );
					mysql_read_result( 2, g_playername[ id ], charsmax( g_playername[ ] ) );
					mysql_read_result( 3, sztLogro, charsmax( sztLogro ) );
					g_isKills[ id ] = mysql_read_result( 4 );
					g_iElo[ id ] = mysql_read_result( 5 );
					g_iLogro[ id ] = mysql_read_result( 6 );
					g_iPuntos[ id ] = mysql_read_result( 7 );
					g_iRango[ id ] = mysql_read_result( 8 );
					mysql_read_result( 9, szARMAS, charsmax( szARMAS ) );
					mysql_read_result( 10, szM4, charsmax( szM4 ) );
					mysql_read_result( 11, szDeagle, charsmax( szDeagle ) );
					mysql_read_result( 12, szAwp, charsmax( szAwp ) );
					mysql_read_result( 13, szGlock, charsmax( szGlock ) );
					mysql_read_result( 14, szAk, charsmax( szAk ) );
					mysql_read_result( 15, szUsp, charsmax( szUsp ) );
					mysql_read_result( 16, szArmas, charsmax( szArmas ) );
					
					str_to_arraynum( sztLogro, g_IsLogros[ id ], sizeof( g_IsLogros[ ] ) );
					str_to_arraynum( szARMAS, g_iComprada[ id ][ cKNIFES ], 15 );
					str_to_arraynum( szM4, g_iComprada[ id ][ cM4A1 ], 25 );
					str_to_arraynum( szDeagle, g_iComprada[ id ][ cDEAGLE ], 25 );
					str_to_arraynum( szAwp, g_iComprada[ id ][ cAWP ], 25 );
					str_to_arraynum( szM4, g_iComprada[ id ][ cGLOCK18 ], 25 );
					str_to_arraynum( szDeagle, g_iComprada[ id ][ cAK47 ], 25 );
					str_to_arraynum( szAwp, g_iComprada[ id ][ cUSP ], 25 );
					str_to_arraynum( szArmas, g_iElegida[ id ], sizeof( g_iElegida[ ] ) );
					
					func_login_success( id );
				}
				#endif
				else 
				{
					printf( id,  "%s Personaje incorrecto.", g_szPrefix );
					client_cmd( id, "spk buttons/button10.wav" );
				}
			}
			case CARGAR_DATOS:
			{
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					g_id[ id ] = SQL_ReadResult( Query, 0 );
					
					arrayset( g_IsLogros[ id ], 0, sizeof( g_IsLogros[ ] ) );
					arrayset( g_iElegida[ id ], 0, sizeof( g_iElegida[ ] ) );
					arrayset( g_iRecogida[ id ], -1, sizeof( g_iRecogida[ ] ) );
					
					g_iPuntos[ id ] = g_iFrag[ id ] = g_iRango[ id ] = g_iLogro[ id ] = g_isKills[ id ] = 0;
					
					fnPj( id );
				}
				#else
				if( mysql_num_results() ) 
				{
					g_id[ id ] = mysql_read_result( 0 );
					
					arrayset( g_IsLogros[ id ], 0, sizeof( g_IsLogros[ ] ) );
					arrayset( g_iElegida[ id ], 0, sizeof( g_iElegida[ ] ) );
					arrayset( g_iRecogida[ id ], -1, sizeof( g_iRecogida[ ] ) );
					
					g_iPuntos[ id ] = g_iFrag[ id ] = g_iRango[ id ] = g_iLogro[ id ] = g_isKills[ id ] = 0;
					
					fnPj( id );
				}
				#endif
				else 
				{
					printf( id,  "%s Error al cargar los datos, intente nuevamente.", g_szPrefix );
					show_login_menu( id );
				}
				
			}
			case CARGAR_DATOS2:
			{
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					g_iEstado[ id ] = LOGUEADO;
					g_idCuenta[ id ] = SQL_ReadResult( Query, 0 );
					
					func_login_success( id );
				}
				#else
				if( mysql_num_results() ) 
				{
					g_iEstado[ id ] = LOGUEADO;
					g_idCuenta[ id ] = mysql_read_result( 0 );
					
					func_login_success( id );
				}
				#endif
				else 
				{
					printf( id,  "%s Error al cargar los datos, intente nuevamente.", g_szPrefix );
					show_login_menu( id );
				}
			}
			case SQL_RANK:
			{
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
					printf( id,  "^4%s^1 Tu Rank es ^4%i", g_szPrefix, SQL_ReadResult( Query, 0 ) );
				#else
				if( mysql_num_results() )
					printf( id,  "^4%s^1 Tu Rank es ^4%i", g_szPrefix, mysql_read_result( 0 ) );
				#endif
			}
			case SQL_TOP:
			{
				new len = 0, szBuffer[ 1024 ], iPosition, szName[ 33 ], iRng, iEloo;
				#if defined SQL_SYSTEM
				if( SQL_NumResults( Query ) ) 
				{
					len = format(szBuffer[len], charsmax(szBuffer) - len, 
					"<STYLE>body{background:#232323;color:#cfcbc2;font-family:sans-serif}table{width:100%%;line-height:160%%;font-size:12px}.q{border:1px solid #4a4945}.b{background:#2a2a2a}</STYLE><table cellpadding=2 cellspacing=0 border=0>");
					len += format(szBuffer[len], charsmax(szBuffer) - len, "<tr  align=center bgcolor=#52697B><th width=5%%> # <th width=22%% align=left> Personaje <th width=10%%> Rango <th width=13%%> Insignea <th width=13%%> Elo");
					
					while( SQL_MoreResults( Query ) )
					{
						++iPosition;

						SQL_ReadResult( Query, 0, szName, charsmax( szName ) );
						iRng = SQL_ReadResult( Query, 1 );
						iEloo = SQL_ReadResult( Query, 2 );

						len += format( szBuffer[ len ], charsmax( szBuffer ) - len, "<tr align=center%s><td> %d <td align=left> %s <td> %s <td> <img src= ^"%s^"> <td> %d ", ((iPosition%2)==0) ? "" : " bgcolor=#2f3030", iPosition, szName, rangos[ iRng ][ rangos_nombre ], rangos[ iRng ][ url_foto ], iEloo );
					
						SQL_NextRow( Query );
					}
					show_motd( id, szBuffer, "Top 15 Rangos" );
				}
				else
				#else
				if( mysql_num_results() )
				{
					len = format(szBuffer[len], charsmax(szBuffer) - len, 
					"<STYLE>body{background:#232323;color:#cfcbc2;font-family:sans-serif}table{width:100%%;line-height:160%%;font-size:12px}.q{border:1px solid #4a4945}.b{background:#2a2a2a}</STYLE><table cellpadding=2 cellspacing=0 border=0>");
					len += format(szBuffer[len], charsmax(szBuffer) - len, "<tr  align=center bgcolor=#52697B><th width=5%%> # <th width=22%% align=left> Personaje <th width=10%%> Rango <th width=13%%> Insignea <th width=13%%> Elo");
					
					while( mysql_more_results( ) )
					{
						++iPosition;

						mysql_read_result( 0, szName, charsmax( szName ) );
						iRng = mysql_read_result( 1 );
						iEloo = mysql_read_result( 2 );

						len += format( szBuffer[ len ], charsmax( szBuffer ) - len, "<tr align=center%s><td> %d <td align=left> %s <td> %s <td> <img src= ^"%s^"> <td> %d", ((iPosition%2)==0) ? "" : " bgcolor=#2f3030", iPosition, szName, rangos[ iRng ][ rangos_nombre ], rangos[ iRng ][ url_foto ], iEloo );
					
						mysql_next_row( );
					}
					show_motd( id, szBuffer, "Top 15 Rangos" );
				}
				else
				#endif
				{
					printf( id,  "^4%s^1 EL TOP15 ESTA VACIO", g_szPrefix );
				}
			}
		}
	}
	
	public func_login_success( id )
	{
		if( is_user_connected(id) )
		{
			static iRestore; iRestore = get_pdata_int( id, m_iVGUI );
			
			if( iRestore & (1<<0) )
				set_pdata_int( id, m_iVGUI, iRestore & ~(1<<0) );
			
			set_pdata_int( id, 365, 0 );
			set_msg_block( g_msgShowMenu, BLOCK_SET );
			set_msg_block( g_msgVGUIMenu, BLOCK_SET );
			
			engclient_cmd( id, "jointeam", "5" );
			engclient_cmd( id, "joinclass", "5" );
			
			set_msg_block( g_msgShowMenu, BLOCK_NOT );
			set_msg_block( g_msgVGUIMenu , BLOCK_NOT );
			
			if( iRestore & (1<<0) ) 
				set_pdata_int( id, m_iVGUI, iRestore );
			
			set_task( 1.0, "ShowHUD", id+TASK_SHOWHUD, _, _, "b" );
			
			guardar_datos( id );
			chequear_rango( id, 0, "GANASTE" );
			
			g_iEstado[ id ] = JUGANDO;
		}
	} 
	
	public event_round_start( ) 
	{
		for( new i = 1; i <= g_iMaxplayers; i++ ) 
		{
			if( g_iEstado[ i ] == JUGANDO && is_user_connected( i ) )
			{
				guardar_datos( i );
				
				g_iFrag[ i ] = 0;
			}
		}
		g_iDefuse = g_iPlanted = false;
	}        
	
	#if defined SQL_SYSTEM
	public MySQLx_Init( )
	{
		new get_type[ 12 ];
		
		SQL_SetAffinity( "sqlite" );
		
		SQL_GetAffinity( get_type, sizeof get_type );
		
		if( !equali( get_type, "sqlite" ) )
		{
			log_to_file( "SQLITE_ERROR.txt", "Error de conexion" );
			return pause( "a" );
		}
		
		g_hTuple = SQL_MakeDbTuple( "", "", "", g_szDBSQL );
		
		new szTabla[ 4000 ];
		new len = 0;
		
		len += formatex(szTabla[len], charsmax(szTabla) - len, "CREATE TABLE IF NOT EXISTS %s", g_szCuentas);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "( idCuenta INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Usuario varchar NOT NULL UNIQUE,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Password varchar NOT NULL )");
		
		SQL_ThreadQuery(g_hTuple, "QueryCreateTable", szTabla);
		
		arrayset(szTabla, EOS, sizeof( szTabla ) ); len = 0;
		
		len += formatex(szTabla[len], charsmax(szTabla) - len, "CREATE TABLE IF NOT EXISTS %s", g_szDatos);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "( idRegistro INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "idDatos integer not null,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Personaje varchar not null UNIQUE default '%s', ", DISPONIBLE);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Logros varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Kills integer not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Elo integer not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Logro integer not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Puntos integer not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Rango integer not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Knifes varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "M4 varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Deagle varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Awp varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Glock varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "AK varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Usp varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "armas varchar(225) ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, ") ");
		SQL_ThreadQuery(g_hTuple, "QueryCreateTable", szTabla);
		
		arrayset(szTabla, EOS, sizeof( szTabla ) ); len = 0;
		return PLUGIN_CONTINUE
		
	}
	public plugin_end( ) SQL_FreeHandle( g_hTuple );
	#else
	public MySQLx_Init( )
	{
		g_hTuple = mysql_makehost(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DATEBASE)
		
		new error[32], errnum;
		g_hConnection = mysql_connect(g_hTuple, errnum, error, 31);
		
		if(errnum)
		{
			log_to_file("mysqlt.log", "ERROR1: [%d]- [%s]", errnum, error)
			return pause( "a" );
		}
		
		new szTabla[ 4000 ];
		new len = 0;
		
		len += formatex(szTabla[len], charsmax(szTabla) - len, "CREATE TABLE IF NOT EXISTS %s", g_szCuentas);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "( idCuenta INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Usuario varchar(34) NOT NULL UNIQUE KEY,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Password varchar(34) NOT NULL )");
		
		mysql_query(g_hConnection, "QueryCreateTable", szTabla);
		
		arrayset(szTabla, EOS, sizeof( szTabla ) ); len = 0;
		
		len += formatex(szTabla[len], charsmax(szTabla) - len, "CREATE TABLE IF NOT EXISTS %s", g_szDatos);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "( idRegistro INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "idDatos int(50) not null,");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Personaje varchar(34) not null UNIQUE KEY default '%s',", DISPONIBLE);
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Logros varchar(225), " );
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Kills int(50) not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Elo int(50) not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Logro int(50) not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Puntos int(50) not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Rango int(50) not null default '0', ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Knifes varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "M4 varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Deagle varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Awp varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Glock varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "AK varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "Usp varchar(225), ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, "armas varchar(225) ");
		len += formatex(szTabla[len], charsmax(szTabla) - len, ") ");
		
		mysql_query(g_hConnection, "QueryCreateTable", szTabla);
		
		arrayset(szTabla, EOS, sizeof( szTabla ) ); len = 0;
		
		return PLUGIN_CONTINUE;
	}	
	#endif
	
	#if defined SQL_SYSTEM
	public QueryCreateTable(failstate, Handle:Query, error[], error2, data[], DataSize)
	{
		#else
		public QueryCreateTable(failstate, error[], error2, data[], size, Float:queuetime)
		{
			#endif
			switch ( failstate )
			{
				case TQUERY_CONNECT_FAILED: log_to_file("SQL_LOG_TQ.txt", "Failed to connect to database [%i]: %s", error2, error)
				case TQUERY_QUERY_FAILED: log_to_file("SQL_LOG_TQ.txt", "Error on query for creating table [%i]: %s", error2, error)
			}
			
			return PLUGIN_HANDLED;
		}
//****************************************************************************//

//---------------------------------------------------------------------------


//****************************		STOCKS		****************************//

stock fnAlive( )
{
	static at;
	for( new i = 1; i <= g_iMaxplayers; ++i )
	{
		if( is_user_alive( i ) ) 
			++at;
	}
	return at;
}

PlaySound( const id, const sound[ ] ) 
{
	client_cmd( id, "%s ^"%s^"", !IsMp3( sound ) ? "spk" : "mp3 play", sound );
}

IsMp3( const szSound[ ] ) return equali( szSound[ strlen( szSound ) - 4 ], ".mp3" );
stock precache_player_Sound( const soundd[ ] ) 
{ 
	if ( IsMp3(soundd) ) engfunc( EngFunc_PrecacheGeneric, soundd );
	else precache_sound( soundd );
	
}
arraynum_to_str(array[], arraysize, output[], len, trim_end)
{
    new i, _len

    do {
        _len += formatex(output[_len], len-_len, "%d ", array[i])
    } while(++i < arraysize && _len < len)
    
    if(i < arraysize) return 0 // ERROR
    
    if(trim_end) output[_len-1] = '^0'
    
    return _len
}

str_to_arraynum(strnum[], array_out[], array_size)
{
    new len, j, k, c, temp[12]
    
    while(strnum[len])
    {
        if(strnum[len] == ' ')
        {
            array_out[j++] = str_to_num(temp)

            for(c = 0; c < k; c++) temp[c] = 0
            k = 0
        }
        if(j >= array_size) return len

        temp[k++] = strnum[len++]
    }

    array_out[j++] = str_to_num(temp)
    while(j < array_size) array_out[j++] = 0
    
    return len
} 

stock Efect( id, rr, gg, bb, tt )
{
	message_begin( MSG_ONE_UNRELIABLE, g_iScreenFade, {0,0,0}, id );
	write_short( 10<<12 );
	write_short( 10<<16 );
	write_short( 1<<1 );
	write_byte( rr );
	write_byte( gg );
	write_byte( bb );
	write_byte( random_num(60, 255) );
	message_end();
	
	if (tt == 1)
	{
		set_pev(id, pev_iuser1, 0);
		set_pev(id, pev_gravity, 3.0); 
		set_pev(id, pev_maxspeed, 10);
	}
}
stock ValidMessage( text[ ], maxcount ) 
{
	static len, i, count;
	len = strlen(text);
	count = 0;
	
	if (!len) return false;
	
	for (i = 0; i < len; i++) 
	{
		if (text[i] != ' ') 
		{
			count++
			if (count >= maxcount)
				return true;
		}
	}
	
	return false;
} 

stock tutorMake( id, TutorColor:Colorz, Float:fTime = 0.0, const szText[], any:... )
{
	new szMessage[ 512 ];
	vformat( szMessage, charsmax( szMessage ), szText, 5 );
	
	if( !id )
	{
		message_begin( MSG_ALL,g_iMsgTutor );
		write_string( szMessage );
		write_byte( 0 );
		write_short( 0 );
		write_short( 0 );
		write_short( 1<<_:Colorz );
		message_end( );
	}
	else if(is_user_connected(id))
	{
		message_begin( MSG_ONE_UNRELIABLE, g_iMsgTutor, _, id );
		write_string( szMessage );
		write_byte( 0 );
		write_short( 0 );
		write_short( 0 );
		write_short( 1<<_:Colorz );
		message_end( );
	}
	
	if( fTime != 0.0 )
	{
		if( !id ){
			for( new i = 1; i <= g_iMaxplayers; ++i )
				remove_task( i+TASK_TUTOR );
			
			
			set_task( fTime,"tutorClose",TASK_TUTOR );
		}
		else
		{
			remove_task( id+TASK_TUTOR );
			set_task( fTime,"tutorClose",id+TASK_TUTOR );
		}
	}
}

public tutorClose( iTask )
{
	new id = iTask - TASK_TUTOR;
	
	if( !id )
	{
		message_begin( MSG_ALL,g_iMsgTutClose );
		message_end();
	}
	else if( is_user_connected( id ) )
	{
		message_begin( MSG_ONE_UNRELIABLE,g_iMsgTutClose,_,id );
		message_end( );
	}
}

stock Hud(id, txt[], rrr, ggg, bbb, Float:Time)
{
	set_hudmessage(rrr, ggg, bbb, -1.0, -1.0, 0, Time, 5.0, 1.0, 1.0);
	show_hudmessage(id, "%s", txt);
} 

stock fm_cs_get_weapon_ent_owner(ent)
{
    if (pev_valid(ent) != 2)
        return -1;
    
    return get_pdata_cbase(ent, 41, 4);
}

stock printf(id, const input[], any:...)
{
	static szMsg[191], msgSayText;
	
	if (!msgSayText)
		msgSayText = get_user_msgid("SayText");
	
	vformat(szMsg, 190, input, 3);
	
	replace_all(szMsg, 190, "!g", "^4");
	replace_all(szMsg, 190, "!y", "^1");
	replace_all(szMsg, 190, "!team", "^3");
	
	message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, msgSayText, .player = id);
	write_byte(id ? id : 33);
	write_string(szMsg);
	message_end();
} 

//****************************************************************************//

Last edited by Colombinus; 05-03-2022 at 12:11.
Colombinus is offline