30.03.2012, 00:00
*sigh*
pawn Код:
enum E_accVars
{
Password[ 64 ],
Model,
Cash,
accLVL,
IsVIP,
SpawnWeapon[ 4 ],
SpawnWeaponAmmo[ 4 ]
}
new accInfo[ MAX_PLAYERS ] [ E_accVars ];
pawn Код:
public OnPlayerConnect(playerid)
{
new s_USR[ 34 + 1 ], p_Name[ MAX_PLAYER_NAME ], s_CAPTION[ 64 ], s_INFO[ 256 ];
GetPlayerName(playerid, p_Name, sizeof( p_Name ) ), format(s_USR, sizeof( s_USR ), "%s/%s.ini", USER_DIRECTORY, p_Name );
if( fexist( s_USR ) )
{
INI_ParseFile( s_USR, "LoadAccount_%s", .bExtra = true, .extra = playerid );
format( s_CAPTION, sizeof( s_CAPTION ), ""#ORANGE"<~> CONSOLE: "#LIME"Welcome to S:DM Version %d!", (SCRIPT_VERSION) ),
format( s_INFO, sizeof( s_INFO ), "\t\t\t\tWelcome to S:DM Version %d, "#SILVER"%s!\n\n\n"#LIME"P"#SILVER"lease log-in to access your account. Otherwise, hit quit to be returned back to your desktop.", (SCRIPT_VERSION), p_Name );
SHOWDIALOG_RETURNINGUSER;
ClearChat( playerid );
}
else
{
format(s_CAPTION, sizeof( s_CAPTION ), ""#ORANGE"<~> CONSOLE: "#LIME"Welcome to S:DM Version %d!", (SCRIPT_VERSION) ),
format(s_INFO, sizeof( s_INFO ), ""#ORANGE"\t\t\t\tWelcome to S:DM Version "#LIME"%d, "#SILVER"%s!\n\n\n"#LIME"O"#SILVER"ur script requires that all new users register their accounts before playing.\n\tIt only takes a second, is completely free, and unlocks our ENTIRE community!", (SCRIPT_VERSION), p_Name ),
SHOWDIALOG_NEWUSER;
ClearChat( playerid );
}
accLoggedIn [ playerid ] = false;
return true;
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
if( spawnedVehicle[ playerid ] != -1 ) { DestroyVehicle( spawnedVehicle[ playerid ] ), printf( "DESPAWN: Vehicle ID %d destroyed.", spawnedVehicle[ playerid ] ), spawnedVehicle[ playerid ] = -1; }
if( playerTimer[ playerid ] != -1 ) { KillTimer( playerTimer[ playerid ] ), printf("KILL: Player Timer %d destroyed.", playerTimer[ playerid ] ), playerTimer[ playerid ] = -1; }
if( accLoggedIn[ playerid ] == true ) {
new s_USR[ 34 + 1 ], p_Name[ MAX_PLAYER_NAME ];
GetPlayerName(playerid, p_Name, sizeof( p_Name ) ), format(s_USR, sizeof( s_USR ), "%s/%s.ini", USER_DIRECTORY, p_Name );
new INI:myAcc = INI_Open( s_USR );
INI_SetTag( myAcc, "account" );
INI_WriteInt( myAcc, "AccLVL", accInfo[ playerid ] [ accLVL ] );
INI_WriteInt( myAcc, "Model", accInfo[ playerid ] [ Model ] );
INI_WriteInt( myAcc, "IsVIP", accInfo[ playerid ] [ IsVIP ] );
INI_WriteInt( myAcc, "Cash", accInfo[ playerid ] [ Cash ] );
INI_WriteInt( myAcc, "SpawnWeapon1", accInfo[ playerid ] [ SpawnWeapon ] [ 0 ] );
INI_WriteInt( myAcc, "SpawnWeapon1Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 0 ] );
INI_WriteInt( myAcc, "SpawnWeapon2", accInfo[ playerid ] [ SpawnWeapon ] [ 1 ] );
INI_WriteInt( myAcc, "SpawnWeapon2Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 1 ] );
INI_WriteInt( myAcc, "SpawnWeapon3", accInfo[ playerid ] [ SpawnWeapon ] [ 2 ] );
INI_WriteInt( myAcc, "SpawnWeapon3Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 2 ] );
INI_WriteInt( myAcc, "SpawnWeapon4", accInfo[ playerid ] [ SpawnWeapon ] [ 3 ] );
INI_WriteInt( myAcc, "SpawnWeapon4Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 3 ] );
INI_Close( myAcc );
}
accLoggedIn [ playerid ] = false;
return true;
}
pawn Код:
case dialog_RETURNINGUSER: {
if( !response ) { ClearChat( playerid ), SendErrorMessage( playerid, "You have chosen to leave the server." ), Kick( playerid ); }
if( response ) {
if( !strlen( inputtext ) ) { //Incorrect password.
new s_CAPTION[ 64 ], s_INFO[ 256 ], p_Name[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, p_Name, sizeof( p_Name ) );
format( s_CAPTION, sizeof( s_CAPTION ), ""#ORANGE"<~> CONSOLE: "#LIME"Welcome to S:DM Version %d!", (SCRIPT_VERSION) ),
format( s_INFO, sizeof( s_INFO ), "\t\t\t\tWelcome to S:DM Version %d, "#SILVER"%s!\n\n\n"#LIME"P"#SILVER"lease log-in to access your account. Otherwise, hit quit to be returned back to your desktop.", (SCRIPT_VERSION), p_Name );
SHOWDIALOG_RETURNINGUSER;
}
if( strcmp( accInfo[ playerid ] [ Password ], inputtext, false ) == 0 ) {
new s_MSG[ 128 ], s_USR[ 34 + 1 ], p_Name[ MAX_PLAYER_NAME ];
GetPlayerName(playerid, p_Name, sizeof( p_Name ) ), format(s_USR, sizeof( s_USR ), "%s/%s.ini", USER_DIRECTORY, p_Name );
INI_ParseFile( s_USR, "LoadAccount_%s", .bExtra = true, .extra = playerid );
ClearChat( playerid );
format( s_MSG, sizeof( s_MSG ), "<~> CONSOLE: "#WHITE"Welcome back! %s", randomSmiley( ) );
SendClientMessage( playerid, c_ORANGE, s_MSG );
ResetPlayerMoney( playerid );
printf("%d", accInfo [ playerid ] [ Cash ] ); //Prints 0, even though it's 500.
GivePlayerMoney( playerid, accInfo [ playerid ] [ Cash ] );
accLoggedIn [ playerid ] = true;
}
}
}
pawn Код:
forward LoadAccount_account( playerid, name[ ], value[ ] );
public LoadAccount_account( playerid, name[ ], value[ ] )
{
INI_String( "Password", accInfo[ playerid ] [ Password ], 64 );
INI_Int( "AccLVL", accInfo[ playerid ] [ accLVL ] );
INI_Int( "Model", accInfo[ playerid ] [ Model ] );
INI_Int( "IsVIP", accInfo[ playerid ] [ IsVIP ] );
INI_Int( "Cash", accInfo[ playerid ] [ Cash ] );
INI_Int( "SpawnWeapon1", accInfo[ playerid ] [ SpawnWeapon ] [ 0 ] );
INI_Int( "SpawnWeapon1Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 0 ] );
INI_Int( "SpawnWeapon2", accInfo[ playerid ] [ SpawnWeapon ] [ 1 ] );
INI_Int( "SpawnWeapon2Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 1 ] );
INI_Int( "SpawnWeapon3", accInfo[ playerid ] [ SpawnWeapon ] [ 2 ] );
INI_Int( "SpawnWeapon3Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 2 ] );
INI_Int( "SpawnWeapon4", accInfo[ playerid ] [ SpawnWeapon ] [ 3 ] );
INI_Int( "SpawnWeapon4Ammo", accInfo[ playerid ] [ SpawnWeaponAmmo ] [ 3 ] );
return true;
}