Rozbijanie drzewek vobów 3269 0

O temacie

Autor Adanos

Zaczęty 31.01.2013 roku

Wyświetleń 3269

Odpowiedzi 0

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Rozbijanie drzewek vobów
2013-01-31, 23:54(Ostatnia zmiana: 2013-01-31, 23:59)
Rozbijanie drzewek vobów (pliki *.zen)

Pomysłodawca programu Caesum, autor ja.

Program służy do rozbijania vobów. Przykład jeśli mamy drzewko(vob) d, a ono ma kilka synów a, b, c (są poziom niżej), to program ustawi je na jednym poziomie a, b, c, d.

Uwaga! Program nie działa, gdy zen składa się z kilku zenów!
Przed uruchomieniem programu należy skopiować wszystko od [VobTree % 0 0] w dół (program nie radzi sobie z binarnymi danymi, które są wyżej).

Wymagania: http://code.google.com/p/luaforwindows/

Uruchomienie programu (o nazwie zen.lua):
1. Jak już zainstalujemy Luę, należy uruchomić skrót na pulpicie.
2. Plik *.zen (wycięty wcześniej z danych binarnych) umieścić również na pulpicie.
3. W konsoli Lua wpisujemy: dofile("zen.lua")
4. Następnie podmien_plik("nazwa_pliku_bez_rozszerzenia")
5. Powinien się nam utworzyć plik nazwa_pliku_bez_rozszerzenia2 Powinien zostać zmieniony nasz plik oraz wyświetlić się informacja, ile zostało podmienionych vobów.

Poniżej kod, zapisać z rozszerzeniem *.lua.
--Adanos 2012-09-11
function podmien_plik(plik)
   nazwa_pliku = plik..'.zen'
   nazwa_pliku_tymczasowego = plik..'2.zen'
   local f = assert(io.open(nazwa_pliku, "r+"))
   local f2 = assert(io.open(nazwa_pliku_tymczasowego, "w+"))
   
   local i = 0
   
   for line in io.lines(nazwa_pliku) do
      wiersz = {}
     
      _, _, wiersz.id, _ = string.find(line, "childs(%d+)=int:(%d+)")
     
      if wiersz.id ~= nil then --childs6=int:0
         f2:write(" childs"..wiersz.id.."=int:0\n")
         i=i+1
      else f2:write(line.."\n")
      end
   end
   
   print("Podmieniono "..i)

   f:close()
   f2:close()
   f = assert(io.open(nazwa_pliku, "w+"))
   
   for line in io.lines(nazwa_pliku_tymczasowego) do
      wiersz = {}

      _, _, wiersz.id, wiersz.liczba = string.find(line, "childs(%w+)=int:(%d+)")
       
      if wiersz.id ~= nil then
         if wiersz.id == '1' then f:write(" childs1=int:"..(i-1).."\n")
         else f:write(" childs"..wiersz.id.."=int:"..wiersz.liczba.."\n")
         end
      else f:write(line.."\n")
      end
   end
   
   f:close()
   os.remove(nazwa_pliku_tymczasowego)
end

Mam nadzieję, że jest to w miarę dobra wersja :D  Program został napisany z rok temu do konkretnego celu i raczej dość dobrze się spisał. Testowano na zenie tworzonym do G2.


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry