Junior Member
|
11-09-2010
, 08:19
Return a value from SQL ThreadQuery
|
#1
|
I have been studying few of the tutorials around here because I need a permanent gag plugin for my server with MySQL support. I have started editing one gag plugin and I'm currently stuck at this part:
PHP Code:
public CheckGag( id) { static szAuthid[ 35 ]; get_user_authid( id, szAuthid, 34 ); static szQuery[ 128 ]; formatex( szQuery, 127, "SELECT `GagDate` FROM `Players` WHERE `SteamID` = '%s';", szAuthid ); new iData[ 2 ]; iData[ 0 ] = ENCODE_TEXT( szAuthid ); new isGagged = SQL_ThreadQuery( g_SqlTuple, "QueryCheckGag", szQuery, iData, 2); server_print("iData: %i", isGagged) return PLUGIN_CONTINUE; }
public QueryCheckGag( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {
switch( iFailState ) { case TQUERY_CONNECT_FAILED: { log_amx( "Connection failed: %s", szError); } case TQUERY_QUERY_FAILED: { log_amx( "Query failed: %s", szError ); } default: { new iTimeStamp = SQL_ReadResult( hQuery, 0 ); log_amx("current time: %i, timestamp :%i", get_systime(), iTimeStamp) new iMonth, iDay, iYear, iHour, iMinute, iSecond; UnixToTime( iTimeStamp , iYear , iMonth , iDay , iHour , iMinute , iSecond ); static szNewId[ 35 ]; DECODE_TEXT( iData[ 0 ], szNewId, 34 ) new pid = str_to_num(szNewId) client_print(pid, print_chat, "Gagged until: %02d/%02d/%02d %02d:%02d:%02d" , iYear , iMonth , iDay , iHour , iMinute , iSecond ); if( get_systime( ) >= iTimeStamp ) { static szQuery[ 128 ]; formatex( szQuery, 127, "DELETE FROM `Players` WHERE `SteamID` = '%s';", szNewId ); SQL_ThreadQuery( g_SqlTuple, "QueryDeleteGag", szQuery )
} } } }
public QueryDeleteGag( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { switch( iFailState ) { case TQUERY_CONNECT_FAILED: { log_amx( "Connection failed: %s", szError); } case TQUERY_QUERY_FAILED: { log_amx( "Query failed: %s", szError ); } default: { } } }
The problem is that SQL_ThreadQuery always returns 1. I've tried it this way but still returns 1
PHP Code:
public CheckGag( id ) { static szAuthid[ 35 ]; get_user_authid( id, szAuthid, 34 ); static szQuery[ 128 ]; formatex( szQuery, 127, "SELECT `GagDate` FROM `Players` WHERE `SteamID` = '%s';", szAuthid ); new iData[ 2 ]; iData[ 0 ] = ENCODE_TEXT( szAuthid ); new iGag = SQL_ThreadQuery( g_SqlTuple, "QueryCheckGag", szQuery, iData, 2); server_print("iGag: %i", iGag); if ( iGag == 1 ) // gagged { return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public QueryCheckGag( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {
switch( iFailState ) { case TQUERY_CONNECT_FAILED: { log_amx( "Connection failed: %s", szError); } case TQUERY_QUERY_FAILED: { log_amx( "Query failed: %s", szError ); } default: { new iTimeStamp = SQL_ReadResult( hQuery, 0 ); log_amx("current time: %i, timestamp :%i", get_systime(), iTimeStamp) new iMonth, iDay, iYear, iHour, iMinute, iSecond; UnixToTime( iTimeStamp , iYear , iMonth , iDay , iHour , iMinute , iSecond ); static szNewId[ 35 ]; DECODE_TEXT( iData[ 0 ], szNewId, 34 ) new pid = str_to_num(szNewId) client_print(pid, print_chat, "Gag until: %02d/%02d/%02d %02d:%02d:%02d" , iYear , iMonth , iDay , iHour , iMinute , iSecond ); if( get_systime( ) >= iTimeStamp ) { static szQuery[ 128 ]; formatex( szQuery, 127, "DELETE FROM `Players` WHERE `SteamID` = '%s';", szNewId ); SQL_ThreadQuery( g_SqlTuple, "QueryDeleteGag", szQuery ) return 0; } } }
return 1; }
Last edited by retard; 11-09-2010 at 10:52.
|
|