    #include <amxmodx>
        #include <amxmisc>
        #include <ColorChat>
        #include <engine>
        #include <cstrike>
        #include <sqlx>
         
        #pragma tabsize 0
         
        #define TULAJ ADMIN_IMMUNITY
        #define ADMIN ADMIN_LEVEL_E
        #define FOADMIN ADMIN_LEVEL_B
        #define KISADMIN ADMIN_BAN
         
        #define ASD 15
         
        //SQL MENTÉS/REGRENDSZER
       
        new const SQL_INFO[][] = {
        "",    // HOST
        "",     // USERNAME
        "",     // PASSWORD
        "s942_darkdemons"      // DATABASE
        }
         
        new Handle:g_SqlTuple;
         
        new PLUGIN[] = "Rangok";
        new VERSION[] = "0.1.0";
        new AUTHOR[] = "asdasdasd";
        new hudkibe[33];
         
        new PREFIX[] = ".:DarK*_*DemonS:.";
         
        new olesek[33], szint[33];
         
        //**Chat is exodus chatje**//
        new Temp[192];
         
         
        new const szamok[ASD] = {
            100,
            300,
            550,
            1000,
            2000,
            4000,
            5000,
            6000,
            7000,
            8000,
            10000,
            12000,
            15000,
            18000,
            22000
           
        }
         
        new const rangok[ASD+1][] = {
            "Újonc",
            "Honvéd",
            "Őrvezető",
            "Tizedes",
            "Szakaszvezető",
            "Őrmester",
            "Hadnagy",
            "Főhadnagy",
            "Százados",
            "Őrnagy",
            "Alezredes",
            "Ezredes",
            "Dandártábornok(",
            "Vezérnagy",
            "Altábornok",
            "Vezérezredes"
           
        }
        public plugin_init()
        {
           
            register_plugin(PLUGIN, VERSION, AUTHOR)
            //Parancsok
            register_clcmd("say /rang", "showrang");
            register_clcmd("say /hud", "hudkibekapcs");
           
            //Event
            register_event("DeathMsg", "halal", "a")
           
            //Ha valamelyik betüszeretnéd menteni akkor csak vedd el a --> // - jelet
           
            //**FONTOS!**//(maradjon alul)
            register_clcmd("say", "sayhook");
        }
        public hudrendszer(id)
        {
            if(!hudkibe[id])
                return;
            if(is_user_alive(id))
            {
                set_hudmessage(0, 255, 0, 0.07, 0.14, 0, 6.0, 12.0)
                show_hudmessage(id, "Öléseid: %d^nRangod: %s^nParancsok: /rang, /hud", olesek[id], rangok[szint[id]]);
            }
        }
        public hudkibekapcs(id)
        {
            if(hudkibe[id])
            {
                ColorChat(id, GREEN, "^4[%s] ^1Kikapcsoltad a hudot.", PREFIX);
                hudkibe[id] = false;
            }
            else
            {
                ColorChat(id, GREEN, "^4[%s] ^1Bekapcsoltad a hudot.", PREFIX);
                hudkibe[id] = true;
            }
        }
        public halal(id)
        {
            new killer = read_data(1);
            new victim = read_data(2);
           
           
            if(killer != victim)
                olesek[killer]++
           
            while(olesek[killer] >= szamok[szint[killer]])
            {
                szint[killer]++
            }
        }
        public showrang(id)
        {
            if(szint[id] != ASD+1)
            {
                ColorChat(id, GREEN, "^4[%s] ^3Rang: ^4%s ^1| ^3Ölések: ^4%d ^1| ^3Kell még: ^4%d", PREFIX, rangok[szint[id]], olesek[id], szamok[szint[id]]-olesek[id]);
            }
            else
            {
                ColorChat(id, GREEN, "^4[%s] ^3Rang: ^4%s ^1| ^3Ölések: ^4%d", PREFIX, rangok[szint[id]], olesek[id]);
                ColorChat(id, GREEN, "^4[%s] ^1Elérted a legmagasabb ^3rangot.", PREFIX);
            }
            return PLUGIN_HANDLED;
        }
         
        public plugin_cfg()
        {
            g_SqlTuple = SQL_MakeDbTuple(SQLINFO[0], SQLINFO[1], SQLINFO[2], SQLINFO[3])
            static Query[10048]
            new Len
            Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `rangrendszer`")
            Len += formatex(Query[Len], charsmax(Query)-Len, "(`Steamid` varchar(32) NOT NULL, ")
            Len += formatex(Query[Len], charsmax(Query)-Len, "`olesek` int(11) NOT NULL,")
            Len += formatex(Query[Len], charsmax(Query)-Len, "`szint` int(11) NOT NULL,")
           
            Len += formatex(Query[Len], charsmax(Query)-Len, "`Steamid` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
            SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query)
        }
        public Load(id) {
            static Query[10048]
            new Data[1], Steam[32]
            get_user_authid(id, Steam, 31)
            Data[0] = id
            formatex(Query, charsmax(Query), "SELECT * FROM `rangrendszer` WHERE Steamid = ^"%s^";", Steam)
            SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
        }
        public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
            if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
                log_amx("%s", Error)
                return
            }
            else {
                new id = Data[0];
                if(SQL_NumRows(Query) > 0)
                {
                    olesek[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "olesek"))
                    szint[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "szint"))
                   
                }
                else
                {
                    Save(id)
                }
            }
        }
        public Save(id)
        {
            static Query[256]
            new Steam[32]; get_user_authid(id, Steam, 31)
            formatex(Query, charsmax(Query), "INSERT INTO `rangrendszer` (`Steamid`) VALUES (^"%s^");", Steam)
            SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
        }
        public Update(id)
        {
            static Query[10048]
            new Len
            new Steam[32]; get_user_authid(id, Steam, 31)
            Len += formatex(Query[Len], charsmax(Query), "UPDATE `rangrendszer` SET olesek = ^"%i^", ", olesek[id])
           
            Len += formatex(Query[Len], charsmax(Query)-Len, "szint = ^"%i^" WHERE Steamid = ^"%s^";", szint[id], Steam)
            SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
        }
        public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
            if(FailState == TQUERY_CONNECT_FAILED)
                set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!")
            else if(FailState == TQUERY_QUERY_FAILED)
                set_fail_state("Query Error")
            if(Errcode)
                log_amx("[HIBA*] HIBAT DOBTAM: %s",Error)
        }
        public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
            if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
                log_amx("%s", Error);
                return;
            }
        }
        public client_putinserver(id)
        {
           
            if(!is_user_bot(id))
            {
                Load(id);
            }
            hudkibe[id] = true;
            set_task(1.0, "hudrendszer", id, _, _, "b");
            return PLUGIN_CONTINUE
        }
        public client_disconnect(id)
        {
            if(!is_user_bot(id))
            {
                Update(id)
            }
            olesek[id] = 0
            szint[id] = 0
            hudkibe[id] = true;
           
        }
         
        public sayhook(id)
        {
            new message[192], nev[32], none[2][32], chat[192];
            read_args(message, 191);
            remove_quotes(message);
           
            formatex(none[0], 31, ""), formatex(none[1], 31, " ");
           
            if (message[0] == '@' || message[0] == '/' || message[0] == '#' || message[0] == '!' || equal (message, ""))
                return PLUGIN_HANDLED_MAIN;
           
            if(!equali(message, none[0]) && !equali(message, none[1]))
            {
                get_user_name(id, nev, 31);
                if(is_user_alive(id))
                {
                    if(get_user_flags(id) & TULAJ)
                        formatex(chat, 191, "^x04[Tulajdonos][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & FOADMIN)
                        formatex(chat, 191, "^x04[F??in][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & ADMIN)
                        formatex(chat, 191, "^x04[Admin][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & KISADMIN)
                        formatex(chat, 191, "^x04[KisAdmin][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else
                        formatex(chat, 191, "^x04[%s]^3%s^x01: %s", rangok[szint[id]], nev, message);
                }
                else {
                   
                    if(get_user_flags(id) & TULAJ)
                        formatex(chat, 191, "^x01*Halott*^x04[Tulajdonos][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & FOADMIN)
                        formatex(chat, 191, "^x01*Halott*^x04[F??in][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & ADMIN)
                        formatex(chat, 191, "^x01*Halott*^x04[Admin][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & ADMIN)
                        formatex(chat, 191, "^x01*Halott*^x04[Admin][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else if(get_user_flags(id) & KISADMIN)
                        formatex(chat, 191, "^x01*Halott*^x04[KisAdmin][%s]^3%s^x04: %s", rangok[szint[id]], nev, message);
                    else
                        formatex(chat, 191, "^x01*Halott*^x04[%s]^3%s^x01: %s", rangok[szint[id]], nev, message);
                }
               
               
                switch(cs_get_user_team(id)) //Prefix
                {
                    case 1: ColorChat(0, RED, chat);
                        case 2: ColorChat(0, BLUE, chat);
                    }
                if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
    ColorChat(0, GREY, chat);
    return PLUGIN_HANDLED_MAIN;
            }
            return PLUGIN_CONTINUE;
        }
        public sendmessage(color[])
        {
            new teamName[10];
            for(new player = 1; player < get_maxplayers(); player++)
            {
                get_user_team (player, teamName, 9);
                teamf (player, color);
                elkuldes(player, Temp);
                teamf(player, teamName);
            }
        }
        public teamf(player, team[])
        {
            message_begin(MSG_ONE, get_user_msgid("TeamInfo"), _, player);
            write_byte(player);
            write_string(team);
            message_end();
        }
        public elkuldes(player, Temp[])
        {
            message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, player);
            write_byte( player );
            write_string( Temp );
            message_end();
        }
        public plugin_end()
        {
            SQL_FreeHandle(g_SqlTuple);
        }