Globální moderátor Hip 191 Odesláno: 18. Září, 2012 Globální moderátor Share Odesláno: 18. Září, 2012 Format Obtížnost: Ahoj nevšiml jsem si že by tu někde byl návod jak a kde využít funkci format. A protože nám v domě odmontovali elektroměr, tak sem z nudy napsal tenhle návod... Obsah: [*:3182an6c]Předmluva[*:3182an6c]Syntaxe a funkce[*:3182an6c]Vysvětlení[*:3182an6c]Použití + Příklady Předmluva: Funkce formát se používá k formátování textu. Příklad: Chcete aby se jméno odwarpovaného hráče zobrazilo v textu nebo vypsat proměnou. Formát má spoustu využití a to všude. Například dialogové menu kde je cokoliv co se musí od někud nahrát obsahuje funkci formát (třeba info dialog). Je dobré si předem rozmyslet. zde není jednodušší použít strcat než format. Ještě maličká připomínka - tyto uvozvky " se nikde nepíší, pouze ohraničují začátek a konec příkladu. A teď tedy pojďme k samotnému návodu... Syntaxe a funkce: format(output[], len, const format[], {Float,_}:...) takže vše popořadě: format - název funkce/příkazu (dále nebudu rozepisovat) output - string se kterým budeme pracovat len - maximální délka textu, kterou bude formát odesílat const format[] - samotný text do kterého se pak bude vše vypisovat {Float,_}:... - proměné které se budou v textu vypisovat Vysvětlení: output do tohoto pole se dosadí proměná kterou si předem připravíme: new string[128]; a dosadíme pouze "string" len u outputu jsem si dali new string[128]; 128 je hodnota stringu, tedy maximální délka znaků, která se dá do proměné zapsat. Na místo len se dájí dát dva způsoby 1. číslo, neboli maximální velikost, kterou formát odešle (nezáleží na velikosti proměné, když se proměná naplní, tak se další text nevypíše) 2. napsáním sizeof(string) to znamená velikost a do závorek proměná. Velikost proměné je 128, takže se dosadí hodnota 128. My si dosadíme "sizeof(string)" Pozn.: Je na každém jestli bude psát číslo nebo sizeof(proměná)... Jde jen o zvyk cons format[] Toto je text který se bude vypisovat. Zapisuje se do něj stejné jako v SendClientMessage (nebudu vysvětlovat) Proměnou vypíšeme pomocí integru: %d - číslo/proměná %f - desetinné číslo %s - text %% - vloží procento, pokud by jste tam dali pouze jedno procento bez ničeho, byla by tam mezera(nic) Pozn.: Nejsou zde všechny, dal jsem sem jen ty základní. My si uděláme svůj text: "Moje Score: %d" Pozor: Zde je vyjímka - zde se píší uvozovky {Float,_}:... Zde se zapisují, jak už jsem zmínil, proměné či jiné příkazy, které se vypíší v textu př.: GetPlayerScore(playerid) dosadíme "GetPlayerScore(playerid)" 1. Pozn.: Za každým dalším vypsaným příkazem se píše čárka "," 2. Pozn.: Pokud by jste chtěli změnit barvu tak HEX barvy do {...} --> {00FF00} Nebudu to více vysvětlovat ale ukážu to na příkladu. Použití + Příklady: Jak by měl vypadat náš konečný výsledek: new string[128]; format(string,sizeof(string),"Moje score: %d",GetPlayerScore(playerid)); //Použití takto: SendClientMessage(playerid,0xFFFFFFFF,string); Toto vypíše hráči zprávu: Moje IP: 255:255:255:255 Můj Nick: Hip 2. Příklad: new string[128]; new Float:x;Float:y;Float:z; GetPlayerPos(playerid,x,y,z); format(string,sizeof(string),"{FF0000}Moje pozice: {00FF00}X = %f Y = %f Z = %f",x,y,z); SendClientMessage(playerid,0xFFFFFFFF,string); 3. Příklad: stock Link to comment Share on other sites More sharing options...
Guest Odesláno: 18. Září, 2012 Share Odesláno: 18. Září, 2012 Téměř to samé, jen si to víc rozepsal format-t13134.html?hilit=Format avšak Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 18. Září, 2012 Administrátor Share Odesláno: 18. Září, 2012 Jen tak že ti do toho kecám jo tak tvůj příklad co máš dole nebude fungovat jinak třeba by se hodila i tato definice #define formatex(%0,%1,%2) format(%0,sizeof(%0),%1,%2) Link to comment Share on other sites More sharing options...
Globální moderátor Hip 191 Odesláno: 18. Září, 2012 Author Globální moderátor Share Odesláno: 18. Září, 2012 Téměř to samé, jen si to víc rozepsal format-t13134.html?hilit=Format avšak promiň kdybych ho našel tak bych neosal ... Jen tak že ti do toho kecám jo tak tvůj příklad co máš dole nebude fungovat jinak třeba by se hodila i tato definice #define formatex(%0,%1,%2) format(%0,sizeof(%0),%1,%2) definice by se více méně hodila to jo a řekni mi co nebude fungovat na tom příkladě? jediné co si nejsem jist je IP Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 18. Září, 2012 Administrátor Share Odesláno: 18. Září, 2012 GetPlayerIP(playerid) ani GetPlayerName(playerid) nemá jen jeden argument a rozhodně není návratovou hodnotou string pokud se nemýlím tak obě vrací 1 pokud je zjištovaný připojen .. EDIT tak ne GetplayerName vrací délku jména a GetPlayerIp 0 kdyz se nepodari a 1 když se podaří Link to comment Share on other sites More sharing options...
Globální moderátor Hip 191 Odesláno: 18. Září, 2012 Author Globální moderátor Share Odesláno: 18. Září, 2012 GetPlayerIP(playerid) ani GetPlayerName(playerid) nemá jen jeden argument a rozhodně není návratovou hodnotou string pokud se nemýlím tak obě vrací 1 pokud je zjištovaný připojen .. EDIT tak ne GetplayerName vrací délku jména a GetPlayerIp 0 kdyz se nepodari a 1 když se podaří aha už si to uvědomuju já si asi zaměnil PlayerName s GetlayerName sakra jdu to předělat Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 18. Září, 2012 Administrátor Share Odesláno: 18. Září, 2012 No jo holt se stává no osobě nechápu proč to už dávno není změněné ... ale to je od tématu Ještě bych doplnil že lze také pracovat se samotnými operátory když to tak řeknu ... Například : new H,M,S; Gettime(H,M,S); new string[80]; format(string,80,"%d:%d %d",H,M,S); Tím pádem dejme tomu přes ně o půlnoci bude hodnota stringu 0:0 0 což je alespoň podle mě neestetické takže je možné udělat to takto format(string,80,"%02d:%02d %02d",H,M,S); Nyní bude o půlnoci hodnota 00:00 00 stejným způůsobem jde omezovat počet desetiných míst u Floatu %.2f výsledný float bude tedy jen na dvě místa Link to comment Share on other sites More sharing options...
TWeak 5 Odesláno: 19. Září, 2012 Share Odesláno: 19. Září, 2012 A ještě napiš, co dělat, když se nechce vypsat zavináč. Jinak fakt hezký tutoriál. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 19. Září, 2012 Administrátor Share Odesláno: 19. Září, 2012 A ještě napiš, co dělat, když se nechce vypsat zavináč. Jinak fakt hezký tutoriál. Se zavináčem snad problém není normálně bych ho vypsal přes %c jako znak nebo %s jako string .... se znaménkem procenta je problém to se ve formátu vypisuje pomocí %% Link to comment Share on other sites More sharing options...
TWeak 5 Odesláno: 19. Září, 2012 Share Odesláno: 19. Září, 2012 A ještě napiš, co dělat, když se nechce vypsat zavináč. Jinak fakt hezký tutoriál. Se zavináčem snad problém není normálně bych ho vypsal přes %c jako znak nebo %s jako string .... se znaménkem procenta je problém to se ve formátu vypisuje pomocí %% Já nevím, jelikož, já jsme měl svůj MySQL systém, a formátoval jsem si email z DB do logu. A zavináč to neformátovalo ani pře %c ani %s. Nešlo to ani v dialogu, ani se chat message. Link to comment Share on other sites More sharing options...
Administrátor Ewwe 434 Odesláno: 19. Září, 2012 Administrátor Share Odesláno: 19. Září, 2012 printf("%s","[email protected]"); zavináč to normálně vypíše Link to comment Share on other sites More sharing options...
AK47 2 Odesláno: 17. Říjen, 2012 Share Odesláno: 17. Říjen, 2012 Dobrý TuT ale... new string[128]; format(string,sizeof(string),"Moje score: %d",GetPlayerScore(playerid)); //Použití takto: SendClientMessage(playerid,0xFFFFFFFF,string);[/code] Toto vypíše hráči zprávu: Moje IP: 255:255:255:255 Můj Nick: Hip "Moje score: %s" a prý že mu to vypíše Moje IP: 255:... Můj Nick: Hip? WTF? 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