27.03.2012, 17:02
Acccount System
V 1.1 FINAL
Thanks to ****** for y_ini and to Zex for zcmdV 1.1 FINAL
Last Release: Account System v.1.0
Curent Release: Account System v. 1.1(switch to Zcmd & Y_INI )
Код:
/*------------------------------- ****** - y_ini --------------------------------- JoKeR - Script --------------------------------- www.sa-mp.ro - Tutorials www.sa-mp.com- Tutorials --------------------------------*/ #include <a_samp> #include < zcmd > #include < YDB > #include < YSI\y_ini > #define DIRECTORY "Accounts/%s.ini" //Colors// #define COLOR_SYSTEM (0xEFEFF7AA) #define green (0x33FF33AA) #define blue (0x00FFFFAA) forward Pass( playerid, name[ ], value[ ] ); forward LoadpUser( playerid, name[ ], value[ ] ); public OnFilterScriptInit( ) { print( "\n--------------------------------------" ); print( "Account System " ); print( "--------------------------------------\n" ); return ( 1 ); } public OnPlayerRequestSpawn( playerid ) { if( INI_Exist ( pName( playerid ) ) ) { if( GetPVarInt( playerid, "pLog" ) == 0 ) { SendClientMessage( playerid, green, "You have already registered, use /login to log into your account. "); return ( 0 ); } } return ( 1 ); } public OnPlayerDisconnect( playerid ) { if( GetPVarInt( playerid, "pLog" ) == 1 ) { new file[ 256 ]; format( file, sizeof file, DIRECTORY, pName( playerid ) ); new INI:PlayerAcc = INI_Open( file ); INI_WriteInt( PlayerAcc, "Money", GetPlayerMoney( playerid ) ); INI_WriteInt( PlayerAcc, "Score", GetPlayerScore( playerid ) ); INI_Close( PlayerAcc ); SetPVarInt( playerid, "pLog", 0 ); } return ( 1 ); } public OnPlayerConnect( playerid ) { if( GetPVarInt( playerid, "pLog" ) == 0 ) { if( INI_Exist ( pName( playerid ) ) ) { SystemMsg( playerid, "You have already registered, please /login [password] to login." ); } else SystemMsg( playerid, "You do not have an account, use /register [password] to register then /login [password] to login." ); } return ( 1 ); } stock SystemMsg( playerid, msg[ ] ) { if( ( IsPlayerConnected ( playerid ) ) && ( strlen ( msg ) > 0 ) ) SendClientMessage( playerid, COLOR_SYSTEM, msg ); return ( 1 ); } stock pName( playerid ) { new name[ MAX_PLAYER_NAME ]; GetPlayerName( playerid, name, sizeof name ); return name; } CMD:register( playerid, params[ ] ) { new file[ 256 ]; format( file, sizeof file, DIRECTORY, pName( playerid ) ); new INI:PlayerAcc = INI_Open( file ); if( GetPVarInt( playerid, "pLog" ) == 1 ) return SystemMsg( playerid, "You have already had an account." ); if( INI_Exist( pName( playerid ) ) ) return SystemMsg( playerid, "You have already created an account, /login [password] to login." ); if( strlen ( params ) == 0 ) return SystemMsg( playerid, "Usage: /register [password]" ); SystemMsg( playerid, "You have successfully created your account, now use /login [password] to login." ); INI_WriteString( PlayerAcc, "Name", pName( playerid ) ); INI_WriteString( PlayerAcc, "Password", params ); INI_WriteInt( PlayerAcc, "Money", 0 ); INI_WriteInt( PlayerAcc, "Score", 0 ); INI_Close( PlayerAcc ); return ( 1 ); } CMD:login( playerid, params[ ] ) { new file[ 256 ], Passw[ 500 ]; format( file, sizeof file, DIRECTORY, pName( playerid ) ); INI_ParseFile(file, "Pass", false, true, playerid); GetPVarString( playerid, "pPass", Passw, sizeof Passw ); if( GetPVarInt( playerid, "pLog" ) == 1 ) return SystemMsg( playerid, "You have already logined." ); if( !INI_Exist ( pName( playerid ) ) ) return SystemMsg( playerid, "You do not have an account, please /register [password]" ); if( isnull ( params ) ) return SystemMsg( playerid, "Usage: /login [password]" ); if( strcmp ( Passw, params, false ) == 0 ) { SetPlayerScore( playerid, GetPVarInt( playerid, "pScore" ) ); ResetPlayerMoney( playerid ); GivePlayerMoney( playerid, GetPVarInt( playerid, "pCash" ) ); SetPVarInt( playerid, "pLog", 1 ); SystemMsg( playerid, "You have successfully logined." ); }else SystemMsg( playerid, "Wrong password or nickname!" ); return ( 1 ); } public Pass( playerid, name[ ], value[ ] ) { if( !strcmp ( name, "Password" ) ) { SetPVarString( playerid, "pPass", value ); } } public LoadpUser( playerid, name[ ], value[ ] ) { if( !strcmp ( name, "Money" ) ) { SetPVarInt( playerid, "pCash", strval( value ) ); } if( !strcmp ( name, "Score" ) ) { SetPVarInt( playerid, "pScore", strval( value ) ); } } /*----------------------------------------- Thanks for use my Register & Login Script ------------------------------------------*/