Jump to content

návod Registrace Dof2 (S Pár Věcičkama Navíc :)


FiZZy

Recommended Posts

Ahoj, za pomoci uživatele Strike jsem dokončil svoji registraci přes DOF2 tak, aby byla plně funkční. Rozhodl jsem se, že když nikde není pořádně funkční TUT na Registraci s tímto systémem (ani na officialním fóru), tak že se s vámi o něm podělím :)

Obsah:

  • Registrace
  • Ukládání základních statistik (peníze, adminlvl, zabití, úmrtí, IP)
  • Ukládání pozice i s načítáním
  • Autologin pomocí IP

Na začátek si něco řekneme o tomto systému:

  • DoF2(Double-o-Files) je vytvořen uživatelem oficiálního fóra Double-o-Seven (Němec)
  • Jedná se o rychlejší a stabilnější verzi původního DoF

1) Potřebné funkce/podmínky

DOF2_File(user[]) = Funkce, která definuje název souboru uživatele
DOF2_CreateFile(file[],password[]="") = Fce, která vytvoří soubor (file), a uloží do tohoto souboru heslo (password)
DOF2_CheckLogin(file[],password[]) = Podmínka, která zkontroluje heslo (password), v souboru (file)
DOF2_FileExists(file[]) = Podmínka která zjistí zda soubor (file) existuje
DOF2_SetFloat(file[],key[],Float:value) = Funkce která uloží do souboru (file) pod určitý klíč (key) určité desetiné číslo (float)
DOF2_SetInt(file[],key[],value) = Funkce která uloží do souboru (file), pod určitý klíč (key), určitou celočíselnou hodnotu (value)
DOF2_GetFloat(file[],key[]) = funkce která vyčte ze souboru (file) určitý klíč (key) ve tvaru desetiného čísla
DOF2_GetInt(file[],key[]) = funkce která vyčte ze souboru (file) klíč (key) určitou celočíselnou hodnotu
DOF2_SaveFile() = uloží soubor (musí být za celou sekcí nebo za samostatným nastavením (jakýkoliv Set...)

 

2) Předpříprava před psaním kódu

a)Includujeme databáze příkazů: a_samp a dof2

b)Definujeme si určité barvy, které budeme chtít používat (V našem případě COLOR_CERVENA a COLOR_ZLUTA)

c)Definujeme si hodnoty DIALOG_REGISTER a DIALOG_LOGIN

d)Oddefinujeme si hodnotu MAX_PLAYER a definujeme novou, podle počtu slotů na serveru( #undef MAX_PLAYERS - #define MAX_PLAYERS 100)

e)Definujeme si pozici pro ukládání souborů( #define USER_FILE_PATH "Users/%s.ini" - každopádně zanechejte %s, neboť to bude ve finále jméno hráče. Složku si upravte podle libosti :))

 

2) Samotný kód

NEW-s:

enum pInfo
{
pKills,
pDeaths,
pMoney,
pAdmin,
Float:x,
Float:y,
Float:z,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new pIP[MAX_PLAYERS][16];

 

OnFilterScriptInit

SetTimer("ukladani", 60000, 0);

 

V OnGameModeExit musí být:

DOF2_Exit();

jinak by vám vyskakoval při compilaci error

 

OnPlayerConnect:

public OnPlayerConnect(playerid)
{
new name[20];
format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o připojení hráče na server
SendClientMessageToAll(COLOR_ZLUTA, name);
printf("[sERVER]Hráč %s se připojil na server!" , GetPlayerName(playerid, name, sizeof(name)));//do konzole se vypíše zpráva o připojení hráče na serveru
new file[64];
GetPlayerName(playerid,file,sizeof(file));
format(file,sizeof(file),DOF2_File(file));
if(DOF2_FileExists(file)) //podmínka, zda existuje soubor s hráčovým jménem
{
GetPlayerIp(playerid,pIP[playerid],16); //když existuje, zjistíme hráčovu IP
if(strcmp(DOF2_GetString(file, "IP"),pIP[playerid],true) == 0)//Když se IP rovná IP v hráčově souboru
{
SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Byl jsi úspěšně přihlášen.");//přihlásí to hráče a vypíše zprávu
LoadData(playerid);//Načte hráčovy data
}
else//když se IP neshoduje
{
SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Přihlášení se nezdařilo, přihlašte se pomocí hesla.");//přihlášení pomocí IP bude neúspěšné
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Prosím přihlašte se se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro přihlášení ","Přihlásit","");//vyvolání dialogu pro manuální přihlášení
}
}
else//když není soubor s hráčovým jménem
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//vyvolá se dialog pro registraci hráče
}
return 1;
}

 

OnPlayerDisconnect:

public OnPlayerDisconnect(playerid, reason)
{
new name[20];
format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o odpojení hráče na server
SendClientMessageToAll(COLOR_ZLUTA, name);
printf("[sERVER]Hráč %s se odpojil ze serveru!" , GetPlayerName(playerid, name, sizeof(name))); //do konzole se vypíše zpráva o odpojení hráče na serveru
SaveData(playerid);//Uložíme data hráče
return 1;
}

 

OnPlayerSpawn:

public OnPlayerSpawn(playerid)
{
if(PlayerInfo[playerid][x] == 0.0 && PlayerInfo[playerid][y] == 0.0)//když jsou v souboru uložené pozice X a Y rovny 0 (tutíž když není uložena pozice)
{
SetPlayerPos(playerid, -299.8857, 1015.5681, 19.5938);//hrač se spawne na této pozici
}
else//když jsou souřadnice jinné
{
SetPlayerPos(playerid, PlayerInfo[playerid][x], PlayerInfo[playerid][y], PlayerInfo[playerid][z]);//nastaví se pozice ze souboru
}
return 1;
}

 

OnPlayerDeath

public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[killerid][pKills]++;//počet zabitých s každým dalším stoupne o 1
PlayerInfo[playerid][pDeaths]++;//počet úmrtí s každým dalším stoupne o 1
return 1;
}

 

OnDialogResponse

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//když hráč nezadá heslo, oběví se dialog pro zadání nového hesla
if(response)//když hráč klikne na tlačítko
{
new file[64];
GetPlayerName(playerid,file,sizeof(file));
format(file,sizeof(file),DOF2_File(file));
DOF2_CreateFile(file, inputtext);//vytvoří se soubor s hráčovým jménem, a uloží se heslo z dialogu
GetPlayerIp(playerid,pIP[playerid],16);//zjistíme hráčovu IP
DOF2_SetString(file, "IP", pIP[playerid]);//uložíme hráčovu IP pod klíčem IP
PlayerInfo[playerid][pKills] = DOF2_SetInt(file, "Kills", 0);//nastavíme počet zabitých (začátek = 0)
PlayerInfo[playerid][pDeaths] = DOF2_SetInt(file, "Deaths", 0);//nastavíme počet úmrtí (začátek = 0)
PlayerInfo[playerid][pMoney] = DOF2_SetInt(file, "Money", 1000);//nastavíme počáteční částku (v tomto případě 1000)
DOF2_SetFloat(file, "LastX", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)
DOF2_SetFloat(file, "LastY", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)
DOF2_SetFloat(file, "LastZ", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)
DOF2_SaveFile();//uložíme soubor
GivePlayerMoney(playerid, DOF2_GetInt(file, "Money"));//nastavíme hráči peníze dne registrace)
}
}
case DIALOG_LOGIN:
{
if(response)//když hráč klikne na tlačítko
{
new file[64];
GetPlayerName(playerid,file,sizeof(file));
format(file,sizeof(file),DOF2_File(file));
if(DOF2_FileExists(file)) //zjistíme zda soubor s hráčovým jménem existuje
{
if(DOF2_CheckLogin(file,inputtext))//skontrolujeme zda heslo souhlasí
{
LoadData(playerid);//načteme data podle publicu LoadData
SendClientMessage(playerid, COLOR_CERVENA, "[sERVER]Byl jsi přihlášen");//vypíšeme zprávu o přihlášení
return 1;
}
else//když heslo nesouhlasí
{
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Špatné heslo!","{F81414}Napsal jsi špatné heslo\n{FFFFFF}Napište své heslo zde pro přihlášení","Přihlásit","");//zobrazíme znovu přihlašovací dialog
return 1;
}
}
}
}
}
return 1;
}

 

Vytvoříme si public LoadData:

forward LoadData(playerid);//vytvoříme daný public
public LoadData(playerid)
{
new file[64];
GetPlayerName(playerid,file,sizeof(file));
format(file,sizeof(file),DOF2_File(file));
PlayerInfo[playerid][pKills] = DOF2_GetInt(file,"Kills");//načteme počet zabitých
PlayerInfo[playerid][pDeaths] = DOF2_GetInt(file,"Deaths");//načteme počet úmrtí
PlayerInfo[playerid][pMoney] = DOF2_GetInt(file,"Money");//načteme vlastněnou částku
PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"AdminLevel");//načteme adminlevel
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);//nastavíme hráči vlastněnou částku
return 1;
}

 

Vytvoříme si public SaveData:

forward SaveData(playerid);//vytvoříme daný public
public SaveData(playerid)
{
new file[64];
GetPlayerName(playerid,file,sizeof(file));
format(file,sizeof(file),DOF2_File(file));
GetPlayerMoney(playerid);//získáme vlastněnou hodnotu peněz
DOF2_SetInt(file, "Kills",PlayerInfo[playerid][pKills]);//uložíme počet zabitých
DOF2_SetInt(file, "Deaths",PlayerInfo[playerid][pDeaths]);//uložíme počet úmrtí
DOF2_SetInt(file, "Money",GetPlayerMoney(playerid));//uložíme vlastněnou částku
DOF2_SetInt(file, "AdminLevel",PlayerInfo[playerid][pAdmin]);//uložíme administrační level
GetPlayerPos(playerid,PlayerInfo[playerid][x],PlayerInfo[playerid][y],PlayerInfo[playerid][z]);//získáme hráčovu momentální pozici
DOF2_SetFloat(file, "LastX", PlayerInfo[playerid][x]);//uložíme pozici X
DOF2_SetFloat(file, "LastY", PlayerInfo[playerid][y]);//uložíme pozici Y
DOF2_SetFloat(file, "LastZ", PlayerInfo[playerid][z]);//uložíme pozici Z
DOF2_SaveFile();//uložíme soubor
return 1;
}

 

Vytvoříme si public pro automatické ukládáni dat, kvůli možnosti spadnutí serveru:

forward ukladani();//vytvoříme daný public
public ukladani()
{
for(new i; i<MAX_PLAYERS; i++)//vytvoříme cyklus pro projetí všech hráčů na serveru
{
if(IsPlayerConnected(i))//zjistíme, zda je dané ID připojeno (pokud ano, tak ho nemá cenu ukládat, že ano? )
{
SaveData(i);//Uložíme data
print("[AUTOSAVE]Účty byly úspěšně uloženy!");//vypíšeme zprávu o uložení
}
}
}

 

Snad vám tento tutoriál pomůže, a neposlouží jen k COPY & PASTE :)

Děkuji za pročtení a uživateli Strike za rady a nápovědy když jsem měl problémy při tvorbě.

Jakékoliv připomínky pište zde, ale prosím, aby jste k tomuto tutoriálu nepřipisovali vaše errory apod, v prípadě nouze kontaktujte třeba i mě v SZ a já se vám budu snažit pomoci tam.

Link to comment
Share on other sites

C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(19) : warning 201: redefinition of constant/macro (symbol "USER_FILE_PATH")
C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(98) : error 017: undefined symbol "pIP"
C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(98) : warning 215: expression has no effect
C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(98) : error 001: expected token: ";", but found "]"
C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(98) : error 029: invalid expression, assumed zero
C:\Users\Admin\Desktop\SServer 0.3e\server\gamemodes\IP.pwn(98) : fatal error 107: too many error messages on one line

Link to comment
Share on other sites

A co takhle řádky?

 

Jakékoliv připomínky pište zde, ale prosím, aby jste k tomuto tutoriálu nepřipisovali vaše errory apod, v prípadě nouze kontaktujte třeba i mě v SZ a já se vám budu snažit pomoci tam.
Link to comment
Share on other sites

  • Administrátor

Místo cyklení 500 hráčů bych to msto přes SetTimer udělal přes SetTimerEx... Odpadlo by ti cyklení .. LoadData a SaveData nemusí být public stačí stock ale to je v podstatě jedno... Jinak to celkem de... Sice moje verze mi přijde lepší :d (jak jinak) :d

Link to comment
Share on other sites

  • Administrátor

moje verze tu je nekde pod názvem Advanced Registration případně na mým pawn-code je po tím samým názvem

Link to comment
Share on other sites

  • 3 weeks later...

Mohol by som zverejniť ak by bol záujem o MySQL register systém... aj môj QMysql systém by som mohol dať potom ak si nájdem čas

 

A k téme:

 

Je to dobré, ale zbytočné premenné (a dosť)

 

BTW zaspamuje to serverlog správami ""[AUTOSAVE]Účty byly úspěšně uloženy!""

 

Iba 1x za minutu :d ale když to tam někdo nechce, tak není nic jednodužšího, než tento print odstranit :)

Link to comment
Share on other sites

Dal som si to do pwn a ukazuje mi tieto errory ;)

 

C:\Users\Miroslav\Desktop\Untitled.pwn(18) : error 010: invalid function or declaration

C:\Users\Miroslav\Desktop\Untitled.pwn(21) : warning 235: public function lacks forward declaration (symbol "OnGameModeExi")

C:\Users\Miroslav\Desktop\Untitled.pwn(23) : error 017: undefined symbol "DOF2_Exit"

C:\Users\Miroslav\Desktop\Untitled.pwn(31) : error 017: undefined symbol "COLOR_ZLUTA"

C:\Users\Miroslav\Desktop\Untitled.pwn(35) : error 017: undefined symbol "DOF2_File"

C:\Users\Miroslav\Desktop\Untitled.pwn(36) : error 017: undefined symbol "DOF2_FileExists"

C:\Users\Miroslav\Desktop\Untitled.pwn(39) : error 017: undefined symbol "DOF2_GetString"

C:\Users\Miroslav\Desktop\Untitled.pwn(41) : error 017: undefined symbol "COLOR_CERVENA"

C:\Users\Miroslav\Desktop\Untitled.pwn(46) : error 017: undefined symbol "COLOR_CERVENA"

C:\Users\Miroslav\Desktop\Untitled.pwn(47) : error 017: undefined symbol "DIALOG_LOGIN"

C:\Users\Miroslav\Desktop\Untitled.pwn(52) : error 017: undefined symbol "DIALOG_REGISTER"

C:\Users\Miroslav\Desktop\Untitled.pwn(61) : error 017: undefined symbol "COLOR_ZLUTA"

C:\Users\Miroslav\Desktop\Untitled.pwn(91) : error 017: undefined symbol "DIALOG_REGISTER"

C:\Users\Miroslav\Desktop\Untitled.pwn(93) : error 017: undefined symbol "DIALOG_REGISTER"

C:\Users\Miroslav\Desktop\Untitled.pwn(98) : error 017: undefined symbol "DOF2_File"

C:\Users\Miroslav\Desktop\Untitled.pwn(99) : error 017: undefined symbol "DOF2_CreateFile"

C:\Users\Miroslav\Desktop\Untitled.pwn(101) : error 017: undefined symbol "DOF2_SetString"

C:\Users\Miroslav\Desktop\Untitled.pwn(102) : error 017: undefined symbol "DOF2_SetInt"

C:\Users\Miroslav\Desktop\Untitled.pwn(103) : error 017: undefined symbol "DOF2_SetInt"

C:\Users\Miroslav\Desktop\Untitled.pwn(104) : error 017: undefined symbol "DOF2_SetInt"

C:\Users\Miroslav\Desktop\Untitled.pwn(105) : error 017: undefined symbol "DOF2_SetFloat"

C:\Users\Miroslav\Desktop\Untitled.pwn(106) : error 017: undefined symbol "DOF2_SetFloat"

C:\Users\Miroslav\Desktop\Untitled.pwn(107) : error 017: undefined symbol "DOF2_SetFloat"

C:\Users\Miroslav\Desktop\Untitled.pwn(108) : error 017: undefined symbol "DOF2_SaveFile"

C:\Users\Miroslav\Desktop\Untitled.pwn(109) : error 017: undefined symbol "DOF2_GetInt"

C:\Users\Miroslav\Desktop\Untitled.pwn(112) : error 017: undefined symbol "DIALOG_LOGIN"

C:\Users\Miroslav\Desktop\Untitled.pwn(118) : error 017: undefined symbol "DOF2_File"

 

Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

26 Errors.

 

 

 

Tu je celí kod ;)

 

 

#include

 

enum pInfo

{

pKills,

pDeaths,

pMoney,

pAdmin,

Float:x,

Float:y,

Float:z,

}

new PlayerInfo[MAX_PLAYERS][pInfo];

new pIP[MAX_PLAYERS][16];

 

public OnGameModeInit()

SetTimer("ukladani", 60000, 0);

return 1;

}

 

public OnGameModeExi()

{

DOF2_Exit();

return 1;

}

 

public OnPlayerConnect(playerid)

{

new name[20];

format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o připojení hráče na server

SendClientMessageToAll(COLOR_ZLUTA, name);

printf("[sERVER]Hráč %s se připojil na server!" , GetPlayerName(playerid, name, sizeof(name)));//do konzole se vypíše zpráva o připojení hráče na serveru

new file[64];

GetPlayerName(playerid,file,sizeof(file));

format(file,sizeof(file),DOF2_File(file));

if(DOF2_FileExists(file)) //podmínka, zda existuje soubor s hráčovým jménem

{

GetPlayerIp(playerid,pIP[playerid],16); //když existuje, zjistíme hráčovu IP

if(strcmp(DOF2_GetString(file, "IP"),pIP[playerid],true) == 0)//Když se IP rovná IP v hráčově souboru

{

SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Byl jsi úspěšně přihlášen.");//přihlásí to hráče a vypíše zprávu

LoadData(playerid);//Načte hráčovy data

}

else//když se IP neshoduje

{

SendClientMessage(playerid, COLOR_CERVENA, "[AUTOLOGIN]Přihlášení se nezdařilo, přihlašte se pomocí hesla.");//přihlášení pomocí IP bude neúspěšné

ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Prosím přihlašte se se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro přihlášení ","Přihlásit","");//vyvolání dialogu pro manuální přihlášení

}

}

else//když není soubor s hráčovým jménem

{

ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//vyvolá se dialog pro registraci hráče

}

return 1;

}

 

public OnPlayerDisconnect(playerid, reason)

{

new name[20];

format(name, sizeof(name), "Hráč %s se úspěšně připojil na server!", GetPlayerName(playerid, name, sizeof(name))); //na serveru se vypíše zpráva o odpojení hráče na server

SendClientMessageToAll(COLOR_ZLUTA, name);

printf("[sERVER]Hráč %s se odpojil ze serveru!" , GetPlayerName(playerid, name, sizeof(name))); //do konzole se vypíše zpráva o odpojení hráče na serveru

SaveData(playerid);//Uložíme data hráče

return 1;

}

 

public OnPlayerSpawn(playerid)

{

if(PlayerInfo[playerid][x] == 0.0 && PlayerInfo[playerid][y] == 0.0)//když jsou v souboru uložené pozice X a Y rovny 0 (tutíž když není uložena pozice)

{

SetPlayerPos(playerid, -299.8857, 1015.5681, 19.5938);//hrač se spawne na této pozici

}

else//když jsou souřadnice jinné

{

SetPlayerPos(playerid, PlayerInfo[playerid][x], PlayerInfo[playerid][y], PlayerInfo[playerid][z]);//nastaví se pozice ze souboru

}

return 1;

}

 

public OnPlayerDeath(playerid, killerid, reason)

{

PlayerInfo[killerid][pKills]++;//počet zabitých s každým dalším stoupne o 1

PlayerInfo[playerid][pDeaths]++;//počet úmrtí s každým dalším stoupne o 1

return 1;

}

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{

switch(dialogid)

{

case DIALOG_REGISTER:

{

if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,"Vítejte, prosím registrujte se!","{FFFFFF}Zde napište své {00FF22}heslo {FFFFFF}pro registraci","Registrovat","");//když hráč nezadá heslo, oběví se dialog pro zadání nového hesla

if(response)//když hráč klikne na tlačítko

{

new file[64];

GetPlayerName(playerid,file,sizeof(file));

format(file,sizeof(file),DOF2_File(file));

DOF2_CreateFile(file, inputtext);//vytvoří se soubor s hráčovým jménem, a uloží se heslo z dialogu

GetPlayerIp(playerid,pIP[playerid],16);//zjistíme hráčovu IP

DOF2_SetString(file, "IP", pIP[playerid]);//uložíme hráčovu IP pod klíčem IP

PlayerInfo[playerid][pKills] = DOF2_SetInt(file, "Kills", 0);//nastavíme počet zabitých (začátek = 0)

PlayerInfo[playerid][pDeaths] = DOF2_SetInt(file, "Deaths", 0);//nastavíme počet úmrtí (začátek = 0)

PlayerInfo[playerid][pMoney] = DOF2_SetInt(file, "Money", 1000);//nastavíme počáteční částku (v tomto případě 1000)

DOF2_SetFloat(file, "LastX", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)

DOF2_SetFloat(file, "LastY", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)

DOF2_SetFloat(file, "LastZ", 0);//nastavíme souřadnici na 0 (hráč ještě není spawnut)

DOF2_SaveFile();//uložíme soubor

GivePlayerMoney(playerid, DOF2_GetInt(file, "Money"));//nastavíme hráči peníze dne registrace)

}

}

case DIALOG_LOGIN:

{

if(response)//když hráč klikne na tlačítko

{

new file[64];

GetPlayerName(playerid,file,sizeof(file));

format(file,sizeof(file),DOF2_File(file));

if(DOF2_FileExists(file)) //zjistíme zda soubor s hráčovým jménem existuje

{

if(DOF2_CheckLogin(file,inputtext))//skontrolujeme zda heslo souhlasí

{

LoadData(playerid);//načteme data podle publicu LoadData

SendClientMessage(playerid, COLOR_CERVENA, "[sERVER]Byl jsi přihlášen");//vypíšeme zprávu o přihlášení

return 1;

}

else//když heslo nesouhlasí

{

ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,"Špatné heslo!","{F81414}Napsal jsi špatné heslo\n{FFFFFF}Napište své heslo zde pro přihlášení","Přihlásit","");//zobrazíme znovu přihlašovací dialog

return 1;

}

}

}

}

}

return 1;

}

 

forward LoadData(playerid);//vytvoříme daný public

public LoadData(playerid)

{

new file[64];

GetPlayerName(playerid,file,sizeof(file));

format(file,sizeof(file),DOF2_File(file));

PlayerInfo[playerid][pKills] = DOF2_GetInt(file,"Kills");//načteme počet zabitých

PlayerInfo[playerid][pDeaths] = DOF2_GetInt(file,"Deaths");//načteme počet úmrtí

PlayerInfo[playerid][pMoney] = DOF2_GetInt(file,"Money");//načteme vlastněnou částku

PlayerInfo[playerid][pAdmin] = DOF2_GetInt(file,"AdminLevel");//načteme adminlevel

GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);//nastavíme hráči vlastněnou částku

return 1;

}

 

orward SaveData(playerid);//vytvoříme daný public

public SaveData(playerid)

{

new file[64];

GetPlayerName(playerid,file,sizeof(file));

format(file,sizeof(file),DOF2_File(file));

GetPlayerMoney(playerid);//získáme vlastněnou hodnotu peněz

DOF2_SetInt(file, "Kills",PlayerInfo[playerid][pKills]);//uložíme počet zabitých

DOF2_SetInt(file, "Deaths",PlayerInfo[playerid][pDeaths]);//uložíme počet úmrtí

DOF2_SetInt(file, "Money",GetPlayerMoney(playerid));//uložíme vlastněnou částku

DOF2_SetInt(file, "AdminLevel",PlayerInfo[playerid][pAdmin]);//uložíme administrační level

GetPlayerPos(playerid,PlayerInfo[playerid][x],PlayerInfo[playerid][y],PlayerInfo[playerid][z]);//získáme hráčovu momentální pozici

DOF2_SetFloat(file, "LastX", PlayerInfo[playerid][x]);//uložíme pozici X

DOF2_SetFloat(file, "LastY", PlayerInfo[playerid][y]);//uložíme pozici Y

DOF2_SetFloat(file, "LastZ", PlayerInfo[playerid][z]);//uložíme pozici Z

DOF2_SaveFile();//uložíme soubor

return 1;

}

 

forward ukladani();//vytvoříme daný public

public ukladani()

{

for(new i; i{

if(IsPlayerConnected(i))//zjistíme, zda je dané ID připojeno (pokud ano, tak ho nemá cenu ukládat, že ano? :))

{

SaveData(i);//Uložíme data

print("[AUTOSAVE]Účty byly úspěšně uloženy!");//vypíšeme zprávu o uložení

}

}

}

 

 

 

Help PLS

Edited by Мирослав
Link to comment
Share on other sites

  • 3 weeks later...

Zdravím háže mi to toto.

 

 

C:\Users\Patrik\Desktop\GTA Server\pawno\Novy-Svet.pwn(402) : error 001: expected token: "#endif", but found "-end of file-"

C:\Users\Patrik\Desktop\GTA Server\pawno\Novy-Svet.pwn(402) : warning 203: symbol is never used: "DOF2_Exit"

 

a nevím co s tím prosím o radu děkuju.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...