Jump to content

[Duda] GUIs en la 1.5


Platin

Recommended Posts

Hola, tenía una pequeña duda con respecto a la creación de GUIs en la 1.5, ya que creo que esto no me paso nunca.

Tuve la idea de crear mi propio LoginPanel, ya que queda feo que la gente al entrar vea uno que ya conocen o que saben que no esta ni trabajado (por el servidor me refiero), el tema es que cuando otro usuario se le cierra o cierra el mismo el panel (logeandose) mi panel también lo hace.

¿Es normal? ¿Se puede evitar?

Gracias de antemano.

Saludos,

Platin.

Link to comment
No sé mucho de eso pero podrías poner algo como... ¿:/?
addEventHandler( "onClientResourceStart", getLocalPlayer( ), 
function () 
  
end 
) 

EDITO: El problema que tienes es que si uno cierra un panel al otro también se le cierra, ¿no?

Si, pero eso lo que hace es básicamente inutilizando el evento, yo use:

addEventHandler("onClientResourceStart", resourceRoot, funcion) 

Link to comment

Prueba poniendo ésto:

addEventHandler("onClientResourceStart", root, funcion) 
--o también 
addEventHandler("onClientResourceStart, getRootElement(), funcion) 
 

Yo tuve tu problema pero con otro script haciendo un trigger. Y no sé por qué, el problema fue porque tenía 'root'. Era muy extraño, no obstante, pruebalo a ver.

Link to comment
Prueba poniendo ésto:
addEventHandler("onClientResourceStart", root, funcion) 
--o también 
addEventHandler("onClientResourceStart, getRootElement(), funcion) 
  
 

Yo tuve tu problema pero con otro script haciendo un trigger. Y no sé por qué, el problema fue porque tenía 'root'. Era muy extraño, no obstante, pruebalo a ver.

Eso haría que cuando cualquier recurso se reinicia el panel se abra.

Link to comment
Usas un trigger desde server-side para cerrar la gui? hay errores causados por esto.

que colocan:

triggerClientEvent(root, "cerrar", root) 

cuando deberian colocar

triggerClientEvent(source, "cerrar", source) 

La GUI se inicia en Client, luego triggea a server y devuelve. ¿Puede ser eso?

PD: Para cerrar tiene que primero pasar por server.

Link to comment
dices que el problema es cuando cierran el panel

como es un login panel el evento se trigea de server a client por lo que el problema tiene que estar en el trigger

¿Podría ser por esto?

client

function cerrarTodo() 
    showCursor(false) 
    fadeCamera(true) 
    if guiGetVisible(ventana) then 
        guiSetVisible(ventana, false) 
    end 
    if ventanaRegistrar then 
        if guiGetVisible(ventanaRegistrar) then 
            guiSetVisible(ventanaRegistrar, false) 
        end 
    end 
end 
addEvent("cerrarTodo", true) 
addEventHandler("cerrarTodo", root, cerrarTodo) 

server

triggerClientEvent("cerrarTodo", source) -- Source es localPlayer ya triggeado 

Link to comment
Creo que sería asi:
triggerClientEvent(source, "cerrarTodo", source) 

bool triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] ) 

Mmmh, podría ser, como ví que era un argumento extra. Compruebo y respondo nuevamente.

EDIT: Sigue pasando lo mismo.

Link to comment

Creo que esto no tiene ningun sentido pero es lo unico que veo de mas, en mi criterio xD

function cerrarTodo() 
    showCursor(false) 
    fadeCamera(true) 
    if guiGetVisible(ventana) then -- Quitale estas condicion 
        guiSetVisible(ventana, false) 
    end 
    if ventanaRegistrar then 
        if guiGetVisible(ventanaRegistrar) then -- Y esta tambien 
            guiSetVisible(ventanaRegistrar, false) 
        end 
    end 
end 
addEvent("cerrarTodo", true) 
addEventHandler("cerrarTodo", root, cerrarTodo) 

Link to comment
Creo que esto no tiene ningun sentido pero es lo unico que veo de mas, en mi criterio xD
function cerrarTodo() 
    showCursor(false) 
    fadeCamera(true) 
    if guiGetVisible(ventana) then -- Quitale estas condicion 
        guiSetVisible(ventana, false) 
    end 
    if ventanaRegistrar then 
        if guiGetVisible(ventanaRegistrar) then -- Y esta tambien 
            guiSetVisible(ventanaRegistrar, false) 
        end 
    end 
end 
addEvent("cerrarTodo", true) 
addEventHandler("cerrarTodo", root, cerrarTodo) 

Mandaste fruta. Eso me sirve para que el panel se desaparezca cuando te logeas, si no el pibito no puede hacer nada. Lo reemplaze con destroyElement pensando que iba a solucionar el problema, pero nope.

prueba con esto
triggerClientEvent(source, "cerrarTodo", getRootElement() ) 
  

Soy un asco con los triggers, ahí te digo si anduvo.

EDIT: No funciono, tampoco. Dudo que sea el trigger.

Link to comment
Mandaste fruta. Eso me sirve para que el panel se desaparezca cuando te logeas, si no el pibito no puede hacer nada. Lo reemplaze con destroyElement pensando que iba a solucionar el problema, pero nope.

Pero cual es la funcion de esas condiciones que hay ahi? Cual es la necesidad de chequear eso?

Link to comment
Mandaste fruta. Eso me sirve para que el panel se desaparezca cuando te logeas, si no el pibito no puede hacer nada. Lo reemplaze con destroyElement pensando que iba a solucionar el problema, pero nope.

Pero cual es la funcion de esas condiciones que hay ahi? Cual es la necesidad de chequear eso?

Para tener menos errores en los debugScripts, es molesto que te spamee todo.

Link to comment
function cerrarTodo() 
if source ~= localPlayer then return end 
    showCursor(false) 
    fadeCamera(true) 
    if guiGetVisible(ventana) then -- Quitale estas condicion 
        guiSetVisible(ventana, false) 
    end 
    if ventanaRegistrar then 
        if guiGetVisible(ventanaRegistrar) then -- Y esta tambien 
            guiSetVisible(ventanaRegistrar, false) 
        end 
    end 
end 
addEvent("cerrarTodo", true) 
addEventHandler("cerrarTodo", root, cerrarTodo) 

Prueba asi

AUNQUE SI LA FUNCION DE SERVER SIDE LA TRIGGEAS CON CLIENT, usa:

triggerClientEvent(client, "cerrarTodo", client) 

Link to comment

Bueno, haciendo pruebas (no VeNaD, lo tuyo no me soluciono nada), puse para que cada vez que alguien se logee, este mande un mensaje al debugScript diciendo si se logeo o no. Para mi sorpresa, el se pudo logear y a los demás les apareció como que intentaron hacerlo pero al no ser el mismo jugador que el que mando el server-side les salio el mensaje de Error en vez de el de login.

Imagen:

zilfld4.png

Asi que lo pude solucionar.

Gracias por todo.

Link to comment
seria bueno que digas cual fue el erro y como lo solucionaste así otra persona con el mismo problema pueda verlo :)

Realmente no lo solucione, solo hice un detector como dijo Venad, pero bien hecho.

if not (source ~= localPlayer) then 

Entonces lo estás triggeando a todos los jugadores.. usar eso es ineficiente.

Link to comment
  • Recently Browsing   0 members

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