[SRC]Indító fordítás

Indította Meli, 2016-09-12, 14:39:35

2016-09-12, 14:39:35 Utolsó szerkesztés: 2016-09-20, 15:12:03 Szerző: Meli
Sziasztok.

Itt a game fájl és a db fordításáról írtam, bár azt a Gyüjtőtémába tettem,
de szerintem ezt nyugodtan nyithatom ide mert sokkal hosszabb leírás :)
Amikor valaki leírást kér forrásos indító lefordításáról, akkor mindenki ezt szokta belinkelni.
Ez a leírás persze hasznos, csak nem részletes, illetve a nagyobb baj pedig az hogy hiányos, nem ír le mindent.

Úgyhogy egy ismerősöm kérésére csinálok egy magyar leírást, ami részletes és nem hiányos, illetve képekkel kiegészítem hogy biztos megértse mindenki.

Sokan azt gondolják BSD-n kell ezt is, de nem, VS-ben kell és picit bonyolultabb a dolog.

Amennyiben nem követed pontosan a leírást, pár dolgot kihagysz,
akkor ne csodálkozz ha a végén nem fog lefordulni.

Kezdjük is el, ami kell:
-A Deves 9.2 vdi amin rajta van a forrás, mert majd le kell tölteni róla a gépre a fájlokat.
-Vagy a kraizy.tgz is jó, amennyiben valakinek az van meg.
-És persze a Visual Studio 2008 + SP1 (Ez a verzió szükséges SP1-el, újabb VS-el nem lesz jó!)
Én személy szerint nCore-ról szedtem le, de azt ugye hiába linkelném, oda csak meghívóval lehet bejutni.
(A deves témába ahol linkeli a VS2008 iso-t az csak az SP1, kicsit csalóka, gondolom meg se nézte Denis :D)

Ha meg van minden, akkor folytassuk:
Hozzunk létre egy VS mappát, én D:\ meghajtón csináltam, de te csinálhatod C-n is.
Ebbe a mappába hozzuk létre a include_stuff illetve lib_stuff mappát.

1. Navigáljunk ftp-n (vagy a kraizy.tgz-ben, ki mit használ) erre az elérésre:
/usr/src/novaline/Srcs/Tools/WorldEditor/extern/include
Az itt található fájlokat töltsd le az include_stuff mappába.

2. Most navigáljunk erre az elérésre:
/usr/src/novaline/Srcs/Tools/WorldEditor/extern/lib
Az itt található fájlokat töltsük le a lib_stuff mappába.

3. Most ide menjünk:
/usr/src/novaline/Srcs/Tools/RAD Game Tools/granny/common
Az itt található granny_common_2_9_12_0_release. zip-et töltsük le a gépünkra, nyissuk meg pl. winrarral és a lib/win32-ben található fájlokat másoljuk ki (tömörítsük ki) a lib_stuff mappába.
Ha kérdezi felülírsz-e egy két fájlt akkor menj az Igen-re!

4. Most navigáljunk ide:
/usr/src/novaline/Srcs/Extern/lib
Minden fájlt töltsünk le a lib_stuff mappába.
Ha kérdezi hogy írjunk felül egy-két fájlt, menj az Igen-re!

5. Most ide menjünk:
/usr/src/novaline/Srcs/Extern/include
Gondolom már kitaláljátok előre mit kell csinálni  :D Töltsünk le minden fájlt az include_stuff mappába.

Ezek csak kiegészítő fájlok voltak, de kellenek a fordításhoz. Most töltsük le magát a kliens forrást.
Navigálj ide: /usr/src/novaline/Srcs/
És az egész Client mappát töltsd le a D:\VS mappádba. (Vagy ha C-re hoztad létre akkor nyilvánvalóan oda)
Egy ideig eltart biztosan, hisz sok fájlról van szó.

Nyissuk meg a VS 2008-at (Amire már rátelepítetted az SP1-et!)
Menjünk a Tools->Options->Project and Solutions->VC++ Directories-hoz.

A 'Show directory for' résznél válasszuk ki az Include-ot, majd tallózuk be az include_stuff mappánkat.
(pipa meletti kis mappa ikonra kattintva teheted meg.)
Illusztráció:


Most pedig válasszuk ki az Library Files-t, majd tallózuk be az lib_stuff mappánkat.
Illusztráció:


Okézzuk le.

Tulajdonképpen a Deves leírásba eddig van leírva, persze ez nem elég még hogy használható legyen,
írom is tovább a szükséges teendőket! :)

Menjünk a D:\VS\Client mappába.
Metin2Client_VC90.sln-t nevezzük át Metin2Client_VC90_2.sln-re, mivel ez nem 2008-as VS-hez való. (2010)
Metin2Client_VC90.sln.old-ot nevezzük át Metin2Client_VC90.sln-re, ez való 2008-ashoz.

Most menjünk a D:\VS\Client\ScriptLib\Python-2.2 mappába, és nyissuk meg a bitset.h-t.
(Akár VS-el, bár én inkább notepad++-ban szeretem átírni az ilyen kis dolgokat)
Ezt:
#define BYTE char
Írd át erre:
#define BYTE unsigned char

Most menjünk a D:\Metin2\VS\Client\UserInterface mappába, itt nyissuk meg a locale_inc.h-t.
Írjuk a végére ezt:
#define ENABLE_DRAGON_SOUL_SYSTEM
#define ENABLE_NEW_EQUIPMENT_SYSTEM


Most menjünk a D:\VS\Client\ScriptLib mappába, itt a PythonLauncher.cpp-t nyissuk meg.

Keressünk ezekre:
PyModule_AddIntConstant(builtins, "TRUE", 1);
PyModule_AddIntConstant(builtins, "FALSE", 0);


Ezek alá adjuk hozzá ezeket:
PyModule_AddIntConstant(builtins, "True", 1);
PyModule_AddIntConstant(builtins, "true", 1);
PyModule_AddIntConstant(builtins, "False", 0);
PyModule_AddIntConstant(builtins, "false", 0);


Nekem így néz ki:
PyObject * builtins = PyImport_ImportModule("__builtin__");
PyModule_AddIntConstant(builtins, "TRUE", 1);
PyModule_AddIntConstant(builtins, "True", 1);
PyModule_AddIntConstant(builtins, "true", 1);
PyModule_AddIntConstant(builtins, "FALSE", 0);
PyModule_AddIntConstant(builtins, "False", 0);
PyModule_AddIntConstant(builtins, "false", 0);
PyDict_SetItemString(m_poDic, "__builtins__", builtins);
Py_DECREF(builtins);


Ez azért kellett hogy ne csak nagybetűvel kezelje a TRUE-t és FALSE-t, hogy később ebből ne adódjon fennakadás  :)

Nos tulajdonképpen már csak a fordítás következik.
Vagy nyissuk meg a D:\VS\Client\Metin2Client_VC90.sln fájlt, vagy Visual Studioban
File->Open->Project/Solution és itt tallózuk be a Metin2Client_VC90.sln-t.
Namost alapfokon debug módra van állítva, de így ha megnyitod a klienset akkor ott lesz egy consol ablak is amit nem szeretünk, szóval állítsuk át Release vagy Distribute módra. Én az utóbbit használom.
Jelüljünk ki mindent oldalt a Solution Explorerben, majd felül ott van hogy Debug, arra kattintsunk rá és válasszuk ki a Distribute-t.

Illusztráció:


Most pedig jön a tényleges fordítás, felül build->build solution
Alul az output ablakban látszik hogy dolgozik, a warning itt sem számít, csak az error.
De ha mindent a leírásom alapján csináltál pontosan akkor nem fogsz error-t kapni.
A végén ilyesmit fogsz látni:


A lefordított bined pedig itt lesz: D:\VS\Client\UserInterface\Distribute\metin2client.exe

A bin revíziója 28249, ez kompatibilis 40k game fájlal.
Persze 40k-s kliensbe kell bele tenni, hogy a root fájlok & kliens item_proto kompatibilisek legyenek ezzel,
pl Disco kliense, vagy Test client für 40250.
Amennyiben Traceback.py hibával nem indul a kliens, cseréld le a lib mappádat és a python22.dll-t erre: katt.


Gy.i.k.
-Ezt kapom vissza fordítás után:

16>fatal error C1900: Il mismatch between 'P1' version '20080116' and 'P2' version '20070207'
16>LINK : fatal error LNK1257: code generation failed

Nem 2008-as VS SP1-ben csinálod. SP1 is kell!

-Nem telepíti az SP1-et, a végén error-t ad ki.
Rendszergazdaként kell indítani a telepítőt.

-Egy CMD ablak jelenik meg a metin mellett amikor elindítom a játékot.
Nem tetted át fordítás előtt Debug módról Distribute módba.

-Egy log ablak fogad indítás után ami "True"/"False"-ot is ír.
Nem szerkesztetted a PythonLauncher.cpp-t ahogy leírtam.
Alapfokon ez az indító csak nagybetűvel kezeli, viszont a kliensben
néhol kisbetűvel is van a python fájlokban.

-Az olyan questekben ahol say_item van, elvan csúszva a kép.
Ezt szerveroldalon kell javítani, a questlib.lua-ban (ami a quest mappában van)
cseréld le a say_item funkciót erre:

function say_item(name, vnum, desc)
say("[INSERT_IMAGE image_type;item|idx;"..vnum.."|title;"..name.."|desc;"..desc.."|index;".. 0 .."|total;".. 1 .."]")
end


By: TheSLZ

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”