- 好友
- 5
- 在线时间
- 3 小时
- 最后登录
- 2025-9-3
见习骑士

- UID
- 3181770
- 第纳尔
- 1906
- 精华
- 0
- 互助
- 15
- 荣誉
- 0
- 贡献
- 10
- 魅力
- 170
- 注册时间
- 2020-5-5
 鲜花( 44)  鸡蛋( 0)
|
既然接口:”send_post_message_to_url_advanced“可以发送网络请求。
那么设想一种场景。大地图几十个阵营,每次在计算阵营关系的时候就非常卡顿,能不能把外交关系的计算扔出去让网络服务计算?
答案当然是可以的,只需要在云服务器上写对应的接口,接收对应的信息,然后返回这些国家是否需要开战或者是否和平的信息即可。
但有个问题是,模组中的国家开战与是否要联网其实没有任何关系。 这是属于纯粹单机的内容。
那有没有办法让玩家在不联网的情况下,也可以完成这项工作?
可以的,兄弟,可以的。
聪明的你应该想到了,我们可以把服务部署在本地,让骑砍发送本地请求,本地服务接收到请求后返回给骑砍。
下面是具体实现
在module_simple_trigger.py文件中添加一个触发器,我们往本地“http://localhost/tst”发送一个请求,user_agent_string和请求体内信息是什么无所谓,因为我们只是单纯测试用。
测试调用成功后会调用script_network_test_success
- <div><div style="line-height: 19px;">
- <div> (1,[
- (display_message,"@尝 试 发 送 !"),
- (send_post_message_to_url_advanced,"@http://localhost/tst",s0,"@Id=2","script_network_test_success", "script_gekokujo_network_fail", 0),
- ])</div></div></div>
复制代码
module_script.py中添加这样的代码
- <blockquote>#本地部署网络显示信息
- ("network_test_success",[
- (display_message,"@接 收 成 功 {s0}")
- ]),
复制代码
ok,那么这样MS的工作就完成了
接下来我们来编写服务器端脚本。
我们用python3的flask框架来构建一个服务器。
首先我们使用pip工具下载相关包
- <span class="pln" style="border: 0px;">pip install </span><span class="typ" style="border: 0px;">Flask</span>
复制代码 下载完成后,新建一个py文件,并且粘贴以下内容- # -*- coding: utf-8 -*-
- import time
- from flask import Flask
- app = Flask(__name__)
- @app.route('/tst',methods=['GET', 'POST'])
- def hello():
- time.sleep(1)#我故意让请求暂停一秒钟再进行发送返回值,为了验证骑砍的<b style="font-family: 宋体; white-space: normal; background-color: rgb(255, 255, 255);">send_post_message_to_url_advanced是异步的</b>
- return "1|hello"
- if __name__ == '__main__':
- # 注意:在Linux/Mac上需要sudo权限才能使用80端口
- app.run(host='0.0.0.0', port=80)
复制代码 点击运行即在本地80端口运行了一个服务,且可以接收到骑砍发送的请求并且返回 "1|hello"接下来我们进入骑砍中,大地图按住空格即可看到请求在发送,然后接收的过程。这里面有意思的是这个网络请求其实是多线程异步的。下个帖子讲这个。我们可以通过这个操作如何扩展的来做新功能~
|
-
|