FiZZy 12 Odesláno: 5. Leden, 2013 Share Odesláno: 5. Leden, 2013 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 More sharing options...
Deejva 36 Odesláno: 11. Leden, 2013 Share Odesláno: 11. Leden, 2013 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 More sharing options...
FiZZy 12 Odesláno: 11. Leden, 2013 Author Share Odesláno: 11. Leden, 2013 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 More sharing options...
Administrátor Ewwe 434 Odesláno: 11. Leden, 2013 Administrátor Share Odesláno: 11. Leden, 2013 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ší (jak jinak) Link to comment Share on other sites More sharing options...
jAk3r 47 Odesláno: 12. Leden, 2013 Share Odesláno: 12. Leden, 2013 a tu svoji verzy mas kde? Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 13. Leden, 2013 Administrátor Share Odesláno: 13. Leden, 2013 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 More sharing options...
jAk3r 47 Odesláno: 29. Leden, 2013 Share Odesláno: 29. Leden, 2013 A psal si tu ze tu mas i registrraci s MySQL a tu máš pod jakým názvem? Link to comment Share on other sites More sharing options...
FiZZy 12 Odesláno: 29. Leden, 2013 Author Share Odesláno: 29. Leden, 2013 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 ale když to tam někdo nechce, tak není nic jednodužšího, než tento print odstranit Link to comment Share on other sites More sharing options...
Mivčo 90 Odesláno: 30. Leden, 2013 Share Odesláno: 30. Leden, 2013 (upraveno) 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 30. Leden, 2013 by Мирослав Link to comment Share on other sites More sharing options...
Wipes92 0 Odesláno: 17. Únor, 2013 Share Odesláno: 17. Únor, 2013 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now