Platin Posted August 23, 2015 Share Posted August 23, 2015 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
aka Blue Posted August 23, 2015 Share Posted August 23, 2015 ¿Y si pones getLocalPlayer? Link to comment
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 ¿Y si pones getLocalPlayer? ¿Y en donde lo pondría? Me refiero, el evento que inicia la gui es onClientResourceStart Link to comment
aka Blue Posted August 23, 2015 Share Posted August 23, 2015 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? Link to comment
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 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
aka Blue Posted August 23, 2015 Share Posted August 23, 2015 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
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 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
Sergioks Posted August 23, 2015 Share Posted August 23, 2015 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) Link to comment
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 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
alex17 Posted August 23, 2015 Share Posted August 23, 2015 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 Link to comment
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 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
Pipee20k Posted August 23, 2015 Share Posted August 23, 2015 Creo que sería asi: triggerClientEvent(source, "cerrarTodo", source) bool triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] ) Link to comment
Platin Posted August 23, 2015 Author Share Posted August 23, 2015 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
Pipee20k Posted August 23, 2015 Share Posted August 23, 2015 Creo que esto no tiene ningun sentido pero es lo unico que veo de mas, en mi criterio 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
alex17 Posted August 23, 2015 Share Posted August 23, 2015 prueba con esto triggerClientEvent(source, "cerrarTodo", getRootElement() ) Link to comment
Platin Posted August 24, 2015 Author Share Posted August 24, 2015 Creo que esto no tiene ningun sentido pero es lo unico que veo de mas, en mi criterio 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
Pipee20k Posted August 24, 2015 Share Posted August 24, 2015 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
Platin Posted August 24, 2015 Author Share Posted August 24, 2015 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
UserToDelete Posted August 24, 2015 Share Posted August 24, 2015 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
Platin Posted August 24, 2015 Author Share Posted August 24, 2015 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: Asi que lo pude solucionar. Gracias por todo. Link to comment
Tomas Posted August 25, 2015 Share Posted August 25, 2015 Postea la función en la que se encuentra el trigger (server) y la función a la que llama (client). Link to comment
Platin Posted August 25, 2015 Author Share Posted August 25, 2015 Postea la función en la que se encuentra el trigger (server) y la función a la que llama (client). Asi que lo pude solucionar.Gracias por todo. Ya esta hecho, gracias igual. Link to comment
alex17 Posted August 25, 2015 Share Posted August 25, 2015 seria bueno que digas cual fue el erro y como lo solucionaste así otra persona con el mismo problema pueda verlo Link to comment
Platin Posted August 25, 2015 Author Share Posted August 25, 2015 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 Link to comment
Tomas Posted August 25, 2015 Share Posted August 25, 2015 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
Recommended Posts