Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
pawn Code:
// ========================================================================
// LOGIN REGISTER SYSTEM Y_INI + WHIRLPOOL explained !
// SIMPLE COMMAND USING STRCMP and ZCMD explained !
// RANDOM MESSAGES explained !
// Credits : Giroud12
// Contact : *******/mrzackysevenfold or forum.sa-mp.com/member.php?u=198770
// Any typo? mistake? bug? and blablabla? please inform to me
// Same as newbienoob tutorial but this explained more thing such as......
// Why do you need to learn from this tutorial?
// 1)lol, why not 2)explained login + register 3)will help newbie
// 4)explained simple commands 5)random message explained
// 6)because this is tutorial 7)will help you to improve your knowledge
// Any suggestion for updates? Just post it :)
// More commands will add in the next update
// ========================================================================
// Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
// ========================================================================
#include < a_samp >
// credits to Team SAMP
// you need to put this in any script that related to SAMP !!
#include < zcmd >
// credits to ZeeX
// for command
#include < YSI\y_ini >
// credits to Alex Cole aka Y_Less
// this is for LOGIN REGISTER system
native WP_Hash(buffer[],len,const str[]);
// this is whirlpool native
// for hashing
#define as FILTERSCRIPT
// this will define it as filterscript
#define X My Server
// this will define "X" to "My Server"
// it means "#X" is same with "My Server"
// I make it short
#define USE_ZCMD_COMMANDS true // true / false
#define USE_STRCMP_COMMANDS false // true / false
// if you make this two define true, the command will not 100% works
#define RED 0xAA3333AA
#define YELLOW 0xFFFF00AA
#define PURPLE 0x9370DBFF
// this is the colour defines, it use when send message
#define DIALOG_REGISTER 2011
#define DIALOG_LOGIN 2012
// this is the dialog define, I put 2011/2012 to prevent the dialog will mix
#define UserPath "Users/%s.ini"
// here is the userpath that will be use in saving player data
// "Users" is name of a folder that you need to put in "scriptfiles" folder
// You can change "Users" to any name you want
enum PlayerInfo
{
Pass[129],
// pass
Adminlevel,
// adminlevel
VIPlevel,
// viplevel
Money,
// money/cash
Scores,
// scores
Kills,
// kills
Deaths
// deaths
}
// all this enum will be use in saving players data
new pInfo[MAX_PLAYERS][PlayerInfo];
// make the script short/new variable that can be use
new RandomMSG[][] =
{
"Welcome To "#X" server v0.3x",
"Visit our website at forum.sa-mp.com",
"Play fair and dont cheating/hacking",
"Cheating/hacking will cause you kick/ban"
// above is all random messages, last random messages dont need to put ","
// edit or add more if you want
};
stock Path(playerid)
// create new stock for load the user data
{
new str[128],name[MAX_PLAYER_NAME];
// new string and name variable
GetPlayerName(playerid,name,sizeof(name));
// get player name
format(str,sizeof(str),UserPath,name);
return str;
}
forward loadaccount_user(playerid, name[], value[]);
// forward new function of loadaccount_user
public loadaccount_user(playerid, name[], value[])
// public for loadaccount_user
{
INI_String("Password", pInfo[playerid][Pass],129);
// this is a password so we use INI_STRING
INI_Int("AdminLevel",pInfo[playerid][Adminlevel]);
// this an AdminLevel so we use INI_INT Info:
INI_Int("VIPLevel",pInfo[playerid][VIPlevel]);
// same like above
INI_Int("Money",pInfo[playerid][Money]);
// same like above
INI_Int("Scores",pInfo[playerid][Scores]);
// same like above
INI_Int("Kills",pInfo[playerid][Kills]);
// same like above
INI_Int("Deaths",pInfo[playerid][Deaths]);
// same like above
return 1;
}
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("TUTORIAL BY GIROUD12 loaded !");
print("--------------------------------------\n");
// this will shown in samp-server.exe
SetTimer("SendMSG", 1000*60*2, true);
// the timer for random message
// the timer will send the random message in 2 minutes
return 1;
}
public OnFilterScriptExit()
{
print("\n----------------------------------");
print("TUTORIAL BY GIROUD12 unloaded !");
print("----------------------------------\n");
// this will shown in samp-server.exe
return 1;
}
forward SendMSG();
// forward to send the random messages
public SendMSG()
// new public for send the random messages
{
new randMSG = random(sizeof(RandomMSG));
// new randMSG = the random messages that we write
SendClientMessageToAll(YELLOW, RandomMSG[randMSG]);
// will send the random messages
}
public OnPlayerConnect(playerid)
// when player connect
{
new name[MAX_PLAYER_NAME], str[128];
// new variable called "name"
GetPlayerName(playerid,name,sizeof(name));
// get player name
format(str, sizeof(str), "Welcome %s to "#X" server v0.3x", name);
SendClientMessage(playerid, YELLOW, str);
// will send player welcome message
if(fexist(Path(playerid)))
// check the player registered or not
{
INI_ParseFile(Path(playerid),"loadaccount_user", .bExtra = true, .extra = playerid);
// load user data
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account","Login","Quit");
// if they registered, show login dialog
}
else
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.","Register","Quit");
// if they not register, show register dialog
return 1;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
// when player response to dialog
{
if(dialogid == DIALOG_REGISTER)
// if dialog id is register dialog
{
if(!response) return Kick(playerid);
// if they click 2nd button, then automatically they will be kicked
if(response)
// if they click 1st button
{
if(!strlen(inputtext))
// if they didnt put password
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Welcome! This account is not registered.\nEnter your own password to create a new account.\nPlease enter the password!","Register","Quit");
// show register dialog
return 1;
}
// if they succesfull put their new password
new hashpass[129];
// new variable for hashing
WP_Hash(hashpass,sizeof(hashpass),inputtext);
// whirlpool will has their password
new INI:file = INI_Open(Path(playerid));
// open new file to save their data
INI_SetTag(file,"Player's Data");
// set title in the player data file
INI_WriteString(file,"Password",hashpass);
// this will right the hashed password
INI_WriteInt(file,"AdminLevel",0);
// set his admin level to 0 when he registered
INI_WriteInt(file,"VIPLevel",0);
// same like above
INI_WriteInt(file,"Money",0);
// same like above
INI_WriteInt(file,"Scores",0);
// same like above
INI_WriteInt(file,"Kills",0);
// same like above
INI_WriteInt(file,"Deaths",0);
// same like above
INI_Close(file);
// will close file
SendClientMessage(playerid,YELLOW,"You have been successfully registered");
// send player message that they sucessfully registered
}
}
if(dialogid == DIALOG_LOGIN)
// if dialog id is dialog login
{
if(!response) return Kick(playerid);
// if they click 2nd button, then automatically they will be kicked
if(response)
// if they kicked 1st button
{
new hashpass[129];
// new variable to hashing
WP_Hash(hashpass,sizeof(hashpass),inputtext);
// whirlpool will hash their password
if(!strcmp(hashpass,pInfo[playerid][Pass]))
// if they insert correct password
{
INI_ParseFile(Path(playerid),"loadaccount_user",.bExtra = true, .extra = playerid);
// this will load player data
SetPlayerScore(playerid,pInfo[playerid][Scores]);
// will set his score to the score in their files
GivePlayerMoney(playerid,pInfo[playerid][Money]);
// same as above
SendClientMessage(playerid,YELLOW,"Welcome back! You have successfully logged in");
// send player message that they have succesfully login
}
else
// if they put the wrong password
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Welcome back. This account is registered. \nInsert your password to login to your account.\nIncorrect password!","Login","Quit");//We will tell to them that they've entered an incorrect password
// show login dialog
return 1;
}
}
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new INI:file = INI_Open(Path(playerid));
// open their file
INI_SetTag(file,"Player's Data");
// set the title in player dile
INI_WriteInt(file,"AdminLevel",pInfo[playerid][Adminlevel]);
// get latest adminlevel
INI_WriteInt(file,"VIPLevel",pInfo[playerid][VIPlevel]);
// same as above
INI_WriteInt(file,"Money",GetPlayerMoney(playerid));
// same as above
INI_WriteInt(file,"Scores",GetPlayerScore(playerid));
// same as above
INI_WriteInt(file,"Kills",pInfo[playerid][Kills]);
// same as above
INI_WriteInt(file,"Deaths",pInfo[playerid][Deaths]);
// same as above
INI_Close(file);
// close file
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
pInfo[killerid][Kills]++;
// will add 1 kill to the killer
pInfo[playerid][Deaths]++;
// will add 1 death to the dead player
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
#if USE_STRCMP_COMMANDS == true
// if u make it true on top of the script
if (strcmp("/kill", cmdtext, true, 4) == 0)
{
if(GetPlayerMoney(playerid) <1000) return SendClientMessage(playerid,RED, "ERROR: You don't have $1000 !");
// if player money below 1000 then it will send player message
SetPlayerHealth(playerid, 0.0);
// set player health to 0/die
SendClientMessage(playerid, RED, "You just killed yourself");
// send player message
SendClientMessageToAll(RED, "Someone using /kill and kill him/herself and paid $1000 !");
// send message to all player in server
GivePlayerMoney(playerid, -1000);
// minus 1000 from player money
return 1;
}
if (strcmp("/heal", cmdtext, true, 4) == 0)
// /heal is the command/4 is how many letter in the command/true is to make the command work
{
if(GetPlayerMoney(playerid) <500) return SendClientMessage(playerid,RED, "ERROR: You don't have $500 !");
// if player money below 500 then it will send player message
SetPlayerHealth(playerid, 100.0);
// set player health to 100/full
SendClientMessage(playerid, RED, "You just healed yourself");
// send player message
SendClientMessageToAll(RED, "Someone using /heal and heal him/herself and paid $500 !");
// send message to all player
GivePlayerMoney(playerid, -500);
// minus -500 from player money
return 1;
}
if (strcmp("/spawnme", cmdtext, true, 7) == 0)
// /spawnme is the command/7 is how many letter in the command/true is to make the command work
{
SpawnPlayer(playerid);
// spawn player
SendClientMessage(playerid, RED, "You have been spawned");
// send player message
return 1;
}
if (strcmp("/kickme", cmdtext, true, 6) == 0)
// /kickme is the command/6 is how many letter in the command/true is to make the command work
{
SendClientMessageToAll(RED, "1 of the player has been kicked | Reason: He/She want it");
// send message to all player in server
Kick(playerid);
// kick player
return 1;
}
if (strcmp("/banme", cmdtext, true, 5) == 0)
// /banme is the command/5 is how many letter in the command/true is to make the command work
{
SendClientMessageToAll(RED, "1 of the player has been banned | Reason: He/She want it");
// send message to all player in server
BanEx(playerid, "You're banned !");
// send player message with ban player
return 1;
}
if (strcmp("/godon", cmdtext, true, 5) == 0)
// /godon is the command/5 is how many letter in the command/true is to make the command work
{
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED,"ERROR: You are'nt Rcon Admin");
// check if the player is rcon admin or not
// if not it will send message
SetPlayerHealth(playerid, 99999999999.0);
// set player health to infinite
SetPlayerArmour(playerid, 99999999999.0);
// set player armour to infinite
SendClientMessageToAll(RED, "Rcon Admin has turned on his God Mode");
// send message to all player in server
return 1;
}
if (strcmp("/godoff", cmdtext, true, 6) == 0)
// /godon is the command/5 is how many letter in the command/true is to make the command work
{
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED,"ERROR: You are'nt Rcon Admin");
// check if the player is rcon admin or not
// if not it will send message
SetPlayerHealth(playerid, 100.0);
// set player health to 100/full
SetPlayerArmour(playerid, 100.0);
// set player armour to 100/full
SendClientMessageToAll(RED, "Rcon Admin has turned off his God Mode");
// send message to all player in server
return 1;
}
#endif
// if you put #if so you need to put #endif to prevent errors
return SendClientMessage(playerid, RED, "ERROR: Unknown Command");
// if player make /troll but the command not exist in your server then it will send player message
}
#if USE_ZCMD_COMMANDS == true
// if u make it true on top of the script
CMD:kill(playerid, params[])
// the cmd is /kill
{
if(GetPlayerMoney(playerid) <1000) return SendClientMessage(playerid,RED, "ERROR: You don't have $1000 !");
// if player money below 1000 then it will send player message
SetPlayerHealth(playerid, 0.0);
// set player health to 0/die
SendClientMessage(playerid, RED, "You just killed yourself");
// send player message
SendClientMessageToAll(RED, "Someone using /kill and kill him/herself and paid $1000 !");
// send message to all player in server
GivePlayerMoney(playerid, -1000);
// minus 1000 from player money
return 1;
}
CMD:heal(playerid, params[])
// the cmd is /heal
{
if(GetPlayerMoney(playerid) <500) return SendClientMessage(playerid,RED, "ERROR: You don't have $500 !");
// if player money below 500 then it will send player message
SetPlayerHealth(playerid, 100.0);
// set player health to 100/full
SendClientMessage(playerid, RED, "You just healed yourself");
// send player message
SendClientMessageToAll(RED, "Someone using /heal and heal him/herself and paid $500 !");
// send message to all player in server
GivePlayerMoney(playerid, -500);
// minus 500 from player money
return 1;
}
CMD:spawnme(playerid, params[])
// the cmd is /spawnme
{
SpawnPlayer(playerid);
// spawn player
SendClientMessage(playerid, RED, "You have been spawned");
// send player message
return 1;
}
CMD:kickme(playerid, params[])
// the cmd is /kickme
{
SendClientMessageToAll(RED, "1 of the player has been kicked | Reason: He/She want it");
// send player message
Kick(playerid);
// kick player
return 1;
}
CMD:banme(playerid, params[])
// the cmd is /banme
{
SendClientMessageToAll(RED, "1 of the player has been banned | Reason: He/She want it");
// send player message
BanEx(playerid, "You're banned !");
// send player message and ban the player
return 1;
}
CMD:godon(playerid, params[])
// the cmd is /godon
{
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED,"ERROR: You are'nt Rcon Admin");
// check if the player is rcon admin or not
// if not it will send message
SetPlayerHealth(playerid, 99999999999.0);
// set player health to infinite
SetPlayerArmour(playerid, 99999999999.0);
// set player armour to infinite
SendClientMessageToAll(RED, "Rcon Admin has turned on his God Mode");
// send message to all player in server
return 1;
}
CMD:godoff(playerid, params[])
// the cmd is /godoff
{
if(IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED,"ERROR: You are'nt Rcon Admin");
// check if the player is rcon admin or not
// if not it will send message
SetPlayerHealth(playerid, 100.0);
// set player health to 100/full
SetPlayerArmour(playerid, 100.0);
// set player armour to 100/full
SendClientMessageToAll(RED, "Rcon Admin has turned off his God Mode");
// send message to all player in server
return 1;
}
#endif
// if you put #if so you need to put #endif to prevent errors
? Please inform me.
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Explaining it all into a script, is pretty stupid. In my opinion, but okay.
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Thanks, im going to study this, i want to start learning to script so i feel this would be a good aide
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
its good but to much i easy just can copy all that. try better next time.
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -
Re: Login+Register System / Strcmp and ZCMD Commands / Random Messages - Explained ! -