evennia/docs/0.x/api/evennia.commands.cmdsethandler.html
2023-12-20 19:10:09 +01:00

419 lines
No EOL
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.commands.cmdsethandler &#8212; 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>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</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 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.commands.cmdsethandler</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.commands.cmdsethandler">
<span id="evennia-commands-cmdsethandler"></span><h1>evennia.commands.cmdsethandler<a class="headerlink" href="#module-evennia.commands.cmdsethandler" title="Permalink to this headline"></a></h1>
<p>CmdSethandler</p>
<p>The Cmdsethandler tracks an objects Current CmdSet, which is the
current merged sum of all CmdSets added to it.</p>
<p>A CmdSet constitues a set of commands. The CmdSet works as a special
intelligent container that, when added to other CmdSet make sure that
same-name commands are treated correctly (usually so there are no
doublets). This temporary but up-to-date merger of CmdSet is jointly
called the Current Cmset. It is this Current CmdSet that the
commandhandler looks through whenever an account enters a command (it
also adds CmdSets from objects in the room in real-time). All account
objects have a default cmdset containing all the normal in-game mud
commands (look etc).</p>
<p>So what is all this cmdset complexity good for?</p>
<p>In its simplest form, a CmdSet has no commands, only a key name. In
this case the cmdsets use is up to each individual game - it can be
used by an AI module for example (mobs in cmdset roam move from room
to room, in cmdset attack they enter combat with accounts).</p>
<p>Defining commands in cmdsets offer some further powerful game-design
consequences however. Here are some examples:</p>
<p>As mentioned above, all accounts always have at least the Default
CmdSet. This contains the set of all normal-use commands in-game,
stuff like look and &#64;desc etc. Now assume our players end up in a dark
room. You dont want the player to be able to do much in that dark
room unless they light a candle. You could handle this by changing all
your normal commands to check if the player is in a dark room. This
rapidly goes unwieldly and error prone. Instead you just define a
cmdset with only those commands you want to be available in the dark
cmdset - maybe a modified look command and a light candle command -
and have this completely replace the default cmdset.</p>
<p>Another example: Say you want your players to be able to go
fishing. You could implement this as a fish command that fails
whenever the account has no fishing rod. Easy enough. But what if you
want to make fishing more complex - maybe you want four-five different
commands for throwing your line, reeling in, etc? Most players wont
(we assume) have fishing gear, and having all those detailed commands
is cluttering up the command list. And what if you want to use the
throw command also for throwing rocks etc instead of using it up
for a minor thing like fishing?</p>
<p>So instead you put all those detailed fishing commands into their own
CommandSet called Fishing. Whenever the player gives the command
fish (presumably the code checks there is also water nearby), only
THEN this CommandSet is added to the Cmdhandler of the account. The
throw command (which normally throws rocks) is replaced by the
custom fishing variant of throw. What has happened is that the
Fishing CommandSet was merged on top of the Default ones, and due to
how we defined it, its command overrules the default ones.</p>
<p>When we are tired of fishing, we give the go home command (or
whatever) and the Cmdhandler simply removes the fishing CommandSet
so that we are back at defaults (and can throw rocks again).</p>
<p>Since any number of CommandSets can be piled on top of each other, you
can then implement separate sets for different situations. For
example, you can have a On a boat set, onto which you then tack on
the Fishing set. Fishing from a boat? No problem!</p>
<dl class="py function">
<dt id="evennia.commands.cmdsethandler.import_cmdset">
<code class="sig-prename descclassname">evennia.commands.cmdsethandler.</code><code class="sig-name descname">import_cmdset</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">path</span></em>, <em class="sig-param"><span class="n">cmdsetobj</span></em>, <em class="sig-param"><span class="n">emit_to_obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">no_logging</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#import_cmdset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.import_cmdset" title="Permalink to this definition"></a></dt>
<dd><p>This helper function is used by the cmdsethandler to load a cmdset
instance from a python module, given a python_path. Its usually accessed
through the cmdsethandlers add() and add_default() methods.
path - This is the full path to the cmdset object on python dot-form</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> (<em>str</em>) The path to the command set to load.</p></li>
<li><p><strong>cmdsetobj</strong> (<a class="reference internal" href="evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet" title="evennia.commands.cmdset.CmdSet"><em>CmdSet</em></a>) The database object/typeclass on which this cmdset is to be
assigned (this can be also channels and exits, as well as accounts
but there will always be such an object)</p></li>
<li><p><strong>emit_to_obj</strong> (<em>Object</em><em>, </em><em>optional</em>) If given, error is emitted to
this object (in addition to logging)</p></li>
<li><p><strong>no_logging</strong> (<em>bool</em><em>, </em><em>optional</em>) Dont log/send error messages.
This can be useful if import_cmdset is just used to check if
this is a valid python path or not.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><p><em>cmdset (CmdSet)</em> </p>
<dl class="simple">
<dt>The imported command set. If an error was</dt><dd><p>encountered, <strong>commands.cmdsethandler._ErrorCmdSet</strong> is returned
for the benefit of the handler.</p>
</dd>
</dl>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.commands.cmdsethandler.</code><code class="sig-name descname">CmdSetHandler</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">init_true</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The CmdSetHandler is always stored on an object, this object is supplied
as an argument.</p>
<p>The current cmdset is the merged set currently active for this object.
This is the set the game engine will retrieve when determining which
commands are available to the object. The cmdset_stack holds a history of
all CmdSets to allow the handler to remove/add cmdsets at will. Doing so
will re-calculate the current cmdset.</p>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">obj</span></em>, <em class="sig-param"><span class="n">init_true</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>This method is called whenever an object is recreated.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>obj</strong> (<em>Object</em>) An reference to the game object this handler
belongs to.</p></li>
<li><p><strong>init_true</strong> (<em>bool</em><em>, </em><em>optional</em>) Set when the handler is initializing
and loads the current cmdset.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.update">
<code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">init_mode</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.update" title="Permalink to this definition"></a></dt>
<dd><p>Re-adds all sets in the handler to have an updated current</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>init_mode</strong> (<em>bool</em><em>, </em><em>optional</em>) Used automatically right after
this handler was created; it imports all permanent cmdsets
from the database.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This method is necessary in order to always have a <strong>.current</strong>
cmdset when working with the cmdsethandler in code. But the
CmdSetHandler doesnt (cannot) consider external cmdsets and game
state. This means that the .current calculated from this method
will likely not match the true current cmdset as determined at
run-time by <strong>cmdhandler.get_and_merge_cmdsets()</strong>. So in a running
game the responsibility of keeping <strong>.current</strong> upt-to-date belongs
to the central <strong>cmdhandler.get_and_merge_cmdsets()</strong>!</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.add">
<code class="sig-name descname">add</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span></em>, <em class="sig-param"><span class="n">emit_to_obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">permanent</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">default_cmdset</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.add"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.add" title="Permalink to this definition"></a></dt>
<dd><p>Add a cmdset to the handler, on top of the old ones, unless it
is set as the default one (it will then end up at the bottom of the stack)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<a class="reference internal" href="evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet" title="evennia.commands.cmdset.CmdSet"><em>CmdSet</em></a><em> or </em><em>str</em>) Can be a cmdset object or the python path
to such an object.</p></li>
<li><p><strong>emit_to_obj</strong> (<em>Object</em><em>, </em><em>optional</em>) An object to receive error messages.</p></li>
<li><p><strong>permanent</strong> (<em>bool</em><em>, </em><em>optional</em>) This cmdset will remain across a server reboot.</p></li>
<li><p><strong>default_cmdset</strong> (<em>Cmdset</em><em>, </em><em>optional</em>) Insert this to replace the
default cmdset position (there is only one such position,
always at the bottom of the stack).</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>An interesting feature of this method is if you were to send
it an <em>already instantiated cmdset</em> (i.e. not a class), the
current cmdsethandlers obj attribute will then <em>not</em> be
transferred over to this already instantiated set (this is
because it might be used elsewhere and can cause strange
effects). This means you could in principle have the
handler launch command sets tied to a <em>different</em> object
than the handler. Not sure when this would be useful, but
its a quirk that has to be documented.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.add_default">
<code class="sig-name descname">add_default</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span></em>, <em class="sig-param"><span class="n">emit_to_obj</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">permanent</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.add_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.add_default" title="Permalink to this definition"></a></dt>
<dd><p>Shortcut for adding a default cmdset.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<em>Cmdset</em>) The Cmdset to add.</p></li>
<li><p><strong>emit_to_obj</strong> (<em>Object</em><em>, </em><em>optional</em>) Gets error messages</p></li>
<li><p><strong>permanent</strong> (<em>bool</em><em>, </em><em>optional</em>) The new Cmdset should survive a server reboot.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.remove">
<code class="sig-name descname">remove</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">default_cmdset</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.remove"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.remove" title="Permalink to this definition"></a></dt>
<dd><p>Remove a cmdset from the handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<em>CommandSet</em><em> or </em><em>str</em><em>, </em><em>optional</em>) This can can be supplied either as a cmdset-key,
an instance of the CmdSet or a python path to the cmdset.
If no key is given, the last cmdset in the stack is
removed. Whenever the cmdset_stack changes, the cmdset is
updated. If default_cmdset is set, this argument is ignored.</p></li>
<li><p><strong>default_cmdset</strong> (<em>bool</em><em>, </em><em>optional</em>) If set, this will remove the
default cmdset (at the bottom of the stack).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.delete">
<code class="sig-name descname">delete</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">default_cmdset</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.delete" title="Permalink to this definition"></a></dt>
<dd><p>Remove a cmdset from the handler.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<em>CommandSet</em><em> or </em><em>str</em><em>, </em><em>optional</em>) This can can be supplied either as a cmdset-key,
an instance of the CmdSet or a python path to the cmdset.
If no key is given, the last cmdset in the stack is
removed. Whenever the cmdset_stack changes, the cmdset is
updated. If default_cmdset is set, this argument is ignored.</p></li>
<li><p><strong>default_cmdset</strong> (<em>bool</em><em>, </em><em>optional</em>) If set, this will remove the
default cmdset (at the bottom of the stack).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.remove_default">
<code class="sig-name descname">remove_default</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.remove_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.remove_default" title="Permalink to this definition"></a></dt>
<dd><p>This explicitly deletes only the default cmdset.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.delete_default">
<code class="sig-name descname">delete_default</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.delete_default" title="Permalink to this definition"></a></dt>
<dd><p>This explicitly deletes only the default cmdset.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Get all cmdsets.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>cmdsets (list)</em> All the command sets currently in the handler.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.all">
<code class="sig-name descname">all</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.all" title="Permalink to this definition"></a></dt>
<dd><p>Get all cmdsets.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><em>cmdsets (list)</em> All the command sets currently in the handler.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.clear">
<code class="sig-name descname">clear</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.clear"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.clear" title="Permalink to this definition"></a></dt>
<dd><p>Removes all Command Sets from the handler except the default one
(use <strong>self.remove_default</strong> to remove that).</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.has">
<code class="sig-name descname">has</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span></em>, <em class="sig-param"><span class="n">must_be_default</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.has"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.has" title="Permalink to this definition"></a></dt>
<dd><p>checks so the cmdsethandler contains a given cmdset</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<em>str</em><em> or </em><em>Cmdset</em>) Cmdset key, pythonpath or
Cmdset to check the existence for.</p></li>
<li><p><strong>must_be_default</strong> (<em>bool</em><em>, </em><em>optional</em>) Only return True if
the checked cmdset is the default one.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>has_cmdset (bool)</em> Whether or not the cmdset is in the handler.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.has_cmdset">
<code class="sig-name descname">has_cmdset</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdset</span></em>, <em class="sig-param"><span class="n">must_be_default</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.has_cmdset" title="Permalink to this definition"></a></dt>
<dd><p>checks so the cmdsethandler contains a given cmdset</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmdset</strong> (<em>str</em><em> or </em><em>Cmdset</em>) Cmdset key, pythonpath or
Cmdset to check the existence for.</p></li>
<li><p><strong>must_be_default</strong> (<em>bool</em><em>, </em><em>optional</em>) Only return True if
the checked cmdset is the default one.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>has_cmdset (bool)</em> Whether or not the cmdset is in the handler.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.commands.cmdsethandler.CmdSetHandler.reset">
<code class="sig-name descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/commands/cmdsethandler.html#CmdSetHandler.reset"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.commands.cmdsethandler.CmdSetHandler.reset" title="Permalink to this definition"></a></dt>
<dd><p>Force reload of all cmdsets in handler. This should be called
after _CACHED_CMDSETS have been cleared (normally this is
handled automatically by &#64;reload).</p>
</dd></dl>
</dd></dl>
</section>
<div class="clearer"></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>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.commands.cmdsethandler.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li><a href="http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb">IRC</a> -
<a href="https://discord.gg/NecFePw">Discord</a> -
<a href="https://groups.google.com/forum/#%21forum/evennia">Forums</a>
</li>
<li><a href="http://evennia.blogspot.com/">Evennia Dev blog</a> </li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="../../1.0-dev/api/evennia.commands.cmdsethandler.html">1.0-dev (develop branch)</a></li>
<li><a href="evennia.commands.cmdsethandler.html">0.9.5 (v0.9.5 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 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.commands.cmdsethandler</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>