Forum Stalker.pl • Zobacz temat - LUA JIT

LUA JIT

Regulamin forum
Dział "Modyfikacje Gotowe" służy do dyskusji o modyfikacjach, które już są stworzone lub do zadawania pytań na ich temat. Znajdziemy tutaj również linki do ściągnięcia modyfikacji (które powinny, a raczej muszą być w pierwszym poście tematu danej modyfikacji).

Przy zadawaniu pytania związanego z problemem dotyczącym modyfikacji, prosimy o podawanie treści całego loga błędu - koniecznie w tagu [CODE].

Przy cytowaniu plików *.LTX stosować tag [SYNTAX="ini"], przy cytowaniu plików *.script [SYNTAX="lua"] a przy cytowaniu plików *.xml - [SYNTAX="xml"].

Lokalizacja logów:
Windows XP - C:\Documents and Settings\All Users\Moje dokumenty\S.T.A.L.K.E.R. - Zew Prypeci\logs\xray_nazwaużytkownika.log
Windows Vista/7 - C:\Users\Public\Documents\S.T.A.L.K.E.R. - Zew Prypeci\logs\xray_nazwaużytkownika.log
Steam - X:\Program Files (x86)\Steam\SteamApps\common\Stalker Call of Pripyat\_appdata_\logs

Pytania na temat modyfikacji zadajemy w wątku dla niej stworzonym lub tworzymy nowy, jeśli takowego nie ma.

Gdy chcemy założyć nowy wątek, obowiązkowe jest przeczytanie tego tematu.

LUA JIT

Postprzez max1071 w 02 Gru 2021, 08:19

Witajcie Stalkerzy. :D

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.
Kod: [ Pobierz ] [ Ukryj ]
table.remove(self.release_objects_table, pos_in_table)
 

zastąpiłem
Kod: [ Pobierz ] [ Ukryj ]
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
Kod: [ Pobierz ] [ Ukryj ]

        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 :facepalm:
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
Kod: [ Pobierz ] [ Ukryj ]
        local level_id = game_graph():vertex(alife():actor().m_game_vertex_id):level_id()
        packet:w_u16(level_id)
 

i
Kod: [ Pobierz ] [ Ukryj ]
        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:
Kod: [ Pobierz ] [ Ukryj ]
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.fmod

ze 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ę.

Za ten post max1071 otrzymał następujące punkty reputacji:
Positive Mruk.
Awatar użytkownika
max1071
Stalker

Posty: 135
Dołączenie: 04 Gru 2010, 13:07
Ostatnio był: 09 Cze 2023, 20:21
Frakcja: Wolność
Ulubiona broń: TRs 301
Kozaki: 24

Reklamy Google

Powróć do Zew Prypeci

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 10 gości