Jump to content

Escribir la posición de jugador en .txt


vallejo

Recommended Posts

function createPosition(player) 
    local x, y, z = getElementPosition(player) 
    local rx, ry, rz = getElementRotation(player) 
    local interior, dimension = getElementInterior(player), getElementDimension(player) 
    local position = "posX = " .. x .. ", posY = " .. y .. ", posZ = ".. z .. ", rotX = ".. rx .. ", rotY = ".. ry .. ", rotZ = " .. rz .. ", Interior = " .. interior .. ", Dimension = ".. dimension .. "\n" 
    if fileExists ( "positions.txt" ) then 
        local file = fileOpen("positions.txt") 
        fileSetPos ( file, fileGetSize ( file ) ) 
        fileWrite(file, position) 
        fileClose(file) 
    else 
        local file = fileCreate("positions.txt") 
        fileWrite(file, position) 
        fileClose(file) 
    end 
end 

Solo tienes que hacer algo tal que asi

createPosition(jugador) 

No lo he probado pero debería de funcionar!

Link to comment

Ahora quiero extraer los datos del archivo y almacenarlos en una tabla.

  
marcadores ={} 
  
function LeerTxt(Player) 
    local hFile = fileOpen("posicion.txt", true)        
if hFile then                                   
    local buffer 
                  
        buffer = fileRead(hFile, 10000)         -- ... read the next 500 bytes... 
        for i, #buffer do 
    marcadores[i] = split(valor, ",") 
        outputConsole(marcadores[i], Player)   
end 
                        -- ... and output them to the console 
     
    fileClose(hFile)                           -- close the file once we're done with it 
else 
    outputConsole("Unable to open test.txt") 
end 
end 

Link to comment
si funciona, lo que busco es que cuando yo ponga un marker tome la posición mia y luego la escriba y genere el marcador en esa posición pero obviamente la posición la quiero guardar en el .txt y extraerla de hay.

usa onMarkerHit y cuando entres tomas la posición del player, puedes usar la función de Arsilex para hacer eso.

Link to comment

Mira lo q tengo hasta el momento, solamente me crea la primera posición que tomo y de repeso no me muestra la GUI:

marcadores ={}   
             
function Marcador(thePlayer) 
    triggerClientEvent(thePlayer, "mostrarPanel", thePlayer) -- Utilizamos un evento Client  
end 
  
----------Crear Marcador y comprobamos si es administrador--------------------- 
function crearMarcador(thePlayer, cmd) 
local obtCuent = getAccountName(getPlayerAccount(thePlayer)) -- Obtenemos el nombre de la cuenta 
    if isObjectInACLGroup("user."..obtCuent, aclGetGroup("Admin")) then -- Comparamos si esta en el grupo de administradores 
    LeerTxt() 
        for i=1, #marcadores do  
            local x, y, z  = unpack(marcadores) --tipo, tamano, r, g, b, a 
            local marc = createMarker( x, y, z, "cylinder", 2, 0 ,255, 0, 155, root )  
            addEventHandler("onMarkerHit", marc, Marcador) --Llamamos la funcion Marcador cuando un jugador toca el marker 
        end 
    end 
end 
addEvent("p", true) 
addEventHandler("p", root, crearMarcador) 
addCommandHandler("crea", crearMarcador) 
  
function crearTxt(thePlayer) ------------------- Creamos el archivo y lo escribimos ----------------------------------   
    local x, y, z = getElementPosition(thePlayer) -- Obtenemos la posición del jugador 
    local position = math.floor(x) .. ", " .. math.floor(y) ..", ".. math.floor(z-1) ..",\r\n"  -- Convertimos a enteros 
  
    if fileExists ( "posicion.txt" ) then 
        local file = fileOpen("posicion.txt") 
        fileSetPos ( file, fileGetSize ( file ) ) 
        fileWrite(file, position) 
        fileClose(file) 
    else 
        local file = fileCreate("posicion.txt") 
        fileWrite(file, position) 
        fileClose(file) 
    end 
end 
addCommandHandler("c", crearTxt) 
  
function LeerTxt(Player) 
    local hFile = fileOpen("posicion.txt", true) 
     
    if hFile then                                   
        local buffer        
        buffer = fileRead(hFile, 10000)      
        strtable = split(buffer, ",")         
        for i = 1, #strtable do 
            marcadores[i] = tostring(strtable[i]) 
            outputChatBox("test"..marcadores[i], Player)     
        end      
        fileClose(hFile)                          
    else 
        outputConsole("Unable to open test.txt") 
    end 
end 
  
  
  
  

Link to comment
marker = {} 
  
function Marcador(thePlayer) 
    triggerClientEvent(thePlayer, "mostrarPanel", thePlayer) -- Utilizamos un evento Client  
end 
  
----------Crear Marcador y comprobamos si es administrador--------------------- 
function crearMarcador(thePlayer, cmd) 
local obtCuent = getAccountName(getPlayerAccount(thePlayer)) -- Obtenemos el nombre de la cuenta 
    if isObjectInACLGroup("user."..obtCuent, aclGetGroup("Admin")) then -- Comparamos si esta en el grupo de administradores 
        local marcadores = LeerTxt(thePlayer) 
        for i = 1, #marcadores do  
            local x, y, z = unpack(marcadores[i]) --tipo, tamano, r, g, b, a 
            if not marker[i] then 
                marker[i] = createMarker(x, y, z, "cylinder", 2, 0 ,255, 0, 155, root ) 
                addEventHandler("onMarkerHit", marker[i], Marcador) --Llamamos la funcion Marcador cuando un jugador toca el marker 
            end 
        end 
    end 
end 
addEvent("p", true) 
addEventHandler("p", root, crearMarcador) 
addCommandHandler("crea", crearMarcador) 
  
function crearTxt(thePlayer) ------------------- Creamos el archivo y lo escribimos ----------------------------------  
    local x, y, z = getElementPosition(thePlayer) -- Obtenemos la posición del jugador 
    local position = tostring(x) .. ", " .. tostring(y) ..", ".. tostring(z-1) .."\n" 
  
    if fileExists ( "posicion.txt" ) then 
        local file = fileOpen("posicion.txt") 
        fileSetPos ( file, fileGetSize ( file ) ) 
        fileWrite(file, position) 
        fileClose(file) 
    else 
        local file = fileCreate("posicion.txt") 
        fileWrite(file, position) 
        fileClose(file) 
    end 
end 
addCommandHandler("c", crearTxt) 
  
function LeerTxt(Player) 
    local marcadores = {} 
    local hFile = fileOpen("posicion.txt", true) 
    
    if hFile then                                   
        buffer = fileRead(hFile, fileGetSize(hFile))     
        strtable = split(buffer, "\n")         
        for i = 1, #strtable do 
            local x = tonumber(gettok(strtable[i], 1, ",")) 
            local y = tonumber(gettok(strtable[i], 2, ",")) 
            local z = tonumber(gettok(strtable[i], 3, ",")) 
            marcadores[i] = {x, y, z} 
        end     
        fileClose(hFile) 
        return marcadores 
    else 
        outputConsole("Unable to open test.txt") 
    end 
     
    return false 
end 

Link to comment
marker = {} 
  
function Marcador(thePlayer) 
    triggerClientEvent(thePlayer, "mostrarPanel", thePlayer) -- Utilizamos un evento Client  
end 
  
----------Crear Marcador y comprobamos si es administrador--------------------- 
function crearMarcador(thePlayer, cmd) 
local obtCuent = getAccountName(getPlayerAccount(thePlayer)) -- Obtenemos el nombre de la cuenta 
    if isObjectInACLGroup("user."..obtCuent, aclGetGroup("Admin")) then -- Comparamos si esta en el grupo de administradores 
        local marcadores = LeerTxt(thePlayer) 
        for i = 1, #marcadores do  
            local x, y, z = unpack(marcadores[i]) --tipo, tamano, r, g, b, a 
            if not marker[i] then 
                marker[i] = createMarker(x, y, z, "cylinder", 2, 0 ,255, 0, 155, root ) 
                addEventHandler("onMarkerHit", marker[i], Marcador) --Llamamos la funcion Marcador cuando un jugador toca el marker 
            end 
        end 
    end 
end 
addEvent("p", true) 
addEventHandler("p", root, crearMarcador) 
addCommandHandler("crea", crearMarcador) 
  
function crearTxt(thePlayer) ------------------- Creamos el archivo y lo escribimos ----------------------------------  
    local x, y, z = getElementPosition(thePlayer) -- Obtenemos la posición del jugador 
    local position = tostring(x) .. ", " .. tostring(y) ..", ".. tostring(z-1) .."\n" 
  
    if fileExists ( "posicion.txt" ) then 
        local file = fileOpen("posicion.txt") 
        fileSetPos ( file, fileGetSize ( file ) ) 
        fileWrite(file, position) 
        fileClose(file) 
    else 
        local file = fileCreate("posicion.txt") 
        fileWrite(file, position) 
        fileClose(file) 
    end 
end 
addCommandHandler("c", crearTxt) 
  
function LeerTxt(Player) 
    local marcadores = {} 
    local hFile = fileOpen("posicion.txt", true) 
    
    if hFile then                                   
        buffer = fileRead(hFile, fileGetSize(hFile))     
        strtable = split(buffer, "\n")         
        for i = 1, #strtable do 
            local x = tonumber(gettok(strtable[i], 1, ",")) 
            local y = tonumber(gettok(strtable[i], 2, ",")) 
            local z = tonumber(gettok(strtable[i], 3, ",")) 
            marcadores[i] = {x, y, z} 
        end     
        fileClose(hFile) 
        return marcadores 
    else 
        outputConsole("Unable to open test.txt") 
    end 
     
    return false 
end 

Gracias si funciono, pero quiero saber como hago para que no tenga necesidad de usar el comando si no que cuando reinicie el script automáticamente me salgan los marker, trate de implementar
addEventHandler ( "onResourceStart", getRootElement(), NameFunction ) 

pero no me funciona genera error en el 2do argumento.

Link to comment
  • Recently Browsing   0 members

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