DeF 0 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 Popis problému: Čau, mám problém s /ANN a ukládání pozice a peněz. Nezobrazuje se mi text když zadám /ann Chtěl bych poradit jak nastavit aby se mi uložila pozice a peníze aby mi zůstali stejné. Chyby/varování kompilátoru a při běhu: K pozici a penězům nemám kod, nevím jak to udělat. Proto bych vás chtěl poprosit o pomoc. Kód: CMD:ann(playerid, params[]){ if(Admin[playerid] < 2) { return SendClientMessage(playerid, 0xEFEFF7AA, "[ ! ] Nemáte dostatečná admin práva !"); } else if(sscanf(params, "us", playerid))SendClientMessage(playerid, GP, "Použij: /ann [TEXT]"); new string[256]; if(IsPlayerConnected(playerid)){ if(ann_aktivace==1){ KillTimer(timer_ann); for(new i=0;i<= GetMaxPlayers();i++) TextDrawHideForPlayer(i,Ann); } format(string,sizeof(string),"~w~%s",params); timer_ann = SetTimer("Ann_end",60000,0); TextDrawSetString(Ann,string); for(new i=0;i<= GetMaxPlayers();i++) TextDrawShowForPlayer(i,Ann); ann_aktivace=1; } return 1; } Dodatečné poznámky: Díky všem za pomoc. Link to comment Share on other sites More sharing options...
0 Amenadiel 286 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 nebylo by lepší použít http://wiki.sa-mp.com/wiki/GameTextForAll kód by byl pak jednoduše jen takle.. CMD:ann(playerid, params[]) { if(Admin[playerid] < 2) return SendClientMessage(playerid, 0xEFEFF7AA, "[ ! ] Nemáte dostatečná admin práva !"); if(sscanf(params, "u", params)) return SendClientMessage(playerid, GP, "Použij: /ann [TEXT]"); for(new i=0;i<= GetMaxPlayers();i++) { GameTextForAll(params, 5000, 3); } return 1; } Někdo mě opravte pokud se pletu... Link to comment Share on other sites More sharing options...
0 Globální moderátor Hip 191 Odesláno: 20. Říjen, 2017 Globální moderátor Share Odesláno: 20. Říjen, 2017 nebylo by lepší použít http://wiki.sa-mp.com/wiki/GameTextForAll kód by byl pak jednoduše jen takle.. CMD:ann(playerid, params[]) { if(Admin[playerid] < 2) return SendClientMessage(playerid, 0xEFEFF7AA, "[ ! ] Nemáte dostatečná admin práva !"); if(sscanf(params, "u", params)) return SendClientMessage(playerid, GP, "Použij: /ann [TEXT]"); for(new i=0;i<= GetMaxPlayers();i++) { GameTextForAll(params, 5000, 3); } return 1; } Někdo mě opravte pokud se pletu... jo, bez toho cyklu, gametextforALL proto není potřeba přeci cyklus Link to comment Share on other sites More sharing options...
0 Amenadiel 286 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 jo, bez toho cyklu, gametextforALL proto není potřeba přeci cyklus jžš i anděl se někdy splete, nesud mě. Můj otec mi sebral schopnost a jsem padlý anděl XD Link to comment Share on other sites More sharing options...
0 TeoCZE 4 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 Pro ukládání a načítání peněz/pozice je tu spoustu návodů.... např. přes mysql Link to comment Share on other sites More sharing options...
0 Ninjonik 11 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 aha no ja pracujem na tom móde s ním ale my sme chceli niečo také ako, že keď admin použije ten príkaz tak sa vytvorí textdraw a napr. príkazom /annoff by sa ten textdraw vypol no. Myslím si že je to lepšie ako GameText Ale tak keď tak použijeme toto no. Díky. Link to comment Share on other sites More sharing options...
0 Matthew_Bennet 44 Odesláno: 20. Říjen, 2017 Share Odesláno: 20. Říjen, 2017 cmd(ann, playerid, params[]) { new string[size]; if(Ak je admin) { if(!params[0]) return TextDrawHideForAll(AnnText); format(string, sizeof string, "~w~%s", params); TextDrawSetString(AnnText, string); TextDrawShowForAll(AnnText); }else{SendClientMessage(playerid, COLOR_RED, "Nie ste admin");} //ak nie je admin return 1; } Čo je tam viac treba? Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 21. Říjen, 2017 Share Odesláno: 21. Říjen, 2017 new string[256]; - načo toľko znakov??if(IsPlayerConnected(playerid)){ - čo je sakra toto? ako môže hráč ktorý nie je pripojený zadať príkaz /ann? Ukladanie si sprav cez registráciu, je tu mnoho návodov, stačí pohladať Link to comment Share on other sites More sharing options...
0 DeF 0 Odesláno: 21. Říjen, 2017 Author Share Odesláno: 21. Říjen, 2017 Ok, díky za rady Link to comment Share on other sites More sharing options...
0 DuFF 79 Odesláno: 21. Říjen, 2017 Share Odesláno: 21. Říjen, 2017 (upraveno) else if(sscanf(params, "us", playerid))SendClientMessage(playerid, GP, "Použij: /ann [TEXT]"); Nejak som sa stratil v tomto riadku... 1. else tam vôbec nemusíš použiť (o 2 riadky vyššie používaš return)2. Používaš "us", kde 'u' načítava hráčov nick / ID do premennej playerid (k čomu to využiješ?) a 's' načítava string bez definovanej dĺžky a dokonca ho nikam neukladáš. Ako napísal Matthew_Bennet, plugin sscanf vôbec nepotrebuješ využívať, stačí ti nastaviť text textdrawu na params. Čo som si všimol ďalej... Používanie GetMaxPlayers() vo for cykle väčšinou nebýva dobrý nápad.Navyše for cyklus vôbec nepotrebuješ, ako napísal Hip, existujú funkcie GameTextForAll, TextDrawShowForAll, TextDrawHideForAll. Ďalej vidím, že si chcel spraviť automatické vypnutie annu po 60 sekundách a držíš si kvôli tomu informáciu, či je momentálne zobrazený nejaký ann.Mám dojem, že túto informáciu si nepotrebuješ ukladať, pretože ak zavoláš KillTimer na timer, ktorý nebeží, alebo TextDrawHideForAll na textdraw, ktorý nie je zobrazený, nebude to mať žiadne nežiadúce účinky (dúfam). Takže riešenie by mohlo možno vyzerať nejak takto: #define MSG_COLOR 0xEFEFF7AA new Text:AnnText; new AnnTimer; CMD:ann(playerid, params[]) { if (Admin[playerid] < 2) return SendClientMessage(playerid, MSG_COLOR, "[ ! ] Nemáte dostatečná admin práva !"); if (isnull(params)) return SendClientMessage(playerid, MSG_COLOR, "Použij: /ann <TEXT>"); AnnEnd(); TextDrawSetString(AnnText, params); TextDrawShowForAll(AnnText); SetTimer("AnnEnd", 60000, false); return 1; } forward AnnEnd(); public AnnEnd() { KillTimer(AnnTimer); TextDrawHideForAll(AnnText); } Ann budeš zapínať pomocou /ann <TEXT>, sám sa vypne po 60 sekundách a ak ho budeš chcieť vypnúť predčasne, napíšeš napríklad "/ann _", prípadne za _ použiješ iný znak, ktorý sa v textdrawoch nezobrazuje. Edited 24. Říjen, 2017 by DuFF 1 Link to comment Share on other sites More sharing options...
0 DeF 0 Odesláno: 21. Říjen, 2017 Author Share Odesláno: 21. Říjen, 2017 else if(sscanf(params, "us", playerid))SendClientMessage(playerid, GP, "Použij: /ann [TEXT]"); Nejak som sa stratil v tomto riadku... 1. else tam vôbec nemusíš použiť (o 2 riadky vyššie používaš return) 2. Používaš "us", kde 'u' načítava hráčov nick / ID do premennej playerid (k čomu to využiješ?) a 's' načítava string bez nedefinovanej dĺžky a dokonca ho nikam neukladáš. Ako napísal Matthew_Bennet, plugin sscanf vôbec nepotrebuješ využívať, stačí ti nastaviť text textdrawu na params. Čo som si všimol ďalej... Používanie GetMaxPlayers() vo for cykle väčšinou nebýva dobrý nápad. Navyše for cyklus vôbec nepotrebuješ, ako napísal Hip, existujú funkcie GameTextForAll, TextDrawShowForAll, TextDrawHideForAll. Ďalej vidím, že si chcel spraviť automatické vypnutie annu po 60 sekundách a držíš si kvôli tomu informáciu, či je momentálne zobrazený nejaký ann. Mám dojem, že túto informáciu si nepotrebuješ ukladať, pretože ak zavoláš KillTimer na timer, ktorý nebeží, alebo TextDrawHideForAll na textdraw, ktorý nie je zobrazený, nebude to mať žiadne nežiadúce účinky (dúfam). Takže riešenie by mohlo možno vyzerať nejak takto: #define MSG_COLOR 0xEFEFF7AA new Text:AnnText; new AnnTimer; CMD:ann(playerid, params[]) { if (Admin[playerid] < 2) return SendClientMessage(playerid, MSG_COLOR, "[ ! ] Nemáte dostatečná admin práva !"); if (isnull(params)) return SendClientMessage(playerid, MSG_COLOR, "Použij: /ann <TEXT>"); AnnEnd(); TextDrawSetString(AnnText, params); TextDrawShowForAll(AnnText); SetTimer("AnnEnd", 60000, false); return 1; } forward AnnEnd(); public AnnEnd() { KillTimer(AnnTimer); TextDrawHideForAll(AnnText); } Ann budeš zapínať pomocou /ann <TEXT>, sám sa vypne po 60 sekundách a ak ho budeš chcieť vypnúť predčasne, napíšeš napríklad "/ann _", prípadne za _ použiješ iný znak, ktorý sa v textdrawoch nezobrazuje. Díky za radu. Link to comment Share on other sites More sharing options...
Dotaz
DeF 0
Popis problému:
Čau, mám problém s /ANN a ukládání pozice a peněz.
Nezobrazuje se mi text když zadám /ann
Chtěl bych poradit jak nastavit aby se mi uložila pozice a peníze aby mi zůstali stejné.
Chyby/varování kompilátoru a při běhu:
K pozici a penězům nemám kod, nevím jak to udělat.
Proto bych vás chtěl poprosit o pomoc.
Kód:
Dodatečné poznámky:
Díky všem za pomoc.
Link to comment
Share on other sites
10 odpovědí na tuto otázku
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