mirror of
https://github.com/evennia/evennia.git
synced 2026-04-03 06:27:17 +02:00
707 lines
No EOL
77 KiB
HTML
707 lines
No EOL
77 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>evennia.server.inputfuncs — Evennia 0.9.5 documentation</title>
|
|
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
|
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
|
<script src="../../../_static/jquery.js"></script>
|
|
<script src="../../../_static/underscore.js"></script>
|
|
<script src="../../../_static/doctools.js"></script>
|
|
<script src="../../../_static/language_data.js"></script>
|
|
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
|
|
<link rel="index" title="Index" href="../../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../../search.html" />
|
|
</head><body>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.server.inputfuncs</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">Functions for processing input commands.</span>
|
|
|
|
<span class="sd">All global functions in this module whose name does not start with "_"</span>
|
|
<span class="sd">is considered an inputfunc. Each function must have the following</span>
|
|
<span class="sd">callsign (where inputfunc name is always lower-case, no matter what the</span>
|
|
<span class="sd">OOB input name looked like):</span>
|
|
|
|
<span class="sd"> inputfunc(session, *args, **kwargs)</span>
|
|
|
|
<span class="sd">Where "options" is always one of the kwargs, containing eventual</span>
|
|
<span class="sd">protocol-options.</span>
|
|
<span class="sd">There is one special function, the "default" function, which is called</span>
|
|
<span class="sd">on a no-match. It has this callsign:</span>
|
|
|
|
<span class="sd"> default(session, cmdname, *args, **kwargs)</span>
|
|
|
|
<span class="sd">Evennia knows which modules to use for inputfuncs by</span>
|
|
<span class="sd">settings.INPUT_FUNC_MODULES.</span>
|
|
|
|
<span class="sd">"""</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">importlib</span>
|
|
<span class="kn">from</span> <span class="nn">codecs</span> <span class="k">import</span> <span class="n">lookup</span> <span class="k">as</span> <span class="n">codecs_lookup</span>
|
|
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">cmdhandler</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils.logger</span> <span class="k">import</span> <span class="n">log_err</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">to_str</span>
|
|
|
|
<span class="n">BrowserSessionStore</span> <span class="o">=</span> <span class="n">importlib</span><span class="o">.</span><span class="n">import_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">SESSION_ENGINE</span><span class="p">)</span><span class="o">.</span><span class="n">SessionStore</span>
|
|
|
|
|
|
<span class="c1"># always let "idle" work since we use this in the webclient</span>
|
|
<span class="n">_IDLE_COMMAND</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">IDLE_COMMAND</span>
|
|
<span class="n">_IDLE_COMMAND</span> <span class="o">=</span> <span class="p">(</span><span class="n">_IDLE_COMMAND</span><span class="p">,)</span> <span class="k">if</span> <span class="n">_IDLE_COMMAND</span> <span class="o">==</span> <span class="s2">"idle"</span> <span class="k">else</span> <span class="p">(</span><span class="n">_IDLE_COMMAND</span><span class="p">,</span> <span class="s2">"idle"</span><span class="p">)</span>
|
|
<span class="n">_GA</span> <span class="o">=</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__getattribute__</span>
|
|
<span class="n">_SA</span> <span class="o">=</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__setattr__</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_NA</span><span class="p">(</span><span class="n">o</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="s2">"N/A"</span>
|
|
|
|
|
|
<span class="n">_ERROR_INPUT</span> <span class="o">=</span> <span class="s2">"Inputfunc </span><span class="si">{name}</span><span class="s2">(</span><span class="si">{session}</span><span class="s2">): Wrong/unrecognized input: </span><span class="si">{inp}</span><span class="s2">"</span>
|
|
|
|
|
|
<span class="c1"># All global functions are inputfuncs available to process inputs</span>
|
|
|
|
|
|
<div class="viewcode-block" id="text"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.text">[docs]</a><span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Main text input from the client. This will execute a command</span>
|
|
<span class="sd"> string on the server.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> session (Session): The active Session to receive the input.</span>
|
|
<span class="sd"> text (str): First arg is used as text-command input. Other</span>
|
|
<span class="sd"> arguments are ignored.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># from evennia.server.profiling.timetrace import timetrace</span>
|
|
<span class="c1"># text = timetrace(text, "ServerSession.data_in")</span>
|
|
|
|
<span class="n">txt</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># explicitly check for None since text can be an empty string, which is</span>
|
|
<span class="c1"># also valid</span>
|
|
<span class="k">if</span> <span class="n">txt</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
<span class="c1"># this is treated as a command input</span>
|
|
<span class="c1"># handle the 'idle' command</span>
|
|
<span class="k">if</span> <span class="n">txt</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">in</span> <span class="n">_IDLE_COMMAND</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">(</span><span class="n">idle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">account</span><span class="p">:</span>
|
|
<span class="c1"># nick replacement</span>
|
|
<span class="n">puppet</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span>
|
|
<span class="k">if</span> <span class="n">puppet</span><span class="p">:</span>
|
|
<span class="n">txt</span> <span class="o">=</span> <span class="n">puppet</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
|
<span class="n">txt</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">True</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">txt</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">nickreplace</span><span class="p">(</span>
|
|
<span class="n">txt</span><span class="p">,</span> <span class="n">categories</span><span class="o">=</span><span class="p">(</span><span class="s2">"inputline"</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">),</span> <span class="n">include_account</span><span class="o">=</span><span class="kc">False</span>
|
|
<span class="p">)</span>
|
|
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">cmdhandler</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">txt</span><span class="p">,</span> <span class="n">callertype</span><span class="o">=</span><span class="s2">"session"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">()</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="bot_data_in"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.bot_data_in">[docs]</a><span class="k">def</span> <span class="nf">bot_data_in</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Text input from the IRC and RSS bots.</span>
|
|
<span class="sd"> This will trigger the execute_cmd method on the bots in-game counterpart.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> session (Session): The active Session to receive the input.</span>
|
|
<span class="sd"> text (str): First arg is text input. Other arguments are ignored.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">txt</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Explicitly check for None since text can be an empty string, which is</span>
|
|
<span class="c1"># also valid</span>
|
|
<span class="k">if</span> <span class="n">txt</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
<span class="c1"># this is treated as a command input</span>
|
|
<span class="c1"># handle the 'idle' command</span>
|
|
<span class="k">if</span> <span class="n">txt</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">in</span> <span class="n">_IDLE_COMMAND</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">(</span><span class="n">idle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="c1"># Trigger the execute_cmd method of the corresponding bot.</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">txt</span><span class="o">=</span><span class="n">txt</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">()</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="echo"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.echo">[docs]</a><span class="k">def</span> <span class="nf">echo</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Echo test function</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">data_out</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="s2">"Echo returns: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">args</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="default"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.default">[docs]</a><span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">cmdname</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Default catch-function. This is like all other input functions except</span>
|
|
<span class="sd"> it will get `cmdname` as the first argument.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">err</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"Session </span><span class="si">{sessid}</span><span class="s2">: Input command not recognized:</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">" name: '</span><span class="si">{cmdname}</span><span class="s2">'</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">" args, kwargs: </span><span class="si">{args}</span><span class="s2">, </span><span class="si">{kwargs}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
|
<span class="n">sessid</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">,</span> <span class="n">cmdname</span><span class="o">=</span><span class="n">cmdname</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="n">kwargs</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"INPUTDEBUG"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
|
<span class="n">log_err</span><span class="p">(</span><span class="n">err</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="n">_CLIENT_OPTIONS</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"ANSI"</span><span class="p">,</span>
|
|
<span class="s2">"XTERM256"</span><span class="p">,</span>
|
|
<span class="s2">"MXP"</span><span class="p">,</span>
|
|
<span class="s2">"UTF-8"</span><span class="p">,</span>
|
|
<span class="s2">"SCREENREADER"</span><span class="p">,</span>
|
|
<span class="s2">"ENCODING"</span><span class="p">,</span>
|
|
<span class="s2">"MCCP"</span><span class="p">,</span>
|
|
<span class="s2">"SCREENHEIGHT"</span><span class="p">,</span>
|
|
<span class="s2">"SCREENWIDTH"</span><span class="p">,</span>
|
|
<span class="s2">"INPUTDEBUG"</span><span class="p">,</span>
|
|
<span class="s2">"RAW"</span><span class="p">,</span>
|
|
<span class="s2">"NOCOLOR"</span><span class="p">,</span>
|
|
<span class="s2">"NOGOAHEAD"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
|
|
<div class="viewcode-block" id="client_options"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.client_options">[docs]</a><span class="k">def</span> <span class="nf">client_options</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> This allows the client an OOB way to inform us about its name and capabilities.</span>
|
|
<span class="sd"> This will be integrated into the session settings</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> get (bool): If this is true, return the settings as a dict</span>
|
|
<span class="sd"> (ignore all other kwargs).</span>
|
|
<span class="sd"> client (str): A client identifier, like "mushclient".</span>
|
|
<span class="sd"> version (str): A client version</span>
|
|
<span class="sd"> ansi (bool): Supports ansi colors</span>
|
|
<span class="sd"> xterm256 (bool): Supports xterm256 colors or not</span>
|
|
<span class="sd"> mxp (bool): Supports MXP or not</span>
|
|
<span class="sd"> utf-8 (bool): Supports UTF-8 or not</span>
|
|
<span class="sd"> screenreader (bool): Screen-reader mode on/off</span>
|
|
<span class="sd"> mccp (bool): MCCP compression on/off</span>
|
|
<span class="sd"> screenheight (int): Screen height in lines</span>
|
|
<span class="sd"> screenwidth (int): Screen width in characters</span>
|
|
<span class="sd"> inputdebug (bool): Debug input functions</span>
|
|
<span class="sd"> nocolor (bool): Strip color</span>
|
|
<span class="sd"> raw (bool): Turn off parsing</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">old_flags</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"get"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
|
<span class="c1"># return current settings</span>
|
|
<span class="n">options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">key</span><span class="p">,</span> <span class="n">old_flags</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">old_flags</span> <span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">_CLIENT_OPTIONS</span><span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">client_options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="k">def</span> <span class="nf">validate_encoding</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
|
|
<span class="c1"># helper: change encoding</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">codecs_lookup</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">LookupError</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"The encoding '|w</span><span class="si">%s</span><span class="s2">|n' is invalid. "</span> <span class="o">%</span> <span class="n">val</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">val</span>
|
|
|
|
<span class="k">def</span> <span class="nf">validate_size</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">val</span><span class="p">)}</span>
|
|
|
|
<span class="k">def</span> <span class="nf">validate_bool</span><span class="p">(</span><span class="n">val</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">val</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"true"</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">,</span> <span class="s2">"1"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">False</span>
|
|
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
|
|
|
|
<span class="n">flags</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="n">key</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"client"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"CLIENTNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"version"</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="s2">"CLIENTNAME"</span> <span class="ow">in</span> <span class="n">flags</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"CLIENTNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">flags</span><span class="p">[</span><span class="s2">"CLIENTNAME"</span><span class="p">],</span> <span class="n">to_str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"ENCODING"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"ENCODING"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_encoding</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"ansi"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"ANSI"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"xterm256"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"XTERM256"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"mxp"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"MXP"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"utf-8"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"UTF-8"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"screenreader"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"SCREENREADER"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"mccp"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"MCCP"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"screenheight"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_size</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"screenwidth"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_size</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"inputdebug"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"INPUTDEBUG"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"nocolor"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"NOCOLOR"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"raw"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"RAW"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">"nogoahead"</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="s2">"NOGOAHEAD"</span><span class="p">]</span> <span class="o">=</span> <span class="n">validate_bool</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span>
|
|
<span class="s2">"Char 1"</span><span class="p">,</span>
|
|
<span class="s2">"Char.Skills 1"</span><span class="p">,</span>
|
|
<span class="s2">"Char.Items 1"</span><span class="p">,</span>
|
|
<span class="s2">"Room 1"</span><span class="p">,</span>
|
|
<span class="s2">"IRE.Rift 1"</span><span class="p">,</span>
|
|
<span class="s2">"IRE.Composer 1"</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="c1"># ignore mudlet's default send (aimed at IRE games)</span>
|
|
<span class="k">pass</span>
|
|
<span class="k">elif</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"options"</span><span class="p">,</span> <span class="s2">"cmdid"</span><span class="p">):</span>
|
|
<span class="n">err</span> <span class="o">=</span> <span class="n">_ERROR_INPUT</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"client_settings"</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="n">inp</span><span class="o">=</span><span class="n">key</span><span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">err</span><span class="p">)</span>
|
|
|
|
<span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span>
|
|
<span class="c1"># we must update the protocol flags on the portal session copy as well</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">session_portal_partial_sync</span><span class="p">({</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">:</span> <span class="p">{</span><span class="s2">"protocol_flags"</span><span class="p">:</span> <span class="n">flags</span><span class="p">}})</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="get_client_options"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.get_client_options">[docs]</a><span class="k">def</span> <span class="nf">get_client_options</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Alias wrapper for getting options.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">client_options</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">get</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="get_inputfuncs"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.get_inputfuncs">[docs]</a><span class="k">def</span> <span class="nf">get_inputfuncs</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Get the keys of all available inputfuncs. Note that we don't get</span>
|
|
<span class="sd"> it from this module alone since multiple modules could be added.</span>
|
|
<span class="sd"> So we get it from the sessionhandler.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">inputfuncsdict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
|
|
<span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">func</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">func</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">get_inputfuncs</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">get_inputfuncs</span><span class="o">=</span><span class="n">inputfuncsdict</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="login"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.login">[docs]</a><span class="k">def</span> <span class="nf">login</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Peform a login. This only works if session is currently not logged</span>
|
|
<span class="sd"> in. This will also automatically throttle too quick attempts.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> name (str): Account name</span>
|
|
<span class="sd"> password (str): Plain-text password</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">session</span><span class="o">.</span><span class="n">logged_in</span> <span class="ow">and</span> <span class="s2">"name"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="s2">"password"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.commands.default.unloggedin</span> <span class="k">import</span> <span class="n">create_normal_account</span>
|
|
|
|
<span class="n">account</span> <span class="o">=</span> <span class="n">create_normal_account</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"password"</span><span class="p">])</span>
|
|
<span class="k">if</span> <span class="n">account</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">account</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="n">_gettable</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s2">"name"</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">obj</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
|
<span class="s2">"key"</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">obj</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
|
<span class="s2">"location"</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">obj</span><span class="p">:</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">key</span> <span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span> <span class="k">else</span> <span class="s2">"None"</span><span class="p">,</span>
|
|
<span class="s2">"servername"</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">obj</span><span class="p">:</span> <span class="n">settings</span><span class="o">.</span><span class="n">SERVERNAME</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
|
|
|
|
<div class="viewcode-block" id="get_value"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.get_value">[docs]</a><span class="k">def</span> <span class="nf">get_value</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Return the value of a given attribute or db_property on the</span>
|
|
<span class="sd"> session's current account or character.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> name (str): Name of info value to return. Only names</span>
|
|
<span class="sd"> in the _gettable dictionary earlier in this module</span>
|
|
<span class="sd"> are accepted.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span> <span class="ow">or</span> <span class="n">session</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">_gettable</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">get_value</span><span class="o">=</span><span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="n">_gettable</span><span class="p">[</span><span class="n">name</span><span class="p">](</span><span class="n">obj</span><span class="p">)})</span></div>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_testrepeat</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> This is a test function for using with the repeat</span>
|
|
<span class="sd"> inputfunc.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> session (Session): Session to return to.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="kn">import</span> <span class="nn">time</span>
|
|
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"session"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">repeat</span><span class="o">=</span><span class="s2">"Repeat called: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span>
|
|
|
|
|
|
<span class="n">_repeatable</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"test1"</span><span class="p">:</span> <span class="n">_testrepeat</span><span class="p">,</span> <span class="s2">"test2"</span><span class="p">:</span> <span class="n">_testrepeat</span><span class="p">}</span> <span class="c1"># example only # "</span>
|
|
|
|
|
|
<div class="viewcode-block" id="repeat"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.repeat">[docs]</a><span class="k">def</span> <span class="nf">repeat</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Call a named function repeatedly. Note that</span>
|
|
<span class="sd"> this is meant as an example of limiting the number of</span>
|
|
<span class="sd"> possible call functions.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> callback (str): The function to call. Only functions</span>
|
|
<span class="sd"> from the _repeatable dictionary earlier in this</span>
|
|
<span class="sd"> module are available.</span>
|
|
<span class="sd"> interval (int): How often to call function (s).</span>
|
|
<span class="sd"> Defaults to once every 60 seconds with a minimum</span>
|
|
<span class="sd"> of 5 seconds.</span>
|
|
<span class="sd"> stop (bool): Stop a previously assigned ticker with</span>
|
|
<span class="sd"> the above settings.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.scripts.tickerhandler</span> <span class="k">import</span> <span class="n">TICKER_HANDLER</span>
|
|
|
|
<span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"callback"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
|
<span class="n">interval</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"interval"</span><span class="p">,</span> <span class="mi">60</span><span class="p">)))</span>
|
|
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">_repeatable</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"stop"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
|
<span class="n">TICKER_HANDLER</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span>
|
|
<span class="n">interval</span><span class="p">,</span> <span class="n">_repeatable</span><span class="p">[</span><span class="n">name</span><span class="p">],</span> <span class="n">idstring</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">TICKER_HANDLER</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
|
<span class="n">interval</span><span class="p">,</span>
|
|
<span class="n">_repeatable</span><span class="p">[</span><span class="n">name</span><span class="p">],</span>
|
|
<span class="n">idstring</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">,</span>
|
|
<span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Allowed repeating functions are: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_repeatable</span><span class="p">)))</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="unrepeat"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.unrepeat">[docs]</a><span class="k">def</span> <span class="nf">unrepeat</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="s2">"Wrapper for OOB use"</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"stop"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="n">repeat</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="n">_monitorable</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="s2">"db_key"</span><span class="p">,</span> <span class="s2">"location"</span><span class="p">:</span> <span class="s2">"db_location"</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"desc"</span><span class="p">}</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_on_monitor_change</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="n">fieldname</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fieldname"</span><span class="p">]</span>
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"obj"</span><span class="p">]</span>
|
|
<span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"session"</span><span class="p">]</span>
|
|
<span class="n">outputfunc_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"outputfunc_name"</span><span class="p">]</span>
|
|
|
|
<span class="c1"># the session may be None if the char quits and someone</span>
|
|
<span class="c1"># else then edits the object</span>
|
|
|
|
<span class="k">if</span> <span class="n">session</span><span class="p">:</span>
|
|
<span class="n">callsign</span> <span class="o">=</span> <span class="p">{</span><span class="n">outputfunc_name</span><span class="p">:</span> <span class="p">{</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="n">_GA</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">)}}</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="o">**</span><span class="n">callsign</span><span class="p">)</span>
|
|
|
|
|
|
<div class="viewcode-block" id="monitor"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.monitor">[docs]</a><span class="k">def</span> <span class="nf">monitor</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Adds monitoring to a given property or Attribute.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> name (str): The name of the property or Attribute</span>
|
|
<span class="sd"> to report. No db_* prefix is needed. Only names</span>
|
|
<span class="sd"> in the _monitorable dict earlier in this module</span>
|
|
<span class="sd"> are accepted.</span>
|
|
<span class="sd"> stop (bool): Stop monitoring the above name.</span>
|
|
<span class="sd"> outputfunc_name (str, optional): Change the name of</span>
|
|
<span class="sd"> the outputfunc name. This is used e.g. by MSDP which</span>
|
|
<span class="sd"> has its own specific output format.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.scripts.monitorhandler</span> <span class="k">import</span> <span class="n">MONITOR_HANDLER</span>
|
|
|
|
<span class="n">name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"name"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">outputfunc_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">(</span><span class="s2">"outputfunc_name"</span><span class="p">,</span> <span class="s2">"monitor"</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">name</span> <span class="ow">and</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">_monitorable</span> <span class="ow">and</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="p">:</span>
|
|
<span class="n">field_name</span> <span class="o">=</span> <span class="n">_monitorable</span><span class="p">[</span><span class="n">name</span><span class="p">]</span>
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"stop"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span>
|
|
<span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">idstring</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># the handler will add fieldname and obj to the kwargs automatically</span>
|
|
<span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
|
<span class="n">obj</span><span class="p">,</span>
|
|
<span class="n">field_name</span><span class="p">,</span>
|
|
<span class="n">_on_monitor_change</span><span class="p">,</span>
|
|
<span class="n">idstring</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">,</span>
|
|
<span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span>
|
|
<span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
|
<span class="n">outputfunc_name</span><span class="o">=</span><span class="n">outputfunc_name</span><span class="p">,</span>
|
|
<span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="unmonitor"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.unmonitor">[docs]</a><span class="k">def</span> <span class="nf">unmonitor</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Wrapper for turning off monitoring</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"stop"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="n">monitor</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="monitored"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.monitored">[docs]</a><span class="k">def</span> <span class="nf">monitored</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Report on what is being monitored</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.scripts.monitorhandler</span> <span class="k">import</span> <span class="n">MONITOR_HANDLER</span>
|
|
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span>
|
|
<span class="n">monitors</span> <span class="o">=</span> <span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">obj</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">monitored</span><span class="o">=</span><span class="p">(</span><span class="n">monitors</span><span class="p">,</span> <span class="p">{}))</span></div>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_on_webclient_options_change</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Called when the webclient options stored on the account changes.</span>
|
|
<span class="sd"> Inform the interested clients of this change.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"session"</span><span class="p">]</span>
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"obj"</span><span class="p">]</span>
|
|
<span class="n">fieldname</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fieldname"</span><span class="p">]</span>
|
|
<span class="n">clientoptions</span> <span class="o">=</span> <span class="n">_GA</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">)</span>
|
|
|
|
<span class="c1"># the session may be None if the char quits and someone</span>
|
|
<span class="c1"># else then edits the object</span>
|
|
<span class="k">if</span> <span class="n">session</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">webclient_options</span><span class="o">=</span><span class="n">clientoptions</span><span class="p">)</span>
|
|
|
|
|
|
<div class="viewcode-block" id="webclient_options"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.webclient_options">[docs]</a><span class="k">def</span> <span class="nf">webclient_options</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Handles retrieving and changing of options related to the webclient.</span>
|
|
|
|
<span class="sd"> If kwargs is empty (or contains just a "cmdid"), the saved options will be</span>
|
|
<span class="sd"> sent back to the session.</span>
|
|
<span class="sd"> A monitor handler will be created to inform the client of any future options</span>
|
|
<span class="sd"> that changes.</span>
|
|
|
|
<span class="sd"> If kwargs is not empty, the key/values stored in there will be persisted</span>
|
|
<span class="sd"> to the account object.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> <option name>: an option to save</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">account</span>
|
|
|
|
<span class="n">clientoptions</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_webclient_options</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">clientoptions</span><span class="p">:</span>
|
|
<span class="c1"># No saved options for this account, copy and save the default.</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_webclient_options</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">WEBCLIENT_OPTIONS</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
|
<span class="c1"># Get the _SaverDict created by the database.</span>
|
|
<span class="n">clientoptions</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_webclient_options</span>
|
|
|
|
<span class="c1"># The webclient adds a cmdid to every kwargs, but we don't need it.</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">del</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"cmdid"</span><span class="p">]</span>
|
|
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
|
|
<span class="k">pass</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
<span class="c1"># No kwargs: we are getting the stored options</span>
|
|
<span class="c1"># Convert clientoptions to regular dict for sending.</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">webclient_options</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">clientoptions</span><span class="p">))</span>
|
|
|
|
<span class="c1"># Create a monitor. If a monitor already exists then it will replace</span>
|
|
<span class="c1"># the previous one since it would use the same idstring</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.scripts.monitorhandler</span> <span class="k">import</span> <span class="n">MONITOR_HANDLER</span>
|
|
|
|
<span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
|
<span class="n">account</span><span class="p">,</span>
|
|
<span class="s2">"_saved_webclient_options"</span><span class="p">,</span>
|
|
<span class="n">_on_webclient_options_change</span><span class="p">,</span>
|
|
<span class="n">idstring</span><span class="o">=</span><span class="n">session</span><span class="o">.</span><span class="n">sessid</span><span class="p">,</span>
|
|
<span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># kwargs provided: persist them to the account object</span>
|
|
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="n">clientoptions</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span></div>
|
|
|
|
|
|
<span class="c1"># OOB protocol-specific aliases and wrappers</span>
|
|
|
|
<span class="c1"># GMCP aliases</span>
|
|
<span class="n">hello</span> <span class="o">=</span> <span class="n">client_options</span>
|
|
<span class="n">supports_set</span> <span class="o">=</span> <span class="n">client_options</span>
|
|
|
|
|
|
<span class="c1"># MSDP aliases (some of the the generic MSDP commands defined in the MSDP spec are prefixed</span>
|
|
<span class="c1"># by msdp_ at the protocol level)</span>
|
|
<span class="c1"># See https://tintin.sourceforge.io/protocols/msdp/</span>
|
|
|
|
|
|
<div class="viewcode-block" id="msdp_list"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.msdp_list">[docs]</a><span class="k">def</span> <span class="nf">msdp_list</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> MSDP LIST command</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.scripts.monitorhandler</span> <span class="k">import</span> <span class="n">MONITOR_HANDLER</span>
|
|
|
|
<span class="n">args_lower</span> <span class="o">=</span> <span class="p">[</span><span class="n">arg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="s2">"commands"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">inputfuncs</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">key</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span> <span class="k">if</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"msdp_"</span><span class="p">)</span> <span class="k">else</span> <span class="n">key</span>
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">sessionhandler</span><span class="o">.</span><span class="n">get_inputfuncs</span><span class="p">()</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
|
<span class="p">]</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">commands</span><span class="o">=</span><span class="p">(</span><span class="n">inputfuncs</span><span class="p">,</span> <span class="p">{}))</span>
|
|
<span class="k">if</span> <span class="s2">"lists"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="n">lists</span><span class="o">=</span><span class="p">(</span>
|
|
<span class="p">[</span>
|
|
<span class="s2">"commands"</span><span class="p">,</span>
|
|
<span class="s2">"lists"</span><span class="p">,</span>
|
|
<span class="s2">"configurable_variables"</span><span class="p">,</span>
|
|
<span class="s2">"reportable_variables"</span><span class="p">,</span>
|
|
<span class="s2">"reported_variables"</span><span class="p">,</span>
|
|
<span class="s2">"sendable_variables"</span><span class="p">,</span>
|
|
<span class="p">],</span>
|
|
<span class="p">{},</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"configurable_variables"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">configurable_variables</span><span class="o">=</span><span class="p">(</span><span class="n">_CLIENT_OPTIONS</span><span class="p">,</span> <span class="p">{}))</span>
|
|
<span class="k">if</span> <span class="s2">"reportable_variables"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">reportable_variables</span><span class="o">=</span><span class="p">(</span><span class="n">_monitorable</span><span class="p">,</span> <span class="p">{}))</span>
|
|
<span class="k">if</span> <span class="s2">"reported_variables"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">obj</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span>
|
|
<span class="n">monitor_infos</span> <span class="o">=</span> <span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">obj</span><span class="o">=</span><span class="n">obj</span><span class="p">)</span>
|
|
<span class="n">fieldnames</span> <span class="o">=</span> <span class="p">[</span><span class="n">tup</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">monitor_infos</span><span class="p">]</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">reported_variables</span><span class="o">=</span><span class="p">(</span><span class="n">fieldnames</span><span class="p">,</span> <span class="p">{}))</span>
|
|
<span class="k">if</span> <span class="s2">"sendable_variables"</span> <span class="ow">in</span> <span class="n">args_lower</span><span class="p">:</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">sendable_variables</span><span class="o">=</span><span class="p">(</span><span class="n">_monitorable</span><span class="p">,</span> <span class="p">{}))</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="msdp_report"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.msdp_report">[docs]</a><span class="k">def</span> <span class="nf">msdp_report</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> MSDP REPORT command</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"outputfunc_name"</span><span class="p">:</span><span class="s2">"report"</span><span class="p">]</span>
|
|
<span class="n">monitor</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="msdp_unreport"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.msdp_unreport">[docs]</a><span class="k">def</span> <span class="nf">msdp_unreport</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> MSDP UNREPORT command</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">unmonitor</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="msdp_send"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.msdp_send">[docs]</a><span class="k">def</span> <span class="nf">msdp_send</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> MSDP SEND command</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">out</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="k">for</span> <span class="n">varname</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">varname</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">_monitorable</span><span class="p">:</span>
|
|
<span class="n">out</span><span class="p">[</span><span class="n">varname</span><span class="p">]</span> <span class="o">=</span> <span class="n">_monitorable</span><span class="p">[</span><span class="n">varname</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">send</span><span class="o">=</span><span class="p">((),</span> <span class="n">out</span><span class="p">))</span></div>
|
|
|
|
|
|
<span class="c1"># client specific</span>
|
|
|
|
|
|
<div class="viewcode-block" id="external_discord_hello"><a class="viewcode-back" href="../../../api/evennia.server.inputfuncs.html#evennia.server.inputfuncs.external_discord_hello">[docs]</a><span class="k">def</span> <span class="nf">external_discord_hello</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Sent by Mudlet as a greeting; added here to avoid</span>
|
|
<span class="sd"> logging a missing inputfunc for it.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">pass</span></div>
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../../../index.html">
|
|
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="../../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
|
|
<li><a href="inputfuncs.html">0.9.5 (master branch)</a></li>
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 1.0-dev</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2020, The Evennia developer community.
|
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.4.4.
|
|
</div>
|
|
</body>
|
|
</html> |