NONAME_1224 Posted March 24, 2018 Share Posted March 24, 2018 Helló nekem az lenne a problémám hogy egy dxDrawTextet létrehozok és úgymond a keretén kívülre nyúlik a szöveg, aminek nem igazán kéne megtörténnie van erre valami megoldás? Előre is köszi a segítséget! Link to comment
WorthlessCynomys Posted March 24, 2018 Share Posted March 24, 2018 Hello! Növelheted a keretet, de ha azt nem akarod, akkor van egy crop argumentuma. Nézd meg a wikit... Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 crop? wikin nincs ilyen argumentum https://wiki.multitheftauto.com/wiki/DxDrawText Link to comment
WorthlessCynomys Posted March 24, 2018 Share Posted March 24, 2018 Clip. Bocsánat. A clip argumentum intézi, hogy ha kilóg a keretből akkor levágja Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 Szinezem is és ha szinezed akkor a clipet és a wordBreakot egyből false-ra állítja most milegyen? Note: clip and wordBreak are forced false if this is set. Link to comment
WorthlessCynomys Posted March 24, 2018 Share Posted March 24, 2018 Sortörést tudsz manuálisan végezni. És a levágást is meg lehet oldani másik módszerrel. A sortöréshez \n-t kell használnod a stringben: "Ez itt\negy új sor" -- [[ Ez így fog kinézni: Ez itt egy új sor --]] A levágást meg dxSetRenderTarget segítségével tudod megoldani. Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 A sortörést megoldottam, de ha a colorCoded argumentum True akkor a clip és a wordBreak argumentum instant false tehát a clipet nem tudom engedélyezni, mert szükségem van a szinezésre Link to comment
WorthlessCynomys Posted March 24, 2018 Share Posted March 24, 2018 Just now, TyFun said: A sortörést megoldottam, de ha a colorCoded argumentum True akkor a clip és a wordBreak argumentum instant false tehát a clipet nem tudom engedélyezni, mert szükségem van a szinezésre Arra ís írtam megoldást. Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 Ja értem köszi akkor megfejtem a dxRenderTargetet. Köszi mégegyszer! Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 (edited) Hogyan kell használni a dxSetRenderTarget-et? tehát van ez a kód: addEventHandler("onClientRender", root, function() dxtext = dxDrawText(text, 20, 200, 480, 400, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "bottom", true, false, false, true, true) end ) Ide hogyan kell beírni azt hogy a kereten kívül ne írjon semmit? Edited March 24, 2018 by TyFun Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 @WorthlessCynomys Link to comment
WorthlessCynomys Posted March 24, 2018 Share Posted March 24, 2018 Több dx funkció is kell hozzá. Létre kell hozni, egy dxTargetet és utána dxSetRemder target, azután a rajzolások majd leveszed a renderTargetet Link to comment
NONAME_1224 Posted March 24, 2018 Author Share Posted March 24, 2018 Jó létrehozom a dxTargetet és a dxSetRender Target de ezek után nem akarja kiírni a dxText-et amit kiakarok iratni render = dxCreateRenderTarget(500, 600) addEventHandler("onClientRender", root, function() dxSetRenderTarget(render) dxDrawText(ooctext, 20, 200, 480, 400, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "bottom", false, false, false, true, false) dxSetRenderTarget() end ) Tehát ez nem jeleníti meg a dxDrawText-et... miért nem? Link to comment
NeXuS™ Posted March 26, 2018 Share Posted March 26, 2018 Ennek a rendertargetnek nincs értelme. A rendertarget nem képes magától megtörni a sort, csak levágja a kilógó részt. Egy egyszerű módszer arra, ha több colorcodeot használsz egy szövegben, akkor számolod a szöveg hosszát, és ha az nagyobb mint a kívánt hossz, beleillesztesz egy sortörést (\n). Ha nincs több colorcodeod, akkor nem muszáj HEX codeot használni benne, egyszerűen a tocolorban átírod a kívánt színt, és a "colored" argument már falsera állítható, így a clip már nem lesz automatikusan false. Link to comment
NONAME_1224 Posted March 27, 2018 Author Share Posted March 27, 2018 (edited) ... On 2018. 03. 26. at 12:00, NeXuS™ said: Ennek a rendertargetnek nincs értelme. A rendertarget nem képes magától megtörni a sort, csak levágja a kilógó részt. Egy egyszerű módszer arra, ha több colorcodeot használsz egy szövegben, akkor számolod a szöveg hosszát, és ha az nagyobb mint a kívánt hossz, beleillesztesz egy sortörést (\n). Ha nincs több colorcodeod, akkor nem muszáj HEX codeot használni benne, egyszerűen a tocolorban átírod a kívánt színt, és a "colored" argument már falsera állítható, így a clip már nem lesz automatikusan false. A sortörés meg van oldva nekem az a problémám hogy a dxText túl megy a megadott nagyságon, pl ha beírsz 500 sort akkor megjelenik 500 sor nekem ezt kéne megoldani hogy ne írjon ki 500 sort csak mondjuk 5-t Edited March 27, 2018 by TyFun Link to comment
WorthlessCynomys Posted March 27, 2018 Share Posted March 27, 2018 A leghatékonyabb megoldás erre a render target. Ha csinálsz egy render targetet és arra rajzolsz, akkor azt ami lelógna a render targetről levágja a rákba. Ezért mondtam. dxCreateRenderTarget dxSetRenderTarget aztán rajzolsz. Elméletben ami lelóg a render targetről, azt levágja. 1 Link to comment
NONAME_1224 Posted March 28, 2018 Author Share Posted March 28, 2018 @WorthlessCynomys Na igen de nekem nem akar megjelenni a dxText és nem értem hogy miért... Tehát ez a kód nem működik hibát nam ad vissza szóval nem értem... target = dxCreateRenderTarget(20, 200) addEventHandler("onClientPreRender", root, function() dxSetRenderTarget(target) dxDrawText(ooctext, 20, 200, 480, 400, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "bottom", false, false, false, true, false) dxSetRenderTarget() end ) Link to comment
NONAME_1224 Posted March 28, 2018 Author Share Posted March 28, 2018 Na megértettem a rendertarget működését. 2 problémám van: Ha létrehozom a szöveget és változtatom akkor amit a változtatás előtt írtam bele az ott marad, de amit meg akkor írok oda az ott marad: render = dxCreateRenderTarget(400, 300, true) addEventHandler("onClientRestore", root, function() render = dxCreateRenderTarget(400,300, true) end ) addEventHandler("onClientPreRender", root, function() if render then dxSetRenderTarget(render) dxDrawText(ooctext, 0, 0, 300, 200, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "bottom", false, false, false, true, false) dxSetRenderTarget() dxDrawImage(20, 200, 400, 300, render) end end ) Ha pedig ezt így csinálom akkor nem marad ott az előző viszont egy időután bebuggol a rendertarget és random eltűnik: render = dxCreateRenderTarget(400, 300, true) addEventHandler("onClientRestore", root, function() render = dxCreateRenderTarget(400,300, true) end ) addEventHandler("onClientPreRender", root, function() render = dxCreateRenderTarget(400, 300, true) if render then dxSetRenderTarget(render) dxDrawText(ooctext, 0, 0, 300, 200, tocolor(255, 255, 255, 255), 1.00, "default-bold", "left", "bottom", false, false, false, true, false) dxSetRenderTarget() dxDrawImage(20, 200, 400, 300, render) end end ) Na most akkor el tudjátok mondani mi itt a probléma, úgy hogy működjön? Link to comment
NONAME_1224 Posted March 28, 2018 Author Share Posted March 28, 2018 Na végre megoldottam! Köszi a segítséget! Link to comment
Discord Moderators Pirulax Posted June 8, 2018 Discord Moderators Share Posted June 8, 2018 Én a helyedben nem hoznék létre rendertargetot onClientRender-ben. Nem egészséges a VRAM szempontjából. Link to comment
NONAME_1224 Posted June 8, 2018 Author Share Posted June 8, 2018 @Pirulax Őőő valóban igazad van. De akkor mit javasolsz mit használjak? Van még egy olyan probléma is hogy ha több mint 26 ékezetes betűt írok be akkor nem írja ki csak az első 26-ot ez a rendertarget vagy a dxtext hibája, ezt hogyan lehetne kiküszöbölni? Link to comment
Discord Moderators Pirulax Posted June 8, 2018 Discord Moderators Share Posted June 8, 2018 (edited) Ahogy eddig csináltad, létrehozod script elején, aztán használod a dxSetRenderTarget() És a 2. argumentumot 'true'-ra állitod, ezzel kitisztisa a rtargetot mielőtt újra rajzolsz rá, azért mert a rtarget egy papirlap(igy biztos megérted.), ezáltál ha 1x rajzolsz rá, az ott is marad. Egyébként, rosszul használod a rtargetot, igy csak zabálja a CPU-t, csak akkor frissitsd a rtargetot ha új szöveget akarsz irni, a többi szöveget meg tárolod egy táblában, igy amikor érkezik egy új szöveg akkor csak végigloopsz rajta, és kirajzolod azt amit kell.(Legyen egy sor limit, mondjuk 10.) Igy valahogy csináld meg(ne render alatt): dxSetRenderTarget(rtarget, true) dxSetBlendMode("modulate_add") local subY = dxGetFontHeight(1, "default-bold") local offsetY = 500--//Ird ide a rtarget magasságát for i = #texts, 1, -1 do dxDrawText(texts[i], ird be, offsetY-subY*(i-), ...)--// A ...-ot helyettesitsd be azzal amivel kell. end dxSetBlendMode("add") dxSetRenderTarget() Ez csak példa, eléggé fáradt vagyok, és nincs kedvem sokat babráli a cuccokkal, bocsi. A dxSetBlendMode Csak azért kell,hogy a szöveg szebb legyen. Második problémát nem értem teljesen, az valószitűleg a sajátkészitésű worldbreak miatt van, mivel a magyar betűket nem tudja kezelni a lua(nem ascii betűket), erre ott az utf8 lib MTAban. (Feltéve, ha az a baj,hogy levágja a szöveget) U.I.: onClientRender -be tedd a kép felrajzolását. Edited June 8, 2018 by Pirulax 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now