Jump to content

Ayuda con mi script, funciona pero no del todo


-Gus-

Recommended Posts

bueno, hoy cree un script para modo race DM, que lo que hace es que cuando pongas cierto comando, guarda tu vehiculo actual, posicion, rotacion y velocidad, entonces cuando pones el segundo comando te lleva a ese lugar, con el vehiculo que tenias en ese momento, seria como para ir "guardando" el progreso de la carrera, asi poder testear mapas mas facil y rapido, pero el problema es que, cuando pongo el segundo comando, para volver al punto de "guardado" sale esto:

Race integrity test fail (client): Your vehicle has been destroyed. Please panic.

Race integrity test fail: Invalid vehicle for player **mi nombre**

segun tengo entendido eso pasa cuando el vehiculo de un jugador es destruido, pero yo ya habia sido warpeado a otro vehiculo antes de que este fuera destruido :|

este es el script:

--server side

function getstuff (playerSource) 
  
vehicle = getPedOccupiedVehicle (playerSource)  
--obtener el vehiculo actual del jugador 
  
px,py,pz = getElementPosition (vehicle) 
rx,ry,rz = getElementRotation (vehicle) 
vx,vy,vz = getElementVelocity (vehicle) 
model = getElementModel (vehicle) 
--obtener posicion, rotacion, velocidad y modelo de vehiculo 
  
-- avisarle al jugador que cosas se guardaron 
if (model) then --si se obtuvo un modelo valido entonces... 
outputChatBox ('Model:#AAAAAA '.. model ..'', playerSource, 255, 0, 0, true) 
outputChatBox ('Position:#AAAAAA '.. px .. ', '.. py .. ', '.. pz .. '', playerSource, 255, 0, 0, true) 
outputChatBox ('Rotation:#AAAAAA '.. rx .. ', '.. ry .. ', '.. rz .. '', playerSource, 255, 0, 0, true) 
outputChatBox ('Velocity:#AAAAAA '.. vx .. ', '.. vy .. ', '.. vz .. '', playerSource, 255, 0, 0, true) 
else --pero si no, avisar. 
outputChatBox ("You're not in a vehicle!", playerSource, 255, 0, 0, true) 
end 
end 
  
  
function teleporter (playerSource) 
newvehicle = createVehicle (model,px,py,pz,rx,ry,rz)-- crear un vehiculo con todo lo que se guardo antes 
warpPedIntoVehicle (playerSource, newvehicle) --meter al jugador en ese vehiculo 
  
setElementVelocity (newvehicle,vx,vy,vz) --poner la velocidad guardada  
destroyElement (vehicle) --destruir el vehiculo anterior 
end 
  
-- agregar los comandos 
addCommandHandler ("savepos", getstuff) 
addCommandHandler ("loadpos", teleporter) 

a ver si me pueden ayudar.

Link to comment

Cuando el vehiculo de un jugador se destruye en race, el game mode se da cuenta y deja de funcionar.

local savedPosition = {} 
  
function getstuff (playerSource) 
local vehicle = getPedOccupiedVehicle (playerSource) 
--obtener el vehiculo actual del jugador 
if (vehicle) then --si se obtuvo un vehicle valido entonces... 
    local px,py,pz = getElementPosition (vehicle) 
    local rx,ry,rz = getElementRotation (vehicle) 
    local vx,vy,vz = getElementVelocity (vehicle) 
    local model = getElementModel (vehicle) 
    --obtener posicion, rotacion, velocidad y modelo de vehiculo 
    -- avisarle al jugador que cosas se guardaron 
    savedPosition[playerSource] = {px, py, pz, rx, ry, rz, vx, vy, vz, model} 
    outputChatBox ('Model:#AAAAAA '.. model ..'', playerSource, 255, 0, 0, true) 
    outputChatBox ('Position:#AAAAAA '.. px .. ', '.. py .. ', '.. pz .. '', playerSource, 255, 0, 0, true) 
    outputChatBox ('Rotation:#AAAAAA '.. rx .. ', '.. ry .. ', '.. rz .. '', playerSource, 255, 0, 0, true) 
    outputChatBox ('Velocity:#AAAAAA '.. vx .. ', '.. vy .. ', '.. vz .. '', playerSource, 255, 0, 0, true) 
else --pero si no, avisar. 
    outputChatBox ("You're not in a vehicle!", playerSource, 255, 0, 0, true) 
    end 
end 
  
function teleporter (playerSource) 
local px, py, pz, rx, ry, rz, vx, vy, vz, model = unpack(savedPosition[playerSource]) 
local vehicle = getPedOccupiedVehicle(playerSource) 
if (not vehicle) then return end 
setElementPosition(vehicle, px, py, pz) 
setElementRotation(vehicle, rx, ry, rz) 
setElementModel(vehicle, model) 
setElementVelocity (vehicle,vx,vy,vz) --poner la velocidad guardada 
end 
-- agregar los comandos 
addCommandHandler ("savepos", getstuff) 
addCommandHandler ("loadpos", teleporter) 

Eso deberia guardar los datos en una tabla y luego cargarlos de la misma y cambiar los datos del vehiculo.

Link to comment

modifique el script, hice esto:

--client side

function getstuff (key, keyState) 
  
player = getLocalPlayer () 
vehicle = getPedOccupiedVehicle (player)  
--obtener el vehiculo actual del jugador 
  
px,py,pz = getElementPosition (vehicle) 
rx,ry,rz = getElementRotation (vehicle) 
vx,vy,vz = getElementVelocity (vehicle) 
model = getElementModel (vehicle) 
--obtener posicion, rotacion, velocidad y modelo de vehiculo 
  
if (model) then 
outputChatBox ("#~Position saved Successfully!", 0, 255, 0, true) 
else 
outputChatBox ("#~#FF0000You are not in a vehicle!", 0, 255, 0, true) 
end 
end 
  
function teleporter (key, keyState) 
setElementModel (vehicle, model) 
setElementPosition (vehicle,px,py,pz) 
setElementRotation (vehicle,rx,ry,rz) 
fixVehicle (vehicle) 
addVehicleUpgrade (vehicle, 1010) 
setVehicleFrozen (vehicle, true) 
outputChatBox ("#~Position loaded Successfully!", 0, 255, 0, true) 
end 
function timerf () 
setVehicleFrozen (vehicle, false) 
setElementVelocity (vehicle,vx,vy,vz) 
end 
  
setTimer (timerf, 1000, 1) 
  
end 
  
bindKey ("z", "down", getstuff) 
bindKey ("x", "down", teleporter) 

y funciona bien, pero tengo otro problema, explico:

si yo guardo mi posicion, sigo la carrera normalmente, pero en el trayecto agarro un pickup de "vehiclechange" y despues cargo la posicion, cuando vuelvo a agarrar el pickup ya no funciona.

Link to comment
  • Recently Browsing   0 members

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