here i have login register script, but if i go on server and wish not to registrate...I click quit but it saves my account to scriptfiles/racuni.... if i try to enter with that account again it says that account exists but i can't login because i clicked quit and not specified password....i wish script do not creates a new file when clicking quit...how can I do it?
Код:
#include <a_samp>
#include <YSI\y_ini>
#include <YSI\y_commands>
#include <YSI\y_timers>
#include <foreach>
#include <sscanf2>
native WP_Hash(_buffer[], len, const str[]);
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define COLOR_WHITE "{FFFFFF}"
#define COLOR_RED "{F81414}"
#define COLOR_GREEN "{00FF22}"
enum USER_ENUM { Password[ 129 ], Score, Deaths, Money, Admin_Level }
new
userData[ MAX_PLAYERS ][ USER_ENUM ];
stock user_account_path(playerid)
{
new
string_path[ 128 ],
player_name[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, player_name, MAX_PLAYER_NAME );
format( string_path, sizeof ( string_path ), "racuni/%s.ini", player_name);
return
string_path;
}
forward @load_user_statistics(playerid, name[], value[]);
@load_user_statistics(playerid, name[], value[])
{
INI_String("Password", userData[ playerid ][ Password ], 129);
INI_Int("Money", userData[ playerid ][ Money ]);
INI_Int("AdminLevel", userData[ playerid ][ Admin_Level ]);
INI_Int("Deaths", userData[ playerid ][ Deaths ]);
INI_Int("Score", userData[ playerid ][ Score ]);
return 1;
}
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
Command_AddAltNamed("teleport", "tp");
repeat UpdatePermissions();
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print("iStrow RolePlay ucitan!");
print("----------------------------------\n");
}
#endif
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("iSRP 1.0");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
if( fexist ( user_account_path ( playerid ) ) )
{
INI_ParseFile(user_account_path ( playerid ), "load_user_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Welcome.Please log-in",""COLOR_WHITE"Type your "COLOR_GREEN"password "COLOR_WHITE"here to log-in", #Log-in, #Quit);
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Please register!",""COLOR_WHITE"Type your "COLOR_GREEN"password "COLOR_WHITE"here to register.", #Register, #Quit);
}
userData[ playerid ][ Admin_Level ] = 0;
userData[ playerid ][ Money ] = 0;
userData[ playerid ][ Deaths ] = 0;
userData[ playerid ][ Score ] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:File = INI_Open( user_account_path ( playerid ) );
INI_SetTag(File, "statistics" );
INI_WriteInt(File, "Money", GetPlayerMoney( playerid ) );
INI_WriteInt(File, "AdminLevel", userData[ playerid ][ Admin_Level ] );
INI_WriteInt(File, "Deaths", userData[ playerid ][ Deaths ] );
INI_WriteInt(File, "Score", GetPlayerScore( playerid ) );
INI_Close(File);
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if( killerid != INVALID_PLAYER_ID ) SetPlayerScore( killerid, GetPlayerScore( killerid ) + 1 );
userData[ playerid ][ Deaths ] ++;
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch( dialogid )
{
case DIALOG_REGISTER:
{
if (!response) return Kick( playerid );
if ( response )
{
if( !strlen ( inputtext ) ) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COLOR_WHITE"Welcome.Please log-in","You have enteCOLOR_RED an "COLOR_RED"invalid"COLOR_WHITE" password\n"COLOR_WHITE"Type your "COLOR_GREEN"password "COLOR_WHITE"here to log-in", #Register, #Quit);
new
hashed_password[ 129 ];
WP_Hash( hashed_password, sizeof ( hashed_password ), inputtext );
new INI:File = INI_Open( user_account_path( playerid ) );
INI_SetTag(File, "statistics" );
INI_WriteString(File, "Password", hashed_password );
INI_WriteInt(File, "Money", 0 );
INI_WriteInt(File, "AdminLevel", 0 );
INI_WriteInt(File, "Deaths", 0 );
INI_WriteInt(File, "Score", 0 );
INI_Close(File);
SetSpawnInfo( playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
SpawnPlayer( playerid );
}
}
case DIALOG_LOGIN:
{
if ( !response ) return Kick ( playerid );
if( response )
{
new
hashed_password[ 129 ];
WP_Hash( hashed_password, sizeof ( hashed_password ), inputtext );
if( !strcmp ( hashed_password, userData[ playerid ][ Password ] ) )
{
INI_ParseFile(user_account_path ( playerid ), "load_user_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney( playerid, userData[ playerid ][ Money ] );
SetPlayerScore( playerid, userData[ playerid ][ Score ] );
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COLOR_WHITE"Login",""COLOR_RED"You have entered an incorrect password.\n"COLOR_WHITE"Type your password below to login.","Login","Quit");
}
return 1;
}
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
/* OPTIONAL
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if( !success )
{
format( cmdtext, 128, "ERROR: Command %s does not exist, type /commands for all available commands", cmdtext );
SendClientMessage( playerid, -1, cmdtext );
}
return 1;
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if( !success ) return false;
return true;
}
*/
/* timers */
timer UpdatePermissions[1000]()
{
foreach( Player, i )
{
if ( IsPlayerAdmin ( i ) )
{
Command_SetPlayerNamed("setadmin", i, true );
Command_SetPlayerNamed("stats", i, false );
}
if ( userData[ i ][ Admin_Level ] == 2 )
{
Command_SetPlayerNamed("stats", i, true );
Command_SetPlayerNamed("setadmin", i, false );
}
else
{
Command_SetPlayerNamed("setadmin", i, false );
Command_SetPlayerNamed("stats", i, false );
}
}
}
/* stocks */
stock GetPlayerAdminLevel(playerid)
{
new
a_level_string[ 128 ];
if ( userData[ playerid ][ Admin_Level ] == 1 )
format( a_level_string, sizeof ( a_level_string ), "server uklonjen! Admin" );
else if ( userData[ playerid ][ Admin_Level ] == 2 )
format( a_level_string, sizeof ( a_level_string ), "Medium Admin" );
else if ( userData[ playerid ][ Admin_Level ] == 3 )
format( a_level_string, sizeof ( a_level_string ), "Head Admin" );
else
format( a_level_string, sizeof ( a_level_string ), "Unknown admin level!" );
return a_level_string;
}
/* commands */
YCMD:help( playerid, params[], help )
{
if ( help ) return SendClientMessage( playerid, -1, #Displays help about a command );
if ( isnull ( params ) ) return SendClientMessage( playerid, -1, #Syntax: /help [command] );
Command_ReProcess(playerid, params, true);
return 1;
}
YCMD:teleport( playerid, params[], help )
{
if ( help ) return SendClientMessage( playerid, -1, #This command teleports you somewhere! );
return 1;
}
YCMD:commands(playerid, params[], help)
{
if ( help ) return SendClientMessage(playerid, -1, #Lists all the commands a player can use! );
new
count = Command_GetPlayerCommandCount( playerid );
for ( new i = 0; i != count; ++i) SendClientMessage( playerid, -1, Command_GetNext ( i, playerid ) );
return 1;
}
YCMD:setadmin( playerid, params[], help )
{
new
TargetID, AdminLevel, PlayerName[ MAX_PLAYER_NAME ], TargetName[ MAX_PLAYER_NAME ], _message[ 128 ];
if ( help ) return SendClientMessage( playerid, -1, #This command promotes someone to admin );
if ( sscanf ( params, "ri", TargetID, AdminLevel ) ) return SendClientMessage( TargetID, -1, #Syntax /setadmin <playername/id> <level> );
if ( TargetID == INVALID_PLAYER_ID ) return SendClientMessage( playerid, -1, #Player offline );
GetPlayerName( playerid, PlayerName, sizeof ( PlayerName ) );
GetPlayerName( TargetID, TargetName, sizeof ( TargetName ) );
format( _message, sizeof ( _message ), "You have been promoted to admin level %d by %s", AdminLevel, PlayerName );
SendClientMessage( TargetID, -1, _message );
format( _message, sizeof ( _message ), "You have promoted %s to admin level %d", TargetName, AdminLevel );
SendClientMessage( playerid, -1, _message );
userData[ TargetID ][ Admin_Level ] = AdminLevel;
return 1;
}
YCMD:stats( playerid, params[], help )
{
if ( help ) return SendClientMessage( playerid, -1, #This command displays your current statistics );
if ( isnull ( params ) )
{
new
sString[ 128 ],
a_level = userData[ playerid ][ Admin_Level ],
money = userData[ playerid ][ Money ],
score = userData[ playerid ][ Score ],
deaths = userData[ playerid ][ Deaths ];
format ( sString, sizeof ( sString ), "Your stats are: Admin Level: %d | Money: %d | Score: %d | Deaths: %d", a_level, money, score, deaths );
SendClientMessage( playerid, -1, sString );
}
return 1;
}
YCMD:myadminlevel(playerid, params[], help)
{
if ( help ) return SendClientMessage( playerid, -1, #This command displays your current admin level );
if ( isnull ( params ) )
{
new
sString[ 128 ];
format( sString, sizeof ( sString ), "Your current admin level is: %s", GetPlayerAdminLevel(playerid) );
SendClientMessage( playerid, -1, sString );
}
return 1;
}
you didn't understood me well, when i enter server with Name_Username...and CLICK QUIT it saves a file Name_Username.ini to scripitfiles/racuni, and I don't won't it to be saved when i click QUIT because someone other will not be able to registrate with that username if it's in folder and not working ofcourse because there is no password
Yes I got that.