Original Link: http://herc.ws/board/topic/13146-guide-create-your-server-client-201608/
Hello,
For some reason, I decided to write my own guide for super newbie people. And when I say newbie, I say REAL newbie. I will not ask you to learn anything or saying rude things like "go google ffs".
I believe people that want to create their server are not necessary interested being a linux master or whatever. Never people are saying that before leaning guitar, people should learn how string and guitar are made.
Enough talk, lets start !
Prerequisites
- Patience, meticulousness, cogitation
- kRO full client: Mirror #1 (mediafire), Mirror #2 (Direct Link from my ftp)
- kRO last actual compatible exe: Mirror #1 (mega.nz), Mirror #2 (Direct Link from my ftp)
- Setup exe: Download (Page), Mirror #1 (Direct Link from my ftp)
- N.E.M.O. Diff Patcher Download (git)
- BGM parameter files. Download (Direct Link herc.ws), Mirror #1 (Direct Link from my ftp)
- Translation Package. Download (git)
- Putty: Download (Page)
- If Putty does not work, use Kitty Download (Page)
- 1~2 hours of your time
Things you should know:
- You cannot see password in Putty / Kitty when you type it.
- nano is a text editor. At the bottom of the screen you can see a menu. To use it, press CTRL + the option's letter
- You cannot use numeric pad in nano
- Being polite is always rewarding
I. Dedicated server
A. Get your server
- You can find very cheap solution at Kimsufi. Choose anything you want.
- I recommend you to choose Debian 8 (Jessie) for your OS.
- In Kimsufi manager, you will find your server IP.
- You have your login (root) and password in an email after installing the OS
B. Configure your server
- Start Putty and enter server's IP address
- Connect with root then type the password you got by email. (You wont see " * " when you type)
- To change your password enter the following line
- passwd
- Install required package by enter this (copy this and paste it with a right-click):
- apt-get install git make gcc mysql-server libmysqlclient-dev zlib1g-dev libpcre3-dev screen
- ?The following is meant to make a web server. Even if you don't plan to make a website, I suggest you to take it, just because phpmyadmin is easy to use. While installing phpmyadmin, select apache2.
- apt-get install apache2
- apt-get install php5 php5-cli libapache2-mod-php5 php5-mysql
- apt-get install phpmyadmin
- ln -s /usr/share/phpmyadmin /var/www/html/
- ?Because hercules doesn't work if you use root login, we will create a new user.
- useradd ragnarok
- passwd ragnarok [choose_a_password]
- Connect to phpmyadmin and login with the information you chose at this address: http://your_server_ip/phpmyadmin
- Create a new database ragnarok and choose utf8_unicode_ci as collation
- Create another database and name it ragnarok_log with same collation
- Click on the tab Users (top of the page), Add User and fill the form.
- Username: ragnarok,
- password: [choose_a_assword],
- Click on Check All in the privilege group. (or if you know what are you doing, select options you need)
- Now you can log out from your server in Putty
- logout
C. Install Hercules
- Login again in Kitty with the new user ragnarok
- Download Hercules emulator
- git clone https://github.com/H...WS/Hercules.git ~/Hercules
- We will need to reach the database installation folder:
- cd Hercules/sql-files/
- We will now import tables in the database. You will have to write your mysql password each time (set in step B.4).
- mysql -u ragnarok -p ragnarok < main.sql
- mysql -u ragnarok -p ragnarok_log < logs.sql
- mysql -u ragnarok -p ragnarok < item_db2.sql
- mysql -u ragnarok -p ragnarok < mob_db2.sql
- mysql -u ragnarok -p ragnarok < mob_skill_db2.sql
- if you want to make a PRE-RENEWAL server, enter also this
- mysql -u ragnarok -p ragnarok < item_db.sql
- mysql -u ragnarok -p ragnarok < mob_db.sql
- mysql -u ragnarok -p ragnarok < mob_skill_db.sql
- If you want to make a RENEWAL server:
- mysql -u ragnarok -p ragnarok < item_db_re.sql
- mysql -u ragnarok -p ragnarok < mob_db_re.sql
- mysql -u ragnarok -p ragnarok < mob_skill_db_re.sql
D. Configure hercules
- It is required to set up a server login and password for char-server, map-server and the login database. It can be done by editing few files and the table login.
- Start by editing conf/inter-server.conf.
- cd ../??
- nano conf/inter-server.conf
- Find the line sql.db_username and fill it with the user and password we created in step B.10. fill also the database name with ragnarok
- As the same time, you will need to edit conf/import/inter_conf.txt.
-
nano conf/import/inter_conf.txt
-
sql.db_username: ragnaroksql.db_password: your_sql_passwordsql.db_database: ragnarok
-
log_db_id: ragnaroklog_db_pw: your_sql_passwordlog_db_db: ragnarok_log
-
-
now edit conf/import/char_conf.txt and fill it with this following text
-
nano conf/import/char_conf.txt
-
// Server Communication username and password.
userid: [new user]
passwd: [new password]
-
-
Do the same to conf/import/map_conf.txt with the same userid and passwd.
-
nano conf/import/map_conf.txt
-
// Server Communication username and password.userid: [new user]
passwd: [new password]
-
-
You will need to update the login table from ragnarok database. Connect again to your phpmyadmin (I.B.7)
-
Find the table login and edit the only row available.
-
userid must have the same value as [new user]
-
user_pass must have the same value as [new password]
-
-
char-server.conf
-
nano conf/char-server.conf
-
server_name: [your_server_name]
-
wisp_server_name: Admin
-
-
For some reason, you must reboot your server.
-
reboot
-
-
Close the Terminal and connect again after a minute.
-
Now you will need to work on your server ports
-
iptables -I INPUT 1 -p tcp --dport 6900 -j ACCEPT
-
iptables -I INPUT 1 -p tcp --dport 5121 -j ACCEPT
-
iptables -I INPUT 1 -p tcp --dport 6121 -j ACCEPT
-
iptables save
-
-
We are done with the server for now. You can log out if you want. Lets prepare our client!
- Extract the full client in C:\ro_client\RO\ and launch update with rsu-kro-renewal-lite.exe or rsu-kro-rag-lite.exe if you set a pre-re server.
- Extract the Ragexe.exe in C:\ro_client\fresh\
- Extract data and System folders from the translation Package in C:\ro_client\fresh\
- Extract the opensetup.exe in C:\ro_client\fresh\
- Extract Mssfast.m3d and Mp3dec.asi from BGM.zip in C:\ro_client\fresh\
- Extract N.E.M.O. content in C:\ro_client\NEMO\
- Once Step 1 is DONE:
- Copy All *.dll and *.INI files from C:\ro_client\RO\ to C:\ro_client\fresh\
- Copy BGM and savedata folders from C:\ro_client\RO\ to C:\ro_client\fresh\
- Copy rdata.grf and data.grf files from C:\ro_client\RO\ to C:\ro_client\fresh\
B. Configure the Client
- Launch N.E.M.O. and load 2015-05-13aRagexe.exe
- Hit "Select Recommended"
- Confirm DATA.INI
- Rename iteminfo.lub to iteminfo_n.lub
- Now search "Read Data Folder First" and check it
- Hit "Apply Selected" and you will have a new 2015-05-13aRagexe_patched.exe file.
- You should "Save Profile" now, because you will probably want to edit again your client later
C. Add the translation
- Rename C:\ro_client\fresh\System\itemInfo.lub to iteminfo_n.lub
- You might need to rename C:\ro_client\fresh\data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\ folder to ??????? later, but for now, just skip this step (not sure if you encounter this problem).
- Open C:\ro_client\fresh\data\clientinfo.xml with a text editor (I recommend Notepad++)
- Update the address with your server IP
- <address>[ip_address]</address>
- Done with the translation. Now we will say to the server, which client players are using.
III. Finish Server configuration
A. Compile the server
- Launch Putty again and login to your server. We will compile Hercules. It will take time so be patient.
- cd ./Hercules
- ??./configure --enable-packetver=20150513
- make clean
- make sql
- once it is done, you can verify if the version has been properly set.
- nano src/common/mmo.h
- Find following lines
-
#ifndef PACKETVER#define PACKETVER
-
-
Change #define PACKETVER to #define PACKETVER 20150513 if not done yet.
- If you did change something in mmo.h, you need to recompile again. Process again the step III.A.1
B. Start the server
- To start the server, you simply need the following line (while being in Hercules folder)
- ./athena-start start
IV. Player Side
A. Create a Game Master Account
- Go to your phpmyadmin (step I.B.7) and find again the login table.
- Hit the Insert tab
- userid: [login_nickname]
- user_pass: [login_pass]
- group_id: 99
- gender: M or F
- You have now your Game Master Account
B. Play
- Launch C:\ro_client\fresh\2015-05-13aRagexe_patched.exe
- Login with your newly created game master account
- Process thru in game.
- type @go 0
- Be happy.
V. Customize
A. Back to the N.E.M.O.
- This Diff patcher is really cool, be aware of that. You can now edit again your client.
- repeat the step II.B.1
- Hit "Load Profile" and choose the previous file you created in step II.B.7
- Check the list and hit option you want.
- repeat step II.B.6 and 7
B. Options & Fix
- Remove the Pin Secure Code
- Be sure to always be in Hercules folder ( cd ./Hercules)
- ./athena-start stop
- ??nano conf/import/char_conf.txt
- add this line: pincode_enabled: 0
- process to step III.A.1
- To edit clientinfo.xml, I suggest you to check the wiki page
- if you can't see in game button
- Changing starting point
- nano conf/import/char_conf.txt
- add start_point_re: prt_fild08,170,365
- Changing starting items
- nano conf/import/char_conf.txt
- ?add start_items: 2393,1,0,5055,1,0,569,20,1
- Changin starting Zeny
- nano conf/import/char_conf.txt
- add start_zeny: 5,000
- == More options to come, just reply to this topic if you can't find how to do what ==
C. Adding Custom Content
- NPC
- ?Add your script in npc/custom/your_script_name.txt
- Edit npc/script_custom.conf and add the following line:
- npc: npc/custom/your_script_name.txt
- ITEM
- Read the wiki about custom item (Link)
- System/iteminfo_n.lub
- [<item id>] = {
unidentifiedDisplayName = "My custom Item", // Or "Accessory" or "Headgear" if it is an equipment
unidentifiedResourceName = "my_custom_item", //This will set the sprite you will use (ex: my_custom_item.spr / actmy_custom_item.act)
unidentifiedDescriptionName ={"Unknown Item, can be identified by using a ^6666CCMagnifier^000000."}, //Or basically juste { }, if it is not an equipment.identifiedResourceName = "my_custom_item",
identifiedDisplayName = "My custom Item",
identifiedDescriptionName ={"Bleh this item is a custom item.","Bleh this is a second line"}, // Description of your item.ClassNum = 0 // Read the wiki page for the list.
slotCount = 0,
},
- [<item id>] = {
- Sprites.
- Drop item sprite (also the same as click and drag) must be in:
- data/sprite/¾ÆÀÌÅÛ/my_custom_item.spr / my_custom_item.act
- Inventory texture (24x24 size 256 bit bmp) must be in:
- data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/item/my_custom_item.bmp
- Headgears: Copy the headgear in:
- data\sprite\¾Ç¼¼»ç¸®\¿©\¿©_my_custom_item.spr / ¿©_Helmet.act for Female
- data\sprite\¾Ç¼¼»ç¸®\³²\³²_my_custom_item.spr / ³²_Helmet.act for Male
- Collection picture (75x100 256 bit bmp) must be in:
- data/sprite/¾ÆÀÌÅÛ/collection/my_custom_item.bmp
- Drop item sprite (also the same as click and drag) must be in:
- MAP
- Cient side
- Your map file name and ID cannot be longer than 13 caracters.
- ?my_map.gat, my_map.gnd, my_map.rsw, my_map.extra must be in data/ folder (inside grf)
- Additional textures (bmp) must be in data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/map/
- BGM must be in BGM/ folder.
- Add the bgm in data/mp3nametable.txt (ex: my_map.rsw#bgm\\44.mp3#)
- Add following lines to data/resnametable.txt
-
my_map.gnd#my_map.gnd#my_map.gat#my_map.gat#my_map.rsw#my_map.rsw#
-
-
Add this line to data/mapnametable.txt
-
my_map.rsw#Title of my Map#
-
-
Server Side
-
Add the following line to?? db/map_index.txt
-
my_map
-
-
Add the following line to conf/maps.conf
-
map: my_map
-
-
-
Cache
-
Create a map.grf and include a folder data/. Add inside your map files (gat, rsw, gnd, extra)
-
Create a folder grf/ in your server root (Hercules/) and upload map.grf inside grf/ folder.
-
Connect via ssh (putty) to your server and log in.
- Stop your server
- ./athena-start stop
- Edit conf/grf-files.txt
- ?nano conf/grf-files.txt
-
Add the following line, save and close.
-
?grf: grf/map.grf
-
-
Do the following command
-
./mapcache
-
-
start your serveur
-
./athena-start start
-
-
- Cient side