-
Notifications
You must be signed in to change notification settings - Fork 4
GuideSimpleCommand
op-hui edited this page Sep 4, 2015
·
4 revisions
В evennia можно создавать свои команды. Это довольно просто, следует унаследоваться от класса Command
Рассмотрим пример на основе команды "телебонькать" Сначала определимся, что эту команду можно использовать на предмет, а так же без предмета. Так же, алиасом этой команды будет "телебонить"
Опишем класс
# -*- coding: utf-8 -*-
# АХТУНГ, если вы в питоне используете русские буквы, как описано ниже, первой строчкой файла должна быть # -*- coding: utf-8 -*-
# Создаем собственный класс CmdFap унаследованный от Command
class CmdTelebon(Command):
# название команды
key = "телебонькать"
# так же команду можно вызывать через alias, алиасом может быть несколько
aliases = ["телебонить"]
locks = "cmd:all()"
help_category = "General"
def parse(self):
"Very trivial parser"
self.target = self.args.strip()
def func(self):
caller = self.caller
# Определяем как была использована команда
if not self.target or self.target == "here":
# использована без аргумента объекта, телебонькам себе!
# создаем строку, которую увидят все игроки локации
string = "%s телебонькает." % caller.name
# отслыаем в локацию оповещение, что ты телебонькаешь
caller.location.msg_contents(string, exclude=caller)
caller.msg("Ты телебонькаешь")
else:
# Если команда вызвана телебонькать <объекту>
target = caller.search(self.target)
# Проверяем, если объекта на кого ты телебонькаешь нету - то ничего не делаем
if not target:
# caller.search handles error messages
return
# Объект есть, создаем сообщение, и отправляем его объекту на кого ты телебонькаешь
string = "%s телебонькает на тебя!" % caller.name
target.msg(string)
# Сообщение тому, кто телебонькает
string = "Ты телебонькаешь на %s." % target.name
caller.msg(string)
# Сообщение в локацию, что бы все увидели кто на кого телебонькает
string = "%s фапает на %s." % (caller.name, target.name)
caller.location.msg_contents(string, exclude=[caller,target])
Добавляем этот класс в файл
mudach/commands/command.py
Далее, открываем файл
mudach/commands/default_cmdsets.py
Ищем класс
PlayerCmdSet
Этот класс отвечает за набор команд, доступный игроку и добавляем нашу кастномную команду телебонить в метод at_cmdset_creation
#импортируем команду из файла commands.py
from commands.command import CmdTelebon
class PlayerCmdSet(default_cmds.PlayerCmdSet):
"""
This is the cmdset available to the Player at all times. It is
combined with the `CharacterCmdSet` when the Player puppets a
Character. It holds game-account-specific commands, channel
commands, etc.
"""
key = "DefaultPlayer"
def at_cmdset_creation(self):
"""
Populates the cmdset
"""
super(PlayerCmdSet, self).at_cmdset_creation()
#
# Добавляем возможность Игроку пользоваться командой телебонь
#
self.add(cmdTelebon())