diff --git a/Memory.xml b/Memory.xml index c7a59ca94..7126413b5 100644 --- a/Memory.xml +++ b/Memory.xml @@ -2263,6 +2263,7 @@
+
diff --git a/plugins/Dfusion/dfusion.cpp b/plugins/Dfusion/dfusion.cpp index 59d879a11..f75ce69b2 100644 --- a/plugins/Dfusion/dfusion.cpp +++ b/plugins/Dfusion/dfusion.cpp @@ -77,7 +77,7 @@ DFhackCExport command_result plugin_onupdate ( Core * c ) catch(lua::exception &e) { c->con.printerr("Error OnTick:%s\n",e.what()); - c->con.printerr("%s",lua::DebugDump(lua::glua::Get()).c_str()); + c->con.printerr("%s\n",lua::DebugDump(lua::glua::Get()).c_str()); c->con.msleep(1000); } } @@ -105,7 +105,7 @@ void InterpreterLoop(Core* c) catch(lua::exception &e) { con.printerr("Error:%s\n",e.what()); - c->con.printerr("%s",lua::DebugDump(lua::glua::Get()).c_str()); + c->con.printerr("%s\n",lua::DebugDump(lua::glua::Get()).c_str()); s.settop(0); } con.lineedit(">>",curline,hist); @@ -126,7 +126,7 @@ DFhackCExport command_result lua_run (Core * c, vector & parameters) catch(lua::exception &e) { con.printerr("Error:%s\n",e.what()); - c->con.printerr("%s",lua::DebugDump(lua::glua::Get()).c_str()); + c->con.printerr("%s\n",lua::DebugDump(lua::glua::Get()).c_str()); } } else @@ -151,7 +151,7 @@ DFhackCExport command_result dfusion (Core * c, vector & parameters) catch(lua::exception &e) { con.printerr("Error:%s\n",e.what()); - c->con.printerr("%s",lua::DebugDump(lua::glua::Get()).c_str()); + c->con.printerr("%s\n",lua::DebugDump(lua::glua::Get()).c_str()); } s.settop(0);// clean up mymutex->unlock(); diff --git a/plugins/Dfusion/luafiles/common.lua b/plugins/Dfusion/luafiles/common.lua index 21e89fe20..912862d56 100644 --- a/plugins/Dfusion/luafiles/common.lua +++ b/plugins/Dfusion/luafiles/common.lua @@ -321,7 +321,9 @@ function findVectors() end function GetRaceToken(p) --actually gets token... - local vec=engine.peek(offsets.getEx('CreatureGloss'),ptr_vector) + print(string.format("%x vs %x",offsets.getEx('CreatureGloss'),VersionInfo.getGroup("Materials"):getAddress("creature_type_vector"))) + --local vec=engine.peek(offsets.getEx('CreatureGloss'),ptr_vector) + local vec=engine.peek(VersionInfo.getGroup("Materials"):getAddress("creature_type_vector"),ptr_vector) --print("Vector ok") local off=vec:getval(p) --print("Offset:"..off) diff --git a/plugins/Dfusion/luafiles/embark/plugin.lua b/plugins/Dfusion/luafiles/embark/plugin.lua index d9bd4ffb5..db65da78c 100644 --- a/plugins/Dfusion/luafiles/embark/plugin.lua +++ b/plugins/Dfusion/luafiles/embark/plugin.lua @@ -41,7 +41,7 @@ function embark(names) count=MakeTable(modpos,modsize,names) --just remake tables else - tofind=offsets.getEx('CurrentRace') + tofind=VersionInfo.getGroup("Creatures"):getAddress("current_race")--offsets.getEx('CurrentRace') loc=offsets.find(stoff,0xa1,DWORD_,tofind) diff --git a/plugins/Dfusion/luafiles/friendship/patch.lua b/plugins/Dfusion/luafiles/friendship/patch.lua index b11ad41da..6707e4155 100644 --- a/plugins/Dfusion/luafiles/friendship/patch.lua +++ b/plugins/Dfusion/luafiles/friendship/patch.lua @@ -1,6 +1,6 @@ function friendship_in.patch() pos=GetTextRegion().start - local crace=offsets.getEx("CurrentRace") + local crace=add_race --offsets.getEx("CurrentRace") hits={} i=1 repeat diff --git a/plugins/Dfusion/luafiles/friendship/plugin.lua b/plugins/Dfusion/luafiles/friendship/plugin.lua index 2a317afe0..e820a0ccd 100644 --- a/plugins/Dfusion/luafiles/friendship/plugin.lua +++ b/plugins/Dfusion/luafiles/friendship/plugin.lua @@ -40,10 +40,15 @@ end Two more compares are missing. There are calls instead (same function) ]]-- if not(FILE) then -print("race num:"..engine.peekw(offsets.getEx("CurrentRace"))) -print("Your current race is:"..GetRaceToken(engine.peekw(offsets.getEx('CurrentRace')))) -print("If this is wrong please quit now (by ctrl+c)") -io.stdin:read() +--print("race num:"..engine.peekw(offsets.getEx("CurrentRace"))) +--print(string.format("%x vs %x",offsets.getEx("CurrentRace"),VersionInfo.getGroup("Creatures"):getAddress("current_race"))) +add_race=VersionInfo.getGroup("Creatures"):getAddress("current_race") +print("Race num:"..engine.peekw(add_race)) +print("Your current race is:"..GetRaceToken(engine.peekw(add_race))) +print("If this is wrong please type 'q'") +if(io.stdin:read()=='q') then + return +end end friendship_in={} dofile("dfusion/friendship/install.lua") diff --git a/plugins/Dfusion/src/lua_VersionInfo.cpp b/plugins/Dfusion/src/lua_VersionInfo.cpp index 9ee67c53e..538de7360 100644 --- a/plugins/Dfusion/src/lua_VersionInfo.cpp +++ b/plugins/Dfusion/src/lua_VersionInfo.cpp @@ -9,46 +9,47 @@ OffsetGroup::OffsetGroup(lua_State *L,int id):tblid(id) int OffsetGroup::getOffset(lua_State *L) { lua::state st(L); - int32_t ret=p->getOffset(st.as(2)); + int32_t ret=p->getOffset(st.as(1)); st.push(ret); return 1; } int OffsetGroup::getAddress(lua_State *L) { lua::state st(L); - uint32_t ret=p->getAddress(st.as(2)); + uint32_t ret=p->getAddress(st.as(1)); st.push(ret); return 1; } int OffsetGroup::getHexValue(lua_State *L) { lua::state st(L); - uint32_t ret=p->getHexValue(st.as(2)); + uint32_t ret=p->getHexValue(st.as(1)); st.push(ret); return 1; } int OffsetGroup::getString(lua_State *L) { lua::state st(L); - std::string ret=p->getString(st.as(2)); + std::string ret=p->getString(st.as(1)); st.push(ret); return 1; } int OffsetGroup::getGroup(lua_State *L) { lua::state st(L); - DFHack::OffsetGroup* t= p->getGroup(st.as(2)); - st.getglobal("OffsetGroup"); + DFHack::OffsetGroup* t= p->getGroup(st.as(1)); + st.getglobal("OffsetGroup"); st.getfield("new"); + st.getglobal("OffsetGroup"); st.pushlightuserdata(t); - st.pcall(1,1); + st.pcall(2,1); return 1; } int OffsetGroup::getSafeOffset(lua_State *L) { lua::state st(L); int32_t out; - bool ret=p->getSafeOffset(st.as(2),out); + bool ret=p->getSafeOffset(st.as(1),out); st.push(ret); st.push(out); return 2; @@ -57,7 +58,7 @@ int OffsetGroup::getSafeAddress(lua_State *L) { lua::state st(L); uint32_t out; - bool ret=p->getSafeAddress(st.as(2),out); + bool ret=p->getSafeAddress(st.as(1),out); st.push(ret); st.push(out); return 2; @@ -66,7 +67,7 @@ int OffsetGroup::PrintOffsets(lua_State *L) { lua::state st(L); std::string output; - output=p->PrintOffsets(st.as(2)); + output=p->PrintOffsets(st.as(1)); st.push(output); return 1; } @@ -88,10 +89,11 @@ int OffsetGroup::getParent(lua_State *L) { lua::state st(L); DFHack::OffsetGroup* t= p->getParent(); - st.getglobal("OffsetGroup"); + st.getglobal("OffsetGroup"); st.getfield("new"); + st.getglobal("OffsetGroup"); st.pushlightuserdata(t); - st.pcall(1,1); + st.pcall(2,1); return 1; } } @@ -324,21 +326,23 @@ static int __lua_getHexValue(lua_State *S) static int __lua_getGroup(lua_State *S) { lua::state st(S); - DFHack::OffsetGroup* t= DFHack::Core::getInstance().vinfo->getGroup(st.as(2)); + DFHack::OffsetGroup* t= DFHack::Core::getInstance().vinfo->getGroup(st.as(1)); st.getglobal("OffsetGroup"); st.getfield("new"); + st.getglobal("OffsetGroup"); st.pushlightuserdata(t); - st.pcall(1,1); + st.pcall(2,1); return 1; } static int __lua_getParent(lua_State *S) { lua::state st(S); DFHack::OffsetGroup* t= DFHack::Core::getInstance().vinfo->getParent(); - st.getglobal("OffsetGroup"); + st.getglobal("OffsetGroup"); st.getfield("new"); + st.getglobal("OffsetGroup"); st.pushlightuserdata(t); - st.pcall(1,1); + st.pcall(2,1); return 1; } static int __lua_getSafeOffset(lua_State *S)