Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Guide] Make 2 Different Server in 1 Machine (2232 Version)

Joined
Nov 1, 2009
Messages
842
Reaction score
276
This time, ill show some trick for open 2 Server with 1 machine


ok here we go

- First
you need change some ports in AccountServerSD.exe, LoginServerSD.exe, Zoneserver.exe and Your Client Launcher.

use this strs for change your port

Strs For AccountServerSD.exe
Code:
[filemask="AccountServerSD.exe"]

// by novanakal@rf.reborn-gaming.com
// This STRS for 2232 Version

struct AccountServerSD_2232_File
{
child "Account Port 1"	[offset=0x017618];
child "Account Port 2"	[offset=0x01772a];
child "Account Port 3"	[offset=0x0176a1];
}

struct "Account Port 1"
{ cstr [value=("Default Port 27000")] Port_value; u16 "Port 1"; }
struct "Account Port 2"
{ cstr [value=("Default Port 28000")] Port_value; u16 "Port 2"; }
struct "Account Port 3"
{ cstr [value=("Default Port 29000")] Port_value; u16 "Port 3"; }




Strs for LoginServerSD.exe
Code:
[filemask="LoginServerSD.exe"]

// by novanakal@rf.reborn-gaming.com
// This STRS for 2232 Version

struct LoginServerSD_2232_File
{
child "LoginServer Port 1"	[offset=0x00Ca96];
child "Synch with AccountServerSD Port"	[offset=0x00f1a2];
}

struct "LoginServer Port 1"
{ cstr [value=("Default Port Synch with Launcher = 10001")] Port_value; u16 "Value"; }
struct "Synch with AccountServerSD Port"
{ cstr [value=("Default Port Synch with AccountServerSD = 27000")] Port_value; u16 "Value"; }




Strs For Zoneserver.exe
Code:
[filemask="ZoneServer.exe"]

// by novanakal@rf.reborn-gaming.com
// This STRS for 2232 Version


struct ZoneServer_2232_File
{
child "ZoneServer_Port 1"	[offset=0x1ea8d7];
child "ZoneServer_Port 2"	[offset=0x1ea952];
child "ZoneServer_Port 3"	[offset=0x1ea7d4];
child "ZoneServer_Port 4"	[offset=0x1f7788];
child "Synch with AccountServerSD Port"	[offset=0x1f59c0];
}

struct "ZoneServer_Port 1"
{ cstr [value=("Default Port 27555")] Port_value; u16 "Port 1"; }
struct "ZoneServer_Port 2"
{ cstr [value=("Default Port 27556")] Port_value; u16 "Port 1"; }
struct "ZoneServer_Port 3"
{ cstr [value=("Default Port 27780")] Port_value; u16 "Port 1"; }
struct "ZoneServer_Port 4"
{ cstr [value=("Default Port 27780")] Port_value; u16 "Port 1"; }
struct "Synch with AccountServerSD Port"
{ cstr [value=("Default Port Synch with AccountServerSD = 29000")] Port_value; u16 "Port 1"; }

After you changed the port.
Dont forget to create the new Database MSSQl with different Name
like , RF_US3R and RF_W0RLD or anything
Reconfig your ini files and your ODBC,
AccountSystem.ini
LoginSystem.ini

Change your Login Port in Launcher, and Resynch with LoginServerSD.exe

its DONE
 
Joined
Nov 1, 2009
Messages
842
Reaction score
276
Maybe include a guide for editing the launcher port as well? :)
off course...

just use this launcher and this strs


Launcher.strs

Code:
[filemask="*.exe;*.lc"]

//STRS by novanakal@rf.reborn-gaming.com
//Big Thx To Edaks @ Maindev
//do not edit this Part


struct RF2232Launcher
{
child "LPServerInfo" [offset=1044376, group="LPServerInfo Section",count=1];
child "LPServerInfo Port" [offset=1040014, group="LPServerInfo Section",count=1];
child "newRF.CAB" [offset=0x0FE318, group="newRF.CAB Section",count=1];
child "newRF.CAB Port" [offset=0x101F05, group="newRF.CAB Section",count=1];
child "Launcher Version" [offset=0x0F7050, group="newRF.CAB Section",count=1];
child "IP_PatchInfo" [offset=1047576, group="PatchInfo Section",count=1];
child "PatchInfo Port" [offset=0x1031D2, group="PatchInfo Section",count=1];
child "PatchInfo.z Password" [offset=0x0F70A8, group="PatchInfo Section",count=1];
child "LoginPort" [offset=0x232A6, group="Port Login to Server",count=1];
child "Opening Song"  [offset=0x1032b6, group="Intro Launcher"];
}


//////////////////////////////////////////////
// -----> Start LPServerInfo Config <----- // 
struct "LPServerInfo" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "LPServerInfo Port" [preload=1]
{
str[len=10] "DLL LPServerInfo 2";
str[len=17, hidden] "Hidden";
str[len=10] "DLL LPServerInfo 2";
str[len=3, hidden] "Hidden";
str[len=6] "Port LPServerInfo 1";
str[len=6] "Port LPServerInfo 2";
}
// -----> End LPServerInfo Config <----- /// 
////////////////////////////////////////////




//////////////////////////////////////////////
// -----> Start newRF.CAB Config <----- /////
struct "newRF.CAB" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "newRF.CAB Port" [preload=1]
{
str[len=10] "DLL newRF.CAB";
str[len=37, hidden] "Hidden";
str[len=4] "Port newRF.CAB 1";
str[len=4] "Port newRF.CAB 2";
str[len=4] "Port newRF.CAB 3";
}


struct "Launcher Version" [preload=1]
{
str[len=3] "Launcher Version";
}
// -----> End newRF.CAB Config <----- ////// 
///////////////////////////////////////////




//////////////////////////////////////////////
// -----> Start PatchInfo Config <----- /////
struct "IP_PatchInfo" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "PatchInfo Port" [preload=1]
{
str[len=10] "DLL PatchInfo";
str[len=14, hidden] "Hidden";
str[len=10] "Port PatchInfo 1";
str[len=10, hidden] "Hidden";
str[len=10] "Port PatchInfo 2";
str[len=10, hidden] "Hidden";
str[len=10] "Port PatchInfo 3";
}

struct "PatchInfo.z Password" [preload=1]
{
str[len=11] "PatchInfo Password";
}
// -----> End PatchInfo Config <----- ////// 
////////////////////////////////////////////


////////////////////////////////////////
// -----> Start LoginPort <----- /////
struct "LoginPort" [preload=1]
{
i32 "LoginPort";
}
// -----> End LoginPort <----- /////
/////////////////////////////////////





////////////////////////////////////////
// -----> Opening Song <----- /////
struct "Opening Song" [preload=1]
{
str[len=30] "Opening Song";
}
// -----> Opening Song <----- /////
/////////////////////////////////////


attachment for RF Launcher
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Feb 17, 2012
Messages
392
Reaction score
22
off course...

just use this launcher and this strs


Launcher.strs

Code:
[filemask="*.exe;*.lc"]

//STRS by novanakal@rf.reborn-gaming.com
//Big Thx To Edaks @ Maindev
//do not edit this Part


struct RF2232Launcher
{
child "LPServerInfo" [offset=1044376, group="LPServerInfo Section",count=1];
child "LPServerInfo Port" [offset=1040014, group="LPServerInfo Section",count=1];
child "newRF.CAB" [offset=0x0FE318, group="newRF.CAB Section",count=1];
child "newRF.CAB Port" [offset=0x101F05, group="newRF.CAB Section",count=1];
child "Launcher Version" [offset=0x0F7050, group="newRF.CAB Section",count=1];
child "IP_PatchInfo" [offset=1047576, group="PatchInfo Section",count=1];
child "PatchInfo Port" [offset=0x1031D2, group="PatchInfo Section",count=1];
child "PatchInfo.z Password" [offset=0x0F70A8, group="PatchInfo Section",count=1];
child "LoginPort" [offset=0x232A6, group="Port Login to Server",count=1];
child "Opening Song"  [offset=0x1032b6, group="Intro Launcher"];
}


//////////////////////////////////////////////
// -----> Start LPServerInfo Config <----- // 
struct "LPServerInfo" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "LPServerInfo Port" [preload=1]
{
str[len=10] "DLL LPServerInfo 2";
str[len=17, hidden] "Hidden";
str[len=10] "DLL LPServerInfo 2";
str[len=3, hidden] "Hidden";
str[len=6] "Port LPServerInfo 1";
str[len=6] "Port LPServerInfo 2";
}
// -----> End LPServerInfo Config <----- /// 
////////////////////////////////////////////




//////////////////////////////////////////////
// -----> Start newRF.CAB Config <----- /////
struct "newRF.CAB" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "newRF.CAB Port" [preload=1]
{
str[len=10] "DLL newRF.CAB";
str[len=37, hidden] "Hidden";
str[len=4] "Port newRF.CAB 1";
str[len=4] "Port newRF.CAB 2";
str[len=4] "Port newRF.CAB 3";
}


struct "Launcher Version" [preload=1]
{
str[len=3] "Launcher Version";
}
// -----> End newRF.CAB Config <----- ////// 
///////////////////////////////////////////




//////////////////////////////////////////////
// -----> Start PatchInfo Config <----- /////
struct "IP_PatchInfo" [preload=1]
{
str[len=320] "ko-kr";
str[len=320] "pt-br";
str[len=320] "zh-cn";
str[len=320] "en-gb";
str[len=320] "en-id";
str[len=320] "ja-jp";
str[len=320] "en-ph";
str[len=320] "ru-ru";
str[len=320] "zh-tw";
str[len=320] "none-global";
}

struct "PatchInfo Port" [preload=1]
{
str[len=10] "DLL PatchInfo";
str[len=14, hidden] "Hidden";
str[len=10] "Port PatchInfo 1";
str[len=10, hidden] "Hidden";
str[len=10] "Port PatchInfo 2";
str[len=10, hidden] "Hidden";
str[len=10] "Port PatchInfo 3";
}

struct "PatchInfo.z Password" [preload=1]
{
str[len=11] "PatchInfo Password";
}
// -----> End PatchInfo Config <----- ////// 
////////////////////////////////////////////


////////////////////////////////////////
// -----> Start LoginPort <----- /////
struct "LoginPort" [preload=1]
{
i32 "LoginPort";
}
// -----> End LoginPort <----- /////
/////////////////////////////////////





////////////////////////////////////////
// -----> Opening Song <----- /////
struct "Opening Song" [preload=1]
{
str[len=30] "Opening Song";
}
// -----> Opening Song <----- /////
/////////////////////////////////////


attachment for RF Launcher

OPENING SONG LENGTH is 27 sir, not 30 :thumbup:
////////////////////////////////////////
// -----> Opening Song <----- /////
struct "Opening Song" [preload=1]
{
str[len=27] "Opening Song";
}
// -----> Opening Song <----- /////
/////////////////////////////////////
 
Newbie Spellweaver
Joined
Jan 31, 2011
Messages
49
Reaction score
15
Code:
// STRS by WDC Team

[filemask="ControlServer_GloD.exe"]

struct ControlServer{
    
    child "Sync Port 1"    [offset=(154605),    count=1];
    child "Sync Port 2"        [offset=(459826),    count=1];}


struct "Sync Port 1" [preload=1, tableview=1]{
    u32 [tag="Sync With Account Server Port 1 Default 28000"];}

struct "Sync Port 2" [preload=1, tableview=1]{
    u32 [tag="Sync With Account Server Port 2 Default 28000"];}

Thats STRS for ControlServer u need edit to
 
Experienced Elementalist
Joined
Jun 11, 2013
Messages
232
Reaction score
24
Code:
// STRS by WDC Team

[filemask="ControlServer_GloD.exe"]

struct ControlServer{
    
    child "Sync Port 1"    [offset=(154605),    count=1];
    child "Sync Port 2"        [offset=(459826),    count=1];}


struct "Sync Port 1" [preload=1, tableview=1]{
    u32 [tag="Sync With Account Server Port 1 Default 28000"];}

struct "Sync Port 2" [preload=1, tableview=1]{
    u32 [tag="Sync With Account Server Port 2 Default 28000"];}

Thats STRS for ControlServer u need edit to

nice release rozy :lol:
 
Newbie Spellweaver
Joined
Apr 30, 2013
Messages
7
Reaction score
0
how to open LoginServer, if I want to create an server 1 open and server 2 close??
 
Experienced Elementalist
Joined
Aug 24, 2008
Messages
235
Reaction score
20
Nice post dude
running two servers is the easy part does anyone know how to use one client for both servers cause I only see one login port block in the launcher.at least on the one I have anyhow.
 
Joined
Apr 9, 2012
Messages
2,359
Reaction score
442
Nice post dude
running two servers is the easy part does anyone know how to use one client for both servers cause I only see one login port block in the launcher.at least on the one I have anyhow.
this is easy, but so many people got cunfused, i want to create a new guide, but it would be confusing to have 3 guide about this,
so i will explained it here,
1. you need to create new rf_world database, name it with RF_World2 or whatever you want, you can use just 1 RF_User database (i'm not sure about billing database, but if you create only 1 billing database, each world will share the cash point).
2. you need to edit AccountSystem.ini just like this guide mentioned : http://forum.ragezone.com/f480/using-2-zoneserver-computer-948304/, match the database.
3. to make the second server appear in the client launcher, edit LoginSystem.ini
edit this part :
Code:
[World]
Lim World Num = [COLOR=#ff0000]1[/COLOR] <-change 1 to 2
DB Push Job = 0
4. you need to copy your zoneserver folder, and named it zoneserver2 or whatever you want, only zone, no need to copy entire server files
5. open WorldInfo.ini, fg.ini and fgrs.ini in your zoneserver2 (if you don't know where is that file, ignore this guide/tutorial)
change server name, to match AccountSystem.ini
6. the only port you need to change is the second zoneserver/zoneserver2, hex it or use strs above, for example i only change 27780 to 29880, you don't need to change any other *.exe port, you dont need to change the launcher, accountserver, or loginserver.exe
7. that is all, open your accountserver.exe, it will mention
Code:
RegedWorld(2)
0:servername1 Type(0)
>>>DBName:RF_World

1:servername2 Type(0)
>>>DBName:RF_World2

if you see DBName:X
mean your configuration in AccountSystem.ini is wrong, and you will get accountdb connect failed,
server1 :
Name0
Server2 :
Name1

and so the other :p:
open loginserver.exe and wait till it say worldcode(0) and worldcode(1) open.ahahahaha
then open the first zone, wait till it say start world on account, and open the second zone :D:

hope you understand :D:
i've tested this guide before i write it, and i'm already able to login on server 1 and server2 :D:

but i'm not recommending to use 2 zoneserver at the same PC, it cost a lot of processor @@
100% used on my computer @@
you may be able to open the second zone on the other computer with the same LAN, just make sure you forward your second port to the zone server2 PC :D:
 
Last edited:
Joined
Apr 9, 2012
Messages
2,359
Reaction score
442
Experienced Elementalist
Joined
Aug 24, 2008
Messages
235
Reaction score
20
Joined
Apr 9, 2012
Messages
2,359
Reaction score
442
Yeah my point you would have to be able to add another block to the Client launcher for the second server login port. this is what I meant
that would destroy the point on having 2 completely different server,
i'll explain it a little, if you have 2 completely different server running on 1 machine (you can choose a different version server running on the same machine),
it's mean both server can have their own custom of course they need separate client for each server, since they have different item/setting, and you can't use 1 client for both, except both server doesn't have custom item, only have custom drop/rate.
if you want to have 1 client running on both server, you can just use 2 zone instead, and just create 2 world database just like guide i posted above. you can still have custom rate for each server (or anything that only require serverside editing).

if you really want to add block for more than 1 login port, guess, the only way is to create your own launcher, or you can create your own client which have 2 datatable and can each server running it's own datatable, or you can create launcher which run on 2 client, and each server binding with certain client (not sure you understand my point here)
 
Retired Developer
Joined
Jun 16, 2005
Messages
496
Reaction score
213
Create 2 server is possible i did it in the past

it's require 2 servers instance

first = login + account + first zone
second = only zone + odbc redirect to the first one

u can add more server as u wish the only thing u have to edit it's account ini for ip and edit Zone for connect to Account main ip

here sample of my backup config
[Database]
;;ºê¶óÁú QA¿ë
AccountDB_Machine = 192.168.1.2
AccountDB_Name = RF_User

[System]
; ±¹°¡ÄÚµå ISO 3166( ISO ALPHA-2ÀÚ¸® ±¹°¡ÄÚµå ) ÁöÁ¤µÇ¾î ÀÖ´Â ±¹°¡ÄÚµå
; KR Çѱ¹
; GB ¿µ±¹
; ID Àεµ
; JP ÀϺ»
; PH Çʸ®ÇÉ
; RU ·¯½Ã¾Æ
; BR ºê¶óÁú
; TW ŸÀÌ¿Ï
; CN Áß±¹
; US ¹Ì±¹(ºÏ¹Ì½Ã¿¡µµ »ç¿ë)
NationCode = US

[DB_INFO]
--ºê¶óÁú(¾Øij½¬)
IP = 192.168.1.2
Port = 1433
DSN = BillCruxRF
DBName = BillCruxRF
Acc = sa
PW = xxxxxxxxxx


[Service]
MaxAccountNum = 100000

[World]
WorldSet_Num = 2
ServiceSet_Num = 1

Name0 = Novus
Address0 = 192.168.1.2
DBName0 = RF_WORLD_NOVUS
Type0 = 0


Name1 = Solus
Address1 = 192.168.1.3
DBName1 = RF_WORLD_SOLUS
Type1 = 0

Changing Port of zone also is possible
but trust me u'll get internal errors after some days running 2 zones on same machine if have hackers on one of them :)
 
Joined
Nov 1, 2009
Messages
842
Reaction score
276
Create 2 server is possible i did it in the past

it's require 2 servers instance

first = login + account + first zone
second = only zone + odbc redirect to the first one

u can add more server as u wish the only thing u have to edit it's account ini for ip and edit Zone for connect to Account main ip

here sample of my backup config


Changing Port of zone also is possible
but trust me u'll get internal errors after some days running 2 zones on same machine if have hackers on one of them :)


this methode not for 1 account..

but different account.
this for reduce costs, if you want to open new server without new dedicated server or colocation server.
 
Experienced Elementalist
Joined
Aug 24, 2008
Messages
235
Reaction score
20
Ok I see your point, I was looking at it wrong I have setup 2 servers however for some reason still don't see second server in client looking through ini file's to see if I missed something.
 
Back
Top