Ya doy paso de Tomb Raider I a Tomb Raider II. En este post voy a comentar como se puede disfrutar de Tomb Raider II con Opentomb en Linux y luego un par de alteraciones que se le pueden hacer al juego y que no he nombrado en anteriores posts.
Vamos a darle duro pues.
Descargar e instalar el tinglado
Se puede hacer como se relata en los siguiente pasos. No obstante si no te funciona Opentomb (el binario precompilado que lleva el tar.gz en su interior) puedes compilarte tu propio Opentomb siguiendo los pasos que comentamos en esta otra entrada:
$ mkdir -p ~/opentomb/tomb2
$ cd ~/opentomb/tomb2
$ wget -q "http://fanta.56k.es/200-GM-Tomb_Raider_classic/1997-Tomb_Raider_II/tomb_raider_2-opentomb-linux.tar.gz"
$ tar xfvz tomb_raider_2-opentomb-linux.tar.gz
$ mv tomb_raider_2/* .
$ rm -rf tomb_raider_*
$ ./OpenTomb
Cambiar el tamaño de por ejemplo una llave
Con la función setEntityScaling vamos a poder cambiar el tamaño en x,y,z de algunos objetos del juego.
En el caso de Tomb Raider II primer nivel (la muralla china) se puede cambiar el tamaño de la primera llave que encontraremos así:
print(getEntityScaling(0x11));
setEntityScaling(0x11, 3.0, 3.0, 3.0);
print(getEntityScaling(0x11));
Recordemos de anteriores posts que eso se puede añadir sin problemas al autoexec.lua y se ejecutará al iniciar opentomb.
Un autoexec.lua con algunas funciones
Si se desea empezar a trastear lo mismo vienen bien estas 3 funciones ( p2l, tohex y getPositionAllEntities ) que dejo en este autoexec.lua completo:
-- LUA autoexec config file
-- CVAR's section. here you can create and delete CVAR's
if(cvars == nil) then
cvars = {};
end;
-- CVAR's section. here you can create and delete CVAR's
cvars.show_fps = 0;
cvars.free_look_speed = 2500;
-- FUNCTIONS
function p2l(id) -- position to log
logPos = {getEntityPos(id)}
print(id, logPos[1], logPos[2], logPos[3])
local file = io.open( "temporalData.log", "a" );
file:write(id..";"..logPos[1]..";"..logPos[2]..";"..logPos[3]);
file:write("\n");
file:close();
end
function tohex(num)
local charset = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}
local tmp = {}
repeat
table.insert(tmp,1,charset[num%16+1])
num = math.floor(num/16)
until num==0
return table.concat(tmp)
end
function getPositionAllEntities ()
for valor = 1,254,1
do
print("0x"..tohex(valor)); -- print position on console
p2l("0x"..tohex(valor)); -- write position into logfile
end
end
-- AUTOEXEC LINES
setLanguage("english");
setGravity(0, 0, -5700.0);
mlook(0);
freelook(0);
cam_distance(1024.0);
setCameraViewDistance(32768);
noclip(0);
loadMap(base_path .. "data/tr2/data/WALL.TR2", 1, 0);
getPositionAllEntities();
Obtener el ID y posición de algunas entidades del nivel
Con esas funciones (en concreto con getPositionAllEntities) vamos a poder hacer cosas como estas:
getPositionAllEntities();
Nos dejará un archivo llamado temporalData.log con valores separados por «;» de las posiciones de las diferentes entidades.
Ejemplo al que he añadido algo de información:
Si deseamos obtener solamente la posición de una entity en el archivo de log se puede hacer así:
p2l("0x11");
p2l (position to log) mandará al iniciar Opentomb la posición de 0x11 al log. Lo añadirá al final del archivo.
Y eso es todo lo que quería compartir en esta entrada.
En futuras entradas iremos probando Tomb Raider III y algo que podamos alterar que no esté ya comentado.
Saludos cordiales.
Que maravilla, tengo que probarlo 🙂
Es una maravilla para alterar los juegos y ver como está construido.
Gracias por el prime ! 😛