mirror of
https://github.com/evennia/evennia.git
synced 2026-04-05 15:37:17 +02:00
627 lines
No EOL
65 KiB
HTML
627 lines
No EOL
65 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>evennia.server.connection_wizard — Evennia 0.9.5 documentation</title>
|
|
<link rel="stylesheet" href="../../../_static/nature.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
|
<script id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
|
<script src="../../../_static/jquery.js"></script>
|
|
<script src="../../../_static/underscore.js"></script>
|
|
<script src="../../../_static/doctools.js"></script>
|
|
<script src="../../../_static/language_data.js"></script>
|
|
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
|
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</script>
|
|
<link rel="shortcut icon" href="../../../_static/favicon.ico"/>
|
|
<link rel="index" title="Index" href="../../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../../search.html" />
|
|
</head><body>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" accesskey="U">evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.server.connection_wizard</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for evennia.server.connection_wizard</h1><div class="highlight"><pre>
|
|
<span></span><span class="sd">"""</span>
|
|
<span class="sd">Link Evennia to external resources (wizard plugin for evennia_launcher)</span>
|
|
|
|
<span class="sd">"""</span>
|
|
<span class="kn">import</span> <span class="nn">sys</span>
|
|
<span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">path</span>
|
|
<span class="kn">import</span> <span class="nn">pprint</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.utils</span> <span class="kn">import</span> <span class="n">list_to_string</span><span class="p">,</span> <span class="n">mod_import</span>
|
|
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard">[docs]</a><span class="k">class</span> <span class="nc">ConnectionWizard</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<div class="viewcode-block" id="ConnectionWizard.__init__"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.__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="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">prev_node</span> <span class="o">=</span> <span class="kc">None</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.display"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.display">[docs]</a> <span class="k">def</span> <span class="nf">display</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
|
<span class="s2">"Show text"</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.ask_continue"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.ask_continue">[docs]</a> <span class="k">def</span> <span class="nf">ask_continue</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="s2">"'Press return to continue'-prompt"</span>
|
|
<span class="nb">input</span><span class="p">(</span><span class="s2">" (Press return to continue)"</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.ask_node"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.ask_node">[docs]</a> <span class="k">def</span> <span class="nf">ask_node</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="s2">"Enter choice: "</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="sd">"""</span>
|
|
<span class="sd"> Retrieve options and jump to different menu nodes</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> options (dict): Node options on the form {key: (desc, callback), }</span>
|
|
<span class="sd"> prompt (str, optional): Question to ask</span>
|
|
<span class="sd"> default (str, optional): Default value to use if user hits return.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">opt_txt</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">key</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">desc</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="p">(</span><span class="n">desc</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="n">options</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">opt_txt</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">resp</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">default</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">resp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">options</span><span class="p">:</span>
|
|
<span class="c1"># self.display(f" Selected '{resp}'.")</span>
|
|
<span class="n">desc</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="n">resp</span><span class="o">.</span><span class="n">lower</span><span class="p">()]</span>
|
|
<span class="n">callback</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="k">elif</span> <span class="n">resp</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">"quit"</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
|
<span class="k">elif</span> <span class="n">resp</span><span class="p">:</span>
|
|
<span class="c1"># input, but nothing was recognized</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">" Choose one of: </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">list_to_string</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">options</span><span class="p">))))</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.ask_yesno"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.ask_yesno">[docs]</a> <span class="k">def</span> <span class="nf">ask_yesno</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s2">"yes"</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Ask a yes/no question inline.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> prompt (str): The prompt to ask.</span>
|
|
<span class="sd"> default (str): "yes" or "no", used if pressing return.</span>
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> reply (str): Either 'yes' or 'no'.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">prompt</span> <span class="o">=</span> <span class="n">prompt</span> <span class="o">+</span> <span class="p">(</span><span class="s2">" [Y]/N? "</span> <span class="k">if</span> <span class="n">default</span> <span class="o">==</span> <span class="s2">"yes"</span> <span class="k">else</span> <span class="s2">" Y/[N]? "</span><span class="p">)</span>
|
|
|
|
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</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">resp</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="n">default</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">resp</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"yes"</span><span class="p">,</span> <span class="s2">"y"</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">" Answered Yes."</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="s2">"yes"</span>
|
|
<span class="k">elif</span> <span class="n">resp</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"no"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">" Answered No."</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="s2">"no"</span>
|
|
<span class="k">elif</span> <span class="n">resp</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">"quit"</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.ask_choice"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.ask_choice">[docs]</a> <span class="k">def</span> <span class="nf">ask_choice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="s2">" > "</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="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Ask multiple-choice question, get response inline.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> prompt (str): Input prompt.</span>
|
|
<span class="sd"> options (list): List of options. Will be indexable by sequence number 1...</span>
|
|
<span class="sd"> default (int): The list index+1 of the default choice, if any</span>
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> reply (str): The answered reply.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">opt_txt</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">ind</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">desc</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">ind</span><span class="p">,</span> <span class="n">desc</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">options</span><span class="p">))</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">opt_txt</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">resp</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">default</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">options</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">default</span><span class="p">)]</span>
|
|
<span class="k">if</span> <span class="n">resp</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">"quit"</span><span class="p">,</span> <span class="s2">"q"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">resp</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">resp</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
|
|
<span class="k">if</span> <span class="mi">0</span> <span class="o"><=</span> <span class="n">resp</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="n">options</span><span class="p">):</span>
|
|
<span class="n">selection</span> <span class="o">=</span> <span class="n">options</span><span class="p">[</span><span class="n">resp</span><span class="p">]</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="sa">f</span><span class="s2">" Selected '</span><span class="si">{</span><span class="n">selection</span><span class="si">}</span><span class="s2">'."</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">selection</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">" Select one of the given options."</span><span class="p">)</span></div>
|
|
|
|
<div class="viewcode-block" id="ConnectionWizard.ask_input"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.ConnectionWizard.ask_input">[docs]</a> <span class="k">def</span> <span class="nf">ask_input</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prompt</span><span class="o">=</span><span class="s2">" > "</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">validator</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Get arbitrary input inline.</span>
|
|
|
|
<span class="sd"> Keyword Args:</span>
|
|
<span class="sd"> prompt (str): The display prompt.</span>
|
|
<span class="sd"> default (str): If empty input, use this.</span>
|
|
<span class="sd"> validator (callable): If given, the input will be passed</span>
|
|
<span class="sd"> into this callable. It should return True unless validation</span>
|
|
<span class="sd"> fails (and is expected to echo why if so).</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> inp (str): The input given, or default.</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">resp</span> <span class="ow">and</span> <span class="n">default</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">default</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">resp</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">"q"</span><span class="p">,</span> <span class="s2">"quit"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
|
|
|
<span class="k">if</span> <span class="n">resp</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"none"</span><span class="p">:</span>
|
|
<span class="n">resp</span> <span class="o">=</span> <span class="s2">""</span>
|
|
|
|
<span class="k">if</span> <span class="n">validator</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">resp</span><span class="p">):</span>
|
|
<span class="k">continue</span>
|
|
|
|
<span class="n">ok</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> Leave blank? [Y]/N: "</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">ok</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>
|
|
<span class="k">continue</span>
|
|
<span class="k">elif</span> <span class="n">ok</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">"q"</span><span class="p">,</span> <span class="s2">"quit"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">resp</span>
|
|
|
|
<span class="k">if</span> <span class="n">validator</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">validator</span><span class="p">(</span><span class="n">resp</span><span class="p">):</span>
|
|
<span class="k">continue</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">resp</span><span class="p">)</span>
|
|
<span class="n">ok</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2"> Is this correct? [Y]/N: "</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">ok</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>
|
|
<span class="k">continue</span>
|
|
<span class="k">elif</span> <span class="n">ok</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">"q"</span><span class="p">,</span> <span class="s2">"quit"</span><span class="p">):</span>
|
|
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">resp</span></div></div>
|
|
|
|
|
|
<div class="viewcode-block" id="node_start"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_start">[docs]</a><span class="k">def</span> <span class="nf">node_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">):</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="s2">"""</span>
|
|
<span class="s2"> This wizard helps to attach your Evennia server to external networks. It</span>
|
|
<span class="s2"> will save to a file `server/conf/connection_settings.py` that will be</span>
|
|
<span class="s2"> imported from the bottom of your game settings file. Once generated you can</span>
|
|
<span class="s2"> also modify that file directly.</span>
|
|
|
|
<span class="s2"> Make sure you have at least started the game once before continuing!</span>
|
|
|
|
<span class="s2"> Use `quit` at any time to abort and throw away unsaved changes.</span>
|
|
<span class="s2"> """</span>
|
|
<span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="s2">"1"</span><span class="p">:</span> <span class="p">(</span>
|
|
<span class="s2">"Add your game to the Evennia game index (also for closed-dev games)"</span><span class="p">,</span>
|
|
<span class="n">node_game_index_start</span><span class="p">,</span>
|
|
<span class="p">{},</span>
|
|
<span class="p">),</span>
|
|
<span class="s2">"2"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"MSSP setup (for mud-list crawlers)"</span><span class="p">,</span> <span class="n">node_mssp_start</span><span class="p">,</span> <span class="p">{}),</span>
|
|
<span class="c1"># "3": ("Add Grapevine listing",</span>
|
|
<span class="c1"># node_grapevine_start, {}),</span>
|
|
<span class="c1"># "4": ("Add IRC link",</span>
|
|
<span class="c1"># "node_irc_start", {}),</span>
|
|
<span class="c1"># "5" ("Add RSS feed",</span>
|
|
<span class="c1"># "node_rss_start", {}),</span>
|
|
<span class="s2">"s"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"View and (optionally) Save created settings"</span><span class="p">,</span> <span class="n">node_view_and_apply_settings</span><span class="p">,</span> <span class="p">{}),</span>
|
|
<span class="s2">"q"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"Quit"</span><span class="p">,</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(),</span> <span class="p">{}),</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_node</span><span class="p">(</span><span class="n">options</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="c1"># Evennia game index</span>
|
|
|
|
|
|
<div class="viewcode-block" id="node_game_index_start"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_game_index_start">[docs]</a><span class="k">def</span> <span class="nf">node_game_index_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="s2">"""</span>
|
|
<span class="s2"> The Evennia game index (http://games.evennia.com) lists both active Evennia</span>
|
|
<span class="s2"> games as well as games in various stages of development.</span>
|
|
|
|
<span class="s2"> You can put up your game in the index also if you are not (yet) open for</span>
|
|
<span class="s2"> players. If so, put 'None' for the connection details - you are just telling</span>
|
|
<span class="s2"> us that you are out there, making us excited about your upcoming game!</span>
|
|
|
|
<span class="s2"> Please check the listing online first to see that your exact game name is</span>
|
|
<span class="s2"> not colliding with an existing game-name in the list (be nice!).</span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_yesno</span><span class="p">(</span><span class="s2">"Continue adding/editing an Index entry?"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"yes"</span><span class="p">:</span>
|
|
<span class="n">node_game_index_fields</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">node_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="node_game_index_fields"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_game_index_fields">[docs]</a><span class="k">def</span> <span class="nf">node_game_index_fields</span><span class="p">(</span><span class="n">wizard</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
|
|
<span class="c1"># reset the listing if needed</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">wizard</span><span class="p">,</span> <span class="s2">"game_index_listing"</span><span class="p">):</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">GAME_INDEX_LISTING</span>
|
|
|
|
<span class="c1"># game status</span>
|
|
|
|
<span class="n">status_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"game_status"</span><span class="p">]</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> What is the status of your game?</span>
|
|
<span class="s2"> - pre-alpha: a game in its very early stages, mostly unfinished or unstarted</span>
|
|
<span class="s2"> - alpha: a working concept, probably lots of bugs and incomplete features</span>
|
|
<span class="s2"> - beta: a working game, but expect bugs and changing features</span>
|
|
<span class="s2"> - launched: a full, working game (that may still be expanded upon and improved later)</span>
|
|
|
|
<span class="s2"> Current value (return to keep):</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">status_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"pre-alpha"</span><span class="p">,</span> <span class="s2">"alpha"</span><span class="p">,</span> <span class="s2">"beta"</span><span class="p">,</span> <span class="s2">"launched"</span><span class="p">]</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"game_status"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_choice</span><span class="p">(</span><span class="s2">"Select one: "</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span>
|
|
|
|
<span class="c1"># game name</span>
|
|
|
|
<span class="n">name_default</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">SERVERNAME</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Your game's name should usually be the same as `settings.SERVERNAME`, but</span>
|
|
<span class="s2"> you can set it to something else here if you want.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">name_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="k">def</span> <span class="nf">name_validator</span><span class="p">(</span><span class="n">inp</span><span class="p">):</span>
|
|
<span class="n">tmax</span> <span class="o">=</span> <span class="mi">80</span>
|
|
<span class="n">tlen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">inp</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">tlen</span> <span class="o">></span> <span class="n">tmax</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The name must be shorter than </span><span class="si">{</span><span class="n">tmax</span><span class="si">}</span><span class="s2"> characters (was </span><span class="si">{</span><span class="n">tlen</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_continue</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"game_name"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span>
|
|
<span class="n">default</span><span class="o">=</span><span class="n">name_default</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="n">name_validator</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># short desc</span>
|
|
|
|
<span class="n">sdesc_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"short_description"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Enter a short description of your game. Make it snappy and interesting!</span>
|
|
<span class="s2"> This should be at most one or two sentences (255 characters) to display by</span>
|
|
<span class="s2"> '</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">' in the main game list. Line breaks will be ignored.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">sdesc_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="k">def</span> <span class="nf">sdesc_validator</span><span class="p">(</span><span class="n">inp</span><span class="p">):</span>
|
|
<span class="n">tmax</span> <span class="o">=</span> <span class="mi">255</span>
|
|
<span class="n">tlen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">inp</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">tlen</span> <span class="o">></span> <span class="n">tmax</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"The short desc must be shorter than </span><span class="si">{</span><span class="n">tmax</span><span class="si">}</span><span class="s2"> characters (was </span><span class="si">{</span><span class="n">tlen</span><span class="si">}</span><span class="s2">)."</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_continue</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"short_description"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span>
|
|
<span class="n">default</span><span class="o">=</span><span class="n">sdesc_default</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="n">sdesc_validator</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># long desc</span>
|
|
|
|
<span class="n">long_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"long_description"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Enter a longer, full-length description. This will be shown when clicking</span>
|
|
<span class="s2"> on your game's listing. You can use </span><span class="se">\\</span><span class="s2">n to create line breaks and may use</span>
|
|
<span class="s2"> Markdown formatting like *bold*, _italic_, [linkname](http://link) etc.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">long_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"long_description"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">long_default</span><span class="p">)</span>
|
|
|
|
<span class="c1"># listing contact</span>
|
|
|
|
<span class="n">listing_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"listing_contact"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Enter a listing email-contact. This will not be visible in the listing, but</span>
|
|
<span class="s2"> allows us to get in touch with you should there be some listing issue (like</span>
|
|
<span class="s2"> a name collision) or some bug with the listing (us actually using this is</span>
|
|
<span class="s2"> likely to be somewhere between super-rarely and never).</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">listing_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="k">def</span> <span class="nf">contact_validator</span><span class="p">(</span><span class="n">inp</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">inp</span> <span class="ow">or</span> <span class="s2">"@"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">inp</span><span class="p">:</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"This should be an email and cannot be blank."</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_continue</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">return</span> <span class="kc">True</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"listing_contact"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span>
|
|
<span class="n">default</span><span class="o">=</span><span class="n">listing_default</span><span class="p">,</span> <span class="n">validator</span><span class="o">=</span><span class="n">contact_validator</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># telnet hostname</span>
|
|
|
|
<span class="n">hostname_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"telnet_hostname"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Enter the hostname to which third-party telnet mud clients can connect to</span>
|
|
<span class="s2"> your game. This would be the name of the server your game is hosted on,</span>
|
|
<span class="s2"> like `coolgame.games.com`, or `mygreatgame.se`.</span>
|
|
|
|
<span class="s2"> Write 'None' if you are not offering public telnet connections at this time.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">hostname_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"telnet_hostname"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">hostname_default</span><span class="p">)</span>
|
|
|
|
<span class="c1"># telnet port</span>
|
|
|
|
<span class="n">port_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"telnet_port"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Enter the main telnet port. The Evennia default is 4000. You can change</span>
|
|
<span class="s2"> this with the TELNET_PORTS server setting.</span>
|
|
|
|
<span class="s2"> Write 'None' if you are not offering public telnet connections at this time.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">port_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"telnet_port"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">port_default</span><span class="p">)</span>
|
|
|
|
<span class="c1"># website</span>
|
|
|
|
<span class="n">website_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"game_website"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Evennia is its own web server and runs your game's website. Enter the</span>
|
|
<span class="s2"> URL of the website here, like http://yourwebsite.com, here.</span>
|
|
|
|
<span class="s2"> Write 'None' if you are not offering a publicly visible website at this time.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">website_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"game_website"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">website_default</span><span class="p">)</span>
|
|
|
|
<span class="c1"># webclient</span>
|
|
|
|
<span class="n">webclient_default</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"web_client_url"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> Evennia offers its own native webclient. Normally it will be found from the</span>
|
|
<span class="s2"> game homepage at something like http://yourwebsite.com/webclient. Enter</span>
|
|
<span class="s2"> your specific URL here (when clicking this link you should launch into the</span>
|
|
<span class="s2"> web client)</span>
|
|
|
|
<span class="s2"> Write 'None' if you don't want to list a publicly accessible webclient.</span>
|
|
|
|
<span class="s2"> Current value:</span>
|
|
<span class="s2"> </span><span class="si">{</span><span class="n">webclient_default</span><span class="si">}</span><span class="s2"></span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="p">[</span><span class="s2">"web_client_url"</span><span class="p">]</span> <span class="o">=</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_input</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">webclient_default</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"web_client_url"</span><span class="p">)</span>
|
|
<span class="ow">or</span> <span class="p">(</span><span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"telnet_host"</span><span class="p">))</span>
|
|
<span class="p">):</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span>
|
|
<span class="s2">"</span><span class="se">\n</span><span class="s2">Note: You have not specified any connection options. This means "</span>
|
|
<span class="s2">"your game </span><span class="se">\n</span><span class="s2">will be marked as being in 'closed development' in "</span>
|
|
<span class="s2">"the index."</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Don't forget to inspect and save your changes."</span><span class="p">)</span>
|
|
|
|
<span class="n">node_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="c1"># MSSP</span>
|
|
|
|
|
|
<div class="viewcode-block" id="node_mssp_start"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_mssp_start">[docs]</a><span class="k">def</span> <span class="nf">node_mssp_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">):</span>
|
|
|
|
<span class="n">mssp_module</span> <span class="o">=</span> <span class="n">mod_import</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">MSSP_META_MODULE</span> <span class="ow">or</span> <span class="s2">"server.conf.mssp"</span><span class="p">)</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">filename</span> <span class="o">=</span> <span class="n">mssp_module</span><span class="o">.</span><span class="vm">__file__</span>
|
|
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
|
<span class="n">filename</span> <span class="o">=</span> <span class="s2">"server/conf/mssp.py"</span>
|
|
|
|
<span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"""</span>
|
|
<span class="s2"> MSSP (Mud Server Status Protocol) has a vast amount of options so it must</span>
|
|
<span class="s2"> be modified outside this wizard by directly editing its config file here:</span>
|
|
|
|
<span class="s2"> '</span><span class="si">{</span><span class="n">filename</span><span class="si">}</span><span class="s2">'</span>
|
|
|
|
<span class="s2"> MSSP allows traditional online MUD-listing sites/crawlers to continuously</span>
|
|
<span class="s2"> monitor your game and list information about it. Some of this, like active</span>
|
|
<span class="s2"> player-count, Evennia will automatically add for you, whereas most fields</span>
|
|
<span class="s2"> you need to set manually.</span>
|
|
|
|
<span class="s2"> To use MSSP you should generally have a publicly open game that external</span>
|
|
<span class="s2"> players can connect to. You also need to register at a MUD listing site to</span>
|
|
<span class="s2"> tell them to crawl your game.</span>
|
|
<span class="s2"> """</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_continue</span><span class="p">()</span>
|
|
<span class="n">node_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span></div>
|
|
|
|
|
|
<span class="c1"># Admin</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">_save_changes</span><span class="p">(</span><span class="n">wizard</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Perform the save</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># add import statement to settings file</span>
|
|
<span class="n">import_stanza</span> <span class="o">=</span> <span class="s2">"from .connection_settings import *"</span>
|
|
<span class="n">setting_module</span> <span class="o">=</span> <span class="n">mod_import</span><span class="p">(</span><span class="s2">"server.conf.settings"</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">setting_module</span><span class="o">.</span><span class="vm">__file__</span><span class="p">,</span> <span class="s2">"r+"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="n">txt</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> <span class="c1"># moves pointer to end of file</span>
|
|
<span class="k">if</span> <span class="n">import_stanza</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">txt</span><span class="p">:</span>
|
|
<span class="c1"># add to the end of the file</span>
|
|
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span>
|
|
<span class="s2">"</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
<span class="s2">"try:</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">" # Created by the `evennia connections` wizard</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">import_stanza</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">"except ImportError:</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">" pass"</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">connect_settings_file</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">settings</span><span class="o">.</span><span class="n">GAME_DIR</span><span class="p">,</span> <span class="s2">"server"</span><span class="p">,</span> <span class="s2">"conf"</span><span class="p">,</span> <span class="s2">"connection_settings.py"</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">connect_settings_file</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span>
|
|
<span class="s2">"# This file is auto-generated by the `evennia connections` wizard.</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">"# Don't edit manually, your changes will be overwritten.</span><span class="se">\n\n</span><span class="s2">"</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">wizard</span><span class="o">.</span><span class="n">save_output</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="sa">f</span><span class="s2">"saving to </span><span class="si">{</span><span class="n">connect_settings_file</span><span class="si">}</span><span class="s2"> ..."</span><span class="p">)</span>
|
|
|
|
|
|
<div class="viewcode-block" id="node_view_and_apply_settings"><a class="viewcode-back" href="../../../api/evennia.server.connection_wizard.html#evennia.server.connection_wizard.node_view_and_apply_settings">[docs]</a><span class="k">def</span> <span class="nf">node_view_and_apply_settings</span><span class="p">(</span><span class="n">wizard</span><span class="p">):</span>
|
|
<span class="sd">"""</span>
|
|
<span class="sd"> Inspect and save the data gathered in the other nodes</span>
|
|
|
|
<span class="sd"> """</span>
|
|
<span class="n">pp</span> <span class="o">=</span> <span class="n">pprint</span><span class="o">.</span><span class="n">PrettyPrinter</span><span class="p">(</span><span class="n">indent</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span>
|
|
<span class="n">saves</span> <span class="o">=</span> <span class="kc">False</span>
|
|
|
|
<span class="c1"># game index</span>
|
|
<span class="n">game_index_save_text</span> <span class="o">=</span> <span class="s2">""</span>
|
|
<span class="n">game_index_listing</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">game_index_listing</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">wizard</span><span class="p">,</span> <span class="s2">"game_index_listing"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">)</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">game_index_listing</span> <span class="ow">and</span> <span class="n">settings</span><span class="o">.</span><span class="n">GAME_INDEX_ENABLED</span><span class="p">:</span>
|
|
<span class="n">game_index_listing</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">GAME_INDEX_LISTING</span>
|
|
<span class="k">if</span> <span class="n">game_index_listing</span><span class="p">:</span>
|
|
<span class="n">game_index_save_text</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="s2">"GAME_INDEX_ENABLED = True</span><span class="se">\n</span><span class="s2">"</span>
|
|
<span class="s2">"GAME_INDEX_LISTING = </span><span class="se">\\\n</span><span class="s2">"</span> <span class="o">+</span> <span class="n">pp</span><span class="o">.</span><span class="n">pformat</span><span class="p">(</span><span class="n">game_index_listing</span><span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="n">saves</span> <span class="o">=</span> <span class="kc">True</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">game_index_save_text</span> <span class="o">=</span> <span class="s2">"# No Game Index settings found."</span>
|
|
|
|
<span class="c1"># potentially add other wizards in the future</span>
|
|
<span class="n">text</span> <span class="o">=</span> <span class="n">game_index_save_text</span>
|
|
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Settings to save:</span><span class="se">\n\n</span><span class="si">{</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">saves</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">wizard</span><span class="o">.</span><span class="n">ask_yesno</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">Do you want to save these settings?"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"yes"</span><span class="p">:</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">save_output</span> <span class="o">=</span> <span class="n">text</span>
|
|
<span class="n">_save_changes</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">"... saved!</span><span class="se">\n</span><span class="s2">The changes will apply after you reload your server."</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="s2">"... cancelled."</span><span class="p">)</span>
|
|
<span class="n">wizard</span><span class="o">.</span><span class="n">ask_continue</span><span class="p">()</span>
|
|
<span class="n">node_start</span><span class="p">(</span><span class="n">wizard</span><span class="p">)</span></div>
|
|
</pre></div>
|
|
|
|
<div class="clearer"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../../../index.html">
|
|
<img class="logo" src="../../../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script><h3>Links</h3>
|
|
<ul>
|
|
<li><a href="https://www.evennia.com">Home page</a> </li>
|
|
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
|
|
<li><a href="http://games.evennia.com">Game Index</a> </li>
|
|
<li><a href="http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb">IRC</a> -
|
|
<a href="https://discord.gg/NecFePw">Discord</a> -
|
|
<a href="https://groups.google.com/forum/#%21forum/evennia">Forums</a>
|
|
</li>
|
|
<li><a href="http://evennia.blogspot.com/">Evennia Dev blog</a> </li>
|
|
</ul>
|
|
<h3>Versions</h3>
|
|
<ul>
|
|
<li><a href="../../../../1.0-dev/index.html">1.0-dev (develop branch)</a></li>
|
|
<li><a href="connection_wizard.html">0.9.5 (v0.9.5 branch)</a></li>
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../../index.html">Evennia 0.9.5</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../../index.html" >Module code</a> »</li>
|
|
<li class="nav-item nav-item-2"><a href="../../evennia.html" >evennia</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">evennia.server.connection_wizard</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2020, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |