mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
17 lines
29 KiB
HTML
17 lines
29 KiB
HTML
<!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" id="jtd-head-nav-stylesheet"> <style id="jtd-nav-activation"> .site-nav > ul.nav-list:first-child > li > a, .site-nav > ul.nav-list:first-child > li > ul > li:not(:nth-child(1)) > a, .site-nav > ul.nav-list:first-child > li > ul > li > ul > li > a { background-image: none; } .site-nav > ul.nav-list:not(:first-child) a, .site-nav li.external a { background-image: none; } .site-nav > ul.nav-list:first-child > li:nth-child(6) > ul > li:nth-child(1) > a { font-weight: 600; text-decoration: none; }.site-nav > ul.nav-list:first-child > li:nth-child(6) > button svg, .site-nav > ul.nav-list:first-child > li:nth-child(6) > ul > li:nth-child(1) > button svg { transform: rotate(-90deg); }.site-nav > ul.nav-list:first-child > li.nav-list-item:nth-child(6) > ul.nav-list, .site-nav > ul.nav-list:first-child > li.nav-list-item:nth-child(6) > ul.nav-list > li.nav-list-item:nth-child(1) > ul.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>Hook functions | sfall</title> <meta name="generator" content="Jekyll v3.9.0" /> <meta property="og:title" content="Hook functions" /> <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/hook-functions/" /> <meta property="og:url" content="/sfall/hook-functions/" /> <meta property="og:site_name" content="sfall" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Hook functions" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Sfall documentation","headline":"Hook functions","url":"/sfall/hook-functions/"}</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="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</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-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE --> <symbol id="svg-external-link" 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-external-link"> <title id="svg-external-link-title">(external link)</title> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</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-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</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-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md --> <symbol id="svg-copy" viewBox="0 0 16 16"> <title>Copy</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> </svg> </symbol> <symbol id="svg-copied" viewBox="0 0 16 16"> <title>Copied</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16"> <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header" role="banner"> <a href="/sfall/" class="site-title lh-tight"> sfall </a> <button id="menu-button" class="site-button btn-reset" aria-label="Toggle menu" aria-pressed="false"> <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg> </button> </div> <nav aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/sfall/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Arrays category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/arrays/" class="nav-list-link">Arrays</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/array-functions/" class="nav-list-link">Array functions</a></li><li class="nav-list-item"><a href="/sfall/lists/" class="nav-list-link">Lists</a></li></ul></li><li class="nav-list-item"><a href="/sfall/best-practices/" class="nav-list-link">Best practices</a></li><li class="nav-list-item"><a href="/sfall/data-types/" class="nav-list-link">Data types</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Global scripts category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/global-scripts/" class="nav-list-link">Global scripts</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/global-script-functions/" class="nav-list-link">Global script functions</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Hooks category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/hooks/" class="nav-list-link">Hooks</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/hook-functions/" class="nav-list-link">Hook functions</a></li><li class="nav-list-item"><a href="/sfall/hook-types/" class="nav-list-link">Hook types</a></li></ul></li><li class="nav-list-item"><a href="/sfall/sslc/" class="nav-list-link">SSLC</a></li><li class="nav-list-item"><a href="/sfall/optimization/" class="nav-list-link">Optimization</a></li><li class="nav-list-item"><a href="/sfall/animations/" class="nav-list-link">Animations</a></li><li class="nav-list-item"><a href="/sfall/art-and-appearance/" class="nav-list-link">Art and appearance</a></li><li class="nav-list-item"><a href="/sfall/audio/" class="nav-list-link">Audio</a></li><li class="nav-list-item"><a href="/sfall/car/" class="nav-list-link">Car</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Combat category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/combat/" class="nav-list-link">Combat</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/knockback/" class="nav-list-link">Knockback</a></li><li class="nav-list-item"><a href="/sfall/weapons-and-ammo/" class="nav-list-link">Weapons and ammo</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Direct memory access category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/direct-memory-access/" class="nav-list-link">Direct memory access</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/call_offset_vx/" class="nav-list-link">call_offset_vX</a></li><li class="nav-list-item"><a href="/sfall/read_xxx/" class="nav-list-link">read_xxx</a></li><li class="nav-list-item"><a href="/sfall/write_xxx/" class="nav-list-link">write_xxx</a></li></ul></li><li class="nav-list-item"><a href="/sfall/explosions/" class="nav-list-link">Explosions</a></li><li class="nav-list-item"><a href="/sfall/global-variables/" class="nav-list-link">Global variables</a></li><li class="nav-list-item"><a href="/sfall/graphics/" class="nav-list-link">Graphics</a></li><li class="nav-list-item"><a href="/sfall/ini-settings/" class="nav-list-link">INI settings</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Interface category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/interface/" class="nav-list-link">Interface</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/cursor/" class="nav-list-link">Cursor</a></li><li class="nav-list-item"><a href="/sfall/inventory/" class="nav-list-link">Inventory</a></li><li class="nav-list-item"><a href="/sfall/main-interface/" class="nav-list-link">Main interface</a></li><li class="nav-list-item"><a href="/sfall/outline/" class="nav-list-link">Outline</a></li><li class="nav-list-item"><a href="/sfall/pip-boy/" class="nav-list-link">Pip-Boy</a></li><li class="nav-list-item"><a href="/sfall/tags/" class="nav-list-link">Tags</a></li><li class="nav-list-item"><a href="/sfall/windows-and-images/" class="nav-list-link">Windows and images</a></li></ul></li><li class="nav-list-item"><a href="/sfall/keyboard-and-mouse/" class="nav-list-link">Keyboard and mouse</a></li><li class="nav-list-item"><a href="/sfall/locks/" class="nav-list-link">Locks</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Maps and encounters category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/maps-and-encounters/" class="nav-list-link">Maps and encounters</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/rest/" class="nav-list-link">Rest</a></li><li class="nav-list-item"><a href="/sfall/worldmap/" class="nav-list-link">Worldmap</a></li></ul></li><li class="nav-list-item"><a href="/sfall/objects-and-scripts/" class="nav-list-link">Objects and scripts</a></li><li class="nav-list-item"><a href="/sfall/other/" class="nav-list-link">Other</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Perks and traits category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/perks-and-traits/" class="nav-list-link">Perks and traits</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/npc-perks/" class="nav-list-link">NPC perks</a></li></ul></li><li class="nav-list-item"><a href="/sfall/sfall-funcx-macros/" class="nav-list-link">Sfall funcX macros</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Sfall category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/sfall/" class="nav-list-link">Sfall</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/funcx/" class="nav-list-link">funcX</a></li><li class="nav-list-item"><a href="/sfall/version/" class="nav-list-link">Version</a></li></ul></li><li class="nav-list-item"><a href="/sfall/skills/" class="nav-list-link">Skills</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Stats category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/stats/" class="nav-list-link">Stats</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/alter-min-max/" class="nav-list-link">Alter min/max</a></li></ul></li><li class="nav-list-item"><a href="/sfall/tiles-and-paths/" class="nav-list-link">Tiles and paths</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="toggle items in Utility category" aria-pressed="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/sfall/utility/" class="nav-list-link">Utility</a><ul class="nav-list"><li class="nav-list-item"><a href="/sfall/math/" class="nav-list-link">Math</a></li><li class="nav-list-item"><a href="/sfall/strings/" class="nav-list-link">Strings</a></li></ul></li><li class="nav-list-item"><a href="/sfall/virtual-file-system/" class="nav-list-link">Virtual file system</a></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search" role="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search sfall" aria-label="Search sfall" autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> <nav aria-label="Auxiliary" class="aux-nav"> <ul class="aux-nav-list"> <li class="aux-nav-list-item"> <a href="https://nma-fallout.com/threads/fo2-engine-tweaks-sfall.178390/" class="site-button" > Forum </a> </li> <li class="aux-nav-list-item"> <a href="https://github.com/phobos2077/sfall/" class="site-button" > GitHub </a> </li> </ul> </nav> </div> <div class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/sfall/hooks/">Hooks</a></li> <li class="breadcrumb-nav-list-item"><span>Hook functions</span></li> </ol> </nav> <div id="main-content" class="main-content"> <main> <h1 class="no_toc" id="hook-functions"> <a href="#hook-functions" class="anchor-heading" aria-labelledby="hook-functions"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Hook functions </h1> <h2 class="no_toc" id="functions"> <a href="#functions" class="anchor-heading" aria-labelledby="functions"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Functions </h2> <ul id="markdown-toc"> <li><a href="#get_sfall_arg" id="markdown-toc-get_sfall_arg"><strong>get_sfall_arg</strong></a></li> <li><a href="#get_sfall_arg_at" id="markdown-toc-get_sfall_arg_at"><strong>get_sfall_arg_at</strong></a></li> <li><a href="#get_sfall_args" id="markdown-toc-get_sfall_args"><strong>get_sfall_args</strong></a></li> <li><a href="#init_hook" id="markdown-toc-init_hook"><strong>init_hook</strong></a></li> <li><a href="#register_hook" id="markdown-toc-register_hook"><strong>register_hook</strong></a></li> <li><a href="#register_hook_proc" id="markdown-toc-register_hook_proc"><strong>register_hook_proc</strong></a></li> <li><a href="#register_hook_proc_spec" id="markdown-toc-register_hook_proc_spec"><strong>register_hook_proc_spec</strong></a></li> <li><a href="#set_sfall_arg" id="markdown-toc-set_sfall_arg"><strong>set_sfall_arg</strong></a></li> <li><a href="#set_sfall_return" id="markdown-toc-set_sfall_return"><strong>set_sfall_return</strong></a></li> </ul><hr /> <h3 id="get_sfall_arg"> <a href="#get_sfall_arg" class="anchor-heading" aria-labelledby="get_sfall_arg"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_sfall_arg</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mixed</span> <span class="n">get_sfall_arg</span><span class="p">()</span>
|
||
</code></pre></div></div> <p>Gets the next argument from sfall. Each time it’s called it returns the next argument, or otherwise it returns 0 if there are no more arguments left. You can arbitrarily get the value of any argument using the <code class="language-plaintext highlighter-rouge">sfall_func1("get_sfall_arg_at", argNum)</code> function.</p><hr /> <h3 class="d-inline-block" id="get_sfall_arg_at"> <a href="#get_sfall_arg_at" class="anchor-heading" aria-labelledby="get_sfall_arg_at"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_sfall_arg_at</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">mixed</span> <span class="n">get_sfall_arg_at</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>Gets the value of hook argument with the specified argument number (first argument of hook starts from 0)</p><hr /> <h3 id="get_sfall_args"> <a href="#get_sfall_args" class="anchor-heading" aria-labelledby="get_sfall_args"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>get_sfall_args</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">get_sfall_args</span><span class="p">()</span>
|
||
</code></pre></div></div> <p>Returns all hook arguments as a new temp array.</p><hr /> <h3 id="init_hook"> <a href="#init_hook" class="anchor-heading" aria-labelledby="init_hook"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>init_hook</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">int</span> <span class="n">init_hook</span><span class="p">()</span>
|
||
</code></pre></div></div> <p>The hook script equivalent of <code class="language-plaintext highlighter-rouge">game_loaded</code>; it returns 1 when the script is loaded for the first time or when the player reloads the game, and 0 otherwise.</p><hr /> <h3 id="register_hook"> <a href="#register_hook" class="anchor-heading" aria-labelledby="register_hook"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>register_hook</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">register_hook</span><span class="p">(</span><span class="kt">int</span> <span class="n">hookID</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>Used from a normal global script if you want to run it at the same point a full hook script would normally run. In case of this function, <code class="language-plaintext highlighter-rouge">start</code> procedure will be executed in current global script. You can use all above functions like normal.</p><hr /> <h3 id="register_hook_proc"> <a href="#register_hook_proc" class="anchor-heading" aria-labelledby="register_hook_proc"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>register_hook_proc</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">register_hook_proc</span><span class="p">(</span><span class="kt">int</span> <span class="n">hookID</span><span class="p">,</span> <span class="n">proc</span> <span class="n">procedure</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>The same as <code class="language-plaintext highlighter-rouge">register_hook</code>, except that you specifically define which procedure in the current script should be called as a hook (instead of “start” by default). Pass procedure the same as how you use dialog option functions. This IS the recommended way to use hook scripts, as it gives both modularity (each mod logic in a separate global script with no conflicts) and flexibility. You can place all related hook scripts for a specific mod in one global script!</p> <p>Use zero (0) as second argument to unregister hook script from current global script.</p> <p><strong>NOTE:</strong> you can hook several scripts to a single hook point, for example if it’s different mods from different authors or just some different aspects of one larger mod. When one of the scripts in a chain returns value with <code class="language-plaintext highlighter-rouge">set_sfall_return</code>, the next script may override this value if calls <code class="language-plaintext highlighter-rouge">set_sfall_return</code> again.</p> <p><strong>Example:</strong> Sometimes you need to multiply certain value in a chain of hook scripts. Let’s say we have a <strong>Mod A</strong> which reduces all “to hit” chances by 50%. The code might look like this:</p> <div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">original_chance</span> <span class="o">=</span> <span class="nx">get_sfall_arg</span><span class="p">;</span>
|
||
<span class="nx">set_sfall_return</span><span class="p">(</span><span class="nx">original_chance</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
|
||
</code></pre></div></div> <p><strong>Mod B</strong> also want to affect hit chances globally, by increasing them by 50%. Now in order for both mods to work well together, we need to add this line to <strong>Mod A</strong> hook script:</p> <div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">set_sfall_arg</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="nx">original_chance</span> <span class="o">/</span> <span class="mi">2</span><span class="p">));</span>
|
||
</code></pre></div></div> <p>This basically changes hook argument for the next script. <strong>Mod B</strong> code:</p> <div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">original_chance</span> <span class="o">=</span> <span class="nx">get_sfall_arg</span><span class="p">;</span>
|
||
<span class="nx">set_sfall_return</span><span class="p">(</span><span class="nx">original_chance</span> <span class="o">*</span> <span class="mf">1.5</span><span class="p">);</span>
|
||
<span class="nx">set_sfall_arg</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="p">(</span><span class="nx">original_chance</span> <span class="o">*</span> <span class="mf">1.5</span><span class="p">));</span>
|
||
</code></pre></div></div> <p>So if you combine both mods together, they will run in chain and the end result will be a 75% from original hit chance (hook register order doesn’t matter in this case, if you use <code class="language-plaintext highlighter-rouge">set_sfall_arg</code> in both hooks).</p> <p>The defines to use for the <code class="language-plaintext highlighter-rouge">hookID</code> are in <strong>sfall.h</strong>.</p><hr /> <h3 id="register_hook_proc_spec"> <a href="#register_hook_proc_spec" class="anchor-heading" aria-labelledby="register_hook_proc_spec"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>register_hook_proc_spec</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">register_hook_proc_spec</span><span class="p">(</span><span class="kt">int</span> <span class="n">hookID</span><span class="p">,</span> <span class="n">procedure</span> <span class="n">proc</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>Works the same as <code class="language-plaintext highlighter-rouge">register_hook_proc</code>, except that it registers the current script at the end of the hook script execution chain (i.e. the script will be executed after all previously registered scripts for the same hook, including the <code class="language-plaintext highlighter-rouge">hs_<name>.int</code> script). In addition, all scripts hooked to a single hook point with this function are executed in the exact order of how they were registered. In the case of using <code class="language-plaintext highlighter-rouge">register_hook</code> and <code class="language-plaintext highlighter-rouge">register_hook_proc</code> functions, scripts are executed in reverse order of how they were registered. <strong>The execution chain of script procedures for a hook is as follows:</strong> 1. Procedures registered with <code class="language-plaintext highlighter-rouge">register_hook</code> and <code class="language-plaintext highlighter-rouge">register_hook_proc</code> functions (executed in reverse order of registration). 2. The <code class="language-plaintext highlighter-rouge">hs_<name>.int</code> script. 3. Procedures registered with the <code class="language-plaintext highlighter-rouge">register_hook_proc_spec</code> function (executed in the exact order of registration).</p><hr /> <h3 id="set_sfall_arg"> <a href="#set_sfall_arg" class="anchor-heading" aria-labelledby="set_sfall_arg"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_sfall_arg</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_sfall_arg</span><span class="p">(</span><span class="kt">int</span> <span class="n">argNum</span><span class="p">,</span> <span class="kt">int</span> <span class="n">value</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>Changes argument value. The argument number (<code class="language-plaintext highlighter-rouge">argNum</code>) is 0-indexed. This is useful if you have several hook scripts attached to one hook point (see <code class="language-plaintext highlighter-rouge">register_hook_proc</code>).</p><hr /> <h3 id="set_sfall_return"> <a href="#set_sfall_return" class="anchor-heading" aria-labelledby="set_sfall_return"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> <strong>set_sfall_return</strong> </h3> <div class="language-c++ highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kt">void</span> <span class="n">set_sfall_return</span><span class="p">(</span><span class="n">any</span> <span class="n">value</span><span class="p">)</span>
|
||
</code></pre></div></div> <p>Used to return the new values from the script. Each time it’s called it sets the next value, or if you’ve already set all return values it does nothing.</p> </main> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
|