[TUT]Windows Szerver Beüzemelés

Indította 5310pati, 2016-01-15, 18:34:45

2016-01-15, 18:34:45 Utolsó szerkesztés: 2016-01-24, 08:59:51 Szerző: 5310pati
Sziasztok.

Ebben a témában a Windowson futtatható szerver beüzemeléséről fogok írni.
A köszönet Bélát illeti, nekem is ő mutatta meg, én most csak leírom, hogy hogyan is kell.
Kezdőknek ajánlom ezeket a nagyszerű témákat melyeket SLZ írt:
A Forrásról
Pár módosítás
Indító fordítás

Amire szükség lesz:
-Forrásfájlok - Server és Extern mappa
-Szerverfájl - game és mysql
-xampp - adatbázishoz
-Navicat - ez alap adatbáziskezelőnek ugye :D
-Visual Studio - én a 2013-ast ajánlom, de 2008 is jó hozzá

Kezdjünk is hozzá.

Forrás

Nyissátok meg a forrásfájloknál található m2server.2008.sln fájlt. (common, db, game mappák mellett van)
VS indulásakor előjön egy ablak: Review Project And Solution Changes
Erre nyomjatok "OK"-ot. Majd előjön egy újabb ablak: Visual C++ Project
Ezt minden projectnél előhozza, így pipáljátok ki a checkboxot, és nyomjatok a "No"-ra, így többször már nem jön elő az ablak.
Ezután elkezdi betölteni a projecteket, majd ismét egy ablak tárul elénk: Source Control - Unable to Access Database
Alapból az első lehetőség van kiválasztva ami jó is, csak nyomjatok "OK"-ot.
Ha ez megvolt, a böngészőben megnyitja az UpgradeLog-ot, ami ha jól sikerült az Oweriew táblázatban az Errors-nál mindenhol 0 szerepel.

Ha végzett a VS, nyissátok meg a game/config.cpp-t és
char * netip = inet_ntoa(sai->sin_addr);

if (!strncmp(netip, "192.168", 7))

írjátok át erre:
char * netip = inet_ntoa(sai->sin_addr);

if (!strncmp(netip, "000.000", 7))


Ha ez megvolt jöhetnek is a projectek beállításai.
Nézzétek át az összes project tulajdonságát, és ellenőrizzétek hogy a Platform Toolset "Vistual Studio 2013 v120" legyen.
Ezt úgy tudjátok, hogy jobbklikk a projecten->Properties és ott található.
Akinek v140-en van alapból vagy máson az állítsa át "Vistual Studio 2013 v120"-ra.
Majd a C/C++ -> General-nál az Additional Include Directories így nézzen ki az egyes projecteknél:
Jobb oldalt katt a nyílra majd Edit
libgame:
$(ProjectDir)include
$(ProjectDir)../../Extern/include


lblua:
$(ProjectDir)include

libpoly:
$(ProjectDir)../../Extern/include

libserverkey:
../../Extern/openssl/include

libsql:
$(ProjectDir)../libmysql/6.0.2/win32
$(ProjectDir)../../Extern/include


libthecore:
$(ProjectDir)include
$(ProjectDir)../../Extern/include


db:
$(ProjectDir)../../libmysql/6.0.2/win32
$(ProjectDir)../../../Extern/include


game:
$(ProjectDir)
$(ProjectDir)../../liblua/include
$(ProjectDir)../../libmysql/6.0.2/win32
$(ProjectDir)../../libdevil/
$(ProjectDir)../../libxtrap/include
$(ProjectDir)../../../Extern/include
$(ProjectDir)../../../Extern
$(ProjectDir)../../libserverkey
$(ProjectDir)../../../Extern/openssl/include


és végül
qc:
$(ProjectDir)
$(ProjectDir)../../../liblua/include
$(ProjectDir)../../../../Extern/include


Ha ezek közül valamelyik hiányzik, adjátok hozzá.

Továbbá a game->Linker->Additional Library Directories-hoz addjátok hozzá ezt a 2-t:
$(SolutionDir)../extern/lib
$(SolutionDir)../Extern\openssl\lib


A lényeg, hogy az említett Extern mappa, a m2server.2008.sln fájltól egy mappával feljebb legyen, különben nem fordul le, valamint EZT másoljátok az Extern/lib mappába.
Ezzel a forrás része kész is, csak át kell állítani Debug configurációról Release-ra, és lehet is fordítani.
Ha sikeresen lefordult, akkor ami kelleni fog nekünk az a game/game.exe game/quest/qc.exeés db/bin/release/db.exe

Szerver fájl

Jöhet a szerver fájl "beállítása".
Akinek tar.gz-ben van meg, az csomagolja ki valahova.
BSD-n szüksége van a szervernek linkekre, amit windowson is létre kell hozni, de sajnos a jobb klikk/másolás majd jobb klikk->Parancsikon beillesztése nem működik, ezért a linkeket a következő módon kell létrehozni:
Rendszergazdaként nyissátok meg a cmd-t, ez fontos:
MKLINK /D amit.linkeltek.mappa ahova.linkelitek.mappa.es.a.neve
példaképp a db, oda csak a log-ot kell linkelni:
MKLNIK /D S:\!Whisline\Serve_file\db\log S:\!Whisline\Serve_file\logs\db\log

A többi szükséges linkelések még:
-Auth: locale, log, package
-ch1: locale, log, package
ha több core-ból, vagy ch-ból áll ott is ezek kellenek
db-t már leírtam a példában, hogy csak a log kell neki
-game99: data, locale, log, package


Adatbázis

mysql-nál akinek tar-ba van az szintén csomagolja ki és a következő mappákra lesz szükség:
-account
-common
-hotbackup
-log
-player


ezeket másoljátok az xmapp/mysql/data mappába
Ha ez megvolt, a Control Panelben indítástok el a Mysql-t.
Navicatban hozzatok létre egy új mysql csatlakozást:
Név: tetszőleges
HostName/IP: localhost
Port:3306
UserName: root
Password: Hagyjátok üresen

Ha létrehoztátok, csatlakozzatok rá, majd menjetek a User felületre.
Ha még nincs mt2@localhost felhasználó akkor nyomjatok a "New User"-re
És töltsétek ki a szerverfájlotok/CONFIG fájlja alapján
nálam így néz ki: PLAYER_SQL: localhost mt2 mt2!@# account
IP ID PW Táblaneve
tehát navicatban
UserName: mt2
Host: localhost
Password: mt2!@#
ConfirmPW: mt2!@#
Ha ez kész, menjetek a Server Privileges fülre, bárhol nyomjatok jobbklikk-et és vállaszátok ki a "Grant All"-t, ezzel engedélyeztek neki minden jogot.
Mentések el a "Save"-vel.

Most szükségünk van a lefordított game és db.exe-kre.
A db.exe-t másoljátok a szerverfájl db mappájába
a qc.exe-t másoljátok a szerverfájl quest mappába
A game.exe-t peig a következő helyekre: auth,ch1 (és a corejaiba, valamint a többi ch-ba ha van), game99
Végül másoljátok a game.exe-k mellé a mellékelt rar-ban található DevIL-1.7.8.dll-t, enélkül nem futnak az exe-k.
Ha kész, indulhat is a szerverfájl:
Legelsőként mindig a db.exe-t indítsátok, a további sorrend már nem számít.
Akik túl lusták egyesével indítgatni azoknak itt egy autostart.bat:
elérést természetesen írjátok át a saját szerverfájlotok elérésére
@echo off
cd S:\!Whisline\Serve_file\db
start db.exe
timeout /nobreak /t 5

cd S:\!Whisline\Serve_file\auth
start game.exe

cd S:\!Whisline\Serve_file\channel1
start game.exe

cd S:\!Whisline\Serve_file\channel1_1
start game.exe

cd S:\!Whisline\Serve_file\game99
start game.exe

pause


Ha sikeresen elindult, 127.0.0.1 IP-vel tudtok fellépni, a többiek pedig a publikus IP-tekkel.

Quest berakása
A quest berakását a következő képpen kell végrehajtani:
Odanavigáltok a quest mappába majd nyomtok egy Shift+Jobbklikk-et->Parancsablak nyitása itt.
Előjön a cmd ablak:
itt ugyanúgy kell szinte mind bsd:
qc.exe questeve.quest
pl:
qc.exe give_basic_weapon.quest

Egyéb információk
Amennyibel belépésnél betölt a map, de a karakteretek nem, ezt a módosítást hajtsátok végre:
game/packet.h:
typedef struct packet_points
{
BYTE header;
INT  points[POINT_MAX_NUM];
} TPacketGCPoints;

a points adattípusát írjatok át long-ra
majd indítóban UserInterface/StdAfx.h:
#if _MSC_VER >= 1400
//if don't use below, time_t is 64bit
#define _USE_32BIT_TIME_T
#endif

a USE_32BIT-et kommentezzétek ki:
#if _MSC_VER >= 1400
//if don't use below, time_t is 64bit
//#define _USE_32BIT_TIME_T
#endif

Újrafordítjátok a dolgokat és fel kell engednie.

Ha legközelebb újból megnyitjátok a forrást előjön egy ilyen ablak: "[...] Do you want to permanently remove the source control binding from the projects?"
Nyugodtan nyomjatok rá "Yes"-t.

Remélem nem hagytam ki semmit, ha mégis, vagy hibát találtok jelezzétek és javítom.
Sok sikert kívánok mindenkinek.
Akinek esetleg gondja lenne az ITT kérdezzen, vagy keressen fel engem.