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
|
- `AttributeHandler.get(return_list=True)` will return `[]` if there are no
|
||||||
Attributes instead of `[None]`.
|
Attributes instead of `[None]`.
|
||||||
- Remove `pillow` requirement (install especially if using imagefield)
|
- 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)
|
## Evennia 0.9 (2018-2019)
|
||||||
|
|
|
||||||
|
|
@ -1469,10 +1469,10 @@ class CmdSetAttribute(ObjManipCommand):
|
||||||
char: Setting an attribute on a character (global search)
|
char: Setting an attribute on a character (global search)
|
||||||
character: Alias for char, as above.
|
character: Alias for char, as above.
|
||||||
|
|
||||||
Sets attributes on objects. The second form clears
|
Sets attributes on objects. The second example form above clears a
|
||||||
a previously set attribute while the last form
|
previously set attribute while the third form inspects the current value of
|
||||||
inspects the current value of the attribute
|
the attribute (if any). The last one (with the star) is a shortcut for
|
||||||
(if any).
|
operatin on a player Account rather than an Object.
|
||||||
|
|
||||||
The most common data to save with this command are strings and
|
The most common data to save with this command are strings and
|
||||||
numbers. You can however also set Python primitives such as lists,
|
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."""
|
"""Push some code, whether complete or not."""
|
||||||
old_stdout = sys.stdout
|
old_stdout = sys.stdout
|
||||||
old_stderr = sys.stderr
|
old_stderr = sys.stderr
|
||||||
|
|
||||||
class FakeStd:
|
class FakeStd:
|
||||||
def __init__(self, caller):
|
def __init__(self, caller):
|
||||||
self.caller = caller
|
self.caller = caller
|
||||||
|
|
@ -274,9 +275,14 @@ class EvenniaPythonConsole(code.InteractiveConsole):
|
||||||
fake_std = FakeStd(self.caller)
|
fake_std = FakeStd(self.caller)
|
||||||
sys.stdout = fake_std
|
sys.stdout = fake_std
|
||||||
sys.stderr = fake_std
|
sys.stderr = fake_std
|
||||||
result = super().push(line)
|
result = None
|
||||||
sys.stdout = old_stdout
|
try:
|
||||||
sys.stderr = old_stderr
|
result = super().push(line)
|
||||||
|
except SystemExit:
|
||||||
|
pass
|
||||||
|
finally:
|
||||||
|
sys.stdout = old_stdout
|
||||||
|
sys.stderr = old_stderr
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -298,8 +304,8 @@ class CmdPy(COMMAND_DEFAULT_CLASS):
|
||||||
being parsed as HTML in the webclient but not in telnet clients)
|
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,
|
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
|
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.
|
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
|
Enter a line of instruction after the 'py' command to execute it
|
||||||
immediately. Separate multiple commands by ';' or open the code editor
|
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"""
|
"""Display information about server or target"""
|
||||||
|
|
||||||
string = """
|
string = """
|
||||||
|cEvennia|n {version}|n
|
|cEvennia|n MU* development system
|
||||||
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
|
|wLicence|n https://opensource.org/licenses/BSD-3-Clause
|
||||||
|wWeb|n http://www.evennia.com
|
|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 (2010-) Griatch (griatch AT gmail DOT com)
|
||||||
|wMaintainer|n (2006-10) Greg Taylor
|
|wMaintainer|n (2006-10) Greg Taylor
|
||||||
|
|
||||||
|wOS|n {os}
|
|
||||||
|wPython|n {python}
|
|
||||||
|wTwisted|n {twisted}
|
|
||||||
|wDjango|n {django}
|
|
||||||
""".format(version=utils.get_evennia_version(),
|
""".format(version=utils.get_evennia_version(),
|
||||||
os=os.name,
|
os=os.name,
|
||||||
python=sys.version.split()[0],
|
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):
|
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.
|
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}')
|
(error was '{traceback}')
|
||||||
|
|
||||||
If you think your database should work, make sure you are running your
|
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
|
evennia migrate
|
||||||
|
|
||||||
|
|
@ -1611,7 +1611,7 @@ def show_version_info(about=False):
|
||||||
django=django.get_version())
|
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
|
Import settings modules in settings. This will raise exceptions on
|
||||||
pure python-syntax issues which are hard to catch gracefully with
|
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
|
python source files themselves). Best they fail already here
|
||||||
before we get any further.
|
before we get any further.
|
||||||
|
|
||||||
|
Kwargs:
|
||||||
|
show_warnings (bool): If non-fatal warning messages should be shown.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
@ -1634,11 +1637,13 @@ def error_check_python_modules():
|
||||||
from evennia.server import deprecations
|
from evennia.server import deprecations
|
||||||
try:
|
try:
|
||||||
deprecations.check_errors(settings)
|
deprecations.check_errors(settings)
|
||||||
deprecations.check_warnings(settings)
|
|
||||||
except DeprecationWarning as err:
|
except DeprecationWarning as err:
|
||||||
print(err)
|
print(err)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
|
if show_warnings:
|
||||||
|
deprecations.check_warnings(settings)
|
||||||
|
|
||||||
# core modules
|
# core modules
|
||||||
_imp(settings.COMMAND_PARSER)
|
_imp(settings.COMMAND_PARSER)
|
||||||
_imp(settings.SEARCH_AT_RESULT)
|
_imp(settings.SEARCH_AT_RESULT)
|
||||||
|
|
@ -2113,11 +2118,11 @@ def main():
|
||||||
query_info()
|
query_info()
|
||||||
elif option == "start":
|
elif option == "start":
|
||||||
init_game_directory(CURRENT_DIR, check_db=True)
|
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)
|
start_evennia(args.profiler, args.profiler)
|
||||||
elif option == "istart":
|
elif option == "istart":
|
||||||
init_game_directory(CURRENT_DIR, check_db=True)
|
init_game_directory(CURRENT_DIR, check_db=True)
|
||||||
error_check_python_modules()
|
error_check_python_modules(show_warnings=args.tail_log)
|
||||||
start_server_interactive()
|
start_server_interactive()
|
||||||
elif option == "ipstart":
|
elif option == "ipstart":
|
||||||
start_portal_interactive()
|
start_portal_interactive()
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@ import re
|
||||||
from twisted.internet import protocol
|
from twisted.internet import protocol
|
||||||
from twisted.internet.task import LoopingCall
|
from twisted.internet.task import LoopingCall
|
||||||
from twisted.conch.telnet import Telnet, StatefulTelnetProtocol
|
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 django.conf import settings
|
||||||
from evennia.server.session import Session
|
from evennia.server.session import Session
|
||||||
from evennia.server.portal import ttype, mssp, telnet_oob, naws, suppress_ga
|
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.
|
This is called when the connection is first established.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
# important in order to work normally with standard telnet
|
||||||
|
self.do(LINEMODE)
|
||||||
# initialize the session
|
# initialize the session
|
||||||
self.line_buffer = b""
|
self.line_buffer = b""
|
||||||
client_address = self.transport.client
|
client_address = self.transport.client
|
||||||
|
|
@ -146,12 +149,18 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session):
|
||||||
enable (bool): If this option should be enabled.
|
enable (bool): If this option should be enabled.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return (option == LINEMODE or
|
if option == LINEMODE:
|
||||||
option == ttype.TTYPE or
|
# make sure to activate line mode with local editing for all clients
|
||||||
option == naws.NAWS or
|
self.requestNegotiation(LINEMODE, MODE +
|
||||||
option == MCCP or
|
bytes(chr(ord(LINEMODE_EDIT) +
|
||||||
option == mssp.MSSP or
|
ord(LINEMODE_TRAPSIG)), 'ascii'))
|
||||||
option == suppress_ga.SUPPRESS_GA)
|
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):
|
def enableLocal(self, option):
|
||||||
"""
|
"""
|
||||||
|
|
@ -164,7 +173,8 @@ class TelnetProtocol(Telnet, StatefulTelnetProtocol, Session):
|
||||||
enable (bool): If this option should be enabled.
|
enable (bool): If this option should be enabled.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return (option == MCCP or
|
return (option == LINEMODE or
|
||||||
|
option == MCCP or
|
||||||
option == ECHO or
|
option == ECHO or
|
||||||
option == suppress_ga.SUPPRESS_GA)
|
option == suppress_ga.SUPPRESS_GA)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -351,6 +351,7 @@ def create_message(senderobj, message, channels=None, receivers=None, locks=None
|
||||||
|
|
||||||
|
|
||||||
message = create_message
|
message = create_message
|
||||||
|
create_msg = create_message
|
||||||
|
|
||||||
|
|
||||||
def create_channel(key, aliases=None, desc=None,
|
def create_channel(key, aliases=None, desc=None,
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ let defaultin_plugin = (function () {
|
||||||
case 13: // Enter key
|
case 13: // Enter key
|
||||||
var outtext = inputfield.val() || ""; // Grab the text from which-ever inputfield is focused
|
var outtext = inputfield.val() || ""; // Grab the text from which-ever inputfield is focused
|
||||||
if ( !event.shiftKey ) { // Enter Key without shift --> send Mesg
|
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++) {
|
for (var i = 0; i < lines.length; i++) {
|
||||||
plugin_handler.onSend( lines[i].trim() );
|
plugin_handler.onSend( lines[i] );
|
||||||
}
|
}
|
||||||
inputfield.val(""); // Clear this inputfield
|
inputfield.val(""); // Clear this inputfield
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue