mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
Merge branch 'master' into black-format
This commit is contained in:
commit
1efcc31744
19 changed files with 456 additions and 32 deletions
27
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
27
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG] Enter a brief description here"
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
#### Describe the bug
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
#### To Reproduce
|
||||
Steps to reproduce the behavior:
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
4. See error
|
||||
|
||||
#### Expected behavior
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
#### Environment, Evennia version, OS etc
|
||||
If unsure, run `evennia -v` or get the first few lines of the `about` command in-game.
|
||||
|
||||
#### Additional context
|
||||
Any other context about the problem, or ideas on how to solve.
|
||||
14
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
Normal file
14
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
name: Documentation issue
|
||||
about: Documentation problems and suggestions
|
||||
title: '[Documentation] Enter a brief description here'
|
||||
labels: documentation
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
#### Documentation issue
|
||||
Describe what the issue is and where it can/should be found.
|
||||
|
||||
#### Suggested change
|
||||
The suggested change.
|
||||
20
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature-request.md
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[Feature Request] Enter a brief description here"
|
||||
labels: feature-request
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
#### Is your feature request related to a problem? Please describe.
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
#### Describe the solution you'd like
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
#### Describe alternatives you've considered
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
#### Additional context
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
|
@ -27,6 +27,8 @@ without arguments starts a full interactive Python console.
|
|||
- `AttributeHandler.get(return_list=True)` will return `[]` if there are no
|
||||
Attributes instead of `[None]`.
|
||||
- Remove `pillow` requirement (install especially if using imagefield)
|
||||
- Add Simplified Korean translation (user aceamro)
|
||||
- Show warning on `start -l` if settings contains values unsafe for production.
|
||||
|
||||
|
||||
## Evennia 0.9 (2018-2019)
|
||||
|
|
|
|||
|
|
@ -1469,10 +1469,10 @@ class CmdSetAttribute(ObjManipCommand):
|
|||
char: Setting an attribute on a character (global search)
|
||||
character: Alias for char, as above.
|
||||
|
||||
Sets attributes on objects. The second form clears
|
||||
a previously set attribute while the last form
|
||||
inspects the current value of the attribute
|
||||
(if any).
|
||||
Sets attributes on objects. The second example form above clears a
|
||||
previously set attribute while the third form inspects the current value of
|
||||
the attribute (if any). The last one (with the star) is a shortcut for
|
||||
operatin on a player Account rather than an Object.
|
||||
|
||||
The most common data to save with this command are strings and
|
||||
numbers. You can however also set Python primitives such as lists,
|
||||
|
|
|
|||
|
|
@ -264,6 +264,7 @@ class EvenniaPythonConsole(code.InteractiveConsole):
|
|||
"""Push some code, whether complete or not."""
|
||||
old_stdout = sys.stdout
|
||||
old_stderr = sys.stderr
|
||||
|
||||
class FakeStd:
|
||||
def __init__(self, caller):
|
||||
self.caller = caller
|
||||
|
|
@ -274,9 +275,14 @@ class EvenniaPythonConsole(code.InteractiveConsole):
|
|||
fake_std = FakeStd(self.caller)
|
||||
sys.stdout = fake_std
|
||||
sys.stderr = fake_std
|
||||
result = super().push(line)
|
||||
sys.stdout = old_stdout
|
||||
sys.stderr = old_stderr
|
||||
result = None
|
||||
try:
|
||||
result = super().push(line)
|
||||
except SystemExit:
|
||||
pass
|
||||
finally:
|
||||
sys.stdout = old_stdout
|
||||
sys.stderr = old_stderr
|
||||
return result
|
||||
|
||||
|
||||
|
|
@ -298,8 +304,8 @@ class CmdPy(COMMAND_DEFAULT_CLASS):
|
|||
being parsed as HTML in the webclient but not in telnet clients)
|
||||
|
||||
Without argument, open a Python console in-game. This is a full console,
|
||||
accepting multi-line Python code for testing and debugging. Type `exit` to
|
||||
return to the game. If Evennia is reloaded, thek console will be closed.
|
||||
accepting multi-line Python code for testing and debugging. Type `exit()` to
|
||||
return to the game. If Evennia is reloaded, the console will be closed.
|
||||
|
||||
Enter a line of instruction after the 'py' command to execute it
|
||||
immediately. Separate multiple commands by ';' or open the code editor
|
||||
|
|
@ -768,8 +774,13 @@ class CmdAbout(COMMAND_DEFAULT_CLASS):
|
|||
"""Display information about server or target"""
|
||||
|
||||
string = """
|
||||
|cEvennia|n {version}|n
|
||||
MU* development system
|
||||
|cEvennia|n MU* development system
|
||||
|
||||
|wEvennia version|n: {version}
|
||||
|wOS|n: {os}
|
||||
|wPython|n: {python}
|
||||
|wTwisted|n: {twisted}
|
||||
|wDjango|n: {django}
|
||||
|
||||
|wLicence|n https://opensource.org/licenses/BSD-3-Clause
|
||||
|wWeb|n http://www.evennia.com
|
||||
|
|
@ -778,10 +789,6 @@ class CmdAbout(COMMAND_DEFAULT_CLASS):
|
|||
|wMaintainer|n (2010-) Griatch (griatch AT gmail DOT com)
|
||||
|wMaintainer|n (2006-10) Greg Taylor
|
||||
|
||||
|wOS|n {os}
|
||||
|wPython|n {python}
|
||||
|wTwisted|n {twisted}
|
||||
|wDjango|n {django}
|
||||
""".format(version=utils.get_evennia_version(),
|
||||
os=os.name,
|
||||
python=sys.version.split()[0],
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
BIN
evennia/locale/ko/LC_MESSAGES/django.mo
Normal file
BIN
evennia/locale/ko/LC_MESSAGES/django.mo
Normal file
Binary file not shown.
333
evennia/locale/ko/LC_MESSAGES/django.po
Normal file
333
evennia/locale/ko/LC_MESSAGES/django.po
Normal file
|
|
@ -0,0 +1,333 @@
|
|||
##The Simplified Korean translation for the Evennia server.
|
||||
##Copyright (C) 2019 Ethan Kwon
|
||||
##This file is distributed under the same license as the Evennia package.
|
||||
##FIRST AUTHOR: Ethan Kwon , 2019-
|
||||
##
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-09-21 05:00+0900\n"
|
||||
"PO-Revision-Date: 2019-09-21 05:00+0900\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: korean\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: .\accounts\accounts.py:784
|
||||
msgid "Account being deleted."
|
||||
msgstr "계정이 삭제되었습니다."
|
||||
|
||||
#: .\commands\cmdhandler.py:680
|
||||
msgid "There were multiple matches."
|
||||
msgstr "여러 개의 일치 항목을 찾았습니다."
|
||||
|
||||
#: .\commands\cmdhandler.py:703
|
||||
#, python-format
|
||||
msgid "Command '%s' is not available."
|
||||
msgstr "'%s' 명령은 사용할 수 없습니다."
|
||||
|
||||
#: .\commands\cmdhandler.py:708
|
||||
#, python-format
|
||||
msgid " Maybe you meant %s?"
|
||||
msgstr "'%s'이 맞습니까?"
|
||||
|
||||
#: .\commands\cmdhandler.py:708
|
||||
msgid "or"
|
||||
msgstr "또는"
|
||||
|
||||
#: .\commands\cmdhandler.py:710
|
||||
msgid " Type \"help\" for help."
|
||||
msgstr " 도음말은 \"help\"를 입력하세요."
|
||||
|
||||
#: .\commands\cmdsethandler.py:89
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"{traceback}\n"
|
||||
"Error loading cmdset '{path}'\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
msgstr ""
|
||||
"{traceback}\n"
|
||||
"Error loading cmdset '{path}'\n"
|
||||
"Traceback was logged {timestamp})"
|
||||
|
||||
#: .\commands\cmdsethandler.py:94
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Error loading cmdset: No cmdset class '{classname}' in '{path}'.\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
msgstr ""
|
||||
"Error loading cmdset: No cmdset class '{classname}' in '{path}'.\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
|
||||
#: .\commands\cmdsethandler.py:98
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"{traceback}\n"
|
||||
"SyntaxError encountered when loading cmdset '{path}'.\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
msgstr ""
|
||||
"{traceback}\n"
|
||||
"SyntaxError encountered when loading cmdset '{path}'.\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
|
||||
#: .\commands\cmdsethandler.py:103
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"{traceback}\n"
|
||||
"Compile/Run error when loading cmdset '{path}'.\",\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
msgstr ""
|
||||
"{traceback}\n"
|
||||
"Compile/Run error when loading cmdset '{path}'.\",\n"
|
||||
"(Traceback was logged {timestamp})"
|
||||
|
||||
#: .\commands\cmdsethandler.py:108
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"Error encountered for cmdset at path '{path}'.\n"
|
||||
"Replacing with fallback '{fallback_path}'.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Error encountered for cmdset at path '{path}'.\n"
|
||||
"Replacing with fallback '{fallback_path}'.\n"
|
||||
|
||||
#: .\commands\cmdsethandler.py:114
|
||||
#, python-brace-format
|
||||
msgid "Fallback path '{fallback_path}' failed to generate a cmdset."
|
||||
msgstr "Fallback path '{fallback_path}' failed to generate a cmdset."
|
||||
|
||||
#: .\commands\cmdsethandler.py:182 .\commands\cmdsethandler.py:192
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"(Unsuccessfully tried '%s')."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"(Unsuccessfully tried '%s')."
|
||||
|
||||
#: .\commands\cmdsethandler.py:311
|
||||
#, python-brace-format
|
||||
msgid "custom {mergetype} on cmdset '{cmdset}'"
|
||||
msgstr "custom {mergetype} on cmdset '{cmdset}'"
|
||||
|
||||
#: .\commands\cmdsethandler.py:314
|
||||
#, python-brace-format
|
||||
msgid " <Merged {mergelist} {mergetype}, prio {prio}>: {current}"
|
||||
msgstr " <Merged {mergelist} {mergetype}, prio {prio}>: {current}"
|
||||
|
||||
#: .\commands\cmdsethandler.py:322
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
||||
" {keylist}"
|
||||
msgstr ""
|
||||
" <{key} ({mergetype}, prio {prio}, {permstring})>:\n"
|
||||
" {keylist}"
|
||||
|
||||
#: .\commands\cmdsethandler.py:426
|
||||
msgid "Only CmdSets can be added to the cmdsethandler!"
|
||||
msgstr "Only CmdSets can be added to the cmdsethandler!"
|
||||
|
||||
#: .\comms\channelhandler.py:100
|
||||
msgid "Say what?"
|
||||
msgstr "뭐라구요?"
|
||||
|
||||
#: .\comms\channelhandler.py:105
|
||||
#, python-format
|
||||
msgid "Channel '%s' not found."
|
||||
msgstr "'%s' 채널을 찾을 수 없습니다."
|
||||
|
||||
#: .\comms\channelhandler.py:108
|
||||
#, python-format
|
||||
msgid "You are not connected to channel '%s'."
|
||||
msgstr "'%s' 채널에 접속하고 있지 않습니다."
|
||||
|
||||
#: .\comms\channelhandler.py:112
|
||||
#, python-format
|
||||
msgid "You are not permitted to send to channel '%s'."
|
||||
msgstr "'%s' 채널에 보낼 수 없습니다."
|
||||
|
||||
#: .\comms\channelhandler.py:155
|
||||
msgid " (channel)"
|
||||
msgstr " (채널)"
|
||||
|
||||
#: .\locks\lockhandler.py:236
|
||||
#, python-format
|
||||
msgid "Lock: lock-function '%s' is not available."
|
||||
msgstr "Lock: lock-function '%s' is not available."
|
||||
|
||||
#: .\locks\lockhandler.py:249
|
||||
#, python-format
|
||||
msgid "Lock: definition '%s' has syntax errors."
|
||||
msgstr "Lock: definition '%s' has syntax errors."
|
||||
|
||||
#: .\locks\lockhandler.py:253
|
||||
#, python-format
|
||||
msgid ""
|
||||
"LockHandler on %(obj)s: access type '%(access_type)s' changed from "
|
||||
"'%(source)s' to '%(goal)s' "
|
||||
msgstr ""
|
||||
"LockHandler on %(obj)s: access type '%(access_type)s' changed from "
|
||||
"'%(source)s' to '%(goal)s' "
|
||||
|
||||
#: .\locks\lockhandler.py:320
|
||||
#, python-brace-format
|
||||
msgid "Lock: '{lockdef}' contains no colon (:)."
|
||||
msgstr "Lock: '{lockdef}' contains no colon (:)."
|
||||
|
||||
#: .\locks\lockhandler.py:328
|
||||
#, python-brace-format
|
||||
msgid "Lock: '{lockdef}' has no access_type (left-side of colon is empty)."
|
||||
msgstr "Lock: '{lockdef}' has no access_type (left-side of colon is empty)."
|
||||
|
||||
#: .\locks\lockhandler.py:336
|
||||
#, python-brace-format
|
||||
msgid "Lock: '{lockdef}' has mismatched parentheses."
|
||||
msgstr "Lock: '{lockdef}' has mismatched parentheses."
|
||||
|
||||
#: .\locks\lockhandler.py:343
|
||||
#, python-brace-format
|
||||
msgid "Lock: '{lockdef}' has no valid lock functions."
|
||||
msgstr "Lock: '{lockdef}' has no valid lock functions."
|
||||
|
||||
#: .\objects\objects.py:745
|
||||
#, python-format
|
||||
msgid "Couldn't perform move ('%s'). Contact an admin."
|
||||
msgstr "Couldn't perform move ('%s'). 운영자에게 문의하세요."
|
||||
|
||||
#: .\objects\objects.py:755
|
||||
msgid "The destination doesn't exist."
|
||||
msgstr "The destination doesn't exist."
|
||||
|
||||
#: .\objects\objects.py:846
|
||||
#, python-format
|
||||
msgid "Could not find default home '(#%d)'."
|
||||
msgstr "Could not find default home '(#%d)'."
|
||||
|
||||
#: .\objects\objects.py:862
|
||||
msgid "Something went wrong! You are dumped into nowhere. Contact an admin."
|
||||
msgstr "Something went wrong! You are dumped into nowhere. 운영자에게 문의하세요."
|
||||
|
||||
#: .\objects\objects.py:1004
|
||||
#, python-format
|
||||
msgid "Your character %s has been destroyed."
|
||||
msgstr "%s 캐릭터가 삭제되었습니다."
|
||||
|
||||
#: .\scripts\scripthandler.py:53
|
||||
#, python-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s"
|
||||
msgstr ""
|
||||
"\n"
|
||||
" '%(key)s' (%(next_repeat)s/%(interval)s, %(repeats)s repeats): %(desc)s"
|
||||
|
||||
#: .\scripts\scripts.py:199
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'."
|
||||
msgstr ""
|
||||
"Script %(key)s(#%(dbid)s) of type '%(cname)s': at_repeat() error '%(err)s'."
|
||||
|
||||
#: .\server\initial_setup.py:28
|
||||
msgid ""
|
||||
"\n"
|
||||
"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if "
|
||||
"you need\n"
|
||||
"help, want to contribute, report issues or just join the community.\n"
|
||||
"As Account #1 you can create a demo/tutorial area with |w@batchcommand "
|
||||
"tutorial_world.build|n.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Welcome to your new |wEvennia|n-based game! Visit http://www.evennia.com if "
|
||||
"you need\n"
|
||||
"help, want to contribute, report issues or just join the community.\n"
|
||||
"#1 유저(운영자)는 |w@batchcommand tutorial_world.build|n.명령을 사용하여\n"
|
||||
"데모겸 튜터리얼 월드를 생성할 수 있습니다.\n"
|
||||
" "
|
||||
|
||||
#: .\server\initial_setup.py:92
|
||||
msgid "This is User #1."
|
||||
msgstr "This is User #1."
|
||||
|
||||
#: .\server\initial_setup.py:105
|
||||
msgid "Limbo"
|
||||
msgstr "림보"
|
||||
|
||||
#: .\server\server.py:139
|
||||
msgid "idle timeout exceeded"
|
||||
msgstr "연결 시간 초과"
|
||||
|
||||
#: .\server\sessionhandler.py:392
|
||||
msgid " ... Server restarted."
|
||||
msgstr " ... 서버가 재가동되었습니다."
|
||||
|
||||
#: .\server\sessionhandler.py:620
|
||||
msgid "Logged in from elsewhere. Disconnecting."
|
||||
msgstr "어디에선가 로그인했습니다. 접속이 끊어집니다."
|
||||
|
||||
#: .\server\sessionhandler.py:648
|
||||
msgid "Idle timeout exceeded, disconnecting."
|
||||
msgstr "연결 시간이 초과되었습니다. 접속이 끊어집니다."
|
||||
|
||||
#: .\server\validators.py:50
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%s From a terminal client, you can also use a phrase of multiple words if "
|
||||
"you enclose the password in double quotes."
|
||||
msgstr ""
|
||||
"%s 터미널 클라이언트에서 암호를 큰 따옴표로 묶으면 여러 단어로 된 암호를 사용할 수 있습니다."
|
||||
""
|
||||
|
||||
#: .\utils\evmenu.py:192
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Menu node '{nodename}' is either not implemented or caused an error. Make "
|
||||
"another choice."
|
||||
msgstr ""
|
||||
"Menu node '{nodename}'가 구현되지 않았거나 오류가 발생했습니다."
|
||||
"다른 선택을 해보세요."
|
||||
|
||||
#: .\utils\evmenu.py:194
|
||||
#, python-brace-format
|
||||
msgid "Error in menu node '{nodename}'."
|
||||
msgstr "Menu node '{nodename}'에서 오류가 발생했습니다."
|
||||
|
||||
#: .\utils\evmenu.py:195
|
||||
msgid "No description."
|
||||
msgstr "설명이 없습니다."
|
||||
|
||||
#: .\utils\evmenu.py:196
|
||||
msgid "Commands: <menu option>, help, quit"
|
||||
msgstr "명령: <menu option>, help, quit"
|
||||
|
||||
#: .\utils\evmenu.py:197
|
||||
msgid "Commands: <menu option>, help"
|
||||
msgstr "명령: <menu option>, help"
|
||||
|
||||
#: .\utils\evmenu.py:198
|
||||
msgid "Commands: help, quit"
|
||||
msgstr "명령: help, quit"
|
||||
|
||||
#: .\utils\evmenu.py:199
|
||||
msgid "Commands: help"
|
||||
msgstr "명령: help"
|
||||
|
||||
#: .\utils\evmenu.py:200
|
||||
msgid "Choose an option or try 'help'."
|
||||
msgstr "다른 옵션을 선택하거나 'help'를 확인해보세요."
|
||||
|
||||
#: .\utils\utils.py:1882
|
||||
#, python-format
|
||||
msgid "Could not find '%s'."
|
||||
msgstr "'%s'를 찾을 수 없습니다."
|
||||
|
||||
#: .\utils\utils.py:1889
|
||||
#, python-format
|
||||
msgid "More than one match for '%s' (please narrow target):\n"
|
||||
msgstr "'%s'와 일치하는 항목을 여러 개 찾았습니다.:\n"
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -85,7 +85,12 @@ def check_errors(settings):
|
|||
|
||||
def check_warnings(settings):
|
||||
"""
|
||||
Check deprecations that should produce warnings but which
|
||||
Check conditions and deprecations that should produce warnings but which
|
||||
does not stop launch.
|
||||
"""
|
||||
pass
|
||||
if settings.DEBUG:
|
||||
print(" [Devel: settings.DEBUG is True. Important to turn off in production.]")
|
||||
if settings.IN_GAME_ERRORS:
|
||||
print(" [Devel: settings.IN_GAME_ERRORS is True. Turn off in production.]")
|
||||
if settings.ALLOWED_HOSTS == ["*"]:
|
||||
print(" [Devel: settings.ALLOWED_HOSTS set to '*' (all). Limit in production.]")
|
||||
|
|
|
|||
|
|
@ -242,7 +242,7 @@ ERROR_DATABASE = \
|
|||
(error was '{traceback}')
|
||||
|
||||
If you think your database should work, make sure you are running your
|
||||
commands from inside your game directory. If this error persists, run
|
||||
commands from inside your game directory. If this error persists, run
|
||||
|
||||
evennia migrate
|
||||
|
||||
|
|
@ -1611,7 +1611,7 @@ def show_version_info(about=False):
|
|||
django=django.get_version())
|
||||
|
||||
|
||||
def error_check_python_modules():
|
||||
def error_check_python_modules(show_warnings=False):
|
||||
"""
|
||||
Import settings modules in settings. This will raise exceptions on
|
||||
pure python-syntax issues which are hard to catch gracefully with
|
||||
|
|
@ -1619,6 +1619,9 @@ def error_check_python_modules():
|
|||
python source files themselves). Best they fail already here
|
||||
before we get any further.
|
||||
|
||||
Kwargs:
|
||||
show_warnings (bool): If non-fatal warning messages should be shown.
|
||||
|
||||
"""
|
||||
|
||||
from django.conf import settings
|
||||
|
|
@ -1634,11 +1637,13 @@ def error_check_python_modules():
|
|||
from evennia.server import deprecations
|
||||
try:
|
||||
deprecations.check_errors(settings)
|
||||
deprecations.check_warnings(settings)
|
||||
except DeprecationWarning as err:
|
||||
print(err)
|
||||
sys.exit()
|
||||
|
||||
if show_warnings:
|
||||
deprecations.check_warnings(settings)
|
||||
|
||||
# core modules
|
||||
_imp(settings.COMMAND_PARSER)
|
||||
_imp(settings.SEARCH_AT_RESULT)
|
||||
|
|
@ -2113,11 +2118,11 @@ def main():
|
|||
query_info()
|
||||
elif option == "start":
|
||||
init_game_directory(CURRENT_DIR, check_db=True)
|
||||
error_check_python_modules()
|
||||
error_check_python_modules(show_warnings=args.tail_log)
|
||||
start_evennia(args.profiler, args.profiler)
|
||||
elif option == "istart":
|
||||
init_game_directory(CURRENT_DIR, check_db=True)
|
||||
error_check_python_modules()
|
||||
error_check_python_modules(show_warnings=args.tail_log)
|
||||
start_server_interactive()
|
||||
elif option == "ipstart":
|
||||
start_portal_interactive()
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ import re
|
|||
from twisted.internet import protocol
|
||||
from twisted.internet.task import LoopingCall
|
||||
from twisted.conch.telnet import Telnet, StatefulTelnetProtocol
|
||||
from twisted.conch.telnet import IAC, NOP, LINEMODE, GA, WILL, WONT, ECHO, NULL
|
||||
from twisted.conch.telnet import (IAC, NOP, LINEMODE, GA, WILL, WONT, ECHO, NULL,
|
||||
MODE, LINEMODE_EDIT, LINEMODE_TRAPSIG)
|
||||
from django.conf import settings
|
||||
from evennia.server.session import Session
|
||||
from evennia.server.portal import ttype, mssp, telnet_oob, naws, suppress_ga
|
||||
|
|
@ -51,6 +52,8 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session):
|
|||
This is called when the connection is first established.
|
||||
|
||||
"""
|
||||
# important in order to work normally with standard telnet
|
||||
self.do(LINEMODE)
|
||||
# initialize the session
|
||||
self.line_buffer = b""
|
||||
client_address = self.transport.client
|
||||
|
|
@ -146,12 +149,18 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session):
|
|||
enable (bool): If this option should be enabled.
|
||||
|
||||
"""
|
||||
return (option == LINEMODE or
|
||||
option == ttype.TTYPE or
|
||||
option == naws.NAWS or
|
||||
option == MCCP or
|
||||
option == mssp.MSSP or
|
||||
option == suppress_ga.SUPPRESS_GA)
|
||||
if option == LINEMODE:
|
||||
# make sure to activate line mode with local editing for all clients
|
||||
self.requestNegotiation(LINEMODE, MODE +
|
||||
bytes(chr(ord(LINEMODE_EDIT) +
|
||||
ord(LINEMODE_TRAPSIG)), 'ascii'))
|
||||
return True
|
||||
else:
|
||||
return (option == ttype.TTYPE or
|
||||
option == naws.NAWS or
|
||||
option == MCCP or
|
||||
option == mssp.MSSP or
|
||||
option == suppress_ga.SUPPRESS_GA)
|
||||
|
||||
def enableLocal(self, option):
|
||||
"""
|
||||
|
|
@ -164,7 +173,8 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session):
|
|||
enable (bool): If this option should be enabled.
|
||||
|
||||
"""
|
||||
return (option == MCCP or
|
||||
return (option == LINEMODE or
|
||||
option == MCCP or
|
||||
option == ECHO or
|
||||
option == suppress_ga.SUPPRESS_GA)
|
||||
|
||||
|
|
|
|||
|
|
@ -351,6 +351,7 @@ def create_message(senderobj, message, channels=None, receivers=None, locks=None
|
|||
|
||||
|
||||
message = create_message
|
||||
create_msg = create_message
|
||||
|
||||
|
||||
def create_channel(key, aliases=None, desc=None,
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ let defaultin_plugin = (function () {
|
|||
case 13: // Enter key
|
||||
var outtext = inputfield.val() || ""; // Grab the text from which-ever inputfield is focused
|
||||
if ( !event.shiftKey ) { // Enter Key without shift --> send Mesg
|
||||
var lines = outtext.trim().replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n");
|
||||
var lines = outtext.replace(/[\r]+/,"\n").replace(/[\n]+/, "\n").split("\n");
|
||||
for (var i = 0; i < lines.length; i++) {
|
||||
plugin_handler.onSend( lines[i].trim() );
|
||||
plugin_handler.onSend( lines[i] );
|
||||
}
|
||||
inputfield.val(""); // Clear this inputfield
|
||||
event.preventDefault();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue