Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Wszystkie "globalne"


Inix

Rekomendowane odpowiedzi

Opublikowano

Skrypt wypisuje nam wszystkie funkcje, tablice, elementy tablicy, zmienne (string/number). Ogólnie skrypt ma pomóc w zapoznaniu się z globalnymi w naszym silniku (zdaje sobie sprawe, że nie każdy korzysta z source). W praktyce można go użyć np. do wypisania wszystkich funkcji (uaktualniania spisu funkcji z korzsta narzędzie QC).

 

Do questlib.lua dodajemy:

-- by Inix

function in_table(e, t)
    for _, v in pairs(t) do
        if(v == e) then
            return true
        end
    end

    return false
end



function parse_global(t, n, f, ft, wrc)
    ft = ft or ""
    wrc = wrc or {}

    if(wrc.fa) then
        if not in_table(type(t), wrc.fa) then
            return false
        end
    end

    local ret = ""
    if(type(t) == 'table') then
        if(f) then
            ft = ft .. n .. "."
            local i = 0
            for key, value in pairs(t) do
                if(key == "__index" or key == "_G") then break end
                parse_global(value, key, f, ft, wrc)
                i = i + 1
            end
        else
            ret = string.format(wrc['table'] or "%s%s\n", ft, n)
        end
    elseif(type(t) == 'function') then
        ret = string.format(wrc['function'] or "%s%s\n", ft, n)
    elseif(type(t) == 'number') then
        ret = string.format(wrc['number'] or "%s%s\n", ft, n)
    elseif(type(t) == 'string') then
        ret = string.format(wrc['string'] or "%s%s\n", ft, n)
    end

    wrc.writer(ret)
end



local wrc = {
    ['function'] = 'function: %s%s\n',
    ['number'] = 'variable(number): %s%s\n',
    ['string'] = 'variable(string): %s%s\n',
    ['table'] = 'variable(table): %s%s\n'
}

wrc = {} -- uncomment if you need clear output
wrc.fa = {'function', 'table'}
-- writer
wrc.output = io.open("functions.txt", "w+") -- functions.txt = output file
wrc.writer = function(...) wrc.output:write(unpack(arg)) end



for k, v in pairs(_G) do
    if k == "_G" then
        --
    else
        parse_global(v, k, true, nil, wrc)
    end
end

wrc.output:close() -- close output

Skrypt wypisze nam wszystkie funkcje i pseudo metody które są widoczne globalnie do pliku functions.txt (plik będzie znajdował się w folderze z naszym symlinkiem do game).

 

Konfiguracja w skrócie:

wrc = {} - zakomentuj jeżeli potrzebujesz wypisać również typy globalnych
wrc.fa - typy globalnym które mają być brane pod uwagę (function, string, number, table)
wrc.output - plik wyjściowy
wrc.writer - nasz writer, odpowiada za wypisywanie danych

Skrypt będzie sie uruchamiał podczas przeładowywania questlib.lua (przy reload lub uruchamianiu silnika). Możemy go skonfigurować, aby przy każdym uruchamianiu skrypt uaktualniał liste funkcji wystarczy zmienić ścieżkę.

 

Mam nadzieję, że ktoś skorzysta,

pozdrawiam.

 

P.S. Upewnij się, że chmody są poprawne i umożliwiają odczyt oraz zapis.

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

  • 2 tygodnie później...
Opublikowano

Tutaj dałem wszystkie funkcje :)
http://www.mpcforum.pl/topic/1230509-wszystkie-funkcje-questow/

 

Planuje zrobić baze danych z funkcjami z opisem, co zwracają, jakie argumenty przyjmują i jakiego typu.

 

Część już mam od Jacha, cześć już wyjaśniłem ale jeszcze z 180 zostało do przeanalizowania ;)

 

Jak ktoś by był chętny pomóc to proszę pisać na PW. w zamian dostanie w prezencie całą baze :D

8910814572903361049127.png

Opublikowano

Tutaj dałem wszystkie funkcje :)

http://www.mpcforum.pl/topic/1230509-wszystkie-funkcje-questow/

 

Planuje zrobić baze danych z funkcjami z opisem, co zwracają, jakie argumenty przyjmują i jakiego typu.

 

Część już mam od Jacha, cześć już wyjaśniłem ale jeszcze z 180 zostało do przeanalizowania ;)

 

Jak ktoś by był chętny pomóc to proszę pisać na PW. w zamian dostanie w prezencie całą baze :D

 

Jaki to ma związek z tematem? Jak chcesz robić coś takiego to polecam Ci to zrobić kodem, zawsze łatwiej jest zacząć gdy większość argumentów będzie wygenerowane z automatu. Resztę można zawsze dorobić ręcznie.

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...