七星湖南UI最全端-271款地方玩法/Node.js+Pomelo服务端全套源码+安卓iOS双端

房卡联盟2026-09-19270 阅读
约 2,566 字 · 大约 9 分钟

摘要:这是七星棋牌平台的一套「湖南定制端」交付——服务端给的是完整明文源码,客户端是编译好的安卓、iOS 双端。本文不做架构鸟瞰,而是跟着包里自带的部署脚本一行一行走:从 Docker 装环境、Pomelo 起服、pm2 拉后台,到多地区配置、玩法逻辑和热更新,最后说清它能二开到什么程度、上线前要清哪些坑。


一、先看它长什么样

打开就是一股湖南味:山水远景加一轮红日的登录页,主大厅顶着「亲友圈 / 创建房间 / 加入房间」三个入口,点开地区选择直接甩给你一张湖南省地图,按市州分布玩法。整体是横屏 Cocos 客户端,UI 完成度是能直接上运营的成品,不是半吊子 Demo。

七星湖南UI 山水风登录界面
七星湖南UI 游戏主大厅
七星湖南UI 湖南地图选区界面
七星湖南UI 对局战绩回看列表

客户端交付的是两个编译好的成品包:安卓 湖南派派.apk、iOS 湘友联盟.ipa,各接近 400MB。也就是说,这套的「源码」在服务端,客户端是打包产物加一套热更工程——这个交付形态决定了后面二开的边界,先记住。

二、交付形态:服务端源码 + 双端成品 + 热更

整包摊开就七个文件夹,一目了然:

七星湖南UI 完整交付目录
七星湖南UI 完整交付目录

目录

内容

形态

服务端

maoziw.com.zip,解压后是完整 Node 工程

明文源码

客户端

湖南派派 apk + 湘友联盟 ipa

编译成品

数据库

dev.sql,25MB,326 张表

明文 SQL

热更新 / 热工程 / 热工具

manifest、打包脚本、Node/WinRAR 安装包

工具链

搭建测试笔记

搭建教程、启动命令、客户端修改笔记

文档

服务端解压后是标准的 Pomelo 分布式工程,模块分得很清楚:game-server(大厅与俱乐部)、game-server2(对局房间)、cms(后台)、member(代理/会员)、timer(定时任务)、common(多地区公共配置)。整个 game-server 里数了一下是 642 个 .js、0 个 .jsc——全明文,没有做字节码编译,这点对二开很关键。

三、跟着脚本把它跑起来

这套最省心的地方,是把装环境的活儿写成了脚本。搭建教程第一步就是 sh jxj.sh,它用 Docker 一把梭把中间件全拉起来:

# jxj.sh 节选:关防火墙、装 Docker,再用容器拉起三件套
systemctl stop firewalld && systemctl disable firewalld

# MySQL 5.6
docker run -p 3306:3306 --restart=always --name mysql \
  -v /root/mysql/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=你的数据库密码 -d mysql:5.6

# Redis(带密码)
docker run -d --name redis --restart=always -p 6379:6379 \
  redis --appendonly yes --requirepass "你的redis密码"

# MongoDB
docker run --name mongo --restart=always -p 27017:27017 \
  -v /root/mongo:/data/db -d mongo

# Node.js 锁定 10.20.1(老版本,别升)
wget https://nodejs.org/dist/v10.20.1/node-v10.20.1-linux-x64.tar.gz

跑完它会往 /etc/profile 里写死一行 export NODE_ENV=dev-a——这就是整套的环境开关,后面所有服务都靠这个变量选配置。接着 sh next.sh 装 Pomelo 和 pm2 两个全局工具:

npm install pomelo -g
npm install pm2 -g

对局服务(game-server)不用 pm2,它有自己的重启脚本 run.sh,逻辑很直白——先招呼所有在线房间解散,再按端口段挨个杀进程,最后 pomelo start 拉起整个集群:

# run.sh 节选:重启前先解散房间,避免玩家卡在牌局里
curl -d "" "http://127.0.0.1:9990/debug/dissolveAll"

# 按端口段清理各类 Pomelo 节点
for((i=15000;i<=15039;i++)); do lsof -i :$i | awk 'NR>1{print "kill -9",$2}' | sh; done  # pkcon 连接器
for((i=15100;i<=15139;i++)); do lsof -i :$i | awk 'NR>1{print "kill -9",$2}' | sh; done  # pkplayer 玩家
for((i=15200;i<=15239;i++)); do lsof -i :$i | awk 'NR>1{print "kill -9",$2}' | sh; done  # pkclub 俱乐部
for((i=15300;i<=15339;i++)); do lsof -i :$i | awk 'NR>1{print "kill -9",$2}' | sh; done  # pkroom 房间

pomelo start -e $NODE_ENV -D

后台那几个服务才用 pm2 守着,启动命令包里也写好了,照抄即可:

cd /home/server/cms    && pm2 start main.js  -n cms       # 运营后台
cd /home/server/member && pm2 start main.js  -n member    # 代理/会员
cd /home/server/upload && pm2 start main.js  -n upload    # 上传
cd /home/server/timer  && pm2 start main.js  -n timer     # 定时任务(另有 main1/2/3)
pm2 list

熟手照着这套脚本走,半天到一天能把首个环境跑通,卡点基本都在 Node 10 的老依赖对齐和中间件密码上,不在代码本身。

四、Pomelo 集群是怎么切的

game-server/config/servers.json 定义了整个分布式拓扑,dev-a 环境下一眼就能看清角色分工:

{
  "dev-a": {
    "pkmaster":  [{ "id": "pkmaster",    "host": "127.0.0.1", "port": 3006 }],
    "pkcon":     [{ "id": "pkcon000",    "host": "127.0.0.1", "port": 15000,
                    "clientPort": 16010, "frontend": true }],
    "pkplayer":  [{ "id": "pkplayer000", "host": "127.0.0.1", "port": 15100 }],
    "pkclub":    [{ "id": "pkclub000",   "host": "127.0.0.1", "port": 15200 }],
    "pkleague":  [{ "id": "pkleague000", "host": "127.0.0.1", "port": 15250 }],
    "pkroom":    [{ "id": "pkroom000",   "host": "127.0.0.1", "port": 15300 }]
  }
}

六类节点各管一段:pkmaster 主控、pkcon 是唯一对外的连接器(frontend: true,玩家从 16010 端口进)、pkplayer 管玩家态、pkclub 俱乐部、pkleague 联盟、pkroom 房间对局。要扩容就是在对应数组里加节点、端口顺延,run.sh 的端口段(15000/15100/15200…)也是照这个规划来的,前后是咬合的。

五、一份代码,多个地区各跑各的

这套的运营模型是「一套代码、多地区分服」。common/config-aws 下按地区各放一套配置,海安、衡阳、淮安、湖北、晋中、耒阳、南通、邵阳、湘乡、徐州、永州、岳阳……湖南地区占了大半,正对应「湖南 UI 最全端」的定位。每个地区一套 common.js(域名、品牌、推送、机器人)+ mysql.js(独立库)+ server.js + redis.js。

以衡阳这一份为例,品牌、域名、极光推送、闲聊/吹牛机器人都是分地区独立配的:

// common/config-aws/hengyang/common.js
module.exports = {
    serverName: '北斗衡阳棋牌',
    gameHost:  'http://hengyang.你的域名.com',
    cmsHost:   'http://hengyang-cms.你的域名.com',
    downloadUrl: 'https://cdn.你的域名.com/.../download.html',
    jpush: { appKey: '极光AppKey', masterSecret: '极光Secret' },   // 极光推送
    xianliaoRobot: { robotId: '闲聊机器人ID', robotSecret: '密钥' } // 陪玩机器人
};

数据库配置是主从 + beta + test 多套连接池分开的,改的时候只动 host 和密码就行:

// common/config-aws/hengyang/mysql.js(真实地址密码已打码)
module.exports = {
    host: '你的数据库地址', port: 3306,
    user: '你的账号', password: '你的密码',
    database: 'majiang-hengyang', charset: 'utf8mb4',
    connectionLimit: 12,
    master: { /* 写库连接池 */ },
    slave:  { /* 读库连接池 */ }
};

提醒:包里这几份配置留着原运营方的真实域名、AWS RDS 地址和明文密码,还有极光、机器人的 key。这些都是打包者遗留,上线前必须全部换成自己的,否则等于把别人的库和推送通道带上线,既跑不通也有风险。

六、271 款玩法,湖南地方牌全都在

这套敢叫「最全端」,底气在玩法广度。game-server2 的 pkroom/games 按大类分成斗地主、麻将、字牌、扑克、其他五个目录,数一下 GameCode 逻辑文件:

七星湖南UI 服务端玩法分类源码
七星湖南UI 服务端麻将玩法源码

大类

玩法数

覆盖

麻将 majiang

49

沅江、益阳、长沙、岳阳红中、宁乡开王、桃江、平江扎乌、捉虾子…

其他 other

126

各地混合变种与场次逻辑

扑克 poker

40

跑得快、11 张跑得快、三打哈、牛十别、掳坨、打炸弹…

字牌 zipai

33

沅江鬼胡子、常德/汉寿/石门跑胡子、六胡抢、湘西二七十、扯胡子…

斗地主 doudizhu

13

含大同、淮安、晋中、临汾、吕梁等地方规则

合计

271

明文逻辑,一玩法一文件

同目录下还躺着 15 份按地区拆分的 GameCfg-<地区>.js(衡阳、耒阳、邵阳、湘乡、永州、岳阳……),管的是每个地区放哪些玩法、每局收多少元宝。核心的 Table.js 单文件就 422KB,是整套牌桌引擎所在。

玩法逻辑是真明文、带中文注释,随便翻一个宁乡开王麻将的建房参数就知道能改到多细:

// GameCodeNingXiangKaiWang.js —— 建房选项,注释是原样带的
GameCodeNingXiangKaiWang.prototype.initAreaSelectMode = function(tb){
    var tData = tb.tData;
    tData.gameCnName = "宁乡开王麻将";
    tData.maxPlayer = tb.createParams.maxPlayer;                    // 最大人数
    tData.areaSelectMode.fengding   = tb.createParams.fengding;     // 大胡封顶(0封顶 1不封顶)
    tData.areaSelectMode.mustzimo   = tb.createParams.mustzimo;     // 是否必须自摸胡
    tData.areaSelectMode.wangCount  = tb.createParams.wangCount;    // 开王类型(1单王 2双王)
    tData.areaSelectMode.huCount    = tb.createParams.huCount;      // 开杠胡张数
    tData.areaSelectMode.zhuaniaoNum= tb.createParams.zhuaniaoNum;  // 抓鸟数量
    tData.areaSelectMode.piaoniao   = tb.createParams.piaoniao;     // 飘鸟
    tData.areaSelectMode.difen      = tb.createParams.difen || 1;   // 底分/结算
    tData.areaSelectMode.zuoYa      = tb.createParams.zuoYa  || 0;  // 坐压
};

封顶、必须自摸、开单王双王、抓鸟、飘鸟、底分、坐压——这些客户端建房面板上的每一个勾选项,在服务端都能找到对应字段,改规则不用猜。下面这些建房界面里几十种湖南地方牌,逻辑就是上面这样一份份摆着的:

七星湖南UI 麻将建房沅江益阳
七星湖南UI 麻将建房抓鸟坐庄
七星湖南UI 麻将建房长沙岳阳红中
七星湖南UI 麻将建房安化宁乡桃江
七星湖南UI 麻将建房郴州平江南县

扑克这一挂主打跑得快、三打哈系列,速度、切牌、封顶、飘分都能配:

七星湖南UI 跑得快三打哈建房
七星湖南UI 扑克建房株洲牛十别掳坨
七星湖南UI 扑克建房打炸弹打码子

字牌跑胡子是湖南特色重头,硬息、可飘、封顶、暗歪吊吊手九对半这些名堂都做进了选项:

七星湖南UI 字牌建房沅江鬼胡子
七星湖南UI 字牌建房郴州桂阳字牌
七星湖南UI 字牌建房六胡抢湘西二七十
七星湖南UI 字牌建房常德汉寿跑胡子
七星湖南UI 字牌建房石门安乡十胡卡
七星湖南UI 字牌建房湘潭永州扯胡子

七、亲友圈 + 俱乐部联盟:熟人局的运营底座

它不是纯金币场打法,主力是亲友圈熟人局。数据库里 tb_club、tb_club_group、tb_club_happybean、tb_club_hehuoren_day、tb_agent 一整套表撑起「俱乐部 + 联盟 + 合伙人分红」的三级运营体系——会长建圈、联盟组盟、合伙人按贡献分成,乐豆积分做结算保底。客户端这边就是亲友圈房间大厅,一屏摆开多个玩法的房桌,进圈即玩。

七星湖南UI 亲友圈房间全部玩法
七星湖南UI 亲友圈房间列表
七星湖南UI 亲友圈多玩法房间
七星湖南UI 亲友圈创建加入

牌桌本身该有的都有:3D/2D 双套牌桌视图、背景换肤、听牌提示、战绩回看、对局结算,成品度在线。

七星湖南UI 沅江麻将牌面
七星湖南UI 麻将牌桌画面设置
七星湖南UI 十一张跑得快牌局
七星湖南UI 跑得快对局结算

八、热更新怎么走

客户端是 Cocos 热更架构,改资源和逻辑不用重新发包。热更配置就一份 project.manifest,指到你自己的更新服务器即可:

{
  "packageUrl": "http://你的更新服务器/update/assets/",
  "version": "6.8.141",
  "remoteVersionUrl":  "http://你的更新服务器/update/assets/version.manifest",
  "remoteManifestUrl": "http://你的更新服务器/update/assets/project.manifest"
}

jxj.sh 已经顺手建好了 /opt/www/update 目录做热更根,nginx.conf 也配了对应站点,链路是通的。客户端要换服务器地址,包里的《客户端修改笔记》给了搜索锚点:通信地址搜 guestLogin、热更地址搜 GameDownloadCfgUrl、微信相关在 smali/org/cocos2dx/javascript/AppActivity.smali——反编译 apk 定点改这几处就行。

九、能二开到什么程度

一句话:服务端随便改,客户端只能换皮改配置。

  • 服务端(能深改):642 个 JS 全明文、带中文注释,玩法逻辑、抽水、俱乐部分红、多地区场次配置都在 game-server2 里摆着,加一个市县变种、改一档赔率封顶都是顺手的活。数据库 326 张表结构完整,后台 CMS 也是源码。

  • 客户端(只能浅改):交付的是编译好的 apk/ipa,加上一套热更工程和资源,没有 Cocos 原始工程。所以换皮、改文案、改地址、热更资源没问题,但想动客户端的核心表现层逻辑就没源码可依。

  • 一个伏笔:服务端入口 app.js 里挂了 bytenode(V8 字节码)的可选加载壳,搭建教程最后一步也写了「修改 logic.js 后进行加密」。也就是说,交付给你的是明文,上线时你可以自己把关键逻辑编成字节码再发,这是留给运营方的保护手段,不是限制你二开的枷锁。

配套的技术栈按老规矩锁死版本:Node.js 10.20.1、Pomelo 1.1.7、MySQL 5.6、Redis、MongoDB、Nginx、pm2。别贪新,Node 一升老依赖就炸,这是这类项目的通病。

十、上线前必须清的几处

这套是从真实运营环境打包出来的,遗留信息不少,直接上线等于替别人背锅,务必逐项清理:

  1. 各地区 mysql.js 的真实数据库地址与明文密码——全换自己的库;

  2. common.js 里的域名、极光推送 key、闲聊/吹牛机器人密钥——换成自己的;

  3. 搭建笔记里遗留的第三方联系方式(打包者留的 TG/网址)——与源码无关,别轻信别转账;

  4. 后台默认口令(tb_cms_user,后台走 IP:9993)——首次登录立即改强密码;

  5. 热更三件套 manifest 的 IP/端口——指到自己的更新服务器再发版。


一句话总结:七星这套湖南定制端,服务端是货真价实的全明文 Node/Pomelo 源码,271 款地方玩法一份不少、湖南麻将字牌跑得快全覆盖,配套部署脚本、多地区配置、亲友圈俱乐部运营和热更链路都齐;短板是客户端只给了编译双端、没有 Cocos 工程。适合想拿它做湖南地区分服运营、或以服务端为底座深度二开的人;纯想改客户端表现层的,得掂量一下热更能不能满足。

下载地址

本资源为付费内容,登录后可下载