mirror of
https://github.com/evennia/evennia.git
synced 2026-03-30 20:47:17 +02:00
Updated HTML docs
This commit is contained in:
parent
db734562d5
commit
500734d214
100 changed files with 6800 additions and 2763 deletions
|
|
@ -62,6 +62,7 @@
|
|||
<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</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.commands.cmdsethandler</span> <span class="kn">import</span> <span class="n">CmdSetHandler</span>
|
||||
<span class="kn">from</span> <span class="nn">evennia.utils</span> <span class="kn">import</span> <span class="n">funcparser</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</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">logger</span>
|
||||
|
|
@ -89,6 +90,12 @@
|
|||
<span class="c1"># the sessid_max is based on the length of the db_sessid csv field (excluding commas)</span>
|
||||
<span class="n">_SESSID_MAX</span> <span class="o">=</span> <span class="mi">16</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="k">else</span> <span class="mi">1</span>
|
||||
|
||||
<span class="n">_MSG_CONTENTS_PARSER</span> <span class="o">=</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">FuncParser</span><span class="p">(</span>
|
||||
<span class="p">{</span><span class="s2">"you"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_you</span><span class="p">,</span>
|
||||
<span class="s2">"You"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_You</span><span class="p">,</span>
|
||||
<span class="s2">"conj"</span><span class="p">:</span> <span class="n">funcparser</span><span class="o">.</span><span class="n">funcparser_callable_conjugate</span>
|
||||
<span class="p">})</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ObjectSessionHandler"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.ObjectSessionHandler">[docs]</a><span class="k">class</span> <span class="nc">ObjectSessionHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
|
|
@ -759,64 +766,94 @@
|
|||
<span class="sd"> text (str or tuple): Message to send. If a tuple, this should be</span>
|
||||
<span class="sd"> on the valid OOB outmessage form `(message, {kwargs})`,</span>
|
||||
<span class="sd"> where kwargs are optional data passed to the `text`</span>
|
||||
<span class="sd"> outputfunc.</span>
|
||||
<span class="sd"> outputfunc. The message will be parsed for `{key}` formatting and</span>
|
||||
<span class="sd"> `$You/$you()/$You(key)` and `$conj(verb)` inline function callables.</span>
|
||||
<span class="sd"> The `key` is taken from the `mapping` kwarg {"key": object, ...}`.</span>
|
||||
<span class="sd"> The `mapping[key].get_display_name(looker=recipient)` will be called</span>
|
||||
<span class="sd"> for that key for every recipient of the string.</span>
|
||||
<span class="sd"> exclude (list, optional): A list of objects not to send to.</span>
|
||||
<span class="sd"> from_obj (Object, optional): An object designated as the</span>
|
||||
<span class="sd"> "sender" of the message. See `DefaultObject.msg()` for</span>
|
||||
<span class="sd"> more info.</span>
|
||||
<span class="sd"> mapping (dict, optional): A mapping of formatting keys</span>
|
||||
<span class="sd"> `{"key":<object>, "key2":<object2>,...}. The keys</span>
|
||||
<span class="sd"> must match `{key}` markers in the `text` if this is a string or</span>
|
||||
<span class="sd"> in the internal `message` if `text` is a tuple. These</span>
|
||||
<span class="sd"> formatting statements will be</span>
|
||||
<span class="sd"> replaced by the return of `<object>.get_display_name(looker)`</span>
|
||||
<span class="sd"> for every looker in contents that receives the</span>
|
||||
<span class="sd"> message. This allows for every object to potentially</span>
|
||||
<span class="sd"> get its own customized string.</span>
|
||||
<span class="sd"> Keyword Args:</span>
|
||||
<span class="sd"> Keyword arguments will be passed on to `obj.msg()` for all</span>
|
||||
<span class="sd"> messaged objects.</span>
|
||||
<span class="sd"> `{"key":<object>, "key2":<object2>,...}.</span>
|
||||
<span class="sd"> The keys must either match `{key}` or `$You(key)/$you(key)` markers</span>
|
||||
<span class="sd"> in the `text` string. If `<object>` doesn't have a `get_display_name`</span>
|
||||
<span class="sd"> method, it will be returned as a string. If not set, a key `you` will</span>
|
||||
<span class="sd"> be auto-added to point to `from_obj` if given, otherwise to `self`.</span>
|
||||
<span class="sd"> **kwargs: Keyword arguments will be passed on to `obj.msg()` for all</span>
|
||||
<span class="sd"> messaged objects.</span>
|
||||
|
||||
<span class="sd"> Notes:</span>
|
||||
<span class="sd"> The `mapping` argument is required if `message` contains</span>
|
||||
<span class="sd"> {}-style format syntax. The keys of `mapping` should match</span>
|
||||
<span class="sd"> named format tokens, and its values will have their</span>
|
||||
<span class="sd"> `get_display_name()` function called for each object in</span>
|
||||
<span class="sd"> the room before substitution. If an item in the mapping does</span>
|
||||
<span class="sd"> not have `get_display_name()`, its string value will be used.</span>
|
||||
<span class="sd"> For 'actor-stance' reporting (You say/Name says), use the</span>
|
||||
<span class="sd"> `$You()/$you()/$You(key)` and `$conj(verb)` (verb-conjugation)</span>
|
||||
<span class="sd"> inline callables. This will use the respective `get_display_name()`</span>
|
||||
<span class="sd"> for all onlookers except for `from_obj or self`, which will become</span>
|
||||
<span class="sd"> 'You/you'. If you use `$You/you(key)`, the key must be in `mapping`.</span>
|
||||
|
||||
<span class="sd"> Example:</span>
|
||||
<span class="sd"> Say Char is a Character object and Npc is an NPC object:</span>
|
||||
<span class="sd"> For 'director-stance' reporting (Name says/Name says), use {key}</span>
|
||||
<span class="sd"> syntax directly. For both `{key}` and `You/you(key)`,</span>
|
||||
<span class="sd"> `mapping[key].get_display_name(looker=recipient)` may be called</span>
|
||||
<span class="sd"> depending on who the recipient is.</span>
|
||||
|
||||
<span class="sd"> char.location.msg_contents(</span>
|
||||
<span class="sd"> "{attacker} kicks {defender}",</span>
|
||||
<span class="sd"> mapping=dict(attacker=char, defender=npc), exclude=(char, npc))</span>
|
||||
<span class="sd"> Examples:</span>
|
||||
|
||||
<span class="sd"> This will result in everyone in the room seeing 'Char kicks NPC'</span>
|
||||
<span class="sd"> where everyone may potentially see different results for Char and Npc</span>
|
||||
<span class="sd"> depending on the results of `char.get_display_name(looker)` and</span>
|
||||
<span class="sd"> `npc.get_display_name(looker)` for each particular onlooker</span>
|
||||
<span class="sd"> Let's assume</span>
|
||||
<span class="sd"> - `player1.key -> "Player1"`,</span>
|
||||
<span class="sd"> `player1.get_display_name(looker=player2) -> "The First girl"`</span>
|
||||
<span class="sd"> - `player2.key -> "Player2"`,</span>
|
||||
<span class="sd"> `player2.get_display_name(looker=player1) -> "The Second girl"`</span>
|
||||
|
||||
<span class="sd"> Actor-stance:</span>
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> char.location.msg_contents(</span>
|
||||
<span class="sd"> "$You() $conj(attack) $you(defender).",</span>
|
||||
<span class="sd"> mapping={"defender": player2})</span>
|
||||
|
||||
<span class="sd"> - player1 will see `You attack The Second girl.`</span>
|
||||
<span class="sd"> - player2 will see 'The First girl attacks you.'</span>
|
||||
|
||||
<span class="sd"> Director-stance:</span>
|
||||
<span class="sd"> ::</span>
|
||||
|
||||
<span class="sd"> char.location.msg_contents(</span>
|
||||
<span class="sd"> "{attacker} attacks {defender}.",</span>
|
||||
<span class="sd"> mapping={"attacker:player1, "defender":player2})</span>
|
||||
|
||||
<span class="sd"> - player1 will see: 'Player1 attacks The Second girl.'</span>
|
||||
<span class="sd"> - player2 will see: 'The First girl attacks Player2'</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># we also accept an outcommand on the form (message, {kwargs})</span>
|
||||
<span class="n">is_outcmd</span> <span class="o">=</span> <span class="n">text</span> <span class="ow">and</span> <span class="n">is_iter</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
||||
<span class="n">inmessage</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="k">if</span> <span class="n">is_outcmd</span> <span class="k">else</span> <span class="n">text</span>
|
||||
<span class="n">outkwargs</span> <span class="o">=</span> <span class="n">text</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="n">is_outcmd</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="p">{}</span>
|
||||
<span class="n">mapping</span> <span class="o">=</span> <span class="n">mapping</span> <span class="ow">or</span> <span class="p">{}</span>
|
||||
<span class="n">you</span> <span class="o">=</span> <span class="n">from_obj</span> <span class="ow">or</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">if</span> <span class="s1">'you'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">:</span>
|
||||
<span class="n">mapping</span><span class="p">[</span><span class="n">you</span><span class="p">]</span> <span class="o">=</span> <span class="n">you</span>
|
||||
|
||||
<span class="n">contents</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contents</span>
|
||||
<span class="k">if</span> <span class="n">exclude</span><span class="p">:</span>
|
||||
<span class="n">exclude</span> <span class="o">=</span> <span class="n">make_iter</span><span class="p">(</span><span class="n">exclude</span><span class="p">)</span>
|
||||
<span class="n">contents</span> <span class="o">=</span> <span class="p">[</span><span class="n">obj</span> <span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">contents</span> <span class="k">if</span> <span class="n">obj</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">exclude</span><span class="p">]</span>
|
||||
<span class="k">for</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">contents</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">mapping</span><span class="p">:</span>
|
||||
<span class="n">substitutions</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">t</span><span class="p">:</span> <span class="n">sub</span><span class="o">.</span><span class="n">get_display_name</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">sub</span><span class="p">,</span> <span class="s2">"get_display_name"</span><span class="p">)</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">sub</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">t</span><span class="p">,</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
||||
<span class="p">}</span>
|
||||
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="n">substitutions</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">inmessage</span>
|
||||
<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="o">=</span><span class="p">(</span><span class="n">outmessage</span><span class="p">,</span> <span class="n">outkwargs</span><span class="p">),</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">for</span> <span class="n">receiver</span> <span class="ow">in</span> <span class="n">contents</span><span class="p">:</span>
|
||||
|
||||
<span class="c1"># actor-stance replacements</span>
|
||||
<span class="n">inmessage</span> <span class="o">=</span> <span class="n">_MSG_CONTENTS_PARSER</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span>
|
||||
<span class="n">inmessage</span><span class="p">,</span> <span class="n">raise_errors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">return_string</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="n">caller</span><span class="o">=</span><span class="n">you</span><span class="p">,</span> <span class="n">receiver</span><span class="o">=</span><span class="n">receiver</span><span class="p">,</span> <span class="n">mapping</span><span class="o">=</span><span class="n">mapping</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># director-stance replacements</span>
|
||||
<span class="n">outmessage</span> <span class="o">=</span> <span class="n">inmessage</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
|
||||
<span class="o">**</span><span class="p">{</span><span class="n">key</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="n">looker</span><span class="o">=</span><span class="n">receiver</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">"get_display_name"</span><span class="p">)</span> <span class="k">else</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">key</span><span class="p">,</span> <span class="n">obj</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span>
|
||||
|
||||
<span class="n">receiver</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="p">(</span><span class="n">outmessage</span><span class="p">,</span> <span class="n">outkwargs</span><span class="p">),</span> <span class="n">from_obj</span><span class="o">=</span><span class="n">from_obj</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DefaultObject.move_to"><a class="viewcode-back" href="../../../api/evennia.objects.objects.html#evennia.objects.objects.DefaultObject.move_to">[docs]</a> <span class="k">def</span> <span class="nf">move_to</span><span class="p">(</span>
|
||||
<span class="bp">self</span><span class="p">,</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue