#include < amxmodx >
#include < sqlx >
new const g_sPrefix[ ] = "RegSystem";
new const g_sSQL_INFOS[ ][ ] =
{
"", // HOST
"", // USERNAME
"", // PASSWORD
"" // DATABASE
};
new Handle: g_iSqlTuple, g_sUserName[ 33 ][ 32 ], g_sPassword[ 33 ][ 32 ], g_iLoggedIn[ 33 ];
public plugin_init( )
{
register_plugin( "Sql Reg System", "1.0", "Demon" );
g_iSqlTuple = SQL_MakeDbTuple( g_sSQL_INFOS[ 0 ], g_sSQL_INFOS[ 1 ], g_sSQL_INFOS[ 2 ], g_sSQL_INFOS[ 3 ] );
new sThread[ 512 ];
formatex( sThread, charsmax( sThread ), "CREATE TABLE IF NOT EXISTS `reg_users` (`username` varchar( 32 ) NOT NULL, `password` varchar( 32 ) NOT NULL, `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY );" );
SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sThread, { 0 }, 1 );
register_clcmd( "Felhasznalonev", "GetUserName" );
register_clcmd( "Jelszo", "GetPassword" );
register_clcmd( "say /reg", "cmdReg" );
}
public cmdReg( iId ) { MainMenu( iId, 0 ); }
public MainMenu( iId, iMenu )
{
static sTxt[ 256 ], iMenuId, sItemId[ 8 ];
static const iNum = charsmax( sTxt );
formatex( sTxt, iNum, "\r[\w%s\r]\y ", g_sPrefix );
switch( iMenu )
{
case 0:
{
add( sTxt, iNum, "Regisztracios menu" );
iMenuId = menu_create( sTxt, "MainMenuH" );
if ( g_iLoggedIn[ iId ] == 3 ) menu_additem( iMenuId, "Kijelentkezes", "0 0" );
else
{
menu_additem( iMenuId, "Regisztracio", "1 0" );
menu_additem( iMenuId, "Bejelentkezes", "2 0" );
}
}
case 1, 2:
{
add( sTxt, iNum, iMenu == 1 ? "Regisztracio" : "Bejelentkezes" );
iMenuId = menu_create( sTxt, "MainMenuH" );
formatex( sTxt, iNum, "Felhasznalonev: \r%s", g_sUserName[ iId ] );
formatex( sItemId, charsmax( sItemId ), "1 %d", iMenu );
menu_additem( iMenuId, sTxt, sItemId );
formatex( sTxt, iNum, "Jelszo: \r%s^n", g_sPassword[ iId ] );
formatex( sItemId, charsmax( sItemId ), "2 %d", iMenu );
menu_additem( iMenuId, sTxt, sItemId );
formatex( sItemId, charsmax( sItemId ), "3 %d", iMenu );
menu_additem( iMenuId, iMenu == 1 ? "Regisztralas" : "Bejelentkezes", sItemId );
}
}
menu_display( iId, iMenuId, 0 );
}
public MainMenuH( iId, iMenuId, iItem )
{
if ( iItem != MENU_EXIT )
{
new sMenuName[ 78 ], sInfo[ 32 ], sDatas[ 2 ][ 16 ], iKey, iMenuNum;
menu_item_getinfo( iMenuId, iItem, iKey, sInfo, charsmax( sInfo ), sMenuName, charsmax( sMenuName ), iMenuNum );
parse( sInfo, sDatas[ 0 ], charsmax( sDatas[ ] ), sDatas[ 1 ], charsmax( sDatas[ ] ) );
iKey = str_to_num( sDatas[ 0 ] );
iMenuNum = str_to_num( sDatas[ 1 ] );
switch( iMenuNum )
{
case 0:
{
if ( ( g_iLoggedIn[ iId ] = iKey ) == 0 ) ChatColor( iId, "Sikeresen kijelentkeztel." );
else MainMenu( iId, ( g_iLoggedIn[ iId ] = iKey ) );
}
case 1, 2:
{
switch( iKey )
{
case 1: { client_cmd( iId, "messagemode Felhasznalonev" ); }
case 2: { client_cmd( iId, "messagemode Jelszo" ); }
case 3: { LoadDatas( iId, iMenuNum ); }
}
}
}
}
menu_destroy( iMenuId );
return PLUGIN_HANDLED;
}
public SaveDatas( iId )
{
static sText[ 128 ];
formatex( sText, charsmax( sText ), "INSERT INTO `reg_users` (`username`, `password`) VALUES (^"%s^", ^"%s^");", g_sUserName[ iId ], g_sPassword[ iId ] );
SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sText, { 0 }, 1 );
}
public LoadDatas( iId, iMode )
{
static sText[ 128 ], iArray[ 1 ];
iArray[ 0 ] = iId;
if ( iMode == 1 )
{
formatex( sText, charsmax( sText ), "SELECT * FROM `reg_users` WHERE username = ^"%s^";", g_sUserName[ iId ] );
iArray[ 0 ] += 100;
}
else formatex( sText, charsmax( sText ), "SELECT * FROM `reg_users` WHERE username = ^"%s^" AND password = ^"%s^";", g_sUserName[ iId ], g_sPassword[ iId ] );
SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sText, iArray, sizeof( iArray ) );
}
public ThreadHandler( iFailState, Handle:iQuery, const sErrorMsg[ ], iErrorCode, const iARRAY[ ], iArraySize, Float:fQueueTime )
{
if ( iFailState == TQUERY_CONNECT_FAILED )
{
set_fail_state( "Nem tudtam csatlakozni az adatbazishoz." );
return;
}
else if ( iFailState == TQUERY_QUERY_FAILED )
{
set_fail_state( "Query Error" );
return;
}
if ( iErrorCode )
{
log_amx( "%i - %s", iErrorCode, sErrorMsg );
return;
}
new iId = iARRAY[ 0 ];
if ( iId )
{
if ( iId > 100 )
{
iId -= 100;
if ( SQL_NumResults( iQuery ) > 0 )
{
g_iLoggedIn[ iId ] = 3;
ChatColor( iId, "Sikeresen bejelentkeztel." );
MainMenu( iId, 0 );
}
else
{
ChatColor( iId, "Hibas felhasznalonev es/vagy jelszo." );
MainMenu( iId, 2 );
}
}
else
{
if ( SQL_NumResults( iQuery ) > 0 )
{
ChatColor( iId, "Ez a felhasznalonev mar foglalt." );
MainMenu( iId, 1 );
}
else
{
g_iLoggedIn[ iId ] = 3;
ChatColor( iId, "Sikeresen regisztraltal. Felhasznaloneved: %s, Jelszavad: %s.", g_sUserName[ iId ], g_sPassword[ iId ] );
SaveDatas( iId );
MainMenu( iId, 0 );
}
}
}
return;
}
public GetUserName( iId )
{
static sUser[ 32 ];
read_args( sUser, charsmax( sUser ) );
remove_quotes( sUser );
if ( strlen( sUser ) < 5 )
{
ChatColor( iId, "A felhasznalonevednek hosszabb kell hogy legyen mint 5 karakter!" );
client_cmd( iId, "messagemode Felhasznalonev" );
}
else copy( g_sUserName[ iId ], charsmax( g_sUserName[ ] ), sUser );
MainMenu( iId, g_iLoggedIn[ iId ] );
}
public GetPassword( iId )
{
static sPass[ 32 ];
read_args( sPass, charsmax( sPass ) );
remove_quotes( sPass );
if ( strlen( sPass ) < 5 )
{
ChatColor( iId, "A jelszavad hosszabb kell hogy legyen mint 5 karakter!" );
client_cmd( iId, "messagemode Jelszo" );
}
else copy( g_sPassword[ iId ], charsmax( g_sPassword[ ] ), sPass );
MainMenu( iId, g_iLoggedIn[ iId ] );
}
public client_putinserver( iId )
{
g_iLoggedIn[ iId ] = 0;
g_sUserName[ iId ] = "";
g_sPassword[ iId ] = "";
}
public plugin_end( ) { SQL_FreeHandle( g_iSqlTuple ); }
stock ChatColor( iId, const sMessage[ ], any:... )
{
static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
vformat( sMsg, iMsgLen, sMessage, 3 );
format( sMsg, iMsgLen, "^4[%s]^1 %s", g_sPrefix, sMsg );
if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
if ( iId )
{
iPlayers[ 0 ] = iId;
iPlrNum = 1;
}
else get_players( iPlayers, iPlrNum, "ch" );
for ( new i, iPId; i < iPlrNum; ++i )
{
iPId = iPlayers[ i ];
if ( !is_user_connected( iPId ) ) continue;
message_begin( MSG_ONE, iIdMsg, _, iPId );
write_byte( iPId );
write_string( sMsg );
message_end( );
}
}