07.09.2011, 16:35
(
Last edited by Jafet_Macario; 08/10/2011 at 02:20 PM.
)
Register & Login System with Dialogs - DOF2
Introduction
This is my 2nd tutorial.
In this tutorial I'll show you how to create a register and login system, with dialogs, using DOF2.
What's DOF2?
DOF2 = Double-O-Files2, fast file reader and writer created by Double-O-Seven.
You can find more information here: https://sampforum.blast.hk/showthread.php?tid=253715
Step 1
Download Double-O-Files_2.inc from here: https://sampforum.blast.hk/showthread.php?tid=253715
Create a folder named "Users" in your scriptfiles.
Code:
..scriptfiles/Users
At the top of your script, include Double-O-Files_2.
pawn Code:
#include <Double-O-Files_2>
pawn Code:
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
Now, at the top of the script somewhere after includes, we got to save some variables, so we create an enum.
Enums, aka Enumerations are every useful for representing large groups of data and modifying constants quickly.
So we will store our Kills,Deaths,Money and Admin Level.
pawn Code:
enum pInfo
{
pKills,
pDeaths,
pMoney,
pAdmin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
Add
Code:
DOF2_Exit();
Example:
pawn Code:
public OnFilterScriptExit()
{
DOF2_Exit();
return 1;
}
pawn Code:
public OnPlayerConnect(playerid)
{
new file[64]; // We declare the size of the file
GetPlayerName(playerid,file,sizeof(file)); // We get the file name
format(file,sizeof(file),DOF2_File(file));// Here we get the path from DOF2_File (/Users)
if(DOF2_FileExists(file)) // We check if the player is registered
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Welcome.Please log-in","{FFFFFF}Type your {00FF22}password {FFFFFF}here to log-in","Log-in","Quit");
// The log-in dialog will pop up
}
else // If not registered
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Please register!","{FFFFFF}Type your {00FF22}password {FFFFFF}here to register.","Register","Quit");
// The register dialog will pop up
}
return 1;
}
Step 5
Now let's scroll down to OnDialogResponse callback.
pawn Code:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid) // We switch our dialog id's
{
case DIALOG_REGISTER: // If the dialog_register shows up ( id 1111)
{
if(!response) Kick(playerid); // If he click on Quit, he will get kicked
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Please register!","{FFFFFF}Type your {00FF22}password {FFFFFF}here to register.","Register","Quit");
// If he doesn't type anything, the dialog will show again.
if(response) // If he click on Register
{
new file[64]; // We declare the size of the file
GetPlayerName(playerid,file,sizeof(file)); // We get the file name
format(file,sizeof(file),DOF2_File(file)); // We get the path name from DOF2_File, that means from Users folder.
DOF2_CreateFile(file, inputtext); // Creates the file and the password.
DOF2_SetInt(file, "Kills", 0); // When the player register his kills will be set to 0, you can change
DOF2_SetInt(file, "Deaths", 0); // His deaths will be set to 0, you can change
DOF2_SetInt(file, "Money", 1000); // His money will be set to 1000, you can change
DOF2_SetInt(file, "AdminLevel", 0); // His Admin Level will be set to 0, you can change
DOF2_SaveFile(); // Saves the file.
SetSpawnInfo(playerid, 0, 0, 1722.5123, -1912.7931, 13.5647, 269.15, 0, 0, 0, 0, 0, 0); // Sets where the player will spawn, this coordinates are from the Unity Station in Los Santos
SpawnPlayer(playerid); // After registering, the player will spawn.
}
}
case DIALOG_LOGIN: // If dialog_login (id 2222) shows up
{
if(!response) Kick(playerid); // If he click on Quit, he will get kicked.
if(response) // If he click on Log-in
{
new file[64]; // We declare the size of the file
GetPlayerName(playerid,file,sizeof(file)); // We get the file name
format(file,sizeof(file),DOF2_File(file)); // We get the user path from DOF2_File ( folder Users )
if(DOF2_FileExists(file)) // If he is registered
{
if(DOF2_CheckLogin(file,inputtext)) // We check if the password match
{
PlayerInfo[playerid][pKills] = DOF2_GetInt(file,"Kills"); // We load our settings
PlayerInfo[playerid][pDeaths] = DOF2_GetInt(file,"Deaths");
PlayerInfo[playerid][pMoney] = DOF2_GetInt(file,"Money");
PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"AdminLevel");
SetSpawnInfo(playerid, 0, 0, 1722.5123, -1912.7931, 13.5647, 269.15, 0, 0, 0, 0, 0, 0); // We set the spawn (Unity Station)
SpawnPlayer(playerid); // The player spawns after log-in
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]); // We give the player his money
return 1;
}
else // If the password don't match, they will get an error
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Wrong Password!","{F81414}You have typed a wrong password\n{FFFFFF}Type your password here to log-in!","Log-in","Quit");
return 1;
}
}
}
}
}
return 1;
}
Now, we got to scroll down to OnPlayerDisconnect callback so when the player disconnects from the server his stats will be saved.
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
new file[64]; // We declare the size of the file
GetPlayerName(playerid,file,sizeof(file)); // We get the file name
format(file,sizeof(file),DOF2_File(file));// We get the user path from DOF2_File (folder Users)
DOF2_SetInt(file, "Kills",PlayerInfo[playerid][pKills]); // We set/update the players settings.
DOF2_SetInt(file, "Deaths",PlayerInfo[playerid][pDeaths]);
DOF2_SetInt(file, "Money",PlayerInfo[playerid][pMoney]);
DOF2_SetInt(file, "AdminLevel",PlayerInfo[playerid][pAdmin]);
return 1;
}
We got also to add values at Kills and Deaths, so we go at OnPlayerDeath callback.
pawn Code:
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pKills]++; // Will increase the killerid kills
PlayerInfo[playerid][pDeaths]++; // Will increase the playerid ( the one who died ) the deaths.
return 1;
}
Pastebin: >>> HERE <<<
FilterScript from: >>> CLICK ME LAZY ASS <<<
End
If I missed anything, or I didn't explain something good please reply, I tried my best, thanks.
You did all correct but your accounts aren't saving?
If you did all correct, or downloaded the package and you accounts aren't saving, guess your using vista/windows7 (I had this problem, and also another got it, not all) here is how to fix it:
Code:
Right Click on samp-server.exe Click on Properties And Check the box that says Run as Administrator Then Click Ok And your done it should work.
Double-O-Seven