Jump to content
  • 0

0.3d RC2 / 0.3c R5 - OnPlayerText


LaZ

Question

[pawn]

public OnPlayerText(playerid, text[ ])

{

    new textv2[128], name[MAX_PLAYER_NAME];

    GetPlayerName(playerid, name, sizeof (name));

    format(textv2, sizeof (textv2), "%d >> %s: %s", playerid, name, text);

    SendPlayerMessageToAll(playerid, textv2);

    return 0;

}

[/pawn]

Isi da seama cineva ce-i gresit aici ?

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

Guest RockStar

LaZ" post="94545" timestamp="1316902669"]

Nu.

Apare in chat:

[NoV]LaZ: 0 >> [NoV]LaZ: text

Habar nu am ce naiba are, am pierdut prea mult timp cu acel cod.  :((

Stai ca nu am inteles, explicane ce vrei sa faci? ce vrei sa iti iasa?

Tie iti apare exact ce ai facut tu:

format(textv2, sizeof (textv2), "%d >> %s: %s", playerid, name, text);
Link to comment
Share on other sites

[pawn]public OnPlayerText(playerid, text[ ])

{

    new textv2[128], name[MAX_PLAYER_NAME];

    GetPlayerName(playerid, name, sizeof (playerid));

    format(textv2, sizeof (textv2), "%d >> %s: %s", playerid, name, text);

    SendPlayerMessageToAll(playerid, textv2);

    return 0;

}

[/pawn]

Ia incearca asa ;)

Link to comment
Share on other sites

Stai ca nu am inteles, explicane ce vrei sa faci? ce vrei sa iti iasa?

Tie iti apare exact ce ai facut tu:

Daca pui return 0 in OnPlayerText, nu apare nici un mesaj in chat.

Nu vreau acel text default, ci acel modificat sa apara id-ul jucatorului in chat.

@ Zapakitu: sizeof (playerid) ?

Link to comment
Share on other sites

SendPlayerMessageToAll deja trimite mesaj cu numele tau in fata, iar ce ai pus tu vine Nume: ID >> Nume: text

Uite asa e cum vrei tu:

format(textv2, sizeof (textv2), "%d >> %s: {FFFFFF}%s", playerid, name, text);
SendClientMessageToAll(playerid, GetPlayerColor( playerid ), textv2);

Link to comment
Share on other sites

Acel nume nu ar trebui sa fie acolo daca ai return 0 la OnPlayerText!

Iar in codul tau, culoarea numelui va fi tot una cu culoarea textului, de aceea exista SendPlayerMessageToAll sau ToPlayer.

samp404l.png

samp405o.png

[pawn]

CMD:msg(playerid, cmdtext[ ])

{

    SendPlayerMessageToAll(playerid, "hello :D");

    return 1;

}

[/pawn]

Link to comment
Share on other sites

De ce nu faci tu mai simplu si te complici atata?

de exemplu:L "{000000}Text1 {FF3366}Text2 {6600FF}text3"

Si ar veni ceva de genul:

"text1 text2 text3"

Edit

Uite asa:

[pawn]public OnPlayerText(playerid, text[ ])

{

    new textv2[128], name[MAX_PLAYER_NAME];

    GetPlayerName(playerid, name, sizeof (name));

    format(textv2, sizeof (textv2), "{000000}%d >> {FF3366}%s: {6600FF}%s", playerid, name, text);

    SendPlayerMessageToAll(playerid, textv2);

    return 1;

}[/pawn]

Culorile ti le faci tu cum vrei, eu ti-am dat un exemplu.

logo.png

ATENTIE!!! Nu imi trimiteti mesaje private care au legatura cu scriptingul. NU mai scriptez.

Link to comment
Share on other sites

LaZ" post="94568" timestamp="1316942231"]

Acel nume nu ar trebui sa fie acolo daca ai return 0 la OnPlayerText!

Iar in codul tau, culoarea numelui va fi tot una cu culoarea textului, de aceea exista SendPlayerMessageToAll sau ToPlayer.

samp404l.png

samp405o.png

[pawn]

CMD:msg(playerid, cmdtext[ ])

{

    SendPlayerMessageToAll(playerid, "hello :D");

    return 1;

}

[/pawn]

return 0; la OnPlayerText  opreste textul original din SA:MP sa fie trimis, adica {Culoare nume}Nume: {FFFFFF}Mesaj. Daca pui return 1;, se trimite acel text original, daca pui return 0; nu se mai trimite, deci cum vrei tu e asa:

public OnPlayerText( playerid, text[ ] )
{
    format(textv2, sizeof (textv2), "%d >> %s: {FFFFFF}%s", playerid, name, text);
    SendClientMessageToAll(playerid, GetPlayerColor( playerid ), textv2);
    return 0;
}

Nu sunt sigur la culori daca vrei asa ... adica {Culoare Jucator}ID >> Nume: {FFFFFF}text

Link to comment
Share on other sites

=-" post="94634" timestamp="1316959672"]

De ce nu faci tu mai simplu si te complici atata?

Dat fiind ca serverul ruleaza un gamemode tip DM/TDM, codul tau ar trebui dezvoltat ridicol de mult, pe cand SendPlayerMessageToAll face toate aceste lucruri in vreo 2/3 lini. (variabila, format, trimite noul text)

Cu comanda /msg am demonstrat ca SendPlayerMessageToAll functioneaza.

@ stuntman: Ai rezolvat problema culorii, dar ai dat de alta, dupa parerea mea. In cazul tau jucatorul poate trimite o fraza care contine maxim 128 de caractere MINUS lungimea nickname-ului MINUS 1 cat sunt cele doua puncte ":" MINUS 8 cat are "{FFFFFF}" MINUS spatiile, >> si ID-ul jucatorului. Din 128 ai ramas cu vreo ~80-90 de caractere :(.

Cu SendPlayerMessage nu trebuie sa-ti faci probleme, de aceea insista sa-l folosesc pentru ca l-am mai folosit si nu a fost nicio problema.

Am comentat tot codul din OnPlayerText, am returnat valoarea 0 si nu se mai trimite nimic in chat ceea ce era de asteptat, cand am adaugat acele linii cu SendPlayerMessage ambele texte sunt trimise, ceea ce nu-i de asteptat, iar cand am adaugat SendClientMessageToAll textul corect a fost trimis, ceea ce nu era de asteptat din nou.

Link to comment
Share on other sites

OFF TOPIC: Unde este desteptul de FarSe 26.gif cand este nevoie de el 24.gif

ON TOPIC: Eu zic ca ar fi bine sa faci cum zice vyorel si sa maresti stringul la 512 ca este de ajuns  ;)

Limita de caractere din chat este de 128, deci daca ai peste 128 de caractere, incepe sa nu mai apara ( SendPlayerMessage(ToAll), iar la SendClientMessage(ToAll) nu mai apare nimic.
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.