From 5367d2811099b5cbb0bedee7719321bf202ef3b7 Mon Sep 17 00:00:00 2001 From: Warmist Date: Sun, 18 Mar 2012 03:02:16 +0200 Subject: [PATCH] few small bugs (embark caste selection) and moved runsaved to non-auto. --- plugins/Dfusion/dfusion.cpp | 15 +++++++++------ plugins/Dfusion/luafiles/embark/init.lua | 12 ++++++++++-- plugins/Dfusion/luafiles/init.lua | 15 +++++++++------ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/plugins/Dfusion/dfusion.cpp b/plugins/Dfusion/dfusion.cpp index 120e3fce6..66e36a830 100644 --- a/plugins/Dfusion/dfusion.cpp +++ b/plugins/Dfusion/dfusion.cpp @@ -152,7 +152,9 @@ command_result lua_run (color_ostream &out, std::vector ¶meter { try{ s.loadfile(parameters[0]); //load file - s.pcall(0,0);// run it + for(size_t i=1;i ¶meter mymutex->unlock(); return CR_OK; } -void RunDfusion(color_ostream &out) +void RunDfusion(color_ostream &out, std::vector ¶meters) { mymutex->lock(); lua::state s=lua::glua::Get(); @@ -176,8 +178,9 @@ void RunDfusion(color_ostream &out) s.getglobal("err"); int errpos=s.gettop(); s.loadfile("dfusion/init.lua"); //load script - - s.pcall(0,0,errpos);// run it + for(size_t i=0;i ¶meters) lua::SetConsole(s,out); s.push(1); s.setglobal("INIT"); - RunDfusion(out); + RunDfusion(out,parameters); return CR_OK; } command_result dfusion (color_ostream &out, std::vector ¶meters) @@ -202,6 +205,6 @@ command_result dfusion (color_ostream &out, std::vector ¶meter lua::SetConsole(s,out); s.push(); s.setglobal("INIT"); - RunDfusion(out); + RunDfusion(out,parameters); return CR_OK; } diff --git a/plugins/Dfusion/luafiles/embark/init.lua b/plugins/Dfusion/luafiles/embark/init.lua index c77d2a7ac..704cfc493 100644 --- a/plugins/Dfusion/luafiles/embark/init.lua +++ b/plugins/Dfusion/luafiles/embark/init.lua @@ -16,7 +16,7 @@ function MakeTable(modpos,modsize,names) if RaceTable[line] == nil then error("Failure, "..line.." not found!") end - print("adding:"..line.." id:"..RaceTable[line]) + --print("adding:"..line.." id:"..RaceTable[line]) engine.pokew(modpos+modsize+count*2,RaceTable[line]) -- add race count = count + 1 end @@ -45,9 +45,16 @@ function embark(names) tofind=addressOf(df.ui,"race_id") loc=offsets.find(stoff,0x0f,0xb7,0x0d,DWORD_,tofind) --MOVZX ECX,WORD PTR[] - + print(string.format("found:%x",loc)) if((loc~=0)and(loc-stoff<1000)) then + loc2=offsets.find(loc,0x83,0xc8,0xff) -- or eax, ffffff (for caste) + if loc2== 0 then + error ("Location for caste nulling not found!") + end + engine.pokeb(loc2,0x90) + engine.pokeb(loc2+1,0x90) + engine.pokeb(loc2+2,0x90) ModData=engine.installMod("dfusion/embark/embark.o","Embark",256) modpos=ModData.pos modsize=ModData.size @@ -66,6 +73,7 @@ function embark(names) engine.pokeb(loc+2,0xe8) engine.poked(loc+3,modpos-loc-7) --engine.pokeb(loc+5,0x90) + SetExecute(modpos) else error("did not find patch location, failing...") diff --git a/plugins/Dfusion/luafiles/init.lua b/plugins/Dfusion/luafiles/init.lua index 3662fec76..200752785 100644 --- a/plugins/Dfusion/luafiles/init.lua +++ b/plugins/Dfusion/luafiles/init.lua @@ -66,15 +66,18 @@ table.insert(plugins,{"triggers","a function calling plug (discontinued...)"}) table.insert(plugins,{"migrants","multi race imigrations"}) table.insert(plugins,{"onfunction","run lua on some df function"})--]=] table.insert(plugins,{"editor","edit internals of df",EditDF}) +table.insert(plugins,{"saves","run current worlds's init.lua",RunSaved}) loadall(plugins) dofile_silent("dfusion/initcustom.lua") -print("Locating saves...") -local str=df.world.cur_savegame.save_dir -print("Current region:"..str) -str="data/save/"..str.."/dfusion/init.lua" -dofile_silent(str) - +function RunSaved() + print("Locating saves...") + local str=df.world.cur_savegame.save_dir + print("Current region:"..str) + str="data/save/"..str.."/dfusion/init.lua" + print("Trying to run:"..str) + dofile_silent(str) +end if not INIT then mainmenu(plugins) end