Szerző Téma: Összekuszálódott login/register panel  (Megtekintve 1357 alkalommal)

Összekuszálódott login/register panel
« Dátum: 2016. január 05. - 10:00:15 »
0 Show voters
Hali!
Kellene egy kis segítség. Olyan bajom lenne, hogy megvolt az alap login/register panel gui-kel megoldva. Remekülment minden. Aztán folytatni akartam, hogy regisztráció után karakterválasztóba dobjon. Ezzel is eljutottam valameddig. Egyedi edit mezőt csináltam neki, azonban nem külön kép volt rá. Most meg akartam azt is csinálni, viszont káoszba fulladt.
A felmerülő problémák:
 - Volt olyan eset, hogy valami oknál fogva(nem tudtam rájönni miért, mindig másért) már nem lehetett kattintani az input mezőbe, és nem lehetett írni.
 - Valami olyan szisztémán alapulhat ha jól sejtem, hogy amelyik gui legutoljára lett létrehozva, az lesz legfelül, arra kattinthatunk, azt érzékeli, az alatta lévőt nem. Ebből is akadtak problémák persze, mivel ha felülre raktam az egyedi input mezőt, akkor nem bírtam írni. Ha meg alulra, akkor nem tudtam megoldani, hogy ha ráviszi az egeret, akkor kicserélje a képet.
Ha kódot kér valaki, adok azt is, csak már nagyon én se tudom, hogy mi hol vanxD :wall:
Valaki segíteni ezeket a problémákat megoldani, vagy legalább csak egyet közülük, és akkor talán sikerül a másik is.
Elnézést a hosszú leírásért!

Összekuszálódott login/register panel
« Válasz #1 Dátum: 2016. január 05. - 19:13:35 »
0 Show voters
Szevasz!
Elsőkörben szerintem a gui-t fejeltsd el, maximum annyit használj belőle amennyit muszáj. Második körben az első hibánál előfordulhat, hogy nincs megadva neki, hogy \"melyik\" menüben jöjjön le az adott gui(és remélem nem renderbe írtad a gui-t mert akkor hamar kifagysz  :D). Én csinálnék egy egyszerű dxDrawRectangle bg-t tennék egy guiCreateEdit-t aminek lokalizált értéket adok és ezt pedig egy dxDrawText segítségével előhívnám(guiGetText(lokalizáltGuiCreateEditNeve)). Na meg egy alpha a guiCreateEdit-re és meg is van. Button-t se gui-s gombbal oldalán meg, hanem rectangle. Szebb sokkal. :)

Összekuszálódott login/register panel
« Válasz #2 Dátum: 2016. január 05. - 19:44:50 »
0 Show voters
Hát.. A felét értemxD
Az egész panel csak képekből áll egyébként, ezt el felejtettem mondani.
Meg van adva, hogy melyik menüben jelenjen meg a kép.
A \"dxDrawRectangle\" ha jól értem, csak egy színes hátteret tudnék vele csinálni, viszont nekem egy konkrét képem van rá. Ez egy egész monitoros háttérkép.
Valamint ezt a \"lokalizált\" dolgot nem igazán értem. Én úgy csináltam, alapból a háttérbe volt az edit háttere(bg-re rászerkesztve), csináltam egy edit mezőt, amit alpha-val eltűntettem, és az fölé csináltam egy labelt, ami lekérte az edit-be írt szöveget. Ez így működött is jól. Csak miután belekutyultam, hogy az edit mező egyedi háttere ne a háttérbe legyen, hanem egy külön kép, mivel meg akartam csinálni, hogy ha rávisszük az egeret, akkor lecserélje a képet(látszódjon, hogy rávittük az kurzort), akkor jöttek elő ezek a dolgok.
Tehát akkor mi a jobb a gui-nél, ha ugyan azt akarom megjeleníteni, csak jobba?

Összekuszálódott login/register panel
« Válasz #3 Dátum: 2016. január 06. - 08:12:54 »
0 Show voters
Az nem gond, hogy van képed(lévén azt a képed dxDrawImage segítségével varázsoltad elő gondolom én) és a rectanglet is lehet 0-s alphával kezelni. Nem szeretem a gui-t én ezért nem is használom. :) Nagy eséllyel azért akkor gondolom mert most az egész monitor felbontásán érzékeli azt hogy te odaviszed az egeret(vagy tévednék... vagyis ahogy én értettem a hátteret akarod cserélgetni). Ezt így szerintem elégg necc megoldani, lévén a login résznél lévő dolgokra és reagálni fog a képcsere. Inkább egy timerrel oldalnám meg a képcserét, hogy bizonyos időnként váltogatja vagy akár egy javás slidert importálnék be háttérnek(ebben nem vagyok nagy szakértő, szóval ez ügyben sajnos nem tudok segíteni).  Aztán lehet én tudom rosszul, majd itt a nagyokosok(akik értenek hozzá és valóban scripterek) tudnak többet segíteni ez ügyben. :)
Amúgy azért használok rectangle-t mert jelentősen tudod vele felszabadítani a kliens erőforrását ami nem mindig rossz dolog. Na meg a megoldások sem mindegy hogy kerülnek a játékos elé, hiszen egy jól megírt stabil mód nagy játékosszám esetén is remekül és laggmentesen tud futni, ami szerintem nem hátrány és nem elhanyagolható tényező(lévén nem egy laggos, 1000000 pinges és 10 fps-el futó szerveren szeretnénk játszani, nem?  :D). Gui-t nem szeretem mert csúnya és mivel meglehet oldani máshogy is egy-egy klikkelést, stb akkor inkább maradok annál, hiszen azzal egész szépen és jobban meg lehet csinálni(gui-val sikerült jó párszor szép kis laggot okoznom tesztelés közben a kliens számára azóta nem is nagyon használom  8)).

Összekuszálódott login/register panel
« Válasz #4 Dátum: 2016. január 06. - 09:14:04 »
0 Show voters
Félreértettél kicsit:D A gui háttere csak addig volt egyben az egész képernyős háttérrel, amíg nem akartam megoldani, hogy külön érzékelje, ha rávisszük a gui-ra a kurzort. Tehát mostmár külön van.
És nem dxDrawImage-val van megoldva, hanem guiCreateStaticImage-el, mivel a példából, amit láttam, ezzel volt megoldva, azt nem gondoltam, hogy van ennél jobb megoldás is. De akkor lehet újra kezdem az egészet dxDrawImage-el, és most jobban ügyelek, hogy ne kuszálódjon.
Szerk.: Annyit még nem értek, hogy a onClientRender alá miért kell berakni?
« Utoljára szerkesztve: 2016. január 06. - 10:41:42 írta BlackSmith »

Összekuszálódott login/register panel
« Válasz #5 Dátum: 2016. január 06. - 15:23:32 »
0 Show voters
onClientRenderbe a dx-eket kell tenni. A render folyamatosan frissül ezért nem mindegy mi kerül be. pl egy guiCreateWindows bekerül akkor addig amíg előtted van a panel folyamatosan létrehozza azt, ezzel laggot okozva. Viszont az általam leírt gui, dx dolgokat oda kell beleírni.

Összekuszálódott login/register panel
« Válasz #6 Dátum: 2016. január 09. - 00:42:37 »
0 Show voters
Bocsesz, hogy ennyire értetlenkedek, de egyszerűen valami hiba mindig becsúszik.
Elkezdtem megcsinálni dxDrawImage-el, de a hiba még mindig fent áll. Próbálgatom, hogy ha nem az edit mezőbe kattintok be bugol-e, és többet nem lehet belekattintani. Egy darabig remekül működik, viszont utána valami elcsesződik és reconnectelni kell, hogy működjön.
Így van most megoldva:
 
addEventHandler( \'onClientRender\', root,
    function()
rX,rY = guiGetScreenSize()
width,height = 402,384
X = (rX/2) - (width/2)
Y = (rY/2) - (height/2)
login = dxDrawImage(0,0,rX,rY, \"img/log_bg.png\", 0, 0, 0, tocolor(255, 255, 255, 255), false) -- Alap háttér, ez eltakarja az egész képernyőt(nem egy egy színes dolog, rendes kép)
 
input[\"loginUserInput\"] = dxDrawImage(554,345,193,35, \"img/input.png\", 0, 0, 0, tocolor(255, 255, 255, 255), false, login) -- Ez az username input mező háttere
input[\"loginPassInput\"] = dxDrawImage(554,430,193,35, \"img/input.png\", 0, 0, 0, tocolor(255, 255, 255, 255), false, login) -- Ez az password input mező háttere
end)
addEventHandler(\"onClientResourceStart\",resourceRoot,
function()
showCursor(true) -- gondolom lehet tudni
myFont = guiCreateFont( \"IMMORTAL.ttf\", 12 ) -- ezt is
loginUserLbl = guiCreateLabel(561,352,184,27,\"\",false,input[\"loginUserInput\"]) -- Itt van a label, amiben a beírt szöveget jelenítem meg
guiSetFont(loginUserLbl, myFont)
loginPassLbl = guiCreateLabel(11,10,184,27,\"\",false, input[\"loginPassInput\"]) -- Itt is a label
edits[\"loginPassEdit\"] = guiCreateEdit(554,430,184,27,\"\",false, login) -- Itt van az edit
guiSetAlpha(edits[\"loginPassEdit\"], 0) -- Átlátszóvá teszem
edits[\"loginUserEdit\"] = guiCreateEdit(554,345,184,27,\"\",false,login) -- Ez is edit
guiSetAlpha(edits[\"loginUserEdit\"], 0) -- Átlátszó
 
-- Itt a változást kéri le:
addEventHandler(\"onClientGUIChanged\", edits[\"loginUserEdit\"], function(element)
guiSetText(loginUserLbl, guiGetText(edits[\"loginUserEdit\"]))
end)
addEventHandler(\"onClientGUIChanged\", edits[\"loginPassEdit\"], function(element)
local strin = tostring(guiGetText(edits[\"loginPassEdit\"]))
if strin:len() > 0 then
   local temp = \"\"
   for i=1, strin:len() do
      temp = temp .. \"*\"
   end
   guiSetText(loginPassLbl, temp)
else
   guiSetText(loginPassLbl, \"\")
end
end)
end)
 
« Utoljára szerkesztve: 2016. január 09. - 00:45:07 írta anGeL »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal