Решил поделиться простеньким скриптом, который проверяет статус сервера, его нагрузку и выдаёт её в serverinfo.xml, благодаря чему при выборе сервера цветом показывается нагрузка, либо стоит серый цвет.
Внимание: требуется какой-нибудь скрипт, выдающий просто цифру онлайна.
Требования:
Python 3.x
Модули:
Tornado
Requests
По скрипту статуса - вам нужно число из запроса к loong_login:
Внимание: требуется какой-нибудь скрипт, выдающий просто цифру онлайна.
Требования:
Python 3.x
Модули:
Tornado
Requests
Код:
import tornado.ioloop
import tornado.web
import requests
import socket
"""
CONFIGS
"""
# Serverinfo.xml
server_name = "Имя вашего сервера"
world_id = 200001
borough = "Регион, как в login.ini на сервере"
server_ip = "IP сервера"
max_connected_clients = 100 # максимальное ограничение онлайна
status_link = "Ссылка на скрипт статуса"
server_port = 4200 # порт геймсервера
# Patchinfo.txt - coming soon
patch_folder = "./patch/"
hash_baby = True
""""""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
class ServerInfoHandler(tornado.web.RequestHandler):
def get(self):
self.load = 0
link = requests.get(status_link)
if link.status_code == 200:
self.load = int(int(link.content)/max_connected_clients*100)
server = sock.connect_ex((server_ip, server_port))
if server != 0:
self.load = -1
xml_template = """<?xml version="1.0" encoding="UTF-8"?>
<root>
<item name="{}" worldid="{}" borogh="{}" boroughrank="1" ip="{}" port="{}" state="{}" recommend="1" worldrank="0" recorank="1"/>
</root>
"""
self.set_header('Content-Type', 'text/xml')
final_xml = xml_template.format(server_name, world_id, borough, server_ip, server_port, self.load)
self.write(final_xml)
def make_app():
return tornado.web.Application([
(r"/serverinfo.xml", ServerInfoHandler)
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
По скрипту статуса - вам нужно число из запроса к loong_login:
Код:
SELECT COUNT(1) FROM account WHERE login_status != 0