Witajcie Stalkerzy.
Nie wiem od czego zacząć więc zmodyfikowana LUA JIT przyśpiesza działanie skryptów opartych na lua.
Mam wiele pytań co do tego a także sam po części udzielam w tym temacie odpowiedzi.
otóż np jedna sprawa która trochę mnie męczy nowa wersja dll-a zawiera nowo poprawione funkcje typu table.insert, table.remove.
alee..... właśnie ale... natknąłem się na błąd pojawiający się w release_body_manager.script, otóż.... tam gdzie dana z tabelki za pomocą table.remove ma być usuwana nic takiego się nie dzieje.. jakby gra w ogóle nie reagowała na to jakby ta funkcja w ogóle nie istniała napisałem szybko fix na to i działa ale to jest dziwne.
table.remove(self.release_objects_table, pos_in_table)
zastąpiłem
rm_table[#rm_table+1]=pos_in_table_ttr
--table.remove(self.release_objects_table, pos_in_table)
dodałem nową tabelkę która odpowiada za gromadzenie id do usunięcia danych umarlaków ze świata. (rm_table)
dwoma minusami (--) takjaby gra tego nie widzi i zastąpiłem poniżej end
local n=#self.release_objects_table
for i=1,n do
if self.release_objects_table[rm_table[i]] then
self.release_objects_table[rm_table[i]]=nil
end
end
local j=0
for i=1,n do
if self.release_objects_table[i]~=nil then
j=j+1
self.release_objects_table[j]=self.release_objects_table[i]
end
end
for i=j+1,n do
self.release_objects_table[i]=nil
end
co zadziałało identycznie jak to talbe.remove
Tylko dlaczego oryginalne to nie działa skoro powinno
może ja czegoś nie wiem bądź nie załączyłem odpowiednich nowych funkcji.
dziele się z wami taką wiedzą bo może ktoś z was ma takie albo podobne problemy po użyciu tej wersji lua
-----------
druga akcja poniżej w skrypcie jest
local level_id = game_graph():vertex(alife():actor().m_game_vertex_id):level_id()
packet:w_u16(level_id)
i
local level_id = reader:r_u16()
if level_id ~= game_graph():vertex(alife():object(0).m_game_vertex_id):level_id() then
self.release_objects_table = {}
end
obie źle zapisują wszystko i tabelka po przejściu na inny level (poziom/mapę(jak to zwą tam)) nie usuwa się w sensie nie jest wykonana ta klamra
dodatkowo autor ddl-a napisał na forum o zmianę pliku _G.script
i wpisanie do niego nowych wartości
najlepiej gdzieś u góry pliku:
if (jit == nil) then
profiler.setup_hook ()
end
string.gfind = string.gmatch
math.mod = math.fmod
function empty (container)
if (type(container) == "function") then
for i in container do
return (false)
...
string.gfind = string.gmatch
math.mod = math.fmodze względu na to że nowsza lua nie korzysta podobno z tych starszych "wartości".
zapraszam do udzielania się w temacie jak znajdę coś co potrzeba do dodania to na bank to zrobię.