Jump to content

[SOLUCIONADO]Alguna forma de hacer este código más corto?


Anzo

Recommended Posts

Estoy haciendo un panel login en dx, para que se vea más bonito, por ahora solo tengo la parte de los botones que en este caso serían rectangles, tengo para cuando darle click se cambien de color y al pasar el mouse en el rectangle salga un borde de color celeste.

Lo que quiero saber es si hay alguna forma de hacer este código más corto (igualmente no es tan largo, pero me refiero a una mejor forma de hacer el script):

local screenW, screenH = guiGetScreenSize() 
local colorForAll = tocolor(0,220,239,255) 
activo = false 
  
  
  
function newsLogin ()--Cambio  a color azul (rectangle y text, rectangle: Login) 
    dxDrawRectangle(screenW * 0.2125, screenH * 0.3383, screenW * 0.1300, screenH * 0.0517, colorForAll, false)--Login Rectangle 
    dxDrawText("Login", screenW * 0.2325, screenH * 0.3383, screenW * 0.3212, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
end 
  
--Al darle click al boton Login se pondrá azul el rectangle y texto [^] y se borraran los otros botones que esten azules. 
function createNewLoginInformation(_,state) 
    if activo == false then 
        if state == "down" then 
            if isMouseInPosition (screenW * 0.2125, screenH * 0.3383, screenW * 0.1300, screenH * 0.0517) then 
            removeEventHandler("onClientRender", root, loginInformations) 
            removeEventHandler("onClientRender", root, newsRegister) 
            removeEventHandler("onClientRender", root, newsInformations) 
            removeEventHandler("onClientRender", root, mewss) 
            removeEventHandler("onClientRender", root, newCharaterText) 
            addEventHandler("onClientRender", root, newsLogin) 
            addEventHandler("onClientRender", root, newsInformations) 
            addEventHandler("onClientRender", root, registerInformations) 
            addEventHandler("onClientRender", root, characterInformations) 
            end 
        end 
    end 
end 
addEventHandler ("onClientClick", root, createNewLoginInformation) 
  
--Cambio a color azul (rectangle y text, rectangle: Register) 
function newsRegister() 
    dxDrawRectangle(screenW * 0.3425, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517,colorForAll, false)--Register Rectangle 
    dxDrawText("Register", screenW * 0.3550, screenH * 0.3383, screenW * 0.4437, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
end 
  
--Al darle click al boton Register se pondrá azul el rectangle y texto [^] y se borraran los otros botones que esten azules. 
function createNewRegisterInformation(_,state) 
    if activo == false then 
        if state == "down" then 
            if isMouseInPosition(screenW * 0.3425, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then 
            removeEventHandler("onClientRender", root, newsLogin) 
            removeEventHandler("onClientRender", root, registerInformations) 
            removeEventHandler("onClientRender", root, mewss) 
            removeEventHandler("onClientRender", root, newsInformations) 
            removeEventHandler("onClientRender", root, newCharaterText) 
            addEventHandler("onClientRender", root, newsRegister) 
            addEventHandler("onClientRender", root, newsInformations) 
            addEventHandler("onClientRender", root, loginInformations) 
            addEventHandler("onClientRender", root, characterInformations) 
            end 
        end 
    end 
end 
addEventHandler ("onClientClick", root, createNewRegisterInformation) 
  
--Cambio a color azul (rectangle y text, rectangle: News) 
function mewss() 
    dxDrawRectangle(screenW * 0.4875, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517, colorForAll, false)--News Rectangle 
dxDrawText("News", screenW * 0.5162, screenH * 0.3383, screenW * 0.6050, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
end 
  
  
--Al darle click al boton News se pondrá azul el rectangle y texto [^] y se borraran los otros botones que esten azules. 
function createNewInformation(_,state) 
    if activo == false then 
        if state == "down" then 
            if isMouseInPosition(screenW * 0.4875, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then 
            removeEventHandler("onClientRender", root, newsLogin) 
            removeEventHandler("onClientRender", root, newsRegister) 
            removeEventHandler("onClientRender", root, newsInformations) 
            removeEventHandler("onClientRender", root, newCharaterText) 
            addEventHandler("onClientRender", root, newsInformations) 
            addEventHandler("onClientRender", root, loginInformations) 
            addEventHandler("onClientRender", root, registerInformations) 
            addEventHandler("onClientRender", root, characterInformations) 
            addEventHandler("onClientRender", root, mewss) 
            end 
        end 
    end 
end 
addEventHandler ("onClientClick", root, createNewInformation) 
  
--Cambio a color azul (rectangle y text, rectangle: Character) 
function newCharaterText() 
dxDrawRectangle(screenW * 0.6325, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517, colorForAll, false)--Character Rectangle 
dxDrawText("Character", screenW * 0.6325, screenH * 0.3383, screenW * 0.7212, screenH * 0.3850, tocolor(255, 255, 255, 255), 1.90, "default-bold", "left", "top", false, false, false, false, false) 
end 
  
--Al darle click al boton Character se pondrá azul el rectangle y texto [^] y se borraran los otros botones que esten azules. 
function createNewCharacterInformation(_,state) 
     if activo == false then 
        if state == "down" then 
            if isMouseInPosition(screenW * 0.6325, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then 
            removeEventHandler("onClientRender", root, characterInformations) 
            removeEventHandler("onClientRender", root, newsRegister) 
            removeEventHandler("onClientRender", root, newsLogin) 
            removeEventHandler("onClientRender", root, mewss) 
            addEventHandler("onClientRender", root, newCharaterText) 
            addEventHandler("onClientRender", root, registerInformations) 
            addEventHandler("onClientRender", root, loginInformations) 
            end 
        end 
    end 
end 
addEventHandler("onClientClick", root, createNewCharacterInformation) 
  
--Este es el texto y rectangle que aparecerá por defecto al iniciar el script, con createNewLoginInformation se borrará este texto y aparecerá el de newsLogin. 
function loginInformations() 
        dxDrawRectangle(screenW * 0.2125, screenH * 0.3383, screenW * 0.1300, screenH * 0.0517, tocolor(0, 0, 0, 180), false)--Login Rectangle 
        dxDrawText("Login", screenW * 0.2325, screenH * 0.3383, screenW * 0.3212, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
    if isMouseInPosition(screenW * 0.2125, screenH * 0.3383, screenW * 0.1300, screenH * 0.0517) then --Login Lines 
        dxDrawLine((screenW * 0.2125) - 1, (screenH * 0.3383) - 1, (screenW * 0.2125) - 1, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.3425, (screenH * 0.3383) - 1, (screenW * 0.2125) - 1, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine((screenW * 0.2125) - 1, screenH * 0.3900, screenW * 0.3425, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.3425, screenH * 0.3900, screenW * 0.3425, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
    end 
end 
addEventHandler("onClientRender", root, loginInformations) 
  
--Este es el texto y rectangle que aparecerá por defecto al iniciar el script, con createNewRegisterInformationInformation se borrará este texto y aparecerá el de newsRegister. 
function registerInformations() 
        dxDrawRectangle(screenW * 0.3425, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517,tocolor(0,0,0,180), false)--Register Rectangle 
        dxDrawText("Register", screenW * 0.3550, screenH * 0.3383, screenW * 0.4437, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
    if isMouseInPosition(screenW * 0.3425, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then --Register Lines 
        dxDrawLine((screenW * 0.3425) - 1, (screenH * 0.3383) - 1, (screenW * 0.3425) - 1, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.4875, (screenH * 0.3383) - 1, (screenW * 0.3425) - 1, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine((screenW * 0.3425) - 1, screenH * 0.3900, screenW * 0.4875, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.4875, screenH * 0.3900, screenW * 0.4875, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
    end 
end 
addEventHandler("onClientRender", root, registerInformations) 
  
--Este es el texto y rectangle que aparecerá por defecto al iniciar el script, con createNewInformation se borrará este texto y aparecerá el de mewss. 
function newsInformations() 
        dxDrawRectangle(screenW * 0.4875, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517, tocolor(0, 0, 0, 180), false)--News Rectangle 
        dxDrawText("News", screenW * 0.5162, screenH * 0.3383, screenW * 0.6050, screenH * 0.3850, tocolor(255, 255, 255, 255), 2.00, "default-bold", "left", "top", false, false, false, false, false) 
    if isMouseInPosition(screenW * 0.4875, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then --News lines 
        dxDrawLine((screenW * 0.4875) - 1, (screenH * 0.3383) - 1, (screenW * 0.4875) - 1, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.6325, (screenH * 0.3383) - 1, (screenW * 0.4875) - 1, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine((screenW * 0.4875) - 1, screenH * 0.3900, screenW * 0.6325, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.6325, screenH * 0.3900, screenW * 0.6325, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
    end 
end 
addEventHandler("onClientRender", root, newsInformations) 
  
--Este es el texto y rectangle que aparecerá por defecto al iniciar el script, con createNewCharacterInformation se borrará este texto y aparecerá el de newCharaterText. 
function characterInformations() 
        dxDrawRectangle(screenW * 0.6325, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517, tocolor(0, 0, 0, 180), false)--Character Rectangle 
        dxDrawText("Character", screenW * 0.6325, screenH * 0.3383, screenW * 0.7212, screenH * 0.3850, tocolor(255, 255, 255, 255), 1.90, "default-bold", "left", "top", false, false, false, false, false) 
    if isMouseInPosition(screenW * 0.6325, screenH * 0.3383, screenW * 0.1450, screenH * 0.0517) then 
        dxDrawLine((screenW * 0.6325) - 1, (screenH * 0.3383) - 1, (screenW * 0.6325) - 1, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.7775, (screenH * 0.3383) - 1, (screenW * 0.6325) - 1, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine((screenW * 0.6325) - 1, screenH * 0.3900, screenW * 0.7775, screenH * 0.3900, tocolor(0, 255, 239, 255), 1, false) 
        dxDrawLine(screenW * 0.7775, screenH * 0.3900, screenW * 0.7775, (screenH * 0.3383) - 1, tocolor(0, 255, 239, 255), 1, false) 
    end  
end 
addEventHandler("onClientRender", root, characterInformations) 
  
--Este es el rectangle principal 
addEventHandler("onClientRender", root, 
function() 
    dxDrawRectangle(screenW * 0.2125, screenH * 0.2833, screenW * 0.5650, screenH * 0.0550, tocolor(254, 253, 253, 255), false)          
end 
) 

Pido ayuda con esto por que al precionar los rectangle's me tira errores: Bad usage @ 'addEventHandler' ['onClientRender' with this function is already handled]

Y pues quisiera sabe como ya dije anteriormente, si hay una manera de hacer el código más corto y mejor :idea:

Edited by Guest
Link to comment

Con esta funcion arreglas lo del debug.

  
local _addEventHandler = addEventHandler 
function addEventHandler(a, b, c, d, e) 
   removeEventHandler(a, b, c) 
   addEventHandler(a, b, c, d, e) 
end 
  

Aunque te recomiendo en un solo render cargar todo y utilizar variables en vez de eventos.

Link to comment
Con esta funcion arreglas lo del debug.
  
local _addEventHandler = addEventHandler 
function addEventHandler(a, b, c, d, e) 
   removeEventHandler(a, b, c) 
   addEventHandler(a, b, c, d, e) 
end 
  

Aunque te recomiendo en un solo render cargar todo y utilizar variables en vez de eventos.

Edit: Gracias Tomas.

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...