之前整过一次一测的,这次再试试二测的。
某游CBT1私服搭建记录 —— 一测版本怀旧 - 赵苦瓜のBlog (jixiaob.cn)
二测版本我用的是0.7.1,不过听说0.8.x也能用我没测试
这一个私服也是无数据库的版本,登录进去都是初始状态
注:本教程仅适用于CBT2版本,如果需要搭建2.6 - 3.6版本的话可以参考这个:
GrassCutter的配置和使用记录 - 赵苦瓜のBlog (jixiaob.cn)
首先确保已经安装了Python3.10或者3.11,因为这个服务端的代码使用了Python3.8和3.10的新特性,最少也得3.10才能跑(服务端的官方推荐3.11)
没有的话可以去Python官网下一个https://www.python.org
windows系统下安装记得勾选add python to 'PATH',这样就省去自己添加环境变量了。
①下载CBT2的游戏本体。
开头说过CBT2可以用的版本号,应该是0.7到0.8都行。我用的是0.7.1的版本。
https://d3ln624mszu7ty.cloudfront.net/client_app/pc_plus19/Genshin_0.7.1.zip
下载完成后解压缩。
②下载服务端。
这次使用的是叫做CockPY的服务端。
NickTheHuy/CockPY: public and open source version of the cbt2 ps im working on (github.com)
点code→download zip
然后解压缩。
③安装环境依赖
在解压缩后的路径里启动cmd(直接在文件夹的地址栏里面输入cmd即可)
然后安装依赖环境
pip install -r ./requirements.txt
安装依赖的时候如果报错的话可以试试一个一个安装
pip install betterproto==2.0.0b5 pip install bottle==0.12.23 pip install Cython==0.29.32 pip install loguru==0.6.0
然后按照官方教程的话是需要自行下载并编译pyenet,这里需要MSVC的环境,稍微有点复杂,所以我放出来两个我自己编译好的包可以直接安装。
Windows Python3.10的
https://file.jixiaob.cn/zh-CN/file/enet/enet-0.0.0-cp310-cp310-win_amd64.whl
Windows Python3.11的
https://file.jixiaob.cn/zh-CN/file/enet/enet-0.0.0-cp311-cp311-win_amd64.whl
下载完成后直接 pip install 文件名 就能安装了。
如果是其他系统版本就需要自己配环境编译了,可以试试直接pip install pyenet,报错的话要到https://github.com/lilmayofuksu/pyenet下载源码然后自己python setup.py build之类的。
如果Windows遇到缺少MSVC的环境或者其他环境问题可以下载一个Visual Studio Build Tools
https://pan.quark.cn/s/583f1a0d998c#/list/share
④启动服务器和代理程序
安装完成环境之后在CockPY的路径里输入
python -m cockpy
如果没有什么问题的话服务端就在本地的80端口跑起来啦~
然后就是启动代理了,可以和之前一样使用Fiddler脚本,同样是只支持http协议
import System; import System.Windows.Forms; import Fiddler; import System.Text.RegularExpressions; class Handlers { static function OnBeforeRequest(oS: Session) { if ( oS.host.EndsWith(".yuanshen.com") || oS.host.EndsWith(".hoyoverse.com") || oS.host.EndsWith(".mihoyo.com") || oS.uriContains("http://overseauspider.yuanshen.com:8888/log") || oS.host.EndsWith(".yuanshen.com:12401") ) { oS.host = "127.0.0.1"; // Only for CBT-1 oS.oRequest.headers.UriScheme = "http"; oS.port = 80; } } };如果不清楚如何安装Fiddler或者如何设置Fiddler Script可以参考我的这一篇博客里的代理部分:https://blog.jixiaob.cn/?post=83
或者如果安装了mitmproxy的话可以直接用目录里的start_proxy.bat来直接打开代理。
然后就可以启动游戏啦!同样是随便输账号密码就能进!
如果点开游戏打不开的话需要替换一下mhyprot2.Sys文件
下载地址:
https://cdn.discordapp.com/attachments/991093426055442522/1044336940905922580/mhyprot2.Sys
(好像链接炸了,补一个https://file.jixiaob.cn/zh-CN/Files/%E5%8E%9F%E7%A5%9E/CBT2/mhyprot2.Sys)
进了游戏已经有了所有材料和角色。
可以在派蒙菜单里的内测商店购买东西。
敌人可以淹死。
天赋和命座都生效了。
敌人都是90级(和你的角色一样)。
可以对敌人造成伤害。
可以生成怪物。
可以一键杀死怪物。
可以收到开服邮件。
可以看到这个服务端还有一些todo,期待作者的维护更新。
可以自动生成大世界的怪物
新增圣遗物系统
修复武器有时候消失的问题
创建数据库存放数据
一些小功能:
可以通过地图标记实现一些小功能。
生成怪物:
地图选择怪物图标,备注spawn 怪物id
清除所有怪物:
地图标记星星图标。
切换场景:
地图标记花的图标,备注场景id。
可用的场景id表如下:
1, 2, 3, 1001, 1002, 1003, 1004, 1005, 1006, 1008, 1009, 1011, 1013, 1015, 1016, 1017, 1018, 1019, 1023, 1024, 1030, 1031, 20000, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018, 20019, 20020, 20022, 20023, 20024, 20025, 20026, 20027, 20031, 30001, 30100, 30101, 30102, 30103, 30104, 30200, 30201, 30202, 30203, 30204, 30300, 30301, 30302, 30303, 30304, 30400, 30401, 30402, 30403, 30404, 30500, 30501, 30502, 30503, 30504, 30600, 30601, 30602, 30603, 30604, 30700, 30701, 30702, 30703, 30704, 30800, 30801, 30802, 30803, 30804, 30900, 30901, 30902, 30903, 30904, 31000, 31001, 31002, 31003, 31004, 31100, 31101, 31102, 31103, 31104, 31200, 31201, 31202, 31203, 31204, 40001, 40002, 40003, 40004, 40005, 40006, 40007, 40008, 40009, 40010, 40012, 40013, 40014, 40100, 40101, 40102, 40103, 40200, 40201, 40202, 40203, 40300, 40301, 40302, 40303, 40400, 40401, 40402, 40403, 40404, 40405, 40406, 40407, 40500, 40501, 40502, 40503, 40504, 40505, 40506, 40507, 40508, 40509, 40510, 40511, 40512, 40513, 40600, 40601, 40602, 40603, 40604, 40605, 40606, 40607, 40608, 40609, 40610, 40611, 40612, 40613, 40614, 40615, 40616, 40700, 40701, 40702, 40703, 50000, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020
有关修改卡池
默认只有诺艾尔和魈的卡池(好诶20230419我的全卡池pr合并进去啦!现在默认的卡池就都是这个全的啦!),经过我的测试是可以添加其他的卡池的
需要修改\server_data\txt\GachaNewbieData.txt文件来更换卡池。
下面是我测试好的全卡池,直接复制粘贴进去保存就是全卡池了。
单抽消耗物品ID 单抽消耗物品数量 十连消耗物品ID 十连消耗物品数量 首次十连消耗物品 首次十连消耗数量 扭蛋次数上限 蛋池ID 概率规则ID [UP配置]1父类型 [UP配置]1概率 [UP配置]1物品列表 保底规则列表 扭蛋Prefab路径 扭蛋预览Prefab路径 扭蛋概率公示URL 扭蛋记录URL 排序id 201 1 201 5 201 5 20 20001 1 1,2 GachaShowPanel_A007 UI_Tab_GachaShowPanel_Noel https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 9999 201 1 201 5 201 5 20 10003 1 1,2 GachaShowPanel_A008 UI_Tab_GachaShowPanel_Diluc https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 1 201 1 201 5 201 5 20 10003 1 1,2 GachaShowPanel_A004 UI_Tab_GachaShowPanel_A004 https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 3 201 1 201 5 201 5 20 10003 1 1,2 GachaShowPanel_A003 UI_Tab_GachaShowPanel_A003 https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 4 201 1 201 5 201 5 20 10003 1 1,2 GachaShowPanel_A002 UI_Tab_GachaShowPanel_Venti https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 5 201 1 201 5 201 5 20 10003 1 1,2 GachaShowPanel_A001 UI_Tab_GachaShowPanel_A001 https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html#/novice https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html?authkey_ver=1&sign_type=2&auth_appid=webview_gacha 6
二测的体验
感觉璃月地区改了好多东西,冒险家协会的朝向直接翻了180度,还有很多招牌都改了,加了很多栏杆
还有完全不一样的抽卡界面
附神秘链接:
https://d3ln624mszu7ty.cloudfront.net/client_app/pc/20191213-111505_cb2_test-309752_cb2test_live-310176_CB2_CBWIN_Test_Release_Less_Full_ASB-CB2TestLiveRelease.zip
本文地址:https://blog.jixiaob.cn/?post=98
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。
(本来想VM虚拟机开个win10系统测试的,结果没法绕过虚拟机检测,网上教程试了也没绕成功,太难崩了)
PermissionError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='H:\\Genshin Server\\CBT\\CB2\\CockPY-main\\game_server\\json\\excel\\MaterialExcelConfigData.json' mode='r' encoding='cp936'>
怎么办啊
装不了pyenet我也提供了编译好的whl文件可以直接安装
F:\GenshinImpact\CBT2\CockPY>py -m cockpy
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "F:\GenshinImpact\CBT2\CockPY\cockpy\__main__.py", line 12, in <module>
gameserver = GameServer("localhost", int(server_port))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "F:\GenshinImpact\CBT2\CockPY\game_server\__init__.py", line 78, in __ini
t__
self.host = enet.Host(enet.Address(host, port), 10, 0, 0, 0)
^^^^^^^^^^^^^^^^^^^^^^^^
File "enet.pyx", line 265, in enet.Address.__init__
File "enet.pyx", line 299, in enet.Address.host.__set__
TypeError: expected bytes, str found
求解答
Python 版本为 3.11.3 ,这个enet包不知为何报错。
enet报错:DEPRECATION: Loading egg at c:\users\winky\appdata\local\programs\python\python3
11-32\lib\site-packages\enet-0.0.0-py3.11-win32.egg is deprecated. pip 24.3 will
enforce this behaviour change. A possible replacement is to use pip for package
installation.. Discussion can be found at https://github.com/pypa/pip/issues/12
330
ERROR: enet-0.0.0-cp311-cp311-win_amd64.whl is not a supported wheel on this pla
tform.
于是我就小小的pip install pyenet了一下,结果没有鸟用,是我的错!(跪下。
谢谢佬的回复!
报错说是平台不支持,要么是你是32位系统,要么是arm指令集
我编译的whl是64位x86平台的windows系统上才能用的
就连python 11也是找大佬用wine编译修改的555555(win7x64。。。。平时写文档
WARNING: Requirement 'enet-0.0.0-cp311-cp311-win_amd64.whl' looks like a filename, but the file does not exist
Processing e:\enet-0.0.0-cp311-cp311-win_amd64.whl
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'E:\\enet-0.0.0-cp311-cp311-win_amd64.whl'
[notice] A new release of pip is available: 23.1.2 -> 23.2.1
[notice] To update, run: python.exe -m pip install --upgrade pip
这是什么问题
不过他不是白屏,他是启动都启动不了、、
参见官方FAQ:https://www.miyoushe.com/ys/article/4004423
好像cbt2和正式版原神的部分东西好像有冲突
PS G:\pyenet-master> py setup.py build
enet.c
enet.c(21188): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(21407): error C2039: "curexc_traceback": 不是 "_ts" 的成员
C:\Program Files (x86)\Python\include\cpython/pystate.h(115): note: 参见“_ts”的声明
enet.c(21410): error C2039: "curexc_traceback": 不是 "_ts" 的成员
C:\Program Files (x86)\Python\include\cpython/pystate.h(115): note: 参见“_ts”的声明
enet.c(21503): warning C4013: “_PyUnicode_Ready”未定义;假设外部返回 int
enet.c(23540): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(23595): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(23888): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(23943): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24084): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24139): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24280): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24335): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24514): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24569): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24710): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24765): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24944): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(24999): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(25178): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(25233): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(25412): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(25467): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
enet.c(25956): error C2039: "ob_digit": 不是 "_longobject" 的成员
C:\Program Files (x86)\Python\include\cpython/longintrepr.h(87): note: 参见“_longobject”的声明
error:command'G:\\ProgramFiles\\VisualStudio\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
难道是我用的py版本太高了?