[TuT] Register i Login Sistem(Dialog i Y_INI)

Započeo ...Nikola..., Avgust 23, 2012, 10:55:04 PRE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

Nisam video ovaj tutorial ovde pa reko ajde da postavim preuzeo sam ga odavde: http://forum.sa-mp.com/showthread.php?t=273088
1. Korak
Morate skinuti YSI http://forum.sa-mp.com/showthread.php?t=321092 i "instalirati tako sto cete u scriptfiles ubaciti YSI folder i YSI.tde
a u folder pawno/include ubaciti YSI.inc i YSI folder i kada to ubacite u svoj mod onda otvorite mod i gore stavite #include <YSI\y_ini>
2. Korak
Morate definisati neke dialoge,NAPOMENA: AKo imate dialoge id 1 i 2 zamenite na neki drugi broj
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2

3. Korak
Definisite 'PATH',u scriptfiles napravite folder Korisnici
#define PATH "/Korisnici/%s.ini"
4. Korak
Ako nemate enum pinfo dodajte ovako
enum pInfo
{
pLozinka,
pNovac,
pAdmin,
pUbistva,
pSmrti
};
new PlayerInfo[MAX_PLAYERS][pInfo];

a ako ga imate onda samo dodajte ove varijable
pLozinka,
pNovac,
pAdmin,
pUbistva,
pSmrti

5. Korak
Sada ubacite funkciju koja ce ucitavati podatke korisnickog naloga
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_Int("Lozinka",PlayerInfo[playerid][pLozinka]);
INI_Int("Novac",PlayerInfo[playerid][pNovac]);
INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
INI_Int("Ubistva",PlayerInfo[playerid][pUbistva]);
INI_Int("Smrti",PlayerInfo[playerid][pSmrti]);
return 1;
}

6. Korak
Dodajte stock
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),PATH,playername);
return string;
}

7. Korak
Dodajte ovo ispod stocka UserPath
stock udb_hash(buf[])
{
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1)     % 65521;
}
return (s2 << 16) + s1;
}

8. Korak
pod OnPlayerConnect dodajte ovo
if(fexist(UserPath(playerid)))
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Prijavljivanje","Ukucajte lozinku da bi se ulogovali","Prijavi se","Izadji");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Registracija","Ukucajte lozinku da bi se registrovali.","Registruj se","Izadji");
}

9. Korak
pod OnDialogResponse dodajte
    switch(dialogid)
{
case DIALOG_REGISTER:
{
if(!response) return Kick(playerid);
if(response)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija","Ukucali ste pogresnu lozinku.\nUkucajte ispravnu lozinku da bi se registrovali.","Registruj se","Izadji");
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Lozinka",udb_hash(inputtext));
INI_WriteInt(File,"Novac",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Ubistva",0);
INI_WriteInt(File,"Smrti",0);
INI_Close(File);
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);// Ovde stavite koordinate svog spawna
SpawnPlayer(playerid);
}
}
case DIALOG_LOGIN:
{
if(!response) return Kick(playerid);
if(response)
{
if(udb_hash(inputtext) == PlayerInfo[playerid][pLozinka])
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pNovac]);
}
else
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Prijavljivanje","Ukucali ste pogresnu lozinku.\nUkucajte ispravnu lozinku da bi se ulogovali.","Prijavi se","Izadji");
}
return 1;
}
}
}

10. Korak
pod OnPlayerDisconnect dodajte
    new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Novac",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Ubistva",PlayerInfo[playerid][pUbistva]);
INI_WriteInt(File,"Smrti",PlayerInfo[playerid][pSmrti]);
INI_Close(File);

11. Korak
pod OnPlayerDeath dodajte
PlayerInfo[killerid][pUbistva]++;
PlayerInfo[playerid][pSmrti]++;

12. Korak
Da nebi morali da stisnete Spawn da se spawnujete pod OnPlayerRequestClass dodajte
SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);// Ovde stavite koordinate svog spawna
SpawnPlayer(playerid);

Da saznate nesto vise o funkciji SetSpawnInfo http://wiki.sa-mp.com/wiki/SetSpawnInfo

Ako nesto ne radi napisite u komentarima
Poslednja Izmena: Avgust 23, 2012, 12:34:05 POSLE PODNE od ...Nikola...



Citat: Shoorty poslato Avgust 23, 2012, 11:40:52 PRE PODNE
[cenzura]o je moras stisnuti SPAWN da se spawnas
mogo si samo kod kraja registracije dodat
SpawnPlayer(playerid);
al ne ti odma paniku dizes

@tema
malo lici na http://forum.sa-mp.com/showthread.php?t=273088
al eto 8/10

Nino kao prvo Nisi procitao ni prvu recenicu mog posta napisao sam da sam preuzeo ali sam ga doradio ja,a za spawn da moras da kliknes i to sam dodao na kraju pogledaj malo

Ne kontam koliko je stara tema,posto sam iz Srbije ne kontam ove mesece na Hrvatskom...Sry ako sam je vratio iz daleka...

Zanima me kako sad na primer da ubacim i DIALOG_STYLE_INPUT  gde ce da izaberu "Pol" i "Godine" i da se sve to sacuva regularno?
Do you know, in my country,I'm a "magico",a man with a dream,a man on the rise. To take nothing and make it something.Do you have a dream?

Capetroon.

SviÄ'a mi se, poćet ću mod od 0 pa ču ga koristiti.

eee kaako da dodam u taj reg/log za godine spol i gmail
Real Life RolePlay

pa pod OnDialogResponse Dialog_Register pa na kraju dodas primer ShowPlayerDialog(playerid,DIALOG_GODINE,DIALOG_STYLE_ pa ono ostalo i samo novi case dodas pod OnDialogResponse

Da znate testao sam ovaj tut radi ...
Samo 1 warning ne znam koji točno,ali warning zanemarite ..

Lijepo si napravio tut ...
BIG RESPEKT: Blaeks,  [CRP] Joey_, David (Sabljak) A.k.A SABO(T), joXy_, Dimi, Sexserghy ♥, TerminuS, H1TM4N

Moze pomoci onima koji neznaju sa y_ini  ;)
Respect: Gagi, Maki187, Phillips, TerminuS, Neno, Lepotic, [AL] K4[Я]!K3â,,¢, Gotti747

Citat: ...Nikola... poslato Septembar 09, 2012, 14:34:49 POSLE PODNE
pa pod OnDialogResponse Dialog_Register pa na kraju dodas primer ShowPlayerDialog(playerid,DIALOG_GODINE,DIALOG_STYLE_ pa ono ostalo i samo novi case dodas pod OnDialogResponse

Ok a gdi jos sve treba dodati
Real Life RolePlay

Citat: ...Nikola... poslato Avgust 23, 2012, 21:03:28 POSLE PODNE
Nino kao prvo Nisi procitao ni prvu recenicu mog posta napisao sam da sam preuzeo ali sam ga doradio ja,a za spawn da moras da kliknes i to sam dodao na kraju pogledaj malo

Brt nisi ti mogo dodat to za spawn mogo si samo dio scripte pod nazivom SpawnInfo obrisat, ja koristim taj system i napocetku dok ga nisam editovo bio isti kao taj tvoj pa sam ga posle malo doradio al evo ti
7/10 za trud :D

Lijepo napravljeno!


"Religija je samo iluzorno sunce koje se kreće oko čovjeka dotle dok se on ne kreće oko sebe samoga." - Karl Marx


"Nije glu.p onaj koji nezna da cita, nego onaj koji povjeruje u sve sto procita." - Ivo Andrić