Nepaskaidrošu ko katra līnija nozīmē, jo esmu slinks.
Orģinālo pamācību veidoja Cale no sa-mp.com.
Visus erorus vai warnus kurus saņemat lūdzu postojiet šeit.
Tip: Pārliecinaties ka ierakstat visus skriptus taismā rindā, vai arī metīs šādu warnu
Code: Select all
warning 217: loose indentation
http://dracoblue.net/download/dini-16/35/
Sākam:
1. Atverat PAWNO, un izveidojat jaunu skriptu, spiežot baltās lapas ikonu kreisajā augšējā stūrī.
2. Zem #include liekat #include .
Ja gadijumā jums nav Dini inklūds, tad lejumplādēt to var šeit.
3. Zem #include divas reizes nospiežat pogu Enter, un tur liekat šo skriptu
Code: Select all
// Dialogu ID
#define DIALOG_REG 1
#define DIALOG_LOGIN 2
4. Zem skripta ko tikko ierakstijāt liekat
Code: Select all
enum Player_stats
{
Logged,
Regged,
Money,
Score
}
new Player[MAX_PLAYERS][Player_stats];
5. Tagad zem
Code: Select all
public OnPlayerConnect(playerid)
{
Code: Select all
// Uzliek spēlētājam visu pa 0
Player[playerid][Logged] = 0;
Player[playerid][Regged] = 0;
Player[playerid][Money] = 0;
Player[playerid][Score] = 0;
Code: Select all
// Parāda dialogus
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"acc/%s.sav",pname);
if(fexist(accFormat))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Regg","Ielogojies","Ok","Atcelt");
}
else
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Regg","Reģistrējies","Ok","Atcelt");
}
6. Zem
Code: Select all
public OnPlayerDisconnect(playerid, reason)
{
Code: Select all
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"acc/%s.sav",pname);
if(fexist(accFormat))
{
Player[playerid][Logged] = 0;
Player[playerid][Regged] = 1;
dini_IntSet(accFormat,"Money",GetPlayerMoney(playerid));
dini_IntSet(accFormat,"Score",GetPlayerScore(playerid));
}
7. Tad beidzot zem
Code: Select all
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
Code: Select all
new pname[MAX_PLAYERS],accFormat[128];
GetPlayerName(playerid,pname,sizeof pname);
format(accFormat,sizeof accFormat,"acc/%s.sav",pname);
if(response)
{
switch(dialogid)
{
case DIALOG_LOGIN: // ID Login
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Regg","Ievadi savu paroli.","Ok","Atcelt");
return 1;
}
if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0)
{
Player[playerid][Regged] = dini_Int(accFormat,"Regged");
Player[playerid][Logged] = dini_Int(accFormat,"Logged");
GivePlayerMoney(playerid,dini_Int(accFormat,"Money"));
SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
Player[playerid][Logged] = 1;
SendClientMessage(playerid,0xFFFFFFFF,"Veiksmīgi esi ielogojies.");
}
else
{
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Regg","Nepareiza parole","Ok","Atcelt");
}
}
case DIALOG_REG:
{
if(!strlen(inputtext))
{
ShowPlayerDialog(playerid,DIALOG_REG,1,"Regg","Pārāk īsa parole","Ok","Atcelt");
return 1;
}
dini_Create(accFormat);
dini_Set(accFormat,"Passwort",inputtext);
Player[playerid][Regged] = dini_Int(accFormat,"Regged");
Player[playerid][Logged] = dini_Int(accFormat,"Logged");
GivePlayerMoney(playerid,dini_Int(accFormat,"Money"));
SetPlayerScore(playerid,dini_Int(accFormat,"Score"));
Player[playerid][Regged] = 1;
ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Regg","Reģistrācija veiksmīga, ielogojies.","Ok","Atcelt");
}
}
}
else
{
switch(dialogid)
{
case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Regg","Ielogojies","Ok","Atcelt");
case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Regg","Reģistrējies","Ok","Atcelt");
}
if(!response)
{
switch(dialogid)
{
case DIALOG_LOGIN:
{
Kick(playerid);
}
}
}
if(!response)
{
switch(dialogid)
{
case DIALOG_REG:
{
Kick(playerid); // Šeit varat likt kas notiks ar spēlētāju ja viņš uzspiedīs " Cancel ".
}
}
}
}
8. Tagad vien atliek doties uz servera Scriptfiles mapi un iekš tās izveidot mapi acc