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();
}
//****************************************************************************//