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

Solved MYSQL if kicked/banned or change nickname doesnt update.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
4ever16
Veteran Member
Join Date: Apr 2015
Old 04-28-2019 , 14:31   MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #1

So data is send to MYSQL about users. Kills and so on.

But if user is kicked or banned the user isnt removed from MYSQL.
Can someone fix it? I would like it to remove users if kicked or banned.

Also the nicknames isnt updated in MYSQL.
If i change my nickname the database doesnt reqonise the nick change and just keeps the old nickname and doesnt update kills / deaths for that specific user.
Can someone fix it?

PHP Code:
#include < amxmodx > 
#include < sqlx > 
#include < cstrike > 
#include < hamsandwich > 

/* Database */ 
new Host[ ] = "" 
new User[ ] =  "" 
new Pass[ ] =  "" 
new Db[ ] =  "" 

new MySQL_Query512 
new 
Handle:MySQL_Tuple 
new Handle:MySQL_Connection 
new bool:g_Loaded33 ] = false 
new Kills[33], Deaths[33]; 
new 
Team[33], OldName[33][32]

new 
g_logfile[64]; 

new const 
VERSION[ ] = "0.0.3" 

public plugin_init( ) { 
    
register_plugin"Scoreboard to MySQL"VERSION"Airkish" 
    
register_clcmd("say /rs""ResetScore"
    
register_event"TeamInfo""event_team_info""a" );


public 
client_putinserverid 

    
OldName[id] = "";
    
set_task(5.0"Presql_Load"id
    
g_Loadedid ] = false 


public 
client_infochanged(id

    new 
newname[32],oldname[32
    
get_user_info(id"name"newname,31
    
get_user_name(idoldname31
    
    if(!
equali(newnameoldname))
    {
        
OldName[id] = oldname;
        
MySQL_UpdateName(id);
        return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_CONTINUE;
}

public 
Presql_Load(id) { 
    if ( 
cs_get_user_team(id) == CS_TEAM_T) { 
        
Team[id] = 1
    } 
    else if ( 
cs_get_user_team(id) == CS_TEAM_CT ) { 
        
Team[id] = 2
    } 
    else { 
        
Team[id] = 3
    } 
    
MySQL_Load(id


public 
client_death(KillerVictimwpnindexhitplaceTK

    if(
Killer == Victim) {  
        
Deaths[Killer]++;  
        
MySQL_Update(Killer); 
        return 
PLUGIN_HANDLED
    } 
    
Kills[Killer]++; 
    
Deaths[Victim]++; 
    
MySQL_Update(Killer
    
MySQL_Update(Victim

    return 
PLUGIN_CONTINUE


public 
ResetScore(id) { 
    
Kills[id] = 0
    
Deaths[id] = 0
    
MySQL_Update(id); 


public 
event_team_info()
{
    new 
id read_data);
        
    new 
team[12];
    
read_data2teamsizeof team );
    
    switch( 
team[0] )
    {
        case 
'C': {
            
Team[id] = 1;
        }
        case 
'T': {
            
Team[id] = 2;
        }
        case 
'S': {
            
Team[id] = 3;
        }
    }
    
MySQL_Update(id);
}

public 
client_disconnectedid 

    
OldName[id] = "";
    if( 
g_Loadedid ] ) 
        
MySQL_Deleteid 


public 
plugin_precache( ) 

    
get_time("online_players_%Y%m%d.log"g_logfilecharsmax(g_logfile)); 
    
log_errors("-------------------- == --------------------"); 

    
MySQL_Tuple SQL_MakeDbTupleHostUserPassDb 
    
#if AMXX_VERSION_NUM >= 183 
        
SQL_SetCharset(MySQL_Tuple,"utf8"); 
    
#endif 
     
    
new ErrorCode 
    MySQL_Connection 
SQL_ConnectMySQL_TupleErrorCodeMySQL_QuerycharsmaxMySQL_Query ) ) 
     
    if( 
MySQL_Connection == Empty_Handle 
        
set_fail_stateMySQL_Query 
     
    
SQL_ThreadQueryMySQL_Tuple"SQL_TrashHandler""CREATE TABLE IF NOT EXISTS online_players (steamid VARCHAR(40), username VARCHAR(128) COLLATE utf8_lithuanian_ci NOT NULL, kills INT(11), deaths INT(11), team INT(1) )" )   

    
SQL_ThreadQueryMySQL_Tuple"SQL_TrashHandler""DELETE FROM online_players" )   


public 
MySQL_Loadid )  

    new 
Temp
    
Temp] = id 
     
    formatex
MySQL_QuerycharsmaxMySQL_Query ), "SELECT * FROM `online_players` WHERE `username` = '%s'"get_user_name_ex(id) ) 
    
SQL_ThreadQueryMySQL_Tuple"Load_PlayerInfo"MySQL_QueryTempsizeofTemp ) ) 

                                                                                 
public 
Load_PlayerInfoFailStateHandle:QueryError[ ], ErrcodeData[ ], DataSize )  

    if( 
FailState == TQUERY_CONNECT_FAILED )  
    { 
        new 
Players32 ], PlayersNum 
        get_players
PlayersPlayersNum"ch" 
         
        for( new 
iPlayersNumi++ ) 
            
log_errors"Load - Could not connect to SQL database.  [%d] %s"ErrcodeError 
    } 
             
    else if( 
FailState == TQUERY_QUERY_FAILED 
    { 
        new 
Players32 ], PlayersNum 
        get_players
PlayersPlayersNum"ch" 
         
        for( new 
iPlayersNumi++ ) 
        { 
            
log_errors"Load Query failed. [%d] %s"ErrcodeError 
        } 
    } 
    new 
id Data
     
    if( !
is_user_connectedid ) ) 
        return 
         
    if( 
SQL_NumResultsQuery ) < )  
    { 
        
formatexMySQL_QuerycharsmaxMySQL_Query ), "INSERT INTO `online_players` (`steamid`, `username`, `kills`, `deaths`, `team`) VALUES ('%s', '%s', '%d', '%d', '%d')"get_user_steamid_ex(id), get_user_name_ex(id), Kills[id], Deaths[id], Team[id]) 
        
SQL_ThreadQueryMySQL_Tuple"SQL_TrashHandler"MySQL_Query 
        
log_errors("%s"MySQL_Query
        
g_Loadedid ] = true 
    



public 
MySQL_Updateid ) { 
    
formatexMySQL_QuerycharsmaxMySQL_Query ), "UPDATE `online_players` SET `kills` = '%d', `deaths` = '%d', `team` = '%d' WHERE `username` = '%s'"Kills[id], Deaths[id], Team[id], get_user_name_ex(id) ) 
    
SQL_ThreadQuery(MySQL_Tuple"SQL_TrashHandler"MySQL_Query);     


public 
MySQL_UpdateName(id) {
    
replace_all(OldName[id], 32"'""\'"); 
    
replace_all(OldName[id], 32"^"", "\^""); 

    
formatexMySQL_QuerycharsmaxMySQL_Query ), "UPDATE `online_players` SET `username` = '%s' WHERE `username` = '%s'"get_user_name_ex(id), OldName[id] ) 
    
SQL_ThreadQuery(MySQL_Tuple"SQL_TrashHandler"MySQL_Query);   
}

public 
MySQL_Delete( const id )  

    
formatexMySQL_QuerycharsmaxMySQL_Query ), "DELETE from `online_players` WHERE `username` = '%s'"get_user_name_ex(id) ) 
    
SQL_ThreadQuery(MySQL_Tuple"SQL_TrashHandler"MySQL_Query); 


public 
SQL_TrashHandlerFailState,Handle:QueryError[ ], Errcode,Data[ ], DataSize )   
{  
    if( 
FailState == TQUERY_CONNECT_FAILED 
        
log_errors"Load - Could not connect to SQL database.  [%d] %s"ErrcodeError )  
         
    else if( 
FailState == TQUERY_QUERY_FAILED 
        
log_errors"Load Query failed. [%d] %s"ErrcodeError 
     
    
SQL_FreeHandleQuery 


public 
plugin_end( )  
{    
    
SQL_FreeHandleMySQL_Connection 


stock log_errors(const szText[], any:...) 

    static 
szMessage[256]; 
    
vformat(szMessage256szText2); 
     
    
log_to_file(g_logfileszMessage); 
     
    return 
PLUGIN_HANDLED


stock get_user_name_ex(id

    new 
szName[33]; 
    
get_user_name(idszNamecharsmax(szName)); 

    
replace_all(szNamecharsmax(szName), "'""\'"); 
    
replace_all(szNamecharsmax(szName), "^"", "\^""); 

    return 
szName
}  

stock get_user_steamid_ex(id) {
    new 
steamid[33]
    
get_user_authididsteamidcharsmax(steamid))  

    return 
steamid


Last edited by 4ever16; 05-10-2019 at 10:24.
4ever16 is offline
JocAnis
Veteran Member
Join Date: Jun 2010
Old 04-28-2019 , 15:01   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #2

line: OldName[id] = oldname;
i think you cant do that with string, but theres two ways: copy or formatex
so i think it would go:
Code:
formatex( OldName[ id ], charsmax( OldName[] ), oldname )
about adding kick/ban you must do register_clcmd( "amx_ban", "ban_func" ) and then in ban_func read arguments...and then this plugin must be placed before your amx_ban.amxx plugin in plugins.ini
__________________
KZ Public Autocup - PrimeKZ

My blog: http://primekz.xyz (in progress...) - not active (dec 2022)
JocAnis is offline
4ever16
Veteran Member
Join Date: Apr 2015
Old 04-28-2019 , 15:16   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #3

#2 didn't work.
4ever16 is offline
JocAnis
Veteran Member
Join Date: Jun 2010
Old 04-28-2019 , 15:32   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #4

i dont know what you mean by #2 sorry

but also in that code, when updating nick, its more logical to do with steamid as condition no oldnick...
so
Code:
formatex( MySQL_Query, charsmax( MySQL_Query ), "UPDATE `online_players` SET `username` = '%s' WHERE `username` = '%s'", get_user_name_ex(id), OldName[id] )

->

formatex( MySQL_Query, charsmax( MySQL_Query ), "UPDATE `online_players` SET `username` = '%s' WHERE `steamid` = '%s'", get_user_name_ex(id), get_user_steamid_ex(id) )
__________________
KZ Public Autocup - PrimeKZ

My blog: http://primekz.xyz (in progress...) - not active (dec 2022)

Last edited by JocAnis; 04-28-2019 at 15:32.
JocAnis is offline
4ever16
Veteran Member
Join Date: Apr 2015
Old 04-28-2019 , 16:33   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #5

#4 didn't work.
4ever16 is offline
nacknic
Senior Member
Join Date: Mar 2019
Old 05-02-2019 , 12:46   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #6

maybe my first code help you. (im now 2month in this amxmodx)
change nick +txt(like db sql).

https://pastebin.com/D5jbgJYD

Last edited by nacknic; 05-02-2019 at 12:47.
nacknic is offline
4ever16
Veteran Member
Join Date: Apr 2015
Old 05-02-2019 , 13:58   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #7

Quote:
Originally Posted by nacknic View Post
maybe my first code help you. (im now 2month in this amxmodx)
change nick +txt(like db sql).

https://pastebin.com/D5jbgJYD
Didn't help.
4ever16 is offline
4ever16
Veteran Member
Join Date: Apr 2015
Old 05-10-2019 , 06:19   Re: MYSQL if kicked/banned or change nickname doesnt update.
Reply With Quote #8

.............................

Last edited by 4ever16; 05-14-2019 at 10:39.
4ever16 is offline
Reply


Thread Tools
Display Modes

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 16:33.


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