Jump to content

[Duda] Insertar en una tabla y después eliminar


aka Blue

Recommended Posts

Buenas. Estoy creando un script y querría saber cómo hacer que al estar 2 jugadores dentro de un marker, les inserte en una especie de tabla y que al estar los dos, les envíe a cada uno a x posición asignada y después les retire de la tabla.

Sé que es algo simple pero es que ahora mismo no me viene a la cabeza ya que nunca trabajé con markers.

Link to comment

algo así talvez te sirva

Cplayer = {} 
  
  function markerJoin(element) 
     if getElementType( element ) == "player" then 
        table.insert(Cplayer, element) 
        if #Cplayer >= 2 then 
           for k, player in ipairs(Cplayer) 
              setElementPosition( player, ....) 
              table.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerHit", root, markerJoin) 
  
  
  function markerleave(element) 
     if getElementType( element ) == "player" then 
        for k, player in ipairs(Cplayer) 
           if player == element then 
              table.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerLeave", root, markerleave) 
  

Link to comment
algo así talvez te sirva
Cplayer = {} 
  
  function markerJoin(element) 
     if getElementType( element ) == "player" then 
        table.insert(Cplayer, element) 
        if #Cplayer >= 2 then 
           for k, player in ipairs(Cplayer) 
              setElementPosition( player, ....) 
              table.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerHit", root, markerJoin) 
  
  
  function markerleave(element) 
     if getElementType( element ) == "player" then 
        for k, player in ipairs(Cplayer) 
           if player == element then 
              table.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerLeave", root, markerleave) 
  

Genial. Pero, ¿no se puede hacer que cada jugador aparezca en un sitio diferente? Por ejemplo, uno en un taller, otro en x lugar...

Link to comment
quieres que lo manden a distintas posiciones , pero a cada jugador mandarlo en especifico a una posición o a cualquiera de los 2 jugadores mandarlo a X posición y al otro a la otra posición ???

Quiero que al haber 2 jugadores en el colshape. Automáticamente les tpeé uno a un lugar y otro a otro. Es que estoy creando como una mini-misión de dos jugadores.

Link to comment

Esto debería de funcionar.

Cplayer = {} 
Posiciones = { 
   {posx = 0, posy = 0, posz = 0, rot = 0},   
   {posx = 0, posy = 0, posz = 0, rot = 0}   
} 
  
  function markerJoin(element) 
     if getElementType( element ) == "player" then 
        table.insert(Cplayer, element) 
        if #Cplayer >= 2 then 
           for k, player in ipairs(Cplayer) 
              local data = Posiciones[k] 
              local x, y, z, rot = data.posx, data.posy, data.posz, data.rot 
              setElementPosition( player, x, y, z) 
              setElementRotation( player, 0, rot, 0) 
              tabel.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerHit", root, markerJoin) 
  
  
  function markerleave(element) 
     if getElementType( element ) == "player" then 
        for k, player in ipairs(Cplayer) 
           if player == element then 
              tabel.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerLeave", root, markerleave) 
  

Link to comment

me equivoque en algo prueba con esto

Cplayer = {} 
Posiciones = { 
   {posx = 0, posy = 0, posz = 0, rot = 0},   
   {posx = 0, posy = 0, posz = 0, rot = 0}   
} 
  
  function markerJoin(element) 
     if getElementType( element ) == "player" then 
        table.insert(Cplayer, element) 
        if #Cplayer >= 2 then 
           for k, player in ipairs(Cplayer) do 
              local data = Posiciones[k] 
              local x, y, z, rot = data.posx, data.posy, data.posz, data.rot 
              setElementPosition( player, x, y, z) 
              setElementRotation( player, 0, rot, 0) 
              tabel.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerHit", root, markerJoin) 
  
  
  function markerleave(element) 
     if getElementType( element ) == "player" then 
        for k, player in ipairs(Cplayer) do 
           if player == element then 
              tabel.remove(Cplayer, k) 
           end 
        end 
     end 
  end 
  addEventHandler("onMarkerLeave", root, markerleave) 
  

Link to comment

Éste es el código que tengo actualmente:

local marcador = createMarker ( -2690.48, -43.25, 3.33, 'cylinder', 3, 255, 255, 255, 40 ) 
  
local tabla = { } 
local posiciones = { 
     
    { posx = -2679.56, posy = -35.57, posz = 4.33, rot = 0 }, 
    { posx = -2691.02, posy = -26.71, posz = 4.33, rot = 0 } 
  
} 
  
function entrar ( element ) 
    if getElementType ( element ) == "player" then 
        table.insert ( tabla, element ) 
        if #tabla >= 2 then 
            for k, player in ipairs ( tabla ) do 
                local data = posiciones[k] 
                local x, y, z, rot = data.posx, data.posy, data.posz, data.rot 
                setElementPosition ( player, x, y, z ) 
                setElementRotation ( player, 0, rot, 0 ) 
                table.remove ( tabla, k ) 
            end 
        else 
            outputChatBox ( "¡Necesitas otro jugador!", player, 255, 0, 0 ) 
        end 
    end 
end 
addEventHandler ( "onMarkerHit", root, entrar ) 
  
function salir ( element ) 
    if getElementType ( element ) == "player" then 
        for k, player in ipairs ( tabla ) do 
            if player == element then 
                table.remove ( tabla, k ) 
            end 
        end 
    end 
end 
addEventHandler( "onMarkerLeave", root, salir ) 

Link to comment

Un consejo.

Cada vez que tengas una duda, no vengas inmediatamente aca al foro para que otro te la solucione, Usa tu cabeza para pensar, No seas dependiente.

Regla fundamental en programación:

Si no te gusta frustrarte ni pensar...

No sirves para la programación

Link to comment

reemplaza esta parte

function entrar ( element ) 
    if getElementType ( element ) == "player" then 
        table.insert ( tabla, element ) 
        if #tabla == 2 then 
            for i = 1, 2  do 
                local data = posiciones[i] 
                local x, y, z, rot = data.posx, data.posy, data.posz, data.rot 
                setElementPosition ( tabla[i], x, y, z ) 
                setElementRotation ( tabla[i], 0, rot, 0 ) 
                table.remove ( tabla, i ) 
            end 
        else 
            outputChatBox ( "¡Necesitas otro jugador!", element, 255, 0, 0 ) 
        end 
    end 
end 
addEventHandler ( "onMarkerHit", root, entrar ) 

Link to comment
Ahora lo pruebo. Gracias ;)

@starkZ Ignoraré totalmente tu comentario porque no tiene nada que ver con éste post.

Vi que eras dueño de un roleplay que no es nada fácil de hacer, Y veo qué no hay duda que tengas que no preguntes, Aún así siendo tan básicas gg Sin ofebner pero no se como fue que scripteastes tantos sistemas o quisas pides ayuda para todo eso en skype.

Link to comment
Ahora lo pruebo. Gracias ;)

@starkZ Ignoraré totalmente tu comentario porque no tiene nada que ver con éste post.

Vi que eras dueño de un roleplay que no es nada fácil de hacer, Y veo qué no hay duda que tengas que no preguntes, Aún así siendo tan básicas gg Sin ofebner pero no se como fue que scripteastes tantos sistemas o quisas pides ayuda para todo eso en skype.

Es que eso ni te incumbe, ¿Cómo te lo explico?. Yo con tablas habré trabajado lo mínimo (para gui's) entonces, es normal que pregunte, ¿o es que no tengo derecho a preguntar?

PD: Pido que no postees más aquí. Si tienes algún problema, tienes los mp's y mi Skype.

PD2: Por cierto. Ya lo solucioné. Gracias Alex por darme la idea. Pueden cerrar ya.

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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