Sveiki, taigi jau visi baigia uzflodinti foruma kaip visiem reik GUI registracijos taigi, nusprendziau sukurti pamoka kaip ja sukurti. DEMESIO: Viska patariu rasyti patiems tada bus lengviau ismokti nei spaudineti "copy".
Jai registracija kuriate GRP mode tai vietoj Logged naudokit :
playerDB[playerid][authstate]=2; - prisijunges
playerDB[playerid][authstate]=1; sita rasysit registracijos scripte kur automatiskai prijungia
playerDB[playerid][authstate]=0; o sita po onplayerconnect
Pradedam:
1.Uzincludinam include's:
Kodas: Pasirinkti visus
#include <dini>
#include <dudb>
#include <dutils>
Siuos includes galite rasti siame tinklapyje.
2.Susikuriam kintamaji kuris tikrins ar zaidejas prisijunges:
Kodas: Pasirinkti visus
new bool:Logged[MAX_PLAYERS]; // Dekit po #include
3.Susirandam OnPlayerConnect(playerid) calback'a ir parasom koda kuris tikrins ar zaidejas yra uzsiregistraves:
Kodas: Pasirinkti visus
Logged[playerid] = false; //Kai zaidejas ateina i servei padaro kad jis nebutu prisijunges
Kodas: Pasirinkti visus
new file[128], vardas[128]; // Susikuriam string kintamuosius.
GetPlayerName(playerid, vardas, 128); // Gaunam zaidejo varda.
format(file,128,"Users/%s.ini",vardas); // Sukuriam string'a, "Users/%s.ini" sia eilute pakeiskite i savo direktorija kur saugomi zaideju failai.
if(!dini_Exists(file)) // Jai zaidejo failas neegzistuoja jam ismes registracijos GUI lentele.
{
ShowPlayerDialog(playerid,9876,DIALOG_STYLE_INPUT,"Registracija","Jai norite zaisti serveryje turite uzsiregistruoti.\nIveskite slaptazodi kuri naudosite prisijungimui:","Registruotis","Iseiti");
}
else if(dini_Exists(file)) // Jai zaidejo failas egzistuoja tada jam ismes Prisijungimo GUI lentele.
{
ShowPlayerDialog(playerid,9877,DIALOG_STYLE_INPUT,"Prisijungimas","Jai norite zaisti serveryje turite prisijungti\nIveskite savo slaptazodi:","Prisijungti","Iseiti");
}
4.Dabar susirandam OnPlayerDialogResponse(...) calback'a ir sukuriam registracijos scripta:
Kodas: Pasirinkti visus
if(dialogid == 9876) // jai dialog id lygus 9876.
{
if(response) // Mygtukas "Registruotis"
{
new file[128], vardas[128]; // Susikuriam string kintamuosius.
GetPlayerName(playerid,vardas,128);
format(file,128,"Users/%s,ini",vardas); // zaideju failu direktorija pakeiciam is savo.
dini_Create(file); // Sukuriam faila.
dini_IntSet(file,"Slaptazodis",udb_hash(inputtext)); // Uzkoduojame zaidejo slaptazodi.
// Kai zaidejas uzsiregistruos i faila bus irasytas tik slaptazodzio eilute, bet galit prisirasyti ir savo.
Logged[playerid] = true; // Zaidejas prisijunges.
SendClientMessage(playerid,0xFFFFFFFF,"Registracija sekminga, prie serverio jus prijungtas automatiskai");
}
else if(!response) // Jai zaidejas paspaude mygtuka Iseiti
{
Kick(playerid); // Ismetam zaideja is serverio
}
return 1;
}
5.Na ir liko sukurti prisijungimo scripta.
Kodas: Pasirinkti visus
if(dialogid == 9877) // jai dialog id lygus 9877.
{
if(response) // jai paspaude prisijungti.
{
new file[128], vardas[128], pass[256]; // Kintamieji
GetPlayerName(playerid, vardas, 128); // gaunam zaidejo vardas
format(file,128,"Users/%s.ini",vardas); // Direktorija irasom savo
pass = dini_Get(file,"Slaptazodis"); // Gaunam zaidejo tikra slaptazodi.
if(udb_hash(inputtext) != strval(pass)) // Jai zaidejo irasytas slaptazodis neatitinka tikram slaptazodziui.
{
ShowPlayerDialog(playerid,9877,DIALOG_STYLE_INPUT,"Prisijungimas","Slptazodis neteisingas.\nIveskite savo slaptazodi:","Prisijungti","Iseiti");
}
else // Jai slaptazodis yra teisingas.
{
// Cia galim surasyti info kuria isims is zaideju failu.
Logged[playerid] = true; // Zaidejas prisijunges
SendClientMessage(playerid,0xFFFFFFFF,"Jus sekmingai prisijungete, geros dienos");
}
}
else if(!response) // Jai paspaude iseiti
{
Kick(playerid); // Ismes is serverio.
}
return 1;
}
Na viskas registracija su GUI baigta. Pamoka nekopijuota ir is niekur neversta ja sukuriau pats.
Jai kas nesigauna, galit parsisiusti FS kaip pavizdi