mirror of
https://github.com/evennia/evennia.git
synced 2026-04-05 07:27:17 +02:00
1162 lines
No EOL
150 KiB
HTML
1162 lines
No EOL
150 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>evennia.commands.default.account — Evennia 1.0-dev 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>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.commands.default.account</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
|
|
<div class="document">
|
|
|
|
<div class="documentwrapper">
|
|
<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>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="https://discord.gg/AJJpcRUhtF">Discord</a> -
|
|
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
|
|
<a href="https://evennia.blogspot.com/">Blog</a>
|
|
</li>
|
|
</ul>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="account.html">1.0-dev (develop branch)</a></li>
|
|
<ul>
|
|
<li><a href="../0.9.5/index.html">0.9.5 (v0.9.5 branch)</a></li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.commands.default.account</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">Account (OOC) commands. These are stored on the Account object</span>
|
|
<span class="sd">and self.caller is thus always an Account, not an Object/Character.</span>
|
|
|
|
<span class="sd">These commands go in the AccountCmdset and are accessible also</span>
|
|
<span class="sd">when puppeting a Character (although with lower priority)</span>
|
|
|
|
<span class="sd">These commands use the account_caller property which tells the command</span>
|
|
<span class="sd">parent (MuxCommand, usually) to setup caller correctly. They use</span>
|
|
<span class="sd">self.account to make sure to always use the account object rather than</span>
|
|
<span class="sd">self.caller (which change depending on the level you are calling from)</span>
|
|
<span class="sd">The property self.character can be used to access the character when</span>
|
|
<span class="sd">these commands are triggered with a connected character (such as the</span>
|
|
<span class="sd">case of the `ooc` command), it is None if we are OOC.</span>
|
|
|
|
<span class="sd">Note that under MULTISESSION_MODE > 2, Account commands should use</span>
|
|
<span class="sd">self.msg() and similar methods to reroute returns to the correct</span>
|
|
<span class="sd">method. Otherwise all text will be returned to all connected sessions.</span>
|
|
|
|
<span class="sd">"""</span>
|
|
<span class="kn">import</span> <span class="nn">time</span>
|
|
<span class="kn">from</span> <span class="nn">codecs</span> <span class="kn">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="kn">import</span> <span class="n">settings</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSIONS</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">utils</span>
|
|
|
|
<span class="n">COMMAND_DEFAULT_CLASS</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">class_from_module</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">)</span>
|
|
|
|
<span class="n">_MAX_NR_CHARACTERS</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">MAX_NR_CHARACTERS</span>
|
|
<span class="n">_AUTO_PUPPET_ON_LOGIN</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">AUTO_PUPPET_ON_LOGIN</span>
|
|
|
|
<span class="c1"># limit symbol import for API</span>
|
|
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"CmdOOCLook"</span><span class="p">,</span>
|
|
<span class="s2">"CmdIC"</span><span class="p">,</span>
|
|
<span class="s2">"CmdOOC"</span><span class="p">,</span>
|
|
<span class="s2">"CmdPassword"</span><span class="p">,</span>
|
|
<span class="s2">"CmdQuit"</span><span class="p">,</span>
|
|
<span class="s2">"CmdCharCreate"</span><span class="p">,</span>
|
|
<span class="s2">"CmdOption"</span><span class="p">,</span>
|
|
<span class="s2">"CmdSessions"</span><span class="p">,</span>
|
|
<span class="s2">"CmdWho"</span><span class="p">,</span>
|
|
<span class="s2">"CmdColorTest"</span><span class="p">,</span>
|
|
<span class="s2">"CmdQuell"</span><span class="p">,</span>
|
|
<span class="s2">"CmdCharDelete"</span><span class="p">,</span>
|
|
<span class="s2">"CmdStyle"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">MuxAccountLookCommand</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Custom parent (only) parsing for OOC looking, sets a "playable"</span>
|
|
<span class="sd"> property on the command based on the parsing.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Custom parsing"""</span>
|
|
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">parse</span><span class="p">()</span>
|
|
|
|
<span class="n">playable</span> <span class="o">=</span> <span class="bp">self</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">_playable_characters</span>
|
|
<span class="k">if</span> <span class="n">playable</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># clean up list if character object was deleted in between</span>
|
|
<span class="k">if</span> <span class="kc">None</span> <span class="ow">in</span> <span class="n">playable</span><span class="p">:</span>
|
|
<span class="n">playable</span> <span class="o">=</span> <span class="p">[</span><span class="n">character</span> <span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="n">playable</span> <span class="k">if</span> <span class="n">character</span><span class="p">]</span>
|
|
<span class="bp">self</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">_playable_characters</span> <span class="o">=</span> <span class="n">playable</span>
|
|
<span class="c1"># store playable property</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">playable</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">((</span><span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">(</span><span class="n">char</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="n">char</span><span class="p">)</span> <span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">playable</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">playable</span> <span class="o">=</span> <span class="n">playable</span>
|
|
|
|
|
|
<span class="c1"># Obs - these are all intended to be stored on the Account, and as such,</span>
|
|
<span class="c1"># use self.account instead of self.caller, just to be sure. Also self.msg()</span>
|
|
<span class="c1"># is used to make sure returns go to the right session</span>
|
|
|
|
<span class="c1"># note that this is inheriting from MuxAccountLookCommand,</span>
|
|
<span class="c1"># and has the .playable property.</span>
|
|
<div class="viewcode-block" id="CmdOOCLook"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOOCLook">[docs]</a><span class="k">class</span> <span class="nc">CmdOOCLook</span><span class="p">(</span><span class="n">MuxAccountLookCommand</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> look while out-of-character</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> look</span>
|
|
|
|
<span class="sd"> Look in the ooc state.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># This is an OOC version of the look command. Since a</span>
|
|
<span class="c1"># Account doesn't have an in-game existence, there is no</span>
|
|
<span class="c1"># concept of location or "self". If we are controlling</span>
|
|
<span class="c1"># a character, pass control over to normal look.</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"look"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"l"</span><span class="p">,</span> <span class="s2">"ls"</span><span class="p">]</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdOOCLook.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOOCLook.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""implement the ooc look command"""</span>
|
|
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="p">:</span>
|
|
<span class="c1"># if we are puppeting, this is only reached in the case the that puppet</span>
|
|
<span class="c1"># has no look command on its own.</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You currently have no ability to look around."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="k">if</span> <span class="n">_AUTO_PUPPET_ON_LOGIN</span> <span class="ow">and</span> <span class="n">_MAX_NR_CHARACTERS</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">playable</span><span class="p">:</span>
|
|
<span class="c1"># only one exists and is allowed - simplify</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You are out-of-character (OOC).</span><span class="se">\n</span><span class="s2">Use |wic|n to get back into the game."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="c1"># call on-account look helper method</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">playable</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">))</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdCharCreate"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdCharCreate">[docs]</a><span class="k">class</span> <span class="nc">CmdCharCreate</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> create a new character</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> charcreate <charname> [= desc]</span>
|
|
|
|
<span class="sd"> Create a new character, optionally giving it a description. You</span>
|
|
<span class="sd"> may use upper-case letters in the name - you will nevertheless</span>
|
|
<span class="sd"> always be able to access your character using lower-case letters</span>
|
|
<span class="sd"> if you want.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"charcreate"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:pperm(Player)"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdCharCreate.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdCharCreate.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""create the new character"""</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: charcreate <charname> [= description]"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
|
|
<span class="n">desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span>
|
|
|
|
<span class="k">if</span> <span class="n">_MAX_NR_CHARACTERS</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="p">(</span>
|
|
<span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">is_superuser</span>
|
|
<span class="ow">and</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">check_permstring</span><span class="p">(</span><span class="s2">"Developer"</span><span class="p">)</span>
|
|
<span class="ow">and</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span>
|
|
<span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">)</span> <span class="o">>=</span> <span class="n">_MAX_NR_CHARACTERS</span>
|
|
<span class="p">):</span>
|
|
<span class="n">plural</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">_MAX_NR_CHARACTERS</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="s2">"s"</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You may only have a maximum of </span><span class="si">{</span><span class="n">_MAX_NR_CHARACTERS</span><span class="si">}</span><span class="s2"> character</span><span class="si">{</span><span class="n">plural</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
|
|
|
<span class="n">typeclass</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span>
|
|
|
|
<span class="k">if</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="n">typeclass</span><span class="p">,</span> <span class="n">db_key__iexact</span><span class="o">=</span><span class="n">key</span><span class="p">):</span>
|
|
<span class="c1"># check if this Character already exists. Note that we are only</span>
|
|
<span class="c1"># searching the base character typeclass here, not any child</span>
|
|
<span class="c1"># classes.</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rA character named '|w</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">|r' already exists.|n"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="c1"># create the character</span>
|
|
<span class="n">start_location</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_id</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">START_LOCATION</span><span class="p">)</span>
|
|
<span class="n">default_home</span> <span class="o">=</span> <span class="n">ObjectDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_id</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_HOME</span><span class="p">)</span>
|
|
<span class="n">permissions</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">PERMISSION_ACCOUNT_DEFAULT</span>
|
|
<span class="n">new_character</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_object</span><span class="p">(</span>
|
|
<span class="n">typeclass</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="n">start_location</span><span class="p">,</span> <span class="n">home</span><span class="o">=</span><span class="n">default_home</span><span class="p">,</span> <span class="n">permissions</span><span class="o">=</span><span class="n">permissions</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># only allow creator (and developers) to puppet this char</span>
|
|
<span class="n">new_character</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span>
|
|
<span class="s2">"puppet:id(</span><span class="si">%i</span><span class="s2">) or pid(</span><span class="si">%i</span><span class="s2">) or perm(Developer) or pperm(Developer);delete:id(</span><span class="si">%i</span><span class="s2">) or"</span>
|
|
<span class="s2">" perm(Admin)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">new_character</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">account</span><span class="o">.</span><span class="n">id</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_character</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">desc</span><span class="p">:</span>
|
|
<span class="n">new_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">desc</span>
|
|
<span class="k">elif</span> <span class="ow">not</span> <span class="n">new_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">:</span>
|
|
<span class="n">new_character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"This is a character."</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Created new character </span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">. Use |wic </span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n to enter the game as this character."</span>
|
|
<span class="p">)</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Character Created: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">)."</span>
|
|
<span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdCharDelete"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdCharDelete">[docs]</a><span class="k">class</span> <span class="nc">CmdCharDelete</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> delete a character - this cannot be undone!</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> chardelete <charname></span>
|
|
|
|
<span class="sd"> Permanently deletes one of your characters.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"chardelete"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:pperm(Player)"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<div class="viewcode-block" id="CmdCharDelete.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdCharDelete.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""delete the character"""</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: chardelete <charactername>"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="c1"># use the playable_characters list to search</span>
|
|
<span class="n">match</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">char</span>
|
|
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">utils</span><span class="o">.</span><span class="n">make_iter</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">char</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="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
|
<span class="p">]</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">match</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You have no such character to delete."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">match</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"Aborting - there are two characters with the same name. Ask an admin to delete the"</span>
|
|
<span class="s2">" right one."</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span> <span class="c1"># one match</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils.evmenu</span> <span class="kn">import</span> <span class="n">get_input</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_callback</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">callback_prompt</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"yes"</span><span class="p">:</span>
|
|
<span class="c1"># only take action</span>
|
|
<span class="n">delobj</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_char_to_delete</span>
|
|
<span class="n">key</span> <span class="o">=</span> <span class="n">delobj</span><span class="o">.</span><span class="n">key</span>
|
|
<span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">pc</span> <span class="k">for</span> <span class="n">pc</span> <span class="ow">in</span> <span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span> <span class="k">if</span> <span class="n">pc</span> <span class="o">!=</span> <span class="n">delobj</span>
|
|
<span class="p">]</span>
|
|
<span class="n">delobj</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Character '</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">' was permanently deleted."</span><span class="p">)</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Character Deleted: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">)."</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Deletion was aborted."</span><span class="p">)</span>
|
|
<span class="k">del</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_char_to_delete</span>
|
|
|
|
<span class="n">match</span> <span class="o">=</span> <span class="n">match</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_char_to_delete</span> <span class="o">=</span> <span class="n">match</span>
|
|
|
|
<span class="c1"># Return if caller has no permission to delete this</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">match</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"delete"</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You do not have permission to delete this character."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">prompt</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"|rThis will permanently destroy '</span><span class="si">%s</span><span class="s2">'. This cannot be undone.|n Continue yes/[no]?"</span>
|
|
<span class="p">)</span>
|
|
<span class="n">get_input</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="n">prompt</span> <span class="o">%</span> <span class="n">match</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">_callback</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdIC"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdIC">[docs]</a><span class="k">class</span> <span class="nc">CmdIC</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> control an object you have permission to puppet</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> ic <character></span>
|
|
|
|
<span class="sd"> Go in-character (IC) as a given Character.</span>
|
|
|
|
<span class="sd"> This will attempt to "become" a different object assuming you have</span>
|
|
<span class="sd"> the right to do so. Note that it's the ACCOUNT character that puppets</span>
|
|
<span class="sd"> characters/objects and which needs to have the correct permission!</span>
|
|
|
|
<span class="sd"> You cannot become an object that is already controlled by another</span>
|
|
<span class="sd"> account. In principle <character> can be any in-game object as long</span>
|
|
<span class="sd"> as you the account have access right to puppet it.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"ic"</span>
|
|
<span class="c1"># lock must be all() for different puppeted objects to access it.</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"puppet"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdIC.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdIC.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Main puppet method</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span>
|
|
|
|
<span class="n">new_character</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="n">character_candidates</span> <span class="o">=</span> <span class="p">[]</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="n">character_candidates</span> <span class="o">=</span> <span class="p">[</span><span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span><span class="p">]</span> <span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="k">else</span> <span class="p">[]</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: ic <character>"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># argument given</span>
|
|
|
|
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_playable_characters</span><span class="p">:</span>
|
|
<span class="c1"># look at the playable_characters list first</span>
|
|
<span class="n">character_candidates</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">search</span><span class="p">(</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span>
|
|
<span class="n">candidates</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">_playable_characters</span><span class="p">,</span>
|
|
<span class="n">search_object</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">check_lockstring</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"perm(Builder)"</span><span class="p">):</span>
|
|
<span class="c1"># builders and higher should be able to puppet more than their</span>
|
|
<span class="c1"># playable characters.</span>
|
|
<span class="k">if</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="p">:</span>
|
|
<span class="c1"># start by local search - this helps to avoid the user</span>
|
|
<span class="c1"># getting locked into their playable characters should one</span>
|
|
<span class="c1"># happen to be named the same as another. We replace the suggestion</span>
|
|
<span class="c1"># from playable_characters here - this allows builders to puppet objects</span>
|
|
<span class="c1"># with the same name as their playable chars should it be necessary</span>
|
|
<span class="c1"># (by going to the same location).</span>
|
|
<span class="n">character_candidates</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">char</span>
|
|
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"puppet"</span><span class="p">)</span>
|
|
<span class="p">]</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
|
<span class="c1"># fall back to global search only if Builder+ has no</span>
|
|
<span class="c1"># playable_characers in list and is not standing in a room</span>
|
|
<span class="c1"># with a matching char.</span>
|
|
<span class="n">character_candidates</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span>
|
|
<span class="p">[</span>
|
|
<span class="n">char</span>
|
|
<span class="k">for</span> <span class="n">char</span> <span class="ow">in</span> <span class="n">search</span><span class="o">.</span><span class="n">object_search</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">char</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">account</span><span class="p">,</span> <span class="s2">"puppet"</span><span class="p">)</span>
|
|
<span class="p">]</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># handle possible candidates</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">character_candidates</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That is not a valid character choice."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">character_candidates</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"Multiple targets with the same name:</span><span class="se">\n</span><span class="s2"> </span><span class="si">%s</span><span class="s2">"</span>
|
|
<span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</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">obj</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">character_candidates</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">new_character</span> <span class="o">=</span> <span class="n">character_candidates</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
|
|
|
<span class="c1"># do the puppet puppet</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">puppet_object</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">new_character</span><span class="p">)</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">new_character</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Puppet Success: (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, Target: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">)."</span>
|
|
<span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rYou cannot become |C</span><span class="si">{</span><span class="n">new_character</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Puppet Failed: %s (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, Target: </span><span class="si">{</span><span class="n">new_character</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">)."</span>
|
|
<span class="p">)</span></div></div>
|
|
|
|
|
|
<span class="c1"># note that this is inheriting from MuxAccountLookCommand,</span>
|
|
<span class="c1"># and as such has the .playable property.</span>
|
|
<div class="viewcode-block" id="CmdOOC"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOOC">[docs]</a><span class="k">class</span> <span class="nc">CmdOOC</span><span class="p">(</span><span class="n">MuxAccountLookCommand</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> stop puppeting and go ooc</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> ooc</span>
|
|
|
|
<span class="sd"> Go out-of-character (OOC).</span>
|
|
|
|
<span class="sd"> This will leave your current character and put you in a incorporeal OOC state.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"ooc"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:pperm(Player)"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"unpuppet"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdOOC.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOOC.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Implement function"""</span>
|
|
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span>
|
|
|
|
<span class="n">old_char</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">get_puppet</span><span class="p">(</span><span class="n">session</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">old_char</span><span class="p">:</span>
|
|
<span class="n">string</span> <span class="o">=</span> <span class="s2">"You are already OOC."</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">account</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_last_puppet</span> <span class="o">=</span> <span class="n">old_char</span>
|
|
|
|
<span class="c1"># disconnect</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">unpuppet_object</span><span class="p">(</span><span class="n">session</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">|GYou go OOC.|n</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">_AUTO_PUPPET_ON_LOGIN</span> <span class="ow">and</span> <span class="n">_MAX_NR_CHARACTERS</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">playable</span><span class="p">:</span>
|
|
<span class="c1"># only one character exists and is allowed - simplify</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You are out-of-character (OOC).</span><span class="se">\n</span><span class="s2">Use |wic|n to get back into the game."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">playable</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="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rCould not unpuppet from |c</span><span class="si">{</span><span class="n">old_char</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">exc</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdSessions"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdSessions">[docs]</a><span class="k">class</span> <span class="nc">CmdSessions</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> check your connected session(s)</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> sessions</span>
|
|
|
|
<span class="sd"> Lists the sessions currently connected to your account.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"sessions"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdSessions.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdSessions.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Implement function"""</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="n">sessions</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span>
|
|
<span class="s2">"|wsessid"</span><span class="p">,</span> <span class="s2">"|wprotocol"</span><span class="p">,</span> <span class="s2">"|whost"</span><span class="p">,</span> <span class="s2">"|wpuppet/character"</span><span class="p">,</span> <span class="s2">"|wlocation"</span>
|
|
<span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">sessions</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">sessid</span><span class="p">):</span>
|
|
<span class="n">char</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">get_puppet</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
|
<span class="nb">str</span><span class="p">(</span><span class="n">sess</span><span class="o">.</span><span class="n">sessid</span><span class="p">),</span>
|
|
<span class="nb">str</span><span class="p">(</span><span class="n">sess</span><span class="o">.</span><span class="n">protocol_key</span><span class="p">),</span>
|
|
<span class="nb">isinstance</span><span class="p">(</span><span class="n">sess</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)</span> <span class="ow">and</span> <span class="n">sess</span><span class="o">.</span><span class="n">address</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="n">sess</span><span class="o">.</span><span class="n">address</span><span class="p">,</span>
|
|
<span class="n">char</span> <span class="ow">and</span> <span class="nb">str</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"None"</span><span class="p">,</span>
|
|
<span class="n">char</span> <span class="ow">and</span> <span class="nb">str</span><span class="p">(</span><span class="n">char</span><span class="o">.</span><span class="n">location</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"N/A"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|wYour current session(s):|n</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdWho"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdWho">[docs]</a><span class="k">class</span> <span class="nc">CmdWho</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> list who is currently online</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> who</span>
|
|
<span class="sd"> doing</span>
|
|
|
|
<span class="sd"> Shows who is currently online. Doing is an alias that limits info</span>
|
|
<span class="sd"> also for those with all permissions.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"who"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"doing"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdWho.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdWho.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Get all connected accounts by polling session.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="n">session_list</span> <span class="o">=</span> <span class="n">SESSIONS</span><span class="o">.</span><span class="n">get_sessions</span><span class="p">()</span>
|
|
|
|
<span class="n">session_list</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">session_list</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">o</span><span class="p">:</span> <span class="n">o</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span> <span class="o">==</span> <span class="s2">"doing"</span><span class="p">:</span>
|
|
<span class="n">show_session_data</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">show_session_data</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">check_permstring</span><span class="p">(</span><span class="s2">"Developer"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">account</span><span class="o">.</span><span class="n">check_permstring</span><span class="p">(</span>
|
|
<span class="s2">"Admins"</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">naccounts</span> <span class="o">=</span> <span class="n">SESSIONS</span><span class="o">.</span><span class="n">account_count</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">show_session_data</span><span class="p">:</span>
|
|
<span class="c1"># privileged info</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span>
|
|
<span class="s2">"|wAccount Name"</span><span class="p">,</span>
|
|
<span class="s2">"|wOn for"</span><span class="p">,</span>
|
|
<span class="s2">"|wIdle"</span><span class="p">,</span>
|
|
<span class="s2">"|wPuppeting"</span><span class="p">,</span>
|
|
<span class="s2">"|wRoom"</span><span class="p">,</span>
|
|
<span class="s2">"|wCmds"</span><span class="p">,</span>
|
|
<span class="s2">"|wProtocol"</span><span class="p">,</span>
|
|
<span class="s2">"|wHost"</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">session_list</span><span class="p">:</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="p">:</span>
|
|
<span class="k">continue</span>
|
|
<span class="n">delta_cmd</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="o">-</span> <span class="n">session</span><span class="o">.</span><span class="n">cmd_last_visible</span>
|
|
<span class="n">delta_conn</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="o">-</span> <span class="n">session</span><span class="o">.</span><span class="n">conn_time</span>
|
|
<span class="n">session_account</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">get_account</span><span class="p">()</span>
|
|
<span class="n">puppet</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">get_puppet</span><span class="p">()</span>
|
|
<span class="n">location</span> <span class="o">=</span> <span class="n">puppet</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">puppet</span> <span class="ow">and</span> <span class="n">puppet</span><span class="o">.</span><span class="n">location</span> <span class="k">else</span> <span class="s2">"None"</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">session_account</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">account</span><span class="p">),</span> <span class="n">width</span><span class="o">=</span><span class="mi">25</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="n">delta_conn</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="n">delta_cmd</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">puppet</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">account</span><span class="p">)</span> <span class="k">if</span> <span class="n">puppet</span> <span class="k">else</span> <span class="s2">"None"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">25</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">location</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">25</span><span class="p">),</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">cmd_total</span><span class="p">,</span>
|
|
<span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span><span class="p">,</span>
|
|
<span class="nb">isinstance</span><span class="p">(</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)</span> <span class="ow">and</span> <span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># unprivileged</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span><span class="s2">"|wAccount name"</span><span class="p">,</span> <span class="s2">"|wOn for"</span><span class="p">,</span> <span class="s2">"|wIdle"</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">session_list</span><span class="p">:</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="p">:</span>
|
|
<span class="k">continue</span>
|
|
<span class="n">delta_cmd</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="o">-</span> <span class="n">session</span><span class="o">.</span><span class="n">cmd_last_visible</span>
|
|
<span class="n">delta_conn</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="o">-</span> <span class="n">session</span><span class="o">.</span><span class="n">conn_time</span>
|
|
<span class="n">session_account</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">get_account</span><span class="p">()</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">session_account</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">account</span><span class="p">),</span> <span class="n">width</span><span class="o">=</span><span class="mi">25</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="n">delta_conn</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
|
|
<span class="n">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="n">delta_cmd</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="n">is_one</span> <span class="o">=</span> <span class="n">naccounts</span> <span class="o">==</span> <span class="mi">1</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"|wAccounts:|n</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="s2"> unique account</span><span class="si">%s</span><span class="s2"> logged in."</span>
|
|
<span class="o">%</span> <span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="s2">"One"</span> <span class="k">if</span> <span class="n">is_one</span> <span class="k">else</span> <span class="n">naccounts</span><span class="p">,</span> <span class="s2">""</span> <span class="k">if</span> <span class="n">is_one</span> <span class="k">else</span> <span class="s2">"s"</span><span class="p">)</span>
|
|
<span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdOption"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOption">[docs]</a><span class="k">class</span> <span class="nc">CmdOption</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Set an account option</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> option[/save] [name = value]</span>
|
|
|
|
<span class="sd"> Switches:</span>
|
|
<span class="sd"> save - Save the current option settings for future logins.</span>
|
|
<span class="sd"> clear - Clear the saved options.</span>
|
|
|
|
<span class="sd"> This command allows for viewing and setting client interface</span>
|
|
<span class="sd"> settings. Note that saved options may not be able to be used if</span>
|
|
<span class="sd"> later connecting with a client with different capabilities.</span>
|
|
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"option"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="s2">"options"</span>
|
|
<span class="n">switch_options</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"save"</span><span class="p">,</span> <span class="s2">"clear"</span><span class="p">)</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdOption.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdOption.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Implements the command</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">flags</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_flags</span>
|
|
|
|
<span class="c1"># Display current options</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="c1"># list the option settings</span>
|
|
|
|
<span class="k">if</span> <span class="s2">"save"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="c1"># save all options</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_protocol_flags</span> <span class="o">=</span> <span class="n">flags</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|gSaved all options. Use option/clear to remove.|n"</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"clear"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="c1"># clear all saves</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_saved_protocol_flags</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|gCleared all saved options."</span><span class="p">)</span>
|
|
|
|
<span class="n">options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">flags</span><span class="p">)</span> <span class="c1"># make a copy of the flag dict</span>
|
|
<span class="n">saved_options</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"_saved_protocol_flags"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="p">{}))</span>
|
|
|
|
<span class="k">if</span> <span class="s2">"SCREENWIDTH"</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">options</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="n">options</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">]</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">options</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</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">screenid</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">screenid</span><span class="p">,</span> <span class="n">size</span> <span class="ow">in</span> <span class="n">options</span><span class="p">[</span><span class="s2">"SCREENWIDTH"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"SCREENHEIGHT"</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">options</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</span><span class="p">])</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="n">options</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</span><span class="p">]</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">options</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">" </span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</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">screenid</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">screenid</span><span class="p">,</span> <span class="n">size</span> <span class="ow">in</span> <span class="n">options</span><span class="p">[</span><span class="s2">"SCREENHEIGHT"</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">options</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TTYPE"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
|
<span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Name"</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="s2">"Saved"</span><span class="p">)</span> <span class="k">if</span> <span class="n">saved_options</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"Name"</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">)</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span><span class="o">*</span><span class="n">header</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">options</span><span class="p">):</span>
|
|
<span class="n">row</span> <span class="o">=</span> <span class="p">[</span><span class="n">key</span><span class="p">,</span> <span class="n">options</span><span class="p">[</span><span class="n">key</span><span class="p">]]</span>
|
|
<span class="k">if</span> <span class="n">saved_options</span><span class="p">:</span>
|
|
<span class="n">saved</span> <span class="o">=</span> <span class="s2">" |YYes|n"</span> <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">saved_options</span> <span class="k">else</span> <span class="s2">""</span>
|
|
<span class="n">changed</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"|y*|n"</span> <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">saved_options</span> <span class="ow">and</span> <span class="n">flags</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">!=</span> <span class="n">saved_options</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="k">else</span> <span class="s2">""</span>
|
|
<span class="p">)</span>
|
|
<span class="n">row</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="si">%s%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">saved</span><span class="p">,</span> <span class="n">changed</span><span class="p">))</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span><span class="o">*</span><span class="n">row</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|wClient settings (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">protocol_key</span><span class="si">}</span><span class="s2">):|n</span><span class="se">\n</span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: option [name = [value]]"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="c1"># Try to assign new values</span>
|
|
|
|
<span class="k">def</span> <span class="nf">validate_encoding</span><span class="p">(</span><span class="n">new_encoding</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">new_encoding</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="sa">f</span><span class="s2">"The encoding '|w</span><span class="si">{</span><span class="n">new_encoding</span><span class="si">}</span><span class="s2">|n' is invalid. "</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">new_size</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">new_size</span><span class="p">)}</span>
|
|
|
|
<span class="k">def</span> <span class="nf">validate_bool</span><span class="p">(</span><span class="n">new_bool</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">new_bool</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">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">new_val</span><span class="p">,</span> <span class="n">validator</span><span class="p">):</span>
|
|
<span class="c1"># helper: update property and report errors</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">old_val</span> <span class="o">=</span> <span class="n">flags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
|
<span class="n">new_val</span> <span class="o">=</span> <span class="n">validator</span><span class="p">(</span><span class="n">new_val</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">old_val</span> <span class="o">==</span> <span class="n">new_val</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|n was kept as '|w</span><span class="si">{</span><span class="n">old_val</span><span class="si">}</span><span class="s2">|n'."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">flags</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_val</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|n was changed from '|w</span><span class="si">{</span><span class="n">old_val</span><span class="si">}</span><span class="s2">|n' to '|w</span><span class="si">{</span><span class="n">new_val</span><span class="si">}</span><span class="s2">|n'."</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="p">{</span><span class="n">new_name</span><span class="p">:</span> <span class="n">new_val</span><span class="p">}</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rCould not set option |w</span><span class="si">{</span><span class="n">new_name</span><span class="si">}</span><span class="s2">|r:|n </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
|
|
<span class="n">validators</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s2">"ANSI"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"CLIENTNAME"</span><span class="p">:</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">,</span>
|
|
<span class="s2">"ENCODING"</span><span class="p">:</span> <span class="n">validate_encoding</span><span class="p">,</span>
|
|
<span class="s2">"MCCP"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"NOGOAHEAD"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"MXP"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"NOCOLOR"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"NOPKEEPALIVE"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"OOB"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"RAW"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"SCREENHEIGHT"</span><span class="p">:</span> <span class="n">validate_size</span><span class="p">,</span>
|
|
<span class="s2">"SCREENWIDTH"</span><span class="p">:</span> <span class="n">validate_size</span><span class="p">,</span>
|
|
<span class="s2">"SCREENREADER"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"TERM"</span><span class="p">:</span> <span class="n">utils</span><span class="o">.</span><span class="n">to_str</span><span class="p">,</span>
|
|
<span class="s2">"UTF-8"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"XTERM256"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"INPUTDEBUG"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"FORCEDENDLINE"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="s2">"LOCALECHO"</span><span class="p">:</span> <span class="n">validate_bool</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
|
<span class="n">val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
<span class="n">optiondict</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="k">if</span> <span class="n">val</span> <span class="ow">and</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">validators</span><span class="p">:</span>
|
|
<span class="n">optiondict</span> <span class="o">=</span> <span class="n">update</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">val</span><span class="p">,</span> <span class="n">validators</span><span class="p">[</span><span class="n">name</span><span class="p">])</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rNo option named '|w</span><span class="si">%s</span><span class="s2">|r'."</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">optiondict</span><span class="p">:</span>
|
|
<span class="c1"># a valid setting</span>
|
|
<span class="k">if</span> <span class="s2">"save"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="c1"># save this option only</span>
|
|
<span class="n">saved_options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"_saved_protocol_flags"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="p">{})</span>
|
|
<span class="n">saved_options</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">optiondict</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"_saved_protocol_flags"</span><span class="p">,</span> <span class="n">saved_options</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">optiondict</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|gSaved option </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">.|n"</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"clear"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="c1"># clear this save</span>
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">optiondict</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"_saved_protocol_flags"</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|gCleared saved </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">update_flags</span><span class="p">(</span><span class="o">**</span><span class="n">optiondict</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdPassword"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdPassword">[docs]</a><span class="k">class</span> <span class="nc">CmdPassword</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> change your password</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> password <old password> = <new password></span>
|
|
|
|
<span class="sd"> Changes your password. Make sure to pick a safe one.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"password"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:pperm(Player)"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdPassword.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdPassword.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""hook function."""</span>
|
|
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: password <oldpass> = <newpass>"</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="n">oldpass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhslist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># Both of these are</span>
|
|
<span class="n">newpass</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhslist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># already stripped by parse()</span>
|
|
|
|
<span class="c1"># Validate password</span>
|
|
<span class="n">validated</span><span class="p">,</span> <span class="n">error</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">validate_password</span><span class="p">(</span><span class="n">newpass</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">check_password</span><span class="p">(</span><span class="n">oldpass</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The specified old password isn't correct."</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="ow">not</span> <span class="n">validated</span><span class="p">:</span>
|
|
<span class="n">errors</span> <span class="o">=</span> <span class="p">[</span><span class="n">e</span> <span class="k">for</span> <span class="n">suberror</span> <span class="ow">in</span> <span class="n">error</span><span class="o">.</span><span class="n">messages</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">error</span><span class="o">.</span><span class="n">messages</span><span class="p">]</span>
|
|
<span class="n">string</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">errors</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">newpass</span><span class="p">)</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Password changed."</span><span class="p">)</span>
|
|
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"Password Changed: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2"> (Caller: </span><span class="si">{</span><span class="n">account</span><span class="si">}</span><span class="s2">, IP: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">address</span><span class="si">}</span><span class="s2">)."</span>
|
|
<span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdQuit"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdQuit">[docs]</a><span class="k">class</span> <span class="nc">CmdQuit</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> quit the game</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> quit</span>
|
|
|
|
<span class="sd"> Switch:</span>
|
|
<span class="sd"> all - disconnect all connected sessions</span>
|
|
|
|
<span class="sd"> Gracefully disconnect your current session from the</span>
|
|
<span class="sd"> game. Use the /all switch to disconnect from all sessions.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"quit"</span>
|
|
<span class="n">switch_options</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"all"</span><span class="p">,)</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<div class="viewcode-block" id="CmdQuit.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdQuit.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""hook function"""</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
|
|
<span class="k">if</span> <span class="s2">"all"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"|RQuitting|n all sessions. Hope to see you soon again."</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span>
|
|
<span class="p">)</span>
|
|
<span class="n">reason</span> <span class="o">=</span> <span class="s2">"quit/all"</span>
|
|
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">disconnect_session_from_account</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">nsess</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
|
<span class="n">reason</span> <span class="o">=</span> <span class="s2">"quit"</span>
|
|
<span class="k">if</span> <span class="n">nsess</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|RQuitting|n. One session is still connected."</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">nsess</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"|RQuitting|n. </span><span class="si">%i</span><span class="s2"> sessions are still connected."</span> <span class="o">%</span> <span class="p">(</span><span class="n">nsess</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
|
|
<span class="n">session</span><span class="o">=</span><span class="bp">self</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"># we are quitting the last available session</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|RQuitting|n. Hope to see you again, soon."</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">)</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">disconnect_session_from_account</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdColorTest"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdColorTest">[docs]</a><span class="k">class</span> <span class="nc">CmdColorTest</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> testing which colors your client support</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> color ansi | xterm256</span>
|
|
|
|
<span class="sd"> Prints a color map along with in-mud color codes to use to produce</span>
|
|
<span class="sd"> them. It also tests what is supported in your client. Choices are</span>
|
|
<span class="sd"> 16-color ansi (supported in most muds) or the 256-color xterm256</span>
|
|
<span class="sd"> standard. No checking is done to determine your client supports</span>
|
|
<span class="sd"> color - if not you will see rubbish appear.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"color"</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<span class="c1"># the slices of the ANSI_PARSER lists to use for retrieving the</span>
|
|
<span class="c1"># relevant color tags to display. Replace if using another schema.</span>
|
|
<span class="c1"># This command can only show one set of markup.</span>
|
|
<span class="n">slice_bright_fg</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span> <span class="c1"># from ANSI_PARSER.ansi_map</span>
|
|
<span class="n">slice_dark_fg</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">23</span><span class="p">)</span> <span class="c1"># from ANSI_PARSER.ansi_map</span>
|
|
<span class="n">slice_dark_bg</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="o">-</span><span class="mi">8</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="c1"># from ANSI_PARSER.ansi_map</span>
|
|
<span class="n">slice_bright_bg</span> <span class="o">=</span> <span class="nb">slice</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="c1"># from ANSI_PARSER.ansi_xterm256_bright_bg_map</span>
|
|
|
|
<div class="viewcode-block" id="CmdColorTest.table_format"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdColorTest.table_format">[docs]</a> <span class="k">def</span> <span class="nf">table_format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Helper method to format the ansi/xterm256 tables.</span>
|
|
<span class="sd"> Takes a table of columns [[val,val,...],[val,val,...],...]</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="p">[[]]</span>
|
|
|
|
<span class="n">extra_space</span> <span class="o">=</span> <span class="mi">1</span>
|
|
<span class="n">max_widths</span> <span class="o">=</span> <span class="p">[</span><span class="nb">max</span><span class="p">([</span><span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">val</span><span class="p">))</span> <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">col</span><span class="p">])</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">table</span><span class="p">]</span>
|
|
<span class="n">ftable</span> <span class="o">=</span> <span class="p">[]</span>
|
|
<span class="k">for</span> <span class="n">irow</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">table</span><span class="p">[</span><span class="mi">0</span><span class="p">])):</span>
|
|
<span class="n">ftable</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
<span class="p">[</span>
|
|
<span class="nb">str</span><span class="p">(</span><span class="n">col</span><span class="p">[</span><span class="n">irow</span><span class="p">])</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="n">max_widths</span><span class="p">[</span><span class="n">icol</span><span class="p">])</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">*</span> <span class="n">extra_space</span>
|
|
<span class="k">for</span> <span class="n">icol</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
|
<span class="p">]</span>
|
|
<span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">ftable</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdColorTest.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdColorTest.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Show color tables"""</span>
|
|
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"a"</span><span class="p">):</span>
|
|
<span class="c1"># show ansi 16-color table</span>
|
|
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">ansi</span>
|
|
|
|
<span class="n">ap</span> <span class="o">=</span> <span class="n">ansi</span><span class="o">.</span><span class="n">ANSI_PARSER</span>
|
|
<span class="c1"># ansi colors</span>
|
|
<span class="c1"># show all ansi color-related codes</span>
|
|
<span class="n">bright_fg</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"</span><span class="si">%s%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"|"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">))</span>
|
|
<span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">ap</span><span class="o">.</span><span class="n">ansi_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">slice_bright_fg</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
<span class="n">dark_fg</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"</span><span class="si">%s%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"|"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">))</span>
|
|
<span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">ap</span><span class="o">.</span><span class="n">ansi_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">slice_dark_fg</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
<span class="n">dark_bg</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"</span><span class="si">%s%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"|"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
|
<span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">ap</span><span class="o">.</span><span class="n">ansi_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">slice_dark_bg</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
<span class="n">bright_bg</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"</span><span class="si">%s%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="n">code</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"|"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">""</span><span class="p">))</span>
|
|
<span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">ap</span><span class="o">.</span><span class="n">ansi_xterm256_bright_bg_map</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">slice_bright_bg</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
<span class="n">dark_fg</span><span class="o">.</span><span class="n">extend</span><span class="p">([</span><span class="s2">""</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">bright_fg</span><span class="p">)</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">dark_fg</span><span class="p">))])</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">format_table</span><span class="p">([</span><span class="n">bright_fg</span><span class="p">,</span> <span class="n">dark_fg</span><span class="p">,</span> <span class="n">bright_bg</span><span class="p">,</span> <span class="n">dark_bg</span><span class="p">])</span>
|
|
<span class="n">string</span> <span class="o">=</span> <span class="s2">"ANSI colors:"</span>
|
|
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span>
|
|
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">row</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
|
<span class="s2">"||X : black. ||/ : return, ||- : tab, ||_ : space, ||* : invert, ||u : underline</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">"To combine background and foreground, add background marker last, e.g. ||r||[B.</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">"Note: bright backgrounds like ||[r requires your client handling Xterm256 colors."</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"x"</span><span class="p">):</span>
|
|
<span class="c1"># show xterm256 table</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="p">[[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[]]</span>
|
|
<span class="k">for</span> <span class="n">ir</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">ig</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">ib</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
|
|
<span class="c1"># foreground table</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="n">ir</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"|</span><span class="si">%i%i%i%s</span><span class="s2">|n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">ir</span><span class="p">,</span> <span class="n">ig</span><span class="p">,</span> <span class="n">ib</span><span class="p">,</span> <span class="s2">"||</span><span class="si">%i%i%i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">ir</span><span class="p">,</span> <span class="n">ig</span><span class="p">,</span> <span class="n">ib</span><span class="p">)))</span>
|
|
<span class="c1"># background table</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="mi">6</span> <span class="o">+</span> <span class="n">ir</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
|
<span class="s2">"|</span><span class="si">%i%i%i</span><span class="s2">|[</span><span class="si">%i%i%i%s</span><span class="s2">|n"</span>
|
|
<span class="o">%</span> <span class="p">(</span><span class="mi">5</span> <span class="o">-</span> <span class="n">ir</span><span class="p">,</span> <span class="mi">5</span> <span class="o">-</span> <span class="n">ig</span><span class="p">,</span> <span class="mi">5</span> <span class="o">-</span> <span class="n">ib</span><span class="p">,</span> <span class="n">ir</span><span class="p">,</span> <span class="n">ig</span><span class="p">,</span> <span class="n">ib</span><span class="p">,</span> <span class="s2">"||[</span><span class="si">%i%i%i</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">ir</span><span class="p">,</span> <span class="n">ig</span><span class="p">,</span> <span class="n">ib</span><span class="p">))</span>
|
|
<span class="p">)</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table_format</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
|
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"Xterm256 colors (if not all hues show, your client might not report that it can"</span>
|
|
<span class="s2">" handle xterm256):"</span>
|
|
<span class="p">)</span>
|
|
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</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">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">table</span><span class="p">)</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="p">[[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[],</span> <span class="p">[]]</span>
|
|
<span class="k">for</span> <span class="n">ibatch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">igray</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
|
|
<span class="n">letter</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">97</span> <span class="o">+</span> <span class="p">(</span><span class="n">ibatch</span> <span class="o">*</span> <span class="mi">6</span> <span class="o">+</span> <span class="n">igray</span><span class="p">))</span>
|
|
<span class="n">inverse</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">122</span> <span class="o">-</span> <span class="p">(</span><span class="n">ibatch</span> <span class="o">*</span> <span class="mi">6</span> <span class="o">+</span> <span class="n">igray</span><span class="p">))</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="mi">0</span> <span class="o">+</span> <span class="n">igray</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"|=</span><span class="si">%s%s</span><span class="s2"> |n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">letter</span><span class="p">,</span> <span class="s2">"||=</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">letter</span><span class="p">))</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="mi">6</span> <span class="o">+</span> <span class="n">igray</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"|=</span><span class="si">%s</span><span class="s2">|[=</span><span class="si">%s%s</span><span class="s2"> |n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">inverse</span><span class="p">,</span> <span class="n">letter</span><span class="p">,</span> <span class="s2">"||[=</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">letter</span><span class="p">))</span>
|
|
<span class="k">for</span> <span class="n">igray</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
|
|
<span class="c1"># the last row (y, z) has empty columns</span>
|
|
<span class="k">if</span> <span class="n">igray</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
|
<span class="n">letter</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">121</span> <span class="o">+</span> <span class="n">igray</span><span class="p">)</span>
|
|
<span class="n">inverse</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">98</span> <span class="o">-</span> <span class="n">igray</span><span class="p">)</span>
|
|
<span class="n">fg</span> <span class="o">=</span> <span class="s2">"|=</span><span class="si">%s%s</span><span class="s2"> |n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">letter</span><span class="p">,</span> <span class="s2">"||=</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">letter</span><span class="p">)</span>
|
|
<span class="n">bg</span> <span class="o">=</span> <span class="s2">"|=</span><span class="si">%s</span><span class="s2">|[=</span><span class="si">%s%s</span><span class="s2"> |n"</span> <span class="o">%</span> <span class="p">(</span><span class="n">inverse</span><span class="p">,</span> <span class="n">letter</span><span class="p">,</span> <span class="s2">"||[=</span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">letter</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">fg</span><span class="p">,</span> <span class="n">bg</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">,</span> <span class="s2">" "</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="mi">0</span> <span class="o">+</span> <span class="n">igray</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fg</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="p">[</span><span class="mi">6</span> <span class="o">+</span> <span class="n">igray</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">bg</span><span class="p">)</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">table_format</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
|
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</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">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">table</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="c1"># malformed input</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: color ansi||xterm256"</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdQuell"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdQuell">[docs]</a><span class="k">class</span> <span class="nc">CmdQuell</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> use character's permissions instead of account's</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> quell</span>
|
|
<span class="sd"> unquell</span>
|
|
|
|
<span class="sd"> Normally the permission level of the Account is used when puppeting a</span>
|
|
<span class="sd"> Character/Object to determine access. This command will switch the lock</span>
|
|
<span class="sd"> system to make use of the puppeted Object's permissions instead. This is</span>
|
|
<span class="sd"> useful mainly for testing.</span>
|
|
<span class="sd"> Hierarchical permission quelling only work downwards, thus an Account cannot</span>
|
|
<span class="sd"> use a higher-permission Character to escalate their permission level.</span>
|
|
<span class="sd"> Use the unquell command to revert back to normal operation.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"quell"</span>
|
|
<span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"unquell"</span><span class="p">]</span>
|
|
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:pperm(Player)"</span>
|
|
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span>
|
|
|
|
<span class="c1"># this is used by the parent</span>
|
|
<span class="n">account_caller</span> <span class="o">=</span> <span class="kc">True</span>
|
|
|
|
<span class="k">def</span> <span class="nf">_recache_locks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">account</span><span class="p">):</span>
|
|
<span class="sd">"""Helper method to reset the lockhandler on an already puppeted object"""</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="p">:</span>
|
|
<span class="n">char</span> <span class="o">=</span> <span class="bp">self</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">char</span><span class="p">:</span>
|
|
<span class="c1"># we are already puppeting an object. We need to reset</span>
|
|
<span class="c1"># the lock caches (otherwise the superuser status change</span>
|
|
<span class="c1"># won't be visible until repuppet)</span>
|
|
<span class="n">char</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span>
|
|
|
|
<div class="viewcode-block" id="CmdQuell.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdQuell.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="sd">"""Perform the command"""</span>
|
|
<span class="n">account</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span>
|
|
<span class="n">permstr</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">is_superuser</span> <span class="ow">and</span> <span class="s2">" (superuser)"</span> <span class="ow">or</span> <span class="s2">"(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmdstring</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"unquell"</span><span class="p">,</span> <span class="s2">"unquell"</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Already using normal Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2"> restored."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Already quelling Account </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2"> permissions."</span><span class="p">)</span>
|
|
<span class="k">return</span>
|
|
<span class="n">account</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">puppet</span> <span class="o">=</span> <span class="bp">self</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="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="k">if</span> <span class="n">puppet</span><span class="p">:</span>
|
|
<span class="n">cpermstr</span> <span class="o">=</span> <span class="s2">"(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">puppet</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">())</span>
|
|
<span class="n">cpermstr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Quelling to current puppet's permissions </span><span class="si">{</span><span class="n">cpermstr</span><span class="si">}</span><span class="s2">."</span>
|
|
<span class="n">cpermstr</span> <span class="o">+=</span> <span class="p">(</span>
|
|
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">(Note: If this is higher than Account permissions </span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">,"</span>
|
|
<span class="s2">" the lowest of the two will be used.)"</span>
|
|
<span class="p">)</span>
|
|
<span class="n">cpermstr</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Use unquell to return to normal permission usage."</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">cpermstr</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Quelling Account permissions</span><span class="si">{</span><span class="n">permstr</span><span class="si">}</span><span class="s2">. Use unquell to get them back."</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_recache_locks</span><span class="p">(</span><span class="n">account</span><span class="p">)</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="CmdStyle"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdStyle">[docs]</a><span class="k">class</span> <span class="nc">CmdStyle</span><span class="p">(</span><span class="n">COMMAND_DEFAULT_CLASS</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> In-game style options</span>
|
|
|
|
<span class="sd"> Usage:</span>
|
|
<span class="sd"> style</span>
|
|
<span class="sd"> style <option> = <value></span>
|
|
|
|
<span class="sd"> Configure stylings for in-game display elements like table borders, help</span>
|
|
<span class="sd"> entriest etc. Use without arguments to see all available options.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">key</span> <span class="o">=</span> <span class="s2">"style"</span>
|
|
<span class="n">switch_options</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"clear"</span><span class="p">]</span>
|
|
|
|
<div class="viewcode-block" id="CmdStyle.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdStyle.func">[docs]</a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">list_styles</span><span class="p">()</span>
|
|
<span class="k">return</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">set</span><span class="p">()</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdStyle.list_styles"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdStyle.list_styles">[docs]</a> <span class="k">def</span> <span class="nf">list_styles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">styled_table</span><span class="p">(</span><span class="s2">"Option"</span><span class="p">,</span> <span class="s2">"Description"</span><span class="p">,</span> <span class="s2">"Type"</span><span class="p">,</span> <span class="s2">"Value"</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">78</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">op_key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">options_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
<span class="n">op_found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_key</span><span class="p">,</span> <span class="n">return_obj</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
|
<span class="n">op_key</span><span class="p">,</span> <span class="n">op_found</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">op_found</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">op_found</span><span class="o">.</span><span class="n">display</span><span class="p">()</span>
|
|
<span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">table</span><span class="p">))</span></div>
|
|
|
|
<div class="viewcode-block" id="CmdStyle.set"><a class="viewcode-back" href="../../../../api/evennia.commands.default.account.html#evennia.commands.default.account.CmdStyle.set">[docs]</a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">rhs</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
|
<span class="k">return</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Style </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">lhs</span><span class="si">}</span><span class="s2"> set to </span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div></div>
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
</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>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.commands.default.account</a></li>
|
|
</ul>
|
|
<div class="develop">develop branch</div>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2022, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |