Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4130 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

(redaguota)

Sveiki, taigi sukuriau define kurie palengvina darba formatuojant teksta bei jį pateikinat žaidime.

#define SCM(%0,%1,%2); format(GlobalTextMessage,256,%1,%2); SendClientMessage(%0,-1,GlobalTextMessage); // SendClientMessage - SCM
#define SDM(%0,%1,%2); format(GlobalTextMessage,256,%1,%2); SendDistanceMessage(20.0, %0, GlobalTextMessage); // SendDistanceMessage - SDM
#define SPD(%0,%1,%2,%3,%4,%5,%6,%7); format(GlobalDialogMessage,900,%4,%7); ShowPlayerDialog(%0,%1,%2,%3,GlobalDialogMessage,%5,%6); // ShowPlayerDialog - SPD

new GlobalTextMessage[256];
new GlobalDialogMessage[900];

Šį koda daug kartu panaudojus nebekompiliuoja... Ir dar tarkim yra toks kodas:

new 
    FirstString[110],
    SecondString[110]
;

format(FirstString, 110, "{9ACD30}*~~*{FFFFFF}Nusipirkote transporto priemonę iš žaidėjo {9ACD30}%s{FFFFFF} už {9ACD30}%d€. Transporto valdymas /transportas {9ACD30}*~~*", A_GetPlayerName(_SELLERPLAYERID), _SELLVEHICLEPRICE);
SendClientMessage(playerid, -1, FirstString);

format(SecondString, 110, "{9ACD30}*~~*{FFFFFF}Pardavėte transporto priemonę žaidėjui {9ACD30}%s {FFFFFF}už{9ACD30} %d€ {9ACD30}*~~*{FFFFFF}", A_GetPlayerName(playerid), _SELLVEHICLEPRICE);
SendClientMessage(_SELLERPLAYERID, -1, SecondString);\

Ir pirmo SendClientMessage nemeta, o antra meta. Kame beda kad ne visus meta? Printinau suformatuota teksta konsolėje parodo gerai.

Redaguota , nario .lukonic`
Neinformatyvus temos pavadinimas
(redaguota)
format(FirstString, 110, "{9ACD30}*~~*{FFFFFF}Nusipirkote transporto priemonę iš žaidėjo {9ACD30}%s{FFFFFF} už {9ACD30}%d€. Transporto valdymas /transportas {9ACD30}*~~*", A_GetPlayerName(_SELLERPLAYERID), _SELLVEHICLEPRICE);
SendClientMessage(playerid, -1, FirstString);

per ilgas tekstas. SendClientMessage gali talpina tik 144 simbolius, o pas tave neįrašius žaidėjo vardo ir kainos jau yra 143. Skaidyk tekstą į atskirus, kurk GUI arba mažink spalvų kodus.

 

 

 

If a message is longer than 144 characters, it will not be sent.

 

O dėl konstantų, tai pabandyk vietoj jų pasidaryti stockus. Tik nesu įsitikinęs, jog tai padės. Bet pabandyt verta.

Redaguota , nario MartynasK
prieš 15 valandas(-ų), perestukinas maskatuoklis parašė:

koks skirtumas motyvuotas ar ne, paprasiau padaryt o uz tai repais atsiskaitysiu, kas gales tas pades. Neieskau motyvatoriu.

new GlobalTextMessage[256], GlobalDialogMessage[900];
#define SCM(%0,%1,%2) format(GlobalTextMessage, 145, %1, %2), SendClientMessage(%0, -1, GlobalTextMessage) // SendClientMessage - SCM
#define SDM(%0,%1,%2) format(GlobalTextMessage, 145, %1, %2), SendDistanceMessage(20.0, %0, GlobalTextMessage) // SendDistanceMessage - SDM
#define SPD(%0,%1,%2,%3,%4,%5,%6,%7) format(GlobalDialogMessage, 900, %4, %7), ShowPlayerDialog(%0, %1, %2, %3, GlobalDialogMessage, %5, %6) // ShowPlayerDialog - SPD

Ir dar tarkim yra toks kodas:

new 
    FirstString[110],
    SecondString[110]
;

format(FirstString, 110, "{9ACD30}*~~*{FFFFFF}Nusipirkote transporto priemonę iš žaidėjo {9ACD30}%s{FFFFFF} už {9ACD30}%d€. Transporto valdymas /transportas {9ACD30}*~~*", A_GetPlayerName(_SELLERPLAYERID), _SELLVEHICLEPRICE);
SendClientMessage(playerid, -1, FirstString);

format(SecondString, 110, "{9ACD30}*~~*{FFFFFF}Pardavėte transporto priemonę žaidėjui {9ACD30}%s {FFFFFF}už{9ACD30} %d€ {9ACD30}*~~*{FFFFFF}", A_GetPlayerName(playerid), _SELLVEHICLEPRICE);
SendClientMessage(_SELLERPLAYERID, -1, SecondString);\

Ir pirmo SendClientMessage nemeta, o antra meta. Kame beda kad ne visus meta? Printinau suformatuota teksta konsolėje parodo gerai.
Trink tą \

Tas \ čj pasidėjo bekeliant čia koda. Bet štai šita parašius teksta meta visa nors yra virš 144 simboliu.

SCM(playerid, ""COL_GREEN"[Mašinų Salonas]:"COL_WHITE" Jūs turite "COL_GREEN"%d"COL_WHITE" mašinų, galite turėti "COL_GREEN"%d{COL_WHITE} mašinų. Mašinų slotus galite prisidėti už "COL_GREEN"kreditus.", playerDB[playerid][PlayerVehicles], playerDB[playerid][PlayerMaxVehicles]);

Ir kaip šios perrašyti į stock ? Gal net geriau veiks ? Arba gal galite pasakyti pati geriausia varijanta kaip butu galima pateikti žaidėjui suformatuota teksta viena eilute ?

new GlobalTextMessage[256], GlobalDialogMessage[900];
#define SCM(%0,%1,%2) format(GlobalTextMessage, 145, %1, %2), SendClientMessage(%0, -1, GlobalTextMessage) // SendClientMessage - SCM
#define SDM(%0,%1,%2) format(GlobalTextMessage, 145, %1, %2), SendDistanceMessage(20.0, %0, GlobalTextMessage) // SendDistanceMessage - SDM
#define SPD(%0,%1,%2,%3,%4,%5,%6,%7) format(GlobalDialogMessage, 900, %4, %7), ShowPlayerDialog(%0, %1, %2, %3, GlobalDialogMessage, %5, %6) // ShowPlayerDialog - SPD

Aj, dar gali crash'int dėl to, kad naudoji daug hex spalvų vienoje eilutėje. Nežinau tiksliai dėl ko taip, bet kažkodėl makrosai nepalaiko daug jų (hex spalvų). Pabandyk sukomplint tiesiog:

SCM(playerid, "[Mašinų Salonas]: Jūs turite %d mašinų, galite turėti %d mašinų. Mašinų slotus galite prisidėti už kreditus.", playerDB[playerid][PlayerVehicles], playerDB[playerid][PlayerMaxVehicles]);

SendClientMessage be string, veikia greičiau:

Mod'o pradžioje:

#define BYTES_PER_CELL (cellbits / 8)
Žemiau:

stock SendMes(playerid, fstring[], {Float, _}:...)
{
    static const STATIC_ARGS = 3;
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
    if (n)
    {
        new message[128], arg_start, arg_end;
        #emit CONST.alt        fstring
        #emit LCTRL          5
        #emit ADD
        #emit STOR.S.pri        arg_start
        #emit LOAD.S.alt        n
        #emit ADD
        #emit STOR.S.pri        arg_end
        do
        {
            #emit LOAD.I
            #emit PUSH.pri
            arg_end -= BYTES_PER_CELL;
            #emit LOAD.S.pri      arg_end
        }
        while (arg_end > arg_start);
        // Push the static format parameters.
        #emit PUSH.S          fstring
        #emit PUSH.C          128
        #emit PUSH.ADR         message
        n += BYTES_PER_CELL * 3;
        #emit PUSH.S          n
        #emit SYSREQ.C         format
        n += BYTES_PER_CELL;
        #emit LCTRL          4
        #emit LOAD.S.alt        n
        #emit ADD
        #emit SCTRL          4
        return SendClientMessage(playerid, -1, message);
    }
    else return SendClientMessage(playerid, -1, fstring);
}
stock SendMesAll(fstring[], {Float, _}:...) 
{ 
    static const STATIC_ARGS = 2; 
    new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL; 
    if (n) 
    { 
        new message[128], arg_start, arg_end; 
        #emit CONST.alt        fstring 
        #emit LCTRL          5 
        #emit ADD 
        #emit STOR.S.pri        arg_start 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit STOR.S.pri        arg_end 
        do 
        { 
            #emit LOAD.I 
            #emit PUSH.pri 
            arg_end -= BYTES_PER_CELL; 
            #emit LOAD.S.pri      arg_end 
        } 
        while (arg_end > arg_start); 
        // Push the static format parameters. 
        #emit PUSH.S          fstring 
        #emit PUSH.C          128 
        #emit PUSH.ADR         message 
        n += BYTES_PER_CELL * 3; 
        #emit PUSH.S          n 
        #emit SYSREQ.C         format 
        n += BYTES_PER_CELL; 
        #emit LCTRL          4 
        #emit LOAD.S.alt        n 
        #emit ADD 
        #emit SCTRL          4 
        return SendClientMessageToAll(-1, message); 
    } 
    else return SendClientMessageToAll(-1, fstring); 
}
Naudojimas:

SendMes(playerid, "{FF0000}Tavo lygis: {000000}%d", level);
SendMesAll("{FF0000}%s lygis: {000000}%d", PlayerName, level);
Autoriai: Zeex ir Y_Less, Lik išėmė spalvos nustatymą.

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 4130 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...