Nowe posty

Autor Wątek: Skrypt językowy w M&B Warband - The Last Day.  (Przeczytany 1257 razy)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 226
    • Zobacz profil
Skrypt językowy w M&B Warband - The Last Day.
« dnia: 2017-01-23, 18:00:32 »
Witam!
Posiadam natywną wersję Mount and Blade Warband i od pewnego czasu gram w modyfikację The Last Day https://tldmod.github.io/.
Projekt jest nadal rozwijany, a jeżeli nie to publikowane są do niego poprawki (nightly patch).
W najnowszym z 22.01.2017r. w katalogu z plikami językowymi znalazłem ciekawy README-linux:
# Open terminal and follow the instruction to build updated locale files for TLD

# Install transifex-client and luajit packages, for example on debian,ubuntu and derivates do the following command:
sudo apt-get install transifex-client luajit

# Create transifex config
gedit ~/.transifexrc # Copy the following lines and replace username and password
[https://www.transifex.com]
hostname = https://www.transifex.com
password = p@ssword
token =
username = user

# Enter in the folder of this README with cd command and do the follow command:
sh tx.sh

# Now you have the updated languages files in the their folders (it,fr,es ecc..)
Jest to ukłon w stronę użytkowników Linuksa.
Niestety nie znam się na skryptach i nie wiem czy w pliku .transifexrc w sekcji USER i PASSWORD mam wpisać swoje dane.
W tym folderze nie istnieje plik tx.sh lecz tx.lua.
Zawartość tx.lua:
-- http://stackoverflow.com/a/11130774
-- Lua implementation of PHP scandir function
function scandir()
    local ffi = require 'ffi'
   
    local command = {
    Windows = 'dir *.csv /s /b',
       Unix = 'find ./ -name "*.csv"'
    }
   
    -- added *nix compatibility so that Fantu can do things!
    command = (ffi.os == "Windows") and command[ffi.os]
                                     or command['Unix']
   
    local i, t, popen, os = 0, {}, io.popen, ffi.os
    for filename in popen(command):lines() do
        --print(filename)
        i = i + 1
        t[i] = filename
    end
    return t
end

function load(fi)
  local f,x = io.open(fi,'r'),{}
  while 1 do
      local l = f:read()
      if not l then break end
      table.insert( x, (l:gsub(regex[1],regex[2])) )
     
      --Fix the quotes from Transifex, which thinks that we're using Joomla!
      if l:find([["_QQ_"]]) ~= nil then x[#x]=(x[#x]):gsub([["?_QQ_"]],[["]]) end
      --Fix the stubborn /\\ to /\
      if l:find([[/\\]]) ~= nil then x[#x]=(x[#x]):gsub([[/\\]],[[/\]]) end
      --Fix the occasional |" to |
      --x[#x]=(x[#x]):gsub([[|"]],[[|]])

  end
  f:close(); f = io.open(fi,'w')
 
  for _,out in pairs(x) do
    f:write(out.."\n")
  end
 
  f:close()
end


if arg[1] == "convert" then
  regex = {"^([^%|]+)%|([^\n\r]*)","%1  = \"%2\""} print("Converting format...")
else
  regex = {"  %= \"(.*)\"","|%1"} print("Reverting format...")
end

for _,file in pairs( scandir() ) do
  --print('<'..file:match("\\([^\\]+)$")..'>')
  load(file)
end
Więc trochę się w tym pogubiłem.
Proszę o pomoc i sugestie.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2181
  • 1709
    • Zobacz profil
Odp: Skrypt językowy w M&B Warband - The Last Day.
« Odpowiedź #1 dnia: 2017-01-23, 23:52:35 »
Cytuj
Więc trochę się w tym pogubiłem.
Proszę o pomoc i sugestie.
Ale oco Ci chodzi ?  Potrzebne Ci to jest do czegoś ?
- Jeżeli widzisz nie prawidłowości w instrukcji to zgłaszasz autorowi lub developerowi odpowiedzialnemu za tą instrukcje
i znim prowadzisz dyskusje.

Cytuj
Niestety nie znam się na skryptach i nie wiem czy w pliku .transifexrc
Te README które znalazłeś jest instrukcją jak zrobić np. "spolszczenie" do gry.
Pobierasz pliczek, zamieniasz słówka lub dodajesz i wysyłasz spowrotem. ( tyle teorii )

Intsrukcja tylko mówi że
1. Instalujesz transifex-client  i luajit
- Co to jest   transifex-client ?  ( sam nie wiedziałem )
https://en.wikipedia.org/wiki/Transifex
Cytuj
Transifex is a proprietary, web-based translation platform
I podejrzewam że musisz podac dane serwera i konta ( ale serwera, nie uzytkownika ) ) do pliku konfiguracyjnego,
by móc sie zalogować na serwer aby pobierać i wysyłać pliki z językami.
( Wiecej szukaj w dokumentacji transifex-client oraz na stronach gry )
- Co to jest luajit ?
http://luajit.org/luajit.html
Cytuj
LuaJIT is a Just-In-Time Compiler (JIT) for the Lua programming language.
Czyli jest to jakiś rodzaj kompilatora dla sktyptów lua.
Na końcu pisze
Cytuj
Now you have the updated languages files in the their folders
Że po uruchomieniu komendy  " sh tx.sh" masz zaktualizowane języki ...
Ale co to konkretnie robi ? Jak nie przetestujesz albo nie spytasz sie developera to sie nie dowiesz.
Podejrzewam że kompiluje do formatu np. *.mo i możesz tego języka używać w grze, ale nie wiem, tylko zgaduje.

Cytuj
W tym folderze nie istnieje plik tx.sh lecz tx.lua.
Może developer zmienił skrypt i zapomniał zaktualizować README, mozesz mu napisać / przypomnieć.
- Jak uruchomic skrypt lua ?
http://www.thegeekstuff.com/2009/12/lua-hello-world-example-how-to-write-and-execute-lua-program-on-linux-os/
Cytuj
$ lua helloworld
Hello World!

( or )
$ chmod u+x helloworld
$ ./helloworld
Hello World!
Czyli piszesz lua przed nazwą skryptu albo
nadajesz uprawnienia wykonywalnosci ( we własciwosciach pliku też zmienisz )
 i wpisujesz przed nazwą kropkę i ukośnik.  W ten sposób uruchamiasz ten skrypt ( który nie wiadomo co dokładniej i jak robi ).

Translator do pomocy
https://translate.google.pl/

Edit:
No moze troche wiemy co robi skrypt, wyszukuje pliki "*.csv"' i odpowiednio formatuje.
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 226
    • Zobacz profil
Odp: Skrypt językowy w M&B Warband - The Last Day.
« Odpowiedź #2 dnia: 2017-01-24, 12:43:48 »
Cytuj
Ale oco Ci chodzi ?  Potrzebne Ci to jest do czegoś ?
Używając google tłumacza zrozumiałem README odwrotnie.
Tzn. że skrypt będzie aktualizował u mnie język polski w grze.
Wielkie dzięki za wyjaśnienie. ;)