Tabulátor Egyszerûsítõ Ez egy apró kis kód, ami leegyszerûsíti a tabulátor \'\\t\' használatát játékon belül.
!!Csak Windowson teszteltem, nem tudom, linuxon mekkora egy tabulátor mérete!!
Tartalma HasználataEz a kód visszatérési értékként adja meg a tabulált szöveget, szoval így is kell használni scripten belül
Tab(tabulált szöveg eleje[], tabulálni kívánt szöveg[], tabulátor métere);
Szükséges - Alap \'a_samp\' függvénykönyvtár
FrissítésekNem kívánom frissíteni ezt a kódot.
Hibák, elírásokHa valamit elírtam, hibásan írtam meg, akkor egy kommentben jelentsétek.
Köszönöm.
Példa script #include <a_samp>
#include <tabulator>
public OnFilterScriptInit() {
new szam[4],
string[128];
for(new i = 0; i < 20; i++) {
format(szam, 4, \"%d\", i);
strins(string, szam, strlen(string), 128);
printf(\"%s\", Tab(string, \"2\", 5));
}
return 1;
}
LetöltésPastebin
printf(\"%s\", Tab(string, \"2\", 2));
Ellenõrizd le újra a fenti példával és látni fogod hogy a bevitt számsor karakterláncot elrontja.
0123456789101112131415161718192
[/quote]
printf(\"%s\", Tab(string, \"2\", 2));
Ellenõrizd le újra a fenti példával és látni fogod hogy a bevitt számsor karakterláncot elrontja.
0123456789101112131415161718192
[/quote]
Erre akartam megoldást, csak mindig hibát írt rá.
Egyébként nem hibás szerintem, mert 2 tabbal akartad eltolni (ami 16 karakter), de a beírt szöveged hosszabb, mint 16 karakter, szoval a függvény automatikusan nem tabulálja.
Ennek ellenõrzésére volt egy pár sor benne, ami szabályozta azt is, hogy például ne lehessen 0 alatti értékre tabulálni, de ismétlem, nem tudtam megoldani, mert hibát írt rá a string visszatérés miatt.
De én elnéztem, a kód mûködik mivel a számokat úgy pakolja egymás után hogy 9 10 11 12 és így tovább és a végére oda teszi a 2-est.
Már alkotom az egyszerûsítést. Postolom ide, ha kész. :D
Edit:
stock
Tab(text[], text2[], tabcount = 0)
{
new
tab_[16] = \"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\",
out[128];
if((tabcount = (((tabcount + 1) * 8) - strlen(text) - 1) / 8) < 0 || tabcount >= sizeof tab_) tabcount = 0;
format(out, sizeof out, \"%s%s%s\", text, tab_[(sizeof(tab_) - 1) - tabcount], text2);
return out;
}
Elkészült, én tesztelgettem és nem találtam hibát benne. Ha valaki igen akkor írjon. :D
Bocs, hogy nagyon régi téma, csak használgatom zsoleszka kódját:
stock
Tab(text[], text2[], tabcount = 0)
{
new
tab_[16] = \"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\",
out[128];
if((tabcount = (((tabcount + 1) * 8) - strlen(text) - 1) / 8) < 0 || tabcount >= sizeof tab_) tabcount = 0;
format(out, sizeof out, \"%s%s%s\", text, tab_[(sizeof(tab_) - 1) - tabcount], text2);
return out;
}
Az a tapasztalatom, hogy ez sem mindig pontos, eltér 1-2 esetû karakterhosszúság egymás mellé kerülésekor.
New OFF, csak tapasztalat, hogy hátha lehet javítani, de ez a legjobb tabulator kód, amit eddig láttam.
Az eltérõ egy két esetrõl kellene kép, hogy lehessen vele tesztelni.
De szerintem akkor se lesz 100 százalékos, én a karakterek szélességére próbálok ezzel utalni.
Példaként
10 darab i:
iiiiiiiiii
és 10 darab a:
aaaaaaaaaa
elméletileg ugyanoda tolja ki õket, mert a karakterek száma alapján dolgozik.
Ez tehát arra jó, hogy ne csúszkáljon a szöveg? Mert én dialognál hiába használom a \\t -t nekem másképp jelenik meg mint a többi playernek.
igen.
az, hogy hány \\t kell az adott szövegbe, a szöveg hosszától függ.. ennek kiszámítására írtam ezt a függvényt. :D
Nagyszerû, akkor ki is próbálom majd. :thumbsup: Köszi szépen. :yes:


tessék például.
Dialógba nekem se mûködött, mongyuk én %30s el oldottam meg.
Valószinû, hogy tényleg a betû méretekkel lesz a baj. Mondjuk mostanság már nem foglalkozok vele.
Dialógba nekem se mûködött, mongyuk én %30s el oldottam meg.
Valószinû, hogy tényleg a betû méretekkel lesz a baj. Mondjuk mostanság már nem foglalkozok vele.
Ezt a 30-as dolgot kifejtenéd légyszi?
Dialógba nekem se mûködött, mongyuk én %30s el oldottam meg.
Valószinû, hogy tényleg a betû méretekkel lesz a baj. Mondjuk mostanság már nem foglalkozok vele.
Okés
Ezt a 30-as dolgot kifejtenéd légyszi?
[/quote]
Ezt leltem http://forum.sa-mp.com/showthread.php?t=338258
Dupla hozzászólás automatikusan összefûzve. ( 2013. január 12. - 08:48:23 )
Én úgy próbáltam, hogy %02d. %24s\\t\\t%02d Number, Name, Kills
Valaki tud egy biztos megoldást erre a tabulátoros dologra?
Így akarnám:
Pénz: $10 Pont: 100
Ölés: 10 Halál: 10
format függvényben:
Pénz: $%d Pont: %d
Ölés: %d Halál: %d
Ezeket kéne tabulálni, hogy a játékban is így mutassa.
Bocsi a duplaposztért!
Valaki tud egy biztos megoldást erre a tabulátoros dologra?
Így akarnám:
Pénz: $10 Pont: 100
Ölés: 10 Halál: 10
format függvényben:
Pénz: $%d Pont: %d
Ölés: %d Halál: %d
Ezeket kéne tabulálni, hogy a játékban is így mutassa. Sose csússzanak el, mindig egy vonalban legyenek.
Valaki?
Bocsi a duplaposztért!
Valaki tud egy biztos megoldást erre a tabulátoros dologra?
Így akarnám:
Pénz: $10 Pont: 100
Ölés: 10 Halál: 10
format függvényben:
Pénz: $%d Pont: %d
Ölés: %d Halál: %d
Ezeket kéne tabulálni, hogy a játékban is így mutassa. Sose csússzanak el, mindig egy vonalban legyenek.
Valaki?
Esetleg így?
Pénz: $%d\\tPont: %d
Ölés: %d\\tHalál: %d
Nem jó. :/
Kód:
CMD:dialog( playerid )
{
new
szString[ 300 + 1 ];
format( szString, sizeof( szString ),
\"Pénz: $%d\\tPont: %d\\n\\
Ölés: %d\\tHalál: %d\\n\\
Figyelmeztések: %d\\tMegnyert tesztek: %d\", 1000, 5555, 10, 5, 5, 10 );
ShowPlayerDialog( playerid, 500, DIALOG_STYLE_MSGBOX, \"asdegypélda\", szString, \"ok\", \"\" );
return 1;
}
Kép:

Elég sok helyen láttam ilyen dialógot, ezek szerint meg lehet oldani.
Szerintem nincs biztos megoldás(sohasem fognak egymás alá esni a szövegek pontosan), mert a betû méretek nem egyeznek meg...
Az eltérõ egy két esetrõl kellene kép, hogy lehessen vele tesztelni.
De szerintem akkor se lesz 100 százalékos, én a karakterek szélességére próbálok ezzel utalni.
Példaként
10 darab i:
iiiiiiiiii
és 10 darab a:
aaaaaaaaaa
Egy kérdés...
Ez az általam publikált téma hogy az édes anyámba került a segítségkérések közé?!
Egy válasz..
Ha hazaértem, leírom, hogy hogy csináld meg a dialogos stringes cucmót, de most nincs rá idõm.
Megköszönném. :)
Valaki mondja el nekem kérlek, hogy ez mitõl leírás?
Csak mert eredetileg jó helyen volt, csak Anthony áthelyezte...
Szerintem nincs biztos megoldás(sohasem fognak egymás alá esni a szövegek pontosan), mert a betû méretek nem egyeznek meg...
Az eltérõ egy két esetrõl kellene kép, hogy lehessen vele tesztelni.
De szerintem akkor se lesz 100 százalékos, én a karakterek szélességére próbálok ezzel utalni.
Példaként
10 darab i:
iiiiiiiiii
és 10 darab a:
aaaaaaaaaa
[/quote]
Sõt én most már hozzá tenném a felbontást is, én például: 1680*1050*32 beállítással játszok.
Notepad++-nál is ha növelem vagy csökkentem a betûméretet ott is rosszul jelennek meg a sorok amelyeket korábban tabulátorokkal szépen oszlopokba rendeztem.
De akkor pár szerveren, ahol ilyen van, ott hogy van szépen tabulálva?
Meg kell próbálni csak sima szóközökkel kiegészíteni a dolgot.
Már próbáltam, de az sem jó. :/
Maximum valahogy így lehet:
new
szString[ 300 + 1 ];
format( szString, sizeof( szString ),
\"%20s%10d$\\t\\t%20s%10d\\n\\
%20s%10d\\t\\t%20s%10d\\n\\
%20s%10d\\t\\t%20s%10d\", \"Pénz\", 1000000, \"Pont\", 555005, \"Ölés\", 10420, \"Halál\", 5, \"Figyelmeztetések\", 5, \"Megnyert tesztek:\", 10 );
print(szString);
Eredmény:
Úgy sem jó. :/
Dialógba nem fogod tudni normálissan megcsinálni, ha csak nem csinálsz valami függvényt vagy akármit a betûméretekre, amivel átszámítod mikor fogja átdobni.
De akkor pár szerveren, ahol ilyen van, ott hogy van szépen tabulálva?[/quote]
Úgy vannak szépen tabulálva, hogy azok konstans üzenetek, tehát egyszer megcsinálták és az jó.
Én a top 30 játékosra használtam, ott nem ugyanazok az értékek vannak, soha nemvolt pontos.
Egy parancs dialógra simán megtudod csinálni, mert azt egyszer megírod azt széttudod számolni jópár tesztelés után, hogy pontossan kijöjjön.
Dialógba nem fogod tudni normálissan megcsinálni, ha csak nem csinálsz valami függvényt vagy akármit a betûméretekre, amivel átszámítod mikor fogja átdobni.
De akkor pár szerveren, ahol ilyen van, ott hogy van szépen tabulálva?
Úgy vannak szépen tabulálva, hogy azok konstans üzenetek, tehát egyszer megcsinálták és az jó.
Én a top 30 játékosra használtam, ott nem ugyanazok az értékek vannak, soha nemvolt pontos.
Egy parancs dialógra simán megtudod csinálni, mert azt egyszer megírod azt széttudod számolni jópár tesztelés után, hogy pontossan kijöjjön.
[/quote]
Értem...:)
Köszi mindenkinek!
Pár napos tesztelgetés után arra jöttem rá, hogy a dialogos tabulálás nagyon el van kúrva.
A dialogban használt \\t mérete attól függ, hogy elõtte hány szóköz (\" \") van.
Ha 4, és utána használom a tabulátort, akkor 4 szóköznyit ugrik, ha 11, akkor 11et.
Ezt jó lenne ha javítanák.
Pfhuu mennyit kerestem régen ezt grat szép lett :)
Hasznos kis dolog :) fel használom :)