por blas_dani » Dom Jun 28, 2009 12:22 pm
Hola:
Efectivamente Javier.
Por lo que he estado viendo, el 'core' del simulador trae unas definiciones genéricas de simulación tanto de vapor, como diesel o eléctrica. Añadir extras a la simulación de un vehiculo implica 'alimentar' el script lua de dicho vehiculo con funciones extra.
Si os fijais, dada una loco, por ejemplo la v200, los script lua que trae son:
a) Carpeta simulation:
------------------------------------------------------------
-- Simulation file for the DB V200
------------------------------------------------------------
------------------------------------------------------------
-- Setup
------------------------------------------------------------
-- Called when the engine script is initialised
------------------------------------------------------------
function Setup ()
end
------------------------------------------------------------
-- Update
------------------------------------------------------------
-- Called every frame to update the simulation
------------------------------------------------------------
-- Parameters:
-- inteval = time since last update
------------------------------------------------------------
function Update (inteval)
end
b) Carpeta engine:
------------------------------------------------------------
-- OnControlValueChange
------------------------------------------------------------
-- Called when a cab control is modified
------------------------------------------------------------
-- Parameters:
-- name = Name of the control
-- index = Index of the control
-- value = Modified control value
------------------------------------------------------------
function OnControlValueChange ( name, index, value )
if Call( "*:ControlExists", name, index ) then
Call( "*:SetControlValue", name, index, value );
end
end
Cualquier extra que se añada al 'core' del juego debe estar definido aquí.
Existen una serie de variables y funciones predefinidas que entiendo que se redefinen en estos scripts, y creo que si en uno de ellos definimos una función 'x' se ejecuta ésta y no la que viene por defecto en el juego.
Por ejemplo, para la class 166, en el lua situado en simulation, el autor hace un ajuste de la función de arranque/parada del motor:
-- My engine start/stop.
if Call( "*:GetControlValue", "EngineStarter", 0) == 1 then
Call( "*:SetControlValue", "Startup", 0, 1 )
Call( "*:SetControlValue", "EngineStart", 0, 1 )
end
if Call( "*:GetControlValue", "EngineStopper", 0) == 1 then
Call( "*:SetControlValue", "Startup", 0, -1 )
Call( "*:SetControlValue", "EngineStop", 0, 1 )
end
Se pueden observar unas funciones del lenguaje lua estándard (obtener y dar un valor a una variable) y unas variables "EngineStarter" "EngineStopper" "Startup" "EngineStart" "EngineStop" que son propias del juego.
En fin, esto va más alla de los .eng y .wag de msts... Seguiremos investigando, pero, como dice Javier, sin info de las variables y funciones propias del simulador poco podremos hacer, salvo aprender de los que van aportando cosas...
Saludos.