-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.py
executable file
·77 lines (69 loc) · 2.95 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python
"""
Start the server of basinboa.
reference: http://code.google.com/p/bogboa/source/browse/trunk/server_start.py
"""
import sys
sys.path.append('./miniboa')
from miniboa import TelnetServer
from basinboa import status
from basinboa.system.scheduler import SCHEDULER, Cycle
from basinboa.universe.loader import WorldLoader
from basinboa.universe.item import ItemLoader
from basinboa.mobile.character import CharacterLoader
from basinboa.system.config import ConfigLoader
from basinboa.system.language import LanguageLoader
from basinboa.mobile.mob import MobLoader, mob_actions
from basinboa.combat.fight import fight
from basinboa.command.base import register_cmds
#from basinboa.system.debug import dump_status
from basinboa.system.monitor import on_connect, on_disconnect, kick_idle, process_lobby, process_players
if __name__ == '__main__':
print(status.ASCII_ART)
#------------------------------------------------------------------------------
# Load Settings
#------------------------------------------------------------------------------
status.SERVER_CONFIG = ConfigLoader('config/').get_server_config()
#------------------------------------------------------------------------------
# Load datas
#------------------------------------------------------------------------------
status.CHARACTER_LOADER = CharacterLoader('data/character/')
status.MOB_LOADER = MobLoader('data/mob/')
wl = WorldLoader('data/map/')
wl.load_all()
status.WORLD = wl.get()
status.WORLD.check_links()
print ">> Maps: %s" % (status.WORLD.get_maps())
status.ITEM = ItemLoader('data/item/')
print ">> Items: %s" % (status.ITEM.get_all())
register_cmds()
print ">> Register commands: %s" % (status.COMMANDS.keys())
status.LANG = LanguageLoader('data/language/').get()
#------------------------------------------------------------------------------
# Initial Cycles
#------------------------------------------------------------------------------
Cycle(.1, process_lobby)
Cycle(.1, process_players)
Cycle(2, kick_idle)
Cycle(5, fight)
Cycle(10, mob_actions)
#Cycle(2, dump_status)
#------------------------------------------------------------------------------
# Initial Telnet Server
#------------------------------------------------------------------------------
telnet_server = TelnetServer(
port=status.SERVER_CONFIG.port,
address=status.SERVER_CONFIG.address,
on_connect=on_connect,
on_disconnect=on_disconnect,
timeout=status.SERVER_CONFIG.timeout,
)
print(">> Listening for connections on port %d. CTRL-C to break."
% telnet_server.port)
#------------------------------------------------------------------------------
# Main Server Loop
#------------------------------------------------------------------------------
while status.SERVER_RUN:
telnet_server.poll()
SCHEDULER.tick()
print(">> Server shutdown.")