Files
sfall/objects-and-scripts/index.html
T

19 lines
35 KiB
HTML
Raw Normal View History

2023-10-02 00:50:31 +00:00
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <link rel="stylesheet" href="/sfall/assets/css/just-the-docs-default.css"> <link rel="stylesheet" href="/sfall/assets/css/just-the-docs-head-nav.css"> <style id="jtd-nav-activation"> .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:not(.external):not(:nth-child(23)) > .nav-list-link, .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:not(.external) > .nav-list > .nav-list-item > .nav-list-link, .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:not(.external) > .nav-list > .nav-list-item > .nav-list > .nav-list-item > .nav-list-link { background-image: none; } .site-nav > .nav-list:not(:nth-child(1):not(.nav-category-list)) .nav-list-link, .site-nav .nav-list-link.external { background-image: none; } .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:not(.external):nth-child(23) > .nav-list-link { font-weight: 600; text-decoration: none; } .site-nav > .nav-category-list > .nav-list-item > .nav-list-expander svg, .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:nth-child(23) > .nav-list-expander svg { transform: rotate(-90deg); } .site-nav > .nav-category-list > .nav-list-item > .nav-list, .site-nav > .nav-list:nth-child(1):not(.nav-category-list) > .nav-list-item:nth-child(23) > .nav-list { display: block; } </style> <script src="/sfall/assets/js/vendor/lunr.min.js"></script> <script src="/sfall/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="/sfall/favicon.ico" type="image/x-icon"> <!-- Begin Jekyll SEO tag v2.8.0 --> <title>Objects and scripts | sfall</title> <meta name="generator" content="Jekyll v3.9.0" /> <meta property="og:title" content="Objects and scripts" /> <meta property="og:locale" content="en_US" /> <meta name="description" content="Sfall documentation" /> <meta property="og:description" content="Sfall documentation" /> <link rel="canonical" href="/sfall/objects-and-scripts/" /> <meta property="og:url" content="/sfall/objects-and-scripts/" /> <meta property="og:site_name" content="sfall" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Objects and scripts" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Sfall documentation","headline":"Objects and scripts","url":"/sfall/objects-and-scripts/"}</script> <!-- End Jekyll SEO tag --> <link rel="apple-touch-icon" sizes="180x180" href="/assets/favicon/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon/favicon-16x16.png"> <link rel="manifest" href="/assets/favicon/site.webmanifest"> <link rel="mask-icon" href="/assets/favicon/safari-pinned-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="msapplication-config" content="/assets/favicon/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> </head> <body> <a class="skip-to-main" href="#main-content">Skip to main content</a> <svg xmlns="http://www.w3.org/2000/svg" class="d-none"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feath
2021-06-01 04:05:32 +00:00
</code></pre></div></div> <p>Returns a pointer to the object (critter) the player is having a conversation or bartering with.</p><hr /> <h3 class="d-inline-block" id="get_flags"> <a href="#get_flags" class="anchor-heading" aria-labelledby="get_flags"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_flags</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">get_flags</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">obj</span><span class="p">)</span>
2023-10-16 03:36:10 +00:00
</code></pre></div></div> <p>Gets the current value of object flags (see <strong>define_extra.h</strong> for available flags).</p><hr /> <h3 class="d-inline-block" id="get_object_data"> <a href="#get_object_data" class="anchor-heading" aria-labelledby="get_object_data"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_object_data</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">get_object_data</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">object</span><span class="p">,</span> <span class="kt">int</span> <span class="n">offset</span><span class="p">)</span>
</code></pre></div></div> <p>Returns the data at the specified offset of an object (see <code class="language-plaintext highlighter-rouge">OBJ_DATA_*</code> constants in <strong>define_extra.h</strong> for offsets).</p><hr /> <h3 id="get_script"> <a href="#get_script" class="anchor-heading" aria-labelledby="get_script"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_script</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">get_script</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">obj</span><span class="p">)</span>
2022-04-07 13:19:56 +00:00
</code></pre></div></div> <ul> <li>accepts a pointer to an object and returns its scriptID (line number in <code class="language-plaintext highlighter-rouge">scripts.lst</code>), or 0 if the object is unscripted.</li> <li>returns -1 on argument error.</li> </ul><hr /> <h3 class="d-inline-block" id="loot_obj"> <a href="#loot_obj" class="anchor-heading" aria-labelledby="loot_obj"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>loot_obj</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ObjectPtr</span> <span class="n">loot_obj</span><span class="p">()</span>
2021-06-01 04:05:32 +00:00
</code></pre></div></div> <p>Returns a pointer to the target object (container or critter) of the loot screen.</p><hr /> <h3 id="obj_is_carrying_obj"> <a href="#obj_is_carrying_obj" class="anchor-heading" aria-labelledby="obj_is_carrying_obj"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>obj_is_carrying_obj</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">invenObj</span><span class="p">,</span> <span class="n">ObjectPtr</span> <span class="n">itemObj</span><span class="p">)</span>
2022-04-07 13:19:56 +00:00
</code></pre></div></div> <p>Returns number of <code class="language-plaintext highlighter-rouge">itemObj</code> inside invenObjs inventory, note that both arguments are object pointers. useful when dealing with different stacks of same item (<code class="language-plaintext highlighter-rouge">obj_is_carrying_obj_pid</code> just returns total for all stacks of the same PID.)</p><hr /> <h3 class="d-inline-block" id="obj_is_openable"> <a href="#obj_is_openable" class="anchor-heading" aria-labelledby="obj_is_openable"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>obj_is_openable</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">bool</span> <span class="n">obj_is_openable</span><span class="p">(</span><span class="n">object</span> <span class="n">obj</span><span class="p">)</span>
2023-03-31 14:16:17 +00:00
</code></pre></div></div> <p>Returns True if the object is openable (i.e. has an opening/closing animation), False otherwise</p><hr /> <h3 class="d-inline-block" id="obj_under_cursor"> <a href="#obj_under_cursor" class="anchor-heading" aria-labelledby="obj_under_cursor"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>obj_under_cursor</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ObjectPtr</span> <span class="n">obj_under_cursor</span><span class="p">(</span><span class="kt">bool</span> <span class="n">onlyCritter</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">includeDude</span><span class="p">)</span>
2022-04-07 13:19:56 +00:00
</code></pre></div></div> <p>Returns the object under the cursor on the main game screen.</p> <ul> <li>onlyCritter: <ul> <li>True - only checks critters and ignores their cover (roof tiles, walls, scenery, etc.)</li> <li>False - checks all objects (cant check critters under objects)</li> </ul> </li> <li>passing False to the includeDude argument will ignore dude_obj <ul> <li><strong>NOTE:</strong> to get an object located on a tile when the cursor is in movement mode (hexagon cursor), use the <code class="language-plaintext highlighter-rouge">tile_under_cursor</code> function</li> </ul> </li> </ul><hr /> <h3 class="d-inline-block" id="real_dude_obj"> <a href="#real_dude_obj" class="anchor-heading" aria-labelledby="real_dude_obj"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>real_dude_obj</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ObjectPtr</span> <span class="n">real_dude_obj</span><span class="p">()</span>
2023-03-31 14:16:17 +00:00
</code></pre></div></div> <p>Returns the initial <code class="language-plaintext highlighter-rouge">dude_obj</code> after <code class="language-plaintext highlighter-rouge">set_dude_obj</code> was used.</p><hr /> <h3 id="remove_script"> <a href="#remove_script" class="anchor-heading" aria-labelledby="remove_script"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>remove_script</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">remove_script</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">obj</span><span class="p">)</span>
2021-06-01 04:05:32 +00:00
</code></pre></div></div> <p>Accepts a pointer to an object and will remove the script from that object.</p><hr /> <h3 class="d-inline-block" id="set_dude_obj"> <a href="#set_dude_obj" class="anchor-heading" aria-labelledby="set_dude_obj"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_dude_obj</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_dude_obj</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">critter</span><span class="p">)</span>
</code></pre></div></div> <p>Take control of a given critter. Passing value 0 will reset control back to “real” dude.</p><hr /> <h3 class="d-inline-block" id="set_flags"> <a href="#set_flags" class="anchor-heading" aria-labelledby="set_flags"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_flags</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_flags</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">flags</span><span class="p">)</span>
2022-04-07 13:19:56 +00:00
</code></pre></div></div> <p>Sets the current flags of an object. All flags are rewritten with given integer, so first get current flags with <code class="language-plaintext highlighter-rouge">get_flags</code> and use <code class="language-plaintext highlighter-rouge">bwor/bwand</code> to set/remove specific flag.</p><hr /> <h3 class="d-inline-block" id="set_object_data"> <a href="#set_object_data" class="anchor-heading" aria-labelledby="set_object_data"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_object_data</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">set_object_data</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">object</span><span class="p">,</span> <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="kt">int</span> <span class="n">data</span><span class="p">)</span>
2021-10-15 02:40:39 +00:00
</code></pre></div></div> <p>Sets the data at the specified offset of an object.</p><hr /> <h3 class="d-inline-block" id="set_scr_name"> <a href="#set_scr_name" class="anchor-heading" aria-labelledby="set_scr_name"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_scr_name</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_scr_name</span><span class="p">(</span><span class="n">string</span> <span class="n">name</span><span class="p">)</span>
2023-03-31 14:16:17 +00:00
</code></pre></div></div> <p>Overrides the name of the script object that was set from <code class="language-plaintext highlighter-rouge">scrname.msg</code>.</p> <ul> <li>The changed name will be reset each time the player leaves the map or reloads the game</li> <li>Passing an empty string (“”) to the <code class="language-plaintext highlighter-rouge">name</code> argument or omitting it will allow the game to get the name for the object from pro_*.msg files</li> <li><strong>NOTE:</strong> this function is intended for use in normal game scripts and overrides the name only once for the same object until reset</li> </ul><hr /> <h3 id="set_script"> <a href="#set_script" class="anchor-heading" aria-labelledby="set_script"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_script</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_script</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">scriptID</span><span class="p">)</span>
</code></pre></div></div> <p>Accepts a pointer to an object and scriptID, and applies the given script to an object (scriptID accept the same values as <code class="language-plaintext highlighter-rouge">create_object_sid </code>from sfall 3.6). If used on an object that is already scripted, it will remove the existing script first; you cannot have multiple scripts attached to a single object. Calling <code class="language-plaintext highlighter-rouge">set_script</code> on <code class="language-plaintext highlighter-rouge">self_obj</code> will have all sorts of wacky side effects, and should be avoided. If you add 0x80000000 to the sid when calling <code class="language-plaintext highlighter-rouge">set_script</code>, <code class="language-plaintext highlighter-rouge">map_enter_p_proc</code> will be SKIPPED. The <code class="language-plaintext highlighter-rouge">start</code> proc will always be run.</p><hr /> <h3 id="set_self"> <a href="#set_self" class="anchor-heading" aria-labelledby="set_self"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_self</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_self</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">setObj</span><span class="p">)</span>
2022-07-08 13:11:47 +00:00
</code></pre></div></div> <p>Overrides the scripts <code class="language-plaintext highlighter-rouge">self_obj</code> for the next function call.</p> <ul> <li>It is primarily used to allow the calling of functions which take an implicit <code class="language-plaintext highlighter-rouge">self_obj</code> parameter (e.g. <code class="language-plaintext highlighter-rouge">drop_obj</code>) from global scripts, but it can also be used from normal scripts.</li> <li><code class="language-plaintext highlighter-rouge">self_obj</code> will be reverted to its original value after the next function call.</li> <li>Calling <code class="language-plaintext highlighter-rouge">set_self(0)</code> will also revert <code class="language-plaintext highlighter-rouge">self_obj</code> to its original value. It is recommended to call this after each use of <code class="language-plaintext highlighter-rouge">set_self</code> in normal scripts in order to avoid unforeseen side effects.</li> <li><code class="language-plaintext highlighter-rouge">source_obj</code>, <code class="language-plaintext highlighter-rouge">target_obj</code>, and similar functions will not work if preceded by <code class="language-plaintext highlighter-rouge">set_self</code>.</li> <li><strong>NOTE:</strong> for <code class="language-plaintext highlighter-rouge">use_obj</code>, <code class="language-plaintext highlighter-rouge">use_obj_on_obj</code> vanilla functions to work correctly, it is required to call <code class="language-plaintext highlighter-rouge">set_self</code> twice. You can also access the local variables in the script of an object after calling <code class="language-plaintext highlighter-rouge">set_self</code> twice.</li> </ul><hr /> <h3 class="d-inline-block" id="set_unique_id"> <a href="#set_unique_id" class="anchor-heading" aria-labelledby="set_unique_id"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_unique_id</strong> </h3> <p class="label label-green">sfall.h</p> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">set_unique_id</span><span class="p">(</span><span class="n">ObjectPtr</span> <span class="n">object</span><span class="p">,</span> <span class="kt">int</span> <span class="n">flag</span><span class="p">)</span>
2023-08-09 00:25:41 +00:00
</code></pre></div></div> <p>Assigns a unique ID number to the object and returns it. If a unique ID number has already been assigned to an object, then ID number is returned without reassignment. <code class="language-plaintext highlighter-rouge">flag</code> is optional.</p> <ul> <li>items with unique IDs will not stack with other items of the same type in the inventory</li> <li>to just get the current ID number of an object, use <code class="language-plaintext highlighter-rouge">get_object_data(object, OBJ_DATA_ID)</code></li> <li>unique ID numbers are saved in your savegame, and have a range from 0x10000000 to 0x7FFFFFFF</li> <li>there is also a unique ID number range for the player and party members from 18000 to 83535</li> <li>to assign a new ID number generated by the engine to the object (i.e. unassign a unique ID), call the function with two arguments and pass -1 for the flag argument</li> </ul> </main> </div> </div> <div class="search-overlay"></div> </div> </body> </html>