<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Basic Scripting</title><link>https://sourceforge.net/p/hercules/wiki/Basic%2520Scripting/</link><description>Recent changes to Basic Scripting</description><atom:link href="https://sourceforge.net/p/hercules/wiki/Basic%20Scripting/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 20 Feb 2023 05:00:37 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/hercules/wiki/Basic%20Scripting/feed" rel="self" type="application/rss+xml"/><item><title>Basic Scripting modified by Brynner</title><link>https://sourceforge.net/p/hercules/wiki/Basic%2520Scripting/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;{{outdated}}&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-basics"&gt;The Basics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#structure"&gt;Structure&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#npc"&gt;NPC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#function"&gt;Function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#shop"&gt;Shop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#fundamentals"&gt;Fundamentals&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#message"&gt;Message&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#labels-goto-and-end"&gt;Labels, Goto, and End&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#menus-close-and-next"&gt;Menus, Close, and Next&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conditions-variables-and-set"&gt;Conditions, Variables, and Set&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#duplicating"&gt;Duplicating&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#finished-product"&gt;Finished Product&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#adding-scripts"&gt;Adding Scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#external-links"&gt;External Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hercules-on-ircrizonnet-main-hercules-channel"&gt;Hercules on irc.rizon.net : Main Hercules channel.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="the-basics"&gt;The Basics&lt;/h2&gt;
&lt;p&gt;Scripts control all NPCs, warps, mob spawns, shops, and quests you will find&lt;br/&gt;
in the game--and nearly everything else! Clearly they play a large part in&lt;br/&gt;
customizing a server, but learning isn't very hard.&lt;/p&gt;
&lt;p&gt;Scripts are built up of predefined script commands, all of which can be found&lt;br/&gt;
in {{git|doc/script_commands.txt}} (for explanations, see&lt;br/&gt;
&lt;a class="" href="../Script%20Commands"&gt;:Category:Script_Command&lt;/a&gt;). Every line should begin with a&lt;br/&gt;
command and the argument it takes, and must end in a semicolon (or you'll get&lt;br/&gt;
mapserver errors!). Arguments are usually separated by commas, and are&lt;br/&gt;
sometimes contained in parentheses () or curly brackets {}. Tabs and proper&lt;br/&gt;
indentation are standard scripting measures.&lt;/p&gt;
&lt;p&gt;Scripts are saved as text (*.txt) files, so all code can be written in&lt;br/&gt;
Notepad. There are also a lot of scripting programs to use: the most recent&lt;br/&gt;
and comprehensive one is &lt;a class="" href="http://rathena.org/board/topic/56484-enpc-script-editor/" rel="nofollow"&gt;Vince's&lt;br/&gt;
eNPC&lt;/a&gt;. All defined&lt;br/&gt;
functions are highlighted, with an autocomplete feature included, and pressing&lt;br/&gt;
"F1" will display the corresponding explanation for any command.&lt;/p&gt;
&lt;h2 id="structure"&gt;Structure&lt;/h2&gt;
&lt;h3 id="npc"&gt;NPC&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;Script NPC&lt;/strong&gt; will look something like the following:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;prontera,156,145,4 &amp;amp;lt;tab&amp;amp;gt; script &amp;amp;lt;tab&amp;amp;gt; Test NPC &amp;amp;lt;tab&amp;amp;gt; 1_M_MERCHANT,{
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The first section is the map location of the NPC, followed by its coordinates&lt;br/&gt;
in x,y and the direction the NPC will face. Direction numbers are counted&lt;br/&gt;
counterclockwise in 45º increments, with 0 being the center:  &lt;/p&gt;
&lt;p&gt;&lt;span&gt;[1]&lt;/span&gt;&lt;span&gt;[0]&lt;/span&gt;&lt;span&gt;[7]&lt;/span&gt;&lt;br/&gt;
&lt;span&gt;[2]&lt;/span&gt;[ ]&lt;span&gt;[6]&lt;/span&gt;&lt;br/&gt;
&lt;span&gt;[3]&lt;/span&gt;&lt;span&gt;[4]&lt;/span&gt;&lt;span&gt;[5]&lt;/span&gt;  &lt;/p&gt;
&lt;p&gt;After the first tab, the type of script is defined. For our purposes, it'll&lt;br/&gt;
stay "script" for now, but can also be function, shop, or cashshop, for&lt;br/&gt;
starters.&lt;br/&gt;
The name of the NPC is next. You can use up to 24 characters, so make it&lt;br/&gt;
unique! Any duplicates will cause warnings or errors, and the NPC will just be&lt;br/&gt;
automatically renamed anyway.&lt;br/&gt;
The last number is for the sprite (Ai4rei's sprite list can be found&lt;br/&gt;
&lt;a class="" href="http://nn.ai4rei.net/dev/npclist/" rel="nofollow"&gt;here&lt;/a&gt;). It's followed by a comma and open&lt;br/&gt;
curly bracket, marking the beginning of the script contents. Of course, the&lt;br/&gt;
script must also end in a curly bracket.  &lt;/p&gt;
&lt;h3 id="function"&gt;Function&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;Function script&lt;/strong&gt; will look almost identical to:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;function &amp;amp;lt;tab&amp;amp;gt; script &amp;amp;lt;tab&amp;amp;gt; Function Name &amp;amp;lt;tab&amp;amp;gt; {
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The words "function" and "script" won't change; the name must also be unique.&lt;br/&gt;
All functions can be called using the "callfunc" command.  &lt;/p&gt;
&lt;h3 id="shop"&gt;Shop&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;Shop&lt;/strong&gt; starts like a normal script:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="s s-Atom"&gt;prontera&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;145&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="s s-Atom"&gt;&amp;amp;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="s s-Atom"&gt;tab&amp;amp;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="s s-Atom"&gt;shop&lt;/span&gt; &lt;span class="s s-Atom"&gt;&amp;amp;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="s s-Atom"&gt;tab&amp;amp;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;Fruit&lt;/span&gt; &lt;span class="nv"&gt;Store&lt;/span&gt; &lt;span class="s s-Atom"&gt;&amp;amp;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="s s-Atom"&gt;tab&amp;amp;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="k"&gt;_&lt;/span&gt;&lt;span class="nv"&gt;M_MERCHANT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;512&lt;/span&gt;&lt;span class="o"&gt;:-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;513&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The first section defines the map, coordinates, and direction. The word "shop"&lt;br/&gt;
replaces "script" (alternately, "cashshop" will use Cashpoints instead of&lt;br/&gt;
Zeny). The name and sprite ID follow, then a comma.&lt;br/&gt;
Items in the shop are defined in an ID:Price format. A price of -1 uses the&lt;br/&gt;
default price in item_db.txt. Be sure the price is not too low, or a you will&lt;br/&gt;
open a Zeny exploit in your server!  &lt;/p&gt;
&lt;h2 id="fundamentals"&gt;Fundamentals&lt;/h2&gt;
&lt;p&gt;You can always look up commands that you need--even the best scripters don't&lt;br/&gt;
have everything memorized. There are a few fundamentals that you should know&lt;br/&gt;
by heart, though, since they are so commonly used.&lt;/p&gt;
&lt;h3 id="message"&gt;Message&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;*mes "&amp;amp;lt;string&amp;amp;gt;";
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This is the most basic command. Start the line with the word mes, then enter&lt;br/&gt;
the message in quotes (don't forget the semicolon at the end!).&lt;br/&gt;
To add color, simply add ^ and the hex code anywhere in the message. A list&lt;br/&gt;
can be found &lt;a class="" href="http://www.immigration-usa.com/html_colors.html" rel="nofollow"&gt;here&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;&lt;em&gt;As an example:&lt;/em&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;mes "[^FF0000Test NPC^000000]";
mes "Hello!";
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Will display:&lt;/em&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;[Test NPC]&lt;/span&gt;
&lt;span class="na"&gt;Hello!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="labels-goto-and-end"&gt;Labels, Goto, and End&lt;/h3&gt;
&lt;p&gt;To create a label, type a label name and a colon at the start of a line. If&lt;br/&gt;
the label does not end with an "end;" command, everything following the label&lt;br/&gt;
will be read, so don't forget it between labels!&lt;br/&gt;
To go to a label, use the simple "goto" command:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;*goto &amp;amp;lt;label&amp;amp;gt;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note that there are "special" labels that trigger whenever a specific event&lt;br/&gt;
occurs. The name usually makes it obvious, but you can find explanations in&lt;br/&gt;
script_commands.txt. Here is a brief sampling:&lt;/em&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;OnClock&amp;amp;lt;hour&amp;amp;gt;&amp;amp;lt;minute&amp;amp;gt;:
OnInit:
OnAgitStart:
OnAgitEnd:
OnTouch:
OnPCLoginEvent:
OnPCLogoutEvent:
OnPCBaseLvUpEvent:
OnPCJobLvUpEvent:
OnPCDieEvent:
OnPCKillEvent:
OnNPCKillEvent:
OnPCLoadMapEvent:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="menus-close-and-next"&gt;Menus, Close, and Next&lt;/h3&gt;
&lt;p&gt;{{EntirePage|Menus}}&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;menu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;amp;lt;option_text&amp;amp;gt;"&lt;/span&gt;,&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;lt&lt;/span&gt;&lt;span class="c1"&gt;;target_label&amp;amp;gt;{,"&amp;amp;lt;option_text&amp;amp;gt;",&amp;amp;lt;target_label&amp;amp;gt;,...};&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nv"&gt;close&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;next&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Menus create a set of options, which trigger labels when selected. The text in&lt;br/&gt;
quotes is what will be displayed, followed by its respective label. Enter as&lt;br/&gt;
many choices as you want, and end the last one with a semicolon instead of a&lt;br/&gt;
comma.&lt;br/&gt;
"Close" will close any message window that is open (from "mes" commands).&lt;br/&gt;
"Next" will clear the message window, bringing up a fresh screen.  &lt;/p&gt;
&lt;p&gt;&lt;em&gt;For example:&lt;/em&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"[Test NPC]"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"How are you doing today?"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;menu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"I am doing okay!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;doingokay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;"Not doing too well"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;bad&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nl"&gt;doingokay&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Glad to hear it!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nl"&gt;bad&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Aww, I'm sorry about that."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="conditions-variables-and-set"&gt;Conditions, Variables, and Set&lt;/h3&gt;
&lt;p&gt;{{EntirePage|Variables}}&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;condition&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;lt&lt;/span&gt;&lt;span class="c1"&gt;;script&amp;amp;gt;;}&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt;lt&lt;/span&gt;&lt;span class="c1"&gt;;script&amp;amp;gt;;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Conditional statements "if" and "else" are the same as anywhere else. Multiple&lt;br/&gt;
conditions can be specified: || means &lt;em&gt;or&lt;/em&gt; , while &amp;amp;&amp;amp; means &lt;em&gt;and&lt;/em&gt;. == is&lt;br/&gt;
&lt;em&gt;equal&lt;/em&gt; , != is &lt;em&gt;not equal&lt;/em&gt;. Inequalities can be used as well (&lt;br/&gt;
The "else" can be omitted, and the brackets aren't necessary unless multiple&lt;br/&gt;
commands follow a conditional statement.  &lt;/p&gt;
&lt;p&gt;The type of variable used is defined in the name. There are permanent and&lt;br/&gt;
temporary variables, as well as scope (temporary NPC), character, global, and&lt;br/&gt;
global account. The default type is an integer, and adding $ as a suffix&lt;br/&gt;
creates a string.&lt;br/&gt;
Here are some example types, taken from script_commands.txt:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;character&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;character&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;temporary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;character&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;temporary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;character&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;permanent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;temporary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;temporary&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;
&lt;span class="c1"&gt;#name  - permanent local account integer variable&lt;/span&gt;
&lt;span class="c1"&gt;#name$ - permanent local account string variable&lt;/span&gt;
&lt;span class="c1"&gt;##name  - permanent global account integer variable&lt;/span&gt;
&lt;span class="c1"&gt;##name$ - permanent global account string variable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The "set" command is used to give a value (or string) to a variable:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;variable&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;,&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;expression&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;gt&lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;The following script will pick a random number, store it as the temporary&lt;br/&gt;
scope variable .&lt;a class="user-mention" href="/u/random/"&gt;&lt;/a&gt;&lt;a class="user-mention" href="/u/random/"&gt;@random&lt;/a&gt;, and display two different messages depending on the&lt;br/&gt;
result:&lt;/em&gt;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;@random&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;rand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nv"&gt;@random&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"I like you! :D"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;"I don't like you.  Get out of here!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="duplicating"&gt;Duplicating&lt;/h3&gt;
&lt;p&gt;It would be a huge waste of time and space to code the same NPC over and over&lt;br/&gt;
again. By duplication, an NPC can be created in multiple locations.  &lt;/p&gt;
&lt;p&gt;Take a look at our old Test NPC:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;prontera,156,145,4 &amp;amp;lt;tab&amp;amp;gt; script &amp;amp;lt;tab&amp;amp;gt; Test NPC &amp;amp;lt;tab&amp;amp;gt; 1_M_MERCHANT,{
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To be able to duplicate this, we will change the heading to this:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;lt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;tab&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;gt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;lt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;tab&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;gt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;01&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nd"&gt;testnpc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;lt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;tab&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nt"&gt;gt&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;1_M_MERCHANT&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The location doesn't need to be defined in the NPC, since it will be in the&lt;br/&gt;
duplicates.&lt;br/&gt;
The displayed name remains "Test NPC". But since NPC names must be unique,&lt;br/&gt;
adding #01 separates this one from the rest, which will be #02, #03, etc.&lt;br/&gt;
Lastly, ::testnpc is the reference name used for duplicating NPCs; this part&lt;br/&gt;
is not displayed on the screen.  &lt;/p&gt;
&lt;p&gt;After creating the base NPC, duplicates can be added anywhere to any file, so&lt;br/&gt;
long as you use the same NPC name:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;spl_fild03,150,150,7 &amp;amp;lt;tab&amp;amp;gt; duplicate(testnpc) &amp;amp;lt;tab&amp;amp;gt; Test NPC &amp;amp;lt;tab&amp;amp;gt; 1_M_MERCHANT
niflheim,50,50,2 &amp;amp;lt;tab&amp;amp;gt; duplicate(testnpc) &amp;amp;lt;tab&amp;amp;gt; Test NPC &amp;amp;lt;tab&amp;amp;gt; 1_M_MERCHANT
tha_scene01,140,190,4 &amp;amp;lt;tab&amp;amp;gt; duplicate(testnpc) &amp;amp;lt;tab&amp;amp;gt; Test NPC &amp;amp;lt;tab&amp;amp;gt; 1_M_MERCHANT
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The first part is &lt;em&gt;map,x,y,direction&lt;/em&gt; , as you're probably used to by now.&lt;br/&gt;
To define a duplicate, the word "duplicate" followed by the NPC, in&lt;br/&gt;
parentheses, is needed. The last two parameters are the display name and NPC&lt;br/&gt;
view constant (actual name of the npc sprite, yes, you can change these,&lt;br/&gt;
too!).&lt;/p&gt;
&lt;h2 id="finished-product"&gt;Finished Product&lt;/h2&gt;
&lt;p&gt;Here is an example using the features explained above:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;prontera&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;156&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;145&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;4&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nd"&gt;test&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;4_WHIKEBAIN&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"Hello,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;you?"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;am&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;fine,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;you?"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;menu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;am&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;doing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;okay!",-,"Not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;doing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;too&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;good",bad&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"That's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;good,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;I'm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;glad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;hear&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;that"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;bad&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Awww, that makes me a bit ^FF0000sad^000000. Sorry to hear that."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"Would&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;some&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;zeny&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;help&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;yourself&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;feel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;better?"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;menu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"Sure,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;give&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;it&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;me!",L_zeny,"Naw,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;No&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;zeny&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;me",-&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;L_Zeny&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"I can only give you zeny if you have 10,000 or less."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(Zeny&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;amp;gt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;10000)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;goto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;toomuch&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;have&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;10,000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;zeny&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;less,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;see."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Zeny,Zeny+10000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"Hope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;feel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;better!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;toomuch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;mes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You have over 10,000 zeny, you must feel really good about yourself!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;lhz_dun01&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;157&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;285&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;duplicate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;4_F_AGENTKAFRA&lt;/span&gt;
&lt;span class="nt"&gt;hu_fild05&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;186&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;210&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;duplicate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;4_F_AGENTKAFRA&lt;/span&gt;
&lt;span class="nt"&gt;yuno_fild07&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;221&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;179&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;4&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;duplicate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;4_F_AGENTKAFRA&lt;/span&gt;
&lt;span class="nt"&gt;tha_scene01&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;139&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;194&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;duplicate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;test&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;NPC&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;4_F_AGENTKAFRA&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h2 id="adding-scripts"&gt;Adding Scripts&lt;/h2&gt;
&lt;p&gt;{{EntirePage|Adding a Script}} For an NPC to be loaded, it needs to be added&lt;br/&gt;
to a .conf file. This is typically &lt;em&gt;npc/scripts_custom.conf&lt;/em&gt;.&lt;br/&gt;
Add a line, and enter your NPC file in the following format:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;npc&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;npc&lt;/span&gt;&lt;span class="sr"&gt;/path/to/s&lt;/span&gt;&lt;span class="n"&gt;cript&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;That's it! You're finished!&lt;/p&gt;
&lt;h2 id="external-links"&gt;External Links&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Reference Manuals for scriping commands&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;{{git|/doc/script_commands.txt}} Original documentation &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sprite lists&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://nn.ai4rei.net/dev/npclist/" rel="nofollow"&gt;http://nn.ai4rei.net/dev/npclist/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Color Charts&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.immigration-usa.com/html_colors.html" rel="nofollow"&gt;http://www.immigration-usa.com/html_colors.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.december.com/html/spec/colorcodes.html" rel="nofollow"&gt;http://www.december.com/html/spec/colorcodes.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../Hex%20triplet"&gt;wikipedia:Hex_triplet&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.colorschemer.com/online.html" rel="nofollow"&gt;http://www.colorschemer.com/online.html&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Support, Request and Release&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="http://herc.ws/board/forum/22-script-support/" rel="nofollow"&gt;Scripting support on Hercules Boards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;h1 id="hercules-on-ircrizonnet-main-hercules-channel"&gt;Hercules on irc.rizon.net : Main Hercules channel.&lt;/h1&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;[Category:Scripting]&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Brynner</dc:creator><pubDate>Mon, 20 Feb 2023 05:00:37 -0000</pubDate><guid>https://sourceforge.netc05e004a64d2bb0fb6826f0a50578f63bfc0800a</guid></item></channel></rss>