make server variables module more easy to use
This commit is contained in:
parent
22bf77c441
commit
0532bf946a
@ -15,19 +15,22 @@
|
|||||||
/* ** Macros ** */
|
/* ** Macros ** */
|
||||||
#define GetServerVariableInt GetGVarInt
|
#define GetServerVariableInt GetGVarInt
|
||||||
#define GetServerVariableFloat GetGVarFloat
|
#define GetServerVariableFloat GetGVarFloat
|
||||||
|
#define GetServerVariableString GetGVarString
|
||||||
|
|
||||||
#define UpdateServerVariableString(%0,%1) \
|
#define UpdateServerVariableString(%0,%1) \
|
||||||
(UpdateServerVariable(%0, 0, 0, %1, GLOBAL_VARTYPE_STRING))
|
(UpdateServerVariable(%0, .string_value = (%1), .type = GLOBAL_VARTYPE_STRING))
|
||||||
|
|
||||||
#define UpdateServerVariableInt(%0,%1) \
|
#define UpdateServerVariableInt(%0,%1) \
|
||||||
(UpdateServerVariable(%0, %1, 0, "", GLOBAL_VARTYPE_INT))
|
(UpdateServerVariable(%0, .int_value = (%1), .type = GLOBAL_VARTYPE_INT))
|
||||||
|
|
||||||
#define UpdateServerVariableFloat(%0,%1) \
|
#define UpdateServerVariableFloat(%0,%1) \
|
||||||
(UpdateServerVariable(%0, 0, %1, "", GLOBAL_VARTYPE_FLOAT))
|
(UpdateServerVariable(%0, .float_value = (%1), .type = GLOBAL_VARTYPE_FLOAT))
|
||||||
|
|
||||||
|
#define IsValidServerVariable(%0) \
|
||||||
|
(GetGVarType(%0) != GLOBAL_VARTYPE_NONE)
|
||||||
|
|
||||||
/* ** Hooks ** */
|
/* ** Hooks ** */
|
||||||
hook OnGameModeInit( )
|
hook OnGameModeInit( ) {
|
||||||
{
|
|
||||||
mysql_function_query( dbHandle, "SELECT * FROM `SERVER`", true, "OnLoadServerVariables", "" );
|
mysql_function_query( dbHandle, "SELECT * FROM `SERVER`", true, "OnLoadServerVariables", "" );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -36,62 +39,76 @@ hook OnGameModeInit( )
|
|||||||
thread OnLoadServerVariables( )
|
thread OnLoadServerVariables( )
|
||||||
{
|
{
|
||||||
new
|
new
|
||||||
rows, fields, i = -1,
|
rows = cache_get_row_count( );
|
||||||
Field[ 30 ],
|
|
||||||
szName[ 64 ],
|
|
||||||
iValue,
|
|
||||||
Float: fValue,
|
|
||||||
iType
|
|
||||||
;
|
|
||||||
|
|
||||||
cache_get_data( rows, fields );
|
|
||||||
if ( rows )
|
if ( rows )
|
||||||
{
|
{
|
||||||
while( ++i < rows )
|
new variable_name[ 64 ];
|
||||||
{
|
new string_value[ 256 ];
|
||||||
cache_get_field_content( i, "NAME", szName );
|
|
||||||
cache_get_field_content( i, "STRING_VAL", szBigString );
|
|
||||||
cache_get_field_content( i, "INT_VAL", Field ), iValue = strval( Field );
|
|
||||||
cache_get_field_content( i, "FLOAT_VAL", Field ), fValue = floatstr( Field );
|
|
||||||
cache_get_field_content( i, "TYPE", Field ), iType = strval( Field );
|
|
||||||
|
|
||||||
switch( iType )
|
for ( new i = 0; i < rows; i ++ )
|
||||||
{
|
{
|
||||||
case GLOBAL_VARTYPE_INT: SetGVarInt( szName, iValue );
|
new
|
||||||
case GLOBAL_VARTYPE_STRING: SetGVarString( szName, szBigString );
|
variable_type = cache_get_field_content_int( i, "TYPE", dbHandle );
|
||||||
case GLOBAL_VARTYPE_FLOAT: SetGVarFloat( szName, fValue );
|
|
||||||
|
cache_get_field_content( i, "NAME", variable_name );
|
||||||
|
|
||||||
|
switch ( variable_type )
|
||||||
|
{
|
||||||
|
case GLOBAL_VARTYPE_INT: SetGVarInt( variable_name, cache_get_field_content_int( i, "INT_VAL", dbHandle ) );
|
||||||
|
case GLOBAL_VARTYPE_STRING: cache_get_field_content( i, "STRING_VAL", string_value ), SetGVarString( variable_name, string_value );
|
||||||
|
case GLOBAL_VARTYPE_FLOAT: SetGVarFloat( variable_name, cache_get_field_content_float( i, "FLOAT_VAL", dbHandle ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf( "[SERVER] %d server variables have been loaded.", rows );
|
return printf( "[SERVER] %d server variables have been loaded.", rows ), 1;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stock UpdateServerVariable( szName[ 64 ], intVal, Float: floatVal, stringVal[ 128 ], type )
|
stock UpdateServerVariable( const variable_name[ 64 ], int_value = 0, Float: float_value = 0.0, string_value[ 128 ] = '\0', type = GLOBAL_VARTYPE_INT )
|
||||||
{
|
{
|
||||||
static
|
static
|
||||||
szString[ 256 ];
|
query[ 256 ];
|
||||||
|
|
||||||
switch ( type )
|
switch ( type )
|
||||||
{
|
{
|
||||||
case GLOBAL_VARTYPE_INT: format( szString, 128, "UPDATE `SERVER` SET `INT_VAL`=%d WHERE `NAME`='%s'", intVal, mysql_escape( szName ) ), SetGVarInt( szName, intVal );
|
case GLOBAL_VARTYPE_INT: {
|
||||||
case GLOBAL_VARTYPE_STRING: format( szString, 256, "UPDATE `SERVER` SET `STRING_VAL`='%s' WHERE `NAME`='%s'", mysql_escape( stringVal ), mysql_escape( szName ) ), SetGVarString( szName, stringVal );
|
mysql_format( dbHandle, query, sizeof ( query ), "UPDATE `SERVER` SET `INT_VAL`=%d WHERE `NAME`='%e'", int_value, variable_name );
|
||||||
case GLOBAL_VARTYPE_FLOAT: format( szString, 128, "UPDATE `SERVER` SET `FLOAT_VAL`=%f WHERE `NAME`='%s'", floatVal, mysql_escape( szName ) ), SetGVarFloat( szName, floatVal );
|
SetGVarInt( variable_name, int_value );
|
||||||
default: return;
|
}
|
||||||
|
case GLOBAL_VARTYPE_STRING: {
|
||||||
|
mysql_format( dbHandle, query, sizeof ( query ), "UPDATE `SERVER` SET `STRING_VAL`='%e' WHERE `NAME`='%e'", string_value, variable_name );
|
||||||
|
SetGVarString( variable_name, string_value );
|
||||||
|
}
|
||||||
|
case GLOBAL_VARTYPE_FLOAT: {
|
||||||
|
mysql_format( dbHandle, query, sizeof ( query ), "UPDATE `SERVER` SET `FLOAT_VAL`=%f WHERE `NAME`='%e'", float_value, variable_name );
|
||||||
|
SetGVarFloat( variable_name, float_value );
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return; // prevent a query from being fired
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mysql_single_query( query );
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_single_query( szString );
|
stock AddServerVariable( const variable_name[ 64 ], const value[ 128 ], type )
|
||||||
}
|
|
||||||
|
|
||||||
stock AddServerVariable( szName[ 64 ], szValue[ 128 ], type )
|
|
||||||
{
|
{
|
||||||
|
static
|
||||||
|
query[ 300 ];
|
||||||
|
|
||||||
switch ( type )
|
switch ( type )
|
||||||
{
|
{
|
||||||
case GLOBAL_VARTYPE_INT: format( szLargeString, 164, "INSERT IGNORE INTO `SERVER`(`NAME`,`INT_VAL`,`TYPE`) VALUES ('%s',%d,%d)", mysql_escape( szName ), strval( szValue ), type );
|
case GLOBAL_VARTYPE_INT: {
|
||||||
case GLOBAL_VARTYPE_STRING: format( szLargeString, 296, "INSERT IGNORE INTO `SERVER`(`NAME`,`STRING_VAL`,`TYPE`) VALUES ('%s','%s',%d)", mysql_escape( szName ), mysql_escape( szValue ), type );
|
mysql_format( dbHandle, query, sizeof ( query ), "INSERT IGNORE INTO `SERVER`(`NAME`,`INT_VAL`,`TYPE`) VALUES ('%e',%d,%d)", variable_name, strval( value ), type );
|
||||||
case GLOBAL_VARTYPE_FLOAT: format( szLargeString, 164, "INSERT IGNORE INTO `SERVER`(`NAME`,`FLOAT_VAL`,`TYPE`) VALUES ('%s',%f,%d)", mysql_escape( szName ), floatstr( szValue ), type );
|
|
||||||
default: return;
|
|
||||||
}
|
}
|
||||||
|
case GLOBAL_VARTYPE_STRING: {
|
||||||
mysql_single_query( szLargeString );
|
mysql_format( dbHandle, query, sizeof ( query ), "INSERT IGNORE INTO `SERVER`(`NAME`,`STRING_VAL`,`TYPE`) VALUES ('%e','%e',%d)", variable_name, value, type );
|
||||||
|
}
|
||||||
|
case GLOBAL_VARTYPE_FLOAT: {
|
||||||
|
mysql_format( dbHandle, query, sizeof ( query ), "INSERT IGNORE INTO `SERVER`(`NAME`,`FLOAT_VAL`,`TYPE`) VALUES ('%e',%f,%d)", variable_name, floatstr( value ), type );
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return; // prevent a query from being fired
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mysql_single_query( query );
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
//#pragma option -d3
|
//#pragma option -d3
|
||||||
#pragma dynamic 7200000
|
#pragma dynamic 7200000
|
||||||
|
|
||||||
// #define DEBUG_MODE
|
#define DEBUG_MODE
|
||||||
|
|
||||||
#if defined DEBUG_MODE
|
#if defined DEBUG_MODE
|
||||||
#pragma option -d3
|
#pragma option -d3
|
||||||
@ -429,9 +429,9 @@ public OnPlayerConnect( playerid )
|
|||||||
SendClientMessage( playerid, 0xa9c4e4ff, "{FF0000}[WARNING]{a9c4e4} The concept in this server and GTA in general may be considered explicit material." );
|
SendClientMessage( playerid, 0xa9c4e4ff, "{FF0000}[WARNING]{a9c4e4} The concept in this server and GTA in general may be considered explicit material." );
|
||||||
SendClientMessage( playerid, 0xa9c4e4ff, "{FF0000}[INFO]{a9c4e4} The server is currently operating on version " # FILE_BUILD "." );
|
SendClientMessage( playerid, 0xa9c4e4ff, "{FF0000}[INFO]{a9c4e4} The server is currently operating on version " # FILE_BUILD "." );
|
||||||
|
|
||||||
if ( GetGVarType( "connectsong" ) != GLOBAL_VARTYPE_NONE )
|
if ( IsValidServerVariable( "connectsong" ) )
|
||||||
{
|
{
|
||||||
GetGVarString( "connectsong", szNormalString );
|
GetServerVariableString( "connectsong", szNormalString );
|
||||||
PlayAudioStreamForPlayer( playerid, szNormalString );
|
PlayAudioStreamForPlayer( playerid, szNormalString );
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
@ -1848,7 +1848,7 @@ CMD:eventbank( playerid, params[ ] )
|
|||||||
{
|
{
|
||||||
GivePlayerCash( playerid, -iAmount );
|
GivePlayerCash( playerid, -iAmount );
|
||||||
p_AntiSpammyTS[ playerid ] = g_iTime + 15;
|
p_AntiSpammyTS[ playerid ] = g_iTime + 15;
|
||||||
UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + iAmount, 0.0, "", GLOBAL_VARTYPE_INT );
|
UpdateServerVariableInt( "eventbank", GetGVarInt( "eventbank" ) + iAmount );
|
||||||
SendGlobalMessage( playerid, ""COL_GOLD"[EVENT BANK]"COL_WHITE" Thanks for donating %s to the event bank, %s!", cash_format( iAmount ), ReturnPlayerName( playerid ) );
|
SendGlobalMessage( playerid, ""COL_GOLD"[EVENT BANK]"COL_WHITE" Thanks for donating %s to the event bank, %s!", cash_format( iAmount ), ReturnPlayerName( playerid ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1861,7 +1861,7 @@ CMD:eventbank( playerid, params[ ] )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
GivePlayerCash( playerid, iAmount );
|
GivePlayerCash( playerid, iAmount );
|
||||||
UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) - iAmount, 0.0, "", GLOBAL_VARTYPE_INT );
|
UpdateServerVariableInt( "eventbank", GetGVarInt( "eventbank" ) - iAmount );
|
||||||
SendGlobalMessage( -1, ""COL_GOLD"[EVENT BANK]"COL_WHITE" %s(%d) has withdrawn %s from the event bank!", ReturnPlayerName( playerid ), playerid, cash_format( iAmount ) );
|
SendGlobalMessage( -1, ""COL_GOLD"[EVENT BANK]"COL_WHITE" %s(%d) has withdrawn %s from the event bank!", ReturnPlayerName( playerid ), playerid, cash_format( iAmount ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5628,7 +5628,7 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
|
|
||||||
p_ArmyBanned{ playerid } = 0;
|
p_ArmyBanned{ playerid } = 0;
|
||||||
GivePlayerCash( playerid, -750000 );
|
GivePlayerCash( playerid, -750000 );
|
||||||
UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + 250000, 0.0, "", GLOBAL_VARTYPE_INT );
|
UpdateServerVariableInt( "eventbank", GetGVarInt( "eventbank" ) + 250000 );
|
||||||
|
|
||||||
format( szNormalString, sizeof( szNormalString ), "UPDATE `USERS` SET `ARMY_BAN`=0 WHERE ID=%d", p_AccountID[ playerid ] );
|
format( szNormalString, sizeof( szNormalString ), "UPDATE `USERS` SET `ARMY_BAN`=0 WHERE ID=%d", p_AccountID[ playerid ] );
|
||||||
mysql_single_query( szNormalString );
|
mysql_single_query( szNormalString );
|
||||||
@ -5645,7 +5645,7 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
|
|
||||||
p_CopBanned{ playerid } = 0;
|
p_CopBanned{ playerid } = 0;
|
||||||
GivePlayerCash( playerid, -500000 );
|
GivePlayerCash( playerid, -500000 );
|
||||||
UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + 170000, 0.0, "", GLOBAL_VARTYPE_INT );
|
UpdateServerVariable( "eventbank", GetGVarInt( "eventbank" ) + 170000, .type = GLOBAL_VARTYPE_INT );
|
||||||
|
|
||||||
format( szNormalString, sizeof( szNormalString ), "UPDATE `USERS` SET `COP_BAN`=0 WHERE ID=%d", p_AccountID[ playerid ] );
|
format( szNormalString, sizeof( szNormalString ), "UPDATE `USERS` SET `COP_BAN`=0 WHERE ID=%d", p_AccountID[ playerid ] );
|
||||||
mysql_single_query( szNormalString );
|
mysql_single_query( szNormalString );
|
||||||
|
Loading…
Reference in New Issue
Block a user