GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Blez - 2015. Március 04. - 20:49:42

Cím: Dinivel történő jelszómentés
Írta: Blez - 2015. Március 04. - 20:49:42
Sziasztok. Valaki tudna egy példát adni, a dinivel történő jelszómentés használatáról ? Egy egyszerű \"felhasználókezelő\" rendszert csinálok, aka. login/register rendszert mely menti a scoret, pénzt, ölést/halált stb... Sem a hivatalos fórumon, sem pedig itt nem találok normális leírást, amelyen el tudnék igazodni. Bár lényegében a Booy által írt példa hasznomra vált, mégsem értem pontosan, hogy hogyan is menti a dialogba beírt jelszót a fájlba.
Valamint még abban kérnék segítséget, hogyan kellene megoldani, hogy számolja a játszott időt (órában, percben, másodpercben).
Edit: Egyébként melyiket érdemes használni ? Dinit vagy Y_INI -t ?
Cím: Dinivel történő jelszómentés
Írta: MotI - 2015. Március 04. - 21:01:37
Dinit érdemesebb min y_ini-t mivel az y_ini elavult.
Pár link ami segítségedre lehet!
Dini használata!
http://sampforum.hu/index.php?topic=24964.0
Regisztrációs rendszer
http://sampforum.hu/index.php?topic=26350.0
Cím: Dinivel történő jelszómentés
Írta: Kyosuke_Hiroshi - 2015. Március 04. - 23:03:26
A regisztráció rendszerről annyit hogy mysqllal barátkozz, hidd el jobb.
Játszott idő..
Kell egy 1 Másodperces Timer ami másodpercenként ha belépett akor egy változóhoz mindig hozzá ad egyet.
És ha az eléri a 60 akkor hozzá ad egyet a 2. Változóhoz és ha az is 60 akkor hozzá ad 1 et az órához
 

Masodperc[playerid]++
If(Masodperc[playerid] => 60)
{
Masodperc[playerid]  = 0;
Perc[playerid]++;
If(Perc[playerid] => 60)
{
Perc[playerid] = 0;
Ora[playerid]++;
}
}

 
Ez szerintem jó csak telefonról vagyok abba meg nincs tab gomb...
Cím: Dinivel történő jelszómentés
Írta: TengeriMalac - 2015. Március 05. - 06:51:32
y_ini elavult? barátom, a dini a y_ini nagyapja lehetne..
mysql nem fontos, ha nem akarsz hozzá külön szervert futtatni, és webes felületet írni, akkor elég egy SII, vagy ha SQL akkor SQLite.. nem kell hozzá se plugin, se szerver, és ugyan azt tudja, ráadásul egy adatbázisba ment mindent
Cím: Dinivel történő jelszómentés
Írta: Blez - 2015. Március 05. - 15:50:32
Srácok...  :D Én csak egy laza házi szerverben gondolkodok, ahol 10-15 haverral elszórakoznánk időnként, viszont mindent saját magam szeretnék megírni. Szerintem semmi szükség MySQL -re és hasonlóakra...  :D
Cím: Dinivel történő jelszómentés
Írta: TengeriMalac - 2015. Március 05. - 16:50:31
mysql nem, de én ajánlom az SQLite-t.. sokkal egyszerűbb, mint dinivel kezelni az esetleg többszáz fájlt
ha sima házi szerver, akkor jelszótitkosírás sem szükséges..
sima script mentős cucc pedig dinivel pár sor..
simán elmented, mint egy szöveget, belépésnél pedig ellenőrzöd, hogy azt adta-e meg.. :D
strcmp, és strlen.. annyi.
Cím: Dinivel történő jelszómentés
Írta: Blez - 2015. Március 05. - 20:00:41
De tudnál írni rá egy példát ? Mert erre még konkrétan normális választ nem kaptam, csak a MySQL -ről és társairól beszéltünk.
Cím: Dinivel történő jelszómentés
Írta: TengeriMalac - 2015. Március 05. - 20:53:37
#include <a_samp>
#include <zcmd>
#include <dini>
enum pInfo {
Kills,
Deaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnPlayerConnect(playerid) {
new file[100];
format(file, sizeof(file), \"Accounts/%s.ini\", PlayerName(playerid));
if(fexist(file)) {
    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, \"Login Dialog\", \"Írd be a jelszavad\", \"Login\", \"\");
} else if(!fexist(file)) {
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Register Dialog\", \"Írj be egy jelszót\", \"Register\", \"\");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
    new file[100];
format(file, sizeof(file), \"Accounts/%s.ini\", PlayerName(playerid));
dini_IntSet(file, \"Kills\", PlayerInfo[playerid][Kills]);
dini_IntSet(file, \"Deaths\", PlayerInfo[playerid][Deaths]);
dini_IntSet(file, \"Score\", GetPlayerScore(playerid));
dini_IntSet(file, \"Money\", GetPlayerMoney(playerid));
return 1;
}
public OnPlayerDeath(playerid, killerid, reason) {
PlayerInfo[playerid][Deaths]++;
PlayerInfo[killerid][Kills]++;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
new file[100];
format(file, sizeof(file), \"Accounts/%s.ini\", PlayerName(playerid));
if(dialogid == 0) {
    if(!response) return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, \"Login Dialog\", \"Írd be a jelszavad\", \"Login\", \"\");
    if(!strlen(inputtext) || (strcmp(inputtext, dini_Get(file, \"Password\"), false) != 0)) {
   SendClientMessage(playerid, -1, \"Rossz jelszó\");
   return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_INPUT, \"Login Dialog\", \"Írd be a jelszavad\", \"Login\", \"\");
}
PlayerInfo[playerid][Kills] = dini_Int(file, \"Kills\");
PlayerInfo[playerid][Deaths] = dini_Int(file, \"Deaths\");
SetPlayerScore(playerid, dini_Int(file, \"Score\"));
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, dini_Int(file, \"Money\"));
return 1;
}
if(dialogid == 1) {
    if(!response) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Register Dialog\", \"Írj be egy jelszót\", \"Register\", \"\");
    if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Register Dialog\", \"Írj be egy jelszót\", \"Register\", \"\");
dini_Create(file);
dini_Set(file, \"Password\", inputtext);
    return 1;
}
return 0;
}
stock PlayerName(playerid) {
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}

 
tesztektem, de egyedül nehéz a killeket vagy a halálokat változtatni, úgyhogy azt tesztelni kell..
de a jelszót meg a pénzt menti, és betölti.. :DD
a szövegeket írd át ahogy akarod.. meg persze bővítsd, de kezdésnek ennyi megteszi.
Cím: Dinivel történő jelszómentés
Írta: Blez - 2015. Március 05. - 21:32:00
Köszönöm szépen! Mindenkinek adtam egy plusszt a segítőkészségéért.  :)