Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Release] [SA:MP] [FS] Register - Login System

Evil Scottish Overlord
Legend
Joined
May 18, 2007
Messages
5,843
Reaction score
5,253
Adapted directly from the SA:MP Forums. I take no credit for this, I am only sharing this script with the community. All credit goes to Catastroph from the SA:MP Forums

Catastroph on the SA:MP Forums said:
I saw many members have trouble about creating their own login/register system. To be honest, DracoBlue has explained much things about how to keep score&money but as I understand, still many beginner people cannot exactly understand what he explains. That is why I have just wanted to share my filterscript I use on my server to save scores and money.

Here is the source code of my filterscript, actually you don't get any error or warning but if you get any of it, or if you don't know how to compile a PWN file, can download either PWN and AMX file though:



Here's the source code:

Code:
// Register / Login Filterscript //

#include <a_samp>
#include <dudb>
#include <dutils>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

//Colors//
#define COLOR_SYSTEM 0xEFEFF7AA
#define green 0x33FF33AA
#define blue 0x00FFFFAA

new PLAYERLIST_authed[MAX_PLAYERS];

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print("Register / Login System");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print("Register / Login System");
	print("----------------------------------\n");
}

#endif

public OnPlayerRequestSpawn(playerid)
{
if (udb_Exists(PlayerName(playerid))){
if (!PLAYERLIST_authed[playerid]){
SendClientMessage(playerid,green,"You have already registered, use /login to log into your account.");
return 0;
}
}
return 1;
}

public OnPlayerDisconnect(playerid) {
  if (PLAYERLIST_authed[playerid]) {
     // If someone has logged in, it saves money and score.
    dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid));
    dUserSetINT(PlayerName(playerid)).("score",GetPlayerScore(playerid));
  }
  PLAYERLIST_authed[playerid]=false;
  return 1;
}

public OnPlayerConnect(playerid)
{

 	if (PLAYERLIST_authed[playerid]==0){
if (udb_Exists(PlayerName(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 0;
}
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
  dcmd(login,5,cmdtext);
  dcmd(register,8,cmdtext);
  return 0;
}

stock SystemMsg(playerid,msg[]) {
   if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) {
       SendClientMessage(playerid,COLOR_SYSTEM,msg);
   }
   return 1;
}

stock PlayerName(playerid) {
  new name[255];
  GetPlayerName(playerid, name, 255);
  return name;
}

  dcmd_register(playerid,params[]) {

    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"You have already had an account.");
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"You have already created an account, /login [password] to login.");
    if (strlen(params)==0) return SystemMsg(playerid,"USAGE: /register [password]");
    if (udb_Create(PlayerName(playerid),params)) return SystemMsg(playerid,"You have successfully created your account, now use /login [password] to login.");
    return true;

 }

  dcmd_login(playerid,params[]) {

    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"You have already logined.");
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"You do not have an account, please /register [password]");
    if (strlen(params)==0) return SystemMsg(playerid,"USAGE: /login [password]");
    if (udb_CheckLogin(PlayerName(playerid),params)) {
       SetPlayerScore(playerid,dUserINT(PlayerName(playerid)).("score"));
  	   SetPlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money"));
       PLAYERLIST_authed[playerid]=true;
       return SystemMsg(playerid,"You have successfully logined.");
    }
    return SystemMsg(playerid,"Wrong password or nickname!");
}

So all credits go to Catastroph and I hope this helps anyone who's making a gamemode and wants to use a register function.
 
Junior Spellweaver
Joined
Aug 29, 2007
Messages
197
Reaction score
0
Re: [FS] Register - Login System

Thanks ill just quickly put it in the game mode im currently usin
 
Joined
Jan 7, 2008
Messages
34
Reaction score
0
Lol, this might have been helpful BEFORE I spent a week trying to filter out the stuff Pawno CANT do, and use what it CAN do to write my own login/register/save. Pawno is like a programming language equivalant of a retarded midget XD. Nice release dude.
 
Experienced Elementalist
Joined
Feb 28, 2008
Messages
263
Reaction score
2
Re: [Release] [FS] Register - Login System

nice :))
 
I need money in RS. Help?
Joined
Jun 9, 2010
Messages
204
Reaction score
8
Yeah yeah, old script ... Idc ... I need this ... Anyway, thanks! Now I got something to register with. This is a filter script, right?
 
Back
Top