[MEGA GUIDE] Rose Server Setup + Compiling + SQL & More

Page 1 of 291 1234567891151101 ... LastLast
Results 1 to 15 of 4362
  1. #1
    Alpha Member Akai is offline
    MemberRank
    Mar 2006 Join Date
    x Infinity +1Location
    2,737Posts

    [MEGA GUIDE] Rose Server Setup + Compiling + SQL & More

    Alright, all of the Rose Online guides in Ragezone are outdated. So I'm making this for people to use and hopefully simplify it so people can understand it better. I'll also try my best to keep it updated. I also will share a launcher I found ages ago, which was designed by nhed (credits to him), its a newer one. So you don't have to use a .bat anymore. This Guide & Files will always be for the latest files! These files work with the latest client ver 133.

    Current Version: REV 80 (October 5th, 2007)

    -- 1.0: Server Installation
    -- 2.0: Running the server
    -- 3.0: Client Setup (NO more .bat!)
    -- 3.1: Setting up a webserver + Site
    -- 4.0: SQL
    -- 5.0: GM and Commands
    -- 6.0: Compiling
    -- 7.0: Multi World
    -- 8.0: Extras
    -- 9.0: Problems & Errors
    -- 10.0: Notes
    -- 10.1: Updates


    --------1.0----------Server Installation

    Step 1: First download this full server I have put together for you.
    Link: Full Server ver 80 (Updates: REV 80!)
    - 1/29/07 (Emergency Update For GM Commands)
    - 1/30/07 (New SQL Update for .sql file, new and improved respawns)
    - 2/8/07 (Updated to the new files! Rev 16!)
    - 2/11/07 (Updated to the new files Rev 20!)
    - 2/20/07 (Updated from Rev 20 to Rev 23)
    - 2/24/07 (Updated to Rev 25 files!)
    - 2/25/07 (Fixed the STBS, which updated them to ver 137)
    - 3/1/07 (Updated to Rev 30 files!)
    - 3/1/07 (Included the right database)
    - 3/4/07 (Added ver 138 STB!, should fix in-game problems)
    - 4/4/07 (Updated to the new files! Rev 41!)
    - 4/6/07 (Updated to the new files! Rev 45!)
    - 4/18/07 (Updated to the new files! Rev 59!)
    - 4/30/07 (Updated to the new files! Rev 60!)
    - 6/25/07 (Updated to the new files! Rev 76!)
    - 10/5/07 (Updated to the new files! Rev 80!)


    Step 2: Install MySQL. Please download and install it.
    Link: MySQL 5.0 Installer
    - 10/5/07 (Updated to new version)


    During the installation, it will say something about "singing up", choose "Skip Signup". After MySQL is installed it will ask you to configure it, so keep clicking "Next" untill you get to a part where it asks for a password. Type in the password "root" (without the quotation marks, this is the password that will be used for configuring your server and Navicat).

    Step 3: Download Navicat. This is used for the Databases (SQL).
    Link: Navicat MySQL
    - 10/5/07 (Updated to version 8)


    Install Navicat. After it's installed, run the program. You should see the connection "localhost" to the left. IF you do not, go to "File > New Connection". In the fields put this:

    Connection Name: localhost
    Host Name/IP Address: localhost
    Port: 3306
    Username: root
    Password: root
    Click "Test Connection" and you should get a success. If you do, click "OK".

    Now, click your connection "localhost" and right click and go to "New Database". Name the database "roseon" and click OK. Right click on the database you just made, and click "Execute batch file". Browse to the folder you extracted the server files, and find the folder named "Database" and double click, then find the folder named "Full SQL" and double click it, then find the file "osrose.sql" and open it. It will start the process of adding the tables in, it may take a few minutes. If everything went right, it should tell you it executed it successfully.

    Step 4: Now, go to your Server folder where you extracted all those files. In the root folder you should see "charserver.conf" Open that file with Notepad. And you should see this:

    Code:
    [DATABASE]
    mysql_host=localhost
    mysql_user=root
    mysql_pass=
    mysql_database=roseon
    mysql_port=3306
    AutoQueryTime=600
    
    [SERVERDATA]
    serverid=1
    servertype=1
    serverip=201.160.169.10
    serverport=29100
    servername=Dark
    parentid=0
    accesslevel=100
    connection=2
    lanip=192.168.0.1
    lansubmask=192.168.0
    
    [CHARSErVER]
    deletetime=3600
    usethreads=0
    
    [PASSWORDS]
    loginpass=789456
    charpass=456123
    worldpass=321654
    You first need to change the database settings up top. The host should be "localhost" just like you did in Navicat. Same for the username and password you did for navicat. And for the database name, put the name of the database you created in Navicat. So basically your just filling out the info that you made in Navicat, really easy.

    Now you need to change some things. So, on the "serverip=201.160.169.10" change the 201.160.169.10 to your WAN IP. (which you can find here: http://whatismyip.org ). Then find "servername=Dark" Change "Dark" to whatever you want your server name to be. Now, find "lanip=192.168.0.1" you need to change this to your lan IP. You can find out your lan IP by going to "Start>run> and type in "cmd" (without the quotation marks) and once the command prompt comes up, type "ipconfig" (without the quotation marks). It will give you the LAN IP along wit the Lan Sub Mask. So change those two fields in the conf file. Save and close the file.

    Next, find the file named "loginserver.conf" and open it with Notepad. And you should see this:

    Code:
    [DATABASE]
    mysql_host=localhost
    mysql_user=root
    mysql_pass=
    mysql_database=roseon
    mysql_port=3306
    
    [SERVERDATA]
    serverid=0
    servertype=0
    serverip=201.160.169.10
    serverport=29000
    servername=LoginServer
    connection=0
    lanip=192.168.0.1
    lansubmask=192.168.0
    
    [LOGINSERVER]
    accesslevel=100
    CreateLoginAccount=1
    usethreads=0
    
    [PASSWORDS]
    loginpass=789456
    charpass=456123
    worldpass=321654
    Again, change the database settings just like you did in the previous file. After that, find "serverip=201.160.169.10" and change the 201.160.169.10 to your WAN IP (which you can find here: http://whatismyip.org ). Now, find "lanip=192.168.0.1" you need to change this to your lan IP. You can find out your lan IP by going to "Start>run> and type in "cmd" (without the quotation marks) and once the command prompt comes up, type "ipconfig" (without the quotation marks). It will give you the LAN IP along wit the Lan Sub Mask. So change those two fields in the conf file. Here you have a choice, see "CreateLoginAccount=1"? When this is set to 1, it enables a person to make an account on login. What this does is a person will type in their account info in game, and it will tell them "Account does not exisit". Then if they type it again, their account will be created. If you want this disabled, then change the "1" to a "0". Save and close the file.

    Lastly, find the file named "worldserver.conf" and open it with Notepad. And you should see this:

    Code:
    [DATABASE]
    mysql_host=localhost
    mysql_user=root
    mysql_pass=
    mysql_database=roseon
    mysql_port=3306
    AutoQueryTime=600
    
    [SERVERDATA]
    serverid=1
    servertype=2
    serverip=127.0.0.1
    serverport=29200
    servername=Channel 1
    maxconnections=500
    parentid=1
    connection=2
    lanip=192.168.0.1
    lansubmask=192.168.0.1
    
    [WORLDSERVER]
    accesslevel=100
    exp_rate=3
    drop_rate=1
    drop_type=2
    zuly_rate=4
    welcome_msg=Welcome to Open Source Rose Online
    autosave=1
    savetime=120
    mapdelay=10
    visualdelay=200
    worlddelay=700
    partygap=10
    maxstat=255
    fairy=1
    fairystay=45
    fairywait=30
    fairytestmode=0
    playerdmg=120
    monsterdmg=100
    cfmode=0
    
    [PASSWORDS]
    loginpass=789456
    charpass=456123
    worldpass=321654
    Again, change the database settings just like you did in the previous file. Then find "serverip=201.160.169.10" and change the 201.160.169.10 to your WAN IP (which you can find here: http://whatismyip.org ). Now, find "lanip=192.168.0.1" you need to change this to your lan IP. You can find out your lan IP by going to "Start>run> and type in "cmd" (without the quotation marks) and once the command prompt comes up, type "ipconfig" (without the quotation marks). It will give you the LAN IP along wit the Lan Sub Mask. So change those two fields in the conf file. Then find "servername=Channel 1" and change "Channel 1" to what you want your Server name to be. In this file you can edit the EXP rate, the Drop Rate, Zuly Rate, and the Welcome message and more things. Save and close the file.

    You do not need to edit the "config.ini"! You have now setup your server!



    --------2.0----------Running the server

    So now run the .exe's in this order: Run "loginserver.exe" and let it load, then run "charserver.exe" and let it load, then run "worldserver.exe".

    That was short and easy!


    --------3.0----------Client Setup

    First, download the ver 139 EVO client:
    Link: Rose Online NA_EVO ver 139 Client
    Then Install the client, after it's installed. Run "ROSEonline.exe" and let it update completely! After it's updated, you MUST run "TriggerDetect.exe" and fill out your Graphic settings, if you do not run TriggerDetect, then the client will not run.

    Next, you abosolutely NEED to download this. This will fix your game from thinking you have a Hacking Tool. GameGuard did an update that disabled most private servers (when you logged in it said "Detected Hacking tool" and closes the game). So to fix this, please download this file below and put it inside your Rose Online client folder and double click it (nothing will happen, it runs in the background). Anyone who trys to connect to your server will need this file.
    Link: Rose Online Game Guard Patch
    - 4/28/07 (Updated to a new working GameGuard patch)

    Throughout the forum you've seen how to connect to your server, with the .bat, EW that's so annoying and not pretty, well I'm going to help you out now. Download this launcher (made by nhed57, all credits to him):
    Link: Rose Online Launcher
    So extract that to your Rose Online folder. (Default should be: C:\Program Files\Triggersoft\Rose Online Evolution). After you extracted the launcher to that folder, go into that folder and find the file named "lconfig.nhd" and open it with Notepad. Inside that file you should see:

    Code:
    [CFG]
    Server=127.0.0.1
    HTTPReg=yourwebcms.com/register.php
    HTTPNot=yourwebcms.com
    The "Server=127.0.0.1" is the IP the client connects to. So change "127.0.0.1" to your WAN IP (which can be found here: http://whatismyip.org ). The "HTTPReg" is the weblink to where your registration is filled out, you don't have to fill that out, you can leave it blank. The "HTTPNot" is your main website link, you don't have to fill this out you can leave it blank. After you have filled it in, save it and close it. You are now done with the client setup.


    --------3.1----------Setting up a webserver + Site

    Throughout the forum topics tell you to use WAMP, well WAMP sucks so we're aren't going to use it. First, download XAMPP (so much better and easier than WAMP).
    Link: Xamplite 1.6.0

    After Xampplite is downloaded, install it. Now after it's installed, go to the Xampp folder, the default location is ( C:\xampplite ). Find "xampp_start.exe" and run it, if everything goes well then it should tell you it's a success. So now bring up your web browser and type in "http://localhost and if the xampp page comes up, then you installed it successfully!

    Next is to download a Rose Web CMS, lots of them are found on the forums. Here is a new one (Credit to -Element):
    Link: Rose CMS v3.2 Lite
    - 1/28/07 (Updated)
    - 2/2/07 Updated to the new FULL Version
    - 4/28/07 (Updated to v3.2 release)


    Next, go to your HTDOCS folder, which is found in the Xampp folder. (Default path is C:\xampp\htdocs ). Delete all the files inside the HTDOCS folder except for the folders "forbidden" and "restricted", please leave those. Then extract the Rose CMS v3.2 Lite you just downloaded to the HTDOCS folder. After you have extracted it, make sure xamp_start.exe is running, if not go back to your xampp root folder ( C:\xampp) and start it. If the webserver is running, bring your web browser up and type "http://localhost" and you should see your Rose CMS v3.2 Lite! Now you need to install the website to make it connect to your database (so you can make accounts). So in your "inc" folder, find the file named "config.php" and edit the Database settings inside there. So follow this pattern:

    Code:
    Database Host: localhost
    Database User: root
    Database Password (use the password you set in MySQL)
    Database Name: roseon
    For the rest of the stuff such as a Server Exp, Server Drop, Client Link, Patch link, you don't need to fill that in. If you want to that's fine, but it's not required. If your database settings are correct, then save the file and try and make an account in your CMS. Now your done!

    If you cannot see your webserver, go down to "-- 9.0: Problems" to fix it.


    --------4.0----------SQL

    SQL is really easy if you just look at it. Let's say you want to change a character's name. You would open up the "Characters" table, and find the character's name you want to change, and change it. And your done! It's really easy. Same for many other things. Such as giving someone zuly. Go into the "Characters" table and find the zuly field, and enter the number of zuly you want that character to have. Inside the SQL you can change many things, the character name, zuly, skills, hair style, face, job/class, and much more. So for your sake, I'll post some useful stuff.

    Class ID's

    To change a character's class, find the field "classid" inside the "Characters" table and change it.

    0, Visitor
    111, Soldier
    121, Knight
    122, Champion
    211, Muse
    221, Mage
    222, Cleric
    311, Hawker
    321, Raider
    322, Scout
    411, Dealer
    421, Bourgeois
    422, Artisan

    ~More SQL things to be added.


    --------5.0----------GM and Commands

    To make a character a GM, go into the "Accounts" table and find the field "accesslevel", a normal characters accesslevel is 100, for a GM it's 300. So to make an account a GM account, change the accesslevel to 300 and your done!

    Next, here the GM commands:

    Code:
    /tele [map] [x] [y]        - teleport
    /b                     - broadcast
    /save                - save character data
    /reload                - reload config.ini
    /ann [msg]            - announcement
    /SSPAWN [monid] [min] [max]    - startspawn
    /SET                - setspawnlocation
    /ESPAWN [monid] [aggressive]    - endspawn
    /DSPAWN [id] [monid] [min] [max] [respawn time] [aggressive]- dupespawn
    /DELETESPAWN [id]        - delete spawn by id        
    /pak                - read packet.txt and send it
    /pak2                - read packet2.txt and send it
    /level [lvl]            - change lvl
    /class [id]          - change your class, must relog after
    /info                - show info
    /exp [amt]            - give yourself exp
    /mon [monid] [count]        - spawn monsters
    /kick [charname]            - kick player from game
    /job [jobname]            - finish first job quest
    /set [id] [refine]         - set full armor to [id] with [refine]
    /cha [slotname] [id] [stats]    - cha slot to [id] with [stats]
    /item [id] [type] [amt]        - get item
    /levelup                - go to next level
    /drop [type] [id]        - drop an item
    /givezuly [charname] [amt]    - give someone zuly
    /npc [id]            - spawn an npc
    /givefairy [charname] [flag]    - give/remove fairy (1/0)
    /move [charname] [map] [x] [y]    - tele someone
    /goto [charname]            - goto someone
    /teletome [charname]        - bring someone here
    /playerinfo [charname]        - get player infor
    /give2 [charname] [id] [type] [amt] - give someone item(s)
    /ban [charname]            - ban a player
    /buff [id]            - buff yourself
    /ani [id]            - do animation
    /summon [monid]            - summon monstor (to help you)
    /reloadquest            - reload quest info
    /shutdown [minutes]        - shutdown server in x minutes
    /dquest                - debug quests
    /iquest [id] <amt>        - get items for quest (i think)
    (Credits to Minoc)


    --------6.0----------Compiling

    First, I've done you a favor and put all the newest sources together for you.
    Link: Newest Sources (Rev 80)
    - 1/30/07 (Emergency Update)
    - 1/30/07 (SQL Update for .sql file, new and improved respawns)
    - 2/8/07 (Rev 16 new files!)
    - 2/11/07 (Updated to Rev 20 new files!)
    - 2/20/07 (Updated to Rev 23 files!)
    - 2/24/07 (Updated to Rev 25 files!)
    - 2/25/07 (Fixed the STB for ver 137!)
    - 3/1/07 (Updated to Rev 30 files!)
    - 3/1/07 (Included the right database)
    - 3/4/07 (Added ver 138 STB!, should fix in-game problems)
    - 4/4/07 (Updated to Rev 41 files!)
    - 4/6/07 (Updated to Rev 45 files!)
    - 4/18/07 (Updated to Rev 59 files!)
    - 4/30/07 (Updated to Rev 60 files!)
    - 6/25/07 (Updated to Rev 76 files!)
    - 10/5/07 (Updated to Rev 80 files!)


    Extract the sources to a new folder somewhere.

    Next you need the compiler, DEV C++ 4.
    Link: DEV C++ 4.9

    After you downloaded DEV C++ 4, install it.

    Then, download the pThread packet and install it.
    Link: pThread

    After that's done, run the program. (Default path is C:\Dev-Cpp ). Now you need the libmysql package. So inside DEV C++, go to the menu "Tools>Check for updates/packages" and select the "devpacks" mirror. Then click "Check for updates" after the list is complete, search through and find "libmysql" and select it and click "Download Selected". After it downloads it will install, so let it install.

    After the libmysql package is installed, we need to change a few lib paths. Open up your project (such as worldserver.dev, which can be found in the "worldserver" folder) Go to menu "Project>project option".
    2. Go to "parameters" tab and change the "C:/Dev-Cpp/lib/libws2_32.a" and "C:/Dev-Cpp/lib/libmysql.a"
    for you correct path.

    Open DEV C++ and in the menu go to "Project>Project Option". Then go to the tab "Parameters" and change the "C:/Dev-Cpp/lib/libws2_32.a" and "C:/Dev-Cpp/lib/libmysql.a" to their correct paths, (look for files in the "lib" folder, and just copy and path).

    Now, to compile the .exe, open the .dev (loginserver.dev, charserver.dev, worldserver.dev) and click on the menu "Execute>Rebuild All". And you have the .exe inside the sources folder!


    --------7.0----------Multi World

    This had to be completely redone because the old version of Multi World did not work. This has now been updated. The only way to get this to work is to edit the source. It's strongly recommended that you know what your doing in the source.


    This will allow you to configure more than one world/char server, while only running on login server, so you can have 2 servers (Maybe a high and low rate) running off one account database, but with seperate character/item/quest/everything else tables.

    You can ignore the extra settings in the conf files unless you want the server to be a slave. To set it up as a slave, make sure to set it's id to something unused, set "serverslave" to 1, change the DATABASE section to the new database (It doesn't need to have a channel or accounts table in it), change the PARENTDB to the main database with the account table, and set everything else up how you would normally set up a server.

    This will work for splitting up a server, so that the master is on one PC, and there is a slave on a second. Just make sure to set up the IP's in the config right, and set up your routers port forwarding.
    #
    #-----[ OPEN ]---------------------------------
    #
    Charserver.conf

    #
    #-----[ FIND ]---------------------------------
    #
    servertype=1

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    serverslave=0

    #
    #-----[ FIND ]---------------------------------
    #
    worldpass=321654

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    [PARENTDB]
    master_host=
    master_user=
    master_pass=
    master_database=
    master_post=3306


    #
    #-----[ OPEN ]---------------------------------
    #
    WorldServer.conf

    #
    #-----[ FIND ]---------------------------------
    #
    servertype=2

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    serverslave=0

    #
    #-----[ FIND ]---------------------------------
    #
    worldpass=321654

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    [PARENTDB]
    master_host=
    master_user=
    master_pass=
    master_database=
    master_post=3306


    #
    #-----[ OPEN ]---------------------------------
    #
    Char Server/CharPackets.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    if(!DoSQL("SELECT username,lastsvr,accesslevel,platinum FROM accounts WHERE id=%i AND password='%s'", thisclient->userid, thisclient->password))
    return false;
    result = mysql_store_result(mysql);

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    if(!DoSQL("SELECT username,lastsvr,accesslevel,platinum FROM accounts WHERE id=%i AND password='%s'", thisclient->userid, thisclient->password))
    return false;
    result = mysql_store_result(mysql);
    } else {
    if(!DoSQLMaster("SELECT username,lastsvr,accesslevel,platinum FROM accounts WHERE id=%i AND password='%s'", thisclient->userid, thisclient->password))
    return false;
    result = mysql_store_result(mysqlmaster);
    }

    #
    #-----[ FIND ]---------------------------------
    #
    if(!DoSQL( "SELECT online FROM accounts WHERE username='%s'", thisclient->username ))
    return false;
    result = mysql_store_result( mysql );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    if(!DoSQL( "SELECT online FROM accounts WHERE username='%s'", thisclient->username ))
    return false;
    result = mysql_store_result( mysql );
    } else {
    if(!DoSQLMaster( "SELECT online FROM accounts WHERE username='%s'", thisclient->username ))
    return false;
    result = mysql_store_result( mysqlmaster );
    }

    #
    #-----[ FIND ]---------------------------------
    #
    if(!DoSQL( "update accounts set online=1 WHERE username='%s'", thisclient->username ))
    return false;

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    if(!DoSQL( "update accounts set online=1 WHERE username='%s'", thisclient->username ))
    return false;
    } else {
    if(!DoSQLMaster( "update accounts set online=1 WHERE username='%s'", thisclient->username ))
    return false;
    }

    #
    #-----[ FIND ]---------------------------------
    #
    if(!DoSQL("UPDATE accounts SET lastchar='%s' WHERE id=%i", thisclient->charname, thisclient->userid))
    return false;
    if(!DoSQL("SELECT host,port,lanip,lansubmask FROM channels WHERE id=%u and owner=%u and type=2", thisclient->channel, Config.ServerID))
    return false;
    result = mysql_store_result( mysql );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    if(!DoSQL("UPDATE accounts SET lastchar='%s' WHERE id=%i", thisclient->charname, thisclient->userid))
    return false;
    if(!DoSQL("SELECT host,port,lanip,lansubmask FROM channels WHERE id=%u and owner=%u and type=2", thisclient->channel, Config.ServerID))
    return false;
    result = mysql_store_result( mysql );
    } else {
    if(!DoSQLMaster("UPDATE accounts SET lastchar='%s' WHERE id=%i", thisclient->charname, thisclient->userid))
    return false;
    if(!DoSQLMaster("SELECT host,port,lanip,lansubmask FROM channels WHERE id=%u and owner=%u and type=2", thisclient->channel, Config.ServerID))
    return false;
    result = mysql_store_result( mysqlmaster );
    }


    #
    #-----[ OPEN ]---------------------------------
    #
    Char Server/Charserver.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
    }

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
    }
    } else {
    DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQLMaster("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%i,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.CharIP, Config.CharPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to CharServer" );
    }
    }

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
    result = mysql_store_result(mysql);

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
    result = mysql_store_result(mysql);
    } else {
    DoSQLMaster( "SELECT host,port,lanip FROM channels WHERE id=%u and type=0", Config.ParentID );
    result = mysql_store_result(mysqlmaster);
    }

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    DoSQL( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );
    } else {
    DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=2", thischannel->id );
    }

    #
    #-----[ FIND ]---------------------------------
    #
    Config.SQLServer.pcPort = ConfigGetInt ( file, "mysql_port", 3306 );

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    //Master Database
    Config.isSlave = ConfigGetInt ( file, "serverslave", 0 );
    Config.SQLMaster.pcServer = ConfigGetString ( file, "master_host", "localhost" );
    Config.SQLMaster.pcDatabase = ConfigGetString ( file, "master_database", "roseon_beta" );
    Config.SQLMaster.pcUserName = ConfigGetString ( file, "master_user", "root" );
    Config.SQLMaster.pcPassword = ConfigGetString ( file, "master_pass", "" );
    Config.SQLMaster.pcPort = ConfigGetInt ( file, "master_port", 3306 );


    #
    #-----[ OPEN ]---------------------------------
    #
    Char Server/Main.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    MYSQL mysql;

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    MYSQL mysqlmaster;

    #
    #-----[ FIND ]---------------------------------
    #
    if(server==NULL)
    return -1;

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    if (server->Config.isSlave) {
    mysql_init( &mysqlmaster );
    // Connect mysqlmaster
    if ( !mysql_real_connect( &mysqlmaster, server->Config.SQLMaster.pcServer,
    server->Config.SQLMaster.pcUserName,
    server->Config.SQLMaster.pcPassword,
    server->Config.SQLMaster.pcDatabase,
    server->Config.SQLMaster.pcPort, NULL, 0 ) )
    {
    Log( MSG_FATALERROR, "Error connecting to MySQL master server: %s\n", mysql_error( &mysqlmaster ) );
    system("PAUSE");
    return -1;
    }
    else
    {
    Log( MSG_INFO, "Connected to MySQL master server" );
    }
    server->mysqlmaster = &mysqlmaster;
    }

    #
    #-----[ FIND ]---------------------------------
    #
    // Close server
    #
    #-----[ AFTER, ADD ]---------------------------
    #
    if (server->Config.isSlave)
    mysql_close( &mysqlmaster );


    #
    #-----[ OPEN ]---------------------------------
    #
    World Server/gmcmds.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave)
    DoSQL( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);
    else
    DoSQLMaster( "UPDATE accounts SET accesslevel='0' WHERE id=%i", otherclient->PlayerSession->userid);


    #
    #-----[ OPEN ]---------------------------------
    #
    World Server/Main.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    MYSQL mysql;

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    MYSQL mysqlmaster;

    #
    #-----[ FIND ]---------------------------------
    #
    // Connect mysql

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    if (server->Config.isSlave) {
    mysql_init( &mysqlmaster );
    // Connect mysqlmaster
    if ( !mysql_real_connect( &mysqlmaster, server->Config.SQLMaster.pcServer,
    server->Config.SQLMaster.pcUserName,
    server->Config.SQLMaster.pcPassword,
    server->Config.SQLMaster.pcDatabase,
    server->Config.SQLMaster.pcPort, NULL, 0 ) )
    {
    Log( MSG_FATALERROR, "Error connecting to MySQL master server: %s\n", mysql_error( &mysqlmaster ) );
    system("PAUSE");
    return -1;
    }
    else
    {
    Log( MSG_INFO, "Connected to MySQL master server" );
    }
    server->mysqlmaster = &mysqlmaster;
    }

    #
    #-----[ FIND ]---------------------------------
    #
    // Close server

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    if (server->Config.isSlave)
    mysql_close( &mysqlmaster );


    #
    #-----[ OPEN ]---------------------------------
    #
    startup.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL("UPDATE accounts set online=0");

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave)
    DoSQL("UPDATE accounts set online=0");
    else
    DoSQLMaster("UPDATE accounts set online=0");


    #
    #-----[ OPEN ]---------------------------------
    #
    World Server/Worldclient.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    GServer->DoSQL("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!GServer->Config.isSlave)
    GServer->DoSQL("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );
    else
    GServer->DoSQLMaster("UPDATE accounts SET online=true where id=%u", PlayerSession->userid );

    #
    #-----[ FIND ]---------------------------------
    #
    if(!GServer->DoSQL("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
    return;

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!GServer->Config.isSlave) {
    if(!GServer->DoSQL("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
    return;
    } else {
    if(!GServer->DoSQLMaster("update accounts set zulystorage = %i where id = %i", PlayerInfo->Storage_Zulies, PlayerSession->userid))
    return;
    }


    #
    #-----[ OPEN ]---------------------------------
    #
    World Server/WorldPackets.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    if(!DoSQL("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
    return true;
    result = mysql_store_result(mysql);

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    if(!DoSQL("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
    return true;
    result = mysql_store_result(mysql);
    } else {
    if(!DoSQLMaster("SELECT username,lastchar,accesslevel,zulystorage FROM accounts WHERE id=%i AND password='%s'", thisclient->PlayerSession->userid, thisclient->PlayerSession->password))
    return true;
    result = mysql_store_result(mysqlmaster);
    }


    #
    #-----[ OPEN ]---------------------------------
    #
    /World Server/WorldServer.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    CWorldClient* CWorldServer::CreateClientSocket( )
    {
    DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    CWorldClient* CWorldServer::CreateClientSocket( )
    {
    if (!Config.isSlave)
    DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
    else
    DoSQLMaster( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );

    #
    #-----[ FIND ]---------------------------------
    #
    void CWorldServer::DeleteClientSocket( CClientSocket* thisclient )
    {
    DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    void CWorldServer::DeleteClientSocket( CClientSocket* thisclient )
    {
    if (!Config.isSlave)
    DoSQL( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );
    else
    DoSQLMaster( "UPDATE channels SET connected=%i where id=%i and type=2", ConnectedClients, Config.ServerID );

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
    }

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    DoSQL( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQL("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
    }
    } else {
    DoSQLMaster( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );
    if(!DoSQLMaster("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",
    Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))
    {
    Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );
    }
    }

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
    result = mysql_store_result(mysql);

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave) {
    DoSQL( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
    result = mysql_store_result(mysql);
    } else {
    DoSQLMaster( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );
    result = mysql_store_result(mysqlmaster);
    }

    #
    #-----[ FIND ]---------------------------------
    #
    DoSQL("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );

    #
    #-----[ REPLACE WITH ]-------------------------
    #
    if (!Config.isSlave)
    DoSQL("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );
    else
    DoSQLMaster("UPDATE accounts SET online=false where id=%u", thisclientwc->PlayerSession->userid );

    #
    #-----[ FIND ]---------------------------------
    #
    Config.SQLServer.pcPort = ConfigGetInt ( file, "mysql_port", 3306 );

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    //Master Database
    Config.isSlave = ConfigGetInt ( file, "serverslave", 0 );
    Config.SQLMaster.pcServer = ConfigGetString ( file, "master_host", "localhost" );
    Config.SQLMaster.pcDatabase = ConfigGetString ( file, "master_database", "roseon_beta" );
    Config.SQLMaster.pcUserName = ConfigGetString ( file, "master_user", "root" );
    Config.SQLMaster.pcPassword = ConfigGetString ( file, "master_pass", "" );
    Config.SQLMaster.pcPort = ConfigGetInt ( file, "master_port", 3306 );


    #
    #-----[ OPEN ]---------------------------------
    #
    Common/Socket.h

    #
    #-----[ FIND ]---------------------------------
    #
    CROSEServerConfigSQL SQLServer; // SQL Information

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    CROSEServerConfigSQL SQLMaster; // SQL Server ref for master server, if a slave
    bool isSlave; // Is the server a slave?

    #
    #-----[ FIND ]---------------------------------
    #
    bool DoSQL(char *Format, ...); // Do SQL Query

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    bool DoSQLMaster(char *Format, ...); // Do SQL Query

    #
    #-----[ FIND ]---------------------------------
    #
    pthread_mutex_t sqlmutex;

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    MYSQL* mysqlmaster;
    pthread_mutex_t sqlmutexmaster;


    #
    #-----[ OPEN ]---------------------------------
    #
    Common/Socketserver.cpp

    #
    #-----[ FIND ]---------------------------------
    #
    pthread_mutex_init( &sqlmutex, NULL );

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    pthread_mutex_init( &sqlmutexmaster, NULL);

    #
    #-----[ FIND ]---------------------------------
    #
    pthread_mutex_destroy( &sqlmutex );

    #
    #-----[ AFTER, ADD ]---------------------------
    #
    pthread_mutex_destroy( &sqlmutexmaster );

    #
    #-----[ APPEND TO END OF FILE ]----------------
    // Do sql query
    bool CServerSocket::DoSQLMaster(char *Format, ...)
    {
    pthread_mutex_lock( &sqlmutexmaster );
    char Buffer[1000];
    memset( &Buffer, '\0', 1000 );
    va_list ap; va_start( ap, Format );
    vsprintf( Buffer, Format, ap );
    va_end ( ap );
    int mres = mysql_query( mysqlmaster, Buffer );
    if (mres!=0)
    {
    Log( MSG_SQL, "Could not execute query: %s", mysql_error( mysqlmaster ) );
    Log( MSG_SQL, "Query: %s", Buffer );
    int pres = mysql_ping( mysqlmaster );
    if(pres!=0)
    {
    Log( MSG_INFO, "Trying to reconnect to Mysql..." );
    if ( !mysql_real_connect( mysqlmaster, this->Config.SQLMaster.pcServer,
    this->Config.SQLMaster.pcUserName,
    this->Config.SQLMaster.pcPassword,
    this->Config.SQLMaster.pcDatabase,
    0, NULL, 0 ) )
    {
    Log( MSG_SQL, "Failed to reconnect to Mysql master server" );
    pthread_mutex_unlock( &sqlmutexmaster );
    return false;// we should close server?
    }
    else
    {
    Log( MSG_INFO, "Reconnected to Mysql master server, Trying to do Query Again..." );
    for(UINT i=0;i<3;i++)//will try to make the query 3 times
    {
    int mres = mysql_query( mysqlmaster, Buffer );
    if(mres==0)
    {
    pthread_mutex_unlock( &sqlmutexmaster );
    return true;
    }
    }
    Log( MSG_SQL, "Could not Execute query: %s" ,mysql_error( mysqlmaster ) );
    Log( MSG_SQL, "Query: %s", Buffer );
    pthread_mutex_unlock( &sqlmutexmaster );
    return false; // we should close server?
    }
    }
    }
    else
    {
    Log( MSG_QUERY, "Query: %s", Buffer );
    pthread_mutex_unlock( &sqlmutexmaster );
    return true;
    }
    }
    Credits to drakia for figuring this one out.


    --------8.0----------Extras

    This is an document that contains the GM Commands.

    Link: GM Commands

    This is an Excel/Spreadsheet document that contains the Item ID's.

    Link: Item ID's

    This ia Text Document that contains all the teleport locations and their Map ID's.

    Link: Locations and Map ID's

    Here is a .VFS editor, where you can edit your .vfs and client graphics. Such as characters, loading screens, weapons, and lots more. (Credit to aurose)

    Link: VFSnextgen

    Here are the compiled EXE's incase you loose yours (loginserver.exe, charserver.exe, worldserver.exe)
    Link: Compiled EXE's (Rev 80)
    - 1/29/07 (Emergency Update)
    - 2/8/07 (Updated to Rev 16 new files!)
    - 2/11/07 (Updated to Rev 20 new files!)
    - 2/20/07 (Updated to Rev 23 files!)
    - 2/24/07 (Updated to Rev 25 files!)
    - 3/1/07 (Updated to Rev 30 files!)
    - 4/4/07 (Updated to Rev 41 files!)
    - 4/6/07 (Updated to Rev 45 files!)
    - 4/18/07 (Updated to Rev 59 files!)
    - 4/30/07 (Updated to Rev 60 files!)
    - 6/25/07 (Updated to Rev 76 files!)
    - 10/5/07 (Updated to Rev 80 files!)



    Here are some RARE outfits (armors/clothes). Credit to Intro.

    Code:
    Durable armour: 38,2-5,9,1,1,1
    
    Cedric Armour: 39,2-5,9,1,1,1
    
    Executioner Armour: 40,2-5,9,1,1,1
    
    Pirate Armour: 551,3-5,9,1,1,1
    
    Silent Walker: 561,3-5,9,1,1,1
    
    Captaian Armour: 571,2-5,9,1,1,1
    
    Trigger hat: 661,2,9,1,1,1
    
    Bomber Armour: 661,3-5,9,1,1,1
    
    Bourgoise Armour: 776(hat),676,3-5,9,1,1,1
    
    Fairy armour:445,3-5,9,1,1,1 551,2 (hat)
    
    Joker Armour: 561,2(hat),461,3-5,9,1,1,1
    
    Mistic Armour: 465,3-5,9,1,1,1,565(hat)
    
    Black Cross Backshield: 770,6,9,1,1,1
    
    White School Girl: 187,3&5,9,1,1,1
    
    Black School: 181,3&5,9,1,1,1
    
    Dolphin: 769,6,9,1,1,1
    
    Kerokero Umbrella: 768,6,9,1,1,1
    
    Thor's Bass Drum: 767,6,9,1,1,1
    
    Elementary School Bag: 766,6,9,1,1,1
    
    Astrot Pink Wing: 764,6,9,1,1,1
    
    Astrot White Wing: 763,6,9,1,1,1
    
    Astrot Silver Wing: 762,6,9,1,1,1
    
    Cart Racer Vest: 130,2-5,9,1,1,1
    
    Blue Santa: 180,3-5,9,1,1,1
    
    GM Suit: 151,2-5,9,1,1,1
    
    Nobel Lord: 132,2-5,9,1,1,1
    
    Magic School Hat: 824,2,9,1,1,1
    
    Angel Hat: 825,2,9,1,1,1
    
    Kerokero Hat: 826,2,9,1,1,1
    
    Headband: 827,2,9,1,1,1
    
    Yukata: 188,3,9,1,1,1
    
    Trendy Swim Suit: 182,3,9,1,1,1
    
    pRose soccer: 174,3,9,1,1,1
    
    NArose soccer: 173,3,9,1,1,1
    
    jRose soccer: 172,3,9,1,1,1
    
    kRose soccer: 171,3,9,1,1,1
    
    rose soccer: 170,3,9,1,1,1
    
    Yellow Rubber Boots: 182,5,9,1,1,1
    
    Wooden Shoes: 183,5,9,1,1,1
    
    White Magic School Shoes: 188,5,9,1,1,1
    
    Durable Gloves: 38,4,9,1,1,1
    
    White magic school gloves: 186,4,9,1,1,1
    
    Cherry Blossem Glasses: 166,1,9,1,1,1
    
    Snow Board: 37,9,9,1,1,1
    
    Goblin Hatchet: 150,8,9,1,1,1
    
    Reams Puricator: 182,8,9,1,1,1
    
    Pink Guitar: 462,8,9,1,1,1
    
    Angel Recorder: 463,8,9,1,1,1
    
    Rose Beuque: 464,8,9,1,1,1
    
    blue santa hat: 823,2,9,1,1,1
    
    Pigtail ribbon: 833,2,9,1,1,1
    
    Students cap: 834,2,9,1,1,1
    
    White lion: 835,2,9,1,1,1
    
    Chef hat: 836,2,9,1,1,1
    
    Summer school look: 189,3,9,1,1,1
    
    tiger backshield: 246,6,9,1,1,1
    
    snowball: 326,10,9,1,1,1
    
    firecracker: 930,10,9,1,1,1
    
    (2,376,3rd job helmit,soldier
    
    (3,376,3rd job armour,soldier
    
    (4,376,3rd job gloves,soldier
    
    (5,376,3rd job boots,soldier
    
    (2,476,3rd job helmit,muse
    
    (3,476,3rd job armour,muse
    
    (4,476,3rd job gloves,muse
    
    (5,476,3rd job boots,muse
    
    (2,576,3rd job helmit,Dealer
    
    (3,576,3rd job armour,Dealer
    
    (4,576,3rd job gloves,Dealer
    
    (5,576,3rd job boots,Dealer
    
    (2,676,3rd job helmit,Hawker
    
    (3,676,3rd job armour,Hawker
    
    (4,676,3rd job gloves,Hawker
    
    (5,676,3rd job boots,Hawker


    --------9.0----------Problems and Errors

    Server Side

    1.) How do I change the EXP, DROP, ZULY rate?
    Solution: Inside the worldserver.conf are options to change the rates.

    2.) How do I change the Welcome Message when I login?
    Solution: You can change the Welcome message inside the worldserver.conf

    3.) My WorldServer.exe keeps crashing!
    Solution: You are missing some files, or you compiled it wrong. Re-extract the files, or if you compiled, check your sources again.

    4.) When I try to connect with Navicat, it says it can't connect to MySQL!
    Solution: You need to install MySQL. Download here: MySQL 5.0

    Client Side

    1.) When I launch my client, it just crashes with the error "Send/Don't Send"!
    Solution: Run "TriggerDetect.exe" and fill out your graphics settings (only need to do this once)

    2.) After I type in my account and password and click login, and stays at "Logging in" forever!
    Solution: Make sure you have the launcher file set to your correct IP. And check your .confs and make sure the IP's are correct (your WAN IP).

    3.) All my IP's are correct, but I still can't login!
    Solution: You need to port forward your Rose Online ports. Go to PortForward.com - Free Help Setting up Your Router or Firewall and find your router, it will instruct you on how to port forward.

    The ports you need to forward are: 29000, 29100, 29200
    If your using the multi world, you need to forward: 29000, 29100, 29200, 29101, 29201

    4.) When I try to login, I get "The Servers are currently undergoing maintenance"
    Solution: Make sure your using the latest Rose EVO client and server files, and your ports or forwarded and that you have applied the GameGuard patch (new at 4/28/07) after your last client update.

    5.) After I select the server, it says "Loading Avatar Selection.." forever!
    Solution: Make sure your have port forwarded.

    The ports are: 29000, 29100, 29200.

    Web Server Side

    1.) When I type "http://localhost" , nothing shows up and xampp_start.exe is running!
    Solution: You need to port forward a port. Go to PortForward.com - Free Help Setting up Your Router or Firewall and find your router, it will instruct you on how to port forward.

    The ports you need to forward are: 80

    2.) I installed PHP, and Xampp, and port forwarded and "http://localhost" still isn't working!
    Solution: Restart your computer and your router

    3.) On the Rose Online Web, I fill in the details to make my account, and I click "Create" but it doesn't create the account!
    Solution: Go back inside the config file and double check to make sure your database settings are absolutely correct.

    4.) How can I allow other people to see my website, instead of "http://localhost" ?
    Solution: Port forward the port "80" and instead of "http://localhost", use your WAN IP (which you can find here: http://whatismyip.org ).

    For example: "http://localhost" http://yourwanip



    --------10.0----------Notes

    - I believe I have credited anyone that I used information from, if not please PM me and I will add it.

    - Please do not add me on MSN or Spam my PM box, I will not help you over an Instant Messaging program. Just post here and I will help you.

    - If you have anything you would like to add to this, please PM it to me and I'll be sure to add it in!

    - If you find something that is incorrect inside this guide, please post here or PM me and I will fix it right away.

    - If any of the links go dead, let me know and I'll re-upload them.

    - I will ALWAYS update the links once a new update comes.

    All these files are for the newest version which is ver 141, and everything works with the newest 141 client! Even the new drops. Once a new release (client/server) is released, I will update the links and you can check the update information that I will post in every edit below.

    If the guide is a bit confusing for you, let me know and I'll try and make it easier. At the moment I'm going through and trying to make the SQL part a bit easier for you to understand.

    Thank you, and hope this helps lots of people.


    --------10.1----------Updates

    10/6/07 - Updated and moved the MySQL step of the guide. Moved it to the top so it makes more sense. Also updated the Navicat guide (always use "root" for a password, not blank). Rewriting the Navicat guide to match the new version is coming soon. Part of the Grand Update.

    10/5/07 - Updated to Rev 80, updated guide, updated Navicat version, and updated MySQL version. Part of the Grand Update.

    6/25/07 - Updated to the new files Rev 76! For more information on this Rev, go to this post: Rev 76 Info Post

    4/30/07 - Updated to the new files Rev 60! For more information on this Rev, go to this post: Rev 60 Info Post

    4/29/07 - Updated every link to the new Rose Downloads center. Also updated the problems section with questions and solutions and some o ther misc updates.


    4/29/07 - Updated the "worldserver.conf" example in the Server Setup section.

    4/28/07 - Updated GameGuard fix with a new working fix, removed Custom hairs since the topic does not exist anymore, updated the Web CMS section with a new CMS (RoseOnlineCMS v3.2 Lite).

    4/18/07 - Updated to REV 59 files! For more information on this Rev, go to this post: Rev 59 Info Post

    4/6/07 - Updated to REV 45 files! For more information on this Rev, go to this post: Rev 45 Info Post

    4/4/07 - Updated to REV 41 files! Lots and lots of bug fixes in this Rev. For more information on this Rev, go to this post: Rev 41 Info Post


    3/4/07 - Added in ver 138 STB into Fullserver (v16) and the Sources files. DOWNLOAD these files, they will fix a lot of in-game problems you have.


    3/1/07 - Minor update, I included the correct database in the Fullserver_v15 and Source files.

    3/1/07 - Updated the files to REV 30! The server setup part in the guide has changed (because configuration has changed). Please go re-read it! For more information about Rev 30, please view this post: Rev 30 Info Post

    2/25/07 - Updated the Fullserver and the Sources files with the STB files of ver 137 (this fixes some in game bugs/crashes). I forgot to previously add them in, so update your files now.

    2/24/07 - Updated the files to Rev 25, and SERIOUSLY updated the guide. This includes changing the configuration of the server files, configuring the SQL, changing the SQL parts, added how to install and configure MySQL. For more information about the server files (bug fixes), please view this post: Rev 25 Info Post

    2/20/07 - Updated to Rev 23, which includes a lot of bug fixes and additions! These files include a new .SQL file and are more stable! For more information, view this post: Rose Rev 23 Info Post

    2/11/07 - Updated the Problems section with a Navicat problem/solution.

    2/11/07 - Updated the Compiling guide with the link to pThread (Must install this to compile now)

    2/11/07 - Updated to Rev 20 new files! Tons of new bug fixes since Rev 16. For more information about the new files, please see this post: Rev 20 Info Post

    2/8/07 - Updated to REV 16 (The new files!) Lots of bug fixes. For more info, see this post: Rev 16 Info Post

    2/2/07 - Updated the Rose Online CMS to -Elements Full version.

    1/30/07 - Updated Fullserver, and Source files with a new .SQL, this includes improved respawns in game. Please download the Fullserver ver 4.1 and update your SQL.

    1/29/07 - Updated Fullserver, Sources, and CompiledEXE files due to an Emergency update, this fixes the allow of normal players to use GM Commands, and fixes the comands for GM's. Please update your files to the new ones.

    1/28/07 - Security Update! Fixes crash when a normal user types / in chat. Please download the new Fullserver at the top (v3)

    1/28/07 - Important Update (SQL Update with tons of new spawns, fixes, npc fixes, map fixes, quest data fixes, pvpzones, telegates, drop data, and more)

    1/28/07 - Updated Compiled EXE's and Sources with newest sources
    1/28/07 - Updated commands with the /class command.
    1/28/07 - Updated the config.ini in "Fullserver_v2.rar" to work with the sql name.
    1/28/07 - Updated database name, it's "rosen_beta" not "roseon_beta".
    1/28/07 - Updated the Rose Web CMS to a newer one, and rewrote the explanation.
    1/28/07 - Fullserver files have been updated to ver 133 STB, please update your files.
    1/28/07 - Updated the DEV C++ Link to 4.9 (Working version)
    1/27/07 - Fixed the Rare Avatars.
    1/27/07 - Added compiled EXE's.
    1/27/07 - Added Client Problem/Solution.
    1/27/07 - Fixed DEV C++ Project Options part.
    Last edited by Akai; 22-03-08 at 04:40 PM.


  2. #2
    Valued Member antiemo is offline
    MemberRank
    Nov 2006 Join Date
    142Posts
    now thats a guide.
    really good job really detailed man!

  3. #3
    Alpha Member Akai is offline
    MemberRank
    Mar 2006 Join Date
    x Infinity +1Location
    2,737Posts
    Quote Originally Posted by antiemo View Post
    now thats a guide.
    really good job really detailed man!
    Thanks mate, hope people can use it well.

  4. #4
    Proficient Member Almonjin is offline
    MemberRank
    Sep 2006 Join Date
    In your basemenLocation
    157Posts
    i havn't done this yet, but it looks VERY promising, thanks for the thread/guide

  5. #5
    Account Upgraded | Title Enabled! MjClarke1 is offline
    MemberRank
    Jun 2006 Join Date
    London, OntarioLocation
    644Posts
    Very nice guide, it will be very helpful to anyone who is making a server. I had to use that old guide at first x.x

  6. #6
    Alpha Member Akai is offline
    MemberRank
    Mar 2006 Join Date
    x Infinity +1Location
    2,737Posts
    Tomorrow I will be adding a Video Guide on setting up the server + multi world.

  7. #7
    Job Accomplished! locolijo is offline
    MemberRank
    Jul 2006 Join Date
    Inside a ServerLocation
    546Posts
    In the step

    Code:
    After you downloaded DEV C++ 4, install it. After that's done, run the program. (Default path is C:\Dev-Cpp ). Now you need the libmysql package. So inside DEV C++, go to the menu "Tools>Check for updates/packages" and select the "devpacks" mirror. Then click "Check for updates" after the list is complete, search through and find "libmysql" and select it and click "Download Selected". After it downloads it will install, so let it install.
    "Tools>Check for updates/packages" doesnt excist.

    Also the Check for updates is in "Help"

    And in Tools > Package Manager is empty.

    Ok what you have to do is install the lastest beta or released then continue with the steps. Because the version 4.x doesnt have the same menu.

    Hope this help.
    Last edited by locolijo; 28-01-07 at 03:45 AM.

  8. #8
    Enthusiast chaicity is offline
    MemberRank
    Nov 2004 Join Date
    xxxxxxLocation
    41Posts
    very good .......................

    i want ..
    your server
    "Step 1: First download this full server I have put together for you.
    Link: Full Server"

    NPC work ?? &#37;
    Quest work ?? %
    Job work ?? %
    Shop work ?? %
    Monster work ?? %

  9. #9
    Alpha Member Akai is offline
    MemberRank
    Mar 2006 Join Date
    x Infinity +1Location
    2,737Posts
    Quote Originally Posted by locolijo View Post
    In the step

    Code:
    After you downloaded DEV C++ 4, install it. After that's done, run the program. (Default path is C:\Dev-Cpp ). Now you need the libmysql package. So inside DEV C++, go to the menu "Tools>Check for updates/packages" and select the "devpacks" mirror. Then click "Check for updates" after the list is complete, search through and find "libmysql" and select it and click "Download Selected". After it downloads it will install, so let it install.
    "Tools>Check for updates/packages" doesnt excist.

    Tools " Compile Result | Tool Configuration | Dos Shell | Explorer | Package Manager | Setup Creator.

    Thats all I have in Tools.

    Also the Check for updates is in "Help"

    And in Tools > Package Manager is empty.

    What Im doing wrong.
    Its not "Tools>Package Manager" its "Project>Project Options". And I fixed the DEV C++ part about Project options, you have to open the .dev file first. And "Check for Updates/Packages' is in tools. Not under help, you may be using an older version. Download the version I have provided.


    Quote Originally Posted by chaicity View Post
    very good .......................

    i want ..
    your server
    "Step 1: First download this full server I have put together for you.
    Link: Full Server"

    NPC work ?? %
    Quest work ?? %
    Job work ?? %
    Shop work ?? %
    Monster work ?? %
    Yes it all works.

  10. #10
    Apprentice andyopzhink is offline
    MemberRank
    Jul 2005 Join Date
    ☼localhost☼Location
    17Posts
    Akai Thanks man.
    it's a cool Guide and all links still alive...
    Thanks again.. ("^_^) v
    Last edited by andyopzhink; 24-03-07 at 11:14 PM.

  11. #11
    Meh Matt is offline
    MemberRank
    Aug 2006 Join Date
    Ontario, CanadaLocation
    1,745Posts
    AKAI!, Why are you posting RoseWeb 1.0? That's outdated.


    Accedd denied
    Last edited by Matt; 28-01-07 at 04:11 AM.

  12. #12
    Alpha Member Akai is offline
    MemberRank
    Mar 2006 Join Date
    x Infinity +1Location
    2,737Posts
    Quote Originally Posted by -Element View Post
    AKAI!, Why are you posting RoseWeb 1.0? That's outdated.


    Accedd denied
    I just found it real quick, the ones you posted didn't work (because of the MD5 encryp, you didn't have it). Does this version have the MD5 encryption in it, and does it all work?

  13. #13
    bankai Zaraki Kenpachi is offline
    MemberRank
    Aug 2006 Join Date
    Soul SocietyLocation
    1,283Posts
    gj Akai

  14. #14
    Valued Member inaproo is offline
    MemberRank
    Aug 2006 Join Date
    That orange Netherlands!! xDLocation
    121Posts
    Can someone please upload the server files to Megaupload or some other host rapidshare is a bit slow and its down-_-

  15. #15
    Meh Matt is offline
    MemberRank
    Aug 2006 Join Date
    Ontario, CanadaLocation
    1,745Posts
    Ill add the MD5 encryption RIGHT now.

    ----=Edit=----: MD5 Encryption Added.
    Last edited by Matt; 28-01-07 at 05:08 AM.



Page 1 of 291 1234567891151101 ... LastLast

Advertisement