Code:
#include < amxmodx >
#include < sqlx >
new const TABLE_NAME[ ] = "";
new const KEY_MAPNAME[ ] = "";
new const KEY_MAPCOUNT[ ] = "";
new Handle:g_hSqlTuple;
new g_szQuery[ 128 ];
new g_szMap[ 64 ];
public plugin_init( ) {
g_hSqlTuple = SQL_MakeStdTuple( );
formatex( g_szQuery, 127, "CREATE TABLE IF NOT EXISTS `%s` ( `%s` VARCHAR(64) NOT NULL, `%s` INT(10) NOT NULL );",
TABLE_NAME, KEY_MAPNAME, KEY_MAPCOUNT );
SQL_ThreadQuery( g_hSqlTuple, "QueryCreateTable", szQuery );
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED ) {
log_amx( "Query failed on create table." );
} else {
get_mapname( g_szMap, 63 );
strtolower( g_szMap, 63 );
formatex( g_szQuery, 127, "SELECT `%s` FROM `%s` WHERE `%s` = '%s';",
KEY_MAPCOUNT, TABLE_NAME, KEY_MAPNAME, g_szMap );
SQL_ThreadQuery( g_hSqlTuple, "QuerySelectMapCount", szQuery );
}
}
public QuerySelectMapCount( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED ) {
log_amx( "Query failed on select map count." );
} else {
if( SQL_NumResults( hQuery ) ) {
new iCount = SQL_ReadResult( hQuery, 0 ) + 1;
formatex( g_szQuery, 127, "UPDATE `%s` SET `%s` = `%s` + 1 WHERE `%s` = '%s';",
TABLE_NAME, KEY_MAPCOUNT, KEY_MAPCOUNT, KEY_MAPNAME, g_szMap );
} else {
formatex( g_szQuery, 127, "INSERT INTO `%s` ( `%s`, `%s` ) VALUES ( '%s', 1 );",
TABLE_NAME, KEY_MAPNAME, KEY_MAPCOUNT, g_szMap );
}
SQL_ThreadQuery( g_hSqlTuple, "QuerySetMapCount", g_szQuery );
}
}
public QuerySelectMapCount( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED ) {
log_amx( "Query failed on set map count." );
}
}