Szerző Téma: AccountSystem probléma  (Megtekintve 1011 alkalommal)

AccountSystem probléma
« Dátum: 2017. Január 17. - 19:19:22 »
0
Sziasztok!
 
Lenne egy kis problémám, ugyanis írok egy account systemet (tulajdonképpen egy modot) és a loginpanel képemre ráhelyeztem az inputot, elhalványítottam tettem labelt megvan a csere handler és nem akar sikerülni. amikor beleakarok kattintani az editbe, akkor nem engedi.
 
 
 

   function onStart()
addEventHandler(\"onClientRender\", getRootElement(), drawPanel)
end
addEventHandler(\"onClientResourceStart\", getRootElement(), onStart)
addEventHandler(\"onClientPlayerJoin\", getRootElement(), onStart)   function drawPanel()
s = {guiGetScreenSize()}
p = {500; 600}   x = (s[1]/2) - (p[1]/2)
y = (s[2]/2) - (p[2]/2)   lpanel = dxDrawImage(x, y, 500, 600, \"pics/loginpanel.png\", 0, 0, 0)   input2_show = guiCreateLabel(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)   input2 = guiCreateEdit(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)   showCursor(true)   end   
function changeTextOnKey()
guiSetText(input2_show, guiGetText(input2))
end 
addEventHandler(\"onClientGUIChanged\", input2, changeTextOnKey)
« Utoljára szerkesztve: 2017. Január 17. - 19:20:05 írta HDmaster0702 »

AccountSystem probléma
« Válasz #1 Dátum: 2017. Január 17. - 20:37:23 »
+1

function onStart()
addEventHandler(\"onClientRender\", getRootElement(), drawPanel)
input2_show = guiCreateLabel(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
input2 = guiCreateEdit(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
showCursor(true)
end
addEventHandler(\"onClientResourceStart\", getRootElement(), onStart)
addEventHandler(\"onClientPlayerJoin\", getRootElement(), onStart)   
s = {guiGetScreenSize()}
p = {500; 600}
x = (s[1]/2) - (p[1]/2)
y = (s[2]/2) - (p[2]/2)
function drawPanel()
dxDrawImage(x, y, 500, 600, \"pics/loginpanel.png\", 0, 0, 0)
end   

 
Próbáld így. 
 
Az onClientRender arra jó, hogy minden frame elött lefuttatja a functionodat (jelen esetben a drawPanel nevűt). Te oda beírtál sok dolgot amit nem oda kellene. 
A guis dolgod (most a guiCreateLabel és a guiCreateEdit-re gondolok) azokat egyszer meghívod elkészéti neked a szöveget meg a dobozt amibe írhatsz és az addig ott lesz a képernyődön míg nem törlöd, nem kell minden framekor meghívnod mert akkor mindig újat készít amik elfedik egymást folyamatosan ezért nem láttad hogy írsz bele.
 
A showCursor és a változóid (s,p,x,y) maradhattak volna benne igazából csak ugyan úgy felesleges. Nem akarod azzal terhelni a gépet hogy midnen framekor ismét (tök feleslegesen) előhozza a curosort és a változóknál is hasonló a gond. Ha úgy függbényben hagytad volna akkor minden framekor újra akarná számítani ugyan azokat az értékeket.
 
Ja és egy tipp, figyelj arra, hogy szépen legyen elrendezve a kódod, mert könyebben áttekinthető. Ne mindent egy sorba írj.
« Utoljára szerkesztve: 2017. Január 17. - 20:38:19 írta dugasz1 »

AccountSystem probléma
« Válasz #2 Dátum: 2017. Január 17. - 20:58:22 »
0
Nagyon szépen köszönöm a tanácsokat és a segítséget. Ment a tetszik. Lenne egy hiba megint, az, hogy nem cseréli le a textet, ha beleírok a labelbe.
 

function onStart()
addEventHandler(\"onClientRender\", getRootElement(), drawPanel)
input2_show = guiCreateLabel(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
guiLabelSetColor(input2_show, 0, 0, 0)
input2 = guiCreateEdit(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
guiSetAlpha(input2, 0)
showCursor(true)
end
addEventHandler(\"onClientResourceStart\", getRootElement(), onStart)
addEventHandler(\"onClientPlayerJoin\", getRootElement(), onStart)   
s = {guiGetScreenSize()}
p = {500; 600}
x = (s[1]/2) - (p[1]/2)
y = (s[2]/2) - (p[2]/2)
function drawPanel()
dxDrawImage(x, y, 500, 600, \"pics/loginpanel.png\", 0, 0, 0)
end   
function changeTextOnKey()
newText = guiGetText(input2)
guiSetText(input2_show, newText)
end   
addEventHandler(\"onClientGUIChanged\", input2, changeTextOnKey)

 
 
« Utoljára szerkesztve: 2017. Január 17. - 21:09:35 írta HDmaster0702 »

AccountSystem probléma
« Válasz #3 Dátum: 2017. Január 17. - 21:24:11 »
0
Mert 0-ra raktad az alpha-t.

AccountSystem probléma
« Válasz #4 Dátum: 2017. Január 17. - 23:34:27 »
+1

function onStart()
addEventHandler(\"onClientRender\", getRootElement(), drawPanel)
input2_show = guiCreateLabel(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
guiLabelSetColor(input2_show, 0, 0, 0)
input2 = guiCreateEdit(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
guiSetAlpha(input2, 0)
showCursor(true)
addEventHandler(\"onClientGUIChanged\", input2, changeTextOnKey)
end
addEventHandler(\"onClientResourceStart\", getRootElement(), onStart)
addEventHandler(\"onClientPlayerJoin\", getRootElement(), onStart)   
s = {guiGetScreenSize()}
p = {500; 600}
x = (s[1]/2) - (p[1]/2)
y = (s[2]/2) - (p[2]/2)
function drawPanel()
dxDrawImage(x, y, 500, 600, \"pics/loginpanel.png\", 0, 0, 0)
end   
function changeTextOnKey()
newText = guiGetText(input2)
guiSetText(input2_show, newText)
end   

 
Próbáld így.
 
Nem tudom ismered-e / használod-e de van egy olyan parancs hogy /debugscript 3 (ehhez admin jog kell aclben) ami hibákat ír ki neked. Jó használni, mert sokat segít.
Jelen esetben hibát kellene kidobnia elvileg, mivel amikor az mta betölt egy resourcet (amikor beírod hogy start resourceneve)  akkor elkezdi fentről lefele feldolgozni a scritped. Azok a dolgok futnak le elsőnek amik nincsenek egy function () ... end között.
 
Tehát mikor az addEventHandler(\"onClientGUIChanged\", input2, changeTextOnKey) részhez ér akkor még az onStart function még nem futott le ami létrehozná az input2 változót és így hibás az eventHandlered.
 
(Az alpha nem probléma attól működik az editmező)

AccountSystem probléma
« Válasz #5 Dátum: 2017. Január 18. - 17:57:30 »
0
Még annyi kérdésem lenne, hogyha beállítok egy CameraMatrix-ot akkor azt hogyan lehet az eredeti playert néző pos-ra állítani, mert nekem a setCameraTarget nem működik?
 

myFont = guiCreateFont(\"font/Oswald-Regular.ttf\", 30)
 
function onStart()
addEventHandler(\"onClientRender\", getRootElement(), drawPanel)
addEventHandler(\"onClientResourceStop\", getRootElement, cameraDefault)
input1_show = guiCreateLabel(x/2*2.29, y/2*3.26, 274, 50, \"Felhasználó\", false)
guiLabelSetColor(input1_show, 0, 0, 0)
guiSetFont(input1_show, myFont)
input1 = guiCreateEdit(x/2*2.282, y/2*3.29, 274, 50, \"Jelszó\", false)
guiSetAlpha(input1, 0)
guiEditSetMaxLength(input1, 13)
    addEventHandler(\"onClientGUIChanged\", input1, changeTextOnKeyUser)
input2_show = guiCreateLabel(x/2*2.29, y/2*4, 274, 50, \"Jelszó\", false)
guiLabelSetColor(input2_show, 0, 0, 0)
guiSetFont(input2_show, myFont)
input2 = guiCreateEdit(x/2*2.282, y/2*4.03, 274, 50, \"Jelszó\", false)
guiSetAlpha(input2, 0)
guiEditSetMaxLength(input2, 13)
showCursor(true)
addEventHandler(\"onClientGUIChanged\", input2, changeTextOnKeyPass)
setElementDimension(getLocalPlayer(), 9999)
setElementAlpha(getLocalPlayer(), 0)
showChat(false)
    showPlayerHudComponent(\"radar\", false)
    setCameraMatrix(2493.72266, -1628, 50.34375, 2493.72266, -1668.54333, 13.34375, 0, 180)
   
end
addEventHandler(\"onClientResourceStart\", getRootElement(), onStart)
addEventHandler(\"onClientPlayerJoin\", getRootElement(), onStart)   
s = {guiGetScreenSize()}
p = {500; 600}
x = (s[1]/2) - (p[1]/2)
y = (s[2]/2) - (p[2]/2)
function drawPanel()
dxDrawImage(x, y, 500, 600, \"pics/loginpanel.png\", 0, 0, 0)
end   
function changeTextOnKeyUser()
local newText = guiGetText(input1)
guiSetText(input1_show, newText)
end   
function changeTextOnKeyPass()
local newText = guiGetText(input2)
guiSetText(input2_show, newText)
end   
 
function cameraDefault()
setCameraTarget(getLocalPlayer())
    setElementAlpha(getLocalPlayer(), 100)
end    
« Utoljára szerkesztve: 2017. Január 18. - 17:59:11 írta HDmaster0702 »

AccountSystem probléma
« Válasz #6 Dátum: 2017. Január 18. - 18:09:55 »
0
Ennek is valami hibát kellene szerintem kihozni. (Talán nem biztos)
 
Mert ha jól tippelek még nem volt le spawnolva a karaktered (spawnPlayer fügvénnyel ami csak szerver oldali.). Előtte le kell raknod a player karakterjét, mielőtt ráírányítanád a kamerát.
 

function spawnOnLogin ( )
spawnPlayer (source, 0, 0, 5)
setCameraTarget (source, source)
end
addEventHandler(\"onPlayerLogin\", getRootElement(), spawnOnLogin)

 
Ez a spawnPlayer wikijén a 2. példa (csak kitöröltem pár dolgot)
 
Szólnod kell a szervernek hogy spawnolja le a karaktert amit a triggerrel tudsz megoldani. LINK wikihez

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal