Jump to content
  • 0

pomoc Zmena farby textu v chate


Marshall_

Dotaz

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

  • 0

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 by SnOwY_
Link to comment
Share on other sites

  • 0

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 icon_e_wink.gif Prečo? Pretože mu to vždy naformátuje na bielo, pokiaľ sa premenná nebude rovnať 2 icon_e_wink.gif

Prípadne môžeš použiť switch icon_e_wink.gif 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 by Quiter
Link to comment
Share on other sites

  • 0

Pripadne obejit podminky kompletne, do pole ukladat primo barvu a ne nejake nic nerikajici cislo icon_e_smile.gif

 

To je neefektívne, kvôli 1 údaju vytvárať X premenných :d Ale pokiaľ má na servery pamäte na rozdávanie tak kludne :d

Link to comment
Share on other sites

  • 0

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

  • 0

 

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

  • 0

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 by SnOwY_
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...