- ACHTUNG! -
Bitte achtet auf das Datum dieses Posts. Dieser ist knapp 1 Jahr alt und
gegebennenfals ist das, was ich hier geschrieben habe, einfach zu alt
dass es noch funktionieren könnte. Ich garantiere NICHT! dass es bei euch
funktioniert - und solltet ihr fehler haben etc. BITTE!!!!!!!!!!!! schreibt mir KEINE!!!!!!!!
PN. Ich habe mit diesen Files nichtsmehr am Hut. Wenn ihr es nicht selber schaft
und jedesmal nach Hilfe fragen müsst, wie wollt ihr den Server auf "längerer" Zeit
laufen lassen?
- /ACHTUNG! -
Soo nachdem meine Aufnahme das 4te mal verkakt ist schreibe ich ein Tutorial anstatt
ein Video zu posten (btw. wäre sowieso 2h gegangen von daher...)
Das Tutorial beinhaltet folgende Schritte:
3. Ändern des Clients sowie des Servers
4. WarZ Backend API aufsetzten
5. Erstellen von Serial Keys
6. Erstellen eures Accounts
7. Das Verbinden
Ich gehe hier auf ein Tutorial ein dass entweder für Root Server oder Home Server gemacht wird.
Daher - keinen Lokalen Client. Daher, solltet ihr am ende Fertig sein, dann kann jeder der einen Client
hat damit auf euren Server Connecten (wenn er ein Serial hat)
Bitte beachtet dass ich KEINE PORTS FREIGEBEN werde da ich wie gesagt einen Root Server benutzt,
also immer schön die Ports (tcp & udp) im Router Freigeben.
Fangen wir direkt mit den Pre-Requisites an:
1) Microsoft Windows Server 2008 / Win 7
2) Microsoft Windows SQL Server 2008 SP1-3.
3) Microsoft Visual Studio 2008 Professional Edition SP1. Expers Edition funktionieren NICHT!
4) IIS Server oder ein Webserver mit ASP.NET Support. Sollte auch mit php Klarkommen
5) Einen CloudServer - AmazonAWS oder einen Webspace mit 3GB!
6) 1GB für jeweils 64 Spieler.
7 - Optional) Eine eigene Domain, bei dem Ihr den NameServer ändern könnt.
Okay, ich gehe mal davon aus dass ihr die Datenbank aus meinem Vorherigem Tutorial bereits
eingerichtet habt und euch das Passwort für die MSSQL Datenbank gespeichert habt.
Fangen wir mit dem Client an. Ich habe alles unter C:\ gespeichert, werde aber immer vom .\bin ordner
ausgehen. Daher sollte .\bin\src\RSBuild.sln später so aussehen: C:\Ordner\Zu\Eurem\Source\bin\src\RSBuild.sln
Also öffnen wir zuerst die .\bin\src\RSBuild.sln mit Visual Studio 2008 Professional.
Zuerst navigieren wir zur HWInfoPost.cpp
Dort haben wir bei Zeile 41 und 86 einen Registry Schlüssel den wir ändern sollten wenn wir später den Client Online verteilen.
Passt diesen zu eurem Registry eintrag an
Nun öffnen wir die main.cpp und navigieren zu Line 827 und 902 und ändern die Seite, bei den man einen Serial bekommen kann.
Hierzu könnt ihr später ein kleines Script schreiben dass eine Neue Serial generiert usw.
(Ist die Seite auf die Ihr kommt wenn ihr auf "Get New Serial" klickt)
Code:
ShellExecute(NULL, "open", "http://deinewebsiteoderip.de/erstelleserial.php", "", NULL, SW_SHOW);
bringen. Ihr könnt hier wie gesagt eine Registerpage etc einbauen, wie ihr eben Wollt.
Bei zeile 969 schreibt ihr die Addresse rein die geöffnet werden soll wenn jemand auf "Forgot Password" klickt.
Code:
ShellExecute(NULL, "open", "https://deineseiteoderip.de/forgotpassword.php", "", NULL, SW_SHOW);
Hier könnt ihr, solltet ihr eines davon nicht wollen, einfach das ShellExecute auskommentieren mit 2 //.
In der RSUpdate.rc die ihr per Editor öffnen könnt sucht ihr nach "thewarz.com" und ändert auch dort die domains.
Dass ist jedoch egal da es wie an der Endung zu sehen nur ein Resource File ist.
Würde es aber trozdem ändern
Nun kommen wir zu der Updater.cpp Datei.
Dort haben wir ab Line 1097 die Fehlermeldungen wenn iwas mit dem Account falsch sein sollte.
Solltet ihr im Backend später was ändern müsst ihr es gegebenfalls hier updaten.
Die Wichtigste Datei: UPDATER_CONFIG.cpp
Diese beinhaltet die Komplette Konfiguration des Clients.
Da ich diese hier nicht schreiben will habe ich es kommentiert:
Dort wo sich die URL "cloundoramazonaws" ist habe ich einen CloundServer bei Amazon erstellt.
Da ich später den Client &nd den Launcher über Amazonaws laufen lasse und mir so Traffic &nd Server
kosten spare hab ich es dort eingegeben. Beachtet dass ihr hier jeden Host eingeben könnt den ihr wollt,
solange ihr die Files dort auch uppt.
Nun kommen wir zur WOBackendAPI.cpp
Dort ändern wir einfach mal komplett alles
Änder wirklich alles zu eurer Seite was ihr dort findet und achtet darauf auch die Ports sowie SSL zu ändern!
Soooo nun könnt ihr den Updater im Release Mode Compilen. Das Projekt an sich brauchen wir nichtmehr,
was wir mit dem Launcher machen sage ich dir später
Jetzt geht es erstmal an das ASP.NET Projekt
Dazu öffnet folgendes Project File: .\bin\server\scripts\WZBackend-ASP.NET\WZBackend-ASP.NET.sln
Nun ändern wir in AppData die SQLBase_WarZ.cs
Dort tragen wir unsere SQL Daten ein und zwar bei allen!
Code:
string server = "localhost,1444"; string user = "root"; string pass = "euermssqlpassword"; string workdb = "WarZ";
Dass Problem: Ihr könnt nicht einfach F7 drücken und Fertig ist es xD
Ihr klickt also auf "Erstellen" und dort auf "Website veröffentlichen"
Den Pfad den ich angegeben habe wäre dann praktisch "www.meineseite.com/api/"
Nachdem ihr dort alles gelöscht habt und die Website erstellt wurde müssen wir sie
noch als "Anwendung" in IIS Einstellen.
Dazu öffnen wir den InetMGR (Win+R -> inetmgr)
Nun navigieren wir zu unseren Sites und erstellen eine Neue Seite.
Ich habe hier API verwendet mit dem Pfad (C:\inetpub\wwwroot\api)
Nachdem wir die Seite erstellt haben machen wir ein Rechtsklick darauf und klicken auf "Anwendung hinzufügen"
Dort tragen wir den Pfad zur API (C:\inetpub\wwwroot\api\api\) ein sowie einen Anwendungsnamen.
Nun sollte die Seite einwandfrei Funktionieren
Soooo nachdem wir nun die Seite sowie den Launcher fertig haben kommen wir zum Client.
Wir öffnen also .\bin\src\EclipseStudio\WarZ.sln
Dort müssen wir nach folgenden dingen SUCHEN!
Code:
const char* gDomainBaseUrl= "/api/";
Da ich wie schon zuvor gesagt meine api bei "meinedomain.com/api/" ist lasse ich das api hier so wie es ist.
Ich ändere nur den Port und deaktiviere SSL.
Nun suchen wir nach:
Code:
case Menu_AppSelect::bStartGamePublic:
Code:
if(strstr(__r3dCmdLine, "-8s7df78sdf") == NULL) { // hardcoded IP for now g_serverip->SetString("123.123.123.123"); } // override API settings g_api_ip->SetString("api.thewarz.com");
Code:
if(strstr(__r3dCmdLine, "-debugx") == NULL) { // hardcoded IP for now g_serverip->SetString("eureip"); } // override API settings // meineseite.com/api/, dass api lassen wir aber weg da wir es oben schon geändert haben!! g_api_ip->SetString("meineseite.com");
Code:
r3dFile* f = r3d_open( "Data/LangPack/dictionary.txt", "rb" );
Code:
if(dictionaryHash_.Size() == 0) { r3dFile* f = r3d_open( "Data/LangPack/dictionary.txt", "rb" ); if(f->IsValid()) { char tmpStr[256]; while(fgets(tmpStr, 256, f) != NULL) { size_t len = strlen(tmpStr); for(size_t i=0; i<len; ++i) { if(tmpStr[i]==13 || tmpStr[i]==10) tmpStr[i]=0; } dictionaryHash_.Add(tmpStr, tmpStr); } fclose(f); } } //Credits to SecretsOThePast
Nun kompilieren wir den Client als FINAL!
Wenn wir es bis hierher geschaft haben machen wir nun am "Client Builder" ran.
DIeser erstellt den Client für euch (warz_01.bin, warz_02.bin usw....)
Dazu öffnen wir folgendes Projekt: .\bin\src\RSBuild.sln
Diesen können wir ohne änderungen Compilen (Auch als Release!)
Hier angekommen haben wir den Launcher, den Client sowie den Builder.
Fangen wir bevor wir zum Server kommen mit dem Builder an.
Dieser befindet sich in .\bin\build\Updater oder in .\build\updater
(Name: RSBuild.exe)
Diese Datei kopiert ihr in den .\bin Ordner.
Nun geht ihr wieder in den .\bin\build Ordner wo sich die Datei RSBuild.xml befindet.
Diese öffnet ihr mit einem Beliebigen Editor.
Ihr findet ziemlich weit oben folgende Zeile
Code:
<cdn url="http://arktos-icdn.pandonetworks.com/wz/"/>
trage ich dort meine Site ein:
Code:
<cdn url="http://xxxxxxxxx.cloudfront.net/warz/"/>
2-3 Zeilen drunter findet ihr noch etwas:
Code:
<base file="build\data\wz2A170006"/>
Code:
<!-- <base file="build\data\wz2A170006"/> -->
Code:
<!-- excludes for build directories -->
Code:
<!-- excludes for build directories --> <exclude mask="bin"/>
.bin\src\Tools\Bin\Atlas\sources\devil-1.7.8\src-IL\msvc9
Dort befinden sich .vcproj Dateien mit Russischen Zeichen, diese MÜSSEN! wir löschen.
Dass gleiche machen wir mit folgenden Ordnern auch noch:
.bin\src\Tools\Bin\Atlas\sources\devil-1.7.8\src-ILU\msvc9
und
.bin\src\Tools\Bin\Atlas\sources\devil-1.7.8\src-ILUT\msvc9
Wenn alle .vcproj Dateien mit Russischen Zeichen gelöscht sind können wir wieder in den .bin\ Ordner
gehen und dort die Datei RSBuild.exe ausführen.
<- An diesem Punk kann ich sagen: Viel spass beim Duschen, es dauert SEHR Lange (20-30 Mins, ~10 mins bei ner SDD) ->
Soooo nachdem wir nun ENDLICH den Client erstellt haben wollen wir ihn ja auch zur verfügung stellen.
Da ich wie bereits erwähnt den Clienten auf einen Externen Webspace lade wegen traffic etc. lade ich diesen auch dort
hoch.
Da ich mir nicht 100%ig sicher bin habe ich die .xml auf meiner eigenen seite sowie auf die externe Page hochgeladen.
Hier habe ich mir den Service von Amazon AWS zunutze gemacht. Da solltet ihr jedoch ein Tutorial suchen.
Naja zurück zum eigentlichem:
Wir haben im .bin\build\data Ordner nun eine .xml sowie 2-3 Dateien (.bin)
Als erstes öffnen wir die .xml datei und schauen uns an wo wir nun die dateien hochladen müssen:
Code:
<d ver="2836478234" base="http://xxxxxxxxx.cloudfront.net/warz/wz3410040A"/>
Die Struktur sollte demnach so aussehen:
/warz/wz3410040A_01.bin
/warz/wz3410040A_02.bin
/warz/wz3410040A_03.bin
Sollte alles passen laden wir die .xml datei auch dort hoch, desweiteren kopieren wir sie in folgende Ordner:
C:\InetPub\wwwroot\api\wz\
Nachden wir nun die datei wz.xml überall kopiert haben kommen wir zum launcher.
Dieser befindet sich in .bin\build\updater\WarZLauncher.exe
Dort befindet sich noch eine .bat datei sowie eine .xml datei.
In diesem Ordner starten wir die .bat datei.
Ihr solltet eine Meldung bekommen dass er die .xml erstellt hat und auserdem sollte sich
eine weitere Datei namens WarZLauncher_X.X.X.exe erstellen.
Nachdem wir die Meldung mit OK bestätigt haben schauen wir mal wo wir die WarZLauncher_X.X.X.exe
uploaden müssen. Dazu öffnet ihr die woupdate.xml
Code:
<u url="http://deineseite.com/wz/updater/WarZLauncher.exe_1.0.0.exe" crc="2941957038" ver="1.0.0" size="8163328"/>
C:\InetPub\wwwroot\api\wz\updater\
In diesem Ordner speichern wir die .xml sowohl den neu erstellen Launcher.
Bevor wir fortfahren müssen wir noch eine neue Datei erstellen.
Dazu geht in den folgenden Ordner:
C:\Inetpub\wwwroot\api\api\
Dort erstellt ihr eine Datei namens: api_getserverinfo.xml
Diese braucht der Client später um die News sowie den Server Status anzuzeigen.
In diese Datei schreibt ihr folgendes rein:
Noch einmal abspeichern und fertig wären wir.
Somit wäre der Client &nd Launcher erstellt und einsatzbereit.
Bevor wir den Client testen können erstellen wir uns erstmal ein Serial Key den wir auch benutzten können.
Dazu öffnen wir das MSSQL Management Studio und verbinden uns mit unserem Server.
Dort wählen wir die Datenbank "breezenet" aus und erstellen eine neue Abfrage.
Code:
INSERT INTO dbo.WarZSerials (SerialKey, SerialType, IsUsed) VALUES ('1234-4321-4312-1243', 1, 0)
Sollte irgendetwas NICHT! Funktionieren posted es mir bitte rein da ich eventuell eine kleinigkeit übersehen
haben könnte!
Dazu findet ihr in dem Ordner vom Client eine r3dlog.txt.
Diesen Inhalt kopiert ihr bitte hier rein damit ich dass so schnell wie es geht beheben kann!
Sollte der Client Richtig starten können wir unseren Account erstellen.
Als Serial nehmen wir den, den wir erstellt haben:
Code:
1234-4321-4312-1243
die Client Files runterzuladen.
Nun kommen wir zum nächstem Schritt, den Server.
Dieser geht relativ fix zum einrichten daher starten wir direkt
Wir öffnen also direkt folgendes Projekt:
.bin\server\src\WarZ_Server.sln
In diesem Projekt müssen wir nun diverse einstellungen ändern!
Wir öffnen folgende Datei:
\MasterServer\MasterGameServer.cpp
und Navigieren zu Line 743:
Code:
req.AddParam("serverkey", "CfFkqQWjfgksYG56893GDhjfjZ20");
In der Datei MasterServer\MasterUserServer.cpp Line 523 findet ihr folgendes:
Code:
bool isAdmin = false; if(CustomerID == 1281646178 || // sagor CustomerID == 1288125909 || // sousuke CustomerID == 1288144549 || // cvance CustomerID == 1288629751 || // wertyuiop CustomerID == 1288188971 || // piki CustomerID == 1288686686 // kewk ) { // do not check password for GM, we allow GMs to enter any game isAdmin = true; }
WarZ_GameServer\3: Server\ServerMain.cpp
Dort finden wir folgenden Eintrag:
Code:
req.put_Path("/WarZ/api/php/api_GetLootBoxConfig.php"); req.AddParam("serverkey", "9F179EB9-C74E-4933-85B5-EB135E16F5EF"); CkHttpResponse* resp = http.SynchronousRequest("api1.thewarinc.com", 443, true, req);
Code:
req.put_Path("/api/php/api_GetLootBoxConfig.php"); req.AddParam("serverkey", "9F179EB9-C74E-4933-85B5-EB135E16F5EF"); CkHttpResponse* resp = http.SynchronousRequest("euresite.com", 80, false, req);
Code:
g_api_ip->SetString("127.0.0.1"); gDomainUseSSL = false; gDomainPort = 80;
Desweiteren schaut ihr in MasterServer\from Client\WOBackEnd.cpp nach folgendes:
Code:
#ifndef FINAL_BUILD // automatically switch to local site version if(stricmp(g_api_ip->GetString(), "api1.thewarz.com") == 0) { gDomainBaseUrl= "/api/"; gDomainPort = 80; gDomainUseSSL = false; } #endif
Soooo dann compilen wir das ganze und wenn es fertig ist machen wir uns auf den Weg zur Finalen TOP 4.
1. Erstellt/bearbeitet im Ordner .bin\ folgende Dateien: game.ini / MasterServer.cfg / SupervisorServer.cfg
2.
game.ini
MasterServer.cfg
SupervisorServer.cfg
3. Kopiert die Server von .bin\bin\ nach .bin\ und statet den Master Server sowie den SuperVisiorServer. Der GameServer selber wird gestartet wenn jemand Connected!
4. Loggt euch mit dem CLient ein und Spielt <3
Endgegner Garry -> Da ihr die Top4 geschaft habt und geschwächt seid (so wie ich) kann es durchaus vorkommen dass es fehler enthält, kleinichkeiten Fehlen etc etc. Benutzt dafür bitte IMMER! die r3dlog.txt
Diese verrät mehr als Ihr sagen könnt! - Bei Fehlern immer diesen Inhalt Posten.
Damit hättet ihr Garry Besiegt und seid nun Pokemon ähhhm WarZ Server besitzten
Und hier das Versprochene Video. Tut mir leid dass es ein bisschen komisch geworden ist
und ich auch ein paar Fehler gemacht habe, werde es aber sobald mir jemand einen
root zur verfügung stellt und mich alles installen und aufsetzte lässt neu machen =)
Also - solltest du einen Root Server haben und einen WarZ server aufsetzten wollen aber schaffst
es nicht , melde dich -> Ich würde daraus noch ein Video Tutorial machen dass besser ist =)
*Suche ein schönes Bild ans Thumb =) *
LG
€: Bei Fehler bitte den Inhalt der r3dlog.txt schicken!