<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.herc.ws/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.herc.ws/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ToiletMaster</id>
		<title>Hercules Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.herc.ws/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ToiletMaster"/>
		<link rel="alternate" type="text/html" href="https://wiki.herc.ws/wiki/Special:Contributions/ToiletMaster"/>
		<updated>2026-05-02T12:30:04Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21.11</generator>

	<entry>
		<id>https://wiki.herc.ws/wiki/Quest_Log_System</id>
		<title>Quest Log System</title>
		<link rel="alternate" type="text/html" href="https://wiki.herc.ws/wiki/Quest_Log_System"/>
				<updated>2014-10-22T16:00:17Z</updated>
		
		<summary type="html">&lt;p&gt;ToiletMaster: /* Increasing Max Quest DB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quest Log System ==&lt;br /&gt;
&lt;br /&gt;
==== Basic Structure of NPC ====&lt;br /&gt;
&lt;br /&gt;
First of all you must have a knowledge on basic scripting, if not please kindly Click [[Basic_Scripting|Here!]].&lt;br /&gt;
&lt;br /&gt;
==== Quest Window ====&lt;br /&gt;
&lt;br /&gt;
The Quest Window or Quest Journal (Opened via Alt+U) allows the player to view all quests their character has started but not yet completed (Except for instance dungeon quests and Battlegrounds instances, which always remain once started).&lt;br /&gt;
To place a quest in the Inactive tab, right click once on it and the name will turn gray. It will then appear on the Inactive tab instead of Active. Right clicking the name again will bring it back to the Active tab. Moving the quest back and forth has no effect on whether you can continue it or not.&lt;br /&gt;
Not every quest has a quest window component. Those quests who have quest window walkthroughs can be found in this category as well as by having their infobox in gold. Additionally, the Quest Window guides are not comprehensive, and do not specify the exact coordinates of the next NPC or location the player must visit. It is highly recommended to continue using the wiki guides along with the in-game walkthroughs.&lt;br /&gt;
&lt;br /&gt;
[[File:QWindow.jpg|center|caption]]&lt;br /&gt;
&lt;br /&gt;
== Quest Database - Adding Quest ==&lt;br /&gt;
&lt;br /&gt;
=== Structure ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Quest ID,Time Limit,Target1,Val1,Target2,Val2,Target3,Val3,Quest Title&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quest ID - ID of the quest, must increment and should not be duplicated.&amp;lt;br&amp;gt;&lt;br /&gt;
Time Limit - Time limit for the quest to be finish.&amp;lt;br&amp;gt;&lt;br /&gt;
Target 1 - Monster ID.&amp;lt;br&amp;gt;&lt;br /&gt;
Val1 - Value of Monster to be killed.&amp;lt;br&amp;gt;&lt;br /&gt;
Target 2 - Monster ID.&amp;lt;br&amp;gt;&lt;br /&gt;
Val2 - Value of Monster to be killed.&amp;lt;br&amp;gt;&lt;br /&gt;
Target 3 - Monster ID.&amp;lt;br&amp;gt;&lt;br /&gt;
Val3 - Value of Monster to be killed.&amp;lt;br&amp;gt;&lt;br /&gt;
Quest Title - The title of the Quest you made.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
For this example I will make a quest that will require to kill 10 Poring's.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;65000,0,1002,10,0,0,0,0,&amp;quot;Quest - Poring Hunt&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Client Side Editing ====&lt;br /&gt;
&lt;br /&gt;
You have to edit your questid2display.txt&lt;br /&gt;
&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
QUESTID#Quest Name#FILENAME#LOG_FILENAME#&lt;br /&gt;
Summary description#&lt;br /&gt;
Objective description#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
65000#Quest - Poring Hunt#SG_FEEL#QUE_NOIMAGE#&lt;br /&gt;
Find the monster named Poring and kill 10#&lt;br /&gt;
Hunting 10 Poring#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Quest Log Commands ==&lt;br /&gt;
&lt;br /&gt;
=== Set Quest ===&lt;br /&gt;
&amp;lt;pre&amp;gt;*setquest &amp;lt;ID&amp;gt;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Place quest of &amp;lt;ID&amp;gt; in the users quest log, the state of which is &amp;quot;active&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	SetQuest	51,{&lt;br /&gt;
setquest 65000;	// This will add the Quest ID 65000 to your Quest Window.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sample will add the quest &amp;quot;Quest - Poring Hunt&amp;quot; which I stated on the Adding Quest.&lt;br /&gt;
'''Note''': The example is just a simple NPC that will add Quest ID 65000 every time you click it, You can add conditions so that it can only be taken once. &lt;br /&gt;
&lt;br /&gt;
=== Complete Quest ===&lt;br /&gt;
&amp;lt;pre&amp;gt;*completequest &amp;lt;ID&amp;gt;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the state for the given quest &amp;lt;ID&amp;gt; to &amp;quot;complete&amp;quot; and remove from &lt;br /&gt;
the users quest log.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	CompleteQuest	51,{&lt;br /&gt;
completequest 65000;	// This will change the state of the quest to &amp;quot;complete&amp;quot;&lt;br /&gt;
set zeny,zeny + 100;   //just add line like this if you want to give zeny reward if a player finish the quest.&lt;br /&gt;
getitem 501,1;         //just add line like this if you want to give item reward if a player finish the quest.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erase Quest ===&lt;br /&gt;
&amp;lt;pre&amp;gt;*erasequest &amp;lt;ID&amp;gt;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove the quest of the given &amp;lt;ID&amp;gt; from the user's quest log.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	EraseQuest	51,{&lt;br /&gt;
erasequest 65000;	// This will remove the quest to your Quest Window.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change Quest ===&lt;br /&gt;
&amp;lt;pre&amp;gt;*changequest &amp;lt;ID&amp;gt;,&amp;lt;ID2&amp;gt;;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove quest of the given &amp;lt;ID&amp;gt; from the user's quest log.&lt;br /&gt;
Add quest of the &amp;lt;ID2&amp;gt; to the the quest log, and the state is &amp;quot;active&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	ChangeQuest	51,{&lt;br /&gt;
changequest 65000,65001; // This will remove the quest ID 65000 and change it to 65001 with the state &amp;quot;active&amp;quot;.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Check Quest ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;*checkquest(&amp;lt;ID&amp;gt;{,PLAYTIME|HUNTING})&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If no additional argument supplied, return the state of the quest: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-1 = Quest not started (not in quest log)&lt;br /&gt;
0  = Quest has been given, but the state is &amp;quot;inactive&amp;quot;&lt;br /&gt;
1  = Quest has been given, and the state is &amp;quot;active&amp;quot;&lt;br /&gt;
2  = Quest completed&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	CheckQuest	51,{&lt;br /&gt;
&lt;br /&gt;
if(checkquest(65000) == 0) { //Quest is Inactive&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest is Inactive&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
} else if(checkquest(65000) == -1) { //Quest Not started yet &lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest Not Started&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
} else if(checkquest(65000) == 1) { //Quest is Active&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest is Active!&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
} else if(checkquest(65000) == 2) {	// Quest finished.&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest Finished!&amp;quot;;&lt;br /&gt;
completequest 65000;&lt;br /&gt;
close;&lt;br /&gt;
} &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If parameter &amp;quot;PLAYTIME&amp;quot; is supplied:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-1 = Quest not started (not in quest log)&lt;br /&gt;
0  = the time limit has not yet been reached&lt;br /&gt;
1  = the time limit has not been reached but the quest is marked as complete&lt;br /&gt;
2  = the time limit has been reached&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If parameter &amp;quot;HUNTING&amp;quot; is supplied:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-1 = Quest not started (not in quest log)&lt;br /&gt;
0 = you haven't killed all of the target monsters and the time limit has not been reached.&lt;br /&gt;
1 = you haven't killed all of the target monsters but the time limit has been reached.&lt;br /&gt;
2 = you've killed all of the target monsters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example | Hunting ===&lt;br /&gt;
&amp;lt;pre&amp;gt;prontera,xx,xx,4	script	CheckQuest	51,{&lt;br /&gt;
&lt;br /&gt;
if (checkquest(65000,HUNTING) == -1) {&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest not Started&amp;quot;,&lt;br /&gt;
close;&lt;br /&gt;
} else if (checkquest(65000,HUNTING) == 0) {&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;You haven't killed all of the target monsters and the time limit has not been reached.&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
} else if (checkquest(65000,HUNTING) == 1) {&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;You haven't killed all of the target monsters but the time limit has been reached.&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
} else if (checkquest(65000,HUNTING) == 2) {&lt;br /&gt;
completequest 65000;&lt;br /&gt;
set zeny,zeny+100;      //Zeny Reward&lt;br /&gt;
getitem 501,1;          // Item Reward&lt;br /&gt;
mes &amp;quot;[Jelly]&amp;quot;;&lt;br /&gt;
mes &amp;quot;Quest Finished&amp;quot;;&lt;br /&gt;
close;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Show Event ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*showevent &amp;lt;state&amp;gt;, &amp;lt;color&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Show a colored mark in the mini-map like &amp;quot;viewpoint&amp;quot; and an emotion on top &lt;br /&gt;
of a NPC. This is used to indicate that a NPC has a quest or an event to &lt;br /&gt;
certain player/s. &lt;br /&gt;
&lt;br /&gt;
state can be:&lt;br /&gt;
	0 = disable ( Used to disable and remove the mark and the emotion from &lt;br /&gt;
		the NPC. )&lt;br /&gt;
	1 = exclamation emotion ( Used to show an important quest event to &lt;br /&gt;
		certain player. )&lt;br /&gt;
	2 = interrogation emotion ( Used to show an non-important quest event &lt;br /&gt;
		to certain player. )&lt;br /&gt;
Other value may cause client crashes.&lt;br /&gt;
&lt;br /&gt;
color can be:&lt;br /&gt;
	0 = yellow &amp;quot;Quest&amp;quot;&lt;br /&gt;
	1 = orange &amp;quot;Job&amp;quot;&lt;br /&gt;
	2 = green &amp;quot;Event&amp;quot;&lt;br /&gt;
	3 = an MVP flag&lt;br /&gt;
Other values show a transparent mark in the mini-map.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Increasing Max Quest DB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
trunk/src/map/quest.h &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Find this line and increase the value.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define MAX_QUEST_DB (60355+1) // Highest quest ID + 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recompile, Cheers!&lt;br /&gt;
&lt;br /&gt;
(If you don't know how to recompile click [[Compiling|Here!]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Script Command]]&lt;/div&gt;</summary>
		<author><name>ToiletMaster</name></author>	</entry>

	<entry>
		<id>https://wiki.herc.ws/wiki/Mmo.h</id>
		<title>Mmo.h</title>
		<link rel="alternate" type="text/html" href="https://wiki.herc.ws/wiki/Mmo.h"/>
				<updated>2013-07-18T08:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;ToiletMaster: Adding Maximum Quest DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Incomplete}}&lt;br /&gt;
&lt;br /&gt;
{{git|src/common/mmo.h}} This source file holds global declarations and hard-coded settings, that are used by the login, char and map server. If you modify anything, you have to recompile all three servers, otherwise you may run into errors.&lt;br /&gt;
&lt;br /&gt;
=== PACKETVER ===&lt;br /&gt;
Specifies the packet version to use for server-client communication. It must be set to date, your client has been released at, e. g. 20090922 for 2009-09-22aRagexeRE. Note: If you have a client, that is newer, than the latest packet version in the comment, some things might not work properly, if the client packets have changed since then.&lt;br /&gt;
&lt;br /&gt;
=== ENABLE_SC_SAVING ===&lt;br /&gt;
If you disable this define, all status changes get discarded upon logout.&lt;br /&gt;
&lt;br /&gt;
=== HOTKEY_SAVING ===&lt;br /&gt;
When enabled, the server stores client hotkeys. While older clients save them locally in the registry, newer clients require this define to be enabled.&lt;br /&gt;
&lt;br /&gt;
=== MAX_MAP_PER_SERVER ===&lt;br /&gt;
Sets how many maps a single map server may manage. This also includes instanced maps.&lt;br /&gt;
&lt;br /&gt;
=== MAX_INVENTORY ===&lt;br /&gt;
Sets maximum amount of item slots in the character item inventory. If you set this above 127, some scripts, that enumerate characters' inventory will break.&lt;br /&gt;
&lt;br /&gt;
=== MAX_CHARS ===&lt;br /&gt;
Max number of characters per account. Note, that changing this setting alone is not enough if the client is not hexed to support more characters as well.&lt;br /&gt;
&lt;br /&gt;
=== GLOBAL_REG_NUM ===&lt;br /&gt;
Max number of permanent [[Variables#Player_Variables|char variables]].&lt;br /&gt;
&lt;br /&gt;
=== ACCOUNT_REG_NUM ===&lt;br /&gt;
Max number of permanent [[Variables#Account_Variables|account variables]].&lt;br /&gt;
&lt;br /&gt;
=== ACCOUNT_REG_NUM2 ===&lt;br /&gt;
Max number of permanent [[Variables#Global_Account_Variables|global account variables]].&lt;br /&gt;
&lt;br /&gt;
=== MAX_QUEST_DB ===&lt;br /&gt;
Maximum number of Quest database to be loaded. File is located in db/questdb.txt&lt;br /&gt;
note: if you have too many quests, your map server will show errors that there's too many quest db. remember to recompile your server if you do! &lt;br /&gt;
[[Category:Configuration]]&lt;/div&gt;</summary>
		<author><name>ToiletMaster</name></author>	</entry>

	<entry>
		<id>https://wiki.herc.ws/wiki/Category:Configuration</id>
		<title>Category:Configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.herc.ws/wiki/Category:Configuration"/>
				<updated>2013-07-13T17:02:53Z</updated>
		
		<summary type="html">&lt;p&gt;ToiletMaster: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is aimed at configuration of Hercules for use. It is assumed that you have [[Installation|downloaded]] Hercules, have it [[Compiling|compiled]]&lt;br /&gt;
and [[Connecting|configured]] to connect.&lt;br /&gt;
&lt;br /&gt;
=Hercules File Structure=&lt;br /&gt;
When you open up your copy of Hercules for the first time, you may notice a lot of folders and files, we'll walk through briefly what each one is&lt;br /&gt;
for.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Location&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|'''/3rdparty/'''||3rd party files, such as mysql.h&lt;br /&gt;
|-&lt;br /&gt;
|'''/conf/'''||Main configuration settings, such as connection settings, battle settings and [[mapflag|mapflags]].&lt;br /&gt;
|-&lt;br /&gt;
|/conf/import/||[[Import folder]], mainly used to keep your configuration settings after an SVN update.&lt;br /&gt;
|-&lt;br /&gt;
|/conf/battle/||Where you will find settings to change the rates, drops, max stats and such for your server.&lt;br /&gt;
|-&lt;br /&gt;
|/conf/mapflags/||Folder with all the [[mapflag|mapflags]], such as noteleport, pvp and gvg.&lt;br /&gt;
|-&lt;br /&gt;
|'''/db/'''||Databases, such as the job_db, experience tables, item and mob flat-file databases.&lt;br /&gt;
|-&lt;br /&gt;
|'''/doc/'''||Various documented settings, mainly for database settings.&lt;br /&gt;
|-&lt;br /&gt;
|'''/npc/'''||Any NPC/spawn file you will find in the game is in here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/airports/||The airports and airship scripts are in here, and any NPC related to them.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/battlegrounds||Battlegrounds scripts can be found in here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/cities/||Any non-quest, non-kafra [[NPC]] found in the towns are here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/custom/||Any NPC not officially supported by Hercules is located in here. Here is where you will find your healers, warpers and MVP arenas.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/events/||Any official events, such as twin-towers or Christmas events on the official servers.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/guides/||Any guides in the cities.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/guild/||[[War of Emperium|WoE]] scripts and functions are in here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/guild2/||WoE:SE scripts and functions.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/jobs/||Job changing scripts and quests, as well as functions.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/kafras/||Kafra scripts and functions.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/merchants/||Any official merchants in here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/mobs/||Spawn scripts for fields, dungeons as well as city cleaners in here.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/other/||Scripts that don't really fit anywhere else, like the marriage script.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/quests/||Official Quests, such as the Sign Quest or Thanatos Tower.&lt;br /&gt;
|-&lt;br /&gt;
|/npc/warps/||Warp portals, and scripts, that behave that way.&lt;br /&gt;
|-&lt;br /&gt;
|'''/sql-files/'''||If using SQL, this is where the pre-made database dumps are, that will populate your database with the correct tables and such.&lt;br /&gt;
|-&lt;br /&gt;
|'''/src/'''||All source files, the meat and potatoes of the emu.&lt;br /&gt;
|-&lt;br /&gt;
|/src/char/||Character server source files.&lt;br /&gt;
|-&lt;br /&gt;
|/src/common/||Common server settings. [[mmo.h]] is in here, the file that will modify most of the hard-coded server settings.&lt;br /&gt;
|-&lt;br /&gt;
|/src/login/||Login server source files.&lt;br /&gt;
|-&lt;br /&gt;
|/src/map/||Map server source files.&lt;br /&gt;
|-&lt;br /&gt;
|/src/plugins/||Plugins source files.&lt;br /&gt;
|-&lt;br /&gt;
|/src/tool/||[https://github.com/HerculesWS/Hercules/tree/master/src/tool Tools] source files, such as the mapcache builder.&lt;br /&gt;
|-&lt;br /&gt;
|'''/tools/'''||Contains tool scripts for various maintenance-related tasks.&lt;br /&gt;
|-&lt;br /&gt;
|'''/vcproj-9/'''||Project 9 Files,Files used if Using MS Visual Studio C++ 2008&lt;br /&gt;
|-&lt;br /&gt;
|'''/vcproj-10/'''||Project 10 Files,Files used if using MS Visual Studio C++ 2010&lt;br /&gt;
|-&lt;br /&gt;
|'''/vcproj-12/'''||Project 12 Files,Files used if using MS Visual Studio C++ 2012&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We're mainly focused on the '''/conf/''' folder in this article.&lt;br /&gt;
&lt;br /&gt;
=/conf/=&lt;br /&gt;
In the /conf/ folder, holds all of the configuration settings for a quick customization. Here are the locations for a frequent number of configuration changes. Remember that after changing any of these settings, it is always best to restart your servers for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
==Changing the base/job experience rates==&lt;br /&gt;
Open up /conf/battle/exp.conf. Look for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Rate at which exp. is given. (Note 2)&lt;br /&gt;
base_exp_rate: 100&lt;br /&gt;
&lt;br /&gt;
// Rate at which job exp. is given. (Note 2)&lt;br /&gt;
job_exp_rate: 100&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
and change to whatever you want, in multiples of 100. A good rule of thumb is to get your number, say you want 10x rates. Input 10, then add 2 zero's (0) to it to make it 1000.&lt;br /&gt;
&lt;br /&gt;
==Changing multi level ups==&lt;br /&gt;
Open up /conf/battle/exp.conf. Search for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Turn this on to allow a player to level up more than once from a kill. (Note 1)&lt;br /&gt;
multi_level_up: no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
and change it to a 'yes'.&lt;br /&gt;
&lt;br /&gt;
==Changing the required DEX for insta-cast==&lt;br /&gt;
Open up /conf/battle/skill.conf. Search for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// At what dex does the cast time become zero (instacast)?&lt;br /&gt;
castrate_dex_scale: 150&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
And change to whatever you want it to be.&lt;br /&gt;
&lt;br /&gt;
==Changing the max stats==&lt;br /&gt;
Open up /conf/battle/player.conf. Search for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Max limit of char stats. (agi, str, etc.)&lt;br /&gt;
max_parameter: 99&lt;br /&gt;
&lt;br /&gt;
// Same as max_parameter, but for 3rd classes.&lt;br /&gt;
max_third_parameter: 120&lt;br /&gt;
&lt;br /&gt;
// Same as max_parameter, but for baby classes.&lt;br /&gt;
max_baby_parameter: 80&lt;br /&gt;
&lt;br /&gt;
// Same as max_parameter, but for baby 3rd's.&lt;br /&gt;
max_baby_third_parameter: 108&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
And change it to whatever you want it to be.&lt;br /&gt;
&lt;br /&gt;
==Setting the max levels==&lt;br /&gt;
Please see [[Edit_Max_Level|Edit Max Level]].&lt;br /&gt;
&lt;br /&gt;
==Setting PK in your server==&lt;br /&gt;
Navigate to /conf/battle/misc.conf. Find:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// PK Server Mode.  Turns entire server pvp(excluding towns). Experience loss is doubled if killed by another player.&lt;br /&gt;
// When players hunt monsters over 20 levels higher, they will receive 15% additional exp., and 25% chance of receiving more items. &lt;br /&gt;
// There is a nopvp.txt for setting up maps not to have pk on in this mode.  Novices cannot be attacked and cannot attack.&lt;br /&gt;
// Normal pvp counter and rank display are disabled as well.&lt;br /&gt;
// Note: If pk_mode is set to 2 instead of 1 (yes), players will receive a &lt;br /&gt;
//   manner penalty of 5 each time they kill another player (see manner_system &lt;br /&gt;
//   config to adjust how this will affect players)&lt;br /&gt;
pk_mode: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; Set this to a '1' for PK mode without karma/manner system, set to '2' to enable karma/manner system.&lt;br /&gt;
&lt;br /&gt;
You should also take a look at:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// For PK Server Mode. Change this to define the minimum level players can start PK-ing&lt;br /&gt;
pk_min_level: 55&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; And change that setting accordingly as well.&lt;br /&gt;
&lt;br /&gt;
==Monsters with HP/MaxHP/Level/percent HP displays==&lt;br /&gt;
To get your monsters to display either their level, HP/MAXHP or percent of HP remaining, open up /conf/battle/monster.conf. Look for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Display some mob info next to their name? (add as needed)&lt;br /&gt;
// (does not works on guardian or emperium)&lt;br /&gt;
// 1: Display mob HP (Hp/MaxHp format)&lt;br /&gt;
// 2: Display mob HP (Percent of full life format)&lt;br /&gt;
// 4: Display mob's level&lt;br /&gt;
show_mob_info: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; You can change this setting to anything, either 1, 2, 3, 4, 5, 6 or 7, by adding what you want to display together. Please note that not all of the information, if multiple things are displayed, may fit. &lt;br /&gt;
&lt;br /&gt;
For example, I want mob level and mob percent of HP showing, I would set this to 6.&lt;br /&gt;
&lt;br /&gt;
==Setting Drop rates==&lt;br /&gt;
Open up /conf/battle/drops.conf and look for the following:&lt;br /&gt;
&lt;br /&gt;
 // The rate the common items are dropped (Items that are in the ETC tab, besides card)&lt;br /&gt;
 item_rate_common: 100&lt;br /&gt;
 item_rate_common_boss: 100&lt;br /&gt;
 item_drop_common_min: 1&lt;br /&gt;
 item_drop_common_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate healing items are dropped (items that restore HP or SP)&lt;br /&gt;
 item_rate_heal: 100&lt;br /&gt;
 item_rate_heal_boss: 100&lt;br /&gt;
 item_drop_heal_min: 1&lt;br /&gt;
 item_drop_heal_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate at which usable items (in the item tab) other then healing items are dropped.&lt;br /&gt;
 item_rate_use: 100&lt;br /&gt;
 item_rate_use_boss: 100&lt;br /&gt;
 item_drop_use_min: 1&lt;br /&gt;
 item_drop_use_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate at which equipment is dropped.&lt;br /&gt;
 item_rate_equip: 100&lt;br /&gt;
 item_rate_equip_boss: 100&lt;br /&gt;
 item_drop_equip_min: 1&lt;br /&gt;
 item_drop_equip_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate at which cards are dropped&lt;br /&gt;
 item_rate_card: 100&lt;br /&gt;
 item_rate_card_boss: 100&lt;br /&gt;
 item_drop_card_min: 1&lt;br /&gt;
 item_drop_card_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate adjustment for the MVP items that the MVP gets directly in their inventory&lt;br /&gt;
 item_rate_mvp: 100&lt;br /&gt;
 item_drop_mvp_min: 1&lt;br /&gt;
 item_drop_mvp_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // The rate adjustment for card-granted item drops.&lt;br /&gt;
 item_rate_adddrop: 100&lt;br /&gt;
 item_drop_add_min: 1&lt;br /&gt;
 item_drop_add_max: 10000&lt;br /&gt;
 &lt;br /&gt;
 // Rate adjustment for Treasure Box drops (these override all other modifiers)&lt;br /&gt;
 item_rate_treasure: 100&lt;br /&gt;
 item_drop_treasure_min: 1&lt;br /&gt;
 item_drop_treasure_max: 10000&lt;br /&gt;
&lt;br /&gt;
All item_rate_* values can range from 0 to 1000000 (100 = 100%) and item_drop_* values can range from 1 to 10000 (100 = 1.00%). The meaning of the lines is explained using the common items block, but can be applied to other blocks as well (read the comments of each block, to see, what they refer to). Where there is no 'boss' line, it is simply not applicable to differentiate between normal and boss monsters.&lt;br /&gt;
&lt;br /&gt;
 item_rate_common: 100&lt;br /&gt;
&lt;br /&gt;
Specifies the rate adjustment for (common) items dropped by non-boss monsters. This means, if this is set to 100 (100%), all drop rates in the mob db are used, as is. If you set it to 600, drop rates will be 6 times high as in mob db. So 0.01% drop rate for cards would become 0.06%.&lt;br /&gt;
&lt;br /&gt;
 item_rate_common_boss: 100&lt;br /&gt;
&lt;br /&gt;
Specifies the rate adjustment for (common) items dropped by boss monsters. Works like item_rate_common.&lt;br /&gt;
&lt;br /&gt;
 item_drop_common_min: 1&lt;br /&gt;
&lt;br /&gt;
Specifies the minimum drop chance of (common) items. By default this is 1 (0.01%). All drop rates, which would render lower than this value, due to the effect of their respective item_rate_* settings, will be set to this value. Having this value set to 4 and rate to 100% would cause all cards and rare items, which are dropped at 0.01% being dropped at a chance of 0.04%.&lt;br /&gt;
&lt;br /&gt;
 item_drop_common_max: 10000&lt;br /&gt;
&lt;br /&gt;
Specifies the maximum drop chance of (common) items. By default this is 10000 (100%). Any drop chance, which would be higher than this value, is set to this value.&lt;br /&gt;
&lt;br /&gt;
==Setting a limit on the amount of castles a guild can own==&lt;br /&gt;
You can limit the amount of castles a guild can hold. Any guild that has the allotted number of castles will deal '0' damage to the emp they try to take after hitting the threshold. Open up /conf/battle/guild.conf. Find:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Maximum castles one guild can own (0 = unlimited)&lt;br /&gt;
guild_max_castles: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Set this to whatever you want the maximum to be.&lt;br /&gt;
&lt;br /&gt;
==Setting what characters are allowed in a character name==&lt;br /&gt;
Typically, we don't want character names that contain ASCII weird characters or whatnot. Here is a great example that will limit the characters a name can use to what's on the standard American Keyboard. Open up /conf/char_athena.conf and look for:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;// Manage possible letters/symbol in the name of charater. Control character (0x00-0x1f) are never accepted. Possible values are:&lt;br /&gt;
// NOTE: Applies to character, party and guild names.&lt;br /&gt;
// 0: no restriction (default)&lt;br /&gt;
// 1: only letters/symbols in 'char_name_letters' option.&lt;br /&gt;
// 2: Letters/symbols in 'char_name_letters' option are forbidden. All others are possibles.&lt;br /&gt;
char_name_option: 1&lt;br /&gt;
&lt;br /&gt;
// Set the letters/symbols that you want use with the 'char_name_option' option.&lt;br /&gt;
// Note: Don't add spaces unless you mean to add 'space' to the list.&lt;br /&gt;
char_name_letters: `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./~!@#$%^&amp;amp;*()_+QWERTYUIOP{}|ASDFGHJKL:&amp;quot;ZXCVBNM&amp;lt;&amp;gt;?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
And set it to exactly what I have here.&lt;br /&gt;
&lt;br /&gt;
== Changing &amp;quot;Welcome to Hercules SVN Version!&amp;quot; text ==&lt;br /&gt;
The &amp;quot;Welcome to Hercules SVN! Enjoy! Please report any bugs you find.&amp;quot; text can be changed or removed. Open up /npc/motd.txt and change as needed. Please keep note of the contents in the file:&lt;br /&gt;
&lt;br /&gt;
 // Internal default is limited to 128 lines.  If you need more, you will need to modify the MOTD_LINE_SIZE definition in pc.c&lt;br /&gt;
&lt;br /&gt;
To disable this message altogether simply delete the contents of the file, [b]but do not delete the entire file itself. Errors will arise in your map server![/b]&lt;br /&gt;
&lt;br /&gt;
== Grf-files.txt ==&lt;br /&gt;
This is where you put the path to your Ragnarok Online directory. You only need to set ''grf'' and/or ''data_dir'', if you [[#Overriding map-cache|load maps from GRFs rather than from map-cache]].&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 //-----------------------------------------&lt;br /&gt;
 // GRF List&lt;br /&gt;
 //-----------------------------------------&lt;br /&gt;
 // grf: C:\path\to\RO\data.grf&lt;br /&gt;
 // You may add more in this format&lt;br /&gt;
 // grf: &amp;lt;data file path&amp;gt;&lt;br /&gt;
 grf: C:\Program Files\Gravity\RO\data.grf&lt;br /&gt;
 grf: C:\Program Files\Gravity\RO\rdata.grf&lt;br /&gt;
 grf: C:\Program Files\Gravity\RO\YourRO.grf&lt;br /&gt;
 &lt;br /&gt;
 //------ Others ---------------------------&lt;br /&gt;
 &lt;br /&gt;
 // Data Directory (without the actual data\ though)&lt;br /&gt;
 // the below example would use C:\path\to\RO\data\&lt;br /&gt;
 //data_dir: C:\path\to\RO\&lt;br /&gt;
 data_dir: C:\Program Files\Gravity\RO\&lt;br /&gt;
If you have a custom GRF you add it here. For 64-bit Windows the path will be Program Files(x86).&lt;br /&gt;
&lt;br /&gt;
== Changing what displays with the command @help ==&lt;br /&gt;
Help.txt will change what displays for the @commands related to help (@h, @help), and help2.txt will change what displays for @h2 and @help2. The first text basically explains it all, 0 to display the help line and you can use other numbers for other GM levels.&lt;br /&gt;
&lt;br /&gt;
== Changing the max number of hairstyles and palettes ==&lt;br /&gt;
In client.conf, change the following numbers to the number of hairstyles/palettes you have:&lt;br /&gt;
 // valid range of dye's and styles on the client&lt;br /&gt;
 min_hair_style: 0&lt;br /&gt;
 max_hair_style: 25&lt;br /&gt;
 min_hair_color: 0&lt;br /&gt;
 max_hair_color: 8&lt;br /&gt;
 min_cloth_color: 0 &lt;br /&gt;
 max_cloth_color: 4&lt;br /&gt;
Don't go past the number of hairstyles/palettes you have though, or else you might get errors when using a hairstyle/palette NPC, but only if the NPC goes over the number of hairstyles/palettes you have.&lt;br /&gt;
&lt;br /&gt;
== Overriding map-cache ==&lt;br /&gt;
If you do not want to update your map-cache each time your maps change or are added, you might want to read map data from GRFs. To do so, you need to edit map_athena.conf at:&lt;br /&gt;
 // Read map data from GATs and RSWs in GRF files or a data directory&lt;br /&gt;
 // as referenced by grf-files.txt rather than from the mapcache?&lt;br /&gt;
 use_grf: no&lt;br /&gt;
Set this value to '''yes''', to enable GRFs as map data storage. You need to set-up [[#Grf-files.txt|grf-files.txt]] to point to the archives, which contain your maps. Note, that [[resnametable.txt]] (which allows setting up map aliases) is currently read from GRF archives only.&lt;br /&gt;
&lt;br /&gt;
= /conf/atcommand_athena.conf and /conf/groups.conf =&lt;br /&gt;
&lt;br /&gt;
As of Hercules trunk r15572, the charcommands and atcommands are configured in the groups.conf. The server reads this file to decide who can use what command. normal players are id: 0, while the Administrators have the ultimate control at id:99.&lt;br /&gt;
&lt;br /&gt;
Removing a command from the group Id list will disable its use in game&lt;br /&gt;
the syntax is this:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;id&amp;gt;&lt;br /&gt;
Unique group number. The only required field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;name&amp;gt;&lt;br /&gt;
Any string. If empty, defaults to &amp;quot;Group &amp;lt;id&amp;gt;&amp;quot;. It is used in several @who &lt;br /&gt;
commands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;level&amp;gt;&lt;br /&gt;
Equivalent of GM level, which was used in revisions before r15572. You can &lt;br /&gt;
set it to any number, but usually it's between 0 (default) and 99. Members of &lt;br /&gt;
groups with lower level can not perform some actions/commands (like @kick) on &lt;br /&gt;
members of groups with higher level. It is what script command getgmlevel() &lt;br /&gt;
returns. Group level can also be used to override trade restrictions &lt;br /&gt;
(db/item_trade.txt).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
A group of settings&lt;br /&gt;
	&amp;lt;command name&amp;gt; : &amp;lt;bool&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
	&amp;lt;commandname&amp;gt; : [ &amp;lt;bool&amp;gt;, &amp;lt;bool&amp;gt; ]&lt;br /&gt;
First boolean value is for atcommand, second one for charcommand. If set to &lt;br /&gt;
true, group can use command. If only atcommand value is provided, false is &lt;br /&gt;
assumed for charcommand. If a command name is not included, false is assumed for &lt;br /&gt;
both atcommand and charcommand.&lt;br /&gt;
For a full list of available commands, see: doc/atcommands.txt.&lt;br /&gt;
Command names must not be aliases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;log_commands&amp;gt;&lt;br /&gt;
Boolean value. If true then all commands used by the group will be logged to &lt;br /&gt;
atcommandlog. If setting is omitted in a group definition, false is assumed.&lt;br /&gt;
Requires 'log_commands' to be enabled in 'conf/log_athena.conf'.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;permissions&amp;gt;&lt;br /&gt;
A group of settings&lt;br /&gt;
	&amp;lt;permission&amp;gt; : &amp;lt;bool&amp;gt;&lt;br /&gt;
If a permission is not included, false is assumed.&lt;br /&gt;
For a full list of available permissions, see: doc/permissions.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;inherit&amp;gt;&lt;br /&gt;
A list of group names that given group will inherit commands and permissions &lt;br /&gt;
from. Group names are case-sensitive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example, say I want to allow my level 60 GM's to use @baselevel, but I want my level 80 GM's to use the #baselevel counterpart to increase another players' base level.&lt;br /&gt;
&lt;br /&gt;
The setting would be set as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   id: 60&lt;br /&gt;
   name: &amp;quot;Event Manager&amp;quot;&lt;br /&gt;
   inherit: ( &amp;quot;Support&amp;quot; )&lt;br /&gt;
   level: 1&lt;br /&gt;
   commands: {&lt;br /&gt;
       baselevel: [true,false]&lt;br /&gt;
   }&lt;br /&gt;
   log_commands: true&lt;br /&gt;
   permissions: {&lt;br /&gt;
       can_trade: false&lt;br /&gt;
       any_warp: true&lt;br /&gt;
   }&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
   id: 80&lt;br /&gt;
   name: &amp;quot;Law Enforcement&amp;quot;&lt;br /&gt;
   inherit: ( &amp;quot;Support&amp;quot; )&lt;br /&gt;
   level: 2&lt;br /&gt;
   commands: {&lt;br /&gt;
       baselevel: [false,true]&lt;br /&gt;
   }&lt;br /&gt;
   log_commands: true&lt;br /&gt;
   permissions: {&lt;br /&gt;
       join_chat: true&lt;br /&gt;
       kick_chat: true&lt;br /&gt;
       hide_session: true&lt;br /&gt;
       who_display_aid: true&lt;br /&gt;
       hack_info: true&lt;br /&gt;
       any_warp: true&lt;br /&gt;
       view_hpmeter: true&lt;br /&gt;
    }&lt;br /&gt;
},&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that the first flag is for @, and the second is for #.&lt;br /&gt;
&lt;br /&gt;
'''NOTE: If a group ID inherits another group ID, and you add the same command under both groups, it will cause group.conf to act unpredictably. It has been noted that it may cause no groups, to have any atcommands. Including the admin group.'''&lt;/div&gt;</summary>
		<author><name>ToiletMaster</name></author>	</entry>

	</feed>