GTA Közösség - A magyar GTA fórum
Hatalmas Archívum => Fórum Archívum (Témák/Fórumok) => A témát indította: Logic12 - 2011. szeptember 11. - 09:44:16
-
Sziasztok!
Arra gondoltam, hogy csinálok egy Leírást arról, hogy hogyan lehet
Regisztrációs rendszert készíteni.
Elég egyszerû lesz.
1. Nyissuk meg a Pawno-t.
2. Csináljunk egy új munkalapot, töröljük ki az egészet.
3. Írjuk ezeket be:
[pawn] #include <a_samp>
#include <dini>
#inlude <dubd>[/pawn]
4. Csinálunk egy ilyen részt:
[pawn]new IsLogged[MAX_PLAYERS];
enum pInfo
{
}
new PlayerInfo[MAX_PLAYERS][pInfo];
enum pInfo
{
AdminLevel,
Cash,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new cmd[256], idx, file[128], tmp[256], tmp2[256];
cmd = strtok(cmdtext, idx);[/pawn]
5. Csináljunk egy OnPlayerCommandText részt.
[pawn]public OnPlayerCommandText (playerid, cmdtext[])[/pawn]
6. Elõszõr is a Regisztrációs parancsot csináljuk meg.
[pawn]if(strcmp(cmd, \"/register\", true) == 0)
{
new name[MAX_PLAYER_NAME];
tmp = strtok(cmdtext, idx);
GetPlayerName(playerid, name, sizeof(name));
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, \"Használat: /register [jelszó]\");
format(file,sizeof(file),\"%s.ini\",name);
if(!fexist(file))
{
dini_Create(file);
dini_IntSet(file, \"Password\", udb_hash(tmp));
dini_IntSet(file,\"AdminLevel\", 0);
dini_IntSet(file,\"Cash\", 0);
SendClientMessage(playerid, eadmin, \"[Rendszer]: Felhasználó regisztrálva!\");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
GetPlayerName(playerid, name, sizeof(name));
printf(\"%s has registered a account!\", name);
}
else
{
SendClientMessage(playerid, COLOR, \" Felhasználó már bent van az adatbázisban\");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
}
return 1;
}
return 0;
}[/pawn]
7. A következõ pedig a /login parancs lesz.
[pawn]if(strcmp(cmd, \"/login\", true) == 0)
{
new PlayerName[24];
tmp = strtok(cmdtext, idx);
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, \"Használat: /login [jelszó]\");
new name[MAX_PLAYER_NAME];
if(IsLogged[playerid] == 1)
{
SendClientMessage(playerid, COLOR, \"Te sikeresen bejelentkeztél!\");
return 1;
}
else
{
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),\"%s.ini\",name);
if(fexist(file))
{
tmp2 = dini_Get(file, \"Password\");
if(udb_hash(tmp) != strval(tmp2))
{
SendClientMessage(playerid, COLOR, \"Bejelentkezési hiba!\");
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
printf(\"%s bejelentkezett a rendszerbe\", name);
}
else
{
IsLogged[playerid] = 1;
SetPlayerMoney(playerid, dini_Int(file, \"Cash\"));
PlayerInfo[playerid][AdminLevel] = dini_Int(file, \"AdminLevel\");
SendClientMessage(playerid, COLOR, \"[Rendszer] Már be vagy jelentkezve!\");
}
}
}
return 1;
}[/pawn]
8. Csináljunk egy Disconnect részt
[pawn]public OnPlayerDisconnect (playerid, reason)[/pawn]
9. Ilesszük be ezt alá:
[pawn]IsLogged[playerid] = 0; [/pawn]
Természetesen zárjuk is le.
10. Legesleg utolsó kód:
[pawn]if(gLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR, \"[Rendszer]Jelentkezz be.\");
Kick(playerid);
return 1;
}[/pawn]
És már kész is a Regisztrációs rendszerünk.
Sziasztok!
Dupla hozzászólás automatikusan összefûzve. ( 2011. szeptember 11. - 09:45:46 )
Remélem mindenkinek tetszik és hibátlan.! Dobj egy likeot.!
-
\"Tedd ezt ide, csinálj egy ilyet, ezt pedig ide\"
Ebbõl a kezdõ semmit nem ért..Ez így nem leírás, vagy tutorial..Hanem csak egy Copy & Paste.
-
Egy szó, ami három betûbõl áll és egy felkiáltó jelbõl: szar!
Így az emberek nem értik meg minek mi a haszna/használata.
Ez a tutorial csak ide,oda rakásból áll, de hogy mit miért kell oda rakni azt nem írod le.
6. pontnál be haltam azon a néven hogy \"csináljunk\". Ez minden csak nem csinálás hanem másolás és beillesztés.
-
\"Tedd ezt ide, csinálj egy ilyet, ezt pedig ide\"
Ebbõl a kezdõ semmit nem ért..Ez így nem leírás, vagy tutorial..Hanem csak egy Copy & Paste.
Egyetérek!Szégyen az ilyen!
De ha megkérdeznénk mi mit jelent,nem tudná elmondani!
-
Ma már megbüntettelek egyszer az ilyen stílusú leírásod miatt.
Ezt is szintén zárom, és figyelmeztetlek ezúttal +10%-al.