Jump to content

Una pregunta


Anzo

Recommended Posts

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

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
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? xD

La verdad no entendí lo que me dijiste...

Link to comment
  
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
  
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

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
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

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
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
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 xD, 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

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
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
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
  • Recently Browsing   0 members

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