Anzo Posted July 20, 2016 Share Posted July 20, 2016 Estoy haciendo un script para hacer misiones que al escribir /si te manda a la dimensión 2 para hacer la misión, mi preguntas es, ¿se puede hacer que los jugadores no se puedan ver en esa dimensión? Lo que quiero es que se pueda hacer la misión sin que los demas jugadores te molesten. Link to comment
Discord Moderators AlexTMjugador Posted July 20, 2016 Discord Moderators Share Posted July 20, 2016 No se puede hacer lo que propones, aunque teniendo en cuenta que hay 65536 dimensiones diferentes es factible meter a cada jugador en una diferente. En cuanto a posibles objetos que quieras que sean comunes a esas dimensiones, puedes hacer un script que haga coincidir la dimensión de esos objetos con la de cada jugador en el lado del cliente. Link to comment
Anzo Posted July 20, 2016 Author Share Posted July 20, 2016 No se puede hacer lo que propones, aunque teniendo en cuenta que hay 65536 dimensiones diferentes es factible meter a cada jugador en una diferente. En cuanto a posibles objetos que quieras que sean comunes a esas dimensiones, puedes hacer un script que haga coincidir la dimensión de esos objetos con la de cada jugador en el lado del cliente. ¿Y como podría hacer para que al escribir /si te mande a la dim2 pero si un jugador ya esta en esa dim te mande por ejemplo a la 3? ¿Tengo que poner los objetos en todas las dimensiones? La verdad no entendí lo que me dijiste... Link to comment
aka Blue Posted July 21, 2016 Share Posted July 21, 2016 addCommandHandler ( "si", function ( player ) local dimensionActual = getElementDimension ( player ) local sumador_dimensiones = dimensionActual + 1 if dimensionActual < 2 then setElementDimension ( player, 2 ) outputChatBox ( "Ahora estás en la dimensión: 2", player, 0, 255, 0 ) else setElementDimension ( player, tonumber ( sumador_dimensiones ) ) outputChatBox ( "Ahora estás en la dimensión: "..tonumber ( sumador_dimensiones ), player, 0, 255, 0 ) end end ) Link to comment
Anzo Posted July 21, 2016 Author Share Posted July 21, 2016 addCommandHandler ( "si", function ( player ) local dimensionActual = getElementDimension ( player ) local sumador_dimensiones = dimensionActual + 1 if dimensionActual < 2 then setElementDimension ( player, 2 ) outputChatBox ( "Ahora estás en la dimensión: 2", player, 0, 255, 0 ) else setElementDimension ( player, tonumber ( sumador_dimensiones ) ) outputChatBox ( "Ahora estás en la dimensión: "..tonumber ( sumador_dimensiones ), player, 0, 255, 0 ) end end ) Yo lo que quiero es que el primero en aceptar la misión lo mande a la dim2, y si viene otro y acepta lo mande a la dim3, ¿cómo sería? Link to comment
aka Blue Posted July 21, 2016 Share Posted July 21, 2016 Comprueba el número de jugadores que hay en esa dimensión. Link to comment
Anzo Posted July 21, 2016 Author Share Posted July 21, 2016 Comprueba el número de jugadores que hay en esa dimensión. ¿Cómo lo hago ? Link to comment
aka Blue Posted July 21, 2016 Share Posted July 21, 2016 Haces un loop con getElementsByType y compruebas la dimensión de los jugadores local dimension_prohibida = 20 local tabla_jugadores = getElementsByType ( 'player' ) for i=1, #tabla_jugadores do local value = tabla_jugadores[ i ] if getElementDimension ( value ) == dimension_prohibida then outputChatBox ( "Hey, estás en la dimensión prohibida, man", value, 255, 0, 0 ) end end Link to comment
Anzo Posted July 21, 2016 Author Share Posted July 21, 2016 Haces un loop con getElementsByType y compruebas la dimensión de los jugadores local dimension_prohibida = 20 local tabla_jugadores = getElementsByType ( 'player' ) for i=1, #tabla_jugadores do local value = tabla_jugadores[ i ] if getElementDimension ( value ) == dimension_prohibida then outputChatBox ( "Hey, estás en la dimensión prohibida, man", value, 255, 0, 0 ) end end ¿Para qué es lo de dimension_prohibida, sirve para que si un jugador ya esta en la dim2 y viene otro lo mande a la 3? Link to comment
Simple0x47 Posted July 21, 2016 Share Posted July 21, 2016 Podrías emplear la función que ha creado xScatta. function getElementsInDimension(theType,dimension) local elementsInDimension = { } for key, value in ipairs(getElementsByType(theType)) do if getElementDimension(value)==dimension then table.insert(elementsInDimension,value) end end return elementsInDimension end function dimensions() for I = 1, 65535 do local p = getElementsInDimension("player", I) if not p then setElementDimension(source, I) break end end end addCommandHandler("si", dimensions) Ahi tendrías una base, con falta de adaptación a lo que quieres llevar a cabo (el jugador es automaticamente dirigido a la dimensión que se encuentra libre). Link to comment
aka Blue Posted July 21, 2016 Share Posted July 21, 2016 Haces un loop con getElementsByType y compruebas la dimensión de los jugadores local dimension_prohibida = 20 local tabla_jugadores = getElementsByType ( 'player' ) for i=1, #tabla_jugadores do local value = tabla_jugadores[ i ] if getElementDimension ( value ) == dimension_prohibida then outputChatBox ( "Hey, estás en la dimensión prohibida, man", value, 255, 0, 0 ) end end ¿Para qué es lo de dimension_prohibida, sirve para que si un jugador ya esta en la dim2 y viene otro lo mande a la 3? Es solo un ejemplo de código para que te hagas una idea. Link to comment
Anzo Posted July 21, 2016 Author Share Posted July 21, 2016 Haces un loop con getElementsByType y compruebas la dimensión de los jugadores local dimension_prohibida = 20 local tabla_jugadores = getElementsByType ( 'player' ) for i=1, #tabla_jugadores do local value = tabla_jugadores[ i ] if getElementDimension ( value ) == dimension_prohibida then outputChatBox ( "Hey, estás en la dimensión prohibida, man", value, 255, 0, 0 ) end end ¿Para qué es lo de dimension_prohibida, sirve para que si un jugador ya esta en la dim2 y viene otro lo mande a la 3? Es solo un ejemplo de código para que te hagas una idea. Creo que mejor dejo para después esto de la dimensión, por que la verdad no entiendo nada , pero sobre ese código que pusiste, el mensaje solo sale una vez y solo si el jugador esta en la dim 20, ¿cómo puedo hacer que aparezca cada vez que entren a esa dim? creo que no hay ningún evento para detectar si un jugador esta en la dimensión así que no se Link to comment
Simple0x47 Posted July 22, 2016 Share Posted July 22, 2016 Te pase la respuesta a tu duda y ni la usas... Link to comment
Anzo Posted July 22, 2016 Author Share Posted July 22, 2016 Te pase la respuesta a tu duda y ni la usas... Si lo probé, pero no me manda a ninguna dimensión al escribir /si Link to comment
Enargy, Posted July 22, 2016 Share Posted July 22, 2016 Usalo con la función que te hizo Simple01. function dimensions() for I = 1, 65535 do local p = getElementsInDimension("player", I) if #p == 0 then setElementDimension(source, I) break end end end addCommandHandler("si", dimensions) Link to comment
Anzo Posted July 22, 2016 Author Share Posted July 22, 2016 Usalo con la función que te hizo Simple01. function dimensions() for I = 1, 65535 do local p = getElementsInDimension("player", I) if #p == 0 then setElementDimension(source, I) break end end end addCommandHandler("si", dimensions) Gracias, si sirvió. Le pido disculpas a Simple por que el código que me pasó si funciona bien, solo que no me fije bien por que lo que hice fue copiar y pegar sin fijarme si puse algo mal o me faltaba algo, ahora tengo una ultima duda respecto a las dimensiones, cuando el jugador escribe /si lo mandará a la dim1 y si viene otro lo mandará a la 2, por ahí bien, pero la duda es, ¿tengo que poner todos los objetos en en la dim1, 2, 3,etc.. o hay alguna manera más eficiente de hacer esto? Link to comment
Tomas Posted July 23, 2016 Share Posted July 23, 2016 Usalo con la función que te hizo Simple01. function dimensions() for I = 1, 65535 do local p = getElementsInDimension("player", I) if #p == 0 then setElementDimension(source, I) break end end end addCommandHandler("si", dimensions) Gracias, si sirvió. Le pido disculpas a Simple por que el código que me pasó si funciona bien, solo que no me fije bien por que lo que hice fue copiar y pegar sin fijarme si puse algo mal o me faltaba algo, ahora tengo una ultima duda respecto a las dimensiones, cuando el jugador escribe /si lo mandará a la dim1 y si viene otro lo mandará a la 2, por ahí bien, pero la duda es, ¿tengo que poner todos los objetos en en la dim1, 2, 3,etc.. o hay alguna manera más eficiente de hacer esto? Convierte los mapas a script, entonces con un trigger crea los objetos solo para el jugador. Link to comment
Recommended Posts