Szerző Téma: dxDraw panel  (Megtekintve 1034 alkalommal)

dxDraw panel
« Dátum: 2018. július 15. - 01:34:28 »
0 Show voters
Sziasztok! 
 
Csupán a véleményeteket szeretném kérni erről a scriptről:
 
Van egy \"fő\" panel, amin van bevezető információ, van egy bezáró gomb, és egy tovább gomb. Tovább gombbal másik ablak jelenik meg, ahol vissza lehet menni a kezdő oldalra.
 
Itt volna a kód: 
 
A kérdésem pedig az volna: Lehet ezt sokkal egyszerűbben is megcsinálni? Követtem el súlyos hibákat? Mennyire rossz a kódom?
 

local thePlayer = getLocalPlayer()
local x, y = guiGetScreenSize(thePlayer)
local pS = [[randomtext]]
-------------------------------------------------------------------------------------------
function drawInformation()
  dxDrawRectangle(x/3, y/3, 500, 450, tocolor(0, 0, 0, 125))
  dxDrawRectangle(x/3, y/3, 500, 20, tocolor(0, 0, 0, 125))
  dxDrawRectangle(x/2.8, y/1.4, 100, 30, tocolor(0, 0, 0, 125))
  dxDrawRectangle(x/1.6, y/1.4, 100, 30, tocolor(0, 0, 0, 125))
  dxDrawText(\"Üdvözöllek a segítség panelen kedves játékos!\", x/2.3, y/2.8, tocolor(75, 108, 213, 115))
  dxDrawText(pS, x/2.8, y/2.6)
  dxDrawText(\"Bezárás\", x/2.6, y/1.39, tocolor(75, 108, 213, 125))
  dxDrawText(\"Következő\", x/1.54, y/1.39, tocolor(75, 108, 213, 125))
end
-------------------------------------------------------------------------------------------
function drawNextPage()
  dxDrawRectangle(x/3, y/3, 500, 450, tocolor(0, 0, 0, 125))
  dxDrawRectangle(x/3, y/3, 500, 20, tocolor(0, 0, 0, 125))
  dxDrawRectangle(x/2, y/1.4, 100, 30, tocolor(0, 0, 0, 125))
  dxDrawText(\"Vissza\", x/2, y/1.39, tocolor(75, 108, 213, 125))
end
-------------------------------------------------------------------------------------------
function showThings()
  addEventHandler(\"onClientRender\", root, drawInformation)
  addEventHandler(\"onClientClick\", getRootElement(), onClickThing)
  showCursor(true)
end
addCommandHandler(\"teszt\", showThings)
function disappearThings()
  removeEventHandler(\"onClientRender\", root, drawInformation)
  removeEventHandler(\"onClientClick\", getRootElement(), onClickThing)
  showCursor(false)
end
function showFirst()
  addEventHandler(\"onClientRender\", root, drawNextPage)
  addEventHandler(\"onClientClick\", getRootElement(), onClickNext)
  showCursor(true)
end
function backToInf()
  removeEventHandler(\"onClientRender\", root, drawNextPage)
  removeEventHandler(\"onClientClick\", getRootElement(), onClickNext)
  showCursor(false)
  addEventHandler(\"onClientRender\", root, drawInformation)
  showCursor(true)
end
---------------------------------------------------------------------------------------------
function onClickThing(button, state, absoluteX, absoluteY, worldX, worldZ, clickedElement)
  if (state == \"down\") then
    if (absoluteX >= x/2.8) and (absoluteX <= x/2.8 + 100) and (absoluteY >= y/1.4) and (absoluteY <= y/1.4 + 100) then
      disappearThings()
    end
  end
end
function onClickNext(button, state, absoluteX, absoluteY, worldX, worldZ, clickedElement)
  if (state == \"down\") then
    if (absoluteX >= x/1.6) and (absoluteX <= x/1.6 + 100) and (absoluteY >= y/1.4) and (absoluteY <= y/1.4 + 100) then
      disappearThings()
      showFirst()
    end
  end
end
addEventHandler(\"onClientClick\", getRootElement(), onClickNext)
function onClickBack(button, state, absoluteX, absoluteY, worldX, worldZ, clickedElement)
  if (state == \"down\") then
    if (absoluteX >= x/2) and (absoluteX <= x/2 + 100) and (absoluteY >= y/1.4) and (absoluteY <= y/1.4 + 100) then
      backToInf()
    end
  end
end
addEventHandler(\"onClientClick\", getRootElement(), onClickBack)

 
 

dxDraw panel
« Válasz #1 Dátum: 2018. július 15. - 09:58:30 »
0 Show voters
Felesleges ennyi funkció. Elágazásokkal szebb, és könnyebb, illetve rövidebb is lesz a kód.

Nem elérhető Fr3d

dxDraw panel
« Válasz #2 Dátum: 2018. július 21. - 10:10:29 »
0 Show voters
Ahogy @BlackSymondta, felesleges ennyi funkció. Csináld ilyesmire:
 

local state = \'information\'
--- render funkció
if state == \'information\' then
--ide a kód
elseif state == \'first\' then
--ide a kód
end

 
 

dxDraw panel
« Válasz #3 Dátum: 2018. július 22. - 12:22:08 »
0 Show voters
A getLocalPlayer()-t lehet helyettesíteni a localPlayer-rel (predefiniált változó, a thePlayer-eket lecserélheted), illetve a guiGetScreenSize()-be nem kell localPlayer változó.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal