mirror of
https://github.com/evennia/evennia.git
synced 2026-03-25 09:16:32 +01:00
Updated HTML docs
This commit is contained in:
parent
8357af22ee
commit
87191ef0c4
599 changed files with 5455 additions and 5223 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: cb2314a50ca57e286ad206d1030a6589
|
||||
config: a67c638a2a995a925a24c16ff083abc0
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ all, the list of variables that are available in this callback:</p>
|
|||
</div>
|
||||
<p>This is important, in order to know what variables we can use in our callback out-of-the-box. Let’s
|
||||
write a single line to be sure our callback is called when we expect it to:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You just said {}."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You just said </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">message</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>You can paste this line in-game, then type the <code class="docutils literal notranslate"><span class="pre">:wq</span></code> command to exit the editor and save your
|
||||
|
|
@ -202,7 +202,7 @@ it.</p>
|
|||
</pre></div>
|
||||
</div>
|
||||
<p>And turn off automatic indentation, which will help us:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">:</span><span class="o">=</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">:=</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<blockquote>
|
||||
|
|
@ -254,7 +254,7 @@ solution right now. Here’s a possible code that you could paste in the code e
|
|||
|
||||
<span class="c1"># Now we check that the elevator isn't already at this floor</span>
|
||||
<span class="n">floor</span> <span class="o">=</span> <span class="n">FLOORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Which floor do you want?"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="n">floor</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator already is at this floor."</span><span class="p">)</span>
|
||||
|
|
@ -263,7 +263,7 @@ solution right now. Here’s a possible code that you could paste in the code e
|
|||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator close with a clank."</span><span class="p">)</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to {floor}."</span><span class="p">,</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to </span><span class="si">{floor}</span><span class="s2">."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">floor</span><span class="o">=</span><span class="n">floor</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -325,7 +325,7 @@ new floor. You can notice a few differences:</p>
|
|||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">ELEVATOR</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="n">ELEVATOR</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">destination</span> <span class="o">=</span> <span class="n">floor</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to {floor}."</span><span class="p">,</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator open to </span><span class="si">{floor}</span><span class="s2">."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">floor</span><span class="o">=</span><span class="n">floor</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -342,7 +342,7 @@ new floor. You can notice a few differences:</p>
|
|||
</div>
|
||||
<p>Remove the current code and disable auto-indentation again:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">:</span><span class="n">DD</span>
|
||||
<span class="p">:</span><span class="o">=</span>
|
||||
<span class="o">:=</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>And you can paste instead the following code. Notice the differences with our first attempt:</p>
|
||||
|
|
@ -381,17 +381,17 @@ new floor. You can notice a few differences:</p>
|
|||
|
||||
<span class="c1"># Now we check that the elevator isn't already at this floor</span>
|
||||
<span class="n">floor</span> <span class="o">=</span> <span class="n">FLOORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">floor</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Which floor do you want?"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">elif</span> <span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator is between floors."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="ow">is</span> <span class="n">floor</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The elevator already is at this floor."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># 'floor' contains the new room where the elevator should be</span>
|
||||
<span class="n">room</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"The doors of the elevator close with a clank."</span><span class="p">)</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">TO_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">BACK_EXIT</span><span class="o">.</span><span class="n">location</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">call_event</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="s2">"chain_1"</span><span class="p">,</span> <span class="mi">15</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -447,7 +447,7 @@ Let’s do that:</p>
|
|||
<p>Take the time to read the help. It gives you all the information you should need. We’ll need to
|
||||
change the “message” variable, and use custom mapping (between braces) to alter the message. We’re
|
||||
given an example, let’s use it. In the code editor, you can paste the following line:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"{character} walks out of the elevator."</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{character}</span><span class="s2"> walks out of the elevator."</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Again, save and quit the editor by entering <code class="docutils literal notranslate"><span class="pre">:wq</span></code>. You can create a new character to see it leave.</p>
|
||||
|
|
@ -469,7 +469,7 @@ then edit “msg_leave” of “north”:</p>
|
|||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">call</span><span class="o">/</span><span class="n">add</span> <span class="n">north</span> <span class="o">=</span> <span class="n">msg_leave</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"{character} walks into the elevator."</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{character}</span><span class="s2"> walks into the elevator."</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Again, you can force our beggar to move and see the message we have just set. This modification
|
||||
|
|
|
|||
|
|
@ -96,9 +96,9 @@ Evennia defaults to using this (it inherits directly from <code class="docutils
|
|||
<span class="k">class</span> <span class="nc">Account</span><span class="p">(</span><span class="n">DefaultAccount</span><span class="p">):</span> <span class="c1"># [...]</span>
|
||||
|
||||
<span class="n">at_account_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="s2">"this is called only once, when account is first created"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">real_name</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># this is set later self.db.real_address = None #</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">real_name</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># this is set later self.db.real_address = None #</span>
|
||||
<span class="s2">"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_1</span> <span class="o">=</span> <span class="bp">True</span> <span class="c1"># default config self.db.config_2 = False # "</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_1</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># default config self.db.config_2 = False # "</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_3</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># "</span>
|
||||
|
||||
<span class="c1"># ... whatever else our game needs to know ``` Reload the server with `reload`.</span>
|
||||
|
|
|
|||
|
|
@ -173,8 +173,8 @@ section):</p>
|
|||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Disable wiki handling of login/signup</span>
|
||||
<span class="n">WIKI_ACCOUNT_HANDLING</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">WIKI_ACCOUNT_SIGNUP_ALLOWED</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">WIKI_ACCOUNT_HANDLING</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">WIKI_ACCOUNT_SIGNUP_ALLOWED</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="c1">######################################################################</span>
|
||||
<span class="c1"># Settings given in secret_settings.py override those in this file.</span>
|
||||
|
|
@ -182,7 +182,7 @@ section):</p>
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">server.conf.secret_settings</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"secret_settings.py file not found or failed to import."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"secret_settings.py file not found or failed to import."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
@ -295,7 +295,7 @@ non-logged in users) can read it. The superuser has some additional privileges.
|
|||
|
||||
<span class="k">def</span> <span class="nf">is_anyone</span><span class="p">(</span><span class="n">article</span><span class="p">,</span> <span class="n">user</span><span class="p">):</span>
|
||||
<span class="sd">"""Return True even if the user is anonymous."""</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># Who can create new groups and users from the wiki?</span>
|
||||
<span class="n">WIKI_CAN_ADMIN</span> <span class="o">=</span> <span class="n">is_superuser</span>
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ custom <a class="reference internal" href="Typeclasses.html"><span class="doc">T
|
|||
|
||||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"called when the object is first created"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"mycmdset.MyCmdSet"</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"mycmdset.MyCmdSet"</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>All new objects of this typeclass will now start with this cmdset and it will survive a <code class="docutils literal notranslate"><span class="pre">@reload</span></code>.</p>
|
||||
|
|
@ -236,7 +236,7 @@ object is first created. This means that if you already have existing objects in
|
|||
using that typeclass, they will not have been initiated the same way. There are many ways to update
|
||||
them; since it’s a one-time update you can usually just simply loop through them. As superuser, try
|
||||
the following:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.objects</span> <span class="k">import</span> <span class="n">MyObject</span><span class="p">;</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"mycmdset.MyCmdSet"</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.objects</span> <span class="kn">import</span> <span class="n">MyObject</span><span class="p">;</span> <span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"mycmdset.MyCmdSet"</span><span class="p">)</span> <span class="k">for</span> <span class="n">o</span> <span class="ow">in</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>MyObject.objects.all()]</p>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ because you update it. You need to update existing objects manually.</p>
|
|||
re-load of the <code class="docutils literal notranslate"><span class="pre">at_object_creation</span></code> method (only) on the object. This case is common enough that
|
||||
there is an alias <code class="docutils literal notranslate"><span class="pre">@update</span> <span class="pre">objectname</span></code> you can use to get the same effect. If there are multiple
|
||||
objects you can use <code class="docutils literal notranslate"><span class="pre">@py</span></code> to loop over the objects you need:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.objects</span> <span class="k">import</span> <span class="n">Heavy</span><span class="p">;</span> <span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">at_object_creation</span><span class="p">()</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">Heavy</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.objects</span> <span class="kn">import</span> <span class="n">Heavy</span><span class="p">;</span> <span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">at_object_creation</span><span class="p">()</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">Heavy</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -102,14 +102,14 @@ way but remove the secret-handling and replace it with the normal Evennia method
|
|||
<p>Cd into <code class="docutils literal notranslate"><span class="pre">myarx/server/conf/</span></code> and open the file <code class="docutils literal notranslate"><span class="pre">settings.py</span></code> in a text editor. The top part (within
|
||||
<code class="docutils literal notranslate"><span class="pre">"""..."""</span></code>) is just help text. Wipe everything underneath that and make it look like this instead
|
||||
(don’t forget to save):</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">base_settings</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">base_settings</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">TELNET_PORTS</span> <span class="o">=</span> <span class="p">[</span><span class="mi">4000</span><span class="p">]</span>
|
||||
<span class="n">SERVERNAME</span> <span class="o">=</span> <span class="s2">"MyArx"</span>
|
||||
<span class="n">GAME_SLOGAN</span> <span class="o">=</span> <span class="s2">"The cool game"</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">server.conf.secret_settings</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">server.conf.secret_settings</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"secret_settings.py file not found or failed to import."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -57,9 +57,9 @@ defined in a previous statement.</p>
|
|||
<p>Consider this piece of code in a traditional Python program:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">print</span><span class="p">(</span><span class="s2">"before call ..."</span><span class="p">)</span>
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="nb">print</span><span class="p">(</span><span class="s2">"before call ..."</span><span class="p">)</span>
|
||||
<span class="n">long_running_function</span><span class="p">()</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"after call ..."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"after call ..."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>When run, this will print <code class="docutils literal notranslate"><span class="pre">"before</span> <span class="pre">call</span> <span class="pre">..."</span></code>, after which the <code class="docutils literal notranslate"><span class="pre">long_running_function</span></code> gets to work
|
||||
|
|
@ -85,9 +85,9 @@ you can run it <em>asynchronously</em>. This makes use of the <code class="docut
|
|||
2
|
||||
3
|
||||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"before call ..."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"before call ..."</span><span class="p">)</span>
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">run_async</span><span class="p">(</span><span class="n">long_running_function</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"after call ..."</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"after call ..."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Now, when running this you will find that the program will not wait around for
|
||||
|
|
@ -109,7 +109,7 @@ above) finishes successfully. The argument <code class="docutils literal notrans
|
|||
<code class="docutils literal notranslate"><span class="pre">None</span></code>).</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_return</span><span class="p">(</span><span class="n">r</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</li>
|
||||
|
|
@ -122,7 +122,7 @@ log. An example of an errback is found below:</p></li>
|
|||
</ul>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_err</span><span class="p">(</span><span class="n">e</span><span class="p">):</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"There was an error:"</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="nb">print</span><span class="p">(</span><span class="s2">"There was an error:"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
|
|
@ -202,7 +202,7 @@ sleep.</p>
|
|||
<p>This will delay the execution of the callback for 10 seconds. This function is explored much more in
|
||||
the <a class="reference internal" href="Command-Duration.html"><span class="doc">Command Duration Tutorial</span></a>.</p>
|
||||
<p>You can also try the following snippet just see how it works:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">delay</span><span class="p">;</span> <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">who</span><span class="p">:</span> <span class="n">who</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Test!"</span><span class="p">),</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">delay</span><span class="p">;</span> <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">who</span><span class="p">:</span> <span class="n">who</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Test!"</span><span class="p">),</span> <span class="bp">self</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Wait 10 seconds and ‘Test!’ should be echoed back to you.</p>
|
||||
|
|
@ -231,7 +231,7 @@ in an interactive way.</p>
|
|||
<span class="nd">@interactive</span>
|
||||
<span class="k">def</span> <span class="nf">myfunc</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
|
||||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||||
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Getting ready to wait ..."</span><span class="p">)</span>
|
||||
<span class="k">yield</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Now 5 seconds have passed."</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ try to save some data to a <em>Rose</em> (an <a class="reference internal" href=
|
|||
2
|
||||
3
|
||||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="c1"># saving</span>
|
||||
<span class="n">rose</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">has_thorns</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">rose</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">has_thorns</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="c1"># getting it back</span>
|
||||
<span class="n">is_ouch</span> <span class="o">=</span> <span class="n">rose</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">has_thorns</span>
|
||||
</pre></div>
|
||||
|
|
@ -83,7 +83,7 @@ throughout the life of the server now, until you deliberately remove them.</p>
|
|||
2
|
||||
3
|
||||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="c1"># saving</span>
|
||||
<span class="n">rose</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">has_thorns</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">rose</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">has_thorns</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="c1"># getting it back</span>
|
||||
<span class="n">is_ouch</span> <span class="o">=</span> <span class="n">rose</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">has_thorns</span>
|
||||
</pre></div>
|
||||
|
|
@ -145,9 +145,9 @@ access and editing. The <code class="docutils literal notranslate"><span class="
|
|||
<span class="n">obj</span> <span class="o">=</span> <span class="n">evennia</span><span class="o">.</span><span class="n">search_object</span><span class="p">(</span><span class="s2">"MyObject"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">obj</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">"test"</span><span class="p">,</span> <span class="s2">"testvalue"</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test</span><span class="p">)</span> <span class="c1"># prints "testvalue"</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</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">"test"</span><span class="p">))</span> <span class="c1"># "</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="c1"># prints [<AttributeObject>]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test</span><span class="p">)</span> <span class="c1"># prints "testvalue"</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</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">"test"</span><span class="p">))</span> <span class="c1"># "</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="c1"># prints [<AttributeObject>]</span>
|
||||
<span class="n">obj</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">"test"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -265,7 +265,7 @@ such hidden database objects is <em>not</em> supported and will lead to errors!<
|
|||
12
|
||||
13</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="c1"># Examples of valid single-value attribute data:</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test1</span> <span class="o">=</span> <span class="mi">23</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test1</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test1</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="c1"># a database object (will be stored as an internal representation)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">test2</span> <span class="o">=</span> <span class="n">myobj</span>
|
||||
|
||||
|
|
@ -357,8 +357,8 @@ variable, e.g. <code class="docutils literal notranslate"><span class="pre">myli
|
|||
5</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">mylist</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span>
|
||||
<span class="n">mylist</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mi">5</span> <span class="c1"># this will also update database</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is now [1,2,3,5]</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is also [1,2,3,5]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is now [1,2,3,5]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is also [1,2,3,5]</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>To “disconnect” your extracted mutable variable from the database you simply need to convert the
|
||||
|
|
@ -371,8 +371,8 @@ variable, e.g. <code class="docutils literal notranslate"><span class="pre">myli
|
|||
5</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]</span>
|
||||
<span class="n">mylist</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># convert to normal list</span>
|
||||
<span class="n">mylist</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is now [1,2,3,5]</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is still [1,2,3,4]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is now [1,2,3,5]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mylist</span><span class="p">)</span> <span class="c1"># this is still [1,2,3,4]</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>A further problem comes with <em>nested mutables</em>, like a dict containing lists of dicts or something
|
||||
|
|
@ -380,7 +380,7 @@ like that. Each of these nested mutables would be <code class="docutils literal
|
|||
disconnecting the outermost one of them would not disconnect those nested within. To make really
|
||||
sure you disonnect a nested structure entirely from the database, Evennia provides a special
|
||||
function <code class="docutils literal notranslate"><span class="pre">evennia.utils.dbserialize.deserialize</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.utils.dbserialize</span> <span class="k">import</span> <span class="n">deserialize</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.utils.dbserialize</span> <span class="kn">import</span> <span class="n">deserialize</span>
|
||||
|
||||
<span class="n">decoupled_mutables</span> <span class="o">=</span> <span class="n">deserialize</span><span class="p">(</span><span class="n">nested_mutables</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
@ -404,7 +404,7 @@ already disconnected from the database from the onset.</p>
|
|||
|
||||
<span class="c1"># this works but will NOT update database since outermost is a tuple</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mytup</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">5</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mytup</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># this still returns 4, not 5</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mytup</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># this still returns 4, not 5</span>
|
||||
|
||||
<span class="n">mytup1</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mytup</span> <span class="c1"># mytup1 is already disconnected from database since outermost</span>
|
||||
<span class="c1"># iterable is a tuple, so we can edit the internal list as we want</span>
|
||||
|
|
@ -435,7 +435,7 @@ The relevant lock types are</p>
|
|||
the AttributeHandler and set it to return the object instead of the value:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">lockstring</span> <span class="o">=</span> <span class="s2">"attread:all();attredit:perm(Admins)"</span>
|
||||
<span class="n">obj</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">"myattr"</span><span class="p">,</span> <span class="n">return_obj</span><span class="o">=</span><span class="bp">True</span><span class="p">)</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="n">lockstring</span><span class="p">)</span>
|
||||
<span class="n">obj</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">"myattr"</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="o">.</span><span class="n">locks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">lockstring</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Note the <code class="docutils literal notranslate"><span class="pre">return_obj</span></code> keyword which makes sure to return the <code class="docutils literal notranslate"><span class="pre">Attribute</span></code> object so its LockHandler
|
||||
|
|
@ -456,10 +456,10 @@ Attribute).</p>
|
|||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="c1"># in some command code where we want to limit</span>
|
||||
<span class="c1"># setting of a given attribute name on an object</span>
|
||||
<span class="n">attr</span> <span class="o">=</span> <span class="n">obj</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="n">attrname</span><span class="p">,</span>
|
||||
<span class="n">return_obj</span><span class="o">=</span><span class="bp">True</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">accessing_obj</span><span class="o">=</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">default_access</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">default_access</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">attr</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You cannot edit that Attribute!"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ file. Observe that the block has <em>not</em> actually been executed at this poi
|
|||
<span class="kn">from</span> <span class="nn">evennia.contrib.tutorial_examples</span> <span class="kn">import</span> <span class="n">red_button</span>
|
||||
<span class="kn">from</span> <span class="nn">typeclasses.objects</span> <span class="kn">import</span> <span class="n">Object</span>
|
||||
|
||||
<span class="n">limbo</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">objects</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'Limbo'</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="bp">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">limbo</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">objects</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s1">'Limbo'</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="n">red_button</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">red_button</span><span class="o">.</span><span class="n">RedButton</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"Red button"</span><span class="p">,</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="n">limbo</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">"button"</span><span class="p">])</span>
|
||||
|
|
@ -286,7 +286,7 @@ dictionary of room references in an <code class="docutils literal notranslate"><
|
|||
10
|
||||
11
|
||||
12</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="c1">#HEADER</span>
|
||||
<span class="k">if</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">all_rooms</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">all_rooms</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">all_rooms</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="c1">#CODE</span>
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ behind the scenes. A Typeclass is created in a normal Python source file:</p>
|
|||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"This is called only when object is first created"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add_default</span><span class="p">(</span><span class="n">default_cmds</span><span class="o">.</span><span class="n">CharacterCmdSet</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">MechCmdSet</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">MechCmdSet</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="bp">self</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:all();call:false()"</span><span class="p">)</span>
|
||||
<span class="bp">self</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 huge mech. It has missiles and stuff."</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -142,14 +142,14 @@ here, feel free to organize the code differently):</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rYou should provide an argument to this function: the object to edit.|n"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</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="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">global_search</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</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="o">.</span><span class="n">strip</span><span class="p">(),</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">typename</span> <span class="o">==</span> <span class="s2">"Room"</span><span class="p">:</span>
|
||||
<span class="n">Menu</span> <span class="o">=</span> <span class="n">RoomBuildingMenu</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">"|rThe object {} cannot be</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rThe object </span><span class="si">{}</span><span class="s2"> cannot be</span>
|
||||
<span class="n">edited</span><span class="o">.|</span><span class="n">n</span><span class="s2">".format(obj.get_display_name(self.caller)))</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -566,12 +566,12 @@ example using some of these arguments (again, replace the <code class="docutils
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -690,12 +690,12 @@ it’s explained below:</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -708,8 +708,8 @@ it’s explained below:</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -835,12 +835,12 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -853,8 +853,8 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -867,13 +867,13 @@ callback. To see it in action, as usual, replace the class and functions in <co
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1138,12 +1138,12 @@ explanations next!</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -1161,8 +1161,8 @@ explanations next!</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -1175,13 +1175,13 @@ explanations next!</p>
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1192,41 +1192,41 @@ explanations next!</p>
|
|||
<span class="sd"> The user typed something in the list of exits. Maybe an exit name?</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># Open a sub-menu, using nested keys</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="nb">exit</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">exit</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="c1"># Exit sub-menu</span>
|
||||
<span class="k">def</span> <span class="nf">text_single_exit</span><span class="p">(</span><span class="n">menu</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="sd">"""Show the text to edit single exits."""</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
|
||||
<span class="k">return</span> <span class="s2">"""</span>
|
||||
<span class="s2"> Exit {exit}:</span>
|
||||
<span class="s2"> Exit </span><span class="si">{exit}</span><span class="s2">:</span>
|
||||
|
||||
<span class="s2"> Enter the exit key to change it, or |y@|n to go back.</span>
|
||||
|
||||
<span class="s2"> New exit key:</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">nomatch_single_exit</span><span class="p">(</span><span class="n">menu</span><span class="p">,</span> <span class="n">caller</span><span class="p">,</span> <span class="n">room</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
||||
<span class="sd">"""The user entered something in the exit sub-menu. Replace the exit key."""</span>
|
||||
<span class="c1"># exit is the second key element: keys should contain ['e', <Exit object>]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">keys</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rCannot find the exit.|n"</span><span class="p">)</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">move</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="nb">exit</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">string</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="n">exit</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">string</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<blockquote>
|
||||
|
|
@ -1361,12 +1361,12 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"title"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"t"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="s2">"""</span>
|
||||
<span class="s2"> -------------------------------------------------------------------------------</span>
|
||||
<span class="s2"> Editing the title of {{obj.key}}(#{{obj.id}})</span>
|
||||
|
||||
<span class="s2"> You can change the title simply by entering it.</span>
|
||||
<span class="s2"> Use |y{back}|n to go back to the main menu.</span>
|
||||
<span class="s2"> Use |y</span><span class="si">{back}</span><span class="s2">|n to go back to the main menu.</span>
|
||||
|
||||
<span class="s2"> Current title: |c{{obj.key}}|n</span>
|
||||
<span class="s2"> """</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">back</span><span class="o">=</span><span class="s2">"|n or |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keys_go_back</span><span class="p">)))</span>
|
||||
|
|
@ -1380,8 +1380,8 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd">"""Show the room exits."""</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y{exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">glance</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y</span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">glance</span>
|
||||
|
||||
|
|
@ -1394,13 +1394,13 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> Use |y@c|n to create a new exit."</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">Existing exits:"</span>
|
||||
<span class="k">if</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e {exit}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y{aliases}|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="nb">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward {destination}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="nb">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2"> |y@e </span><span class="si">{exit}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" (|y</span><span class="si">{aliases}</span><span class="s2">|n)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aliases</span><span class="o">=</span><span class="s2">"|n, |y"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
||||
<span class="n">alias</span> <span class="k">for</span> <span class="n">alias</span> <span class="ow">in</span> <span class="n">exit</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">()))</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">" toward </span><span class="si">{destination}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">destination</span><span class="o">=</span><span class="n">exit</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2"> |gNo exit has yet been defined.|n"</span>
|
||||
|
||||
|
|
@ -1411,14 +1411,14 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
<span class="sd"> The user typed something in the list of exits. Maybe an exit name?</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">string</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span>
|
||||
<span class="nb">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="n">exit</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">string</span><span class="p">,</span> <span class="n">candidates</span><span class="o">=</span><span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exit</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># Open a sub-menu, using nested keys</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="nb">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editing: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">key</span><span class="p">))</span>
|
||||
<span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="n">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ExitBuildingMenu</span><span class="p">(</span><span class="n">BuildingMenu</span><span class="p">):</span>
|
||||
|
||||
|
|
@ -1427,8 +1427,8 @@ depending on what you want to achieve. So let’s build two menus:</p>
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">exit</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"k"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"{obj.key}"</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">init</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exit</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice</span><span class="p">(</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"k"</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s2">"key"</span><span class="p">,</span> <span class="n">glance</span><span class="o">=</span><span class="s2">"</span><span class="si">{obj.key}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_choice_edit</span><span class="p">(</span><span class="s2">"description"</span><span class="p">,</span> <span class="s2">"d"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -1546,7 +1546,7 @@ This is the northern exit. Cool huh?
|
|||
</div>
|
||||
<p>Very simply, we created two menus and bridged them together. This needs much less callbacks. There
|
||||
is only one line in the <code class="docutils literal notranslate"><span class="pre">nomatch_exits</span></code> to add:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="nb">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">menu</span><span class="o">.</span><span class="n">open_submenu</span><span class="p">(</span><span class="s2">"commands.building.ExitBuildingMenu"</span><span class="p">,</span> <span class="n">exit</span><span class="p">,</span> <span class="n">parent_keys</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>We have to call <code class="docutils literal notranslate"><span class="pre">open_submenu</span></code> on the menu object (which opens, as its name implies, a sub menu)
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ Add the following code to the <code class="docutils literal notranslate"><span c
|
|||
<span class="s2">"Called just before trying to move"</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">cantmove</span><span class="p">:</span> <span class="c1"># replace with condition you want to test</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Something is preventing you from moving!"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
@ -158,7 +158,7 @@ channel send. Edit <code class="docutils literal notranslate"><span class="pre">
|
|||
|
||||
<span class="c1"># Add to the Channel class</span>
|
||||
<span class="c1"># ...</span>
|
||||
<span class="k">def</span> <span class="nf">channel_prefix</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">emit</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">channel_prefix</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">emit</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">prefix_string</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="ow">in</span> <span class="n">COLORS</span><span class="p">:</span>
|
||||
<span class="n">prefix_string</span> <span class="o">=</span> <span class="s2">"[</span><span class="si">%s</span><span class="s2">] "</span> <span class="o">%</span> <span class="n">CHANNEL_COLORS</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">key</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
|
|
@ -220,7 +220,7 @@ is an example of a room where certain commands are disabled for non-staff:</p>
|
|||
|
||||
<span class="k">class</span> <span class="nc">BlockingRoom</span><span class="p">(</span><span class="n">Room</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">BlockingCmdSet</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">BlockingCmdSet</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># only share commands with players in the room that</span>
|
||||
<span class="c1"># are NOT Builders or higher</span>
|
||||
<span class="bp">self</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">"call:not perm(Builders)"</span><span class="p">)</span>
|
||||
|
|
@ -305,8 +305,8 @@ you have your project in a configured Git environment, it’s a matter of automa
|
|||
<span class="sd">"""</span>
|
||||
<span class="sd"> This is called only time the server stops before a reload.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">"Pulling from the game repository..."</span><span class="p">)</span>
|
||||
<span class="n">process</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">([</span><span class="s2">"git"</span><span class="p">,</span> <span class="s2">"pull"</span><span class="p">],</span> <span class="n">shell</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Pulling from the game repository..."</span><span class="p">)</span>
|
||||
<span class="n">process</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">([</span><span class="s2">"git"</span><span class="p">,</span> <span class="s2">"pull"</span><span class="p">],</span> <span class="n">shell</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>That’s all. We call <code class="docutils literal notranslate"><span class="pre">subprocess</span></code> to execute a shell command (that code works on Windows and Linux,
|
||||
|
|
@ -415,7 +415,7 @@ hooks’ documentation. The explanations on how to quickly update the message a
|
|||
<span class="sd"> ...</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">announce_move_from</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">destination</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">announce_move_from</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">destination</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called if the move is to be announced. This is</span>
|
||||
<span class="sd"> called while we are still standing in the old</span>
|
||||
|
|
@ -435,9 +435,9 @@ hooks’ documentation. The explanations on how to quickly update the message a
|
|||
<span class="sd"> destination: the location of the object after moving.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">announce_move_from</span><span class="p">(</span><span class="n">destination</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="s2">"{object} leaves {exit}."</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">announce_move_from</span><span class="p">(</span><span class="n">destination</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="s2">"</span><span class="si">{object}</span><span class="s2"> leaves </span><span class="si">{exit}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">announce_move_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_location</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">announce_move_to</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_location</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called after the move if the move was not quiet. At this point</span>
|
||||
<span class="sd"> we are standing in the new location.</span>
|
||||
|
|
@ -456,7 +456,7 @@ hooks’ documentation. The explanations on how to quickly update the message a
|
|||
<span class="sd"> destination: the location of the object after moving.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">announce_move_to</span><span class="p">(</span><span class="n">source_location</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="s2">"{object} arrives from the {exit}."</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">announce_move_to</span><span class="p">(</span><span class="n">source_location</span><span class="p">,</span> <span class="n">msg</span><span class="o">=</span><span class="s2">"</span><span class="si">{object}</span><span class="s2"> arrives from the </span><span class="si">{exit}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>We override both hooks, but call the parent hook to display a different message. If you read the
|
||||
|
|
@ -501,7 +501,7 @@ staff that wants to ban-by-ip (instead of the user) with <code class="docutils l
|
|||
<p><code class="docutils literal notranslate"><span class="pre">typeclasses/accounts.py</span></code></p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">at_post_login</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">lastsite</span> <span class="o">=</span> <span class="bp">self</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="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">address</span>
|
||||
</pre></div>
|
||||
|
|
@ -519,7 +519,7 @@ long.</p>
|
|||
6
|
||||
7
|
||||
8
|
||||
9</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
9</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">at_post_login</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">do_not_exceed</span> <span class="o">=</span> <span class="mi">24</span> <span class="c1"># Keep the last two dozen entries</span>
|
||||
<span class="n">session</span> <span class="o">=</span> <span class="bp">self</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="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># Most recent session</span>
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ shortcut:</p>
|
|||
<span class="n">gametime</span> <span class="o">=</span> <span class="n">gametime</span><span class="o">.</span><span class="n">gametime</span><span class="p">()</span>
|
||||
<span class="c1"># in-game time plus game epoch (i.e. the current in-game</span>
|
||||
<span class="c1"># time stamp)</span>
|
||||
<span class="n">gametime</span> <span class="o">=</span> <span class="n">gametime</span><span class="o">.</span><span class="n">gametime</span><span class="p">(</span><span class="n">absolute</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">gametime</span> <span class="o">=</span> <span class="n">gametime</span><span class="o">.</span><span class="n">gametime</span><span class="p">(</span><span class="n">absolute</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># reset the game time (back to game epoch)</span>
|
||||
<span class="n">gametime</span><span class="o">.</span><span class="n">reset_gametime</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
|
|
@ -243,7 +243,7 @@ something is. It converts to four different styles of output using the <em>style
|
|||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># wait 10 seconds before sending "Echo!" to obj (which we assume is defined)</span>
|
||||
<span class="n">deferred</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">_callback</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="s2">"Echo!"</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">deferred</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">_callback</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="s2">"Echo!"</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># code here will run immediately, not waiting for the delay to fire!</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -373,7 +373,7 @@ when enough time has passed unless they keep trying.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You swing big! You are off balance now."</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># set the off-balance flag</span>
|
||||
<span class="bp">self</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">off_balance</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</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">off_balance</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># wait 8 seconds before we can recover. During this time</span>
|
||||
<span class="c1"># we won't be able to swing again due to the check at the top.</span>
|
||||
|
|
@ -517,7 +517,7 @@ Below is an example of a crafting command that can be aborted by starting a figh
|
|||
<span class="c1"># [Crafting code, checking of components, skills etc]</span>
|
||||
|
||||
<span class="c1"># Start crafting</span>
|
||||
<span class="bp">self</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">is_crafting</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</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">is_crafting</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You start crafting ..."</span><span class="p">)</span>
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">step1</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -525,7 +525,7 @@ Below is an example of a crafting command that can be aborted by starting a figh
|
|||
<span class="s2">"checks if we are in a fight."</span>
|
||||
<span class="k">if</span> <span class="bp">self</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">is_fighting</span><span class="p">:</span>
|
||||
<span class="k">del</span> <span class="bp">self</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">is_crafting</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">step1</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"first step of armour construction"</span>
|
||||
|
|
@ -571,7 +571,7 @@ Below is an example of a crafting command that can be aborted by starting a figh
|
|||
<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="s2">"Implements the command"</span>
|
||||
|
||||
<span class="bp">self</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">is_fighting</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</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">is_fighting</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
</pre></div>
|
||||
|
|
@ -646,7 +646,7 @@ must make sure Evennia can properly store things to the database.</p>
|
|||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You shout '</span><span class="si">%s</span><span class="s2">' and wait for an echo ..."</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="c1"># this waits non-blocking for 10 seconds, then calls echo(self.caller, self.args)</span>
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">echo</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</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">persistent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c1"># changes!</span>
|
||||
<span class="n">utils</span><span class="o">.</span><span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">echo</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</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">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># changes!</span>
|
||||
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ the prompt when they cause a change in health, for example.</p>
|
|||
<span class="n">mp</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">mp</span>
|
||||
<span class="n">sp</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sp</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">None</span> <span class="ow">in</span> <span class="p">(</span><span class="n">hp</span><span class="p">,</span> <span class="n">mp</span><span class="p">,</span> <span class="n">sp</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="kc">None</span> <span class="ow">in</span> <span class="p">(</span><span class="n">hp</span><span class="p">,</span> <span class="n">mp</span><span class="p">,</span> <span class="n">sp</span><span class="p">):</span>
|
||||
<span class="c1"># Attributes not defined</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Not a valid target!"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ specifics and use the base <code class="docutils literal notranslate"><span clas
|
|||
|
||||
<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="c1"># echo the caller's input back to the caller</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Echo: {}"</span><span class="o">.</span><span class="n">format</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="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Echo: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>You define a new command by assigning a few class-global properties on your inherited class and
|
||||
|
|
@ -359,12 +359,12 @@ for this command. You should decide on a way to format your help and stick to th
|
|||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">==</span> <span class="s2">"here"</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"{caller.key} smiles"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> smiles"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="n">caller</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">target</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">target</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"{caller.key} smiles at {target.key}"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> smiles at </span><span class="si">{</span><span class="n">target</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
@ -692,7 +692,7 @@ so that you can back-reference the previous arguments etc.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">xval</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">xval</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Command memory ID: {} (xval={})"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">xval</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">msg</span><span class="p">(</span><span class="s2">"Command memory ID: </span><span class="si">{}</span><span class="s2"> (xval=</span><span class="si">{}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">xval</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Adding this to the default character cmdset gives a result like this in-game:</p>
|
||||
|
|
|
|||
|
|
@ -157,45 +157,45 @@ properties to easily access and update coordinates. This is a Pythonic approach
|
|||
<span class="k">def</span> <span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the X coordinate or None."""</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="nd">@x.setter</span>
|
||||
<span class="nd">@x</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""Change the X coordinate."""</span>
|
||||
<span class="n">old</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">old</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">y</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the Y coordinate or None."""</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordy"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="nd">@y.setter</span>
|
||||
<span class="nd">@y</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">y</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="sd">"""Change the Y coordinate."""</span>
|
||||
<span class="n">old</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordy"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">old</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordy"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">y</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">y</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">),</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordy"</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">z</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the Z coordinate or None."""</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordz"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="nd">@z.setter</span>
|
||||
<span class="nd">@z</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">z</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z</span><span class="p">):</span>
|
||||
<span class="sd">"""Change the Z coordinate."""</span>
|
||||
<span class="n">old</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordz"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">old</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordz"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">z</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">z</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">),</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordz"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -212,7 +212,7 @@ is well-explained and should help you understand the idea.</p>
|
|||
<span class="k">def</span> <span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the X coordinate or None."""</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>What it does is pretty simple:</p>
|
||||
|
|
@ -236,13 +236,13 @@ tutorial.</p>
|
|||
5
|
||||
6
|
||||
7
|
||||
8</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="nd">@x.setter</span>
|
||||
8</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="nd">@x</span><span class="o">.</span><span class="n">setter</span>
|
||||
<span class="k">def</span> <span class="nf">x</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""Change the X coordinate."""</span>
|
||||
<span class="n">old</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">old</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">category</span><span class="o">=</span><span class="s2">"coordx"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -327,7 +327,7 @@ Z=0?</p>
|
|||
<span class="k">if</span> <span class="n">rooms</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">rooms</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>This solution includes a bit of <a class="reference external" href="https://docs.djangoproject.com/en/1.11/topics/db/queries/">Django
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ function should not return anything.</p>
|
|||
<span class="p">[</span><span class="o">...</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># some configs</span>
|
||||
<span class="n">MYPROC_ENABLED</span> <span class="o">=</span> <span class="bp">True</span> <span class="c1"># convenient off-flag to avoid having to edit settings all the time</span>
|
||||
<span class="n">MYPROC_ENABLED</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># convenient off-flag to avoid having to edit settings all the time</span>
|
||||
<span class="n">MY_PORT</span> <span class="o">=</span> <span class="mi">6666</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">start_plugin_services</span><span class="p">(</span><span class="n">portal</span><span class="p">):</span>
|
||||
|
|
@ -137,7 +137,7 @@ function should not return anything.</p>
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">MYPROC_ENABLED</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="c1"># output to list this with the other services at startup</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="s2">" myproc: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MY_PORT</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">" myproc: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">MY_PORT</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># some setup (simple example)</span>
|
||||
<span class="n">factory</span> <span class="o">=</span> <span class="n">MyOwnFactory</span><span class="p">()</span>
|
||||
|
|
@ -299,7 +299,7 @@ Evennia-specific inputs.</p>
|
|||
<span class="c1"># The above twisted-methods call them and vice-versa. This connects the protocol</span>
|
||||
<span class="c1"># the Evennia internals.</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">disconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">disconnect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Called when connection closes.</span>
|
||||
<span class="sd"> This can also be called directly by Evennia when manually closing the connection.</span>
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ communication.</p>
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"+"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Comms"</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:not pperm(channel_banned)"</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<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 command"""</span>
|
||||
|
|
@ -238,7 +238,7 @@ channel’s <code class="docutils literal notranslate"><span class="pre">connect
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"-"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Comms"</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:not pperm(channel_banned)"</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<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 command"""</span>
|
||||
|
|
@ -432,10 +432,10 @@ see why this import is important when diving in the command itself:</p>
|
|||
<span class="c1"># this flag is what identifies this cmd as a channel cmd</span>
|
||||
<span class="c1"># and branches off to the system send-to-channel command</span>
|
||||
<span class="c1"># (which is customizable by admin)</span>
|
||||
<span class="n">is_channel</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">is_channel</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"general"</span>
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"Channel Names"</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">arg_regex</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -497,7 +497,7 @@ parse arguments and in our case, we will analyze switches here.</p>
|
|||
<span class="sd"> """</span>
|
||||
<span class="c1"># channel-handler sends channame:msg here.</span>
|
||||
<span class="n">channelname</span><span class="p">,</span> <span class="n">msg</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">split</span><span class="p">(</span><span class="s2">":"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">switch</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">switch</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">msg</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"/"</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">switch</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
|
@ -599,17 +599,17 @@ handle switches and also the raw message to send if no switch was used.</p>
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">msg</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">"What do you want to do on this channel?"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"{} {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">online</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="s2">"</span><span class="si">{}</span><span class="s2"> </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">caller</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">online</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch</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">"{}: Invalid switch {}."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch</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="si">{}</span><span class="s2">: Invalid switch </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">channel</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">switch</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">msg</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">"Say what?"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">caller</span> <span class="ow">in</span> <span class="n">channel</span><span class="o">.</span><span class="n">mutelist</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 currently have </span><span class="si">%s</span><span class="s2"> muted."</span> <span class="o">%</span> <span class="n">channel</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">online</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">senders</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">online</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ default cmdset. Then restart Evennia in interactive mode with <code class="docut
|
|||
<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="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">set_trace</span><span class="p">;</span> <span class="n">set_trace</span><span class="p">()</span> <span class="c1"># <--- start of debugger</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="bp">self</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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You've found {}."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</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've found </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">()))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If you type <code class="docutils literal notranslate"><span class="pre">test</span></code> in your game, everything will freeze. You won’t get any feedback from the game,
|
||||
|
|
@ -146,7 +146,7 @@ first one you should know is <code class="docutils literal notranslate"><span cl
|
|||
<span class="mi">44</span> <span class="n">key</span> <span class="o">=</span> <span class="s2">"test"</span>
|
||||
<span class="mi">45</span>
|
||||
<span class="mi">46</span> <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="mi">47</span> <span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">set_trace</span><span class="p">;</span> <span class="n">set_trace</span><span class="p">()</span> <span class="c1"># <--- start of debugger</span>
|
||||
<span class="mi">47</span> <span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">set_trace</span><span class="p">;</span> <span class="n">set_trace</span><span class="p">()</span> <span class="c1"># <--- start of debugger</span>
|
||||
<span class="mi">48</span> <span class="o">-></span> <span class="n">obj</span> <span class="o">=</span> <span class="bp">self</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="mi">49</span> <span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You've found </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">()))</span>
|
||||
<span class="mi">50</span>
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ of commands:</p>
|
|||
<span class="s2">"Parent class for all exit-errors."</span>
|
||||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:all()"</span>
|
||||
<span class="n">arg_regex</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">"\s|$"</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<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="s2">"returns the error"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You cannot move </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ when the function was called.</p>
|
|||
</div>
|
||||
<p>For our first test, let’s type something like:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} shrugs and says: 'well, yes, hello to you!'"</span><span class="p">,</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> shrugs and says: 'well, yes, hello to you!'"</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -196,7 +196,7 @@ keywords.</p>
|
|||
</div>
|
||||
<p>And in the editor that opens:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} says: 'Ho well, trade's fine as long as roads are</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> says: 'Ho well, trade's fine as long as roads are</span>
|
||||
<span class="n">safe</span><span class="o">.</span><span class="s1">'", mapping=dict(character=character))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -226,16 +226,16 @@ an entire dialogue, you might want to do a bit more than that.</p>
|
|||
8
|
||||
9
|
||||
10
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} says: 'Bandits he?'"</span><span class="p">,</span>
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> says: 'Bandits he?'"</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} scratches his head, considering."</span><span class="p">,</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> scratches his head, considering."</span><span class="p">,</span>
|
||||
<span class="n">mapping</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">character</span><span class="o">=</span><span class="n">character</span><span class="p">))</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"{character} whispers: 'Aye, saw some of them, north from here. No</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> whispers: 'Aye, saw some of them, north from here. No</span>
|
||||
<span class="n">trouble</span> <span class="n">o</span><span class="s1">' mine, but...'</span><span class="s2">", mapping=dict(character=character))</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"{character} looks at you more</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> looks at you more</span>
|
||||
<span class="n">closely</span><span class="o">.</span><span class="s2">".format(character=character.get_display_name(speaker)))</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"{character} continues in a low voice: 'Ain't my place to say, but if you need to find</span>
|
||||
<span class="s1">'em, they'</span><span class="n">re</span> <span class="n">encamped</span> <span class="n">some</span> <span class="n">distance</span> <span class="n">away</span> <span class="kn">from</span> <span class="nn">the</span> <span class="nn">road</span><span class="p">,</span> <span class="n">I</span> <span class="n">guess</span> <span class="n">near</span> <span class="n">a</span> <span class="n">cave</span> <span class="ow">or</span>
|
||||
<span class="n">speaker</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">{character}</span><span class="s2"> continues in a low voice: 'Ain't my place to say, but if you need to find</span>
|
||||
<span class="s1">'em, they'</span><span class="n">re</span> <span class="n">encamped</span> <span class="n">some</span> <span class="n">distance</span> <span class="n">away</span> <span class="kn">from</span> <span class="nn">the</span> <span class="n">road</span><span class="p">,</span> <span class="n">I</span> <span class="n">guess</span> <span class="n">near</span> <span class="n">a</span> <span class="n">cave</span> <span class="ow">or</span>
|
||||
<span class="n">something</span><span class="o">.</span><span class="s1">'.".format(character=character.get_display_name(speaker)))</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ in <code class="docutils literal notranslate"><span class="pre">mygame/world/map
|
|||
|
||||
<span class="c1"># the symbol is identified with a key "sector_type" on the</span>
|
||||
<span class="c1"># Room. Keys None and "you" must always exist.</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="bp">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without sector_type Attribute</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="kc">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without sector_type Attribute</span>
|
||||
<span class="s1">'you'</span> <span class="p">:</span> <span class="s1">'[@]'</span><span class="p">,</span>
|
||||
<span class="s1">'SECT_INSIDE'</span><span class="p">:</span> <span class="s1">'[.]'</span> <span class="p">}</span>
|
||||
</pre></div>
|
||||
|
|
@ -142,8 +142,8 @@ methods we need.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
|
|
@ -196,8 +196,8 @@ sanity checks on it by using the following methods.</p>
|
|||
<span class="k">def</span> <span class="nf">check_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># this method simply checks the grid to make sure</span>
|
||||
<span class="c1"># that both max_l and max_w are odd numbers.</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span>\
|
||||
<span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span>\
|
||||
<span class="k">else</span> <span class="kc">False</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Before we can set our worm on its way, we need to know some of the computer science behind all this
|
||||
|
|
@ -224,13 +224,13 @@ called ‘Graph Traversing’. In Pseudo code what we are trying to accomplish i
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># skip drawing if we already visited the destination</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># first time here!</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</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">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The beauty of Python is that our actual code of doing this doesn’t differ much if at all from this
|
||||
|
|
@ -296,8 +296,8 @@ conditional statements and set it up to start building the display.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_grid</span><span class="p">():</span>
|
||||
<span class="c1"># we have to store the grid into a variable</span>
|
||||
|
|
@ -337,17 +337,17 @@ code. The method is shown below:</p>
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="c1"># we only map in the cardinal directions. Mapping up/down would be</span>
|
||||
<span class="c1"># an interesting learning project for someone who wanted to try it.</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># we've been to the destination already, skip ahead.</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</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">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The first thing the “worm” does is to draw your current location in <code class="docutils literal notranslate"><span class="pre">self.draw</span></code>. Lets define that…</p>
|
||||
|
|
@ -412,7 +412,7 @@ in the room. The first thing it does is check if the room the Worm is in has bee
|
|||
lets define that…</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">has_drawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If <code class="docutils literal notranslate"><span class="pre">has_drawn</span></code> returns <code class="docutils literal notranslate"><span class="pre">False</span></code> that means the worm has found a room that hasn’t been mapped yet. It
|
||||
|
|
@ -639,7 +639,7 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
|
||||
<span class="c1"># These are keys set with the Attribute sector_type on the room.</span>
|
||||
<span class="c1"># The keys None and "you" must always exist.</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="bp">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without a sector_type attr</span>
|
||||
<span class="n">SYMBOLS</span> <span class="o">=</span> <span class="p">{</span> <span class="kc">None</span> <span class="p">:</span> <span class="s1">' . '</span><span class="p">,</span> <span class="c1"># for rooms without a sector_type attr</span>
|
||||
<span class="s1">'you'</span> <span class="p">:</span> <span class="s1">'[@]'</span><span class="p">,</span>
|
||||
<span class="s1">'SECT_INSIDE'</span><span class="p">:</span> <span class="s1">'[.]'</span> <span class="p">}</span>
|
||||
|
||||
|
|
@ -650,8 +650,8 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">=</span> <span class="n">max_width</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">=</span> <span class="n">max_length</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curX</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">curY</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">check_grid</span><span class="p">():</span>
|
||||
<span class="c1"># we actually have to store the grid into a variable</span>
|
||||
|
|
@ -682,17 +682,17 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="k">if</span> <span class="n">max_distance</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">for</span> <span class="nb">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">room</span><span class="o">.</span><span class="n">exits</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"north"</span><span class="p">,</span> <span class="s2">"east"</span><span class="p">,</span> <span class="s2">"west"</span><span class="p">,</span> <span class="s2">"south"</span><span class="p">):</span>
|
||||
<span class="c1"># we only map in the cardinal directions. Mapping up/down would be</span>
|
||||
<span class="c1"># an interesting learning project for someone who wanted to try it.</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_drawn</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">):</span>
|
||||
<span class="c1"># we've been to the destination already, skip ahead.</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="nb">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="nb">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</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">update_pos</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">draw_room_on_map</span><span class="p">(</span><span class="n">exit</span><span class="o">.</span><span class="n">destination</span><span class="p">,</span> <span class="n">max_distance</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">draw</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="c1"># draw initial caller location on map first!</span>
|
||||
|
|
@ -722,7 +722,7 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
|
||||
|
||||
<span class="k">def</span> <span class="nf">has_drawn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">room</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">room</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">worm_has_mapped</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">create_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -738,8 +738,8 @@ rooms to have a given sector symbol, you could change the default in the <code c
|
|||
<span class="k">def</span> <span class="nf">check_grid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># this method simply checks the grid to make sure</span>
|
||||
<span class="c1"># both max_l and max_w are odd numbers</span>
|
||||
<span class="k">return</span> <span class="bp">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_length</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">or</span> \
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">max_width</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">!=</span> <span class="mi">0</span> <span class="k">else</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">show_map</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">map_string</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ search/replace, fill, dedent and more.</p>
|
|||
5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
|
||||
<span class="n">EvEditor</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">loadfunc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">savefunc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">quitfunc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">loadfunc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">savefunc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">quitfunc</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -127,9 +127,9 @@ It has no other mechanical function.</p></li>
|
|||
<span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="s2">"get the current value"</span>
|
||||
<span class="k">return</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">"test"</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="nb">buffer</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">buffer</span><span class="p">):</span>
|
||||
<span class="s2">"save the buffer"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span> <span class="nb">buffer</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">quit</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="s2">"Since we define it, we must handle messages"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Editor exited"</span><span class="p">)</span>
|
||||
|
|
@ -185,9 +185,9 @@ functions will be stored, Python will need to find them.</p>
|
|||
<span class="s2">"get the current value"</span>
|
||||
<span class="k">return</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">"test"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="nb">buffer</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">buffer</span><span class="p">):</span>
|
||||
<span class="s2">"save the buffer"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span> <span class="nb">buffer</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"test"</span><span class="p">,</span> <span class="n">buffer</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">quit</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="s2">"Since we define it, we must handle messages"</span>
|
||||
|
|
@ -209,7 +209,7 @@ functions will be stored, Python will need to find them.</p>
|
|||
<span class="c1"># launch the editor</span>
|
||||
<span class="n">eveditor</span><span class="o">.</span><span class="n">EvEditor</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span>
|
||||
<span class="n">loadfunc</span><span class="o">=</span><span class="n">load</span><span class="p">,</span> <span class="n">savefunc</span><span class="o">=</span><span class="n">save</span><span class="p">,</span> <span class="n">quitfunc</span><span class="o">=</span><span class="n">quit</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">persistent</span><span class="o">=</span><span class="bp">True</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">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -160,12 +160,12 @@ section</a>.</p>
|
|||
10</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">EvMenu</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">menu_data</span><span class="p">,</span>
|
||||
<span class="n">startnode</span><span class="o">=</span><span class="s2">"start"</span><span class="p">,</span>
|
||||
<span class="n">cmdset_mergetype</span><span class="o">=</span><span class="s2">"Replace"</span><span class="p">,</span> <span class="n">cmdset_priority</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">auto_quit</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">auto_look</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">auto_help</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
|
||||
<span class="n">auto_quit</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">auto_look</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">auto_help</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">cmd_on_exit</span><span class="o">=</span><span class="s2">"look"</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">startnode_input</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span>
|
||||
<span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">debug</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">debug</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -1079,7 +1079,7 @@ which node it should go to next:</p>
|
|||
<span class="k">def</span> <span class="nf">_set_attribute</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="s2">"Get which attribute to modify and set it"</span>
|
||||
|
||||
<span class="n">attrname</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"attr"</span><span class="p">,</span> <span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">))</span>
|
||||
<span class="n">attrname</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"attr"</span><span class="p">,</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="n">next_node</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"next_node"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">caller</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="n">attrname</span><span class="p">,</span> <span class="n">attrvalue</span><span class="p">)</span>
|
||||
|
|
@ -1096,11 +1096,11 @@ which node it should go to next:</p>
|
|||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">({</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"death"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"A violent death in the family"</span><span class="p">,</span>
|
||||
<span class="s2">"goto"</span><span class="p">:</span> <span class="p">(</span><span class="n">_set_attribute</span><span class="p">,</span> <span class="p">{</span><span class="s2">"attr"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"experienced_violence"</span><span class="p">,</span> <span class="bp">True</span><span class="p">),</span>
|
||||
<span class="s2">"goto"</span><span class="p">:</span> <span class="p">(</span><span class="n">_set_attribute</span><span class="p">,</span> <span class="p">{</span><span class="s2">"attr"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"experienced_violence"</span><span class="p">,</span> <span class="kc">True</span><span class="p">),</span>
|
||||
<span class="s2">"next_node"</span><span class="p">:</span> <span class="s2">"node_violent_background"</span><span class="p">})},</span>
|
||||
<span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"betrayal"</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"The betrayal of a trusted grown-up"</span><span class="p">,</span>
|
||||
<span class="s2">"goto"</span><span class="p">:</span> <span class="p">(</span><span class="n">_set_attribute</span><span class="p">,</span> <span class="p">{</span><span class="s2">"attr"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"experienced_betrayal"</span><span class="p">,</span> <span class="bp">True</span><span class="p">),</span>
|
||||
<span class="s2">"goto"</span><span class="p">:</span> <span class="p">(</span><span class="n">_set_attribute</span><span class="p">,</span> <span class="p">{</span><span class="s2">"attr"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"experienced_betrayal"</span><span class="p">,</span> <span class="kc">True</span><span class="p">),</span>
|
||||
<span class="s2">"next_node"</span><span class="p">:</span> <span class="s2">"node_betrayal_background"</span><span class="p">})})</span>
|
||||
<span class="k">return</span> <span class="n">text</span><span class="p">,</span> <span class="n">options</span>
|
||||
</pre></div>
|
||||
|
|
@ -1166,14 +1166,14 @@ We could also imagine the helper function analyzing what other choices</p>
|
|||
<span class="c1"># a blank input either means OK or Abort</span>
|
||||
<span class="k">if</span> <span class="n">prev_entry</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">prev_entry</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Set name to {}."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">prev_entry</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Set name to </span><span class="si">{}</span><span class="s2">."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">prev_entry</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="s2">"node_background"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Aborted."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"node_exit"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># re-run old node, but pass in the name given</span>
|
||||
<span class="k">return</span> <span class="bp">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"prev_entry"</span><span class="p">:</span> <span class="n">inp</span><span class="p">}</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"prev_entry"</span><span class="p">:</span> <span class="n">inp</span><span class="p">}</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">enter_name</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -1182,7 +1182,7 @@ We could also imagine the helper function analyzing what other choices</p>
|
|||
<span class="n">prev_entry</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"prev_entry"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">prev_entry</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"Current name: {}.</span><span class="se">\n</span><span class="s2">Enter another name or <return> to accept."</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"Current name: </span><span class="si">{}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">Enter another name or <return> to accept."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"Enter your character's name or <return> to abort."</span>
|
||||
|
||||
|
|
@ -1248,7 +1248,7 @@ automatically when you exit the menu.</p>
|
|||
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_menutree</span><span class="o">.</span><span class="n">charactersheet</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_menutree</span><span class="o">.</span><span class="n">charactersheet</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> <span class="o">=</span> <span class="n">raw_string</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You set your name to {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You set your name to </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">raw_string</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"background"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">node_set_name</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
|
|
@ -1262,7 +1262,7 @@ automatically when you exit the menu.</p>
|
|||
|
||||
|
||||
<span class="k">def</span> <span class="nf">node_view_sheet</span><span class="p">(</span><span class="n">caller</span><span class="p">):</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"Character sheet:</span><span class="se">\n</span><span class="s2"> {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_menutree</span><span class="o">.</span><span class="n">charactersheet</span><span class="p">)</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"Character sheet:</span><span class="se">\n</span><span class="s2"> </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">_menutree</span><span class="o">.</span><span class="n">charactersheet</span><span class="p">)</span>
|
||||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">({</span><span class="s2">"key"</span><span class="p">:</span> <span class="s2">"Accept"</span><span class="p">,</span>
|
||||
<span class="s2">"goto"</span><span class="p">:</span> <span class="s2">"finish_chargen"</span><span class="p">},</span>
|
||||
|
|
@ -1331,7 +1331,7 @@ node is ok. A common example is a login menu:</p>
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">lookup_username</span><span class="p">(</span><span class="n">raw_string</span><span class="p">):</span>
|
||||
<span class="c1"># re-run current node by returning `None`</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|rUsername not found. Try again."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">None</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># username ok - continue to next node</span>
|
||||
<span class="k">return</span> <span class="s2">"node_password"</span>
|
||||
|
|
@ -1352,7 +1352,7 @@ node is ok. A common example is a login menu:</p>
|
|||
<span class="k">return</span> <span class="s2">"node_abort"</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="n">validate_password</span><span class="p">(</span><span class="n">raw_string</span><span class="p">):</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Password error. Try again."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"nattempts"</span><span class="p">,</span> <span class="n">nattempts</span> <span class="o">+</span> <span class="mi">1</span><span class="p">}</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="p">{</span><span class="s2">"nattempts"</span><span class="p">,</span> <span class="n">nattempts</span> <span class="o">+</span> <span class="mi">1</span><span class="p">}</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># password accepted</span>
|
||||
<span class="k">return</span> <span class="s2">"node_login"</span>
|
||||
|
|
@ -1477,9 +1477,9 @@ execution will continue and you can do stuff with the <code class="docutils lite
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"test"</span>
|
||||
<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="n">result</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="s2">"Please enter something:"</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You entered {result}."</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You entered </span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="n">result2</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span><span class="s2">"Now enter something else:"</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You now entered {result2}."</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You now entered </span><span class="si">{</span><span class="n">result2</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Using <code class="docutils literal notranslate"><span class="pre">yield</span></code> is simple and intuitive, but it will only access input from <code class="docutils literal notranslate"><span class="pre">self.caller</span></code> and you
|
||||
|
|
@ -1548,7 +1548,7 @@ enter will be sent into the callback for whatever processing you want.</p>
|
|||
<span class="sd"> True, stay in the prompt, which means this callback</span>
|
||||
<span class="sd"> will be called again with the next user input.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"When asked '{prompt}', you answered '{user_input}'."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"When asked '</span><span class="si">{</span><span class="n">prompt</span><span class="si">}</span><span class="s2">', you answered '</span><span class="si">{</span><span class="n">user_input</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span>
|
||||
|
||||
<span class="n">get_input</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"Write something! "</span><span class="p">,</span> <span class="n">callback</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
@ -1593,9 +1593,9 @@ list</a>.</p>
|
|||
<span class="c1"># will quit after this</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># the answer is not on the right yes/no form</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Please answer Yes or No. </span><span class="se">\n</span><span class="s2">{prompt}"</span><span class="p">)</span>
|
||||
<span class="err">@</span> <span class="c1"># returning True will make sure the prompt state is not exited</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Please answer Yes or No. </span><span class="se">\n</span><span class="si">{prompt}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="o">@</span> <span class="c1"># returning True will make sure the prompt state is not exited</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># ask the question</span>
|
||||
<span class="n">get_input</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="s2">"Is Evennia great (Yes/No)?"</span><span class="p">,</span> <span class="n">yesno</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ earlier version), you can also configure your index entry in your settings file
|
|||
15
|
||||
16
|
||||
17
|
||||
18</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">GAME_INDEX_ENABLED</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
18</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">GAME_INDEX_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="n">GAME_INDEX_LISTING</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="c1"># required</span>
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ done by:</p>
|
|||
8
|
||||
9</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="cm">/* creating pointer of both character and room struct */</span>
|
||||
|
||||
<span class="kt">void</span><span class="p">(</span><span class="k">struct</span> <span class="kt">char</span> <span class="n">ch</span><span class="o">*</span><span class="p">,</span> <span class="k">struct</span> <span class="n">room</span> <span class="n">room</span><span class="o">*</span><span class="p">){</span>
|
||||
<span class="kt">void</span><span class="p">(</span><span class="k">struct</span> <span class="nc">char</span> <span class="n">ch</span><span class="o">*</span><span class="p">,</span> <span class="k">struct</span> <span class="nc">room</span> <span class="n">room</span><span class="o">*</span><span class="p">){</span>
|
||||
<span class="kt">int</span> <span class="n">dam</span><span class="p">;</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">ROOM_FLAGGED</span><span class="p">(</span><span class="n">room</span><span class="p">,</span> <span class="n">ROOM_LAVA</span><span class="p">)){</span>
|
||||
<span class="n">dam</span> <span class="o">=</span> <span class="mi">100</span>
|
||||
|
|
@ -262,7 +262,7 @@ can be done like so:</p>
|
|||
5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">create_script</span>
|
||||
|
||||
<span class="n">mob_db</span> <span class="o">=</span> <span class="n">create_script</span><span class="p">(</span><span class="s2">"typeclasses.scripts.DefaultScript"</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"mobdb"</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">mob_db</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">vnums</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ Evennia’s default “mux-like” commands here.</p>
|
|||
<span class="n">account</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="s2">"Admins"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Account </span><span class="si">%s</span><span class="s2"> is now a GM."</span> <span class="o">%</span> <span class="n">account</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">"You are now a GM (changed by </span><span class="si">%s</span><span class="s2">)."</span> <span class="o">%</span> <span class="n">caller</span><span class="p">)</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">is_gm</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">account</span><span class="o">.</span><span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">is_gm</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># @ungm was entered - revoke GM status from someone</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">account</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"Admins"</span><span class="p">):</span>
|
||||
|
|
@ -443,7 +443,7 @@ rectangular.</p>
|
|||
11
|
||||
12</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">table_string</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">table_string</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">table_string</span><span class="p">)</span>
|
||||
|
||||
<span class="n">Attr</span> <span class="o">|</span> <span class="n">Value</span>
|
||||
<span class="o">~~~~~~+~~~~~~~</span>
|
||||
|
|
@ -585,7 +585,7 @@ directly into the <code class="docutils literal notranslate"><span class="pre">E
|
|||
above. Note however that the very first line of the <code class="docutils literal notranslate"><span class="pre">FORM</span></code> string is ignored, so start with a <code class="docutils literal notranslate"><span class="pre">\n</span></code>.</p>
|
||||
</div></blockquote>
|
||||
<p>We then map those to the cells of the form:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="n">form</span><span class="p">)</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">form</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">.--------------------------------------.</span>
|
||||
|
|
@ -667,7 +667,7 @@ it can be modified. For this we will modify our <code class="docutils literal no
|
|||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"called only once, when object is first created"</span>
|
||||
<span class="c1"># we will use this to stop account from changing sheet</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="c1"># we store these so we can build these on demand</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">chardata</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"str"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
<span class="s2">"con"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||||
|
|
@ -789,11 +789,11 @@ The easiest to force an existing Character to re-fire its <code class="docutils
|
|||
<span class="k">if</span> <span class="n">fieldname</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ALLOWED_FIELDNAMES</span><span class="p">:</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="s2">"Allowed field names: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ALLOWED_FIELDNAMES</span><span class="p">))</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="n">fieldname</span> <span class="ow">in</span> <span class="n">ALLOWED_ATTRS</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">value</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> must receive a number."</span> <span class="o">%</span> <span class="n">fieldname</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">CmdSheet</span><span class="p">(</span><span class="n">MuxCommand</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -836,7 +836,7 @@ The easiest to force an existing Character to re-fire its <code class="docutils
|
|||
<span class="k">return</span>
|
||||
|
||||
<span class="c1"># split input by whitespace, once</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</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">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</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">split</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">fieldname</span> <span class="o">=</span> <span class="n">fieldname</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="c1"># ignore case</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_validate_fieldnames</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">):</span>
|
||||
|
|
@ -966,17 +966,17 @@ do it on other players than themselves. They are also not stopped by any <code c
|
|||
<span class="k">if</span> <span class="nb">len</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="o"><</span> <span class="mi">2</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"You must specify both a fieldname and value."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</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">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</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">split</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">fieldname</span> <span class="o">=</span> <span class="n">fieldname</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_validate_fieldname</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">charname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lhs</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># no '=', so we must be aiming to look at a charsheet</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
|
||||
<span class="n">fieldname</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="n">charname</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">strip</span><span class="p">()</span>
|
||||
|
||||
<span class="n">character</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">charname</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">character</span> <span class="o">=</span> <span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">charname</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">character</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -984,13 +984,13 @@ do it on other players than themselves. They are also not stopped by any <code c
|
|||
<span class="k">if</span> <span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The character sheet is already locked."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> can no longer edit their character sheet."</span> <span class="o">%</span> <span class="n">character</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="s2">"unlock"</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="k">if</span> <span class="ow">not</span> <span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"The character sheet is already unlocked."</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">character</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">sheet_locked</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"</span><span class="si">%s</span><span class="s2"> can now edit their character sheet."</span> <span class="o">%</span> <span class="n">character</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">fieldname</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ objects).</p>
|
|||
<h2>Returning output<a class="headerlink" href="#returning-output" title="Permalink to this headline">¶</a></h2>
|
||||
<p>This is an example where we import and test one of Evennia’s utilities found in
|
||||
<code class="docutils literal notranslate"><span class="pre">src/utils/utils.py</span></code>, but also accessible through <code class="docutils literal notranslate"><span class="pre">ev.utils</span></code>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">ev</span> <span class="k">import</span> <span class="n">utils</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="mi">33333</span><span class="p">)</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">ev</span> <span class="kn">import</span> <span class="n">utils</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="mi">33333</span><span class="p">)</span>
|
||||
<span class="o"><<<</span> <span class="n">Done</span><span class="o">.</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
|
|
@ -81,7 +81,7 @@ objects).</p>
|
|||
without error. This is often the case in more complex pieces of code which has no single obvious
|
||||
return value. To see the output from the <code class="docutils literal notranslate"><span class="pre">time_format()</span></code> function we need to tell the system to
|
||||
echo it to us explicitly with <code class="docutils literal notranslate"><span class="pre">self.msg()</span></code>.</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">ev</span> <span class="k">import</span> <span class="n">utils</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">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="mi">33333</span><span class="p">)))</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">ev</span> <span class="kn">import</span> <span class="n">utils</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">utils</span><span class="o">.</span><span class="n">time_format</span><span class="p">(</span><span class="mi">33333</span><span class="p">)))</span>
|
||||
<span class="mi">09</span><span class="p">:</span><span class="mi">15</span>
|
||||
<span class="o"><<<</span> <span class="n">Done</span><span class="o">.</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ a standard calendar:</p>
|
|||
<span class="c1"># In Python a value of 0 means Jan 1 1970 (use negatives for earlier</span>
|
||||
<span class="c1"># start date). This will affect the returns from the utils.gametime</span>
|
||||
<span class="c1"># module.</span>
|
||||
<span class="n">TIME_GAME_EPOCH</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">TIME_GAME_EPOCH</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>By default, the game time runs twice as fast as the real time. You can set the time factor to be 1
|
||||
|
|
@ -186,12 +186,12 @@ to schedule. If the parameter isn’t given, it assumes the current time value
|
|||
|
||||
<span class="k">def</span> <span class="nf">start_sunrise_event</span><span class="p">():</span>
|
||||
<span class="sd">"""Schedule an sunrise event to happen every day at 6 AM."""</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="n">gametime</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">at_sunrise</span><span class="p">,</span> <span class="n">repeat</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">hour</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sec</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">script</span> <span class="o">=</span> <span class="n">gametime</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">at_sunrise</span><span class="p">,</span> <span class="n">repeat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">hour</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">sec</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"at sunrise"</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If you want to test this function, you can easily do something like:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">world</span> <span class="k">import</span> <span class="n">ingame_time</span><span class="p">;</span> <span class="n">ingame_time</span><span class="o">.</span><span class="n">start_sunrise_event</span><span class="p">()</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">world</span> <span class="kn">import</span> <span class="n">ingame_time</span><span class="p">;</span> <span class="n">ingame_time</span><span class="o">.</span><span class="n">start_sunrise_event</span><span class="p">()</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>The script will be created silently. The <code class="docutils literal notranslate"><span class="pre">at_sunrise</span></code> function will now be called every in-game day
|
||||
|
|
@ -345,9 +345,9 @@ on other MU*. Here’s an example of how we could write it (for the example, yo
|
|||
<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">"""Execute the time command."""</span>
|
||||
<span class="c1"># Get the absolute game time</span>
|
||||
<span class="n">year</span><span class="p">,</span> <span class="n">month</span><span class="p">,</span> <span class="n">day</span><span class="p">,</span> <span class="n">hour</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="n">sec</span> <span class="o">=</span> <span class="n">custom_gametime</span><span class="o">.</span><span class="n">custom_gametime</span><span class="p">(</span><span class="n">absolute</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"We are in year {year}, day {day}, month {month}."</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">It's {hour:02}:{min:02}:{sec:02}."</span>
|
||||
<span class="n">year</span><span class="p">,</span> <span class="n">month</span><span class="p">,</span> <span class="n">day</span><span class="p">,</span> <span class="n">hour</span><span class="p">,</span> <span class="nb">min</span><span class="p">,</span> <span class="n">sec</span> <span class="o">=</span> <span class="n">custom_gametime</span><span class="o">.</span><span class="n">custom_gametime</span><span class="p">(</span><span class="n">absolute</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"We are in year </span><span class="si">{year}</span><span class="s2">, day </span><span class="si">{day}</span><span class="s2">, month </span><span class="si">{month}</span><span class="s2">."</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">It's </span><span class="si">{hour:02}</span><span class="s2">:</span><span class="si">{min:02}</span><span class="s2">:</span><span class="si">{sec:02}</span><span class="s2">."</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="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="n">year</span><span class="p">,</span> <span class="n">month</span><span class="o">=</span><span class="n">month</span><span class="p">,</span> <span class="n">day</span><span class="o">=</span><span class="n">day</span><span class="p">,</span>
|
||||
<span class="n">hour</span><span class="o">=</span><span class="n">hour</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="nb">min</span><span class="p">,</span> <span class="n">sec</span><span class="o">=</span><span class="n">sec</span><span class="p">))</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ Evennia python environment with</p>
|
|||
</pre></div>
|
||||
</div>
|
||||
<p>To configure Grapevine, you’ll need to activate it in your settings file.</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">GRAPEVINE_ENABLED</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">GRAPEVINE_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Next, register an account at https://grapevine.haus. When you have logged in,
|
||||
|
|
|
|||
|
|
@ -483,7 +483,7 @@ that can be seen by this character (either our ‘anonymous’ character, or our
|
|||
|
||||
<span class="c1"># Browse through the help entries</span>
|
||||
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">entry</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">character</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">entry</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">character</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="c1"># Create the template for an entry</span>
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ your help will be dynamically updated for you as well.</p>
|
|||
<span class="c1"># [...]</span>
|
||||
|
||||
<span class="n">help_category</span> <span class="o">=</span> <span class="s2">"General"</span> <span class="c1"># default</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="bp">True</span> <span class="c1"># default</span>
|
||||
<span class="n">auto_help</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># default</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
</pre></div>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ downloadable from the link.</p>
|
|||
<div class="section" id="configuring-irc">
|
||||
<h2>Configuring IRC<a class="headerlink" href="#configuring-irc" title="Permalink to this headline">¶</a></h2>
|
||||
<p>To configure IRC, you’ll need to activate it in your settings file.</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">IRC_ENABLED</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">IRC_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Start Evennia and log in as a privileged user. You should now have a new command available:
|
||||
|
|
|
|||
|
|
@ -351,12 +351,12 @@ the following command:</p>
|
|||
<span class="n">xp_gain</span> <span class="o">=</span> <span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># display messages showing attack numbers</span>
|
||||
<span class="n">attack_message</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"{char1.name} rolls {roll1} + combat {char1.db.combat} "</span> \
|
||||
<span class="n">f</span><span class="s2">"= {char1.db.combat+roll1} | {char2.name} rolls {roll2} + combat "</span> \
|
||||
<span class="n">f</span><span class="s2">"{char2.db.combat} = {char2.db.combat+roll2}"</span>
|
||||
<span class="n">attack_message</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">char1</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> rolls </span><span class="si">{</span><span class="n">roll1</span><span class="si">}</span><span class="s2"> + combat </span><span class="si">{</span><span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="si">}</span><span class="s2"> "</span> \
|
||||
<span class="sa">f</span><span class="s2">"= </span><span class="si">{</span><span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll1</span><span class="si">}</span><span class="s2"> | </span><span class="si">{</span><span class="n">char2</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> rolls </span><span class="si">{</span><span class="n">roll2</span><span class="si">}</span><span class="s2"> + combat "</span> \
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">char2</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="si">}</span><span class="s2"> = </span><span class="si">{</span><span class="n">char2</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll2</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">char1</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">attack_message</span><span class="p">)</span>
|
||||
<span class="n">attack_summary</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"{char1.name} {char1.db.combat+roll1} "</span> \
|
||||
<span class="n">f</span><span class="s2">"vs {char2.name} {char2.db.combat+roll2}"</span>
|
||||
<span class="n">attack_summary</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">char1</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll1</span><span class="si">}</span><span class="s2"> "</span> \
|
||||
<span class="sa">f</span><span class="s2">"vs </span><span class="si">{</span><span class="n">char2</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">char2</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll2</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">char1</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">msg_contents</span><span class="p">(</span><span class="n">attack_summary</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">char1</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll1</span> <span class="o">></span> <span class="n">char2</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">combat</span><span class="o">+</span><span class="n">roll2</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ the Evennia installation, there you will find which languages are currently supp
|
|||
<h2>Changing server language<a class="headerlink" href="#changing-server-language" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Change language by adding the following to your <code class="docutils literal notranslate"><span class="pre">mygame/server/conf/settings.py</span></code> file:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">USE_I18N</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">USE_I18N</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="n">LANGUAGE_CODE</span> <span class="o">=</span> <span class="s1">'en'</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ arguments explicitly given in the lock definition will appear as extra arguments
|
|||
<span class="k">if</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="n">wanted_id</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">accessing_obj</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">wanted_id</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The above could for example be used in a lock function like this:</p>
|
||||
|
|
@ -545,11 +545,11 @@ strength above 50 however and you’ll pick it up no problem. Done! A very heavy
|
|||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">create_object</span>
|
||||
|
||||
<span class="c1"># create, then set the lock</span>
|
||||
<span class="n">box</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"box"</span><span class="p">)</span>
|
||||
<span class="n">box</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"box"</span><span class="p">)</span>
|
||||
<span class="n">box</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">"get:attr_gt(strength, 50)"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># or we can assign locks in one go right away</span>
|
||||
<span class="n">box</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"box"</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="s2">"get:attr_gt(strength, 50)"</span><span class="p">)</span>
|
||||
<span class="n">box</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"box"</span><span class="p">,</span> <span class="n">locks</span><span class="o">=</span><span class="s2">"get:attr_gt(strength, 50)"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># set the attributes</span>
|
||||
<span class="n">box</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 very big and heavy box."</span>
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ can simply add a new class to ‘mygamegame/typeclasses/characters.py’.</p>
|
|||
<span class="k">class</span> <span class="nc">ColorableCharacter</span><span class="p">(</span><span class="n">Character</span><span class="p">):</span>
|
||||
<span class="n">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># set a color config value</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Above we set a simple config value as an <a class="reference internal" href="Attributes.html"><span class="doc">Attribute</span></a>.</p>
|
||||
|
|
@ -107,7 +107,7 @@ object despite the actual typeclass name not having changed.</p>
|
|||
<p>Next we need to overload the <code class="docutils literal notranslate"><span class="pre">msg()</span></code> method. What we want is to check the configuration value before
|
||||
calling the main function. The original <code class="docutils literal notranslate"><span class="pre">msg</span></code> method call is seen in <code class="docutils literal notranslate"><span class="pre">evennia/objects/objects.py</span></code>
|
||||
and is called like this:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>As long as we define a method on our custom object with the same name and keep the same number of
|
||||
|
|
@ -124,10 +124,10 @@ arguments/keywords we will overload the original. Here’s how it could look:</p
|
|||
10
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="k">class</span> <span class="nc">ColorableCharacter</span><span class="p">(</span><span class="n">Character</span><span class="p">):</span>
|
||||
<span class="c1"># [...]</span>
|
||||
<span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
|
||||
<span class="n">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="s2">"our custom msg()"</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> <span class="c1"># this would mean it was not set</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># this would mean it was not set</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span><span class="p">:</span>
|
||||
<span class="c1"># remove the ANSI from the text</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">ansi</span><span class="o">.</span><span class="n">strip_ansi</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
|
|
@ -205,11 +205,11 @@ command template.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Usage: @setcolor on|off"</span><span class="p">)</span>
|
||||
<span class="k">return</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="s2">"on"</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">db</span><span class="o">.</span><span class="n">config_color</span> <span class="o">=</span> <span class="bp">True</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">config_color</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="c1"># send a message with a tiny bit of formatting, just for fun</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Color was turned |won|W."</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">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">config_color</span> <span class="o">=</span> <span class="bp">False</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">config_color</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Color was turned off."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ default_cmdsets.py file:</p>
|
|||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</span><span class="p">:</span>
|
||||
<span class="n">mass</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">get_mass</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">item</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">mass</span><span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|wYou are carrying:|n</span><span class="se">\n</span><span class="s2">{table}"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|wYou are carrying:|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="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ executed.</p>
|
|||
<li><p><code class="docutils literal notranslate"><span class="pre">Session.msg</span></code></p></li>
|
||||
</ul>
|
||||
<p>The call sign of the <code class="docutils literal notranslate"><span class="pre">msg</span></code> method looks like this:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>For our purposes, what is important to know is that with the exception of <code class="docutils literal notranslate"><span class="pre">from_obj</span></code>, <code class="docutils literal notranslate"><span class="pre">session</span></code> and
|
||||
|
|
@ -282,7 +282,7 @@ plugin_handler function to recognize the new function:</p>
|
|||
9
|
||||
10
|
||||
11</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="kd">var</span> <span class="nx">onCustomFunc</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">cmdname</span><span class="p">,</span> <span class="nx">args</span><span class="p">,</span> <span class="nx">kwargs</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">for</span><span class="p">(</span> <span class="kd">let</span> <span class="nx">n</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="nx">n</span> <span class="o"><</span> <span class="nx">ordered_plugins</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">n</span><span class="o">++</span> <span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">for</span><span class="p">(</span> <span class="kd">let</span> <span class="nx">n</span><span class="o">=</span><span class="mf">0</span><span class="p">;</span> <span class="nx">n</span> <span class="o"><</span> <span class="nx">ordered_plugins</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">n</span><span class="o">++</span> <span class="p">)</span> <span class="p">{</span>
|
||||
<span class="kd">let</span> <span class="nx">plugin</span> <span class="o">=</span> <span class="nx">ordered_plugins</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span>
|
||||
<span class="k">if</span><span class="p">(</span> <span class="s1">'onCustomFunc'</span> <span class="k">in</span> <span class="nx">plugin</span> <span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">if</span><span class="p">(</span> <span class="nx">plugin</span><span class="p">.</span><span class="nx">onCustomFunc</span><span class="p">(</span><span class="nx">args</span><span class="p">,</span> <span class="nx">kwargs</span><span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ is in <code class="docutils literal notranslate"><span class="pre">evennia.scrip
|
|||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">MONITOR_HANDLER</span>
|
||||
|
||||
<span class="n">MONITOR_HANDLER</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span>
|
||||
<span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<ul class="simple">
|
||||
|
|
@ -105,7 +105,7 @@ saving it.</p></li>
|
|||
20
|
||||
21</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">MONITOR_HANDLER</span> <span class="k">as</span> <span class="n">monitorhandler</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_monitor_callback</span><span class="p">(</span><span class="n">fieldname</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">_monitor_callback</span><span class="p">(</span><span class="n">fieldname</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="c1"># reporting callback that works both</span>
|
||||
<span class="c1"># for db-fields and Attributes</span>
|
||||
<span class="k">if</span> <span class="n">fieldname</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"db_"</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ circumstances. Let’s create it now.</p>
|
|||
<span class="n">rtext</span> <span class="o">=</span> <span class="s2">"You pay </span><span class="si">%i</span><span class="s2"> gold and purchase </span><span class="si">%s</span><span class="s2">!"</span> <span class="o">%</span> \
|
||||
<span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ware</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">gold</span> <span class="o">-=</span> <span class="n">value</span>
|
||||
<span class="n">ware</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">ware</span><span class="o">.</span><span class="n">move_to</span><span class="p">(</span><span class="n">caller</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">else</span><span class="p">:</span>
|
||||
<span class="n">rtext</span> <span class="o">=</span> <span class="s2">"You cannot afford </span><span class="si">%i</span><span class="s2"> gold for </span><span class="si">%s</span><span class="s2">!"</span> <span class="o">%</span> \
|
||||
<span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">ware</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
|
|
@ -415,7 +415,7 @@ storeroom at once.</p>
|
|||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># we could also use add(ShopCmdSet, permanent=True)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add_default</span><span class="p">(</span><span class="n">ShopCmdSet</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">storeroom</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">storeroom</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="c1"># command to build a complete shop (the Command base class</span>
|
||||
<span class="c1"># should already have been imported earlier in this file)</span>
|
||||
|
|
@ -446,10 +446,10 @@ storeroom at once.</p>
|
|||
<span class="n">shopname</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">strip</span><span class="p">()</span>
|
||||
<span class="n">shop</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">NPCShop</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="n">shopname</span><span class="p">,</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">storeroom</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">DefaultRoom</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="s2">"</span><span class="si">%s</span><span class="s2">-storage"</span> <span class="o">%</span> <span class="n">shopname</span><span class="p">,</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">location</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">shop</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">storeroom</span> <span class="o">=</span> <span class="n">storeroom</span>
|
||||
<span class="c1"># create a door between the two</span>
|
||||
<span class="n">shop_exit</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">DefaultExit</span><span class="p">,</span>
|
||||
|
|
|
|||
|
|
@ -152,13 +152,13 @@ documentation</a> on the subject. Here is a
|
|||
|
||||
<span class="k">class</span> <span class="nc">MyDataStore</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
|
||||
<span class="s2">"A simple model for storing some data"</span>
|
||||
<span class="n">db_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_category</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">db_category</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">db_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># we need this one if we want to be</span>
|
||||
<span class="c1"># able to store this in an Evennia Attribute!</span>
|
||||
<span class="n">db_date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date created'</span><span class="p">,</span> <span class="n">editable</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">auto_now_add</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date created'</span><span class="p">,</span> <span class="n">editable</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>We create four fields: two character fields of limited length and one text field which has no
|
||||
|
|
@ -239,13 +239,13 @@ instead of the automatic wrapper and allows you to fully customize access as nee
|
|||
Django model parent:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">shield</span> <span class="o">=</span> <span class="n">MyDataStore</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">db_key</span><span class="o">=</span><span class="s2">"SmallShield"</span><span class="p">)</span>
|
||||
<span class="n">shield</span><span class="o">.</span><span class="n">cracked</span> <span class="o">=</span> <span class="bp">True</span> <span class="c1"># where cracked is not a database field</span>
|
||||
<span class="n">shield</span><span class="o">.</span><span class="n">cracked</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># where cracked is not a database field</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>And then later:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">shield</span> <span class="o">=</span> <span class="n">MyDataStore</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">db_key</span><span class="o">=</span><span class="s2">"SmallShield"</span><span class="p">)</span>
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">shield</span><span class="o">.</span><span class="n">cracked</span><span class="p">)</span> <span class="c1"># error!</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">shield</span><span class="o">.</span><span class="n">cracked</span><span class="p">)</span> <span class="c1"># error!</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The outcome of that last print statement is <em>undefined</em>! It could <em>maybe</em> randomly work but most
|
||||
|
|
@ -283,11 +283,11 @@ inherit from <code class="docutils literal notranslate"><span class="pre">evenni
|
|||
<span class="k">class</span> <span class="nc">MyDataStore</span><span class="p">(</span><span class="n">SharedMemoryModel</span><span class="p">):</span>
|
||||
<span class="c1"># the rest is the same as before, but db_* is important; these will</span>
|
||||
<span class="c1"># later be settable as .key, .category, .text ...</span>
|
||||
<span class="n">db_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_category</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date created'</span><span class="p">,</span> <span class="n">editable</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">auto_now_add</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">db_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">db_category</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">db_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">db_date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date created'</span><span class="p">,</span> <span class="n">editable</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">auto_now_add</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">db_index</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -170,9 +170,9 @@ basically the unchanged strings you enter to the <code class="docutils literal n
|
|||
<p>If you need to access the tuple for some reason, here’s how:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">tuple</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nickname"</span><span class="p">,</span> <span class="n">return_tuple</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">tuple</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nickname"</span><span class="p">,</span> <span class="n">return_tuple</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># or, alternatively</span>
|
||||
<span class="nb">tuple</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nickname"</span><span class="p">,</span> <span class="n">return_obj</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="nb">tuple</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">nicks</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"nickname"</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="o">.</span><span class="n">value</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ access the command arguments in <code class="docutils literal notranslate"><span
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"test"</span>
|
||||
|
||||
<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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You have entered: {self.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="sa">f</span><span class="s2">"You have entered: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If you add this command and test it, you will receive exactly what you have entered without any
|
||||
|
|
@ -183,7 +183,7 @@ force Python to display the command arguments as a debug string using a little s
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"test"</span>
|
||||
|
||||
<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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You have entered: {self.args!r}."</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">"You have entered: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">!r}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The only line we have changed is the last one, and we have added <code class="docutils literal notranslate"><span class="pre">!r</span></code> between our braces to tell
|
||||
|
|
@ -281,7 +281,7 @@ separator, we call <code class="docutils literal notranslate"><span class="pre">
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">args</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">lstrip</span><span class="p">()</span>
|
||||
|
||||
<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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You have entered: {self.args!r}."</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">"You have entered: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">!r}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<blockquote>
|
||||
|
|
@ -391,12 +391,12 @@ won’t work as is, I warn you:</p>
|
|||
<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="c1"># Roll a random die</span>
|
||||
<span class="n">figure</span> <span class="o">=</span> <span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="c1"># return a pseudo-random number between 1 and 6, including both</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You roll a die. It lands on the number {figure}."</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">"You roll a die. It lands on the number </span><span class="si">{</span><span class="n">figure</span><span class="si">}</span><span class="s2">."</span><span class="p">)</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">figure</span><span class="p">:</span> <span class="c1"># THAT WILL BREAK!</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You played {self.args}, you have won!"</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">, you have won!"</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="n">f</span><span class="s2">"You played {self.args}, you have lost."</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">, you have lost."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>If you try this code, Python will complain that you try to compare a number with a string: <code class="docutils literal notranslate"><span class="pre">figure</span></code>
|
||||
|
|
@ -486,18 +486,18 @@ converting:</p>
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">entered</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</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">f</span><span class="s2">"{args} is not a valid number."</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">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> is not a valid number."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
|
||||
<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="c1"># Roll a random die</span>
|
||||
<span class="n">figure</span> <span class="o">=</span> <span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="c1"># return a pseudo-random number between 1 and 6, including both</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You roll a die. It lands on the number {figure}."</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">"You roll a die. It lands on the number </span><span class="si">{</span><span class="n">figure</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">entered</span> <span class="o">==</span> <span class="n">figure</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">f</span><span class="s2">"You played {self.entered}, you have won!"</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">entered</span><span class="si">}</span><span class="s2">, you have won!"</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="n">f</span><span class="s2">"You played {self.entered}, you have lost."</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">entered</span><span class="si">}</span><span class="s2">, you have lost."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Before enjoying the result, let’s examine the <code class="docutils literal notranslate"><span class="pre">parse</span></code> method a little more: what it does is try to
|
||||
|
|
@ -591,18 +591,18 @@ by grouping:</p>
|
|||
<span class="c1"># self.entered is not between 1 and 6 (including both)</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</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">f</span><span class="s2">"{args} is not a valid number."</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">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> is not a valid number."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
|
||||
<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="c1"># Roll a random die</span>
|
||||
<span class="n">figure</span> <span class="o">=</span> <span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="c1"># return a pseudo-random number between 1 and 6, including both</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You roll a die. It lands on the number {figure}."</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">"You roll a die. It lands on the number </span><span class="si">{</span><span class="n">figure</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">entered</span> <span class="o">==</span> <span class="n">figure</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">f</span><span class="s2">"You played {self.entered}, you have won!"</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">entered</span><span class="si">}</span><span class="s2">, you have won!"</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="n">f</span><span class="s2">"You played {self.entered}, you have lost."</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">entered</span><span class="si">}</span><span class="s2">, you have lost."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Using grouped exceptions like that makes our code easier to read, but if you feel more comfortable
|
||||
|
|
@ -792,7 +792,7 @@ the number of dice to roll.</p>
|
|||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</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">f</span><span class="s2">"{number} is not a valid number of dice."</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">"</span><span class="si">{</span><span class="n">number</span><span class="si">}</span><span class="s2"> is not a valid number of dice."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
|
||||
<span class="c1"># Convert the entered guess (second argument)</span>
|
||||
|
|
@ -801,7 +801,7 @@ the number of dice to roll.</p>
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="mi">1</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">guess</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">number</span> <span class="o">*</span> <span class="mi">6</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</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">f</span><span class="s2">"{self.guess} is not a valid guess."</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">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">guess</span><span class="si">}</span><span class="s2"> is not a valid guess."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -810,12 +810,12 @@ the number of dice to roll.</p>
|
|||
<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="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">):</span>
|
||||
<span class="n">figure</span> <span class="o">+=</span> <span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">6</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">f</span><span class="s2">"You roll {self.number} dice and obtain the sum {figure}."</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">"You roll </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="si">}</span><span class="s2"> dice and obtain the sum </span><span class="si">{</span><span class="n">figure</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">guess</span> <span class="o">==</span> <span class="n">figure</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">f</span><span class="s2">"You played {self.guess}, you have won!"</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">guess</span><span class="si">}</span><span class="s2">, you have won!"</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="n">f</span><span class="s2">"You played {self.guess}, you have lost."</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">"You played </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">guess</span><span class="si">}</span><span class="s2">, you have lost."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The beginning of the <code class="docutils literal notranslate"><span class="pre">parse()</span></code> method is what interests us most:</p>
|
||||
|
|
@ -886,7 +886,7 @@ the player could enter the “tel” command like this:</p>
|
|||
<span class="n">obj</span><span class="p">,</span> <span class="n">destination</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"="</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="n">args</span>
|
||||
<span class="n">destination</span> <span class="o">=</span> <span class="bp">None</span>
|
||||
<span class="n">destination</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>This code would place everything the user entered in <code class="docutils literal notranslate"><span class="pre">obj</span></code> if she didn’t specify any equal sign.
|
||||
|
|
@ -953,7 +953,7 @@ return <code class="docutils literal notranslate"><span class="pre">None</span><
|
|||
<span class="n">name</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">lstrip</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># A proper error message has already been sent to the caller</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
</pre></div>
|
||||
|
|
@ -978,10 +978,10 @@ list of matches and handle this list yourself:</p>
|
|||
10</pre></div></td><td class="code"><div class="highlight"><pre><span></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="n">name</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">lstrip</span><span class="p">()</span>
|
||||
|
||||
<span class="n">objs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quiet</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">objs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">name</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="ow">not</span> <span class="n">objs</span><span class="p">:</span>
|
||||
<span class="c1"># This is an empty list, so no match</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"No {name!r} was found."</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">"No </span><span class="si">{</span><span class="n">name</span><span class="si">!r}</span><span class="s2"> was found."</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">InterruptCommand</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="n">objs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># Take the first match even if there are several</span>
|
||||
|
|
@ -1001,7 +1001,7 @@ the caller is. If you want to perform a global search (search in the entire dat
|
|||
2
|
||||
3</pre></div></td><td class="code"><div class="highlight"><pre><span></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="n">name</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">lstrip</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">global_search</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ structure should look:</p>
|
|||
</pre></div>
|
||||
</div>
|
||||
<p>For now, only add one line to <code class="docutils literal notranslate"><span class="pre">test.py</span></code>:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="k">print</span><span class="p">(</span><span class="s2">"Hello World!"</span><span class="p">)</span>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Hello World!"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Don’t forget to save the file. A file with the ending <code class="docutils literal notranslate"><span class="pre">.py</span></code> is referred to as a Python <em>module</em>. To
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@ search function. Once you find it, you’ll find that the class starts like this
|
|||
<span class="s2">"call:false()"</span><span class="p">]))</span> <span class="c1"># no commands can be called on character from</span>
|
||||
<span class="n">outside</span>
|
||||
<span class="c1"># add the default cmdset</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add_default</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">CMDSET_CHARACTER</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add_default</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">CMDSET_CHARACTER</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_after_move</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_location</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -330,7 +330,7 @@ search function. Once you find it, you’ll find that the class starts like this
|
|||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"view"</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="bp">self</span><span class="o">.</span><span class="n">at_look</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_pre_puppet</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="n">session</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">at_pre_puppet</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="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Return the character from storage in None location in `at_post_unpuppet`.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -460,7 +460,7 @@ class and modify it as such:</p>
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">at_before_say</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="s2">"Called before say, allows for tweaking message"</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"{message} ..."</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2"> ..."</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>So we add our own version of <code class="docutils literal notranslate"><span class="pre">at_before_say</span></code>, duplicating the <code class="docutils literal notranslate"><span class="pre">def</span></code> line from the parent but putting
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ Here’s an example:</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"weather_script"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"Gives random weather messages."</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">interval</span> <span class="o">=</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">5</span> <span class="c1"># every 5 minutes</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="bp">True</span> <span class="c1"># will survive reload</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span> <span class="c1"># will survive reload</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_repeat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"called every self.interval seconds."</span>
|
||||
|
|
@ -213,7 +213,7 @@ of the weather script that runs every 10 minutes instead (and also not survive
|
|||
a server reload):</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">create_script</span><span class="p">(</span><span class="s1">'typeclasses.weather.Weather'</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="n">myroom</span><span class="p">,</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">10</span><span class="o">*</span><span class="mi">60</span><span class="p">)</span>
|
||||
<span class="n">persistent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">10</span><span class="o">*</span><span class="mi">60</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>From in-game you can use the <code class="docutils literal notranslate"><span class="pre">@script</span></code> command to launch the Script on things:</p>
|
||||
|
|
@ -314,7 +314,7 @@ it on:</p>
|
|||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="c1"># adding a global script</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">create_script</span>
|
||||
<span class="n">create_script</span><span class="p">(</span><span class="s2">"typeclasses.globals.MyGlobalEconomy"</span><span class="p">,</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="s2">"economy"</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">key</span><span class="o">=</span><span class="s2">"economy"</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">obj</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Henceforth you can then get it back by searching for its key or other identifier with
|
||||
|
|
@ -374,11 +374,11 @@ named <code class="docutils literal notranslate"><span class="pre">GLOBAL_SCRIPT
|
|||
<span class="s2">"repeats"</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
|
||||
<span class="s2">"interval"</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span>
|
||||
<span class="s2">"desc"</span><span class="p">:</span> <span class="s2">"Weather script"</span><span class="p">,</span>
|
||||
<span class="s2">"persistent"</span><span class="p">:</span> <span class="bp">True</span>
|
||||
<span class="s2">"persistent"</span><span class="p">:</span> <span class="kc">True</span>
|
||||
<span class="p">},</span>
|
||||
<span class="s2">"storagescript"</span><span class="p">:</span> <span class="p">{</span>
|
||||
<span class="s2">"typeclass"</span><span class="p">:</span> <span class="s2">"typeclasses.scripts.Storage"</span><span class="p">,</span>
|
||||
<span class="s2">"persistent"</span><span class="p">:</span> <span class="bp">True</span>
|
||||
<span class="s2">"persistent"</span><span class="p">:</span> <span class="kc">True</span>
|
||||
<span class="p">},</span>
|
||||
<span class="p">{</span>
|
||||
<span class="s2">"another_script"</span><span class="p">:</span> <span class="p">{</span>
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ Sessions hold a reference to their respective Sessionhandler (the property is ca
|
|||
on building new protocols.</p>
|
||||
<p>To get all Sessions in the game (i.e. all currently connected clients), you access the server-side
|
||||
Session handler, which you get by</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSION_HANDLER</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSION_HANDLER</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<blockquote>
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ new object (whereas an inlinefunc is called when a text is returned to the user)
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">args</span> <span class="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Must have one argument, the text to color red!"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"|r{}|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="s2">"|r</span><span class="si">{}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<blockquote>
|
||||
|
|
|
|||
|
|
@ -581,7 +581,7 @@ again</p>
|
|||
<span class="s2">"looms a mighty castle. To the south the glow of "</span> \
|
||||
<span class="s2">"a campfire can be seen. To the east lie a wall of "</span> \
|
||||
<span class="s2">"mountains and to the west the dull roar of the open sea."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="c1"># EvTable allows formatting individual columns and cells. We use that here</span>
|
||||
<span class="c1"># to set a maximum width for our description, but letting the map fill</span>
|
||||
<span class="c1"># whatever space it needs.</span>
|
||||
|
|
@ -593,7 +593,7 @@ again</p>
|
|||
<span class="n">north</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">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span>
|
||||
<span class="s2">"An impressive castle surrounds you. There might be "</span> \
|
||||
<span class="s2">"a princess in one of these towers."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">north</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">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -602,7 +602,7 @@ again</p>
|
|||
<span class="n">east</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">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span>
|
||||
<span class="s2">"A cosy cottage nestled among mountains stretching "</span> \
|
||||
<span class="s2">"east as far as the eye can see."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">east</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">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -611,7 +611,7 @@ again</p>
|
|||
<span class="n">south</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">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">7</span><span class="p">),</span>
|
||||
<span class="s2">"Surrounding a clearing are a number of tribal tents "</span> \
|
||||
<span class="s2">"and at their centre a roaring fire."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">south</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">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># [...]</span>
|
||||
|
|
@ -620,7 +620,7 @@ again</p>
|
|||
<span class="n">west</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">evtable</span><span class="o">.</span><span class="n">EvTable</span><span class="p">(</span><span class="n">map_module</span><span class="o">.</span><span class="n">return_minimap</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">5</span><span class="p">),</span>
|
||||
<span class="s2">"The dark forest halts to a sandy beach. The sound of "</span> \
|
||||
<span class="s2">"crashing waves calms the soul."</span><span class="p">,</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
|
||||
<span class="n">border</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">west</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">reformat_column</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">70</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ ticked at any number of different intervals.</p>
|
|||
<p>The full definition of the <code class="docutils literal notranslate"><span class="pre">tickerhandler.add</span></code> method is</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">tickerhandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span>
|
||||
<span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="n">idstring</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> <span class="n">persistent</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Here <code class="docutils literal notranslate"><span class="pre">*args</span></code> and <code class="docutils literal notranslate"><span class="pre">**kwargs</span></code> will be passed to <code class="docutils literal notranslate"><span class="pre">callback</span></code> every <code class="docutils literal notranslate"><span class="pre">interval</span></code> seconds. If <code class="docutils literal notranslate"><span class="pre">persistent</span></code>
|
||||
|
|
@ -109,8 +109,8 @@ is <code class="docutils literal notranslate"><span class="pre">False</span></co
|
|||
<p>Since the arguments are not included in the ticker’s identification, the <code class="docutils literal notranslate"><span class="pre">idstring</span></code> must be used to
|
||||
have a specific callback triggered multiple times on the same interval but with different arguments:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">tickerhandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="s2">"ticker1"</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">tickerhandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="s2">"ticker2"</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">tickerhandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="s2">"ticker1"</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">tickerhandler</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="n">obj</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="s2">"ticker2"</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<blockquote>
|
||||
|
|
|
|||
|
|
@ -316,8 +316,8 @@ Whereas the TickerHandler is easy to use, a Script offers more power in this cas
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"combat_handler_</span><span class="si">%i</span><span class="s2">"</span> <span class="o">%</span> <span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"handles combat"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">interval</span> <span class="o">=</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">2</span> <span class="c1"># two minute timeout</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="c1"># store all combatants</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">characters</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
|
@ -386,8 +386,8 @@ Whereas the TickerHandler is easy to use, a Script offers more power in this cas
|
|||
<span class="n">dbref</span> <span class="o">=</span> <span class="n">character</span><span class="o">.</span><span class="n">id</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">characters</span><span class="p">[</span><span class="n">dbref</span><span class="p">]</span> <span class="o">=</span> <span class="n">character</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">action_count</span><span class="p">[</span><span class="n">dbref</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">turn_actions</span><span class="p">[</span><span class="n">dbref</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="bp">None</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="bp">None</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">turn_actions</span><span class="p">[</span><span class="n">dbref</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="kc">None</span><span class="p">)]</span>
|
||||
<span class="c1"># set up back-reference</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_init_character</span><span class="p">(</span><span class="n">character</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -422,9 +422,9 @@ Whereas the TickerHandler is easy to use, a Script offers more power in this cas
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">turn_actions</span><span class="p">[</span><span class="n">dbref</span><span class="p">][</span><span class="n">count</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="n">target</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># report if we already used too many actions</span>
|
||||
<span class="k">return</span> <span class="bp">False</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">action_count</span><span class="p">[</span><span class="n">dbref</span><span class="p">]</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="bp">True</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">check_end_turn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -435,7 +435,7 @@ Whereas the TickerHandler is easy to use, a Script offers more power in this cas
|
|||
<span class="sd"> `self.at_repeat()` while resetting all timers).</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">all</span><span class="p">(</span><span class="n">count</span> <span class="o">></span> <span class="mi">1</span> <span class="k">for</span> <span class="n">count</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">action_count</span><span class="o">.</span><span class="n">values</span><span class="p">()):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">normal_turn_end</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">normal_turn_end</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">force_repeat</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">end_turn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -455,8 +455,8 @@ Whereas the TickerHandler is easy to use, a Script offers more power in this cas
|
|||
<span class="k">for</span> <span class="n">character</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">characters</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">characters</span><span class="p">[</span><span class="n">character</span><span class="o">.</span><span class="n">id</span><span class="p">]</span> <span class="o">=</span> <span class="n">character</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">action_count</span><span class="p">[</span><span class="n">character</span><span class="o">.</span><span class="n">id</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">turn_actions</span><span class="p">[</span><span class="n">character</span><span class="o">.</span><span class="n">id</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="bp">None</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="bp">None</span><span class="p">)]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">turn_actions</span><span class="p">[</span><span class="n">character</span><span class="o">.</span><span class="n">id</span><span class="p">]</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</span><span class="p">,</span> <span class="kc">None</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"defend"</span><span class="p">,</span> <span class="n">character</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_all</span><span class="p">(</span><span class="s2">"Next turn begins ..."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -578,7 +578,7 @@ do.</p>
|
|||
<span class="n">key</span> <span class="o">=</span> <span class="s2">"combat_cmdset"</span>
|
||||
<span class="n">mergetype</span> <span class="o">=</span> <span class="s2">"Replace"</span>
|
||||
<span class="n">priority</span> <span class="o">=</span> <span class="mi">10</span>
|
||||
<span class="n">no_exits</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">no_exits</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_cmdset_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">CmdHit</span><span class="p">())</span>
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@ folder and name it <code class="docutils literal notranslate"><span class="pre">
|
|||
<span class="sd"> Can be expanded upon later.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">is_aggressive</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="n">f</span><span class="s2">"say Graaah, die {character}!"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="sa">f</span><span class="s2">"say Graaah, die </span><span class="si">{</span><span class="n">character</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">execute_cmd</span><span class="p">(</span><span class="n">f</span><span class="s2">"say Greetings, {character}!"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="sa">f</span><span class="s2">"say Greetings, </span><span class="si">{</span><span class="n">character</span><span class="si">}</span><span class="s2">!"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>We will define our custom <code class="docutils literal notranslate"><span class="pre">Character</span></code> typeclass below. As for the new <code class="docutils literal notranslate"><span class="pre">at_char_entered</span></code> method we’ve
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ NPCs <code class="docutils literal notranslate"><span class="pre">.msg</span></c
|
|||
|
||||
<span class="c1"># [at_heard_say() goes here]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_obj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="s2">"Custom msg() method reacting to say."</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">from_obj</span> <span class="o">!=</span> <span class="bp">self</span><span class="p">:</span>
|
||||
|
|
@ -137,12 +137,12 @@ NPCs <code class="docutils literal notranslate"><span class="pre">.msg</span></c
|
|||
<span class="c1"># if text comes from a say, `text` is `('say_text', {'type': 'say'})`</span>
|
||||
<span class="n">say_text</span><span class="p">,</span> <span class="n">is_say</span> <span class="o">=</span> <span class="n">text</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">text</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'say'</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">is_say</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">is_say</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">if</span> <span class="n">is_say</span><span class="p">:</span>
|
||||
<span class="c1"># First get the response (if any)</span>
|
||||
<span class="n">response</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">at_heard_say</span><span class="p">(</span><span class="n">say_text</span><span class="p">,</span> <span class="n">from_obj</span><span class="p">)</span>
|
||||
<span class="c1"># If there is a response</span>
|
||||
<span class="k">if</span> <span class="n">response</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">response</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># speak ourselves, using the return</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="s2">"say </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="n">response</span><span class="p">)</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -155,8 +155,8 @@ typeclasses. In a command, the <code class="docutils literal notranslate"><span
|
|||
<span class="c1"># caller know. We'll just return, since we're done</span>
|
||||
<span class="k">return</span>
|
||||
<span class="c1"># we found a target! we'll do stuff to them.</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"{self.caller} pokes you."</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You poke {target}."</span><span class="p">)</span>
|
||||
<span class="n">target</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="si">}</span><span class="s2"> pokes you."</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You poke </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>By default, the search method of a Character will attempt to find a unique object match for the
|
||||
|
|
@ -202,7 +202,7 @@ Command to do this:</p>
|
|||
<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">"""Executes 'hangouts' command"""</span>
|
||||
<span class="n">hangouts</span> <span class="o">=</span> <span class="n">search_tag</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"hangout"</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="s2">"location tags"</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"Hangouts available: {', '.join(str(ob) for ob in hangouts)}"</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Hangouts available: </span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ob</span><span class="p">)</span> <span class="k">for</span> <span class="n">ob</span> <span class="ow">in</span> <span class="n">hangouts</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>This uses the <code class="docutils literal notranslate"><span class="pre">search_tag</span></code> function to find all objects previously tagged with <a class="reference internal" href="Tags.html"><span class="doc">Tags</span></a>
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ regularly, from player deaths to how much currency is in the economy etc.</p>
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"tweet_stats"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s2">"Tweets interesting stats about the game"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">interval</span> <span class="o">=</span> <span class="mi">86400</span> <span class="c1"># 1 day timeout</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_repeat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -162,16 +162,16 @@ regularly, from player deaths to how much currency is in the economy etc.</p>
|
|||
<span class="n">nobjs</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">count</span><span class="p">()</span>
|
||||
<span class="n">base_char_typeclass</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">BASE_CHARACTER_TYPECLASS</span>
|
||||
<span class="n">nchars</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">filter</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="n">base_char_typeclass</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nrooms</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">filter</span><span class="p">(</span><span class="n">db_location__isnull</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="n">bas</span>
|
||||
<span class="n">nrooms</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">filter</span><span class="p">(</span><span class="n">db_location__isnull</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">db_typeclass_path</span><span class="o">=</span><span class="n">bas</span>
|
||||
<span class="n">e_char_typeclass</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nexits</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">filter</span><span class="p">(</span><span class="n">db_location__isnull</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">db_destination__isnull</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nexits</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">filter</span><span class="p">(</span><span class="n">db_location__isnull</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">db_destination__isnull</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
|
||||
<span class="n">nother</span> <span class="o">=</span> <span class="n">nobjs</span> <span class="o">-</span> <span class="n">nchars</span> <span class="o">-</span> <span class="n">nrooms</span> <span class="o">-</span> <span class="n">nexits</span>
|
||||
<span class="n">tweet</span> <span class="o">=</span> <span class="s2">"Chars: </span><span class="si">%s</span><span class="s2">, Rooms: </span><span class="si">%s</span><span class="s2">, Objects: </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span><span class="p">(</span><span class="n">nchars</span><span class="p">,</span> <span class="n">nrooms</span><span class="p">,</span> <span class="n">nother</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">tweet_output</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> <span class="c1">##Number of prototypes and 3 random keys - taken from @spawn</span>
|
||||
<span class="n">command</span>
|
||||
<span class="n">prototypes</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="n">return_prototypes</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">prototypes</span> <span class="o">=</span> <span class="n">spawner</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="n">return_prototypes</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
|
||||
<span class="n">keys</span> <span class="o">=</span> <span class="n">prototypes</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
|
||||
<span class="n">nprots</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">prototypes</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -400,17 +400,17 @@ and leave it.</p>
|
|||
|
||||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add_default</span><span class="p">(</span><span class="n">CmdSetTrain</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="c1"># The direction our train is driving (1 for forward, -1 for backwards)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">direction</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="c1"># The rooms our train will pass through (change to fit your game)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">rooms</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"#2"</span><span class="p">,</span> <span class="s2">"#47"</span><span class="p">,</span> <span class="s2">"#50"</span><span class="p">,</span> <span class="s2">"#53"</span><span class="p">,</span> <span class="s2">"#56"</span><span class="p">,</span> <span class="s2">"#59"</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">start_driving</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">stop_driving</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">goto_next_room</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">currentroom</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">dbref</span>
|
||||
|
|
@ -498,9 +498,9 @@ care of the driving.</p>
|
|||
<span class="k">def</span> <span class="nf">at_script_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"trainstopped"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">interval</span> <span class="o">=</span> <span class="mi">30</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">repeats</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">start_delay</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">at_repeat</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">start_driving</span><span class="p">()</span>
|
||||
|
|
@ -514,7 +514,7 @@ care of the driving.</p>
|
|||
<span class="k">def</span> <span class="nf">at_script_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"traindriving"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">interval</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">persistent</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">is_valid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">driving</span>
|
||||
|
|
|
|||
|
|
@ -297,7 +297,7 @@ It’s cleaner to put it on a room, so it’s only available when players are in
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">at_object_creation</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"this is called only at first creation"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">ChargenCmdset</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cmdset</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">ChargenCmdset</span><span class="p">,</span> <span class="n">permanent</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Note how new rooms created with this typeclass will always start with <code class="docutils literal notranslate"><span class="pre">ChargenCmdset</span></code> on themselves.
|
||||
|
|
@ -736,7 +736,7 @@ principle re-work our old <code class="docutils literal notranslate"><span class
|
|||
<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="s2">"We need to do some parsing here"</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
|
||||
<span class="n">propname</span><span class="p">,</span> <span class="n">propval</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
|
||||
<span class="n">propname</span><span class="p">,</span> <span class="n">propval</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="s2">"="</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
||||
<span class="n">args</span><span class="p">,</span> <span class="n">propval</span> <span class="o">=</span> <span class="p">[</span><span class="n">part</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"="</span><span class="p">,</span> <span class="mi">1</span><span class="p">)]</span>
|
||||
<span class="k">if</span> <span class="s2">"/"</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
|
||||
|
|
@ -745,7 +745,7 @@ principle re-work our old <code class="docutils literal notranslate"><span class
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">args</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">propname</span> <span class="o">=</span> <span class="n">propname</span>
|
||||
<span class="c1"># a propval without a propname is meaningless</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">propval</span> <span class="o">=</span> <span class="n">propval</span> <span class="k">if</span> <span class="n">propname</span> <span class="k">else</span> <span class="bp">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">propval</span> <span class="o">=</span> <span class="n">propval</span> <span class="k">if</span> <span class="n">propname</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<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="s2">"do the editing"</span>
|
||||
|
|
@ -764,22 +764,22 @@ principle re-work our old <code class="docutils literal notranslate"><span class
|
|||
<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">propname</span><span class="p">:</span>
|
||||
<span class="c1"># this means we just list the values</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"Properties of {npc.key}:"</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Properties of </span><span class="si">{</span><span class="n">npc</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">:"</span>
|
||||
<span class="k">for</span> <span class="n">propname</span> <span class="ow">in</span> <span class="n">allowed_propnames</span><span class="p">:</span>
|
||||
<span class="n">output</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> {propname} = {npc.attributes.get(propname, default='N/A')}"</span>
|
||||
<span class="n">output</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> </span><span class="si">{</span><span class="n">propname</span><span class="si">}</span><span class="s2"> = </span><span class="si">{</span><span class="n">npc</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="n">propname</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'N/A'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">propname</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">allowed_propnames</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You may only change {', '.join(allowed_propnames)}."</span><span class="p">)</span>
|
||||
<span class="n">caller</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 change </span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">allowed_propnames</span><span class="p">)</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">propval</span><span class="p">:</span>
|
||||
<span class="c1"># assigning a new propvalue</span>
|
||||
<span class="c1"># in this example, the properties are all integers...</span>
|
||||
<span class="n">intpropval</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">propval</span><span class="p">)</span>
|
||||
<span class="n">npc</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="bp">self</span><span class="o">.</span><span class="n">propname</span><span class="p">,</span> <span class="n">intpropval</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"Set {npc.key}'s property {self.propname} to {self.propval}"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Set </span><span class="si">{</span><span class="n">npc</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">'s property </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">propname</span><span class="si">}</span><span class="s2"> to </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">propval</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># propname set, but not propval - show current value</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"{npc.key} has property {self.propname} = {npc.attributes.get(self.propname,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s1">'N/A'</span><span class="p">)}</span><span class="s2">")</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">npc</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> has property </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">propname</span><span class="si">}</span><span class="s2"> = </span><span class="si">{</span><span class="n">npc</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="bp">self</span><span class="o">.</span><span class="n">propname</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="s1">'N/A'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>This command example shows off the use of more advanced parsing but otherwise it’s mostly error
|
||||
|
|
@ -859,7 +859,7 @@ Anna says, 'Hello!'
|
|||
|
||||
<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="s2">"Simple split of the = sign"</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">cmdname</span> <span class="o">=</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">cmdname</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="s2">"="</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span>
|
||||
<span class="n">name</span><span class="p">,</span> <span class="n">cmdname</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">rsplit</span><span class="p">(</span><span class="s2">"="</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
|
|
@ -880,7 +880,7 @@ Anna says, 'Hello!'
|
|||
<span class="k">return</span>
|
||||
<span class="c1"># send the command order</span>
|
||||
<span class="n">npc</span><span class="o">.</span><span class="n">execute_cmd</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"You told {npc.key} to do '{self.cmdname}'."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"You told </span><span class="si">{</span><span class="n">npc</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> to do '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">cmdname</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>Note that if you give an erroneous command, you will not see any error message, since that error
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ and can thus only hold a string. This is one way of making sure to update the <c
|
|||
5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">chair</span><span class="o">.</span><span class="n">db_key</span> <span class="o">=</span> <span class="s2">"Table"</span>
|
||||
<span class="n">chair</span><span class="o">.</span><span class="n">save</span><span class="p">()</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">chair</span><span class="o">.</span><span class="n">db_key</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">chair</span><span class="o">.</span><span class="n">db_key</span><span class="p">)</span>
|
||||
<span class="o"><<<</span> <span class="n">Table</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -199,7 +199,7 @@ fields. These are named the same as the field, but without the <code class="docu
|
|||
3
|
||||
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">chair</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="s2">"Table"</span>
|
||||
|
||||
<span class="k">print</span><span class="p">(</span><span class="n">chair</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">chair</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="o"><<<</span> <span class="n">Table</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
|
|
@ -319,7 +319,7 @@ it all in-game using <code class="docutils literal notranslate"><span class="pre
|
|||
single line using <code class="docutils literal notranslate"><span class="pre">;</span></code> and <a class="reference external" href="http://www.secnetix.de/olli/Python/list_comprehensions.hawk">list
|
||||
comprehensions</a>, like this (ignore the
|
||||
line break, that’s only for readability in the wiki):</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.furniture</span> <span class="k">import</span> <span class="n">Furniture</span><span class="p">;</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@py</span> <span class="kn">from</span> <span class="nn">typeclasses.furniture</span> <span class="kn">import</span> <span class="n">Furniture</span><span class="p">;</span>
|
||||
<span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">at_object_creation</span><span class="p">()</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">Furniture</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">obj</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">worth</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
|
|
@ -344,8 +344,8 @@ to re-run the creation hook on an existing class.</p></li>
|
|||
</ul>
|
||||
<p>In code you instead use the <code class="docutils literal notranslate"><span class="pre">swap_typeclass</span></code> method which you can find on all typeclassed entities:</p>
|
||||
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">obj_to_change</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="n">new_typeclass_path</span><span class="p">,</span> <span class="n">clean_attributes</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
|
||||
<span class="n">run_start_hooks</span><span class="o">=</span><span class="s2">"all"</span><span class="p">,</span> <span class="n">no_default</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">clean_cmdsets</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="n">obj_to_change</span><span class="o">.</span><span class="n">swap_typeclass</span><span class="p">(</span><span class="n">new_typeclass_path</span><span class="p">,</span> <span class="n">clean_attributes</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">run_start_hooks</span><span class="o">=</span><span class="s2">"all"</span><span class="p">,</span> <span class="n">no_default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">clean_cmdsets</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>The arguments to this method are described <a class="reference external" href="https://github.com/evennia/evennia/blob/master/evennia.typeclasses.models#typedobjectswap_typeclass">in the API docs
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ can optionally do cleanup after each test.</p>
|
|||
<span class="k">def</span> <span class="nf">test_alternative_call</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"test method. Calls with a keyword argument."</span>
|
||||
<span class="n">expected_return</span> <span class="o">=</span> <span class="s2">"This is me being baaaad."</span>
|
||||
<span class="n">actual_return</span> <span class="o">=</span> <span class="n">myfunc</span><span class="p">(</span><span class="n">bad</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">actual_return</span> <span class="o">=</span> <span class="n">myfunc</span><span class="p">(</span><span class="n">bad</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="c1"># test</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">expected_return</span><span class="p">,</span> <span class="n">actual_return</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
|
|
@ -309,7 +309,7 @@ testing#503435) is currently untested! Please report your findings.</p>
|
|||
|
||||
<span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">call_command</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">loading</span>
|
||||
<span class="n">loading</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">loading</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">call_command</span><span class="p">(</span><span class="s1">'syncdb'</span><span class="p">,</span> <span class="n">verbosity</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">tearDown</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
@ -318,7 +318,7 @@ testing#503435) is currently untested! Please report your findings.</p>
|
|||
|
||||
<span class="kn">from</span> <span class="nn">django.core.management</span> <span class="kn">import</span> <span class="n">call_command</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">loading</span>
|
||||
<span class="n">loading</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">loading</span><span class="o">.</span><span class="n">cache</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">call_command</span><span class="p">(</span><span class="s1">'syncdb'</span><span class="p">,</span> <span class="n">verbosity</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># test cases below ...</span>
|
||||
|
|
|
|||
|
|
@ -156,12 +156,12 @@ attributes and so on.</p>
|
|||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">CharApp</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
|
||||
<span class="n">app_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">AutoField</span><span class="p">(</span><span class="n">primary_key</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">app_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">AutoField</span><span class="p">(</span><span class="n">primary_key</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">char_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Character Name'</span><span class="p">)</span>
|
||||
<span class="n">date_applied</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Date Applied'</span><span class="p">)</span>
|
||||
<span class="n">background</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Background'</span><span class="p">)</span>
|
||||
<span class="n">account_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">IntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Account ID'</span><span class="p">)</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</td></tr></table></div>
|
||||
<p>You should consider how you are going to link your application to your account. For this tutorial,
|
||||
|
|
@ -213,7 +213,7 @@ given Character.</p></li>
|
|||
<span class="n">current_user</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="c1"># current user logged in</span>
|
||||
<span class="n">p_id</span> <span class="o">=</span> <span class="n">current_user</span><span class="o">.</span><span class="n">id</span> <span class="c1"># the account id</span>
|
||||
<span class="c1"># submitted Characters by this account</span>
|
||||
<span class="n">sub_apps</span> <span class="o">=</span> <span class="n">CharApp</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">account_id</span><span class="o">=</span><span class="n">p_id</span><span class="p">,</span> <span class="n">submitted</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">sub_apps</span> <span class="o">=</span> <span class="n">CharApp</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">account_id</span><span class="o">=</span><span class="n">p_id</span><span class="p">,</span> <span class="n">submitted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'sub_apps'</span><span class="p">:</span> <span class="n">sub_apps</span><span class="p">}</span>
|
||||
<span class="c1"># make the variables in 'context' available to the web page template</span>
|
||||
<span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'chargen/index.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
|
||||
|
|
@ -339,9 +339,9 @@ name and background. This form we create in <code class="docutils literal notran
|
|||
<span class="n">name</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span>
|
||||
<span class="n">background</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'background'</span><span class="p">]</span>
|
||||
<span class="n">applied_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="s1">'save'</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">:</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">app</span> <span class="o">=</span> <span class="n">CharApp</span><span class="p">(</span><span class="n">char_name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">background</span><span class="p">,</span>
|
||||
<span class="n">date_applied</span><span class="o">=</span><span class="n">applied_date</span><span class="p">,</span> <span class="n">account_id</span><span class="o">=</span><span class="n">user</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
|
||||
<span class="n">submitted</span><span class="o">=</span><span class="n">submitted</span><span class="p">)</span>
|
||||
|
|
@ -463,7 +463,7 @@ setting custom attributes is as easy as doing it in the meat of your Evennia gam
|
|||
<span class="n">current_user</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span> <span class="c1"># current user logged in</span>
|
||||
<span class="n">p_id</span> <span class="o">=</span> <span class="n">current_user</span><span class="o">.</span><span class="n">id</span> <span class="c1"># the account id</span>
|
||||
<span class="c1"># submitted apps under this account</span>
|
||||
<span class="n">sub_apps</span> <span class="o">=</span> <span class="n">CharApp</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">account_id</span><span class="o">=</span><span class="n">p_id</span><span class="p">,</span> <span class="n">submitted</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
|
||||
<span class="n">sub_apps</span> <span class="o">=</span> <span class="n">CharApp</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">account_id</span><span class="o">=</span><span class="n">p_id</span><span class="p">,</span> <span class="n">submitted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'sub_apps'</span><span class="p">:</span> <span class="n">sub_apps</span><span class="p">}</span>
|
||||
<span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'chargen/index.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -485,9 +485,9 @@ setting custom attributes is as easy as doing it in the meat of your Evennia gam
|
|||
<span class="n">name</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span>
|
||||
<span class="n">background</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'background'</span><span class="p">]</span>
|
||||
<span class="n">applied_date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="bp">True</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">if</span> <span class="s1">'save'</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">:</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="bp">False</span>
|
||||
<span class="n">submitted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">app</span> <span class="o">=</span> <span class="n">CharApp</span><span class="p">(</span><span class="n">char_name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">background</span><span class="o">=</span><span class="n">background</span><span class="p">,</span>
|
||||
<span class="n">date_applied</span><span class="o">=</span><span class="n">applied_date</span><span class="p">,</span> <span class="n">account_id</span><span class="o">=</span><span class="n">user</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
|
||||
<span class="n">submitted</span><span class="o">=</span><span class="n">submitted</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -51,15 +51,15 @@
|
|||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">import</span> <span class="nn">traceback</span>
|
||||
<span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<span class="kn">from</span> <span class="nn">pathlib</span> <span class="k">import</span> <span class="n">Path</span>
|
||||
<span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">django</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">global_settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ImproperlyConfigured</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.deprecation</span> <span class="k">import</span> <span class="p">(</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">global_settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ImproperlyConfigured</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.deprecation</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">RemovedInDjango30Warning</span><span class="p">,</span> <span class="n">RemovedInDjango31Warning</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.functional</span> <span class="k">import</span> <span class="n">LazyObject</span><span class="p">,</span> <span class="n">empty</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.functional</span> <span class="kn">import</span> <span class="n">LazyObject</span><span class="p">,</span> <span class="n">empty</span>
|
||||
|
||||
<span class="n">ENVIRONMENT_VARIABLE</span> <span class="o">=</span> <span class="s2">"DJANGO_SETTINGS_MODULE"</span>
|
||||
|
||||
|
|
@ -75,10 +75,10 @@
|
|||
<span class="sd"> String subclass which references a current settings value. It's treated as</span>
|
||||
<span class="sd"> the value in memory but serializes to a settings.NAME attribute reference.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">setting_name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">setting_name</span> <span class="o">=</span> <span class="n">setting_name</span>
|
||||
|
||||
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="o">=</span> <span class="n">Settings</span><span class="p">(</span><span class="n">settings_module</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Hardcode the class name as otherwise it yields 'Settings'.</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="ow">is</span> <span class="n">empty</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">'<LazySettings [Unevaluated]>'</span>
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
<span class="s1">'settings_module'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span><span class="o">.</span><span class="n">SETTINGS_MODULE</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the value of a setting and cache it in self.__dict__."""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="ow">is</span> <span class="n">empty</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_setup</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">val</span>
|
||||
<span class="k">return</span> <span class="n">val</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Set the value of setting. Clear all cached values if _wrapped changes</span>
|
||||
<span class="sd"> (@override_settings does this) or clear single values when set.</span>
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__setattr__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Delete a setting and clear it from cache if needed."""</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__delattr__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Settings</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings_module</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">settings_module</span><span class="p">):</span>
|
||||
<span class="c1"># update this dict from global settings (but only for ALL_CAPS settings)</span>
|
||||
<span class="k">for</span> <span class="n">setting</span> <span class="ow">in</span> <span class="nb">dir</span><span class="p">(</span><span class="n">global_settings</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">setting</span><span class="o">.</span><span class="n">isupper</span><span class="p">():</span>
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
<span class="k">def</span> <span class="nf">is_overridden</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">setting</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">setting</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_explicit_settings</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">%(cls)s</span><span class="s1"> "</span><span class="si">%(settings_module)s</span><span class="s1">">'</span> <span class="o">%</span> <span class="p">{</span>
|
||||
<span class="s1">'cls'</span><span class="p">:</span> <span class="bp">self</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="s1">'settings_module'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">SETTINGS_MODULE</span><span class="p">,</span>
|
||||
|
|
@ -248,7 +248,7 @@
|
|||
<span class="c1"># (standalone) case.</span>
|
||||
<span class="n">SETTINGS_MODULE</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_settings</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_settings</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Requests for configuration variables not in this class are satisfied</span>
|
||||
<span class="sd"> from the module specified in default_settings (if possible).</span>
|
||||
|
|
@ -256,12 +256,12 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="s1">'_deleted'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">default_settings</span> <span class="o">=</span> <span class="n">default_settings</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_deleted</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_settings</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_deleted</span><span class="o">.</span><span class="n">discard</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s1">'DEFAULT_CONTENT_TYPE'</span><span class="p">:</span>
|
||||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="n">DEFAULT_CONTENT_TYPE_DEPRECATED_MSG</span><span class="p">,</span> <span class="n">RemovedInDjango30Warning</span><span class="p">)</span>
|
||||
|
|
@ -269,12 +269,12 @@
|
|||
<span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="n">FILE_CHARSET_DEPRECATED_MSG</span><span class="p">,</span> <span class="n">RemovedInDjango31Warning</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__setattr__</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_deleted</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__delattr__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__dir__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__dir__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span>
|
||||
<span class="n">s</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="p">[</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">,</span> <span class="o">*</span><span class="nb">dir</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_settings</span><span class="p">)]</span>
|
||||
<span class="k">if</span> <span class="n">s</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_deleted</span>
|
||||
|
|
@ -286,7 +286,7 @@
|
|||
<span class="n">set_on_default</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_settings</span><span class="p">,</span> <span class="s1">'is_overridden'</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">s</span><span class="p">:</span> <span class="kc">False</span><span class="p">)(</span><span class="n">setting</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">deleted</span> <span class="ow">or</span> <span class="n">set_locally</span> <span class="ow">or</span> <span class="n">set_on_default</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">%(cls)s</span><span class="s1">>'</span> <span class="o">%</span> <span class="p">{</span>
|
||||
<span class="s1">'cls'</span><span class="p">:</span> <span class="bp">self</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="p">}</span>
|
||||
|
|
|
|||
|
|
@ -103,11 +103,11 @@
|
|||
<span class="sd"> ``ReverseManyToManyDescriptor``, use ``ManyToManyDescriptor`` instead.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">FieldError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">connections</span><span class="p">,</span> <span class="n">router</span><span class="p">,</span> <span class="n">transaction</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Q</span><span class="p">,</span> <span class="n">signals</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.query</span> <span class="k">import</span> <span class="n">QuerySet</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.functional</span> <span class="k">import</span> <span class="n">cached_property</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">FieldError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">connections</span><span class="p">,</span> <span class="n">router</span><span class="p">,</span> <span class="n">transaction</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Q</span><span class="p">,</span> <span class="n">signals</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.query</span> <span class="kn">import</span> <span class="n">QuerySet</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.functional</span> <span class="kn">import</span> <span class="n">cached_property</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ForwardManyToOneDescriptor</span><span class="p">:</span>
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
<span class="sd"> ``Child.parent`` is a ``ForwardManyToOneDescriptor`` instance.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_with_rel</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_with_rel</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field</span> <span class="o">=</span> <span class="n">field_with_rel</span>
|
||||
|
||||
<span class="nd">@cached_property</span>
|
||||
|
|
@ -184,7 +184,7 @@
|
|||
<span class="c1"># Assuming the database enforces foreign keys, this won't fail.</span>
|
||||
<span class="k">return</span> <span class="n">qs</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">field</span><span class="o">.</span><span class="n">get_reverse_related_filter</span><span class="p">(</span><span class="n">instance</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get the related instance through the forward relation.</span>
|
||||
|
||||
|
|
@ -231,7 +231,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">rel_obj</span>
|
||||
|
||||
<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="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Set the related instance through the forward relation.</span>
|
||||
|
||||
|
|
@ -337,7 +337,7 @@
|
|||
<span class="k">return</span> <span class="n">obj</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">get_object</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span>
|
||||
|
||||
<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="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__set__</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
<span class="c1"># If the primary key is a link to a parent model and a parent instance</span>
|
||||
<span class="c1"># is being set, update the value of the inherited pk(s).</span>
|
||||
|
|
@ -367,7 +367,7 @@
|
|||
<span class="sd"> ``Place.restaurant`` is a ``ReverseOneToOneDescriptor`` instance.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">related</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">related</span><span class="p">):</span>
|
||||
<span class="c1"># Following the example above, `related` is an instance of OneToOneRel</span>
|
||||
<span class="c1"># which represents the reverse restaurant field (place.restaurant).</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">related</span> <span class="o">=</span> <span class="n">related</span>
|
||||
|
|
@ -411,7 +411,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">related</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">set_cached_value</span><span class="p">(</span><span class="n">rel_obj</span><span class="p">,</span> <span class="n">instance</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">queryset</span><span class="p">,</span> <span class="n">rel_obj_attr</span><span class="p">,</span> <span class="n">instance_attr</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">related</span><span class="o">.</span><span class="n">get_cache_name</span><span class="p">(),</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get the related instance through the reverse relation.</span>
|
||||
|
||||
|
|
@ -458,7 +458,7 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">rel_obj</span>
|
||||
|
||||
<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="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Set the related instance through the reverse relation.</span>
|
||||
|
||||
|
|
@ -538,7 +538,7 @@
|
|||
<span class="sd"> class built by ``create_forward_many_to_many_manager()`` defined below.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rel</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rel</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rel</span> <span class="o">=</span> <span class="n">rel</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field</span> <span class="o">=</span> <span class="n">rel</span><span class="o">.</span><span class="n">field</span>
|
||||
|
||||
|
|
@ -551,7 +551,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">rel</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get the related objects through the reverse relation.</span>
|
||||
|
||||
|
|
@ -572,7 +572,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">rel</span><span class="o">.</span><span class="n">get_accessor_name</span><span class="p">(),</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<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="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span>
|
||||
<span class="s1">'Direct assignment to the </span><span class="si">%s</span><span class="s1"> is prohibited. Use </span><span class="si">%s</span><span class="s1">.set() instead.'</span>
|
||||
<span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_set_deprecation_msg_params</span><span class="p">(),</span>
|
||||
|
|
@ -588,7 +588,7 @@
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RelatedManager</span><span class="p">(</span><span class="n">superclass</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="o">=</span> <span class="n">instance</span>
|
||||
|
|
@ -597,7 +597,7 @@
|
|||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">core_filters</span> <span class="o">=</span> <span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">instance</span><span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="n">manager</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">manager</span><span class="p">)</span>
|
||||
<span class="n">manager_class</span> <span class="o">=</span> <span class="n">create_reverse_many_to_one_manager</span><span class="p">(</span><span class="n">manager</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">rel</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">manager_class</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="p">)</span>
|
||||
|
|
@ -802,7 +802,7 @@
|
|||
<span class="sd"> class built by ``create_forward_many_to_many_manager()`` defined below.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">rel</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reverse</span> <span class="o">=</span> <span class="n">reverse</span>
|
||||
|
|
@ -840,7 +840,7 @@
|
|||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ManyRelatedManager</span><span class="p">(</span><span class="n">superclass</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">instance</span> <span class="o">=</span> <span class="n">instance</span>
|
||||
|
|
@ -886,7 +886,7 @@
|
|||
<span class="s2">"a many-to-many relationship can be used."</span> <span class="o">%</span>
|
||||
<span class="n">instance</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="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="n">manager</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">manager</span><span class="p">)</span>
|
||||
<span class="n">manager_class</span> <span class="o">=</span> <span class="n">create_forward_many_to_many_manager</span><span class="p">(</span><span class="n">manager</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="n">rel</span><span class="p">,</span> <span class="n">reverse</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">manager_class</span><span class="p">(</span><span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">instance</span><span class="p">)</span>
|
||||
|
|
@ -1071,7 +1071,7 @@
|
|||
<span class="n">through_defaults</span> <span class="o">=</span> <span class="n">through_defaults</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
|
||||
<span class="c1"># If there aren't any objects, there is nothing to do.</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Model</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Model</span>
|
||||
<span class="k">if</span> <span class="n">objs</span><span class="p">:</span>
|
||||
<span class="n">new_ids</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">objs</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -40,10 +40,10 @@
|
|||
<h1>Source code for django.db.models.manager</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">inspect</span>
|
||||
<span class="kn">from</span> <span class="nn">importlib</span> <span class="k">import</span> <span class="n">import_module</span>
|
||||
<span class="kn">from</span> <span class="nn">importlib</span> <span class="kn">import</span> <span class="n">import_module</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">router</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.query</span> <span class="k">import</span> <span class="n">QuerySet</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">router</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.query</span> <span class="kn">import</span> <span class="n">QuerySet</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">BaseManager</span><span class="p">:</span>
|
||||
|
|
@ -57,13 +57,13 @@
|
|||
<span class="c1">#: thus be available in e.g. RunPython operations.</span>
|
||||
<span class="n">use_in_migrations</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="c1"># Capture the arguments to make returning them trivial.</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">_constructor_args</span> <span class="o">=</span> <span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">obj</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_set_creation_counter</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_db</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_hints</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return "app_label.model_label.manager_name"."""</span>
|
||||
<span class="k">return</span> <span class="s1">'</span><span class="si">%s</span><span class="s1">.</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="o">.</span><span class="n">_meta</span><span class="o">.</span><span class="n">label</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -192,13 +192,13 @@
|
|||
<span class="c1"># understanding of how this comes into play.</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_queryset</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_constructor_args</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">_constructor_args</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
|
||||
|
|
@ -208,10 +208,10 @@
|
|||
|
||||
<span class="k">class</span> <span class="nc">ManagerDescriptor</span><span class="p">:</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">manager</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">manager</span> <span class="o">=</span> <span class="n">manager</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">instance</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">"Manager isn't accessible via </span><span class="si">%s</span><span class="s2"> instances"</span> <span class="o">%</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -233,7 +233,7 @@
|
|||
|
||||
|
||||
<span class="k">class</span> <span class="nc">EmptyManager</span><span class="p">(</span><span class="n">Manager</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">model</span> <span class="o">=</span> <span class="n">model</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -48,10 +48,10 @@
|
|||
<span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">functools</span>
|
||||
<span class="kn">import</span> <span class="nn">inspect</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.constants</span> <span class="k">import</span> <span class="n">LOOKUP_SEP</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">tree</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.constants</span> <span class="kn">import</span> <span class="n">LOOKUP_SEP</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="kn">import</span> <span class="n">tree</span>
|
||||
|
||||
<span class="c1"># PathInfo is used when converting lookups (fk__somecol). The contents</span>
|
||||
<span class="c1"># describe the relation in Model terms (model Options and Fields for both</span>
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">contains_aggregate</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="n">params</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">sql</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">params</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">as_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compiler</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">connection</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
<span class="n">default</span> <span class="o">=</span> <span class="n">AND</span>
|
||||
<span class="n">conditional</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">_connector</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_negated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">_connector</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_negated</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">children</span><span class="o">=</span><span class="p">[</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">*</span><span class="nb">sorted</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">())],</span> <span class="n">connector</span><span class="o">=</span><span class="n">_connector</span><span class="p">,</span> <span class="n">negated</span><span class="o">=</span><span class="n">_negated</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_combine</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="n">conn</span><span class="p">):</span>
|
||||
|
|
@ -115,13 +115,13 @@
|
|||
<span class="n">obj</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">conn</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">obj</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__or__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__or__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_combine</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">OR</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__and__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__and__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_combine</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__invert__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__invert__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">obj</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)()</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">negate</span><span class="p">()</span>
|
||||
|
|
@ -156,10 +156,10 @@
|
|||
<span class="sd"> A wrapper for a deferred-loading field. When the value is read from this</span>
|
||||
<span class="sd"> object the first time, the query is executed.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">field_name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">field_name</span> <span class="o">=</span> <span class="n">field_name</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Retrieve and caches the value from the datastore on the first lookup.</span>
|
||||
<span class="sd"> Return the cached value.</span>
|
||||
|
|
@ -204,7 +204,7 @@
|
|||
<span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">merge_dicts</span><span class="p">(</span><span class="n">class_lookups</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_lookup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lookup_name</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.lookups</span> <span class="k">import</span> <span class="n">Lookup</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.lookups</span> <span class="kn">import</span> <span class="n">Lookup</span>
|
||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_lookup</span><span class="p">(</span><span class="n">lookup_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">found</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'output_field'</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_field</span><span class="o">.</span><span class="n">get_lookup</span><span class="p">(</span><span class="n">lookup_name</span><span class="p">)</span>
|
||||
|
|
@ -213,7 +213,7 @@
|
|||
<span class="k">return</span> <span class="n">found</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">lookup_name</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.lookups</span> <span class="k">import</span> <span class="n">Transform</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models.lookups</span> <span class="kn">import</span> <span class="n">Transform</span>
|
||||
<span class="n">found</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_lookup</span><span class="p">(</span><span class="n">lookup_name</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">found</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'output_field'</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">output_field</span><span class="o">.</span><span class="n">get_transform</span><span class="p">(</span><span class="n">lookup_name</span><span class="p">)</span>
|
||||
|
|
@ -338,7 +338,7 @@
|
|||
<span class="k">class</span> <span class="nc">FilteredRelation</span><span class="p">:</span>
|
||||
<span class="sd">"""Specify custom filtering in the ON clause of SQL joins."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relation_name</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">condition</span><span class="o">=</span><span class="n">Q</span><span class="p">()):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">relation_name</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="n">condition</span><span class="o">=</span><span class="n">Q</span><span class="p">()):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">relation_name</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'relation_name cannot be empty.'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relation_name</span> <span class="o">=</span> <span class="n">relation_name</span>
|
||||
|
|
@ -348,7 +348,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">condition</span> <span class="o">=</span> <span class="n">condition</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">path</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span>
|
||||
<span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">relation_name</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">relation_name</span> <span class="ow">and</span>
|
||||
|
|
|
|||
|
|
@ -41,9 +41,9 @@
|
|||
<span></span><span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
<span class="kn">import</span> <span class="nn">operator</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">total_ordering</span><span class="p">,</span> <span class="n">wraps</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">total_ordering</span><span class="p">,</span> <span class="n">wraps</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.version</span> <span class="k">import</span> <span class="n">PY36</span><span class="p">,</span> <span class="n">get_docs_version</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.version</span> <span class="kn">import</span> <span class="n">PY36</span><span class="p">,</span> <span class="n">get_docs_version</span>
|
||||
|
||||
|
||||
<span class="c1"># You can't trivially replace this with `functools.partial` because this binds</span>
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
<span class="k">def</span> <span class="nf">_is_mangled</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'__'</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'__'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">PY36</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">real_func</span> <span class="o">=</span> <span class="n">func</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -109,7 +109,7 @@
|
|||
<span class="s2">"(</span><span class="si">%r</span><span class="s2"> and </span><span class="si">%r</span><span class="s2">)."</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">instance</span><span class="p">,</span> <span class="bp">cls</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Call the function and put the return value in instance.__dict__ so that</span>
|
||||
<span class="sd"> subsequent attribute access on the instance returns the cached value</span>
|
||||
|
|
@ -146,7 +146,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="n">__prepared</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kw</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kw</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">args</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">__kw</span> <span class="o">=</span> <span class="n">kw</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">__prepared</span><span class="p">:</span>
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
<span class="p">(</span><span class="n">func</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="bp">self</span><span class="o">.</span><span class="n">__kw</span><span class="p">)</span> <span class="o">+</span> <span class="n">resultclasses</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">())</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
|
|
@ -209,25 +209,25 @@
|
|||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">func</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="p">,</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">__kw</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># object defines __str__(), so __prepare_class__() won't overload</span>
|
||||
<span class="c1"># a __str__() method from the proxied class.</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Promise</span><span class="p">):</span>
|
||||
<span class="n">other</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">__cast</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">()</span> <span class="o">==</span> <span class="n">other</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__lt__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Promise</span><span class="p">):</span>
|
||||
<span class="n">other</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">__cast</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">()</span> <span class="o"><</span> <span class="n">other</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">hash</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__mod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rhs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__mod__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">rhs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_delegate_text</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">%</span> <span class="n">rhs</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__cast</span><span class="p">()</span> <span class="o">%</span> <span class="n">rhs</span>
|
||||
|
|
@ -310,14 +310,14 @@
|
|||
<span class="c1"># Avoid infinite recursion when tracing __init__ (#19456).</span>
|
||||
<span class="n">_wrapped</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Note: if a subclass overrides __init__(), it will likely need to</span>
|
||||
<span class="c1"># override __copy__() and __deepcopy__() as well.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="o">=</span> <span class="n">empty</span>
|
||||
|
||||
<span class="fm">__getattr__</span> <span class="o">=</span> <span class="n">new_method_proxy</span><span class="p">(</span><span class="nb">getattr</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"_wrapped"</span><span class="p">:</span>
|
||||
<span class="c1"># Assign to __dict__ to avoid infinite __setattr__ loops.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="s2">"_wrapped"</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
|
|
@ -326,7 +326,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_setup</span><span class="p">()</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">"_wrapped"</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"can't delete _wrapped."</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="ow">is</span> <span class="n">empty</span><span class="p">:</span>
|
||||
|
|
@ -416,7 +416,7 @@
|
|||
<span class="sd"> Designed for compound objects of unknown type. For builtins or objects of</span>
|
||||
<span class="sd"> known type, use django.utils.functional.lazy.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Pass in a callable that returns the object to be wrapped.</span>
|
||||
|
||||
|
|
@ -433,7 +433,7 @@
|
|||
|
||||
<span class="c1"># Return a meaningful representation of the lazy object for debugging</span>
|
||||
<span class="c1"># without evaluating the wrapped object.</span>
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_wrapped</span> <span class="ow">is</span> <span class="n">empty</span><span class="p">:</span>
|
||||
<span class="n">repr_attr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_setupfunc</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@
|
|||
<span class="sd"> Helper function for building the version string</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="kn">from</span> <span class="nn">subprocess</span> <span class="k">import</span> <span class="n">check_output</span><span class="p">,</span> <span class="n">CalledProcessError</span><span class="p">,</span> <span class="n">STDOUT</span>
|
||||
<span class="kn">from</span> <span class="nn">subprocess</span> <span class="kn">import</span> <span class="n">check_output</span><span class="p">,</span> <span class="n">CalledProcessError</span><span class="p">,</span> <span class="n">STDOUT</span>
|
||||
|
||||
<span class="n">version</span> <span class="o">=</span> <span class="s2">"Unknown"</span>
|
||||
<span class="n">root</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span>
|
||||
|
|
@ -210,69 +210,69 @@
|
|||
<span class="k">global</span> <span class="n">BASE_SCRIPT_TYPECLASS</span><span class="p">,</span> <span class="n">BASE_GUEST_TYPECLASS</span>
|
||||
|
||||
<span class="c1"># Parent typeclasses</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.accounts</span> <span class="k">import</span> <span class="n">DefaultAccount</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.accounts</span> <span class="k">import</span> <span class="n">DefaultGuest</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="k">import</span> <span class="n">DefaultObject</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="k">import</span> <span class="n">DefaultCharacter</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="k">import</span> <span class="n">DefaultRoom</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="k">import</span> <span class="n">DefaultExit</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.comms</span> <span class="k">import</span> <span class="n">DefaultChannel</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.scripts</span> <span class="k">import</span> <span class="n">DefaultScript</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.accounts</span> <span class="kn">import</span> <span class="n">DefaultAccount</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.accounts</span> <span class="kn">import</span> <span class="n">DefaultGuest</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="kn">import</span> <span class="n">DefaultObject</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="kn">import</span> <span class="n">DefaultCharacter</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="kn">import</span> <span class="n">DefaultRoom</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.objects</span> <span class="kn">import</span> <span class="n">DefaultExit</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.comms</span> <span class="kn">import</span> <span class="n">DefaultChannel</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.scripts</span> <span class="kn">import</span> <span class="n">DefaultScript</span>
|
||||
|
||||
<span class="c1"># Database models</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="k">import</span> <span class="n">ScriptDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="k">import</span> <span class="n">Msg</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="kn">import</span> <span class="n">Msg</span>
|
||||
|
||||
<span class="c1"># commands</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.command</span> <span class="k">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.command</span> <span class="kn">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
|
||||
<span class="c1"># search functions</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_object</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_script</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_account</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_message</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_channel</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_help</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="k">import</span> <span class="n">search_tag</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_object</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_script</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_account</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_message</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_channel</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_help</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.search</span> <span class="kn">import</span> <span class="n">search_tag</span>
|
||||
|
||||
<span class="c1"># create functions</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_object</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_script</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_account</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_channel</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_message</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="k">import</span> <span class="n">create_help_entry</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_object</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_script</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_account</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_channel</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_message</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.create</span> <span class="kn">import</span> <span class="n">create_help_entry</span>
|
||||
|
||||
<span class="c1"># utilities</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">.locks</span> <span class="k">import</span> <span class="n">lockfuncs</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="n">gametime</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="n">ansi</span>
|
||||
<span class="kn">from</span> <span class="nn">.prototypes.spawner</span> <span class="k">import</span> <span class="n">spawn</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">contrib</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evmenu</span> <span class="k">import</span> <span class="n">EvMenu</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evtable</span> <span class="k">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evmore</span> <span class="k">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evform</span> <span class="k">import</span> <span class="n">EvForm</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.eveditor</span> <span class="k">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.ansi</span> <span class="k">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">.server</span> <span class="k">import</span> <span class="n">signals</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">.locks</span> <span class="kn">import</span> <span class="n">lockfuncs</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">gametime</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">ansi</span>
|
||||
<span class="kn">from</span> <span class="nn">.prototypes.spawner</span> <span class="kn">import</span> <span class="n">spawn</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">contrib</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evmenu</span> <span class="kn">import</span> <span class="n">EvMenu</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evmore</span> <span class="kn">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.evform</span> <span class="kn">import</span> <span class="n">EvForm</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">.server</span> <span class="kn">import</span> <span class="n">signals</span>
|
||||
|
||||
<span class="c1"># handlers</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.tickerhandler</span> <span class="k">import</span> <span class="n">TICKER_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.taskhandler</span> <span class="k">import</span> <span class="n">TASK_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSION_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNEL_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.monitorhandler</span> <span class="k">import</span> <span class="n">MONITOR_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.tickerhandler</span> <span class="kn">import</span> <span class="n">TICKER_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.taskhandler</span> <span class="kn">import</span> <span class="n">TASK_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.server.sessionhandler</span> <span class="kn">import</span> <span class="n">SESSION_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNEL_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.monitorhandler</span> <span class="kn">import</span> <span class="n">MONITOR_HANDLER</span>
|
||||
|
||||
<span class="c1"># containers</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.containers</span> <span class="k">import</span> <span class="n">GLOBAL_SCRIPTS</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.containers</span> <span class="k">import</span> <span class="n">OPTION_CLASSES</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.containers</span> <span class="kn">import</span> <span class="n">GLOBAL_SCRIPTS</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.containers</span> <span class="kn">import</span> <span class="n">OPTION_CLASSES</span>
|
||||
|
||||
<span class="c1"># API containers</span>
|
||||
|
||||
|
|
@ -308,14 +308,14 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.help.models</span> <span class="k">import</span> <span class="n">HelpEntry</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="k">import</span> <span class="n">ScriptDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="k">import</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.server.models</span> <span class="k">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">.typeclasses.attributes</span> <span class="k">import</span> <span class="n">Attribute</span>
|
||||
<span class="kn">from</span> <span class="nn">.typeclasses.tags</span> <span class="k">import</span> <span class="n">Tag</span>
|
||||
<span class="kn">from</span> <span class="nn">.help.models</span> <span class="kn">import</span> <span class="n">HelpEntry</span>
|
||||
<span class="kn">from</span> <span class="nn">.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.comms.models</span> <span class="kn">import</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.objects.models</span> <span class="kn">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">Attribute</span>
|
||||
<span class="kn">from</span> <span class="nn">.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span>
|
||||
|
||||
<span class="c1"># create container's properties</span>
|
||||
<span class="n">helpentries</span> <span class="o">=</span> <span class="n">HelpEntry</span><span class="o">.</span><span class="n">objects</span>
|
||||
|
|
@ -344,23 +344,23 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_character</span> <span class="k">import</span> <span class="n">CharacterCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_account</span> <span class="k">import</span> <span class="n">AccountCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_unloggedin</span> <span class="k">import</span> <span class="n">UnloggedinCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_session</span> <span class="k">import</span> <span class="n">SessionCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.muxcommand</span> <span class="k">import</span> <span class="n">MuxCommand</span><span class="p">,</span> <span class="n">MuxAccountCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_character</span> <span class="kn">import</span> <span class="n">CharacterCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_account</span> <span class="kn">import</span> <span class="n">AccountCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_unloggedin</span> <span class="kn">import</span> <span class="n">UnloggedinCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.cmdset_session</span> <span class="kn">import</span> <span class="n">SessionCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default.muxcommand</span> <span class="kn">import</span> <span class="n">MuxCommand</span><span class="p">,</span> <span class="n">MuxAccountCommand</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"populate the object with commands"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_cmds</span><span class="p">(</span><span class="n">module</span><span class="p">):</span>
|
||||
<span class="s2">"helper method for populating this object with cmds"</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
|
||||
<span class="n">cmdlist</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">variable_from_module</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">module</span><span class="o">.</span><span class="n">__all__</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">([(</span><span class="n">c</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">cmdlist</span><span class="p">]))</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.commands.default</span> <span class="k">import</span> <span class="p">(</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands.default</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">admin</span><span class="p">,</span>
|
||||
<span class="n">batchprocess</span><span class="p">,</span>
|
||||
<span class="n">building</span><span class="p">,</span>
|
||||
|
|
@ -406,7 +406,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.commands</span> <span class="k">import</span> <span class="n">cmdhandler</span>
|
||||
<span class="kn">from</span> <span class="nn">.commands</span> <span class="kn">import</span> <span class="n">cmdhandler</span>
|
||||
|
||||
<span class="n">CMD_NOINPUT</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_NOINPUT</span>
|
||||
<span class="n">CMD_NOMATCH</span> <span class="o">=</span> <span class="n">cmdhandler</span><span class="o">.</span><span class="n">CMD_NOMATCH</span>
|
||||
|
|
@ -420,7 +420,7 @@
|
|||
<span class="k">del</span> <span class="n">_EvContainer</span>
|
||||
|
||||
<span class="c1"># typeclases</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.utils</span> <span class="k">import</span> <span class="n">class_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span>
|
||||
|
||||
<span class="n">BASE_ACCOUNT_TYPECLASS</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">BASE_ACCOUNT_TYPECLASS</span><span class="p">)</span>
|
||||
<span class="n">BASE_OBJECT_TYPECLASS</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">BASE_OBJECT_TYPECLASS</span><span class="p">)</span>
|
||||
|
|
@ -435,7 +435,7 @@
|
|||
<span class="c1"># delayed starts - important so as to not back-access evennia before it has</span>
|
||||
<span class="c1"># finished initializing</span>
|
||||
<span class="n">GLOBAL_SCRIPTS</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
|
||||
<span class="kn">from</span> <span class="nn">.prototypes</span> <span class="k">import</span> <span class="n">prototypes</span>
|
||||
<span class="kn">from</span> <span class="nn">.prototypes</span> <span class="kn">import</span> <span class="n">prototypes</span>
|
||||
<span class="n">prototypes</span><span class="o">.</span><span class="n">load_module_prototypes</span><span class="p">()</span>
|
||||
<span class="k">del</span> <span class="n">prototypes</span>
|
||||
|
||||
|
|
@ -473,7 +473,7 @@
|
|||
|
||||
<span class="k">if</span> <span class="n">debugger</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"auto"</span><span class="p">,</span> <span class="s2">"pudb"</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">pudb</span> <span class="k">import</span> <span class="n">debugger</span>
|
||||
<span class="kn">from</span> <span class="nn">pudb</span> <span class="kn">import</span> <span class="n">debugger</span>
|
||||
|
||||
<span class="n">dbg</span> <span class="o">=</span> <span class="n">debugger</span><span class="o">.</span><span class="n">Debugger</span><span class="p">(</span><span class="n">stdout</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">__stdout__</span><span class="p">,</span> <span class="n">term_size</span><span class="o">=</span><span class="n">term_size</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
|
|
@ -500,7 +500,7 @@
|
|||
<span class="vm">__doc__</span> <span class="o">=</span> <span class="n">DOCSTRING</span><span class="o">.</span><span class="n">format</span><span class="p">(</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="n">f</span><span class="s2">"evennia.</span><span class="si">{key}</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"evennia.</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</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="nb">globals</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">key</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"_"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DOCSTRING"</span><span class="p">,)</span>
|
||||
<span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -53,33 +53,33 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">password_validation</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ImproperlyConfigured</span><span class="p">,</span> <span class="n">ValidationError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.module_loading</span> <span class="k">import</span> <span class="n">import_string</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="k">import</span> <span class="n">TypeclassBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.manager</span> <span class="k">import</span> <span class="n">AccountManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="k">import</span> <span class="n">cmdhandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="k">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.throttle</span> <span class="k">import</span> <span class="n">Throttle</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">lazy_property</span><span class="p">,</span> <span class="n">to_str</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">variable_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.signals</span> <span class="k">import</span> <span class="p">(</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">django.contrib.auth</span> <span class="kn">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">password_validation</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ImproperlyConfigured</span><span class="p">,</span> <span class="n">ValidationError</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="kn">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.module_loading</span> <span class="kn">import</span> <span class="n">import_string</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypeclassBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.manager</span> <span class="kn">import</span> <span class="n">AccountManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</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="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="kn">import</span> <span class="n">cmdhandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.throttle</span> <span class="kn">import</span> <span class="n">Throttle</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">lazy_property</span><span class="p">,</span> <span class="n">to_str</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">variable_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.signals</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">SIGNAL_ACCOUNT_POST_CREATE</span><span class="p">,</span>
|
||||
<span class="n">SIGNAL_OBJECT_POST_PUPPET</span><span class="p">,</span>
|
||||
<span class="n">SIGNAL_OBJECT_POST_UNPUPPET</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="k">import</span> <span class="n">NickHandler</span><span class="p">,</span> <span class="n">ModelAttributeBackend</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.scripthandler</span> <span class="k">import</span> <span class="n">ScriptHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdsethandler</span> <span class="k">import</span> <span class="n">CmdSetHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.optionhandler</span> <span class="k">import</span> <span class="n">OptionHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">NickHandler</span><span class="p">,</span> <span class="n">ModelAttributeBackend</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.scripthandler</span> <span class="kn">import</span> <span class="n">ScriptHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdsethandler</span> <span class="kn">import</span> <span class="n">CmdSetHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.optionhandler</span> <span class="kn">import</span> <span class="n">OptionHandler</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">random</span> <span class="k">import</span> <span class="n">getrandbits</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">random</span> <span class="kn">import</span> <span class="n">getrandbits</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"DefaultAccount"</span><span class="p">,</span> <span class="s2">"DefaultGuest"</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -106,7 +106,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</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="k">def</span> <span class="fm">__init__</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">"""</span>
|
||||
<span class="sd"> Initializes the handler.</span>
|
||||
|
||||
|
|
@ -131,7 +131,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="n">sessid</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">_SESSIONS</span><span class="o">.</span><span class="n">session_from_account</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span> <span class="n">sessid</span><span class="p">))</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
|
|
@ -289,7 +289,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="n">_SESSIONS</span><span class="o">.</span><span class="n">disconnect</span><span class="p">(</span><span class="n">session</span><span class="p">,</span> <span class="n">reason</span><span class="p">)</span></div>
|
||||
|
||||
<span class="c1"># puppeting operations</span>
|
||||
|
|
@ -329,13 +329,13 @@
|
|||
<span class="c1"># we may take over another of our sessions</span>
|
||||
<span class="c1"># output messages to the affected sessions</span>
|
||||
<span class="k">if</span> <span class="n">_MULTISESSION_MODE</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">):</span>
|
||||
<span class="n">txt1</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"Sharing |c</span><span class="si">{obj.name}</span><span class="s2">|n with another of your sessions."</span>
|
||||
<span class="n">txt2</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|c</span><span class="si">{obj.name}</span><span class="s2">|n|G is now shared from another of your sessions.|n"</span>
|
||||
<span class="n">txt1</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Sharing |c</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n with another of your sessions."</span>
|
||||
<span class="n">txt2</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|c</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n|G is now shared from another of your sessions.|n"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">txt1</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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">txt2</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">obj</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="k">else</span><span class="p">:</span>
|
||||
<span class="n">txt1</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"Taking over |c</span><span class="si">{obj.name}</span><span class="s2">|n from another of your sessions."</span>
|
||||
<span class="n">txt2</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|c</span><span class="si">{obj.name}</span><span class="s2">|n|R is now acted from another of your sessions.|n"</span>
|
||||
<span class="n">txt1</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Taking over |c</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n from another of your sessions."</span>
|
||||
<span class="n">txt2</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|c</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n|R is now acted from another of your sessions.|n"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="n">txt1</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="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="n">txt2</span><span class="p">),</span> <span class="n">session</span><span class="o">=</span><span class="n">obj</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="bp">self</span><span class="o">.</span><span class="n">unpuppet_object</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">sessions</span><span class="o">.</span><span class="n">get</span><span class="p">())</span>
|
||||
|
|
@ -414,7 +414,7 @@
|
|||
<span class="sd"> puppet (Object): The matching puppeted object, if any.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span></div>
|
||||
<span class="k">return</span> <span class="n">session</span><span class="o">.</span><span class="n">puppet</span> <span class="k">if</span> <span class="n">session</span> <span class="k">else</span> <span class="kc">None</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.get_all_puppets"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.get_all_puppets">[docs]</a> <span class="k">def</span> <span class="nf">get_all_puppets</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -494,7 +494,7 @@
|
|||
<span class="n">klass</span> <span class="o">=</span> <span class="n">import_string</span><span class="p">(</span><span class="n">validator</span><span class="p">[</span><span class="s2">"NAME"</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="n">msg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"The module in NAME could not be imported: </span><span class="si">{validator['NAME']}</span><span class="s2">. "</span>
|
||||
<span class="sa">f</span><span class="s2">"The module in NAME could not be imported: </span><span class="si">{</span><span class="n">validator</span><span class="p">[</span><span class="s1">'NAME'</span><span class="p">]</span><span class="si">}</span><span class="s2">. "</span>
|
||||
<span class="s2">"Check your AUTH_USERNAME_VALIDATORS setting."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="n">ImproperlyConfigured</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
|
||||
|
|
@ -554,7 +554,7 @@
|
|||
<span class="s2">"</span><span class="se">\n</span><span class="s2">If you feel this ban is in error, please email an admin.|x"</span>
|
||||
<span class="p">)</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="n">f</span><span class="s2">"Authentication Denied (Banned): </span><span class="si">{username}</span><span class="s2"> (IP: </span><span class="si">{ip}</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">"Authentication Denied (Banned): </span><span class="si">{</span><span class="n">username</span><span class="si">}</span><span class="s2"> (IP: </span><span class="si">{</span><span class="n">ip</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
<span class="n">LOGIN_THROTTLE</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">ip</span><span class="p">,</span> <span class="s2">"Too many sightings of banned artifact."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="n">errors</span>
|
||||
|
||||
|
|
@ -565,7 +565,7 @@
|
|||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">_</span><span class="p">(</span><span class="s2">"Username and/or password is incorrect."</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># Log auth failures while throttle is inactive</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="n">f</span><span class="s2">"Authentication Failure: </span><span class="si">{username}</span><span class="s2"> (IP: </span><span class="si">{ip}</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">"Authentication Failure: </span><span class="si">{</span><span class="n">username</span><span class="si">}</span><span class="s2"> (IP: </span><span class="si">{</span><span class="n">ip</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Update throttle</span>
|
||||
<span class="k">if</span> <span class="n">ip</span><span class="p">:</span>
|
||||
|
|
@ -581,7 +581,7 @@
|
|||
<span class="k">return</span> <span class="kc">None</span><span class="p">,</span> <span class="n">errors</span>
|
||||
|
||||
<span class="c1"># Account successfully authenticated</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_sec</span><span class="p">(</span><span class="n">f</span><span class="s2">"Authentication Success: </span><span class="si">{account}</span><span class="s2"> (IP: </span><span class="si">{ip}</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">"Authentication Success: </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="n">ip</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">account</span><span class="p">,</span> <span class="n">errors</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.normalize_username"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.normalize_username">[docs]</a> <span class="nd">@classmethod</span>
|
||||
|
|
@ -689,7 +689,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">DefaultAccount</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">password</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="n">f</span><span class="s2">"Password successfully changed for </span><span class="si">{self}</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">"Password successfully changed for </span><span class="si">{</span><span class="bp">self</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">at_password_change</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.create_character"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.create_character">[docs]</a> <span class="k">def</span> <span class="nf">create_character</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -819,7 +819,7 @@
|
|||
<span class="n">account</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span>
|
||||
<span class="n">username</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">password</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="n">typeclass</span><span class="o">=</span><span class="n">typeclass</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="n">f</span><span class="s2">"Account Created: </span><span class="si">{account}</span><span class="s2"> (IP: </span><span class="si">{ip}</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">"Account Created: </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="n">ip</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
||||
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
|
|
@ -842,7 +842,7 @@
|
|||
<span class="c1"># join the new account to the public channel</span>
|
||||
<span class="n">pchannel</span> <span class="o">=</span> <span class="n">ChannelDB</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get_channel</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">DEFAULT_CHANNELS</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"key"</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">pchannel</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">pchannel</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">account</span><span class="p">):</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"New account '</span><span class="si">{account.key}</span><span class="s2">' could not connect to public channel!"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"New account '</span><span class="si">{</span><span class="n">account</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">' could not connect to public channel!"</span>
|
||||
<span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -1184,7 +1184,7 @@
|
|||
<span class="n">updates</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">cdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"key"</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">db_key</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db_key</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"#</span><span class="si">{self.dbid}</span><span class="s2">"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db_key</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dbid</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">updates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"db_key"</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">!=</span> <span class="n">cdict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"key"</span><span class="p">):</span>
|
||||
<span class="n">updates</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"db_key"</span><span class="p">)</span>
|
||||
|
|
@ -1309,9 +1309,9 @@
|
|||
<span class="n">now</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
|
||||
<span class="n">now</span> <span class="o">=</span> <span class="s2">"</span><span class="si">%02i</span><span class="s2">-</span><span class="si">%02i</span><span class="s2">-</span><span class="si">%02i</span><span class="s2">(</span><span class="si">%02i</span><span class="s2">:</span><span class="si">%02i</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">minute</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">_MUDINFO_CHANNEL</span><span class="p">:</span>
|
||||
<span class="n">_MUDINFO_CHANNEL</span><span class="o">.</span><span class="n">tempmsg</span><span class="p">(</span><span class="n">f</span><span class="s2">"[</span><span class="si">{_MUDINFO_CHANNEL.key}</span><span class="s2">, </span><span class="si">{now}</span><span class="s2">]: </span><span class="si">{message}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">_MUDINFO_CHANNEL</span><span class="o">.</span><span class="n">tempmsg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">_MUDINFO_CHANNEL</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">now</span><span class="si">}</span><span class="s2">]: </span><span class="si">{</span><span class="n">message</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">logger</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="n">f</span><span class="s2">"[</span><span class="si">{now}</span><span class="s2">]: </span><span class="si">{message}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_info</span><span class="p">(</span><span class="sa">f</span><span class="s2">"[</span><span class="si">{</span><span class="n">now</span><span class="si">}</span><span class="s2">]: </span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="DefaultAccount.at_post_login"><a class="viewcode-back" href="../../../api/evennia.accounts.accounts.html#evennia.accounts.accounts.DefaultAccount.at_post_login">[docs]</a> <span class="k">def</span> <span class="nf">at_post_login</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -1389,7 +1389,7 @@
|
|||
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">reason</span> <span class="o">=</span> <span class="n">f</span><span class="s2">" ({reason if reason else ''})"</span>
|
||||
<span class="n">reason</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">reason</span> <span class="k">if</span> <span class="n">reason</span> <span class="k">else</span> <span class="s1">''</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_send_to_connect_channel</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"|R</span><span class="si">{key}</span><span class="s2"> disconnected</span><span class="si">{reason}</span><span class="s2">|n"</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="n">reason</span><span class="p">)</span>
|
||||
<span class="p">)</span></div>
|
||||
|
|
@ -1509,13 +1509,13 @@
|
|||
<span class="n">is_su</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_superuser</span>
|
||||
|
||||
<span class="c1"># text shown when looking in the ooc area</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="n">f</span><span class="s2">"Account |g</span><span class="si">{self.key}</span><span class="s2">|n (you are Out-of-Character)"</span><span class="p">]</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"Account |g</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n (you are Out-of-Character)"</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">sessions</span><span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">nsess</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="ow">and</span> <span class="s2">"</span><span class="se">\n\n</span><span class="s2">|wConnected session:|n"</span>
|
||||
<span class="ow">or</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">|wConnected sessions (</span><span class="si">{nsess}</span><span class="s2">):|n"</span>
|
||||
<span class="ow">or</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">|wConnected sessions (</span><span class="si">{</span><span class="n">nsess</span><span class="si">}</span><span class="s2">):|n"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">isess</span><span class="p">,</span> <span class="n">sess</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sessions</span><span class="p">):</span>
|
||||
<span class="n">csessid</span> <span class="o">=</span> <span class="n">sess</span><span class="o">.</span><span class="n">sessid</span>
|
||||
|
|
@ -1556,7 +1556,7 @@
|
|||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |w@ic <character>|n - enter the game (|w@ooc|n to get back here)"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">is_su</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">Available character</span><span class="si">{string_s_ending}</span><span class="s2"> ({len(characters)}/unlimited):"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n\n</span><span class="s2">Available character</span><span class="si">{</span><span class="n">string_s_ending</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">characters</span><span class="p">)</span><span class="si">}</span><span class="s2">/unlimited):"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
|
|
@ -1575,15 +1575,15 @@
|
|||
<span class="n">sid</span> <span class="o">=</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">sessions</span> <span class="ow">and</span> <span class="n">sessions</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">sess</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="n">sess</span> <span class="ow">and</span> <span class="n">sid</span><span class="p">:</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |G</span><span class="si">{char.key}</span><span class="s2">|n [{', '.join(char.permissions.all())}] (played by you in session </span><span class="si">{sid}</span><span class="s2">)"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |G</span><span class="si">{</span><span class="n">char</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n [</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</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="si">}</span><span class="s2">] (played by you in session </span><span class="si">{</span><span class="n">sid</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">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |R</span><span class="si">{char.key}</span><span class="s2">|n [{', '.join(char.permissions.all())}] (played by someone else)"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - |R</span><span class="si">{</span><span class="n">char</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">|n [</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</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="si">}</span><span class="s2">] (played by someone else)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># character is "free to puppet"</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - </span><span class="si">{char.key}</span><span class="s2"> [{', '.join(char.permissions.all())}]"</span><span class="p">)</span>
|
||||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> - </span><span class="si">{</span><span class="n">char</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> [</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">char</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="si">}</span><span class="s2">]"</span><span class="p">)</span>
|
||||
<span class="n">look_string</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"-"</span> <span class="o">*</span> <span class="mi">68</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="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result</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="p">(</span><span class="s2">"-"</span> <span class="o">*</span> <span class="mi">68</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">look_string</span></div></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -43,25 +43,25 @@
|
|||
<span class="c1"># This sets up how models are displayed</span>
|
||||
<span class="c1"># in the web admin interface.</span>
|
||||
<span class="c1">#</span>
|
||||
<span class="kn">from</span> <span class="nn">django</span> <span class="k">import</span> <span class="n">forms</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="k">import</span> <span class="n">admin</span><span class="p">,</span> <span class="n">messages</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.options</span> <span class="k">import</span> <span class="n">IS_POPUP_VAR</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.admin</span> <span class="k">import</span> <span class="n">UserAdmin</span> <span class="k">as</span> <span class="n">BaseUserAdmin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.forms</span> <span class="k">import</span> <span class="n">UserChangeForm</span><span class="p">,</span> <span class="n">UserCreationForm</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.utils</span> <span class="k">import</span> <span class="n">unquote</span>
|
||||
<span class="kn">from</span> <span class="nn">django.template.response</span> <span class="k">import</span> <span class="n">TemplateResponse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">Http404</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">PermissionDenied</span>
|
||||
<span class="kn">from</span> <span class="nn">django.views.decorators.debug</span> <span class="k">import</span> <span class="n">sensitive_post_parameters</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.decorators</span> <span class="k">import</span> <span class="n">method_decorator</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.html</span> <span class="k">import</span> <span class="n">escape</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="k">import</span> <span class="n">path</span><span class="p">,</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">update_session_auth_hash</span>
|
||||
<span class="kn">from</span> <span class="nn">django</span> <span class="kn">import</span> <span class="n">forms</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">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span><span class="p">,</span> <span class="n">messages</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.options</span> <span class="kn">import</span> <span class="n">IS_POPUP_VAR</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.admin</span> <span class="kn">import</span> <span class="n">UserAdmin</span> <span class="k">as</span> <span class="n">BaseUserAdmin</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.forms</span> <span class="kn">import</span> <span class="n">UserChangeForm</span><span class="p">,</span> <span class="n">UserCreationForm</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.admin.utils</span> <span class="kn">import</span> <span class="n">unquote</span>
|
||||
<span class="kn">from</span> <span class="nn">django.template.response</span> <span class="kn">import</span> <span class="n">TemplateResponse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">Http404</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">PermissionDenied</span>
|
||||
<span class="kn">from</span> <span class="nn">django.views.decorators.debug</span> <span class="kn">import</span> <span class="n">sensitive_post_parameters</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.decorators</span> <span class="kn">import</span> <span class="n">method_decorator</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.html</span> <span class="kn">import</span> <span class="n">escape</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">path</span><span class="p">,</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="kn">import</span> <span class="n">update_session_auth_hash</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.admin</span> <span class="k">import</span> <span class="n">AttributeInline</span><span class="p">,</span> <span class="n">TagInline</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.admin</span> <span class="kn">import</span> <span class="n">AttributeInline</span><span class="p">,</span> <span class="n">TagInline</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span>
|
||||
|
||||
<span class="n">sensitive_post_parameters_m</span> <span class="o">=</span> <span class="n">method_decorator</span><span class="p">(</span><span class="n">sensitive_post_parameters</span><span class="p">())</span>
|
||||
|
||||
|
|
@ -397,8 +397,8 @@
|
|||
<span class="n">obj</span><span class="o">.</span><span class="n">at_account_creation</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="AccountDBAdmin.response_add"><a class="viewcode-back" href="../../../api/evennia.accounts.admin.html#evennia.accounts.admin.AccountDBAdmin.response_add">[docs]</a> <span class="k">def</span> <span class="nf">response_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">post_url_continue</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="k">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s2">"admin:accounts_accountdb_change"</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">]))</span></div></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -46,12 +46,12 @@
|
|||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.accounts</span> <span class="k">import</span> <span class="n">DefaultAccount</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.scripts</span> <span class="k">import</span> <span class="n">DefaultScript</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">search</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</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.accounts.accounts</span> <span class="kn">import</span> <span class="n">DefaultAccount</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.scripts</span> <span class="kn">import</span> <span class="n">DefaultScript</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">search</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="n">_IDLE_TIMEOUT</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">IDLE_TIMEOUT</span>
|
||||
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">for</span> <span class="n">session</span> <span class="ow">in</span> <span class="n">_SESSIONS</span><span class="o">.</span><span class="n">sessions_from_account</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">):</span>
|
||||
<span class="n">session</span><span class="o">.</span><span class="n">update_session_counters</span><span class="p">(</span><span class="n">idle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
|
|
@ -229,7 +229,7 @@
|
|||
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
|
||||
<span class="c1"># if keywords are given, store (the BotStarter script</span>
|
||||
<span class="c1"># will not give any keywords, so this should normally only</span>
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
<span class="c1"># connect to Evennia channel</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">channel_search</span><span class="p">(</span><span class="n">ev_channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">f</span><span class="s2">"Evennia Channel '</span><span class="si">{ev_channel}</span><span class="s2">' not found."</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">"Evennia Channel '</span><span class="si">{</span><span class="n">ev_channel</span><span class="si">}</span><span class="s2">' not found."</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
|
|
@ -367,7 +367,7 @@
|
|||
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"nicklist"</span><span class="p">:</span>
|
||||
<span class="c1"># the return of a nicklist request</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_nicklist_callers"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nicklist_callers</span><span class="p">:</span>
|
||||
<span class="n">chstr</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{self.db.irc_channel}</span><span class="s2"> (</span><span class="si">{self.db.irc_network}</span><span class="s2">:</span><span class="si">{self.db.irc_port}</span><span class="s2">)"</span>
|
||||
<span class="n">chstr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_channel</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_network</span><span class="si">}</span><span class="s2">:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_port</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="n">nicklist</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"nicklist"</span><span class="p">],</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_nicklist_callers</span><span class="p">:</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
|
|
@ -379,7 +379,7 @@
|
|||
<span class="k">elif</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"ping"</span><span class="p">:</span>
|
||||
<span class="c1"># the return of a ping</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_ping_callers"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ping_callers</span><span class="p">:</span>
|
||||
<span class="n">chstr</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{self.db.irc_channel}</span><span class="s2"> (</span><span class="si">{self.db.irc_network}</span><span class="s2">:</span><span class="si">{self.db.irc_port}</span><span class="s2">)"</span>
|
||||
<span class="n">chstr</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_channel</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_network</span><span class="si">}</span><span class="s2">:</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">irc_port</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ping_callers</span><span class="p">:</span>
|
||||
<span class="n">obj</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="n">_</span><span class="p">(</span><span class="s2">"IRC ping return from </span><span class="si">{chstr}</span><span class="s2"> took </span><span class="si">{time}</span><span class="s2">s."</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
|
|
@ -397,7 +397,7 @@
|
|||
<span class="c1"># return server WHO list (abbreviated for IRC)</span>
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
<span class="n">whos</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">t0</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="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">_SESSIONS</span><span class="o">.</span><span class="n">get_sessions</span><span class="p">():</span>
|
||||
|
|
@ -412,10 +412,10 @@
|
|||
<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="p">)</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"Who list (online/idle): {', '.join(sorted(whos, key=lambda w: w.lower()))}"</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"Who list (online/idle): </span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">whos</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">w</span><span class="p">:</span> <span class="n">w</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">elif</span> <span class="n">txt</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"about"</span><span class="p">):</span>
|
||||
<span class="c1"># some bot info</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"This is an Evennia IRC bot connecting from '</span><span class="si">{settings.SERVERNAME}</span><span class="s2">'."</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"This is an Evennia IRC bot connecting from '</span><span class="si">{</span><span class="n">settings</span><span class="o">.</span><span class="n">SERVERNAME</span><span class="si">}</span><span class="s2">'."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="s2">"I understand 'who' and 'about'."</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">privmsg</span><span class="o">=</span><span class="p">((</span><span class="n">text</span><span class="p">,),</span> <span class="p">{</span><span class="s2">"user"</span><span class="p">:</span> <span class="n">user</span><span class="p">}))</span>
|
||||
|
|
@ -423,10 +423,10 @@
|
|||
<span class="c1"># something to send to the main channel</span>
|
||||
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"action"</span><span class="p">:</span>
|
||||
<span class="c1"># An action (irc pose)</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{kwargs['user']}</span><span class="s2">@</span><span class="si">{kwargs['channel']}</span><span class="s2"> </span><span class="si">{txt}</span><span class="s2">"</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'user'</span><span class="p">]</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'channel'</span><span class="p">]</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">txt</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># msg - A normal channel message</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{kwargs['user']}</span><span class="s2">@</span><span class="si">{kwargs['channel']}</span><span class="s2">: </span><span class="si">{txt}</span><span class="s2">"</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'user'</span><span class="p">]</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">kwargs</span><span class="p">[</span><span class="s1">'channel'</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">txt</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channel</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span><span class="p">:</span>
|
||||
<span class="c1"># cache channel lookup</span>
|
||||
|
|
@ -467,13 +467,13 @@
|
|||
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">ev_channel</span><span class="p">:</span>
|
||||
<span class="c1"># connect to Evennia channel</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">channel_search</span><span class="p">(</span><span class="n">ev_channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">f</span><span class="s2">"Evennia Channel '</span><span class="si">{ev_channel}</span><span class="s2">' not found."</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">"Evennia Channel '</span><span class="si">{</span><span class="n">ev_channel</span><span class="si">}</span><span class="s2">' not found."</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
<span class="k">if</span> <span class="n">rss_url</span><span class="p">:</span>
|
||||
|
|
@ -528,14 +528,14 @@
|
|||
|
||||
<span class="k">global</span> <span class="n">_SESSIONS</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_SESSIONS</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span> <span class="k">as</span> <span class="n">_SESSIONS</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="k">as</span> <span class="n">_SESSIONS</span>
|
||||
|
||||
<span class="c1"># connect to Evennia channel</span>
|
||||
<span class="k">if</span> <span class="n">ev_channel</span><span class="p">:</span>
|
||||
<span class="c1"># connect to Evennia channel</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">search</span><span class="o">.</span><span class="n">channel_search</span><span class="p">(</span><span class="n">ev_channel</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">channel</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="n">f</span><span class="s2">"Evennia Channel '</span><span class="si">{ev_channel}</span><span class="s2">' not found."</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">"Evennia Channel '</span><span class="si">{</span><span class="n">ev_channel</span><span class="si">}</span><span class="s2">' not found."</span><span class="p">)</span>
|
||||
<span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">channel</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
|
|
@ -611,7 +611,7 @@
|
|||
<span class="k">if</span> <span class="n">event</span> <span class="o">==</span> <span class="s2">"channels/broadcast"</span><span class="p">:</span>
|
||||
<span class="c1"># A private message to the bot - a command.</span>
|
||||
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{sender}</span><span class="s2">@</span><span class="si">{game}</span><span class="s2">: </span><span class="si">{txt}</span><span class="s2">"</span>
|
||||
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sender</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">game</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">txt</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">ndb</span><span class="o">.</span><span class="n">ev_channel</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">ev_channel</span><span class="p">:</span>
|
||||
<span class="c1"># simple cache of channel lookup</span>
|
||||
|
|
|
|||
|
|
@ -44,9 +44,9 @@
|
|||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">UserManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.managers</span> <span class="k">import</span> <span class="n">TypedObjectManager</span><span class="p">,</span> <span class="n">TypeclassManager</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="kn">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="kn">import</span> <span class="n">UserManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.managers</span> <span class="kn">import</span> <span class="n">TypedObjectManager</span><span class="p">,</span> <span class="n">TypeclassManager</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"AccountManager"</span><span class="p">,)</span>
|
||||
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
<span class="k">if</span> <span class="n">typeclass</span><span class="p">:</span>
|
||||
<span class="c1"># we accept both strings and actual typeclasses</span>
|
||||
<span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">typeclass</span><span class="p">):</span>
|
||||
<span class="n">typeclass</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{typeclass.__module__}</span><span class="s2">.</span><span class="si">{typeclass.__name__}</span><span class="s2">"</span>
|
||||
<span class="n">typeclass</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">typeclass</span><span class="o">.</span><span class="vm">__module__</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">typeclass</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">typeclass</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">typeclass</span><span class="p">)</span>
|
||||
<span class="n">query</span><span class="p">[</span><span class="s2">"db_typeclass_path"</span><span class="p">]</span> <span class="o">=</span> <span class="n">typeclass</span>
|
||||
|
|
|
|||
|
|
@ -56,15 +56,15 @@
|
|||
<span class="sd">account info and OOC account configuration variables etc.</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">AbstractUser</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="k">import</span> <span class="n">smart_str</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">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="kn">import</span> <span class="n">AbstractUser</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.encoding</span> <span class="kn">import</span> <span class="n">smart_str</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.manager</span> <span class="k">import</span> <span class="n">AccountDBManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="k">import</span> <span class="n">TypedObject</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">make_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.signals</span> <span class="k">import</span> <span class="n">SIGNAL_ACCOUNT_POST_RENAME</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.manager</span> <span class="kn">import</span> <span class="n">AccountDBManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypedObject</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">make_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.signals</span> <span class="kn">import</span> <span class="n">SIGNAL_ACCOUNT_POST_RENAME</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"AccountDB"</span><span class="p">,)</span>
|
||||
|
||||
|
|
@ -185,11 +185,11 @@
|
|||
<span class="c1"># property/field access</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">smart_str</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{self.name}</span><span class="s2">(account </span><span class="si">{self.dbid}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">smart_str</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(account </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dbid</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{self.name}</span><span class="s2">(account#</span><span class="si">{self.dbid}</span><span class="s2">)"</span>
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(account#</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">dbid</span><span class="si">}</span><span class="s2">)"</span>
|
||||
|
||||
<span class="c1"># @property</span>
|
||||
<span class="k">def</span> <span class="nf">__username_get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -74,22 +74,22 @@
|
|||
<span class="sd">13. Return deferred that will fire with the return from `cmdobj.func()` (unused by default).</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">weakref</span> <span class="k">import</span> <span class="n">WeakValueDictionary</span>
|
||||
<span class="kn">from</span> <span class="nn">traceback</span> <span class="k">import</span> <span class="n">format_exc</span>
|
||||
<span class="kn">from</span> <span class="nn">itertools</span> <span class="k">import</span> <span class="n">chain</span>
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="k">import</span> <span class="n">copy</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">weakref</span> <span class="kn">import</span> <span class="n">WeakValueDictionary</span>
|
||||
<span class="kn">from</span> <span class="nn">traceback</span> <span class="kn">import</span> <span class="n">format_exc</span>
|
||||
<span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">chain</span>
|
||||
<span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">types</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet</span> <span class="k">import</span> <span class="n">reactor</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.task</span> <span class="k">import</span> <span class="n">deferLater</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.defer</span> <span class="k">import</span> <span class="n">inlineCallbacks</span><span class="p">,</span> <span class="n">returnValue</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="k">import</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">string_suggestions</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet</span> <span class="kn">import</span> <span class="n">reactor</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.task</span> <span class="kn">import</span> <span class="n">deferLater</span>
|
||||
<span class="kn">from</span> <span class="nn">twisted.internet.defer</span> <span class="kn">import</span> <span class="n">inlineCallbacks</span><span class="p">,</span> <span class="n">returnValue</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.commands.command</span> <span class="kn">import</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">string_suggestions</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="n">_IN_GAME_ERRORS</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">IN_GAME_ERRORS</span>
|
||||
|
||||
|
|
@ -260,7 +260,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_GET_INPUT</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_GET_INPUT</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmenu</span> <span class="k">import</span> <span class="n">get_input</span> <span class="k">as</span> <span class="n">_GET_INPUT</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">as</span> <span class="n">_GET_INPUT</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">response</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
|
|
@ -297,7 +297,7 @@
|
|||
<span class="k">class</span> <span class="nc">ExecSystemCommand</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
||||
<span class="s2">"Run a system command"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">syscmd</span><span class="p">,</span> <span class="n">sysarg</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">syscmd</span><span class="p">,</span> <span class="n">sysarg</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="p">(</span><span class="n">syscmd</span><span class="p">,</span> <span class="n">sysarg</span><span class="p">)</span> <span class="c1"># needed by exception error handling</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">syscmd</span> <span class="o">=</span> <span class="n">syscmd</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sysarg</span> <span class="o">=</span> <span class="n">sysarg</span>
|
||||
|
|
@ -306,7 +306,7 @@
|
|||
<span class="k">class</span> <span class="nc">ErrorReported</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
|
||||
<span class="s2">"Re-raised when a subsructure already reported the error"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">raw_string</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="p">(</span><span class="n">raw_string</span><span class="p">,)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_string</span> <span class="o">=</span> <span class="n">raw_string</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -49,8 +49,8 @@
|
|||
|
||||
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.logger</span> <span class="k">import</span> <span class="n">log_trace</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.utils.logger</span> <span class="kn">import</span> <span class="n">log_trace</span>
|
||||
|
||||
<span class="n">_MULTIMATCH_REGEX</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">SEARCH_MULTIMATCH_REGEX</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">U</span><span class="p">)</span>
|
||||
<span class="n">_CMD_IGNORE_PREFIXES</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">CMD_IGNORE_PREFIXES</span>
|
||||
|
|
|
|||
|
|
@ -67,9 +67,9 @@
|
|||
<span class="sd"> to affect the low-priority cmdset. Ex: A1,A3 + B1,B2,B4,B5 = B2,B4,B5</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">weakref</span> <span class="k">import</span> <span class="n">WeakKeyDictionary</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">inherits_from</span><span class="p">,</span> <span class="n">is_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">weakref</span> <span class="kn">import</span> <span class="n">WeakKeyDictionary</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">inherits_from</span><span class="p">,</span> <span class="n">is_iter</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"CmdSet"</span><span class="p">,)</span>
|
||||
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Fixes some things in the cmdclass</span>
|
||||
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
<span class="s2">"errmessage"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdSet.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdsetobj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdSet.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.cmdset.html#evennia.commands.cmdset.CmdSet.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdsetobj</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Creates a new CmdSet instance.</span>
|
||||
|
||||
|
|
@ -390,7 +390,7 @@
|
|||
<span class="n">cmdset</span><span class="o">.</span><span class="n">key_mergetypes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">key_mergetypes</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">cmdset</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Show all commands in cmdset when printing it.</span>
|
||||
|
||||
|
|
@ -405,10 +405,10 @@
|
|||
<span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
|
||||
<span class="p">])</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="p">(</span><span class="s2">", "</span> <span class="o">+</span> <span class="n">options</span><span class="p">)</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"<CmdSet </span><span class="si">{self.key}</span><span class="s2">, </span><span class="si">{self.mergetype}</span><span class="s2">, </span><span class="si">{perm}</span><span class="s2">, prio </span><span class="si">{self.priority}{options}</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="k">return</span> <span class="sa">f</span><span class="s2">"<CmdSet </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">perm</span><span class="si">}</span><span class="s2">, prio </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</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="p">[</span><span class="nb">str</span><span class="p">(</span><span class="n">cmd</span><span class="p">)</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commands</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">key</span><span class="p">)])</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Allows for things like 'for cmd in cmdset':</span>
|
||||
|
||||
|
|
@ -418,7 +418,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">commands</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">othercmd</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">othercmd</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns True if this cmdset contains the given command (as</span>
|
||||
<span class="sd"> defined by command name and aliases). This allows for things</span>
|
||||
|
|
@ -431,7 +431,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_contains_cache</span><span class="p">[</span><span class="n">othercmd</span><span class="p">]</span> <span class="o">=</span> <span class="n">ret</span>
|
||||
<span class="k">return</span> <span class="n">ret</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdset_a</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmdset_a</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Merge this cmdset (B) with another cmdset (A) using the + operator,</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -105,15 +105,15 @@
|
|||
<span class="sd">the 'Fishing' set. Fishing from a boat? No problem!</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">from</span> <span class="nn">traceback</span> <span class="k">import</span> <span class="n">format_exc</span>
|
||||
<span class="kn">from</span> <span class="nn">importlib</span> <span class="k">import</span> <span class="n">import_module</span>
|
||||
<span class="kn">from</span> <span class="nn">inspect</span> <span class="k">import</span> <span class="n">trace</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="k">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">traceback</span> <span class="kn">import</span> <span class="n">format_exc</span>
|
||||
<span class="kn">from</span> <span class="nn">importlib</span> <span class="kn">import</span> <span class="n">import_module</span>
|
||||
<span class="kn">from</span> <span class="nn">inspect</span> <span class="kn">import</span> <span class="n">trace</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.utils</span> <span class="kn">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"import_cmdset"</span><span class="p">,</span> <span class="s2">"CmdSetHandler"</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
<span class="sd"> will re-calculate the 'current' cmdset.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="CmdSetHandler.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">init_true</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CmdSetHandler.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.cmdsethandler.html#evennia.commands.cmdsethandler.CmdSetHandler.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">init_true</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This method is called whenever an object is recreated.</span>
|
||||
|
||||
|
|
@ -350,7 +350,7 @@
|
|||
<span class="k">if</span> <span class="n">init_true</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">init_mode</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># is then called from the object __init__.</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Display current commands</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -361,7 +361,7 @@
|
|||
<span class="c1"># We have more than one cmdset in stack; list them all</span>
|
||||
<span class="k">for</span> <span class="n">snum</span><span class="p">,</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cmdset_stack</span><span class="p">):</span>
|
||||
<span class="n">mergelist</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">snum</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">f</span><span class="s2">" {snum + 1}: </span><span class="si">{cmdset}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">snum</span> <span class="o">+</span> <span class="mi">1</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">cmdset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Display the currently active cmdset, limited by self.obj's permissions</span>
|
||||
<span class="n">mergetype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mergetype_stack</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
|
@ -373,7 +373,7 @@
|
|||
<span class="k">if</span> <span class="n">mergelist</span><span class="p">:</span>
|
||||
<span class="c1"># current is a result of mergers</span>
|
||||
<span class="n">mergelist</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">mergelist</span><span class="p">)</span>
|
||||
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">f</span><span class="s2">" <Merged </span><span class="si">{mergelist}</span><span class="s2">>: </span><span class="si">{self.current}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">" <Merged </span><span class="si">{</span><span class="n">mergelist</span><span class="si">}</span><span class="s2">>: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">current</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># current is a single cmdset</span>
|
||||
<span class="n">strings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current</span><span class="p">))</span>
|
||||
|
|
|
|||
|
|
@ -49,12 +49,12 @@
|
|||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">inspect</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="k">import</span> <span class="n">LockHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">lazy_property</span><span class="p">,</span> <span class="n">make_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="k">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">is_iter</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">lazy_property</span><span class="p">,</span> <span class="n">make_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_init_command</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
|
|
@ -140,7 +140,7 @@
|
|||
<span class="sd"> The metaclass cleans up all properties on the class</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="CommandMeta.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.CommandMeta.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CommandMeta.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.CommandMeta.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">_init_command</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div></div>
|
||||
|
||||
|
|
@ -225,7 +225,7 @@
|
|||
<span class="c1"># session - which session is responsible for triggering this command. Only set</span>
|
||||
<span class="c1"># if triggered by an account.</span>
|
||||
|
||||
<div class="viewcode-block" id="Command.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.Command.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Command.__init__"><a class="viewcode-back" href="../../../api/evennia.commands.command.html#evennia.commands.cmdhandler.Command.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The lockhandler works the same as for objects.</span>
|
||||
<span class="sd"> optional kwargs will be set as properties on the Command at runtime,</span>
|
||||
|
|
@ -239,13 +239,13 @@
|
|||
<span class="k">def</span> <span class="nf">lockhandler</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">LockHandler</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Print the command key</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">key</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Compare two command instances to each other by matching their</span>
|
||||
<span class="sd"> key and aliases.</span>
|
||||
|
|
@ -265,7 +265,7 @@
|
|||
<span class="c1"># probably got a string</span>
|
||||
<span class="k">return</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_matchset</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Python 3 requires that any class which implements __eq__ must also</span>
|
||||
<span class="sd"> implement __hash__ and that the corresponding hashes for equivalent</span>
|
||||
|
|
@ -278,7 +278,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">hash</span><span class="p">(</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="bp">self</span><span class="o">.</span><span class="n">_matchset</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__ne__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cmd</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> The logical negation of __eq__. Since this is one of the most</span>
|
||||
<span class="sd"> called methods in Evennia (along with __eq__) we do some</span>
|
||||
|
|
@ -290,7 +290,7 @@
|
|||
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">cmd</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_matchset</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This implements searches like 'if query in cmd'. It's a fuzzy</span>
|
||||
<span class="sd"> matching used by the help system, returning True if query can</span>
|
||||
|
|
@ -472,9 +472,9 @@
|
|||
<span class="n">variables</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">" |w</span><span class="si">{}</span><span class="s2">|n (</span><span class="si">{}</span><span class="s2">): </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">val</span><span class="p">),</span> <span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"""</span>
|
||||
<span class="s2">Command </span><span class="si">{self}</span><span class="s2"> has no defined `func()` - showing on-command variables:</span>
|
||||
<span class="si">{variables}</span><span class="s2"></span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
||||
<span class="s2">Command </span><span class="si">{</span><span class="bp">self</span><span class="si">}</span><span class="s2"> has no defined `func()` - showing on-command variables:</span>
|
||||
<span class="si">{</span><span class="n">variables</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2"> """</span>
|
||||
<span class="c1"># a simple test command to show the available properties</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="s2">"-"</span> <span class="o">*</span> <span class="mi">50</span>
|
||||
|
|
@ -581,21 +581,21 @@
|
|||
<span class="n">colornames</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">column_color</span><span class="p">,</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">args</span><span class="p">]</span>
|
||||
|
||||
<span class="n">h_line_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"header_line_char"</span><span class="p">,</span> <span class="s2">"~"</span><span class="p">)</span>
|
||||
<span class="n">header_line_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{h_line_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">header_line_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">h_line_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">c_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"corner_char"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span>
|
||||
<span class="n">corner_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{c_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">corner_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">c_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">b_left_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"border_left_char"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span>
|
||||
<span class="n">border_left_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{b_left_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">border_left_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">b_left_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">b_right_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"border_right_char"</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span>
|
||||
<span class="n">border_right_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{b_right_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">border_right_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">b_right_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">b_bottom_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"border_bottom_char"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span>
|
||||
<span class="n">border_bottom_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{b_bottom_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">border_bottom_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">b_bottom_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">b_top_char</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"border_top_char"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span>
|
||||
<span class="n">border_top_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="n">f</span><span class="s2">"|</span><span class="si">{border_color}{b_top_char}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
<span class="n">border_top_char</span> <span class="o">=</span> <span class="n">ANSIString</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|</span><span class="si">{</span><span class="n">border_color</span><span class="si">}{</span><span class="n">b_top_char</span><span class="si">}</span><span class="s2">|n"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">table</span> <span class="o">=</span> <span class="n">EvTable</span><span class="p">(</span>
|
||||
<span class="o">*</span><span class="n">colornames</span><span class="p">,</span>
|
||||
|
|
|
|||
|
|
@ -60,10 +60,10 @@
|
|||
|
||||
<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="k">import</span> <span class="n">lookup</span> <span class="k">as</span> <span class="n">codecs_lookup</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span><span class="p">,</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="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">utils</span><span class="p">,</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="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>
|
||||
|
||||
|
|
@ -196,9 +196,9 @@
|
|||
<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">charmax</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">charmax</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="n">f</span><span class="s2">"You may only create a maximum of </span><span class="si">{charmax}</span><span class="s2"> character</span><span class="si">{plural}</span><span class="s2">."</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">"You may only create a maximum of </span><span class="si">{</span><span class="n">charmax</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="k">import</span> <span class="n">ObjectDB</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>
|
||||
|
||||
|
|
@ -273,7 +273,7 @@
|
|||
<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="k">import</span> <span class="n">get_input</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>
|
||||
|
|
@ -910,7 +910,7 @@
|
|||
|
||||
<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="k">import</span> <span class="n">ansi</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>
|
||||
|
|
@ -1040,7 +1040,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Already quelling Account </span><span class="si">%s</span><span class="s2"> permissions."</span> <span class="o">%</span> <span class="n">permstr</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="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="s2">"Quelling to current puppet's permissions </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="n">cpermstr</span>
|
||||
|
|
|
|||
|
|
@ -47,10 +47,10 @@
|
|||
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.models</span> <span class="k">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">evtable</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">class_from_module</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.server.models</span> <span class="kn">import</span> <span class="n">ServerConfig</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">evtable</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">class_from_module</span>
|
||||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</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>
|
||||
|
||||
|
|
|
|||
|
|
@ -60,10 +60,10 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.batchprocessors</span> <span class="k">import</span> <span class="n">BATCHCMD</span><span class="p">,</span> <span class="n">BATCHCODE</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</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.utils.batchprocessors</span> <span class="kn">import</span> <span class="n">BATCHCMD</span><span class="p">,</span> <span class="n">BATCHCODE</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span>
|
||||
|
||||
|
||||
<span class="n">_RE_COMMENT</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^#.*?$"</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">MULTILINE</span> <span class="o">+</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@
|
|||
<span class="sd">Building and world design commands</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Q</span><span class="p">,</span> <span class="n">Min</span><span class="p">,</span> <span class="n">Max</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="k">import</span> <span class="n">LockException</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">get_and_merge_cmdsets</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="p">(</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">django.db.models</span> <span class="kn">import</span> <span class="n">Q</span><span class="p">,</span> <span class="n">Min</span><span class="p">,</span> <span class="n">Max</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="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockException</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">get_and_merge_cmdsets</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">utils</span><span class="p">,</span> <span class="n">search</span><span class="p">,</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">inherits_from</span><span class="p">,</span>
|
||||
<span class="n">class_from_module</span><span class="p">,</span>
|
||||
<span class="n">get_all_typeclasses</span><span class="p">,</span>
|
||||
|
|
@ -59,11 +59,11 @@
|
|||
<span class="n">list_to_string</span><span class="p">,</span>
|
||||
<span class="n">display_len</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="k">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="k">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="k">import</span> <span class="n">spawner</span><span class="p">,</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span><span class="p">,</span> <span class="n">menus</span> <span class="k">as</span> <span class="n">olc_menus</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">ansi_raw</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.inlinefuncs</span> <span class="k">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">inlinefunc_raw</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="kn">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">spawner</span><span class="p">,</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span><span class="p">,</span> <span class="n">menus</span> <span class="k">as</span> <span class="n">olc_menus</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">ansi_raw</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.inlinefuncs</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">inlinefunc_raw</span>
|
||||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</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>
|
||||
|
||||
|
|
@ -98,7 +98,7 @@
|
|||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># used by set</span>
|
||||
<span class="kn">from</span> <span class="nn">ast</span> <span class="k">import</span> <span class="n">literal_eval</span> <span class="k">as</span> <span class="n">_LITERAL_EVAL</span>
|
||||
<span class="kn">from</span> <span class="nn">ast</span> <span class="kn">import</span> <span class="n">literal_eval</span> <span class="k">as</span> <span class="n">_LITERAL_EVAL</span>
|
||||
|
||||
<span class="n">LIST_APPEND_CHAR</span> <span class="o">=</span> <span class="s2">"+"</span>
|
||||
|
||||
|
|
@ -1861,7 +1861,7 @@
|
|||
<span class="sd"> Returns:</span>
|
||||
<span class="sd"> A typeclassed object, or None if nothing is found.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">variable_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">variable_from_module</span>
|
||||
|
||||
<span class="n">_AT_SEARCH_RESULT</span> <span class="o">=</span> <span class="n">variable_from_module</span><span class="p">(</span><span class="o">*</span><span class="n">settings</span><span class="o">.</span><span class="n">SEARCH_AT_RESULT</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
|
|
@ -2428,9 +2428,9 @@
|
|||
<span class="n">value</span> <span class="o">=</span> <span class="n">utils</span><span class="o">.</span><span class="n">crop</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">inlinefunc_raw</span><span class="p">(</span><span class="n">ansi_raw</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">category</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{attr}</span><span class="s2">[</span><span class="si">{category}</span><span class="s2">] = </span><span class="si">{value}</span><span class="s2">"</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">] = </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{attr}</span><span class="s2"> = </span><span class="si">{value}</span><span class="s2">"</span></div>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">attr</span><span class="si">}</span><span class="s2"> = </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.format_attributes"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.format_attributes">[docs]</a> <span class="k">def</span> <span class="nf">format_attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">attrname</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">crop</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -2448,7 +2448,7 @@
|
|||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">ndb_attr</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">db_attr</span> <span class="ow">or</span> <span class="n">ndb_attr</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="s2">"Attribue(s)"</span><span class="p">:</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> No Attribute '</span><span class="si">{attrname}</span><span class="s2">' found on </span><span class="si">{obj.name}</span><span class="s2">"</span><span class="p">}</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="s2">"Attribue(s)"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> No Attribute '</span><span class="si">{</span><span class="n">attrname</span><span class="si">}</span><span class="s2">' found on </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">name</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">db_attr</span> <span class="o">=</span> <span class="p">[(</span><span class="n">attr</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">attr</span><span class="o">.</span><span class="n">category</span><span class="p">)</span> <span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">db_attributes</span><span class="o">.</span><span class="n">all</span><span class="p">()]</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
|
|
@ -2488,23 +2488,23 @@
|
|||
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="c1"># main key</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Name/key"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.name}</span><span class="s2">|n (</span><span class="si">{obj.dbref}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Name/key"</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">dclr</span><span class="si">}{</span><span class="n">obj</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">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="c1"># aliases</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"aliases"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Aliases"</span><span class="p">]</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">utils</span><span class="o">.</span><span class="n">make_iter</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">aliases</span><span class="p">)))</span>
|
||||
<span class="c1"># typeclass</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{obj.typename}</span><span class="s2"> (</span><span class="si">{obj.typeclass_path}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">typename</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="c1"># sessions</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"sessions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</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">output</span><span class="p">[</span><span class="s2">"Session id(s)"</span><span class="p">]</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">f</span><span class="s2">"#</span><span class="si">{sess.sessid}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">obj</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">output</span><span class="p">[</span><span class="s2">"Session id(s)"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"#</span><span class="si">{</span><span class="n">sess</span><span class="o">.</span><span class="n">sessid</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">sess</span> <span class="ow">in</span> <span class="n">obj</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="c1"># email, if any</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"email"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">email</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Email"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.email}</span><span class="s2">|n"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Email"</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">dclr</span><span class="si">}{</span><span class="n">obj</span><span class="o">.</span><span class="n">email</span><span class="si">}</span><span class="s2">|n"</span>
|
||||
<span class="c1"># account, for puppeted objects</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"has_account"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">has_account</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Account"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{dclr}{obj.account.name}</span><span class="s2">|n (</span><span class="si">{obj.account.dbref}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Account"</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">dclr</span><span class="si">}{</span><span class="n">obj</span><span class="o">.</span><span class="n">account</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">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="c1"># account typeclass</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">" Account Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{obj.account.typename}</span><span class="s2"> (</span><span class="si">{obj.account.typeclass_path}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">" Account Typeclass"</span><span class="p">]</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">typename</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">typeclass_path</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="c1"># account permissions</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</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="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="o">.</span><span class="n">is_superuser</span><span class="p">:</span>
|
||||
|
|
@ -2513,25 +2513,25 @@
|
|||
<span class="n">perms</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"<None>"</span><span class="p">]</span>
|
||||
<span class="n">perms</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">perms</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</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">has</span><span class="p">(</span><span class="s2">"_quell"</span><span class="p">):</span>
|
||||
<span class="n">perms</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" </span><span class="si">{qclr}</span><span class="s2">(quelled)|n"</span>
|
||||
<span class="n">perms</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">qclr</span><span class="si">}</span><span class="s2">(quelled)|n"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">" Account Permissions"</span><span class="p">]</span> <span class="o">=</span> <span class="n">perms</span>
|
||||
<span class="c1"># location</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"location"</span><span class="p">):</span>
|
||||
<span class="n">loc</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="p">:</span>
|
||||
<span class="n">loc</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.location.id}</span><span class="s2">)"</span>
|
||||
<span class="n">loc</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" (#</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Location"</span><span class="p">]</span> <span class="o">=</span> <span class="n">loc</span>
|
||||
<span class="c1"># home</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"home"</span><span class="p">):</span>
|
||||
<span class="n">home</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="p">:</span>
|
||||
<span class="n">home</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.home.id}</span><span class="s2">)"</span>
|
||||
<span class="n">home</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" (#</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">home</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Home"</span><span class="p">]</span> <span class="o">=</span> <span class="n">home</span>
|
||||
<span class="c1"># destination, for exits</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"destination"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">dest</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="p">:</span>
|
||||
<span class="n">dest</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (#</span><span class="si">{obj.destination.id}</span><span class="s2">)"</span>
|
||||
<span class="n">dest</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" (#</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">destination</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Destination"</span><span class="p">]</span> <span class="o">=</span> <span class="n">dest</span>
|
||||
<span class="c1"># main permissions</span>
|
||||
<span class="n">perms</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">permissions</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
|
||||
|
|
@ -2561,8 +2561,8 @@
|
|||
<span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="n">value</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{string}</span><span class="s2">: T"</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{string}</span><span class="s2">: F"</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">string</span><span class="si">}</span><span class="s2">: T"</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">string</span><span class="si">}</span><span class="s2">: F"</span>
|
||||
<span class="n">options</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">_truefalse</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">cmdset</span><span class="p">,</span> <span class="n">opt</span><span class="p">))</span>
|
||||
<span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no_exits"</span><span class="p">,</span> <span class="s2">"no_objs"</span><span class="p">,</span> <span class="s2">"no_channels"</span><span class="p">,</span> <span class="s2">"duplicates"</span><span class="p">)</span>
|
||||
|
|
@ -2579,7 +2579,7 @@
|
|||
<span class="k">continue</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="n">_format_options</span><span class="p">(</span><span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="n">stored</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{cmdset.path}</span><span class="s2"> [</span><span class="si">{cmdset.key}</span><span class="s2">] (</span><span class="si">{cmdset.mergetype}</span><span class="s2">, prio </span><span class="si">{cmdset.priority}{options}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2"> [</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">] (</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2">, prio </span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Stored Cmdset(s)"</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="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">stored</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># this gets all components of the currently merged set</span>
|
||||
|
|
@ -2617,29 +2617,29 @@
|
|||
<span class="c1"># the resulting merged cmdset</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="n">_format_options</span><span class="p">(</span><span class="n">current_cmdset</span><span class="p">)</span>
|
||||
<span class="n">merged</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">f</span><span class="s2">"<Current merged cmdset> (</span><span class="si">{current_cmdset.mergetype}</span><span class="s2"> prio </span><span class="si">{current_cmdset.priority}{options}</span><span class="s2">)"</span><span class="p">]</span>
|
||||
<span class="sa">f</span><span class="s2">"<Current merged cmdset> (</span><span class="si">{</span><span class="n">current_cmdset</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2"> prio </span><span class="si">{</span><span class="n">current_cmdset</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">)"</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># the merge stack</span>
|
||||
<span class="k">for</span> <span class="n">cmdset</span> <span class="ow">in</span> <span class="n">all_cmdsets</span><span class="p">:</span>
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="n">_format_options</span><span class="p">(</span><span class="n">cmdset</span><span class="p">)</span>
|
||||
<span class="n">merged</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{cmdset.path}</span><span class="s2"> [</span><span class="si">{cmdset.key}</span><span class="s2">] (</span><span class="si">{cmdset.mergetype}</span><span class="s2"> prio </span><span class="si">{cmdset.priority}{options}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2"> [</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">] (</span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">mergetype</span><span class="si">}</span><span class="s2"> prio </span><span class="si">{</span><span class="n">cmdset</span><span class="o">.</span><span class="n">priority</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Merged Cmdset(s)"</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="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">merged</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># list the commands available to this object</span>
|
||||
<span class="n">current_commands</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">([</span><span class="n">cmd</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">current_cmdset</span> <span class="k">if</span> <span class="n">cmd</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"cmd"</span><span class="p">)])</span>
|
||||
<span class="n">cmdsetstr</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">utils</span><span class="o">.</span><span class="n">fill</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">current_commands</span><span class="p">),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="n">f</span><span class="s2">"Commands available to </span><span class="si">{obj.key}</span><span class="s2"> (result of Merged CmdSets)"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmdsetstr</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="sa">f</span><span class="s2">"Commands available to </span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> (result of Merged CmdSets)"</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cmdsetstr</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># scripts</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"scripts"</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="p">,</span> <span class="s2">"all"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Scripts"</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">f</span><span class="s2">"</span><span class="si">{obj.scripts}</span><span class="s2">"</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Scripts"</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="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">obj</span><span class="o">.</span><span class="n">scripts</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="c1"># add the attributes</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">format_attributes</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span>
|
||||
<span class="c1"># Tags</span>
|
||||
<span class="n">tags</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">all</span><span class="p">(</span><span class="n">return_key_and_category</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">tags_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">utils</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span>
|
||||
<span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{tag}</span><span class="s2">[</span><span class="si">{category}</span><span class="s2">]"</span> <span class="k">for</span> <span class="n">tag</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">tags</span><span class="p">)),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">tag</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">category</span><span class="si">}</span><span class="s2">]"</span> <span class="k">for</span> <span class="n">tag</span><span class="p">,</span> <span class="n">category</span> <span class="ow">in</span> <span class="n">tags</span><span class="p">)),</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">tags</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Tags[category]"</span><span class="p">]</span> <span class="o">=</span> <span class="n">tags_string</span>
|
||||
|
|
@ -2657,15 +2657,15 @@
|
|||
<span class="n">things</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">exits</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Exits (has .destination)"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{exit.name}</span><span class="s2">(</span><span class="si">{exit.dbref}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">exits</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exit</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">exit</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">exit</span> <span class="ow">in</span> <span class="n">exits</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">pobjs</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Characters"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{dclr}{pobj.name}</span><span class="s2">|n(</span><span class="si">{pobj.dbref}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">pobj</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">dclr</span><span class="si">}{</span><span class="n">pobj</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">pobj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span> <span class="k">for</span> <span class="n">pobj</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">things</span><span class="p">:</span>
|
||||
<span class="n">output</span><span class="p">[</span><span class="s2">"Contents"</span><span class="p">]</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">f</span><span class="s2">"</span><span class="si">{cont.name}</span><span class="s2">(</span><span class="si">{cont.dbref}</span><span class="s2">)"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">cont</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">cont</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="k">for</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">obj</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exits</span> <span class="ow">and</span> <span class="n">cont</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pobjs</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -2676,8 +2676,8 @@
|
|||
<span class="n">max_width</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">client_width</span><span class="p">(),</span> <span class="n">max_width</span><span class="p">))</span>
|
||||
|
||||
<span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">separator</span> <span class="o">*</span> <span class="n">max_width</span>
|
||||
<span class="n">mainstr</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">f</span><span class="s2">"</span><span class="si">{hclr}{header}</span><span class="s2">|n: </span><span class="si">{block}</span><span class="s2">"</span> <span class="k">for</span> <span class="p">(</span><span class="n">header</span><span class="p">,</span> <span class="n">block</span><span class="p">)</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"</span><span class="si">{sep}</span><span class="se">\n</span><span class="si">{mainstr}</span><span class="se">\n</span><span class="si">{sep}</span><span class="s2">"</span></div>
|
||||
<span class="n">mainstr</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="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">hclr</span><span class="si">}{</span><span class="n">header</span><span class="si">}</span><span class="s2">|n: </span><span class="si">{</span><span class="n">block</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="p">(</span><span class="n">header</span><span class="p">,</span> <span class="n">block</span><span class="p">)</span> <span class="ow">in</span> <span class="n">output</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">mainstr</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">sep</span><span class="si">}</span><span class="s2">"</span></div>
|
||||
|
||||
<div class="viewcode-block" id="CmdExamine.func"><a class="viewcode-back" href="../../../../api/evennia.commands.default.building.html#evennia.commands.default.building.CmdExamine.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">"""Process command"""</span>
|
||||
|
|
@ -2747,7 +2747,7 @@
|
|||
<span class="k">for</span> <span class="n">attrname</span> <span class="ow">in</span> <span class="n">obj_attrs</span><span class="p">:</span>
|
||||
<span class="c1"># we are only interested in specific attributes</span>
|
||||
<span class="n">ret</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">f</span><span class="s2">"</span><span class="si">{self.header_color}{header}</span><span class="s2">|n:</span><span class="si">{value}</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">header_color</span><span class="si">}{</span><span class="n">header</span><span class="si">}</span><span class="s2">|n:</span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">for</span> <span class="n">header</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_attributes</span><span class="p">(</span>
|
||||
<span class="n">obj</span><span class="p">,</span> <span class="n">attrname</span><span class="p">,</span> <span class="n">crop</span><span class="o">=</span><span class="kc">False</span>
|
||||
<span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
|
|
@ -2826,7 +2826,7 @@
|
|||
<span class="n">low</span><span class="p">,</span> <span class="n">high</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">qs</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">low</span> <span class="ow">and</span> <span class="n">high</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{self.__class__.__name__}</span><span class="s2">: Min and max ID not returned by aggregation; falling back to queryset slicing."</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: Min and max ID not returned by aggregation; falling back to queryset slicing."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
|
|
@ -2855,7 +2855,7 @@
|
|||
<span class="k">return</span>
|
||||
<span class="k">except</span> <span class="ne">IndexError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_err</span><span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{self.__class__.__name__}</span><span class="s2">: Error parsing upper and lower bounds of query."</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">: Error parsing upper and lower bounds of query."</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -2954,24 +2954,24 @@
|
|||
<span class="c1"># still results after type filtering?</span>
|
||||
<span class="k">if</span> <span class="n">nresults</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">nresults</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">header</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{nresults}</span><span class="s2"> Matches"</span>
|
||||
<span class="n">header</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">nresults</span><span class="si">}</span><span class="s2"> Matches"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">header</span> <span class="o">=</span> <span class="s2">"One Match"</span>
|
||||
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|w</span><span class="si">{header}</span><span class="s2">|n(#</span><span class="si">{low}</span><span class="s2">-#</span><span class="si">{high}{restrictions}</span><span class="s2">):"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">header</span><span class="si">}</span><span class="s2">|n(#</span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">high</span><span class="si">}{</span><span class="n">restrictions</span><span class="si">}</span><span class="s2">):"</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">for</span> <span class="n">res</span> <span class="ow">in</span> <span class="n">results</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |g{res.get_display_name(caller)} - </span><span class="si">{res.path}</span><span class="s2">|n"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |g</span><span class="si">{</span><span class="n">res</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">res</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2">|n"</span>
|
||||
<span class="k">if</span> <span class="p">(</span>
|
||||
<span class="s2">"loc"</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span>
|
||||
<span class="ow">and</span> <span class="n">nresults</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="ow">and</span> <span class="n">res</span>
|
||||
<span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="s2">"location"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="p">):</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">" (|wlocation|n: |g{res.location.get_display_name(caller)}|n)"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" (|wlocation|n: |g</span><span class="si">{</span><span class="n">res</span><span class="o">.</span><span class="n">location</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">)</span><span class="si">}</span><span class="s2">|n)"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|wNo Matches|n(#</span><span class="si">{low}</span><span class="s2">-#</span><span class="si">{high}{restrictions}</span><span class="s2">):"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |RNo matches found for '</span><span class="si">{searchstring}</span><span class="s2">'|n"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|wNo Matches|n(#</span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">high</span><span class="si">}{</span><span class="n">restrictions</span><span class="si">}</span><span class="s2">):"</span>
|
||||
<span class="n">string</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> |RNo matches found for '</span><span class="si">{</span><span class="n">searchstring</span><span class="si">}</span><span class="s2">'|n"</span>
|
||||
|
||||
<span class="c1"># send result</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span></div></div>
|
||||
|
|
@ -3147,7 +3147,7 @@
|
|||
<span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"No scripts defined on </span><span class="si">%s</span><span class="s2">."</span> <span class="o">%</span> <span class="n">obj</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">caller</span><span class="p">))</span>
|
||||
<span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">switches</span><span class="p">:</span>
|
||||
<span class="c1"># view all scripts</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.system</span> <span class="k">import</span> <span class="n">ScriptEvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.system</span> <span class="kn">import</span> <span class="n">ScriptEvMore</span>
|
||||
|
||||
<span class="n">ScriptEvMore</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="p">,</span> <span class="n">scripts</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s2">"id"</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">return</span>
|
||||
|
|
@ -3447,7 +3447,7 @@
|
|||
<span class="c1"># handle the search result</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">prototypes</span><span class="p">:</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"No prototype named '</span><span class="si">{prototype_key}</span><span class="s2">' was found."</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"No prototype named '</span><span class="si">{</span><span class="n">prototype_key</span><span class="si">}</span><span class="s2">' was found."</span>
|
||||
<span class="k">elif</span> <span class="n">nprots</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">err</span> <span class="o">=</span> <span class="s2">"Found </span><span class="si">{}</span><span class="s2"> prototypes matching '</span><span class="si">{}</span><span class="s2">':</span><span class="se">\n</span><span class="s2"> </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">nprots</span><span class="p">,</span>
|
||||
|
|
@ -3496,7 +3496,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prototype</span><span class="p">,</span> <span class="n">expect</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">eval_err</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{inp}</span><span class="se">\n</span><span class="si">{eval_err}</span><span class="se">\n</span><span class="s2">|RCritical Python syntax error in argument. Only primitive "</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">inp</span><span class="si">}</span><span class="se">\n</span><span class="si">{</span><span class="n">eval_err</span><span class="si">}</span><span class="se">\n</span><span class="s2">|RCritical Python syntax error in argument. Only primitive "</span>
|
||||
<span class="s2">"Python structures are allowed. </span><span class="se">\n</span><span class="s2">Make sure to use correct "</span>
|
||||
<span class="s2">"Python syntax. Remember especially to put quotes around all "</span>
|
||||
<span class="s2">"strings inside lists and dicts.|n For more advanced uses, embed "</span>
|
||||
|
|
@ -3547,7 +3547,7 @@
|
|||
<span class="k">if</span> <span class="n">prototypes</span><span class="p">:</span>
|
||||
<span class="k">return</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">protlib</span><span class="o">.</span><span class="n">prototype_to_str</span><span class="p">(</span><span class="n">prot</span><span class="p">)</span> <span class="k">for</span> <span class="n">prot</span> <span class="ow">in</span> <span class="n">prototypes</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="n">query</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"No prototype named '</span><span class="si">{query}</span><span class="s2">' was found."</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No prototype named '</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">' was found."</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">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"No prototypes found."</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -3584,8 +3584,8 @@
|
|||
<span class="n">n_existing</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">existing_objects</span><span class="p">)</span>
|
||||
<span class="n">slow</span> <span class="o">=</span> <span class="s2">" (note that this may be slow)"</span> <span class="k">if</span> <span class="n">n_existing</span> <span class="o">></span> <span class="mi">10</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"There are </span><span class="si">{n_existing}</span><span class="s2"> existing object(s) with an older version "</span>
|
||||
<span class="n">f</span><span class="s2">"of prototype '</span><span class="si">{prototype_key}</span><span class="s2">'. Should it be re-applied to them</span><span class="si">{slow}</span><span class="s2">? [Y]/N"</span>
|
||||
<span class="sa">f</span><span class="s2">"There are </span><span class="si">{</span><span class="n">n_existing</span><span class="si">}</span><span class="s2"> existing object(s) with an older version "</span>
|
||||
<span class="sa">f</span><span class="s2">"of prototype '</span><span class="si">{</span><span class="n">prototype_key</span><span class="si">}</span><span class="s2">'. Should it be re-applied to them</span><span class="si">{</span><span class="n">slow</span><span class="si">}</span><span class="s2">? [Y]/N"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="n">string</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</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">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">]:</span>
|
||||
|
|
@ -3600,7 +3600,7 @@
|
|||
<span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span>
|
||||
<span class="n">logger</span><span class="o">.</span><span class="n">log_trace</span><span class="p">()</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"</span><span class="si">{n_updated}</span><span class="s2"> objects were updated."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">n_updated</span><span class="si">}</span><span class="s2"> objects were updated."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_parse_key_desc_tags</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">argstring</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
|
|
@ -3749,20 +3749,20 @@
|
|||
|
||||
<span class="k">if</span> <span class="n">old_prototype</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">diffstr</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|yAlready existing Prototype:|n</span><span class="se">\n</span><span class="si">{new_prototype_detail}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|yAlready existing Prototype:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">new_prototype_detail</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">question</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">There seems to be no changes. Do you still want to (re)save? [Y]/N"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">f</span><span class="s1">'|yExisting prototype "</span><span class="si">{prototype_key}</span><span class="s1">" found. Change:|n</span><span class="se">\n</span><span class="si">{diffstr}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="n">f</span><span class="s2">"|yNew changed prototype:|n</span><span class="se">\n</span><span class="si">{new_prototype_detail}</span><span class="s2">"</span>
|
||||
<span class="sa">f</span><span class="s1">'|yExisting prototype "</span><span class="si">{</span><span class="n">prototype_key</span><span class="si">}</span><span class="s1">" found. Change:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">diffstr</span><span class="si">}</span><span class="se">\n</span><span class="s1">'</span>
|
||||
<span class="sa">f</span><span class="s2">"|yNew changed prototype:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">new_prototype_detail</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">question</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n</span><span class="s2">|yDo you want to apply the change to the existing prototype?|n [Y]/N"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|yCreating new prototype:|n</span><span class="se">\n</span><span class="si">{new_prototype_detail}</span><span class="s2">"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|yCreating new prototype:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">new_prototype_detail</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">question</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Do you want to continue saving? [Y]/N"</span>
|
||||
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="n">string</span> <span class="o">+</span> <span class="n">question</span><span class="p">)</span>
|
||||
|
|
@ -3791,7 +3791,7 @@
|
|||
<span class="n">ncount</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">protlib</span><span class="o">.</span><span class="n">search_prototype</span><span class="p">())</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span>
|
||||
<span class="s2">"Usage: spawn <prototype-key> or {{key: value, ...}}"</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> (</span><span class="si">{ncount}</span><span class="s2"> existing prototypes. Use /list to inspect)"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> (</span><span class="si">{</span><span class="n">ncount</span><span class="si">}</span><span class="s2"> existing prototypes. Use /list to inspect)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
|
|
@ -3801,7 +3801,7 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">prototype_detail</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|rDeleting prototype:|n</span><span class="se">\n</span><span class="si">{prototype_detail}</span><span class="s2">"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|rDeleting prototype:|n</span><span class="se">\n</span><span class="si">{</span><span class="n">prototype_detail</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">question</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Do you want to continue deleting? [Y]/N"</span>
|
||||
<span class="n">answer</span> <span class="o">=</span> <span class="k">yield</span> <span class="p">(</span><span class="n">string</span> <span class="o">+</span> <span class="n">question</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">answer</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">"n"</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">]:</span>
|
||||
|
|
@ -3811,7 +3811,7 @@
|
|||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">success</span> <span class="o">=</span> <span class="n">protlib</span><span class="o">.</span><span class="n">delete_prototype</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">except</span> <span class="n">protlib</span><span class="o">.</span><span class="n">PermissionError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
|
||||
<span class="n">retmsg</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|rError deleting:|R </span><span class="si">{err}</span><span class="s2">|n"</span>
|
||||
<span class="n">retmsg</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|rError deleting:|R </span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">|n"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">retmsg</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"Deletion successful"</span>
|
||||
|
|
|
|||
|
|
@ -50,9 +50,9 @@
|
|||
<span class="sd">command method rather than caller.msg().</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">help</span><span class="p">,</span> <span class="n">comms</span><span class="p">,</span> <span class="n">admin</span><span class="p">,</span> <span class="n">system</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">building</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="n">general</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">help</span><span class="p">,</span> <span class="n">comms</span><span class="p">,</span> <span class="n">admin</span><span class="p">,</span> <span class="n">system</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">building</span><span class="p">,</span> <span class="n">account</span><span class="p">,</span> <span class="n">general</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="AccountCmdSet"><a class="viewcode-back" href="../../../../api/evennia.commands.default.cmdset_account.html#evennia.commands.default.cmdset_account.AccountCmdSet">[docs]</a><span class="k">class</span> <span class="nc">AccountCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -45,10 +45,10 @@
|
|||
<span class="sd">communication-commands are instead put on the account level, in the</span>
|
||||
<span class="sd">Account cmdset. Account commands remain available also to Characters.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">general</span><span class="p">,</span> <span class="n">help</span><span class="p">,</span> <span class="n">admin</span><span class="p">,</span> <span class="n">system</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">building</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">batchprocess</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">general</span><span class="p">,</span> <span class="n">help</span><span class="p">,</span> <span class="n">admin</span><span class="p">,</span> <span class="n">system</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">building</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">batchprocess</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="CharacterCmdSet"><a class="viewcode-back" href="../../../../api/evennia.commands.default.cmdset_character.html#evennia.commands.default.cmdset_character.CharacterCmdSet">[docs]</a><span class="k">class</span> <span class="nc">CharacterCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@
|
|||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">This module stores session-level commands.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">account</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">account</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SessionCmdSet"><a class="viewcode-back" href="../../../../api/evennia.commands.default.cmdset_session.html#evennia.commands.default.cmdset_session.SessionCmdSet">[docs]</a><span class="k">class</span> <span class="nc">SessionCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@
|
|||
<span class="sd">The setting STATE_UNLOGGED should be set to the python path</span>
|
||||
<span class="sd">of the state instance in this module.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="n">unloggedin</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="n">unloggedin</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="UnloggedinCmdSet"><a class="viewcode-back" href="../../../../api/evennia.commands.default.cmdset_unloggedin.html#evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet">[docs]</a><span class="k">class</span> <span class="nc">UnloggedinCmdSet</span><span class="p">(</span><span class="n">CmdSet</span><span class="p">):</span>
|
||||
|
|
|
|||
|
|
@ -50,14 +50,14 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">hashlib</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span><span class="p">,</span> <span class="n">Msg</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts</span> <span class="k">import</span> <span class="n">bots</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="k">import</span> <span class="n">LockException</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">evtable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">class_from_module</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.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span><span class="p">,</span> <span class="n">Msg</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts</span> <span class="kn">import</span> <span class="n">bots</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockException</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">utils</span><span class="p">,</span> <span class="n">evtable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">class_from_module</span>
|
||||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</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">CHANNEL_DEFAULT_TYPECLASS</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">BASE_CHANNEL_TYPECLASS</span><span class="p">)</span>
|
||||
|
|
@ -870,16 +870,16 @@
|
|||
|
||||
<span class="n">clr</span> <span class="o">=</span> <span class="s2">"|c"</span> <span class="k">if</span> <span class="n">sending</span> <span class="k">else</span> <span class="s2">"|g"</span>
|
||||
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|n,</span><span class="si">{clr}</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">senders</span><span class="p">)</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|n,</span><span class="si">{clr}</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">receivers</span><span class="p">])</span>
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|n,</span><span class="si">{</span><span class="n">clr</span><span class="si">}</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">senders</span><span class="p">)</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|n,</span><span class="si">{</span><span class="n">clr</span><span class="si">}</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">obj</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">receivers</span><span class="p">])</span>
|
||||
<span class="k">if</span> <span class="n">sending</span><span class="p">:</span>
|
||||
<span class="n">template</span> <span class="o">=</span> <span class="n">to_template</span>
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{sender}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_send</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="n">f</span><span class="s2">" </span><span class="si">{receiver}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">multi_recv</span> <span class="k">else</span> <span class="n">f</span><span class="s2">" </span><span class="si">{receiver}</span><span class="s2">"</span>
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sender</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_send</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">receiver</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">multi_recv</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">receiver</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">template</span> <span class="o">=</span> <span class="n">from_template</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{receiver}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_recv</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="n">f</span><span class="s2">" </span><span class="si">{sender}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_send</span> <span class="k">else</span> <span class="n">f</span><span class="s2">" </span><span class="si">{sender}</span><span class="s2">"</span>
|
||||
<span class="n">receiver</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">receiver</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_recv</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">sender</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">sender</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">multi_send</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">sender</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="n">listing</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
|
|
@ -1395,7 +1395,7 @@
|
|||
<span class="n">bot</span> <span class="o">=</span> <span class="n">create</span><span class="o">.</span><span class="n">create_account</span><span class="p">(</span><span class="n">botname</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="n">typeclass</span><span class="o">=</span><span class="n">bots</span><span class="o">.</span><span class="n">GrapevineBot</span><span class="p">)</span>
|
||||
|
||||
<span class="n">bot</span><span class="o">.</span><span class="n">start</span><span class="p">(</span><span class="n">ev_channel</span><span class="o">=</span><span class="n">channel</span><span class="p">,</span> <span class="n">grapevine_channel</span><span class="o">=</span><span class="n">grapevine_channel</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">f</span><span class="s2">"Grapevine connection created </span><span class="si">{channel}</span><span class="s2"> <-> </span><span class="si">{grapevine_channel}</span><span class="s2">."</span><span class="p">)</span></div></div>
|
||||
<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">"Grapevine connection created </span><span class="si">{</span><span class="n">channel</span><span class="si">}</span><span class="s2"> <-> </span><span class="si">{</span><span class="n">grapevine_channel</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
<div class="clearer"></div>
|
||||
|
|
|
|||
|
|
@ -43,9 +43,9 @@
|
|||
<span class="sd">General Character commands usually available to all characters</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">evtable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="k">import</span> <span class="n">NickTemplateInvalid</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.utils</span> <span class="kn">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">evtable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.attributes</span> <span class="kn">import</span> <span class="n">NickTemplateInvalid</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>
|
||||
|
||||
|
|
@ -419,12 +419,12 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">items</span><span class="p">:</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="s2">"You are not carrying anything."</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">raw_ansi</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">raw</span> <span class="k">as</span> <span class="n">raw_ansi</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="n">border</span><span class="o">=</span><span class="s2">"header"</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">items</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">f</span><span class="s2">"|C</span><span class="si">{item.name}</span><span class="s2">|n"</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="sa">f</span><span class="s2">"|C</span><span class="si">{</span><span class="n">item</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">|n"</span><span class="p">,</span>
|
||||
<span class="s2">"</span><span class="si">{}</span><span class="s2">|n"</span><span class="o">.</span><span class="n">format</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">raw_ansi</span><span class="p">(</span><span class="n">item</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">width</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">))</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|wYou are carrying:</span><span class="se">\n</span><span class="si">{table}</span><span class="s2">"</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|wYou are carrying:</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="bp">self</span><span class="o">.</span><span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">string</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -47,15 +47,15 @@
|
|||
<span class="sd">creation of other help topics such as RP help or game-world aides.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">fill</span><span class="p">,</span> <span class="n">dedent</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="k">import</span> <span class="n">Command</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.help.models</span> <span class="k">import</span> <span class="n">HelpEntry</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">evmore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="k">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="k">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="p">(</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">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">fill</span><span class="p">,</span> <span class="n">dedent</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="kn">import</span> <span class="n">Command</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.help.models</span> <span class="kn">import</span> <span class="n">HelpEntry</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">evmore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.ansi</span> <span class="kn">import</span> <span class="n">ANSIString</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">string_suggestions</span><span class="p">,</span>
|
||||
<span class="n">class_from_module</span><span class="p">,</span>
|
||||
<span class="n">inherits_from</span><span class="p">,</span>
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
|
||||
<span class="k">class</span> <span class="nc">HelpCategory</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="n">key</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
|
|
@ -89,13 +89,13 @@
|
|||
<span class="s2">"text"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">f</span><span class="s2">"Category: </span><span class="si">{self.key}</span><span class="s2">"</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s2">"Category: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="nb">str</span><span class="p">(</span><span class="n">other</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
|
||||
|
|
@ -107,8 +107,8 @@
|
|||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_LUNR</span><span class="p">:</span>
|
||||
<span class="c1"># we have to delay-load lunr because it messes with logging if it's imported</span>
|
||||
<span class="c1"># before twisted's logging has been set up</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr</span> <span class="k">import</span> <span class="n">lunr</span> <span class="k">as</span> <span class="n">_LUNR</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr.exceptions</span> <span class="k">import</span> <span class="n">QueryParseError</span> <span class="k">as</span> <span class="n">_LUNR_EXCEPTION</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr</span> <span class="kn">import</span> <span class="n">lunr</span> <span class="k">as</span> <span class="n">_LUNR</span>
|
||||
<span class="kn">from</span> <span class="nn">lunr.exceptions</span> <span class="kn">import</span> <span class="n">QueryParseError</span> <span class="k">as</span> <span class="n">_LUNR_EXCEPTION</span>
|
||||
|
||||
<span class="n">indx</span> <span class="o">=</span> <span class="p">[</span><span class="n">cnd</span><span class="o">.</span><span class="n">search_index_entry</span> <span class="k">for</span> <span class="n">cnd</span> <span class="ow">in</span> <span class="n">candidate_entries</span><span class="p">]</span>
|
||||
<span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">indx</span><span class="p">[</span><span class="n">ix</span><span class="p">][</span><span class="s2">"key"</span><span class="p">]:</span> <span class="n">cand</span> <span class="k">for</span> <span class="n">ix</span><span class="p">,</span> <span class="n">cand</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">candidate_entries</span><span class="p">)}</span>
|
||||
|
|
@ -209,18 +209,18 @@
|
|||
<span class="sd"> Returns the formatted string, ready to be sent.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">start</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="si">{_SEP}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"|CHelp for |w</span><span class="si">{title}</span><span class="s2">|n"</span> <span class="k">if</span> <span class="n">title</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">_SEP</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"|CHelp for |w</span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">if</span> <span class="n">title</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
<span class="n">aliases</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">" |C(aliases: </span><span class="si">{}</span><span class="s2">|C)|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">f</span><span class="s2">"|w</span><span class="si">{ali}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">ali</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="s2">" |C(aliases: </span><span class="si">{}</span><span class="s2">|C)|n"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">ali</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">ali</span> <span class="ow">in</span> <span class="n">aliases</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">aliases</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">help_text</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="s2">{dedent(help_text.rstrip())}"</span><span class="k">if</span> <span class="n">help_text</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="si">{</span><span class="n">dedent</span><span class="p">(</span><span class="n">help_text</span><span class="o">.</span><span class="n">rstrip</span><span class="p">())</span><span class="si">}</span><span class="s2">"</span><span class="k">if</span> <span class="n">help_text</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">suggested</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"</span><span class="se">\n\n</span><span class="s2">|CSuggested:|n </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="n">fill</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">f</span><span class="s2">"|w</span><span class="si">{sug}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">sug</span> <span class="ow">in</span> <span class="n">suggested</span><span class="p">)))</span>
|
||||
<span class="n">fill</span><span class="p">(</span><span class="s2">"|C,|n "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|w</span><span class="si">{</span><span class="n">sug</span><span class="si">}</span><span class="s2">|n"</span> <span class="k">for</span> <span class="n">sug</span> <span class="ow">in</span> <span class="n">suggested</span><span class="p">)))</span>
|
||||
<span class="k">if</span> <span class="n">suggested</span> <span class="k">else</span> <span class="s2">""</span><span class="p">)</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"</span><span class="se">\n</span><span class="si">{_SEP}</span><span class="s2">"</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">\n</span><span class="si">{</span><span class="n">_SEP</span><span class="si">}</span><span class="s2">"</span>
|
||||
|
||||
<span class="k">return</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">start</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">aliases</span><span class="p">,</span> <span class="n">help_text</span><span class="p">,</span> <span class="n">suggested</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span></div>
|
||||
|
||||
|
|
@ -238,7 +238,7 @@
|
|||
<span class="n">verbatim_elements</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">hdict_cmds</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">hdict_db</span><span class="o">.</span><span class="n">keys</span><span class="p">()))):</span>
|
||||
|
||||
<span class="n">category_str</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"-- {category.title()} "</span>
|
||||
<span class="n">category_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"-- </span><span class="si">{</span><span class="n">category</span><span class="o">.</span><span class="n">title</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span>
|
||||
<span class="n">grid</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
|
||||
<span class="n">ANSIString</span><span class="p">(</span>
|
||||
<span class="n">category_clr</span> <span class="o">+</span> <span class="n">category_str</span> <span class="o">+</span> <span class="s2">"-"</span> <span class="o">*</span> <span class="p">(</span><span class="n">width</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">category_str</span><span class="p">))</span> <span class="o">+</span> <span class="n">topic_clr</span>
|
||||
|
|
@ -350,7 +350,7 @@
|
|||
<span class="c1"># Try to access a particular help entry or category</span>
|
||||
<span class="n">entries</span> <span class="o">=</span> <span class="p">[</span><span class="n">cmd</span> <span class="k">for</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="n">all_cmds</span> <span class="k">if</span> <span class="n">cmd</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">HelpEntry</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> <span class="o">+</span> <span class="n">all_categories</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">match_query</span> <span class="ow">in</span> <span class="p">[</span><span class="n">f</span><span class="s2">"</span><span class="si">{query}</span><span class="s2">~1"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{query}</span><span class="s2">*"</span><span class="p">]:</span>
|
||||
<span class="k">for</span> <span class="n">match_query</span> <span class="ow">in</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">~1"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">*"</span><span class="p">]:</span>
|
||||
<span class="c1"># We first do an exact word-match followed by a start-by query</span>
|
||||
<span class="n">matches</span><span class="p">,</span> <span class="n">suggestions</span> <span class="o">=</span> <span class="n">help_search_with_index</span><span class="p">(</span>
|
||||
<span class="n">match_query</span><span class="p">,</span> <span class="n">entries</span><span class="p">,</span> <span class="n">suggestion_maxnum</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">suggestion_maxnum</span>
|
||||
|
|
@ -396,7 +396,7 @@
|
|||
<span class="c1"># no exact matches found. Just give suggestions.</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">format_help_entry</span><span class="p">(</span>
|
||||
<span class="s2">""</span><span class="p">,</span> <span class="n">f</span><span class="s2">"No help entry found for '</span><span class="si">{query}</span><span class="s2">'"</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">suggested</span><span class="o">=</span><span class="n">suggestions</span>
|
||||
<span class="s2">""</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"No help entry found for '</span><span class="si">{</span><span class="n">query</span><span class="si">}</span><span class="s2">'"</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">suggested</span><span class="o">=</span><span class="n">suggestions</span>
|
||||
<span class="p">),</span>
|
||||
<span class="n">options</span><span class="o">=</span><span class="p">{</span><span class="s2">"type"</span><span class="p">:</span> <span class="s2">"help"</span><span class="p">},</span>
|
||||
<span class="p">)</span></div></div>
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@
|
|||
<span class="sd">is also an Account/OOC version that makes sure caller is an Account object.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="k">import</span> <span class="n">Command</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="kn">import</span> <span class="n">Command</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">"MuxCommand"</span><span class="p">,</span> <span class="s2">"MuxAccountCommand"</span><span class="p">)</span>
|
||||
|
|
@ -250,9 +250,9 @@
|
|||
<span class="n">variables</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">" |w</span><span class="si">{}</span><span class="s2">|n (</span><span class="si">{}</span><span class="s2">): </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">val</span><span class="p">),</span> <span class="n">val</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">val</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="n">f</span><span class="s2">"""</span>
|
||||
<span class="s2">Command </span><span class="si">{self}</span><span class="s2"> has no defined `func()` - showing on-command variables: No child func() defined for </span><span class="si">{self}</span><span class="s2"> - available variables:</span>
|
||||
<span class="si">{variables}</span><span class="s2"></span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
||||
<span class="s2">Command </span><span class="si">{</span><span class="bp">self</span><span class="si">}</span><span class="s2"> has no defined `func()` - showing on-command variables: No child func() defined for </span><span class="si">{</span><span class="bp">self</span><span class="si">}</span><span class="s2"> - available variables:</span>
|
||||
<span class="si">{</span><span class="n">variables</span><span class="si">}</span><span class="s2"></span>
|
||||
<span class="s2"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">caller</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="c1"># a simple test command to show the available properties</span>
|
||||
|
|
|
|||
|
|
@ -59,19 +59,19 @@
|
|||
<span class="sd">the line is just added to the editor buffer).</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">at_search_result</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">create</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">at_search_result</span>
|
||||
|
||||
<span class="c1"># The command keys the engine is calling</span>
|
||||
<span class="c1"># (the actual names all start with __)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">CMD_NOINPUT</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">CMD_NOMATCH</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">CMD_MULTIMATCH</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">CMD_CHANNEL</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">CMD_NOINPUT</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">CMD_NOMATCH</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">CMD_MULTIMATCH</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">CMD_CHANNEL</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</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>
|
||||
|
||||
|
|
|
|||
|
|
@ -56,17 +56,17 @@
|
|||
<span class="kn">import</span> <span class="nn">twisted</span>
|
||||
<span class="kn">import</span> <span class="nn">time</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.paginator</span> <span class="k">import</span> <span class="n">Paginator</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.scripts.models</span> <span class="k">import</span> <span class="n">ScriptDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.objects.models</span> <span class="k">import</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="k">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">search</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="k">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="k">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="k">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">crop</span><span class="p">,</span> <span class="n">class_from_module</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">django.core.paginator</span> <span class="kn">import</span> <span class="n">Paginator</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.scripts.models</span> <span class="kn">import</span> <span class="n">ScriptDB</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="kn">from</span> <span class="nn">evennia.accounts.models</span> <span class="kn">import</span> <span class="n">AccountDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">search</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.eveditor</span> <span class="kn">import</span> <span class="n">EvEditor</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evtable</span> <span class="kn">import</span> <span class="n">EvTable</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.evmore</span> <span class="kn">import</span> <span class="n">EvMore</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">crop</span><span class="p">,</span> <span class="n">class_from_module</span>
|
||||
|
||||
<span class="n">COMMAND_DEFAULT_CLASS</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>
|
||||
|
||||
|
|
@ -237,7 +237,7 @@
|
|||
<span class="n">old_stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">FakeStd</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</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">caller</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
||||
|
|
@ -305,7 +305,7 @@
|
|||
|
||||
<span class="sd">"""Evennia wrapper around a Python interactive console."""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">evennia_local_vars</span><span class="p">(</span><span class="n">caller</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">caller</span>
|
||||
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
<span class="n">old_stderr</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stderr</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">FakeStd</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">caller</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">caller</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string</span><span class="p">):</span>
|
||||
|
|
@ -435,7 +435,7 @@
|
|||
<span class="n">prompt</span> <span class="o">=</span> <span class="s2">"..."</span> <span class="k">if</span> <span class="n">console</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">else</span> <span class="n">main_prompt</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">line</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">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">">>> </span><span class="si">{line}</span><span class="s2">"</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">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">">>> </span><span class="si">{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">prompt</span> <span class="o">=</span> <span class="n">line</span> <span class="k">if</span> <span class="n">console</span><span class="o">.</span><span class="n">push</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">else</span> <span class="n">main_prompt</span>
|
||||
<span class="k">except</span> <span class="ne">SystemExit</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
|
|
@ -502,7 +502,7 @@
|
|||
|
||||
<span class="n">table</span><span class="o">.</span><span class="n">add_row</span><span class="p">(</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
|
||||
<span class="n">f</span><span class="s2">"</span><span class="si">{script.obj.key}</span><span class="s2">(</span><span class="si">{script.obj.dbref}</span><span class="s2">)"</span>
|
||||
<span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="o">.</span><span class="n">dbref</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">script</span><span class="p">,</span> <span class="s2">"obj"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">script</span><span class="o">.</span><span class="n">obj</span><span class="p">)</span>
|
||||
<span class="k">else</span> <span class="s2">"<Global>"</span><span class="p">,</span>
|
||||
<span class="n">script</span><span class="o">.</span><span class="n">key</span><span class="p">,</span>
|
||||
|
|
@ -899,11 +899,11 @@
|
|||
<span class="n">service_collection</span><span class="o">.</span><span class="n">removeService</span><span class="p">(</span><span class="n">service</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|gStopped and removed service '</span><span class="si">%s</span><span class="s2">'.|n"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"Stopping service '</span><span class="si">{self.args}</span><span class="s2">'..."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Stopping service '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">'..."</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">service</span><span class="o">.</span><span class="n">stopService</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="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"|rErrors were reported when stopping this service</span><span class="si">{err}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rErrors were reported when stopping this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading "</span>
|
||||
<span class="s2">"or rebooting the server."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|g... Stopped service '</span><span class="si">%s</span><span class="s2">'.|n"</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
|
||||
|
|
@ -914,11 +914,11 @@
|
|||
<span class="k">if</span> <span class="n">service</span><span class="o">.</span><span class="n">running</span><span class="p">:</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"That service is already running."</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"Starting service '</span><span class="si">{self.args}</span><span class="s2">' ..."</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Starting service '</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="si">}</span><span class="s2">' ..."</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">service</span><span class="o">.</span><span class="n">startService</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="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">f</span><span class="s2">"|rErrors were reported when starting this service</span><span class="si">{err}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"|rErrors were reported when starting this service</span><span class="si">{</span><span class="n">err</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span>
|
||||
<span class="s2">"If there are remaining problems, try reloading the server, changing the "</span>
|
||||
<span class="s2">"settings if it's a non-standard service.|n"</span><span class="p">)</span>
|
||||
<span class="n">caller</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"|gService started.|n"</span><span class="p">)</span></div></div>
|
||||
|
|
@ -1058,7 +1058,7 @@
|
|||
|
||||
<span class="k">global</span> <span class="n">_IDMAPPER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_IDMAPPER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.idmapper</span> <span class="k">import</span> <span class="n">models</span> <span class="k">as</span> <span class="n">_IDMAPPER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.idmapper</span> <span class="kn">import</span> <span class="n">models</span> <span class="k">as</span> <span class="n">_IDMAPPER</span>
|
||||
|
||||
<span class="k">if</span> <span class="s2">"flushmem"</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"># flush the cache</span>
|
||||
|
|
@ -1201,7 +1201,7 @@
|
|||
<span class="n">locks</span> <span class="o">=</span> <span class="s2">"cmd:perm(tickers) or perm(Builder)"</span>
|
||||
|
||||
<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="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">TICKER_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">TICKER_HANDLER</span>
|
||||
|
||||
<span class="n">all_subs</span> <span class="o">=</span> <span class="n">TICKER_HANDLER</span><span class="o">.</span><span class="n">all_display</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">all_subs</span><span class="p">:</span>
|
||||
|
|
|
|||
|
|
@ -55,15 +55,15 @@
|
|||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">import</span> <span class="nn">types</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">from</span> <span class="nn">anything</span> <span class="k">import</span> <span class="n">Anything</span>
|
||||
<span class="kn">from</span> <span class="nn">anything</span> <span class="kn">import</span> <span class="n">Anything</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">unittest.mock</span> <span class="k">import</span> <span class="n">patch</span><span class="p">,</span> <span class="n">Mock</span><span class="p">,</span> <span class="n">MagicMock</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">unittest.mock</span> <span class="kn">import</span> <span class="n">patch</span><span class="p">,</span> <span class="n">Mock</span><span class="p">,</span> <span class="n">MagicMock</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">DefaultRoom</span><span class="p">,</span> <span class="n">DefaultExit</span><span class="p">,</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.cmdset_character</span> <span class="k">import</span> <span class="n">CharacterCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.test_resources</span> <span class="k">import</span> <span class="n">EvenniaTest</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="k">import</span> <span class="p">(</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultRoom</span><span class="p">,</span> <span class="n">DefaultExit</span><span class="p">,</span> <span class="n">ObjectDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.cmdset_character</span> <span class="kn">import</span> <span class="n">CharacterCmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.test_resources</span> <span class="kn">import</span> <span class="n">EvenniaTest</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">help</span><span class="p">,</span>
|
||||
<span class="n">general</span><span class="p">,</span>
|
||||
<span class="n">system</span><span class="p">,</span>
|
||||
|
|
@ -75,16 +75,16 @@
|
|||
<span class="n">unloggedin</span><span class="p">,</span>
|
||||
<span class="n">syscommands</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdparser</span> <span class="k">import</span> <span class="n">build_matches</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.muxcommand</span> <span class="k">import</span> <span class="n">MuxCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="k">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="k">import</span> <span class="n">cmdparser</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="k">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">ansi</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">search_object</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="k">import</span> <span class="n">DefaultObject</span><span class="p">,</span> <span class="n">DefaultCharacter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="k">import</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdparser</span> <span class="kn">import</span> <span class="n">build_matches</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.default.muxcommand</span> <span class="kn">import</span> <span class="n">MuxCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.command</span> <span class="kn">import</span> <span class="n">Command</span><span class="p">,</span> <span class="n">InterruptCommand</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="kn">import</span> <span class="n">cmdparser</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdset</span> <span class="kn">import</span> <span class="n">CmdSet</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">ansi</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</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</span> <span class="kn">import</span> <span class="n">search_object</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">DefaultObject</span><span class="p">,</span> <span class="n">DefaultCharacter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes</span> <span class="kn">import</span> <span class="n">prototypes</span> <span class="k">as</span> <span class="n">protlib</span>
|
||||
|
||||
|
||||
<span class="c1"># set up signal here since we are not starting the server</span>
|
||||
|
|
@ -1080,7 +1080,7 @@
|
|||
<span class="s2">"All object creation hooks were run. All old attributes where deleted before the swap."</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes.prototypes</span> <span class="k">import</span> <span class="n">homogenize_prototype</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.prototypes.prototypes</span> <span class="kn">import</span> <span class="n">homogenize_prototype</span>
|
||||
|
||||
<span class="n">test_prototype</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">homogenize_prototype</span><span class="p">(</span>
|
||||
|
|
@ -1183,12 +1183,12 @@
|
|||
<span class="n">maxdiff</span> <span class="o">=</span> <span class="n">maxid</span> <span class="o">-</span> <span class="n">id1</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">mdiff</span> <span class="o">=</span> <span class="n">id2</span> <span class="o">-</span> <span class="n">id1</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=#</span><span class="si">{id1}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{maxdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{maxid}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=</span><span class="si">{id1}</span><span class="s2">-</span><span class="si">{id2}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{mdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">):"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=</span><span class="si">{id1}</span><span class="s2"> - </span><span class="si">{id2}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{mdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">):"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=</span><span class="si">{id1}</span><span class="s2">- #</span><span class="si">{id2}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{mdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">):"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{mdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">):"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="n">f</span><span class="s2">"=#</span><span class="si">{id1}</span><span class="s2">-</span><span class="si">{id2}</span><span class="s2">"</span><span class="p">,</span> <span class="n">f</span><span class="s2">"</span><span class="si">{mdiff}</span><span class="s2"> Matches(#</span><span class="si">{id1}</span><span class="s2">-#</span><span class="si">{id2}</span><span class="s2">):"</span><span class="p">)</span></div>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">maxdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">maxid</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">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">mdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</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">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">mdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</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">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">- #</span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">mdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</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">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">mdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</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">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdFind</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"=#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">mdiff</span><span class="si">}</span><span class="s2"> Matches(#</span><span class="si">{</span><span class="n">id1</span><span class="si">}</span><span class="s2">-#</span><span class="si">{</span><span class="n">id2</span><span class="si">}</span><span class="s2">):"</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TestBuilding.test_script"><a class="viewcode-back" href="../../../../api/evennia.commands.default.tests.html#evennia.commands.default.tests.TestBuilding.test_script">[docs]</a> <span class="k">def</span> <span class="nf">test_script</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">building</span><span class="o">.</span><span class="n">CmdScript</span><span class="p">(),</span> <span class="s2">"Obj = "</span><span class="p">,</span> <span class="s2">"No scripts defined on Obj"</span><span class="p">)</span>
|
||||
|
|
|
|||
|
|
@ -44,13 +44,13 @@
|
|||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">re</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">from</span> <span class="nn">codecs</span> <span class="k">import</span> <span class="n">lookup</span> <span class="k">as</span> <span class="n">codecs_lookup</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.server.sessionhandler</span> <span class="k">import</span> <span class="n">SESSIONS</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.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</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="k">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="k">import</span> <span class="n">CMD_LOGINSTART</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span><span class="p">,</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span><span class="p">,</span> <span class="n">utils</span><span class="p">,</span> <span class="n">gametime</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands.cmdhandler</span> <span class="kn">import</span> <span class="n">CMD_LOGINSTART</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>
|
||||
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@
|
|||
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="k">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.admin</span> <span class="k">import</span> <span class="n">AttributeInline</span><span class="p">,</span> <span class="n">TagInline</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib</span> <span class="kn">import</span> <span class="n">admin</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.admin</span> <span class="kn">import</span> <span class="n">AttributeInline</span><span class="p">,</span> <span class="n">TagInline</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ChannelAttributeInline"><a class="viewcode-back" href="../../../api/evennia.comms.admin.html#evennia.comms.admin.ChannelAttributeInline">[docs]</a><span class="k">class</span> <span class="nc">ChannelAttributeInline</span><span class="p">(</span><span class="n">AttributeInline</span><span class="p">):</span>
|
||||
|
|
@ -155,8 +155,8 @@
|
|||
<span class="n">obj</span><span class="o">.</span><span class="n">at_init</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ChannelAdmin.response_add"><a class="viewcode-back" href="../../../api/evennia.comms.admin.html#evennia.comms.admin.ChannelAdmin.response_add">[docs]</a> <span class="k">def</span> <span class="nf">response_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">post_url_continue</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="k">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.http</span> <span class="kn">import</span> <span class="n">HttpResponseRedirect</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s2">"admin:comms_channeldb_change"</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">id</span><span class="p">]))</span></div></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -64,11 +64,11 @@
|
|||
<span class="sd">does this for you.</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.commands</span> <span class="k">import</span> <span class="n">cmdset</span><span class="p">,</span> <span class="n">command</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.logger</span> <span class="k">import</span> <span class="n">tail_log_file</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">class_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="k">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</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.commands</span> <span class="kn">import</span> <span class="n">cmdset</span><span class="p">,</span> <span class="n">command</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.logger</span> <span class="kn">import</span> <span class="n">tail_log_file</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">class_from_module</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.translation</span> <span class="kn">import</span> <span class="n">gettext</span> <span class="k">as</span> <span class="n">_</span>
|
||||
|
||||
<span class="c1"># we must late-import these since any overloads are likely to</span>
|
||||
<span class="c1"># themselves be using these classes leading to a circular import.</span>
|
||||
|
|
@ -136,7 +136,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_CHANNELDB</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_CHANNELDB</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span> <span class="k">as</span> <span class="n">_CHANNELDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span> <span class="k">as</span> <span class="n">_CHANNELDB</span>
|
||||
|
||||
<span class="n">channelkey</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span>
|
||||
<span class="n">caller</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">caller</span>
|
||||
|
|
@ -214,7 +214,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="ChannelHandler.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.channelhandler.html#evennia.comms.channelhandler.ChannelHandler.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="ChannelHandler.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.channelhandler.html#evennia.comms.channelhandler.ChannelHandler.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initializes the channel handler's internal state.</span>
|
||||
|
||||
|
|
@ -223,7 +223,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_cmdsets</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_channels</span> <span class="o">=</span> <span class="p">{}</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Returns the string representation of the handler</span>
|
||||
|
||||
|
|
@ -300,7 +300,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_CHANNELDB</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_CHANNELDB</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">ChannelDB</span> <span class="k">as</span> <span class="n">_CHANNELDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">ChannelDB</span> <span class="k">as</span> <span class="n">_CHANNELDB</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_channel_cmds</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_cmdsets</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_cached_channels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
|
|
|||
|
|
@ -43,15 +43,15 @@
|
|||
<span class="sd">Base typeclass for in-game Channels.</span>
|
||||
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="k">import</span> <span class="n">ContentType</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="k">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.text</span> <span class="k">import</span> <span class="n">slugify</span>
|
||||
<span class="kn">from</span> <span class="nn">django.contrib.contenttypes.models</span> <span class="kn">import</span> <span class="n">ContentType</span>
|
||||
<span class="kn">from</span> <span class="nn">django.urls</span> <span class="kn">import</span> <span class="n">reverse</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils.text</span> <span class="kn">import</span> <span class="n">slugify</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="k">import</span> <span class="n">TypeclassBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="k">import</span> <span class="n">TempMsg</span><span class="p">,</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.managers</span> <span class="k">import</span> <span class="n">ChannelManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">create</span><span class="p">,</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">make_iter</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypeclassBase</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.models</span> <span class="kn">import</span> <span class="n">TempMsg</span><span class="p">,</span> <span class="n">ChannelDB</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.managers</span> <span class="kn">import</span> <span class="n">ChannelManager</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="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">make_iter</span>
|
||||
|
||||
<span class="n">_CHANNEL_HANDLER</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
<span class="c1"># delayed import of the channelhandler</span>
|
||||
<span class="k">global</span> <span class="n">_CHANNEL_HANDLER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_CHANNEL_HANDLER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNEL_HANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNEL_HANDLER</span>
|
||||
<span class="c1"># register ourselves with the channelhandler.</span>
|
||||
<span class="n">_CHANNEL_HANDLER</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -339,7 +339,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">attributes</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">aliases</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNELHANDLER</span>
|
||||
|
||||
<span class="n">CHANNELHANDLER</span><span class="o">.</span><span class="n">update</span><span class="p">()</span></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@
|
|||
<span class="sd">"""</span>
|
||||
|
||||
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Q</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.managers</span> <span class="k">import</span> <span class="n">TypedObjectManager</span><span class="p">,</span> <span class="n">TypeclassManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="k">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">dbref</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="kn">import</span> <span class="n">Q</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.managers</span> <span class="kn">import</span> <span class="n">TypedObjectManager</span><span class="p">,</span> <span class="n">TypeclassManager</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">logger</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">dbref</span>
|
||||
|
||||
<span class="n">_GA</span> <span class="o">=</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__getattribute__</span>
|
||||
<span class="n">_AccountDB</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
|
|
|||
|
|
@ -58,15 +58,15 @@
|
|||
<span class="sd">connect to channels by use of a ChannelConnect object (this object is</span>
|
||||
<span class="sd">necessary to easily be able to delete connections on the fly).</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span>
|
||||
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="k">import</span> <span class="n">TypedObject</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.tags</span> <span class="k">import</span> <span class="n">Tag</span><span class="p">,</span> <span class="n">TagHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.idmapper.models</span> <span class="k">import</span> <span class="n">SharedMemoryModel</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms</span> <span class="k">import</span> <span class="n">managers</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="k">import</span> <span class="n">LockHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="k">import</span> <span class="n">crop</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">lazy_property</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">django.utils</span> <span class="kn">import</span> <span class="n">timezone</span>
|
||||
<span class="kn">from</span> <span class="nn">django.db</span> <span class="kn">import</span> <span class="n">models</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.models</span> <span class="kn">import</span> <span class="n">TypedObject</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.typeclasses.tags</span> <span class="kn">import</span> <span class="n">Tag</span><span class="p">,</span> <span class="n">TagHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.idmapper.models</span> <span class="kn">import</span> <span class="n">SharedMemoryModel</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms</span> <span class="kn">import</span> <span class="n">managers</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.locks.lockhandler</span> <span class="kn">import</span> <span class="n">LockHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils.utils</span> <span class="kn">import</span> <span class="n">crop</span><span class="p">,</span> <span class="n">make_iter</span><span class="p">,</span> <span class="n">lazy_property</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Msg"</span><span class="p">,</span> <span class="s2">"TempMsg"</span><span class="p">,</span> <span class="s2">"ChannelDB"</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -214,7 +214,7 @@
|
|||
<span class="n">objects</span> <span class="o">=</span> <span class="n">managers</span><span class="o">.</span><span class="n">MsgManager</span><span class="p">()</span>
|
||||
<span class="n">_is_deleted</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<div class="viewcode-block" id="Msg.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.models.html#evennia.comms.admin.Msg.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Msg.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.models.html#evennia.comms.admin.Msg.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="n">SharedMemoryModel</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">extra_senders</span> <span class="o">=</span> <span class="p">[]</span></div>
|
||||
|
||||
|
|
@ -439,7 +439,7 @@
|
|||
<span class="c1"># Msg class methods</span>
|
||||
<span class="c1">#</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"This handles what is shown when e.g. printing the message"</span>
|
||||
<span class="n">senders</span> <span class="o">=</span> <span class="s2">","</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"key"</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">senders</span><span class="p">)</span>
|
||||
|
||||
|
|
@ -480,7 +480,7 @@
|
|||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="TempMsg.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.models.html#evennia.comms.admin.TempMsg.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span>
|
||||
<div class="viewcode-block" id="TempMsg.__init__"><a class="viewcode-back" href="../../../api/evennia.comms.models.html#evennia.comms.admin.TempMsg.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">senders</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">receivers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
|
|
@ -519,7 +519,7 @@
|
|||
<span class="k">def</span> <span class="nf">locks</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">LockHandler</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> This handles what is shown when e.g. printing the message.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -587,7 +587,7 @@
|
|||
<span class="sd"> subscribing (Account or Object)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Initialize the handler</span>
|
||||
|
||||
|
|
@ -646,7 +646,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_CHANNELHANDLER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="k">for</span> <span class="n">subscriber</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">entity</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">subscriber</span><span class="p">:</span>
|
||||
<span class="n">clsname</span> <span class="o">=</span> <span class="n">subscriber</span><span class="o">.</span><span class="n">__dbclass__</span><span class="o">.</span><span class="vm">__name__</span>
|
||||
|
|
@ -669,7 +669,7 @@
|
|||
<span class="sd"> """</span>
|
||||
<span class="k">global</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">_CHANNELHANDLER</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="k">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.comms.channelhandler</span> <span class="kn">import</span> <span class="n">CHANNEL_HANDLER</span> <span class="k">as</span> <span class="n">_CHANNELHANDLER</span>
|
||||
<span class="k">for</span> <span class="n">subscriber</span> <span class="ow">in</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">entity</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">subscriber</span><span class="p">:</span>
|
||||
<span class="n">clsname</span> <span class="o">=</span> <span class="n">subscriber</span><span class="o">.</span><span class="n">__dbclass__</span><span class="o">.</span><span class="vm">__name__</span>
|
||||
|
|
@ -706,7 +706,7 @@
|
|||
<span class="n">subs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">recache_needed</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">ObjectDoesNotExist</span>
|
||||
<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="kn">import</span> <span class="n">ObjectDoesNotExist</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="s2">"account"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">obj</span><span class="o">.</span><span class="n">account</span><span class="p">:</span>
|
||||
|
|
@ -773,7 +773,7 @@
|
|||
<span class="n">verbose_name</span> <span class="o">=</span> <span class="s2">"Channel"</span>
|
||||
<span class="n">verbose_name_plural</span> <span class="o">=</span> <span class="s2">"Channels"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="s2">"Echoes the text representation of the channel."</span>
|
||||
<span class="k">return</span> <span class="s2">"Channel '</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="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">desc</span><span class="p">)</span>
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue