Raised This Month: $51 Target: $400
 12% 

Solved chat message problem


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
lexzor
Veteran Member
Join Date: Nov 2020
Old 09-30-2021 , 10:01   chat message problem
Reply With Quote #1

hello guys.

i have this plugin
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#if !defined MAX_NAME_LENGTH
    #define MAX_NAME_LENGTH 32
#endif

#define VERSION "1.0"

#define MAX_CLAN_NAME_LENGTH 10
#define MAX_CLAN_TAG_LENGTH 5

#pragma semicolon 1

new Handle:g_SqlTuple;
new 
g_Error[512];

new 
g_SayText;

new const 
g_szTag[] = "^4[CLAN SYSTEM]^1";

enum _:USER_INFO
{
    
szName[MAX_NAME_LENGTH],
    
szAuthid[MAX_AUTHID_LENGTH],
    
bool:b_IsUserClanLeader,
    
ClanName[36],
    
ClanTag[10]
}

new const 
g_szTablesInfo[][] =
{
    
"( `id` INT(11) NOT NULL AUTO_INCREMENT ,\
    `clan_name` VARCHAR(10) NOT NULL ,\
    `clan_tag` VARCHAR(36) NOT NULL ,\
    `clan_leader` VARCHAR(36) NOT NULL ,\
    `leader_steamid` VARCHAR(36) NOT NULL ,\
    `clan_second_leader` VARCHAR(36) NOT NULL ,\
    `second_leader_steamid` VARCHAR(36) NOT NULL ,\
    PRIMARY KEY (`id`))"
,


    
"( `id` INT(11) NOT NULL AUTO_INCREMENT ,\
    `name` VARCHAR(10) NOT NULL ,\
    `steamid` VARCHAR(36) NOT NULL ,\
    `last_steamid` VARCHAR(36) NOT NULL ,\
    `clan` VARCHAR(36) NOT NULL ,\
    PRIMARY KEY (`id`))"
};

new const 
g_szTables[][] = 
{
    
"Clans",
    
"User_Info_Clans"
};

new 
g_UserData[MAX_PLAYERS 1][USER_INFO];

public 
plugin_init()
{
    
register_plugin("Clan System"VERSION"lexzor");

    
register_clcmd("say /clans""clan_menu", -1"Open clan system menu", -1);
    
register_clcmd("say""hookSay");
    
register_clcmd("say_team""hookSay");
    
register_concmd("ClanName""get_clan_name", -1"", -1);
    
register_concmd("ClanTag""get_clan_tag", -1"", -1);

    
register_dictionary("clan_system.txt");

    
g_SayText get_user_msgid("SayText");

    
MySql_Init();
}

public 
MySql_Init()
{
    
g_SqlTuple SQL_MakeDbTuple(g_SqlCvar[0], g_SqlCvar[1], g_SqlCvar[2], g_SqlCvar[3]);
       
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
       
    if(
SqlConnection == Empty_Handle)
    {
        
set_fail_state(g_Error);
    }
    
    new 
Handle:Queries;
    new 
szCache[1024];
    
    for(new 
0sizeof(g_szTables); i++)
    {
        
formatex(szCachecharsmax(szCache), "CREATE TABLE IF NOT EXISTS %s %s"g_szTables[i], g_szTablesInfo[i]);    

        
Queries SQL_PrepareQuery(SqlConnectionszCache);

        if(!
SQL_Execute(Queries))
        {
            
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
            
set_fail_state(g_Error);
        }        
    }
    
    
SQL_FreeHandle(Queries);
    
    
SQL_FreeHandle(SqlConnection);
}

public 
hookSay(id)
{
    new 
szTyped[192];
    new 
szSayType[10];
    new 
szTeam[20];
    new 
szMessage[192];
    new 
bool:isTeam;
    new 
iTeam get_user_team(id);

    
read_args(szTypedcharsmax(szTyped));
    
remove_quotes(szTyped);
    
trim(szTyped);

    
read_argv(0szSayTypecharsmax(szSayType));
    
remove_quotes(szSayType);
    
trim(szSayType);

    if(
equali(szSayType"say_team"))
    {
        switch(
iTeam)
        {
            case 
0,3formatex(szTeamcharsmax(szTeam), "(Spectators)");
            case 
1formatex(szTeamcharsmax(szTeam), "(Terrorists)");
            case 
2formatex(szTeamcharsmax(szTeam), "(Counter-Terrorists)");
        }

        
isTeam true;
    }

    if(
containi(g_UserData[id][ClanName], "NONE") != -1)
    {
        
formatex(szMessagecharsmax(szMessage), "^3%s^3 %s:^1 %s"isTeam szTeam ""g_UserData[id][szName], szTyped);
    }
    else 
    {
        
formatex(szMessagecharsmax(szMessage), "^3%s^4 [%s]^3 %s:^1 %s"isTeam szTeam ""g_UserData[id][ClanTag], g_UserData[id][szName], szTyped);
    }

    for(new 
0get_maxplayers(); i++)
    {
        if(!
is_user_connected(i))
            continue;

        if(
isTeam && iTeam != get_user_team(i))
            continue;
        
        
send_message(szMessageidi);
    }

    
server_print("clantag: %s"g_UserData[id][ClanTag]);
    
server_print("%s"szMessage);

    return 
PLUGIN_HANDLED_MAIN;
}

public 
client_authorized(id)
{
    if(
is_user_bot(id) || is_user_hltv(id))
        return 
PLUGIN_HANDLED;

    
g_UserData[id][b_IsUserClanLeader] = false;

    
get_user_name(idg_UserData[id][szName], charsmax(g_UserData[][szName]));
    
mysql_escape_string(g_UserData[id][szName], charsmax(g_UserData[][szName]));
    
get_user_authid(idg_UserData[id][szAuthid], charsmax(g_UserData[][szAuthid]));

    
server_print("steamid: %s"g_UserData[id][szAuthid]); 

    
insert_player_into_user_table(id);

    return 
PLUGIN_CONTINUE;
}

public 
insert_player_into_user_table(id)
{
    new 
szQuery[1024], szData[1];
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][szAuthid]);
    
szData[0] = id;
    
SQL_ThreadQuery(g_SqlTuple"InsertPlayerIntoClanTable"szQueryszDatacharsmax(szData));
    
server_print("instert_player_into_table");
}

public 
InsertPlayerIntoClanTable(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) < 1)
    {
        new 
szQuery[1024];
        
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` (`name`,`steamid`,`last_steamid`,`clan`) \
        VALUES \
        ('%s','%s','%s','NONE')"
,
        
g_szTables[1], g_UserData[id][szName], g_UserData[id][szAuthid], g_UserData[id][szAuthid]);

        
formatex(g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]), "NONE");

        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }
    else 
    {
        
SQL_ReadResult(Query4g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]));

        
server_print("got clanname: %s"g_UserData[id][ClanName]);

        
get_user_clan_tag(id);
    }

    
SQL_FreeHandle(Query);
}

public 
get_user_clan_tag(id)
{
    new 
szQuery[1024], szData[1];
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `clan_name` = '%s'"g_szTables[0], g_UserData[id][ClanName]);
    
SQL_ThreadQuery(g_SqlTuple"GetUserClanTag"szQueryszDatacharsmax(szData));
    
server_print("get_user_clan_tag");
}

public 
GetUserClanTag(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) > 0)
    {
        
SQL_ReadResult(Query2g_UserData[id][ClanTag], charsmax(g_UserData[][ClanTag]));
        
server_print("got clantag: %s"g_UserData[id][ClanTag]);
    }
    else 
    {
        new 
szQuery[1024];
        
formatex(szQuerycharsmax(szQuery), "UPDATE `%s` SET `clan` = 'NONE' WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][szAuthid]);
        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }

    
SQL_FreeHandle(Query);
}

public 
clan_menu(id)
{
    new 
szTitle[64];
    new 
szItem[64];

    
formatex(szTitlecharsmax(szTitle), "%L"id"MAIN_MENU_TITLE");
    new 
iMenu menu_create(szTitle"clan_menu_handler");

    
formatex(szItemcharsmax(szItem), "%L"id"MENU_CREATE_CLAN");
    
menu_additem(iMenuszItem);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0, -1);
}

public 
clan_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            switch(
g_UserData[id][b_IsUserClanLeader])
            {
                case 
true:
                {
                    
client_print_color(idprint_team_default"%s %L"g_szTagid"ALREADY_CLAN_MEMBER");
                    return 
PLUGIN_HANDLED;
                }

                case 
false:
                {
                    
create_clan_menu(id);
                }
            }
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
create_clan_menu(id)
{
    new 
szTitle[64];
    new 
szItem[2][64];

    
formatex(szTitlecharsmax(szTitle), "%L"id"CREATE_CLAN_MENU_TITLE");
    new 
iMenu menu_create(szTitle"create_clan_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "\r%L \y%s"id"CREATE_CLAN_NAME_FIELD"g_UserData[id][ClanName]);
    
menu_additem(iMenuszItem[0]);

    
formatex(szItem[1], charsmax(szItem[]), "\r%L \y%s"id"CREATE_CLAN_TAG_FIELD"g_UserData[id][ClanTag]);
    
menu_additem(iMenuszItem[1]);

    
menu_addblank(iMenu0);

    
menu_additem(iMenu"Confirm");

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0, -1);
}

public 
create_clan_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            
client_cmd(id"messagemode ClanName");
            
create_clan_menu(id);
        }
        
        case 
1:
        {
            
client_cmd(id"messagemode ClanTag");
            
create_clan_menu(id);
        }

        case 
2:
        {
            if(
g_UserData[id][ClanName][0] == EOS || g_UserData[id][ClanTag][0] == EOS)
            {
                
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_CHARACTERS");
                
create_clan_menu(id);
                return 
PLUGIN_HANDLED;
            }

            
add_clan_in_sql(id);
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
add_clan_in_sql(id)
{
    new 
szQuery[1024];
    
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` \
    (`clan_name`, `clan_tag`, `clan_leader`, `leader_steamid`, `clan_second_leader`, `second_leader_steamid`)\
    VALUES\
    ('%s','%s','%s','%s','NOSECONDLEADER','NOSECONDLEADER')"
,
    
g_szTables[0], g_UserData[id][ClanName], g_UserData[id][ClanTag], g_UserData[id][szName], g_UserData[id][szAuthid]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);

    new 
szQuery2[1024];
    
formatex(szQuery2charsmax(szQuery), "UPDATE `%s` SET `clan` = '%s' WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][ClanName], g_UserData[id][szAuthid]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery2);
}

public 
get_clan_name(id)
{
    new 
szArg[36];
    
read_args(szArgcharsmax(szArg));
    
remove_quotes(szArg);

    if(
strlen(szArg) > MAX_CLAN_NAME_LENGTH)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"MAX_CHARACTERS"MAX_CLAN_NAME_LENGTH);
    }

    if(
containi(szArg" ") != -1)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_SPACE");
    }
    else 
    {
        
copy(g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]), szArg);
    }

    
create_clan_menu(id);
}

public 
get_clan_tag(id)
{
    new 
szArg[36];
    
read_args(szArgcharsmax(szArg));
    
remove_quotes(szArg);

    if(
strlen(szArg) > MAX_CLAN_TAG_LENGTH)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"MAX_CHARACTERS"MAX_CLAN_TAG_LENGTH);
    }

    if(
containi(szArg" ") != -1)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_SPACE");
    }
    else 
    {
        
copy(g_UserData[id][ClanTag], charsmax(g_UserData[][ClanTag]), szArg);
    }

    
create_clan_menu(id);
}

public 
FreeHandle(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    
SQL_FreeHandle(Query);
}

mysql_escape_string(dest[],len)
{
    
replace_all(dest,len,"\\","\\\\");
    
replace_all(dest,len,"\0","\\0");
    
replace_all(dest,len,"\n","\\n");
    
replace_all(dest,len,"\r","\\r");
    
replace_all(dest,len,"\x1a","\Z");
    
replace_all(dest,len,"'","\'");
    
replace_all(dest,len,"^"","\^"");
}

send_message(const message[], const id, const i)
{
    
message_begin(MSG_ONEg_SayText, {000}, i);
    
write_byte(id);
    
write_string(message);
    
message_end();

I m trying to make a clan system using mysql. The problem is at chat messages, sometimes the clan tag isn't displayed in chat after map change.

i made some debugging to see if i got clan tag from sql, actually i got the clan tag.

Code:
instert_player_into_table
got clanname: 31231
get_user_clan_tag
got clantag: 312
clantag message: 
 [] z: rweyrweyrew
but when i send the message to chat idk why the clantag is not working.

also, i noticed a pattern: every time the map changes, once it works, once it doesn't and so on and after a retry is working.

any ideas ?

(sorry for messy code still workin)

Last edited by lexzor; 10-01-2021 at 14:24.
lexzor is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-01-2021 , 09:21   Re: chat message problem
Reply With Quote #2

and another question.

why can t i format a string like this:
PHP Code:
    formatex(szItem[0], charsmax(szItem[]), "\r%L \y%s"id"CREATE_CLAN_NAME_FIELD"equali(g_UserData[id][ClanName], "NONE") ? "" g_UserData[id][ClanName]; 
i get this error

Code:
ERROR [324]: array must be indexed (variable "-unknown-")
lexzor is offline
lexzor
Veteran Member
Join Date: Nov 2020
Old 10-01-2021 , 11:05   Re: chat message problem
Reply With Quote #3

Ok, actually sometimes plugin insert player in table without name or steamid: https://imgur.com/a/8iOJZzi

Before server restart, plugin worked ok but after i restarted the server there are some anormal issues.

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <sqlx>

#if !defined MAX_NAME_LENGTH
    #define MAX_NAME_LENGTH 32
#endif

#define VERSION "1.0"

#define MAX_CLAN_NAME_LENGTH 10
#define MAX_CLAN_TAG_LENGTH 5

#pragma semicolon 1

new Handle:g_SqlTuple;
new 
g_Error[512];

new 
g_SayText;

new const 
g_szTag[] = "^4[CLAN SYSTEM]^1";

new const 
g_SqlCvar[][] = 
{
    
};

enum _:USER_INFO
{
    
szName[MAX_NAME_LENGTH],
    
szAuthid[MAX_AUTHID_LENGTH],
    
iIsUserClanLeader,
    
iIsUserClanSecondLeader,
    
iIsUserClanMember,
    
ClanName[36],
    
ClanTag[10]
}

new const 
g_szTablesInfo[][] =
{
    
"( `id` INT(11) NOT NULL AUTO_INCREMENT ,\
    `clan_name` VARCHAR(10) NOT NULL ,\
    `clan_tag` VARCHAR(36) NOT NULL ,\
    `clan_leader` VARCHAR(36) NOT NULL ,\
    `leader_steamid` VARCHAR(36) NOT NULL ,\
    `clan_second_leader` VARCHAR(36) NOT NULL ,\
    `second_leader_steamid` VARCHAR(36) NOT NULL ,\
    PRIMARY KEY (`id`))"
,


    
"( `id` INT(11) NOT NULL AUTO_INCREMENT ,\
    `name` VARCHAR(10) NOT NULL ,\
    `steamid` VARCHAR(36) NOT NULL ,\
    `last_steamid` VARCHAR(36) NOT NULL ,\
    `clan` VARCHAR(36) NOT NULL ,\
    PRIMARY KEY (`id`))"
};

new const 
g_szTables[][] = 
{
    
"Clans",
    
"User_Info_Clans"
};

new 
g_UserData[MAX_PLAYERS 1][USER_INFO];

public 
plugin_init()
{
    
register_plugin("Clan System"VERSION"lexzor");

    
register_clcmd("say /clans""clan_menu", -1"Open clan system menu", -1);
    
register_clcmd("say""hookSay");
    
register_clcmd("say_team""hookSay");
    
register_concmd("ClanName""get_clan_name", -1"", -1);
    
register_concmd("ClanTag""get_clan_tag", -1"", -1);

    
register_dictionary("clan_system.txt");

    
g_SayText get_user_msgid("SayText");

    
MySql_Init();
}

public 
plugin_end()
{
    
SQL_FreeHandle(g_SqlTuple);
}

public 
MySql_Init()
{
    
g_SqlTuple SQL_MakeDbTuple(g_SqlCvar[0], g_SqlCvar[1], g_SqlCvar[2], g_SqlCvar[3]);
       
    new 
ErrorCode,Handle:SqlConnection SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
       
    if(
SqlConnection == Empty_Handle)
    {
        
set_fail_state(g_Error);
    }
    
    new 
Handle:Queries;
    new 
szCache[1024];
    
    for(new 
0sizeof(g_szTables); i++)
    {
        
formatex(szCachecharsmax(szCache), "CREATE TABLE IF NOT EXISTS %s %s"g_szTables[i], g_szTablesInfo[i]);    

        
Queries SQL_PrepareQuery(SqlConnectionszCache);

        if(!
SQL_Execute(Queries))
        {
            
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
            
set_fail_state(g_Error);
        }        
    }
    
    
SQL_FreeHandle(Queries);
    
    
SQL_FreeHandle(SqlConnection);
}

public 
hookSay(id)
{
    new 
szTyped[192];
    new 
szSayType[10];
    new 
szTeam[20];
    new 
szMessage[192];
    new 
bool:isTeam;
    new 
iTeam get_user_team(id);

    
read_args(szTypedcharsmax(szTyped));
    
remove_quotes(szTyped);
    
trim(szTyped);

    if(
szTyped[0] == EOS || equal(szTyped[0], "") || equal(szTyped[0], " "))
        return 
PLUGIN_HANDLED_MAIN;

    
read_argv(0szSayTypecharsmax(szSayType));
    
remove_quotes(szSayType);
    
trim(szSayType);

    if(
equali(szSayType"say_team"))
    {
        switch(
iTeam)
        {
            case 
0,3formatex(szTeamcharsmax(szTeam), "(Spectators)");
            case 
1formatex(szTeamcharsmax(szTeam), "(Terrorists)");
            case 
2formatex(szTeamcharsmax(szTeam), "(Counter-Terrorists)");
        }

        
isTeam true;
    }

    if(
containi(g_UserData[id][ClanName], "NONE") != -1)
    {
        
formatex(szMessagecharsmax(szMessage), "^3%s^3 %s:^1 %s"isTeam szTeam ""g_UserData[id][szName], szTyped);
    }
    else 
    {
        
formatex(szMessagecharsmax(szMessage), "^3%s^4 [%s]^3 %s:^1 %s"isTeam szTeam ""g_UserData[id][ClanTag], g_UserData[id][szName], szTyped);
    }

    for(new 
0get_maxplayers(); i++)
    {
        if(!
is_user_connected(i))
            continue;

        if(
isTeam && iTeam != get_user_team(i))
            continue;
        
        
send_message(szMessageidi);
    }


    return 
PLUGIN_HANDLED_MAIN;
}

public 
client_authorized(id)
{
    if(
is_user_bot(id) || is_user_hltv(id))
        return 
PLUGIN_HANDLED;


    
get_user_authid(idg_UserData[id][szAuthid], charsmax(g_UserData[][szAuthid]));
    
get_user_name(idg_UserData[id][szName], charsmax(g_UserData[][szName]));
    
mysql_escape_string(g_UserData[id][szName], charsmax(g_UserData[][szName]));

    
g_UserData[id][iIsUserClanLeader] = 0;
    
g_UserData[id][iIsUserClanMember] = 0;
    
g_UserData[id][iIsUserClanSecondLeader] = 0;

    return 
PLUGIN_CONTINUE;
}

public 
client_putinserver(id)
{
    if(
is_user_bot(id) || is_user_hltv(id))
        return 
PLUGIN_HANDLED;

    
insert_player_into_user_table(id);

    return 
PLUGIN_CONTINUE;
}

public 
insert_player_into_user_table(id)
{
    new 
szQuery[1024], szData[1];
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][szAuthid]);
    
szData[0] = id;
    
SQL_ThreadQuery(g_SqlTuple"InsertPlayerIntoClanTable"szQueryszDatacharsmax(szData));
}

public 
InsertPlayerIntoClanTable(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) > 0)
    {
        
SQL_ReadResult(Query4g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]));

        if(!
equal(g_UserData[id][ClanName], "NONE"))
            
g_UserData[id][iIsUserClanMember] = 1;

        
get_user_clan_tag(id);
    }
    else 
    {
        new 
szQuery[1024];
        
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` (`name`,`steamid`,`last_steamid`,`clan`) \
        VALUES \
        ('%s','%s','%s','NONE')"
,
        
g_szTables[1], g_UserData[id][szName], g_UserData[id][szAuthid], g_UserData[id][szAuthid]);

        
formatex(g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]), "NONE");

        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }

    
SQL_FreeHandle(Query);
}

public 
check_player_rank(id)
{
    new 
szQuery[512], szData[1];
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `steamid` = '%s'"g_UserData[id][ClanName], g_UserData[id][szAuthid]);
    
SQL_ThreadQuery(g_SqlTuple"CheckPlayerRank"szQueryszDatacharsmax(szData));
}

public 
GetUserClanTag(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) > 0)
    {
        
SQL_ReadResult(Query2g_UserData[id][ClanTag], charsmax(g_UserData[][ClanTag]));
        
check_player_rank(id);
    }
    else 
    {
        new 
szQuery[1024];
        
formatex(szQuerycharsmax(szQuery), "UPDATE `%s` SET `clan` = 'NONE' WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][szAuthid]);
        
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);
    }

    
SQL_FreeHandle(Query);
}

public 
CheckPlayerRank(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) > 0)
    {
        
g_UserData[id][iIsUserClanLeader] = SQL_ReadResult(Query3);
        
g_UserData[id][iIsUserClanSecondLeader] = SQL_ReadResult(Query4);
    }

    
SQL_FreeHandle(Query);
}

public 
get_user_clan_tag(id)
{
    new 
szQuery[1024], szData[1];
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `clan_name` = '%s'"g_szTables[0], g_UserData[id][ClanName]);
    
SQL_ThreadQuery(g_SqlTuple"GetUserClanTag"szQueryszDatacharsmax(szData));
}

public 
clan_menu(id)
{
    new 
szTitle[64];
    new 
szItem[2][64];

    
formatex(szTitlecharsmax(szTitle), "%L"id"MAIN_MENU_TITLE");
    new 
iMenu menu_create(szTitle"clan_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "%s%L"g_UserData[id][iIsUserClanMember] ? "\d" "\w"id"MENU_CREATE_CLAN");
    
menu_additem(iMenuszItem[0]);

    
formatex(szItem[1], charsmax(szItem[]), "%s%L"g_UserData[id][iIsUserClanMember] ? "\w" "\d"id"MENU_ABOUT_CLAN");
    
menu_additem(iMenuszItem[1]);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0, -1);
}

public 
clan_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            switch(
g_UserData[id][iIsUserClanMember])
            {
                case 
1:
                {
                    
client_print_color(idprint_team_default"%s %L"g_szTagid"ALREADY_CLAN_MEMBER");
                }

                case 
0:
                {
                    
create_clan_menu(id);
                }
            }
        }

        case 
1:
        {
            switch(
g_UserData[id][iIsUserClanMember])
            {
                case 
0:
                {
                    
client_print_color(idprint_team_default"%s %L"g_szTagid"NOT_A_CLAN_MEMBER");
                }

                case 
1:
                {
                    
about_clan_menu(id);
                }
            }
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
create_clan_menu(id)
{
    new 
szTitle[64];
    new 
szItem[2][64];

    
formatex(szTitlecharsmax(szTitle), "%L"id"CREATE_CLAN_MENU_TITLE");
    new 
iMenu menu_create(szTitle"create_clan_menu_handler");

    
formatex(szItem[0], charsmax(szItem[]), "\r%L \y%s"id"CREATE_CLAN_NAME_FIELD"g_UserData[id][ClanName]);
    
menu_additem(iMenuszItem[0]);

    
formatex(szItem[1], charsmax(szItem[]), "\r%L \y%s"id"CREATE_CLAN_TAG_FIELD"g_UserData[id][ClanTag]);
    
menu_additem(iMenuszItem[1]);

    
menu_addblank(iMenu0);

    
menu_additem(iMenu"Confirm");

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0, -1);
}

public 
create_clan_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            
client_cmd(id"messagemode ClanName");
            
create_clan_menu(id);
        }
        
        case 
1:
        {
            
client_cmd(id"messagemode ClanTag");
            
create_clan_menu(id);
        }

        case 
2:
        {
            if(
g_UserData[id][ClanName][0] == EOS || g_UserData[id][ClanTag][0] == EOS)
            {
                
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_CHARACTERS");
                
create_clan_menu(id);
                return 
PLUGIN_HANDLED;
            }

            
check_clan_name(id);
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
about_clan_menu(id)
{
    new 
szTitle[64], szItem[5][64];
    
formatex(szTitlecharsmax(szTitle), "%L"id"ABOUT_CLAN_MENU_TITLE");

    new 
iMenu menu_create(szTitle"about_clan_menu_handler");

    
formatex(szItem[0], charsmax(szItem), "%L"id"ALL_MEMBERS_FIELD");
    
server_print("%s"szItem[0]);
    
menu_additem(iMenuszItem[0]);

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);
}

public 
about_clan_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(id);
        return 
PLUGIN_HANDLED;
    }

    switch(
item)
    {
        case 
0:
        {
            
all_members_menu(id);
        }
    }

    return 
PLUGIN_CONTINUE;
}

public 
all_members_menu(id)
{
    new 
szQuery[512];

    new 
szData[1];

    
szData[0] = id;

    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` ORDER BY (id)"g_UserData[id][ClanName]);
    
SQL_ThreadQuery(g_SqlTuple"AllMembersMenu"szQueryszData1);
}

public 
AllMembersMenu(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];
    new 
szTitle[64], szItem[64], szMemberName[64];
    new 
iResults SQL_NumResults(Query);

    
formatex(szTitlecharsmax(szTitle), "%L"id"ALL_MEMBERS_MENU"g_UserData[id][ClanName]);
    new 
iMenu menu_create(szTitle"all_members_menu_handler");

    if(
iResults 0)
    {
        for(new 
0iResultsi++)
        {
            
SQL_ReadResult(Query1szMemberNamecharsmax(szMemberName));
            
formatex(szItemcharsmax(szItem), "%s"szMemberName);

            
menu_additem(iMenuszMemberName);
        }
    }

    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL);
    
menu_display(idiMenu0);

    
SQL_FreeHandle(Query);
}

public 
all_members_menu_handler(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }

    
all_members_menu(id);
}

public 
check_clan_name(id)
{
    new 
szQuery[512], szData[1];
    
szData[0] = id;
    
formatex(szQuerycharsmax(szQuery), "SELECT * FROM `%s` WHERE `clan_name` = '%s'"g_szTables[0], g_UserData[id][ClanName]);

    
SQL_ThreadQuery(g_SqlTuple"CheckClanName"szQueryszDatacharsmax(szData));
}

public 
CheckClanName(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    new 
id szData[0];

    if(
SQL_NumResults(Query) > 0)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"CLAN_NAME_ERROR"g_UserData[id][ClanName]);
        
create_clan_menu(id);
    }
    else 
    {
        
add_clan_in_sql(id);
    }

    
SQL_FreeHandle(Query);
}

public 
add_clan_in_sql(id)
{
    
// ADD CLAN IN CLANS TABLE
    
new szQuery[1024];
    
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` \
    (`clan_name`, `clan_tag`, `clan_leader`, `leader_steamid`, `clan_second_leader`, `second_leader_steamid`)\
    VALUES\
    ('%s','%s','%s','%s','NOSECONDLEADER','NOSECONDLEADER')"
,
    
g_szTables[0], g_UserData[id][ClanName], g_UserData[id][ClanTag], g_UserData[id][szName], g_UserData[id][szAuthid]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);

    
// UPDATE USER CLAN IN SECOND TABLE
    
new szQuery2[1024];
    
formatex(szQuery2charsmax(szQuery), "UPDATE `%s` SET `clan` = '%s' WHERE `steamid` = '%s'"g_szTables[1], g_UserData[id][ClanName], g_UserData[id][szAuthid]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery2);

    
create_clan_sql_table(id);
}

public 
create_clan_sql_table(id)
{
    new 
szQuery[512];
    
formatex(szQuerycharsmax(szQuery), "CREATE TABLE IF NOT EXISTS `%s` \
    ( `id` INT(11) NOT NULL AUTO_INCREMENT ,\
    `member_name` VARCHAR(10) NOT NULL ,\
    `steamid` VARCHAR(36) NOT NULL ,\
    `is_clan_leader` INT(2) NOT NULL ,\
    `is_second_leader` INT(2) NOT NULL ,\
    PRIMARY KEY (`id`))"
g_UserData[id][ClanName]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);

    
add_clan_leader_in_clan_table(id);
}

public 
add_clan_leader_in_clan_table(id)
{
    new 
szQuery[512];
    
formatex(szQuerycharsmax(szQuery), "INSERT INTO `%s` (`member_name`,`steamid`,`is_clan_leader`,`is_second_leader`) VALUES \
    ('%s','%s','1','0')"
g_UserData[id][ClanName], g_UserData[id][szName], g_UserData[id][szAuthid]);

    
SQL_ThreadQuery(g_SqlTuple"FreeHandle"szQuery);

    
client_print_color(idprint_team_default"%s %L"g_szTagid"CLAN_CREATED_SUCCESFULLY"g_UserData[id][ClanName]);
}

public 
get_clan_name(id)
{
    new 
szArg[36];
    
read_args(szArgcharsmax(szArg));
    
remove_quotes(szArg);

    if(
strlen(szArg) > MAX_CLAN_NAME_LENGTH)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"MAX_CHARACTERS"MAX_CLAN_NAME_LENGTH);
    }

    if(
containi(szArg" ") != -1)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_SPACE");
    }
    else 
    {
        
copy(g_UserData[id][ClanName], charsmax(g_UserData[][ClanName]), szArg);
    }

    
create_clan_menu(id);
}

public 
get_clan_tag(id)
{
    new 
szArg[36];
    
read_args(szArgcharsmax(szArg));
    
remove_quotes(szArg);

    if(
strlen(szArg) > MAX_CLAN_TAG_LENGTH)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"MAX_CHARACTERS"MAX_CLAN_TAG_LENGTH);
    }

    if(
containi(szArg" ") != -1)
    {
        
client_print_color(idprint_team_default"%s %L"g_szTagid"NO_SPACE");
    }
    else 
    {
        
copy(g_UserData[id][ClanTag], charsmax(g_UserData[][ClanTag]), szArg);
    }

    
create_clan_menu(id);
}

public 
FreeHandle(FailStateHandle:QueryszError[], ErrorCodeszData[], iSize)
{
    if(
FailState || ErrorCode)
        
log_amx("^nSQL ERROR: %s^n"szError);

    
SQL_FreeHandle(Query);
}

mysql_escape_string(dest[],len)
{
    
replace_all(dest,len,"\\","\\\\");
    
replace_all(dest,len,"\0","\\0");
    
replace_all(dest,len,"\n","\\n");
    
replace_all(dest,len,"\r","\\r");
    
replace_all(dest,len,"\x1a","\Z");
    
replace_all(dest,len,"'","\'");
    
replace_all(dest,len,"^"","\^"");
}

send_message(const message[], const id, const i)
{
    
message_begin(MSG_ONEg_SayText, {000}, i);
    
write_byte(id);
    
write_string(message);
    
message_end();

lexzor is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:33.


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