Please do not send me private message as my response would be in lowest priority.
2.6.4.0 UPDATE IMPORTANT NOTICE: Not only this release is beta, there are few important changes need to note of: You now may modify the icon, code sign after pack configuration data. Some configuration entries are deprecated. Additionally, as you can tell, script support is coming...
System Requirement: Windows 2000 or higher.
Features
Pack into single/multi grf file(s) [0x200]
Automatically generates GRF if not exist
RGZ support
Customizable skin & language entries
Background music
No extra dll, not even config file is needed when distribute.
Embed config file and resource data (images for background/buttons)
Custom Button
Remote config file
Self update and client update [supports multi client exe update(Up to 255)]
Tools
ConfigGenerator - Packs configuration and resources into the patcher or generate as a binary config pack.
ThorMaker - make patch files into thor file, there two options file & grf, when choose file, the patcher will extract file into disk, and grf simply put in GRF. [Please do not pack GRF, instead you should pack the actual data.]
CheckSum - Simply a crc32 tool, used to make sure patcher & client/game exe is up to date
========================
Internal Config and Remote Config:
Internal config is simply the one embed inside patcher, store basic information required to run
Remote config, is on web server (of course), it used configure extended features.
It should be the same, 620 is used to build your whole map whereas 586 is use to save maps you've created with 620 because 620 doesn't save them right, you can have some models that disappears in game.
So:
620: Build your maps, save it
586: Open your 620 maps, save it
Why another client patcher? well 1) WeeDiffGen - isn't working for 2013 clients + it depends on dlls (not that its a bad thing but i like scripting ) 2) xDiffGen - yes its scripted but we need to depend on xdiff files.
so i made a new one based on xDiffGen and here it is. The patches are written in QtScript format. Details of making a patch have already been written in a seperate topic - although now it needs to be updated with more details. I have already converted most of the patches from xDiffGen.
Why this name? - well I didn't want it to be called * Gen No offense plus someone keeps calling me Nemo in IRC which gave me the idea
Snapshot
-----------------
How to use?
--------------------- 1) First you need to specify your client file in Input Exe file box. If you browse to select the file name, Output Patched box gets updated with a _patched suffix filename automatically. Ofcourse you can select your own name for the output.
2) Next we need to load both the client and the scripts (patches & addons). so click Load Client button.
3) Select the patches you want . In case you patched once before (for whatever date) they will be saved in your local and you can use the Select Previous button to select them again. Also you can try using the Select Rcomnded button to select all the Recommended patches.
4) So your patches are selected and client is loaded what next but to Apply Patches which will generate the output file. In 2.0 version , NEMO also generates a .secure.txt file containing the MD5, SHA1 and CRC32 values of the output exe file which you can use in various tools.
5) You can use the Save Profile and Load Profile buttons for saving/reloading a set of patches & input values, that you have selected (even if they are not applied) for future use.
6) Whenever you apply patches to a client, NEMO updates the patchlist.log file (along with Inputlist.db) in the folder where NEMO.exe is. This file will contain the list of patches you have applied along with their IDs (do not tamper with either of them).
Changes in 2.0: ---------------------- 1) I have made some obvious modifications to the interface (you can definitely see the change in case you have seen v1.0). i) Buttons have come downwards and is no longer strippable (toolbar has been fixed in position)
ii) New status Label has been added which shows your currently loaded client date and how many patches are selected.
iii) NEMO now has support for Addons - scripts that are meant to retrieve data from the client and do its own thing (not patch the client). All the Extract xDiff patches has been added here already. 1 extra addon will be coming soon once i can fix it.
iv) New Filter box has been added which does live search (i.e. filter as you type) for filtering out only the patches u want to see. For e.g. if you type color, it will only show patches that have the string color in either it's name or the description. You can also use regular expression . Also you can sort the columns now
v) An upcoming feature - Test Patches. this one you can use for testing a newly added patch for a variety of clients that you select.
2) NEMO is no longer there in SVN. I have shifted it to GitHub . The rar file uploaded has the .git file so you should be able to directly pull to get updates. But just in case I have also provided the repository link below.
Remember to pull for updates before using NEMO and let me know if you are facing any bugs or issues or if i have missed out on anything. Enjoy .
This is not good code practice but here's how you do it
if( type == SHOP && value*0.75 < id->value_sell*1.24 && nameid != 607 ) { // Exploit possible: you can buy and sell back with profit ShowWarning("npc_parse_shop: Item %s [%d] discounted buying price (%d->%d) is less than overcharged selling price (%d->%d) in file '%s', line '%d'.n", id->name, nameid, value, (int)(value*0.75), id->value_sell, (int)(id->value_sell*1.24), filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE;}
notice the && nameid != 607
Okay, I intentionally added an item with less than overcharged selling price.
Now I was thinking if I can get rid of the warnings that appear by adding the item id to the source so it won't show the warning even if these 'ids' are less than overcharged selling price.
For example, if I set the id 607 less than overcharged selling price. I'll add the id 607 to the src so the warning won't appear.
' if( type == SHOP && value*0.75 < id->value_sell*1.24 && itemid != 607) { ' <== This is just my idea for excluding items id's.
How do I do that? Thanks in advance.
this is the part in npc.c
if( type == SHOP && value*0.75 < id->value_sell*1.24 ) { // Exploit possible: you can buy and sell back with profit ShowWarning("npc_parse_shop: Item %s [%d] discounted buying price (%d->%d) is less than overcharged selling price (%d->%d) in file '%s', line '%d'.n", id->name, nameid, value, (int)(value*0.75), id->value_sell, (int)(id->value_sell*1.24), filepath, strline(buffer,start-buffer)); if (retval) *retval = EXIT_FAILURE;}
Probably my most ambitious and personal project. I often met on my way
interesting places in the world of RO, to which it was impossible to get.
Then I began to find such places with the help of the BrowEdit program
and make them available for visiting. As the project expanded,
I decided to allow shooting and use skills from the hills on the maps,
where this feature was disabled (or Gravity was too lazy busy),
add plants and trees, create comfortable climbs and so on.
I suggest you watch a promo video that clearly explains my idea.
.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.
At the moment, almost ready the locations of the Schwartzwald and Arunafeltz for the release,
there is a reserve for many other locations. Since the appearance of the video, there have been
some changes, so the final result may be different. Below I attach screenshots from BrowEdit
"before" and "after" and gif files with changes of territories on the finished mini-maps.
Some screenshots of my work:
From the important places are opened: the airport in Veins, the left exit from Einbroch, the northern Einbroch railway station on Ein_Field04, the industrial zone on Ein_Field02, the border post between Ein_Field04 and Ein_Field05, the fortress on the map of Yuno_Field12, the entrance to the tower of Thanatos on Hu_Field01, the arch with a fountain on Ein_Fild09, the bridge in Lhz_Field02, the road from Ra_Fild06 to Ein_Field03 and more.
Mini-maps changes (if any map is missing, it means everything is fine with it):
Não muda muita coisa, o que mudam são os caminhos dos arquivos e alguns modos de configurar, pare um tempo e estude os arquivos, entre nas pastas, leia, que rapidamente você pegará o jeito.
E aqui tem diversos tutorias: http://herc.ws/wiki/Main_Page
all files. you should find official kro files for exact client exe version. If versions bit different you still may have some errors.
After if all works without errors, you can mod data, add / remove files etc.
For newish client like early 2018(ragexeRE) clients you can edit System/OngoingQuestInfoList_Sakray.lub, I guess quest lub which you are currently editing was introduced on early 2013.
The file you are editing does not show npc image if it's on progress, you have added it in ep14.1, so if you check there, it would show npc I suppose(if those Lua/lub is even read by 2016 client)
yes it is possibl to add custom quest lub files , the most existing servers are adding new Tabs into a existing lub file . BUT with the NEMO patcher you can add your own lub files .
Since the quest_lubs are hardcoded into the client , NEO made a patch to add custom entrys for it.
if you dont got NEMO Patcher , you can Download it here.
when you download it , you will need a .txt file what contains the path and names of your custom lub files.
example:
i made a txt file called endlessro.txt
and i want to have ingame a EndlessRO quest tab
then you have to add into txt file this 2 lines
localquestlocal_endlessroquest_list <------------ Just an Examplelocalquestquestinfol_endlessro_list <------------ Just an Example
if you want them displayed ingame in the Episode Tab you can need to write this in the txt file
epquestep_146quest_list <------------ Just an Exampleepquestquestinfoepsoid146_list <------------ Just an Example
if you got the txt file rdy , open up nemo and select the Read custom quest lubs , and browse him to your txt file and patch it.
after your done with it be sure to add the corrext values into the quest_function.lub what is loacted in the quest/ lub folder.
makeLocalQuestList(LOCAL_EndlessroQuest_List)QuestTable.EndlessroQuest = EndlessroQuest_List
after your done with the quest_function.lub be sure to create the correct custom quest lubs , Be sure the names are all matching
/localquest/local_endlessroquest_list
LOCAL_EndlessroQuest_List = { { name = [[EndlessRO Quests]], imagefile = [[ep_test_sample.bmp]], list = { { name = [[Test entry 1]], list = { { name =[[Test entry 2]], scrfilename = [[EndlessroQuest]], questID = 15000, }, }, } }, }, }
as for the count, you need to add a target and the count in quest_db.conf
{
Id: 20017
Name: "Treinamento Inicial"
Targets: (
{
MobId: 1002
Count: 10
},
},
for your lua file, I'm pretty sure it's not read. Try putting it into the official one and if it works, check your custom settings.
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/HerculesWS/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: ragnarok sql.db_password: your_sql_password sql.db_database: ragnarok log_db_id: ragnarok log_db_pw: your_sql_password log_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!
II. Create the Client
A. Organization
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