AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help Error: Expected token: "}", but found "-string-" on line 45 (https://forums.alliedmods.net/showthread.php?t=337617)

Colombinus 05-03-2022 05:46

Help Error: Expected token: "}", but found "-string-" on line 45
 
I'm trying to use a range plugin which fails to compile and I don't know what to do

HTML Code:

new GroupNames[GROUPS_NAME][] =
#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "ULTIMATE WHO"
#define VERSION            "1.1"
#define AUTHOR            "P.Of.Pw"

#define CharsMax(%1)        sizeof %1 - 1
#define time_shower        1.0

#define GROUPS_NAME        15
#define GROUPS_ACCESS        15

#define motd_msg        "Admin's Online"

new color[][] =
{
    "FF0000",
    "66FF00",
    "FF9900",
    "33FF33",
    "CC3333",
    "3300CC",
    "330066",
    "006699",
    "CCFF00",
    "FF0099",
    "FF3300",
    "FF6633",
    "FFCC99",
    "3399CC",
    "663366"
}
new GroupNames[GROUPS_NAME][] =
{
    "---=== Detinator ===---",
    "---=== Owner+Vip ===---",
    "---=== Owner ===---",
    "---=== Co-Owner+Vip ===---",
    "---=== Co-Owner ===---",
    "---=== God+Vip ===---",
    "---=== God ===---",
    "---=== Moderator+Vip ===---",
    "---=== Moderator ===---"
    "---=== Helper+Vip ===---",
    "---=== Helper ===---",
    "---=== Slot ===---",
    "---=== Vip ===---"
};

new GroupFlags[GROUPS_ACCESS][] =
{
    "abcdefghijklmnopqrstu",
    "bcdefghijklmnopqrstu",
    "bdefghijklmnopqrsu",
    "bcdefghijklmnopqrst",
    "bdefghijklmnopqrs",
    "bcdefghijlmnopqrst",
    "bdefghijlmnopqrs",
    "bcdefgijlmnopqrt",
    "bdefgijlmnopqr",
    "bdefgijmnop",
    "bcdefgijmnopt",
    "bcdefgijmnot",
    "bdefgijmno",
    "b",
    "ct"
}

new GroupFlagsValue[GROUPS_NAME]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
 
    for(new p_of_pw = 0 ; p_of_pw < GROUPS_NAME ; p_of_pw++)
        GroupFlagsValue[p_of_pw] = read_flags(GroupFlags[p_of_pw])
 
    register_clcmd("say", "cmdSay")
    register_clcmd("say_team", "cmdSay")
}

public cmdSay(id)
{
    new say[8]
    read_args(say, 7)
   
    if ((containi(say, "who") != -1
    || containi(say, "admin") != -1
    || containi(say, "admins") != -1 
    || contain(say, "/who") != -1
    || contain(say, "/admin") != -1
    || contain(say, "/admins") != -1))
        who_motd(id)
   
    return PLUGIN_CONTINUE
}

who_motd(id)
{
    new sPlayers[32], iNum, iPlayer
    new sName[32], sBuffer[1024]
    new iLen
   
    iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>")
 
    get_players(sPlayers, iNum, "ch")
 
    for(new p_of_pw = 0; p_of_pw < GROUPS_NAME ; p_of_pw++)
    { 
        iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"violet^">%s^n</font></h5></center>", GroupNames[p_of_pw])
   
        for(new a = 0; a < iNum ; a++)
        { 
            iPlayer = sPlayers[a]
       
            if(get_user_flags(iPlayer) == GroupFlagsValue[p_of_pw])
            {
                get_user_name(iPlayer, sName, sizeof sName - 1)
                iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><font color=^"%s^">%s^n</center></font>", color[p_of_pw], sName)
            }
        }       
    }
   
    show_motd(id, sBuffer, motd_msg)
    return PLUGIN_CONTINUE
}

This area is where it says there is an error
Error: Expected token: "}", but found "-string-" on line 45

HTML Code:

new GroupNames[GROUPS_NAME][] =
{
    "---=== Detinator ===---",
    "---=== Owner+Vip ===---",
    "---=== Owner ===---",
    "---=== Co-Owner+Vip ===---",
    "---=== Co-Owner ===---",
    "---=== God+Vip ===---",
    "---=== God ===---",
    "---=== Moderator+Vip ===---",
    "---=== Moderator ===---"
    "---=== Helper+Vip ===---",
    "---=== Helper ===---",
    "---=== Slot ===---",
    "---=== Vip ===---"
};


jimaway 05-03-2022 06:02

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
missing comma after "---=== Moderator ===---"

PawnBegg 05-03-2022 07:18

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
Code:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "ULTIMATE WHO"
#define VERSION            "1.1"
#define AUTHOR            "P.Of.Pw"

#define CharsMax(%1)        sizeof %1 - 1
#define time_shower        1.0

#define GROUPS_NAME        13
#define GROUPS_ACCESS        15

#define motd_msg        "Admin's Online"

new color[][] =
{
    "FF0000",
    "66FF00",
    "FF9900",
    "33FF33",
    "CC3333",
    "3300CC",
    "330066",
    "006699",
    "CCFF00",
    "FF0099",
    "FF3300",
    "FF6633",
    "FFCC99",
    "3399CC",
    "663366"
}
new GroupNames[GROUPS_NAME][] =
{
    "---=== Detinator ===---",
    "---=== Owner+Vip ===---",
    "---=== Owner ===---",
    "---=== Co-Owner+Vip ===---",
    "---=== Co-Owner ===---",
    "---=== God+Vip ===---",
    "---=== God ===---",
    "---=== Moderator+Vip ===---",
    "---=== Moderator ===---",
    "---=== Helper+Vip ===---",
    "---=== Helper ===---",
    "---=== Slot ===---",
    "---=== Vip ===---"
};

new GroupFlags[GROUPS_ACCESS][] =
{
    "abcdefghijklmnopqrstu",
    "bcdefghijklmnopqrstu",
    "bdefghijklmnopqrsu",
    "bcdefghijklmnopqrst",
    "bdefghijklmnopqrs",
    "bcdefghijlmnopqrst",
    "bdefghijlmnopqrs",
    "bcdefgijlmnopqrt",
    "bdefgijlmnopqr",
    "bdefgijmnop",
    "bcdefgijmnopt",
    "bcdefgijmnot",
    "bdefgijmno",
    "b",
    "ct"
};

new GroupFlagsValue[GROUPS_NAME]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
 
    for(new p_of_pw = 0 ; p_of_pw < GROUPS_NAME ; p_of_pw++)
        GroupFlagsValue[p_of_pw] = read_flags(GroupFlags[p_of_pw])
 
    register_clcmd("say", "cmdSay")
    register_clcmd("say_team", "cmdSay")
}

public cmdSay(id)
{
    new say[8]
    read_args(say, 7)
   
    if ((containi(say, "who") != -1
    || containi(say, "admin") != -1
    || containi(say, "admins") != -1 
    || contain(say, "/who") != -1
    || contain(say, "/admin") != -1
    || contain(say, "/admins") != -1))
        who_motd(id)
   
    return PLUGIN_CONTINUE
}

who_motd(id)
{
    new sPlayers[32], iNum, iPlayer
    new sName[32], sBuffer[1024]
    new iLen
   
    iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>")
 
    get_players(sPlayers, iNum, "ch")
 
    for(new p_of_pw = 0; p_of_pw < GROUPS_NAME ; p_of_pw++)
    { 
        iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"violet^">%s^n</font></h5></center>", GroupNames[p_of_pw])
   
        for(new a = 0; a < iNum ; a++)
        { 
            iPlayer = sPlayers[a]
       
            if(get_user_flags(iPlayer) == GroupFlagsValue[p_of_pw])
            {
                get_user_name(iPlayer, sName, sizeof sName - 1)
                iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><font color=^"%s^">%s^n</center></font>", color[p_of_pw], sName)
            }
        }       
    }
   
    show_motd(id, sBuffer, motd_msg)
    return PLUGIN_CONTINUE
}

First of all you missed "---=== Moderator ===---", <- [,]
Secondly you defined #define GROUPS_NAME 15, but you have only 13 GROUP_NAME.

It compiling without errors now but you must modify GROUPS_ACCESS cuz you define 15 of them but you have only 13 GROUP_NAME.

Colombinus 05-03-2022 08:32

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
Quote:

Originally Posted by PawnBegg (Post 2778541)
Code:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "ULTIMATE WHO"
#define VERSION            "1.1"
#define AUTHOR            "P.Of.Pw"

#define CharsMax(%1)        sizeof %1 - 1
#define time_shower        1.0

#define GROUPS_NAME        13
#define GROUPS_ACCESS        15

#define motd_msg        "Admin's Online"

new color[][] =
{
    "FF0000",
    "66FF00",
    "FF9900",
    "33FF33",
    "CC3333",
    "3300CC",
    "330066",
    "006699",
    "CCFF00",
    "FF0099",
    "FF3300",
    "FF6633",
    "FFCC99",
    "3399CC",
    "663366"
}
new GroupNames[GROUPS_NAME][] =
{
    "---=== Detinator ===---",
    "---=== Owner+Vip ===---",
    "---=== Owner ===---",
    "---=== Co-Owner+Vip ===---",
    "---=== Co-Owner ===---",
    "---=== God+Vip ===---",
    "---=== God ===---",
    "---=== Moderator+Vip ===---",
    "---=== Moderator ===---",
    "---=== Helper+Vip ===---",
    "---=== Helper ===---",
    "---=== Slot ===---",
    "---=== Vip ===---"
};

new GroupFlags[GROUPS_ACCESS][] =
{
    "abcdefghijklmnopqrstu",
    "bcdefghijklmnopqrstu",
    "bdefghijklmnopqrsu",
    "bcdefghijklmnopqrst",
    "bdefghijklmnopqrs",
    "bcdefghijlmnopqrst",
    "bdefghijlmnopqrs",
    "bcdefgijlmnopqrt",
    "bdefgijlmnopqr",
    "bdefgijmnop",
    "bcdefgijmnopt",
    "bcdefgijmnot",
    "bdefgijmno",
    "b",
    "ct"
};

new GroupFlagsValue[GROUPS_NAME]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
 
    for(new p_of_pw = 0 ; p_of_pw < GROUPS_NAME ; p_of_pw++)
        GroupFlagsValue[p_of_pw] = read_flags(GroupFlags[p_of_pw])
 
    register_clcmd("say", "cmdSay")
    register_clcmd("say_team", "cmdSay")
}

public cmdSay(id)
{
    new say[8]
    read_args(say, 7)
   
    if ((containi(say, "who") != -1
    || containi(say, "admin") != -1
    || containi(say, "admins") != -1 
    || contain(say, "/who") != -1
    || contain(say, "/admin") != -1
    || contain(say, "/admins") != -1))
        who_motd(id)
   
    return PLUGIN_CONTINUE
}

who_motd(id)
{
    new sPlayers[32], iNum, iPlayer
    new sName[32], sBuffer[1024]
    new iLen
   
    iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>")
 
    get_players(sPlayers, iNum, "ch")
 
    for(new p_of_pw = 0; p_of_pw < GROUPS_NAME ; p_of_pw++)
    { 
        iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"violet^">%s^n</font></h5></center>", GroupNames[p_of_pw])
   
        for(new a = 0; a < iNum ; a++)
        { 
            iPlayer = sPlayers[a]
       
            if(get_user_flags(iPlayer) == GroupFlagsValue[p_of_pw])
            {
                get_user_name(iPlayer, sName, sizeof sName - 1)
                iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><font color=^"%s^">%s^n</center></font>", color[p_of_pw], sName)
            }
        }       
    }
   
    show_motd(id, sBuffer, motd_msg)
    return PLUGIN_CONTINUE
}

First of all you missed "---=== Moderator ===---", <- [,]
Secondly you defined #define GROUPS_NAME 15, but you have only 13 GROUP_NAME.

It compiling without errors now but you must modify GROUPS_ACCESS cuz you define 15 of them but you have only 13 GROUP_NAME.

I already added two other names but it tells me

Error: Initialization data exceeds declared size on line 48

And

Error: Invalid function or declaration on line 51

Code:

#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "ULTIMATE WHO"
#define VERSION            "1.1"
#define AUTHOR            "P.Of.Pw"

#define CharsMax(%1)        sizeof %1 - 1
#define time_shower        1.0

#define GROUPS_NAME        13
#define GROUPS_ACCESS        15

#define motd_msg        "Admin's Online"

new color[][] =
{
    "FF0000",
    "66FF00",
    "FF9900",
    "33FF33",
    "CC3333",
    "3300CC",
    "330066",
    "006699",
    "CCFF00",
    "FF0099",
    "FF3300",
    "FF6633",
    "FFCC99",
    "3399CC",
    "663366"
}
new GroupNames[GROUPS_NAME][] =
{
    "---=== Detinator ===---",
    "---=== Owner+Vip ===---",
    "---=== Owner ===---",
    "---=== Co-Owner+Vip ===---",
    "---=== Co-Owner ===---",
    "---=== God+Vip ===---",
    "---=== God ===---",
    "---=== Moderator+Vip ===---",
    "---=== Moderator ===---",
    "---=== Admin+Vip===---",
    "---=== Admin ===---",
    "---=== Helper+Vip ===---",
    "---=== Helper ===---",
    "---=== Slot ===---",
    "---=== Vip ===---"
};

new GroupFlags[GROUPS_ACCESS][] =
{
    "abcdefghijklmnopqrstu",
    "bcdefghijklmnopqrstu",
    "bdefghijklmnopqrsu",
    "bcdefghijklmnopqrst",
    "bdefghijklmnopqrs",
    "bcdefghijlmnopqrst",
    "bdefghijlmnopqrs",
    "bcdefgijlmnopqrt",
    "bdefgijlmnopqr",
    "bdefgijmnop",
    "bcdefgijmnopt",
    "bcdefgijmnot",
    "bdefgijmno",
    "b",
    "ct"
};

new GroupFlagsValue[GROUPS_NAME]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
 
    for(new p_of_pw = 0 ; p_of_pw < GROUPS_NAME ; p_of_pw++)
        GroupFlagsValue[p_of_pw] = read_flags(GroupFlags[p_of_pw])
 
    register_clcmd("say", "cmdSay")
    register_clcmd("say_team", "cmdSay")
}

public cmdSay(id)
{
    new say[8]
    read_args(say, 7)
   
    if ((containi(say, "who") != -1
    || containi(say, "admin") != -1
    || containi(say, "admins") != -1 
    || contain(say, "/who") != -1
    || contain(say, "/admin") != -1
    || contain(say, "/admins") != -1))
        who_motd(id)
   
    return PLUGIN_CONTINUE
}

who_motd(id)
{
    new sPlayers[32], iNum, iPlayer
    new sName[32], sBuffer[1024]
    new iLen
   
    iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>")
 
    get_players(sPlayers, iNum, "ch")
 
    for(new p_of_pw = 0; p_of_pw < GROUPS_NAME ; p_of_pw++)
    { 
        iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"violet^">%s^n</font></h5></center>", GroupNames[p_of_pw])
   
        for(new a = 0; a < iNum ; a++)
        { 
            iPlayer = sPlayers[a]
       
            if(get_user_flags(iPlayer) == GroupFlagsValue[p_of_pw])
            {
                get_user_name(iPlayer, sName, sizeof sName - 1)
                iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><font color=^"%s^">%s^n</center></font>", color[p_of_pw], sName)
            }
        }       
    }
   
    show_motd(id, sBuffer, motd_msg)
    return PLUGIN_CONTINUE
}


iceeedr 05-03-2022 08:35

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
#define GROUPS_NAME 15

Colombinus 05-03-2022 08:41

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
Quote:

Originally Posted by iceeedr (Post 2778543)
#define GROUPS_NAME 15

Thanks for the help

Colombinus 05-03-2022 11:33

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
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();
}

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


kww 05-03-2022 16:11

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
put "api_oldmenu.inc" in "/scripting/include/"

Colombinus 05-03-2022 22:35

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
Quote:

Originally Posted by kww (Post 2778568)
put "api_oldmenu.inc" in "/scripting/include/"

The provider of the plugin did not pass it to me, do you know of a place where I can download it?

kww 05-04-2022 02:38

Re: Help Error: Expected token: "}", but found "-string-" on line 45
 
here, but you must be registered


All times are GMT -4. The time now is 10:32.

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