<spanid="evennia-contrib-tutorial-examples-red-button-scripts"></span><h1>evennia.contrib.tutorial_examples.red_button_scripts<aclass="headerlink"href="#module-evennia.contrib.tutorial_examples.red_button_scripts"title="Permalink to this headline">¶</a></h1>
<p>Example of scripts.</p>
<p>These are scripts intended for a particular object - the
red_button object type in contrib/examples. A few variations
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">ClosedLidState</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#ClosedLidState"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#ClosedLidState.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.at_script_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#ClosedLidState.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called once every server restart, so we want to add the
(memory-resident) cmdset to the object here. is_valid is automatically
checked so we don’t need to worry about adding the script to an
<codeclass="sig-name descname">is_valid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#ClosedLidState.is_valid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.is_valid"title="Permalink to this definition">¶</a></dt>
<dd><p>The script is only valid while the lid is closed.
self.obj is the red_button on which this script is defined.</p>
<codeclass="sig-name descname">at_stop</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#ClosedLidState.at_stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.at_stop"title="Permalink to this definition">¶</a></dt>
<dd><p>When the script stops we must make sure to clean up after us.</p>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'ClosedLidState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.ClosedLidState.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">OpenLidState</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#OpenLidState"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#OpenLidState.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.at_script_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#OpenLidState.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called once every server restart, so we want to add the
(memory-resident) cmdset to the object here. is_valid is
automatically checked, so we don’t need to worry about
<codeclass="sig-name descname">is_valid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#OpenLidState.is_valid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.is_valid"title="Permalink to this definition">¶</a></dt>
<dd><p>The script is only valid while the lid is open.
self.obj is the red_button on which this script is defined.</p>
<codeclass="sig-name descname">at_stop</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#OpenLidState.at_stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.at_stop"title="Permalink to this definition">¶</a></dt>
<dd><p>When the script stops (like if the lid is closed again)
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'OpenLidState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.OpenLidState.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">BlindedState</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlindedState"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlindedState.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.at_script_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlindedState.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>We want to add the cmdset to the linked object.</p>
<p>Note that the RedButtonBlind cmdset is defined to completly
replace the other cmdsets on the stack while it is active
(this means that while blinded, only operations in this cmdset
will be possible for the account to perform). It is however
not persistent, so should there be a bug in it, we just need
to restart the server to clear out of it during development.</p>
<codeclass="sig-name descname">at_stop</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlindedState.at_stop"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.at_stop"title="Permalink to this definition">¶</a></dt>
<dd><p>It’s important that we clear out that blinded cmdset
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.BlindedState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'BlindedState'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlindedState.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">CloseLidEvent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#CloseLidEvent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#CloseLidEvent.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when script object is first created. Sets things up.
We want to have a lid on the button that the user can pull
aside in order to make the button ‘pressable’. But after a set
time that lid should auto-close again, making the button safe
<codeclass="sig-name descname">is_valid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#CloseLidEvent.is_valid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.is_valid"title="Permalink to this definition">¶</a></dt>
<dd><p>This script can only operate if the lid is open; if it
is already closed, the script is clearly invalid.</p>
<p>Note that we are here relying on an self.obj being
defined (and being a RedButton object) - this we should be able to
expect since this type of script is always tied to one individual
red button object and not having it would be an error.</p>
<codeclass="sig-name descname">at_repeat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#CloseLidEvent.at_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.at_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Called after self.interval seconds. It closes the lid. Before this method is
called, self.is_valid() is automatically checked, so there is no need to
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'CloseLidEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.CloseLidEvent.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">BlinkButtonEvent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlinkButtonEvent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlinkButtonEvent.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.at_script_creation"title="Permalink to this definition">¶</a></dt>
<dd><p>Sets things up. We want the button’s lamp to blink at
<codeclass="sig-name descname">is_valid</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlinkButtonEvent.is_valid"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.is_valid"title="Permalink to this definition">¶</a></dt>
<dd><p>Button will keep blinking unless it is broken.</p>
<codeclass="sig-name descname">at_repeat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#BlinkButtonEvent.at_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.at_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>Called every self.interval seconds. Makes the lamp in
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'BlinkButtonEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.BlinkButtonEvent.typename"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.contrib.tutorial_examples.red_button_scripts.</code><codeclass="sig-name descname">DeactivateButtonEvent</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#DeactivateButtonEvent"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_script_creation</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#DeactivateButtonEvent.at_script_creation"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.at_script_creation"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">at_start</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#DeactivateButtonEvent.at_start"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.at_start"title="Permalink to this definition">¶</a></dt>
<dd><p>Deactivate the button. Observe that this method is always
called directly, regardless of the value of self.start_delay
(that just controls when at_repeat() is called)</p>
<codeclass="sig-name descname">at_repeat</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/contrib/tutorial_examples/red_button_scripts.html#DeactivateButtonEvent.at_repeat"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.at_repeat"title="Permalink to this definition">¶</a></dt>
<dd><p>When this is called, reset the functionality of the button.</p>
<emclass="property">exception </em><codeclass="sig-name descname">DoesNotExist</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.DoesNotExist"title="Permalink to this definition">¶</a></dt>
<emclass="property">exception </em><codeclass="sig-name descname">MultipleObjectsReturned</code><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.MultipleObjectsReturned"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">path</code><emclass="property"> = 'evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.path"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">typename</code><emclass="property"> = 'DeactivateButtonEvent'</em><aclass="headerlink"href="#evennia.contrib.tutorial_examples.red_button_scripts.DeactivateButtonEvent.typename"title="Permalink to this definition">¶</a></dt>