![图片[2]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海镜神龙修复版-稀有3D国风回合手游单机一键端+Linux手工端+假人陪玩+无限开区](https://www.qujiuyou.com/wp-content/uploads/2025/11/2-2.webp)
万灵山海手游通用架设教程
前言作为一名资深手游服务端搭建者,我发现《万灵山海》系列的不同版本(如万物归元版、镜神龙版等)其核心架设逻辑是相通的。本教程将剥离具体版本的细微差别,为您提炼出一套通用的架设方法论。无论您获得的是哪个版本的《万灵山海》服务端,遵循本教程的步骤都能极大提高搭建成功率。本站长将基于常见的 Windows一键端(虚拟机模式) 和 Linux手工端 进行讲解。一、 通用环境准备 (Prerequisite)这是所有版本搭建的第一步,至关重要。
- 1.虚拟机软件 (针对一键端):如您使用
.ova或.vmx等一键端镜像,必须安装 VMware Workstation (Pro或Player版均可)。确保网络适配器设置为 NAT模式(这是最常见和简单的方式)。 - 2.系统环境 (针对手工端):
- •Windows手工端:通常需要安装
.NET Framework 4.5+运行库。 - •Linux手工端:需要纯净的
CentOS 7.x系统,并提前使用yum命令安装gcc、gcc-c++、openssl-devel等基础编译环境。
- •Windows手工端:通常需要安装
- 3.数据库工具:准备 Navicat 或 HeidiSQL 等数据库连接工具,用于修改服务器IP、创建数据库等。
- 4.客户端修改工具:准备 APK IDE 或 MT管理器(用于安卓客户端反编译和修改IP)。
二、 通用服务端启动流程 (Core Steps)不同版本的服务端文件命名可能不同,但启动逻辑一致。
- 1.启动基础服务
- •数据库: 首先确保MySQL数据库服务已启动。在一键端中,通常通过运行
启动数据库.bat或mysql_start.bat实现。在Linux手工端中,使用命令systemctl start mysqld。 - •Web服务: 确保Nginx或Apache服务已运行,用于处理客户端的更新和资源请求。
- •数据库: 首先确保MySQL数据库服务已启动。在一键端中,通常通过运行
- 2.按顺序启动游戏服务器这是最关键的一步,必须遵循以下顺序,后一个服务依赖前一个服务:
- •Step 1: 启动日志服务 (Log Server) – 通常是第一个启动的服务。
- •Step 2: 启动数据库代理/网关服务 (DB Agent/Gateway) – 连接游戏逻辑与数据库的桥梁。
- •Step 3: 启动世界服/主服 (World Server/Game Server) – 这是游戏的核心逻辑服务器。
- •Step 4: 启动登录服/账号服 (Login Server/Account Server) – 处理玩家登录验证。
- •Step 5: 启动跨服服 (Cross Server) – 如果版本支持跨服,最后启动此服务。
- •观察日志: 每个服务启动后,请观察其命令行窗口输出的日志,确保没有红色的“Error”级别的报错,只有“Info”或“Warning”通常可忽略。
三、 通用客户端修改与连接 (Client Modification)服务端成功启动后,需要修改客户端才能连接到自己搭建的服务器。
- 1.定位IP文件:使用工具反编译安卓APK文件,在
assets目录下寻找包含IP地址的配置文件(常见文件名如serverlist.xml,config.json,game.json)。 - 2.修改IP地址:将文件内所有的服务器IP地址修改为您虚拟机(一键端)或云服务器(手工端)的本地局域网IP(如192.168.1.x),而非127.0.0.1。
- 3.重签名与安装:修改完成后,对APK文件进行重签名,然后安装到手机。确保手机和服务器在同一个局域网Wi-Fi下。
四、 通用GM后台与数据库管理 (GM & DB)
- 1.GM后台访问:GM后台通常是一个网站程序,地址一般为
http://你的服务器IP:端口/gm。账号密码需要在服务端的配置文件中预先设定。 - 2.数据库修改:使用Navicat连接数据库(端口3306,账号密码通常为
root/123456),可以修改玩家元宝、等级等数据。修改前务必备份数据库!
五、 常见问题排查 (Troubleshooting)
- •问题1:客户端连接失败,提示“连接超时”。
- •原因:服务器IP修改不正确;防火墙(包括Windows防火墙和云服务器安全组)未开放所需端口。
- •解决:检查IP,并开放端口(如8080, 3724, 3306等,具体看版本要求)。
- •问题2:客户端更新失败或卡在加载界面。
- •原因:Nginx/web服务未正确启动或配置;客户端与服务器的版本号不匹配。
- •解决:检查web服务,并核对版本号。
- •问题3:服务端启动时报错,缺少.dll文件或数据库连接失败。
- •原因:系统环境不全;数据库账号密码错误。
- •解决:安装对应的运行库;检查数据库配置文件(通常在
config文件夹下)中的数据库连接信息。
架设
1. 架设条件
万灵山海架设需要准备:
- linux 服务器,建议 CentOs 7.6 版本,推荐腾讯云轻量应用服务器,性价比高。
- 游戏源码,关注我的公众号 echeverra,发送 “万灵山海” 免费获取。
游戏会占大概 3G 左右的运行内存,客户端游戏会下载 3G 左右的资源!非常大,建议最低使用 2 核 4G 配置的服务器。
2. 安装宝塔及环境
宝塔是一个服务器运维管理软件,安装命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完后,按照提示信息登录宝塔,并在宝塔软件商店中搜索以下软件安装:
- web 服务器:Nginx 1.24
- 数据库:Mysql 5.7
- 编程语言:PHP 7.2
- 数据库管理工具:phpMyAdmin 4.4
- 工具:Linux 工具箱 2.4
3. 开放端口
我们直接开放所有端口 1-65535,阿里云服务器在安全组中配置规则。
![图片[2]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/cdn/20220103155047.png)
腾讯云服务器在防火墙中配置规则。
![图片[3]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/cdn/202203272319048.png)
然后在宝塔菜单安全中开放所有端口。
![图片[4]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/cdn/20220103155331.png)
4. 关闭防火墙
通过宝塔菜单终端,执行关闭防火墙命令:
systemctl stop firewalld.servicesystemctl disable firewalld.service
5. 上传源码
拿到源码后,将 wlsh.zip 压缩文件通过宝塔上传到根目录,由于最新的宝塔禁止直接上传到根目录,可以先上传到任一目录下,在剪切粘贴到 / 根目录。
![图片[5]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739242628060.png)
上传成功后,剪切粘贴到根目录,并解压到根目录。
cd /unzip wlsh.zip
解压完成后,命令授予 777 权限:
chmod -R 777 /data/
6. 配置环境
设置虚拟内存,Linux 工具箱添加 Swap。
![图片[6]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/pmxy/1723015457029.png)
配置动态链接器的缓存:
ldconfig
7. 修改源码 IP
源码中的 IP(82.156.126.171),需要替换成你自己的服务器 IP。
- \data\WL_BIGCROSS\release\serverconfig.xml
- \data\WL_S1\release\serverconfig.xml
- \data\WL_CROSS\release\serverconfig.xml
- \data\www\agent\public\bnb\api.php
在宝塔中找到对应文件,Ctrl+F 批量替换 IP 即可。以第一个 serverconfig.xml 为例。
![图片[7]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739243306810.png)
8. 导入数据库
宝塔数据库中,修改 root 密码:521gmcn。
![图片[8]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739243441980.png)
通过命令导入数据库:
cd /data./sk
同步数据库会看到创建 4 个数据库,说明导入成功~(更新了资源,数据库 aygm 改为了 ruankor,图片未更新请知悉,下同)
![图片[9]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739243583488.png)
9. 创建网站
万灵山海需要创建一个站点,域名为 127.0.0.1:81,根目录为 /data/www/agent,PHP 选择 7.2 版本。
![图片[10]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739243902614.png)
点击创建好网站,在网站目录中将运行目录设置为 /public,记得点击后面的保存按钮。
![图片[11]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739244116755.png)
再设置伪静态为 thinkphp,点击保存。
![图片[12]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739244307678.png)
10. 启动游戏
以上步骤都操作完毕,就到了激动人心的启动游戏啦!
启动游戏服务:
cd /data/WL_BIGCROSS/release./start.sh cd /data/WL_CROSS/release./start.sh cd /data/WL_S1/release./start.sh
查看下服务端口:
netstat -lntp
![图片[13]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739242775844.png)
11. 客户端修改
11.1 安卓客户端
首先修改安卓端,需要修改两个个文件:
- \assets\bin\Data\Managed\Metadata\global-metadata.dat
- \assets\AssetBundle\lua\preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab
找到万灵山海.apk 安卓客户端,用好压软件打开,将这两个文件拖出来。
这两个文件修改较复杂,我会尽量说的详细些哈。
首先修改 global-metadata.dat 文件,需要使用工具文件夹中的 global-metadata编辑器,打开 MetaDataStringEditor.exe,点击加载,选择 global-metadata.dat 文件,在上方输入 82.156.126.171,点击后面的下一个,找到搜到的那一行,点击出现编辑,点击编辑出现弹窗,弹窗中修改为自己的 IP,最后点击保存。
![图片[14]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739245478971.png)
然后在点击窗口上面的另存为,保存文件为 1.dat,将原来的文件 global-metadata.dat 删除,将 1.dat 文件名改为 global-metadata.dat,再将 global-metadata.dat 文件拖回万灵山海.apk 安卓客户端原文件目录下,替换掉原来的文件。
![图片[15]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1738894960327.png)
再来修改 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 文件,需使用工具文件夹下的客户端修改工具,解压找到 \AssetsBundleExtractor中文汉化版\32bit\AssetBundleExtractor.exe 双击打开,选择文件 – 打开,选择 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 文件,点击是。
![图片[16]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739253742252.png)
此刻会让另存文件,我们填写 1,点击保存。
![图片[17]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739253805825.png)
点击信息按钮。
![图片[18]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739253938084.png)
信息弹窗中选择 global_config.lua,点击右侧的导出转存,然后保存下来,会生成一个 txt 文件。
![图片[19]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739254000694.png)
打开这个 txt 文件,将里面的 IP (82.156.126.171),替换成你的 IP,然后保存。
![图片[20]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739254342347.png)
回到信息弹窗界面,点击右侧的导入转存,选择刚修改的 txt 文件,点击下方的确定,然后弹窗点击是。
![图片[21]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739255081015.png)
再选择文件 – 保存。
![图片[22]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739255212465.png)
保存文件填写 2,点击保存。
![图片[23]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739255689988.png)
再选择文件 – 压缩,选择刚保存的文件 2。
![图片[24]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739255999425.png)
弹窗点击确定。
![图片[25]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739256063966.png)
然后会让另存文件,填写 3,保存。
![图片[26]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739256113076.png)
最后我们需要把 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab 删除,将文件 3 重命名为 preload-7516A9877653F4EDF42A2EA1A5C38FE9.ab。将该文件拖回万灵山海.apk 安卓客户端原文件目录下,替换掉原来的文件。
![图片[27]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1738895217137.png)
呼… 是不是步骤有点多,后面多操作几次就熟练了 – -。
全部替换后使用签名工具 ApkTool 选择修改好的万灵山海.apk 文件进行签名。
![图片[28]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739256796348.png)
然后就可以安装到模拟器或者安卓手机启动啦,游戏启动会有 16M 多的热更,游戏默认注册码:123。
11.2 苹果客户端
苹果端同样需要修改两个文件:
- \Payload\bnb.app\Data\Managed\Metadata\global-metadata.dat
- \Payload\bnb.app\Data\Raw\AssetBundle\lua\preload-4CFE5EECF63CB00AD90FD3937C929740.ab
同样用好压打开苹果客户端万灵山海.ipa,将两个文件拖出,使用和安卓客户端一样的方法修改文件的 IP,最后在替换掉客户端的原文件即可,和安卓的修改方法一模一样,这里我就不赘述了哈。
全部替换后,需要进行签名,建议使用爱思助手签名。
![图片[29]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739258487120.png)
同样苹果启动游戏也会有 9M 多的热更新,默认注册码:123。
12. 游戏后台
游戏有两个后台,一个运营后台,一个 GM 后台。
运营后台链接:http://ip:81/guanli.php,默认账号:admin,默认密码:123456,功能很强大,可以查看玩家列表、发送邮件、设置公告等等。
![图片[30]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739257690091.png)
如果自己开服玩建议修改默认密码,右上角点击 Admin,查看个人资料界面,即可修改密码。
![图片[31]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739257637641.png)
还有一个 GM 后台,其中 GM 总后台链接:http://ip:81/gmht/gm.php,默认 GM 码:123456,可以授权玩家,也可以直接充值和发送物品。如果想修改默认 GM 码,只需要修改文件 /data/www/agent/public/gmht/user/config.php 中 $gmcodeb 字段值即可。
![图片[32]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739159492244.png)
玩家后台链接:http://ip:81/gmht,授权过的玩家就可以充值和发送物品啦。
13. 关闭游戏
关闭游戏服务很简单,只需要输入以下命令:
cd /data/WL_BIGCROSS/release./stop.sh cd /data/WL_CROSS/release./stop.sh cd /data/WL_S1/release./stop.sh
友情提示,每次备份快照时,先关闭游戏服务,以防回滚游戏发生异常。
后续游戏监控
#!/bin/sh
XYTCPListeningnum=`netstat -an | egrep "0.0.0.0:40000" | awk '$1 == "tcp"'|wc -l`
if [ $XYTCPListeningnum -eq 0 ];
then
cd /data/WL_BIGCROSS/release
./start.sh
cd /data/WL_CROSS/release
./start.sh
cd /data/WL_S1/release
./start.sh
fi
担心游戏掉线或者服务器重启,我们可以宝塔创建一个定时任务来监控游戏,异常时自动重新启动游戏:
![图片[33]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739340866097.png)
rm -rf /data/WL_S1/release/log/*
rm -rf /data/WL_CROSS/release/log/*
日志清理
游戏运行会产生大量的日志文件占用磁盘空间,我们同样可以用宝塔定时任务,每天清除日志文件,防止磁盘被占满,命令如下:
rm -rf /data/WL_S1/release/log/*rm -rf /data/WL_CROSS/release/log/*
游戏公告
游戏公告修改都在数据库 ruankor 表 ay_gameconfig,登录界面公告需要修改 id 为 34 的 content 值,游戏内的公告需要修改 id 为 49 的 content 值。
![图片[34]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739327580955.png)
游戏热更
这款游戏和其他游戏最大的不同就是,游戏资源需要单独下载,而不是集成到客户端中的,游戏到 30 级游戏内会下载 2G 左右的游戏资源,还有一些过程中加载资源,总共大概 3G 左右的资源要下载…
![图片[35]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/20250211145728.jpg)
可想而知一般的服务器根本扛不住,哪怕几个人玩也会卡的不要不要,所以我花了好长时间来攻克这个问题…
最开始我想到的是购买 123 网盘的直链流量包 80 元 1T,大概能够 300 个玩家使用,但是资源包上传网盘后竟然无法成功解压,如果不解压上传一次只能上传 1000 个文件,而实际文件个数要远远大于这个数,不解压上传根本不现实且很容易遗漏,所以只得放弃。
![图片[36]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739323436357.png)
最后求教了糊涂鳄大佬,推荐我使用单独的服务器作为游戏热更使用,就是这款轻量锐驰型服务器!
![图片[37]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739323793083.png)
2 核 2G 宽带 200M 无限量,每月 40 元,由于只作为热更,所以内存 2G 足矣,200M 宽带经过本人测试好的时候能达到 5000K 左右,不好的时候几百 K 也是常有的事儿,并不稳定,但胜在省心啊,价格也还可以接受,这样我还可以架设其他热更大的游戏,简直不要太 Nice~
![图片[38]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739341479544.png)
下面说下万灵山海如何使用三方服务器作为游戏热更资源,首先将三方服务器安装好宝塔,新建目录 /www/wwwroot/wl,在本地找到游戏热更目录 \data\www\agent\public\bnb_up,将 bnb_up 压缩,上传到三方服务器 /www/wwwroot/wl 目录下,上传好后解压。
![图片[39]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739325429704.png)
在创建站点,域名填写 IP:81,端口号随意,别占用其他已用的端口就好,根目录选择 /www/wwwroot/wl。
![图片[40]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739325905225.png)
最后需要修改游戏服务器文件 /data/www/agent/public/bnb/api.php,Android 热更修改这两行。
![图片[41]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739326552943.png)
IOS 热更修改这两行。
![图片[42]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1739326522250.png)
将 IP 替换为你三方服务器的 IP 即可,这样游戏内的游戏资源下载就只会使用三方服务器的宽带啦,Nice~
每日签到
游戏玩半个月后,玩家反馈有一些道具物品难度获得极大,或者根本无法获取,比如星辰技能书和精灵球上古异兽,所以我准备通过每日签到,每天送给大家。
首先在 PhpMyadmin 中找到数据库 ruankor 表 ay_gameconfig,执行 sql 语句:
public function player_qiandao()
{
...
$params11 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_money")->find();
$params12 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item")->find();
$params13 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num")->find();
// 增加签到物品
$params14 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item2")->find();
$params15 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num2")->find();
$params16 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item3")->find();
$params17 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num3")->find();
$user = explode("_", $request["user_id"])[1];
$params = \think\Db::name("qiandao")->where("user", $user)->find();
$usermoney = \think\Db::name("user")->where("username", $user)->find();
$param = $params11["value"];
$newmoney = $usermoney["money"] + $param;
if (!$params) {
$dataA = ["server_id" => $request["server_id"], "user" => $user, "role_id" => $request["role_id"], "role_name" => $request["role_name"], "time" => time(), "ip" => $ip, "result" => "1"];
$datab = \think\Db::name("qiandao")->insert($dataA, true);
if ($datab) {
$dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
$this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
// 增加签到物品
$this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
$this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
$data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
}
} else {
$lastSignInDate = date("Y-m-d", $params["time"]);
$currentDate = date("Y-m-d");
if ($lastSignInDate == $currentDate) {
$data = "今日已签到";
$init_info = ["ret" => 0, "data" => $data];
return json_encode($init_info);
} else {
$dataa = \think\Db::name("qiandao")->where("user", $user)->update(["time" => time()]);
$dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
$this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
// 增加签到物品
$this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
$this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
$data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
}
}
$init_info = ["ret" => 0, "data" => $data];
return json_encode($init_info);
}
![图片[43]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1741923301350.png)
增加签到道具 qiandao_item2 和 qiandao_item3,物品代码分别是 56368 和 33011,大家可以通过文件 /data/www/agent/public/gmht/user/item_gm.txt 找到物品代码,数量分别设置为 1 个。
然后修改后台文件 /data/www/agent/application/api/controller/Bnb.php,幸好我找的这个版本后台不是加密的,所以可以自行更改。
![图片[44]趣九游源码资源网-手游源码丨服务端丨游戏源码丨GM后台丨网站源码丨支付万灵山海手游通用架设教程-详解Win/Linux服务端启动流程与常见问题排查](https://echeverra.cn/wp-content/static/article-img/wlsh/1741922635346.png)
代码如下:
public function player_qiandao()
{
...
$params11 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_money")->find();
$params12 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item")->find();
$params13 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num")->find();
// 增加签到物品
$params14 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item2")->find();
$params15 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num2")->find();
$params16 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_item3")->find();
$params17 = \think\Db::name("gameconfig")->field("value")->where("name", "qiandao_num3")->find();
$user = explode("_", $request["user_id"])[1];
$params = \think\Db::name("qiandao")->where("user", $user)->find();
$usermoney = \think\Db::name("user")->where("username", $user)->find();
$param = $params11["value"];
$newmoney = $usermoney["money"] + $param;
if (!$params) {
$dataA = ["server_id" => $request["server_id"], "user" => $user, "role_id" => $request["role_id"], "role_name" => $request["role_name"], "time" => time(), "ip" => $ip, "result" => "1"];
$datab = \think\Db::name("qiandao")->insert($dataA, true);
if ($datab) {
$dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
$this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
// 增加签到物品
$this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
$this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
$data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
}
} else {
$lastSignInDate = date("Y-m-d", $params["time"]);
$currentDate = date("Y-m-d");
if ($lastSignInDate == $currentDate) {
$data = "今日已签到";
$init_info = ["ret" => 0, "data" => $data];
return json_encode($init_info);
} else {
$dataa = \think\Db::name("qiandao")->where("user", $user)->update(["time" => time()]);
$dataa = \think\Db::name("user")->where("username", $user)->update(["money" => $newmoney]);
$this->GMmail($request["server_id"], $request["role_id"], $params12["value"], $params13["value"]);
// 增加签到物品
$this->GMmail($request["server_id"], $request["role_id"], $params14["value"], $params15["value"]);
$this->GMmail($request["server_id"], $request["role_id"], $params16["value"], $params17["value"]);
$data = "签到成功,获得 归元币*1388,其余奖励请到邮箱查收。";
}
}
$init_info = ["ret" => 0, "data" => $data];
return json_encode($init_info);
}
如果当天已经签到的,想重新今日签到,可以清空数据库 ruankor 表 ay_qiandao,无需重启,登录游戏进个人中心,点击今日签到,就可以邮箱领取新增的签到物品啦!Nice~
2. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
3. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
4. 本站所有内容均来源于网络,仅供学习与参考,请勿商业运营,严禁从事违法、侵权等任何非法活动,否则后果自负
5. 所有信息资源,本站只做收集和技术分享,请下载后24小时内删除!















暂无评论内容