基于脚本的新一代模组计划

CodeHz

LV 3
156
66
0
4
四川成都
简单的说就是现在写模组可以不用C++了,但是我没有选择常见的几个语言(主要是创建语言绑定比较麻烦),而是使用了一个ChaiScript作为脚本语言,大概是这个画风:
1532255492191.png
当然有一点是肯定的,脚本能做到的功能依赖于我提供的API的完善程度,并不能像原生模组那样无中生有的创造功能。。
而且最重要的是,该崩溃还得崩溃。。。
具体API我会在近日放出,先弄个示例,和安装方法
示例:https://pastebin.com/VqyNsvtN
安装方法:先下载0.6.2的启动器,然后下载chai模组,将示例脚本放置于 user/chai/scripts/init.chai 处,重启服务端即可加载,如果出现打不开数据库的情况,请先手动创建存档文件夹。。。
 
  • 喜欢
反馈: YYT
有的
[0m
D [1m[Bridge][22m Saving level: world
[0m
[0m
F Signal 11 received
[0m
[0m
F Backtrace Count: 3
[0m
[0m
F #0 [1m[0x805a71e][22m
[0m
[0m
F #1 linux-gate.so.1([4m__kernel_sigreturn+0[24m) [1m[0xf7761400][22m
[0m
[0m
F #2 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x38 libminecraftpe.so+0x25a5e88 [1m[0xf5888e88][22m
[0m
[0m
F Dumping stack...
[0m
[0m
F #2 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x00 libminecraftpe.so+0x25a5e50 [1m[0xf5888e50][22m
[0m
[0m
F #15 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x38 libminecraftpe.so+0x25a5e88 [1m[0xf5888e88][22m
[0m
[0m
F #20 HYB websocketpp::transport::asio::connection[1m<websocketpp::config::asio_client::transport_config>[22m::handle_proxy_read([4mstd::function[1m<void ([4mstd::error_code const&[24m)>[22m, boost::system::error_code const&, unsigned int[24m)+0xb6e libminecraftpe.so+0x2fafd0e [1m[0xf6292d0e][22m
[0m
[0m
F #58 HYB BackgroundWorkerPerfInfo::update([4mstd::chrono::time_point[1m<std::chrono::_V2::system_clock, std::chrono::duration[1m<long long, std::ratio[1m<1ll, 1000000000ll>[22m >[22m >[22m[24m)+0x171 libminecraftpe.so+0x295caf1 [1m[0xf5c3faf1][22m
[0m
[0m
F #119 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x30 libminecraftpe.so+0x25a5e80 [1m[0xf5888e80][22m
[0m
[0m
F #120 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x0c libminecraftpe.so+0x25a5e5c [1m[0xf5888e5c][22m
[0m
[0m
F #121 HYB bool SPSCQueue[1m<BackgroundTask, 512u>[22m::try_dequeue[1m<BackgroundTask>[22m([4mBackgroundTask&[24m)+0x0c libminecraftpe.so+0x295bdcc [1m[0xf5c3edcc][22m
[0m
[0m
F #128 HYB BackgroundTask::run([4m[24m)+0x39 libminecraftpe.so+0x295a4a9 [1m[0xf5c3d4a9][22m
[0m
[0m
F #129 HYB BackgroundWorker::_runOneTask([4m[24m)+0xd6 libminecraftpe.so+0x295c856 [1m[0xf5c3f856][22m
[0m
[0m
F #130 HYB BackgroundWorkerPerfInfo::update([4mstd::chrono::time_point[1m<std::chrono::_V2::system_clock, std::chrono::duration[1m<long long, std::ratio[1m<1ll, 1000000000ll>[22m >[22m >[22m[24m)+0x19f libminecraftpe.so+0x295cb1f [1m[0xf5c3fb1f][22m
[0m
[0m
F #138 HYB BackgroundWorker::_processNextTask([4m[24m)+0x2f libminecraftpe.so+0x295b76f [1m[0xf5c3e76f][22m
[0m
[0m
F #139 HYB BackgroundWorker::_processNextTask([4m[24m)+0x0b libminecraftpe.so+0x295b74b [1m[0xf5c3e74b][22m
[0m
[0m
F Quiting...
[0m
然后就是后台总是Saving level : world和Signal 11 received刷屏
 

CodeHz

LV 3
156
66
0
4
四川成都
有的
[0m
D [1m[Bridge][22m Saving level: world
[0m
[0m
F Signal 11 received
[0m
[0m
F Backtrace Count: 3
[0m
[0m
F #0 [1m[0x805a71e][22m
[0m
[0m
F #1 linux-gate.so.1([4m__kernel_sigreturn+0[24m) [1m[0xf7761400][22m
[0m
[0m
F #2 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x38 libminecraftpe.so+0x25a5e88 [1m[0xf5888e88][22m
[0m
[0m
F Dumping stack...
[0m
[0m
F #2 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x00 libminecraftpe.so+0x25a5e50 [1m[0xf5888e50][22m
[0m
[0m
F #15 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x38 libminecraftpe.so+0x25a5e88 [1m[0xf5888e88][22m
[0m
[0m
F #20 HYB websocketpp::transport::asio::connection[1m<websocketpp::config::asio_client::transport_config>[22m::handle_proxy_read([4mstd::function[1m<void ([4mstd::error_code const&[24m)>[22m, boost::system::error_code const&, unsigned int[24m)+0xb6e libminecraftpe.so+0x2fafd0e [1m[0xf6292d0e][22m
[0m
[0m
F #58 HYB BackgroundWorkerPerfInfo::update([4mstd::chrono::time_point[1m<std::chrono::_V2::system_clock, std::chrono::duration[1m<long long, std::ratio[1m<1ll, 1000000000ll>[22m >[22m >[22m[24m)+0x171 libminecraftpe.so+0x295caf1 [1m[0xf5c3faf1][22m
[0m
[0m
F #119 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x30 libminecraftpe.so+0x25a5e80 [1m[0xf5888e80][22m
[0m
[0m
F #120 HYB CompressedNetworkPeer::sendPacket([4mstd::string, NetworkPeer::Reliability, int[24m)+0x0c libminecraftpe.so+0x25a5e5c [1m[0xf5888e5c][22m
[0m
[0m
F #121 HYB bool SPSCQueue[1m<BackgroundTask, 512u>[22m::try_dequeue[1m<BackgroundTask>[22m([4mBackgroundTask&[24m)+0x0c libminecraftpe.so+0x295bdcc [1m[0xf5c3edcc][22m
[0m
[0m
F #128 HYB BackgroundTask::run([4m[24m)+0x39 libminecraftpe.so+0x295a4a9 [1m[0xf5c3d4a9][22m
[0m
[0m
F #129 HYB BackgroundWorker::_runOneTask([4m[24m)+0xd6 libminecraftpe.so+0x295c856 [1m[0xf5c3f856][22m
[0m
[0m
F #130 HYB BackgroundWorkerPerfInfo::update([4mstd::chrono::time_point[1m<std::chrono::_V2::system_clock, std::chrono::duration[1m<long long, std::ratio[1m<1ll, 1000000000ll>[22m >[22m >[22m[24m)+0x19f libminecraftpe.so+0x295cb1f [1m[0xf5c3fb1f][22m
[0m
[0m
F #138 HYB BackgroundWorker::_processNextTask([4m[24m)+0x2f libminecraftpe.so+0x295b76f [1m[0xf5c3e76f][22m
[0m
[0m
F #139 HYB BackgroundWorker::_processNextTask([4m[24m)+0x0b libminecraftpe.so+0x295b74b [1m[0xf5c3e74b][22m
[0m
[0m
F Quiting...
[0m
然后就是后台总是Saving level : world和Signal 11 received刷屏
看起来这个错误与模组无关。。。是Mojang那边的
 

YYT

小破站长
管理成员
VIP
  • 周年纪念
  • 二周年纪念
  • 正版用户
  • 突出贡献
  • 积极分子
  • 人民富豪
1,436
823
1d 23h 5m
7
广东,深圳
www.mcshare.net
支持,希望能尽快弄几个基本模组?比如锁箱子、黑白名单、领地
 
简单的说就是现在写模组可以不用C++了,但是我没有选择常见的几个语言(主要是创建语言绑定比较麻烦),而是使用了一个ChaiScript作为脚本语言,大概是这个画风:
浏览附件759
当然有一点是肯定的,脚本能做到的功能依赖于我提供的API的完善程度,并不能像原生模组那样无中生有的创造功能。。
而且最重要的是,该崩溃还得崩溃。。。
具体API我会在近日放出,先弄个示例,和安装方法
示例:https://pastebin.com/VqyNsvtN
安装方法:先下载0.6.2的启动器,然后下载chai模组,将示例脚本放置于 user/chai/scripts/init.chai 处,重启服务端即可加载,如果出现打不开数据库的情况,请先手动创建存档文件夹。。。
关于多语言可以学学coolq http api,就是写一些接口,用http连接的get/post请求来调用(搭建http服务器先),然后各种语言写自己的http访问封装成sdk
 

CodeHz

LV 3
156
66
0
4
四川成都
关于多语言可以学学coolq http api,就是写一些接口,用http连接的get/post请求来调用(搭建http服务器先),然后各种语言写自己的http访问封装成sdk
我本来也有这样想法。然后看了一眼效率。如果想让服务器tick延迟+0.1s的话,大概可以这样用。。。即使以后要用RPC,我也会用SHM等更高效率的手段
 
关于多语言可以学学coolq http api,就是写一些接口,用http连接的get/post请求来调用(搭建http服务器先),然后各种语言写自己的http访问封装成sdk
比如官方只提供get/post的接口,sdk由其他人编写。。当然这样缺点很多,就是提个建议233,延迟确实太高
 

推广

Document

新主题 新资源 新留言