GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Bloodest44 - 2013. április 10. - 11:41:42

Cím: /say - Levágja a szöveg végét
Írta: Bloodest44 - 2013. április 10. - 11:41:42
Halihó, olyan gond lenne az alábbi scripttel, hogy ha kicsivel hosszabb szöveget írok pl.
\"mindenki vegyen magához fegyvert és szálljon be egy gépjármûbe\"
akkor a fegyvert résznél levágja a szöveget, s nem jeleníti meg a többit.
 
CMD:say(playerid, params[])
{
    new beszelo[MAX_PLAYER_NAME], string[512];
    GetPlayerName(playerid, beszelo, sizeof(beszelo));
    if(sscanf(params, \"s\", params[0])) return SendClientMessage(playerid, COLOR_YELLOW, \"Használat: /say [szöveg]\");
    format(string, sizeof(string), \"{ABCDEF}%s {375FFF}katonatiszt mondja: {FF9900}%s\", beszelo, params[0]);
    return SendClientMessageToAll(0xB3D5B2AA,string);
}

 
Mi lehet a probléma?  :hmmm: Esetleg tud valaki hasonló, példa scriptet adni?
Köszönöm elõre is!
Cím: /say - Levágja a szöveg végét
Írta: Zsolesszka - 2013. április 10. - 12:17:39
Mert túl lépi az egy üzenetben megjeleníthetõ maximális karakterek számát, mely hol 128 vagy 144.
Cím: /say - Levágja a szöveg végét
Írta: Bloodest44 - 2013. április 10. - 14:03:53
Na de pl. ezt kiírja teljes egészében, és kihasználja rendesen a chatsort:
 
format(string, sizeof(string), \"{FF0606}(Felszólítás) {FFFF00}%s (ID: %d) {FF9900}Azonnal vonuljon be a 2-es számú katonai bázisra, csomagellenõrzés céljából!\", giveplayer, giveplayerid);
SendClientMessageToAll(COLOR_GREEN, string);

 
 :shurg:
Cím: /say - Levágja a szöveg végét
Írta: ][Fo[R]cE][ - 2013. április 10. - 14:11:46
Ajánlom neked:
 
CMD:say(playerid, params[])
{
    new beszelo[MAX_PLAYER_NAME], string[1900];
    GetPlayerName(playerid, beszelo, sizeof(beszelo));
    if(sscanf(params, \"s\", params[0])) return SendClientMessage(playerid, COLOR_YELLOW, \"Használat: /say [szöveg]\");
    format(string, sizeof(string), \"{ABCDEF}%s {375FFF}katonatiszt mondja: {FF9900}%s\", beszelo, params[0]);
    return SendClientMessageToAll(0xB3D5B2AA,string);
}

 
Itt a \"string[512]\"-nek a string ketrecet kellett feljebb vinni.
Cím: /say - Levágja a szöveg végét
Írta: Bloodest44 - 2013. április 10. - 14:31:24
Nem jó. Azt írja szerveren, hogy unknown commands :no:
Cím: /say - Levágja a szöveg végét
Írta: Gabor.. - 2013. április 10. - 14:37:32
[Lo_.\" post=413017\" timestamp=\"1365595906]
Ajánlom neked:
 
CMD:say(playerid, params[])
{
    new beszelo[MAX_PLAYER_NAME], string[1900];
    GetPlayerName(playerid, beszelo, sizeof(beszelo));
    if(sscanf(params, \"s\", params[0])) return SendClientMessage(playerid, COLOR_YELLOW, \"Használat: /say [szöveg]\");
    format(string, sizeof(string), \"{ABCDEF}%s {375FFF}katonatiszt mondja: {FF9900}%s\", beszelo, params[0]);
    return SendClientMessageToAll(0xB3D5B2AA,string);
}

 
Itt a \"string[512]\"-nek a string ketrecet kellett feljebb vinni.
 
[/quote]Hiába növeled a karakterlánc celláinak a számát, ha a SAMP-ban a maximális megjeleníthetõ karakterek száma, színkódokkal együtt 128, avagy 144(felbontás függõ).
Cím: /say - Levágja a szöveg végét
Írta: Kovacs_Richard - 2013. április 11. - 06:43:41
[Lo_.\" post=413017\" timestamp=\"1365595906]
Ajánlom neked:
 
CMD:say(playerid, params[])
{
    new beszelo[MAX_PLAYER_NAME], string[1900];
    GetPlayerName(playerid, beszelo, sizeof(beszelo));
    if(sscanf(params, \"s\", params[0])) return SendClientMessage(playerid, COLOR_YELLOW, \"Használat: /say [szöveg]\");
    format(string, sizeof(string), \"{ABCDEF}%s {375FFF}katonatiszt mondja: {FF9900}%s\", beszelo, params[0]);
    return SendClientMessageToAll(0xB3D5B2AA,string);
}

 
Itt a \"string[512]\"-nek a string ketrecet kellett feljebb vinni.
 
[/quote]
még az 512 is túl sok!!!
Ezt a \"ketrec\" dolgot szerintem Zyzu leírásából vetted...olvasd el ott a kommentemet is :) van 1 tömböd és annak cellái vannak...ez nem állatkert :D de ha tévednék akkor bocs :D
45+20+128-1-5+1=188 ennyi lehetne max ennek a szövegnek a hossza...
45 = {ABCDEF} {375FFF}katonatiszt mondja: {FF9900}
20 = Játékos Max név hossza ( nem 24! )
128 = Max Parancs szöveg hossz
-1 = String végét jelzõ karakter
-5 = \"/say \"
1 = String végét jelzõ karakter
de a chatbe nem tudsz ennyi karaktert megjeleníteni 1 SORBAN ! ezért kell törni és 2 sorban küldeni az üzenetet :)
de lehetne spórolni a karakterekkel :)
szöveg elejére tök felesleges ez: {ABCDEF}
 
SendClientMessageToAll(0xB3D5B2AA,string);

 
0xB3D5B2AA helyett RGBA-ba átalakítva kell megadni és máris 8 karakterrel kevesebb :)
Mondjuk itt nem a színezés a gond mivel azt nem jeleníti meg a chatben mint karaktereket...
Végeztem 1 tesztet...



Az 1. sort megjelenítette a 2.-at már nem...
1. sor: 140 karakter
2. sor: 148 karakter
Szóval ha 2 sorba akarod törni, a karakterek számát kell figyelembe venni és nem a megjelenítettet !
 
SendClientMessage(playerid,0xFF6600FF,\"12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\");
SendClientMessage(playerid,0xFF6600FF,\"{FFFFFF}12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\");