Marshall_ 0 Odesláno: 11. Leden, 2018 Share Odesláno: 11. Leden, 2018 Popis problému: Zdravím, v jazyku PAWN a celkovo v programovaní som totálny začiatočník a nemám ani páru ako zmeniť text odoslanej správy v chate. Myslím to tak, že ak hráč pošle ľubovoľnú správu, bude mať stále rovnakú farbu, akú si určí. Skúšal som niečo s SendClientMessageToAll, ale vôbec mi to nefunguje. Nejaké rady ako na to? Ďakujem. Chyby/varování kompilátoru a při běhu: -- Kód: -- Dodatečné poznámky: -- Link to comment Share on other sites More sharing options...
0 SnOwY_ 9 Odesláno: 11. Leden, 2018 Share Odesláno: 11. Leden, 2018 (upraveno) Ahoj Marshalle, příkládám ti názorný kód jak by to mohlo vše vypadat: new barva[MAX_PLAYERS]; // policko kde budeme delat podminku // Ted prijde na radu nejaky prikaz, rekneme /barva. // Odkaz k potrebnemu includu pro prikaz naleznes zde: http://forum.sa-mp.com/showthread.php?t=91354 CMD:zelena(playerid) { barva[playerid] = 1; // Nastavime barvu textu na green return 1; } CMD:cervena(playerid) { barva[playerid] = 2; // Nastavime barvu textu na red return 1; } CMD:zrusit(playerid) { barva[playerid] = 0; // Zrusime barevny text return 1; } a ted odesleme barvu do chatu: public OnPlayerText(playerid,text[]) { new str[168]; if(barva[playerid] == 1) // Napriklad toto bude barva zelena { format(str,sizeof(str),"%s (ID %d): {00FF00} %s",PlayerName(playerid),playerid,text); } else if(barva[playerid] == 2) // Napriklad toto bude barva cervena { format(str,sizeof(str),"%s (ID %d): {FF0000} %s",PlayerName(playerid),playerid,text); } else if(barva[playerid] == 0) // Pokud nema hrac nastavenou barvu tak bude psat bile. { format(str,sizeof(str),"%s (ID %d): {FFFFFF}%s",PlayerName(playerid),playerid,text); } SendClientMessageToAll(GetPlayerColor(playerid),str); return 0; } // Nekam dolu, budes potrebovat pro zjisteni hracoveho jmena: stock PlayerName(playerid) { new name[25]; GetPlayerName(playerid,name,25); return name; } // Ber to jako jednoduchy navod pro zmenu barev v chatu. Edited 12. Leden, 2018 by SnOwY_ Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 (upraveno) Ahoj Marshalle, příkládám ti názorný kód jak by to mohlo vše vypadat: new barva[MAX_PLAYERS]; // policko kde budeme delat podminku // Ted prijde na radu nejaky prikaz, rekneme /barva. // Odkaz k potrebnemu includu pro prikaz naleznes zde: http://forum.sa-mp.com/showthread.php?t=91354 CMD:zelena(playerid) { barva[playerid] = 1; // Nastavime barvu textu na green return 1; } CMD:cervena(playerid) { barva[playerid] = 2; // Nastavime barvu textu na red return 1; } CMD:zrusit(playerid) { barva[playerid] = 0; // Zrusime barevny text return 1; } a ted odesleme barvu do chatu: public OnPlayerText(playerid,text[]) { new str[168]; if(barva[playerid] == 1) // Napriklad toto bude barva zelena { format(str,sizeof(str),"%s (ID %d): {00FF00} %s",PlayerName(playerid),playerid,text); } if(barva[playerid] == 2) // Napriklad toto bude barva cervena { format(str,sizeof(str),"%s (ID %d): {FF0000} %s",PlayerName(playerid),playerid,text); } else // Pokud nema hrac nastavenou barvu tak bude psat bile. { format(str,sizeof(str),"%s (ID %d): {FFFFFF}%s",PlayerName(playerid),playerid,text); } SendClientMessageToAll(GetPlayerColor(playerid),str); return 0; } // Nekam dolu, budes potrebovat pro zjisteni hracoveho jmena: stock PlayerName(playerid) { new name[25]; GetPlayerName(playerid,name,25); return name; } // Ber to jako jednoduchy navod pro zmenu barev v chatu. Toto síce fungovať bude, ale ako začiatočníkovi by si mu mal vysvetliť čo je vôbec CMD, prípadne mu to dať do onplayercommand, ak bude chcieť použiť nejaký špeci cmd include tak si to prerobí sám - zbytočne ho pletieš Taktiež ako máš spravené podmienky, treba si to opraviť, miesto if, if, if, if else je treba použiť if, else if, else if, else if, else Prečo? Pretože mu to vždy naformátuje na bielo, pokiaľ sa premenná nebude rovnať 2 Prípadne môžeš použiť switch Príklad v spoilery if(premenna == 1) { // premenná sa rovná 1, zvyšok kódu sa už nekontroluje } else if(premenna == 2) { // premenná sa rovná 2 } else if(premenna == 3) { // premenná sa rovná 3 } else { // premenná sa rovná čomukoľvek okrem 1,2,3 } switch(premenna) { case 1: { // ak sa premenná rovna 1 } case 2: { // ak sa premenná rovná 2 } case 3,4: { // ak sa premenná rovná 3 alebo 4 } case 5..12: { // ak sa premenná rovná viac ako 4 a menej ako 13 (od 5 do 12) } default: { // ak sa premenná rovná čomukoľvek čo sa nenachádza hore (tj. 0 a menej a 13 a viac) } } Edited 12. Leden, 2018 by Quiter Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 Pripadne obejit podminky kompletne, do pole ukladat primo barvu a ne nejake nic nerikajici cislo Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 Pripadne obejit podminky kompletne, do pole ukladat primo barvu a ne nejake nic nerikajici cislo To je neefektívne, kvôli 1 údaju vytvárať X premenných Ale pokiaľ má na servery pamäte na rozdávanie tak kludne Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 Jak je to neefektivní? Místo CMD:zelena(playerid) { barva[playerid] = 1; // Nastavime barvu textu na green return 1; } bude mít CMD:zelena(playerid) { barva[playerid] = 0x00FF00; // Nastavime barvu textu na green return 1; } Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 Jak je to neefektivní? Místo CMD:zelena(playerid) { barva[playerid] = 1; // Nastavime barvu textu na green return 1; } bude mít CMD:zelena(playerid) { barva[playerid] = 0x00FF00; // Nastavime barvu textu na green return 1; } Ah jasné, moja chyba. Neuvedomil som si že farba sa dá zapísať do integeru Link to comment Share on other sites More sharing options...
0 SnOwY_ 9 Odesláno: 12. Leden, 2018 Share Odesláno: 12. Leden, 2018 (upraveno) Stim else if moje chyba zapomnel sem tam dopsat podminku a zcmd includ sem uvedl z toho duvodu, ze je rychlejsi a zaroven lepe zpracovatelny, obzvlast pro novacky OPRAVENO Edited 12. Leden, 2018 by SnOwY_ Link to comment Share on other sites More sharing options...
Dotaz
Marshall_ 0
Popis problému:
Zdravím,
v jazyku PAWN a celkovo v programovaní som totálny začiatočník a nemám ani páru ako zmeniť text odoslanej správy v chate.
Myslím to tak, že ak hráč pošle ľubovoľnú správu, bude mať stále rovnakú farbu, akú si určí.
Skúšal som niečo s SendClientMessageToAll, ale vôbec mi to nefunguje.
Nejaké rady ako na to?
Ďakujem.
Chyby/varování kompilátoru a při běhu:
--
Kód:
Dodatečné poznámky:
--
Link to comment
Share on other sites
7 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