mirror of
https://github.com/evennia/evennia.git
synced 2026-03-18 13:56:30 +01:00
436 lines
No EOL
34 KiB
HTML
436 lines
No EOL
34 KiB
HTML
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
|
|
|
<title>Map Builder — Evennia 3.x documentation</title>
|
|
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
|
|
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
|
<script src="../_static/jquery.js"></script>
|
|
<script src="../_static/underscore.js"></script>
|
|
<script src="../_static/doctools.js"></script>
|
|
<script src="../_static/language_data.js"></script>
|
|
<link rel="shortcut icon" href="../_static/favicon.ico"/>
|
|
<link rel="index" title="Index" href="../genindex.html" />
|
|
<link rel="search" title="Search" href="../search.html" />
|
|
<link rel="next" title="Creating rooms from an ascii map" href="Contrib-Mapbuilder-Tutorial.html" />
|
|
<link rel="prev" title="Basic Map" href="Contrib-Ingame-Map-Display.html" />
|
|
</head><body>
|
|
|
|
|
|
<div class="admonition important">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
|
|
</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"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="Contrib-Mapbuilder-Tutorial.html" title="Creating rooms from an ascii map"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="Contrib-Ingame-Map-Display.html" title="Basic Map"
|
|
accesskey="P">previous</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="Contribs-Overview.html" accesskey="U">Contribs</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">Map Builder</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
|
|
<div class="documentwrapper">
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<p class="logo"><a href="../index.html">
|
|
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
|
|
</a></p>
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3 id="searchlabel">Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" />
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script>$('#searchbox').show(0);</script>
|
|
<h3><a href="../index.html">Table of Contents</a></h3>
|
|
<ul>
|
|
<li><a class="reference internal" href="#">Map Builder</a><ul>
|
|
<li><a class="reference internal" href="#installation">Installation</a></li>
|
|
<li><a class="reference internal" href="#usage">Usage:</a></li>
|
|
<li><a class="reference internal" href="#examples">Examples</a><ul>
|
|
<li><a class="reference internal" href="#example-one">Example One</a></li>
|
|
<li><a class="reference internal" href="#example-two">Example Two</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Previous topic</h4>
|
|
<p class="topless"><a href="Contrib-Ingame-Map-Display.html"
|
|
title="previous chapter">Basic Map</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="Contrib-Mapbuilder-Tutorial.html"
|
|
title="next chapter">Creating rooms from an ascii map</a></p>
|
|
<div role="note" aria-label="source link">
|
|
<!--h3>This Page</h3-->
|
|
<ul class="this-page-menu">
|
|
<li><a href="../_sources/Contribs/Contrib-Mapbuilder.md.txt"
|
|
rel="nofollow">Show Page Source</a></li>
|
|
</ul>
|
|
</div><h3>Links</h3>
|
|
<ul>
|
|
<li><a href="https://www.evennia.com/docs/latest/index.html">Documentation Top</a> </li>
|
|
<li><a href="https://www.evennia.com">Evennia Home</a> </li>
|
|
<li><a href="https://github.com/evennia/evennia">Github</a> </li>
|
|
<li><a href="http://games.evennia.com">Game Index</a> </li>
|
|
<li>
|
|
<a href="https://discord.gg/AJJpcRUhtF">Discord</a> -
|
|
<a href="https://github.com/evennia/evennia/discussions">Discussions</a> -
|
|
<a href="https://evennia.blogspot.com/">Blog</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<section class="tex2jax_ignore mathjax_ignore" id="map-builder">
|
|
<h1>Map Builder<a class="headerlink" href="#map-builder" title="Permalink to this headline">¶</a></h1>
|
|
<p>Contribution by Cloud_Keeper 2016</p>
|
|
<p>Build a game map from the drawing of a 2D ASCII map.</p>
|
|
<p>This is a command which takes two inputs:</p>
|
|
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>≈≈≈≈≈
|
|
≈♣n♣≈ MAP_LEGEND = {("♣", "♠"): build_forest,
|
|
≈∩▲∩≈ ("∩", "n"): build_mountains,
|
|
≈♠n♠≈ ("▲"): build_temple}
|
|
≈≈≈≈≈
|
|
</pre></div>
|
|
</div>
|
|
<p>A string of ASCII characters representing a map and a dictionary of functions
|
|
containing build instructions. The characters of the map are iterated over and
|
|
compared to a list of trigger characters. When a match is found the
|
|
corresponding function is executed generating the rooms, exits and objects as
|
|
defined by the users build instructions. If a character is not a match to
|
|
a provided trigger character (including spaces) it is simply skipped and the
|
|
process continues.</p>
|
|
<p>For instance, the above map represents a temple (▲) amongst mountains (n,∩)
|
|
in a forest (♣,♠) on an island surrounded by water (≈). Each character on the
|
|
first line is iterated over but as there is no match with our <code class="docutils literal notranslate"><span class="pre">MAP_LEGEND</span></code>, it
|
|
is skipped. On the second line it finds “♣” which is a match and so the
|
|
<code class="docutils literal notranslate"><span class="pre">build_forest</span></code> function is called. Next the <code class="docutils literal notranslate"><span class="pre">build_mountains</span></code> function is
|
|
called and so on until the map is completed. Building instructions are passed
|
|
the following arguments:</p>
|
|
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>x - The rooms position on the maps x axis
|
|
y - The rooms position on the maps y axis
|
|
caller - The account calling the command
|
|
iteration - The current iterations number (0, 1 or 2)
|
|
room_dict - A dictionary containing room references returned by build
|
|
functions where tuple coordinates are the keys (x, y).
|
|
ie room_dict[(2, 2)] will return the temple room above.
|
|
</pre></div>
|
|
</div>
|
|
<p>Building functions should return the room they create. By default these rooms
|
|
are used to create exits between valid adjacent rooms to the north, south,
|
|
east and west directions. This behaviour can turned off with the use of switch
|
|
arguments. In addition to turning off automatic exit generation the switches
|
|
allow the map to be iterated over a number of times. This is important for
|
|
something like custom exit building. Exits require a reference to both the
|
|
exits location and the exits destination. During the first iteration it is
|
|
possible that an exit is created pointing towards a destination that
|
|
has not yet been created resulting in error. By iterating over the map twice
|
|
the rooms can be created on the first iteration and room reliant code can be
|
|
be used on the second iteration. The iteration number and a dictionary of
|
|
references to rooms previously created is passed to the build commands.</p>
|
|
<p>You then call the command in-game using the path to the MAP and MAP_LEGEND vars
|
|
The path you provide is relative to the evennia or mygame folder.</p>
|
|
<p>See also the <a class="reference internal" href="Contrib-Mapbuilder-Tutorial.html"><span class="doc std std-doc">separate tutorial in the docs</span></a>.</p>
|
|
<section id="installation">
|
|
<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
|
|
<p>Use by importing and including the command in your default_cmdsets module.
|
|
For example:</p>
|
|
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span> <span class="c1"># mygame/commands/default_cmdsets.py</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">evennia.contrib.grid</span> <span class="kn">import</span> <span class="n">mapbuilder</span>
|
|
|
|
<span class="o">...</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">mapbuilder</span><span class="o">.</span><span class="n">CmdMapBuilder</span><span class="p">())</span>
|
|
</pre></div>
|
|
</div>
|
|
</section>
|
|
<section id="usage">
|
|
<h2>Usage:<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
|
|
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mapbuilder[/switch] <path.to.file.MAPNAME> <path.to.file.MAP_LEGEND>
|
|
|
|
one - execute build instructions once without automatic exit creation.
|
|
two - execute build instructions twice without automatic exit creation.
|
|
</pre></div>
|
|
</div>
|
|
</section>
|
|
<section id="examples">
|
|
<h2>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
|
|
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>mapbuilder world.gamemap.MAP world.maplegend.MAP_LEGEND
|
|
mapbuilder evennia.contrib.grid.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND
|
|
mapbuilder/two evennia.contrib.grid.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND
|
|
(Legend path defaults to map path)
|
|
</pre></div>
|
|
</div>
|
|
<p>Below are two examples showcasing the use of automatic exit generation and
|
|
custom exit generation. Whilst located, and can be used, from this module for
|
|
convenience The below example code should be in <a class="reference external" href="http://mymap.py">mymap.py</a> in mygame/world.</p>
|
|
<section id="example-one">
|
|
<h3>Example One<a class="headerlink" href="#example-one" title="Permalink to this headline">¶</a></h3>
|
|
<div class="highlight-python notranslate"><div class="highlight"><pre><span></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="c1"># mapbuilder evennia.contrib.grid.mapbuilder.EXAMPLE1_MAP EXAMPLE1_LEGEND</span>
|
|
|
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
|
|
|
<span class="c1"># Add the necessary imports for your instructions here.</span>
|
|
<span class="kn">from</span> <span class="nn">evennia</span> <span class="kn">import</span> <span class="n">create_object</span>
|
|
<span class="kn">from</span> <span class="nn">typeclasses</span> <span class="kn">import</span> <span class="n">rooms</span><span class="p">,</span> <span class="n">exits</span>
|
|
<span class="kn">from</span> <span class="nn">random</span> <span class="kn">import</span> <span class="n">randint</span>
|
|
<span class="kn">import</span> <span class="nn">random</span>
|
|
|
|
|
|
<span class="c1"># A map with a temple (▲) amongst mountains (n,∩) in a forest (♣,♠) on an</span>
|
|
<span class="c1"># island surrounded by water (≈). By giving no instructions for the water</span>
|
|
<span class="c1"># characters we effectively skip it and create no rooms for those squares.</span>
|
|
<span class="n">EXAMPLE1_MAP</span> <span class="o">=</span> <span class="s1">'''</span>
|
|
<span class="s1">≈≈≈≈≈</span>
|
|
<span class="s1">≈♣n♣≈</span>
|
|
<span class="s1">≈∩▲∩≈</span>
|
|
<span class="s1">≈♠n♠≈</span>
|
|
<span class="s1">≈≈≈≈≈</span>
|
|
<span class="s1">'''</span>
|
|
|
|
<span class="k">def</span> <span class="nf">example1_build_forest</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''A basic example of build instructions. Make sure to include **kwargs</span>
|
|
<span class="sd"> in the arguments and return an instance of the room for exit generation.'''</span>
|
|
|
|
<span class="c1"># Create a room and provide a basic description.</span>
|
|
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"forest"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
<span class="n">room</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">"Basic forest room."</span>
|
|
|
|
<span class="c1"># Send a message to the account</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
|
|
|
<span class="c1"># This is generally mandatory.</span>
|
|
<span class="k">return</span> <span class="n">room</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">example1_build_mountains</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''A room that is a little more advanced'''</span>
|
|
|
|
<span class="c1"># Create the room.</span>
|
|
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"mountains"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
|
|
<span class="c1"># Generate a description by randomly selecting an entry from a list.</span>
|
|
<span class="n">room_desc</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="s2">"Mountains as far as the eye can see"</span><span class="p">,</span>
|
|
<span class="s2">"Your path is surrounded by sheer cliffs"</span><span class="p">,</span>
|
|
<span class="s2">"Haven't you seen that rock before?"</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="n">room</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">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">room_desc</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Create a random number of objects to populate the room.</span>
|
|
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">)):</span>
|
|
<span class="n">rock</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">"Rock"</span><span class="p">,</span> <span class="n">location</span><span class="o">=</span><span class="n">room</span><span class="p">)</span>
|
|
<span class="n">rock</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">"An ordinary rock."</span>
|
|
|
|
<span class="c1"># Send a message to the account</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
|
|
|
<span class="c1"># This is generally mandatory.</span>
|
|
<span class="k">return</span> <span class="n">room</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">example1_build_temple</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''A unique room that does not need to be as general'''</span>
|
|
|
|
<span class="c1"># Create the room.</span>
|
|
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"temple"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
|
|
<span class="c1"># Set the description.</span>
|
|
<span class="n">room</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="p">(</span>
|
|
<span class="s2">"In what, from the outside, appeared to be a grand and "</span>
|
|
<span class="s2">"ancient temple you've somehow found yourself in the the "</span>
|
|
<span class="s2">"Evennia Inn! It consists of one large room filled with "</span>
|
|
<span class="s2">"tables. The bardisk extends along the east wall, where "</span>
|
|
<span class="s2">"multiple barrels and bottles line the shelves. The "</span>
|
|
<span class="s2">"barkeep seems busy handing out ale and chatting with "</span>
|
|
<span class="s2">"the patrons, which are a rowdy and cheerful lot, "</span>
|
|
<span class="s2">"keeping the sound level only just below thunderous. "</span>
|
|
<span class="s2">"This is a rare spot of mirth on this dread moor."</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Send a message to the account</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
|
|
|
<span class="c1"># This is generally mandatory.</span>
|
|
<span class="k">return</span> <span class="n">room</span>
|
|
|
|
|
|
<span class="c1"># Include your trigger characters and build functions in a legend dict.</span>
|
|
<span class="n">EXAMPLE1_LEGEND</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="p">(</span><span class="s2">"♣"</span><span class="p">,</span> <span class="s2">"♠"</span><span class="p">):</span> <span class="n">example1_build_forest</span><span class="p">,</span>
|
|
<span class="p">(</span><span class="s2">"∩"</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">):</span> <span class="n">example1_build_mountains</span><span class="p">,</span>
|
|
<span class="p">(</span><span class="s2">"▲"</span><span class="p">):</span> <span class="n">example1_build_temple</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
</div>
|
|
</section>
|
|
<section id="example-two">
|
|
<h3>Example Two<a class="headerlink" href="#example-two" title="Permalink to this headline">¶</a></h3>
|
|
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># @mapbuilder/two evennia.contrib.grid.mapbuilder.EXAMPLE2_MAP EXAMPLE2_LEGEND</span>
|
|
|
|
<span class="c1"># -*- coding: utf-8 -*-</span>
|
|
|
|
<span class="c1"># Add the necessary imports for your instructions here.</span>
|
|
<span class="c1"># from evennia import create_object</span>
|
|
<span class="c1"># from typeclasses import rooms, exits</span>
|
|
<span class="c1"># from evennia.utils import utils</span>
|
|
<span class="c1"># from random import randint</span>
|
|
<span class="c1"># import random</span>
|
|
|
|
<span class="c1"># This is the same layout as Example 1 but included are characters for exits.</span>
|
|
<span class="c1"># We can use these characters to determine which rooms should be connected.</span>
|
|
<span class="n">EXAMPLE2_MAP</span> <span class="o">=</span> <span class="s1">'''</span>
|
|
<span class="s1">≈ ≈ ≈ ≈ ≈</span>
|
|
|
|
<span class="s1">≈ ♣-♣-♣ ≈</span>
|
|
<span class="s1"> | |</span>
|
|
<span class="s1">≈ ♣ ♣ ♣ ≈</span>
|
|
<span class="s1"> | | |</span>
|
|
<span class="s1">≈ ♣-♣-♣ ≈</span>
|
|
|
|
<span class="s1">≈ ≈ ≈ ≈ ≈</span>
|
|
<span class="s1">'''</span>
|
|
|
|
<span class="k">def</span> <span class="nf">example2_build_forest</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''A basic room'''</span>
|
|
<span class="c1"># If on anything other than the first iteration - Do nothing.</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"iteration"</span><span class="p">]</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
|
|
<span class="n">room</span> <span class="o">=</span> <span class="n">create_object</span><span class="p">(</span><span class="n">rooms</span><span class="o">.</span><span class="n">Room</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"forest"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
<span class="n">room</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">"Basic forest room."</span>
|
|
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="n">room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">room</span><span class="o">.</span><span class="n">dbref</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">room</span>
|
|
|
|
<span class="k">def</span> <span class="nf">example2_build_verticle_exit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''Creates two exits to and from the two rooms north and south.'''</span>
|
|
<span class="c1"># If on the first iteration - Do nothing.</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"iteration"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">north_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"room_dict"</span><span class="p">][(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)]</span>
|
|
<span class="n">south_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"room_dict"</span><span class="p">][(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span>
|
|
|
|
<span class="c1"># create exits in the rooms</span>
|
|
<span class="n">create_object</span><span class="p">(</span>
|
|
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"south"</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">"s"</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">north_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">south_room</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">create_object</span><span class="p">(</span>
|
|
<span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"north"</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">"n"</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">south_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">north_room</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Connected: "</span> <span class="o">+</span> <span class="n">north_room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" & "</span> <span class="o">+</span> <span class="n">south_room</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">example2_build_horizontal_exit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">'''Creates two exits to and from the two rooms east and west.'''</span>
|
|
<span class="c1"># If on the first iteration - Do nothing.</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"iteration"</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">return</span>
|
|
|
|
<span class="n">west_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"room_dict"</span><span class="p">][(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
|
|
<span class="n">east_room</span> <span class="o">=</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"room_dict"</span><span class="p">][(</span><span class="n">x</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">y</span><span class="p">)]</span>
|
|
|
|
<span class="n">create_object</span><span class="p">(</span><span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"east"</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">"e"</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">west_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">east_room</span><span class="p">)</span>
|
|
|
|
<span class="n">create_object</span><span class="p">(</span><span class="n">exits</span><span class="o">.</span><span class="n">Exit</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"west"</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s2">"w"</span><span class="p">],</span> <span class="n">location</span><span class="o">=</span><span class="n">east_room</span><span class="p">,</span> <span class="n">destination</span><span class="o">=</span><span class="n">west_room</span><span class="p">)</span>
|
|
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"caller"</span><span class="p">]</span><span class="o">.</span><span class="n">msg</span><span class="p">(</span><span class="s2">"Connected: "</span> <span class="o">+</span> <span class="n">west_room</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">" & "</span> <span class="o">+</span> <span class="n">east_room</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Include your trigger characters and build functions in a legend dict.</span>
|
|
<span class="n">EXAMPLE2_LEGEND</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="p">(</span><span class="s2">"♣"</span><span class="p">,</span> <span class="s2">"♠"</span><span class="p">):</span> <span class="n">example2_build_forest</span><span class="p">,</span>
|
|
<span class="p">(</span><span class="s2">"|"</span><span class="p">):</span> <span class="n">example2_build_verticle_exit</span><span class="p">,</span>
|
|
<span class="p">(</span><span class="s2">"-"</span><span class="p">):</span> <span class="n">example2_build_horizontal_exit</span><span class="p">,</span>
|
|
<span class="p">}</span>
|
|
|
|
</pre></div>
|
|
</div>
|
|
<div class="toctree-wrapper compound">
|
|
</div>
|
|
<hr class="docutils" />
|
|
<p><small>This document page is generated from <code class="docutils literal notranslate"><span class="pre">evennia/contrib/grid/mapbuilder/README.md</span></code>. Changes to this
|
|
file will be overwritten, so edit that file rather than this one.</small></p>
|
|
</section>
|
|
</section>
|
|
</section>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="right" >
|
|
<a href="Contrib-Mapbuilder-Tutorial.html" title="Creating rooms from an ascii map"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="Contrib-Ingame-Map-Display.html" title="Basic Map"
|
|
>previous</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 3.x</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="Contribs-Overview.html" >Contribs</a> »</li>
|
|
<li class="nav-item nav-item-this"><a href="">Map Builder</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<div class="admonition important">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">You are reading an old version of the Evennia documentation. <a href="https://www.evennia.com/docs/latest/index.html">The latest version is here</a></p>.
|
|
</div>
|
|
|
|
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2023, The Evennia developer community.
|
|
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
|
|
</div>
|
|
</body>
|
|
</html> |