返回列表 发布新帖回复

百游棋牌房卡海外版二开文档:服务端Lua代码修改、多语言适配与支付接入实战

1172 0
发表于 1 小时前 | 查看全部 阅读模式
搞海外棋牌的兄弟们,我最近连续接了两个百游棋牌房卡的海外定制单,一套改成越南版,一套改成菲律宾版,踩了无数深坑,跑了十几遍代码。趁着热乎劲儿,把百游这套框架的海外适配与核心玩法修改过程整理成技术文档,全代码实操,给正在折腾百游房卡二开的朋友做个参考。
一、百游房卡源码结构速览
先快速过一下百游棋牌房卡的整体结构,这套框架服务端用Lua开发,客户端基于Cocos Creator,数据库MySQL + Redis,房卡模式下的房间创建、解散、结算逻辑全部在Lua层实现。接手后第一件事,把目录关系理顺:
ByGameServer/├── script/│   ├── global.lua          -- 全局配置、语言开关│   ├── room_mgr.lua        -- 房间管理、房号生成│   ├── game_niuniu.lua     -- 百人牛牛逻辑│   ├── game_majiang.lua    -- 地方麻将逻辑│   └── pay_call.lua        -- 支付回调接口├── bin/│   └── dbsql/              -- 数据库脚本与配置表└── config/    └── server_config.json  -- 服务器端口、域名配置
二开文档区-百游棋牌房卡海外版二开文档:服务端Lua代码修改、多语言适配与支付接入实战(1)
二、多语言与货币改造:从Lua层到客户端全链路
海外适配第一步不是改玩法,而是先让界面说当地语言、结算显示当地货币。百游这套源码默认只有中文,全局语言配置放在global.lua里。
2.1 服务端多语言开关
先改global.lua,增加语言枚举和当前语言变量:
-- global.lua 增加多语言支持LANG_TYPE = {    ZH = 1,    EN = 2,    VI = 3,   -- 越南语    TH = 4,   -- 泰语}CUR_LANG = LANG_TYPE.VI   -- 当前设为越南语,可根据渠道包动态切换-- 语言文本映射表LANG_TEXT = {    [LANG_TYPE.ZH = {        room_create = "创建房间",        room_join = "加入房间",        gold_name = "金币",    },    [LANG_TYPE.VI = {        room_create = "Tạo phòng",        room_join = "Vào phòng",        gold_name = "Xu",    },    ...}
客户端在请求服务器时带上语言参数,服务端根据CUR_LANG下发对应文本,避免客户端硬编码。
2.2 货币单位本地化
百游原版使用“金币”“元宝”,海外需要改成“PHP”“VND”等本地货币。这里不止是改个名字,结算金额的显示逻辑也要动。以牛牛为例,game_niuniu.lua中结算通知的代码片段:
-- game_niuniu.lua 结算推送修改前function push_settle_msg(players)    for _, p in ipairs(players) do        local msg = string.format("你赢了%d金币", p.win_gold)        send_to_client(p.uid, msg)    endend
海外版需要读取货币单位,并在展示时做汇率转换(如果接入本地支付后金币有对应关系的话):
-- 修改后function push_settle_msg(players)    local unit = LANG_TEXT[CUR_LANG.gold_name   -- 越南文显示"Xu"    for _, p in ipairs(players) do        local msg = string.format("Bạn thắng %d %s", p.win_gold, unit)        send_to_client(p.uid, msg)    endend
同理,客户端收到消息后要根据当前语言匹配字体和排版,这部分客户端代码后面会说。
二开文档区-百游棋牌房卡海外版二开文档:服务端Lua代码修改、多语言适配与支付接入实战(2)
三、房卡模式核心玩法修改:底分与房卡消耗
百游房卡模式下,创建房间需要消耗房卡,不同玩法底分、倍数也各不相同。海外运营时需要根据当地习惯调整,这些逻辑全部在room_mgr.lua中。
3.1 调整底分与入场限制
例如越南用户喜欢玩小底分快速局,原来底分默认100,需要降为10。同时增加“局数消耗房卡”的功能,因为有的地区按局收费。
-- room_mgr.lua 创建房间时读取配置function create_room(params)    local game_type = params.game_type  -- 1:牛牛 2:麻将    local base_score = params.base_score or 10    -- 默认底分改为10    local round_count = params.rounds or 8        -- 8局    local card_cost = calc_room_card_cost(game_type, base_score, round_count)    if params.card_count < card_cost then        return {code = -1, msg = "房卡不足"}  -- 这里msg也要用多语言    end    -- 扣除房卡,生成房号    ...endfunction calc_room_card_cost(gtype, score, rounds)    local cost_table = {        [1 = {base=2, per_round=0.5},  -- 牛牛底分系数        [2 = {base=3, per_round=0.8},  -- 麻将    }    local cfg = cost_table[gtype    return math.ceil(cfg.base + score/20 * cfg.per_round * rounds)end
这样,底分10分、8局的牛牛房间,房卡消耗 = 2 + (10/20)*0.5*8 = 4张,运营可以自由调节系数。
3.2 解散房间与退款逻辑
海外玩家对房主解散房间后的退款很敏感,百游原版解散不退房卡,需要二次开发。在room_mgr.lua的dismiss_room函数里加入退卡逻辑:
function dismiss_room(room_id, dismiss_uid)    local room = get_room(room_id)    if room.owner_uid ~= dismiss_uid then return end    -- 检查是否可以退款:未开始游戏,或已开始但所有人未操作    if room.status == ROOM_STATUS.WAITING or is_no_play(room) then        local refund = room.used_card   -- 退还房卡数        add_user_card(room.owner_uid, refund)        log_refund(room.owner_uid, room_id, refund)    end    -- 通知所有玩家房间解散    ...end
这是海外版本地化运营必改的一处,避免客诉。
四、客户端多语言资源替换与界面演示
客户端我们用Cocos Creator打开,主要改点:字符串表、UI预制体文字、图片资源。
4.1 字符串表本地化
新建LangData_vi.json,结构如下:
{  "btn_create_room": "Tạo phòng",  "btn_join_room": "Vào phòng",  "label_rounds": "Số ván",  "label_base_score": "Điểm cơ bản"}
然后在LangManager.js中根据服务端下发的语言类型加载对应的json文件,所有Label组件动态赋值。
4.2 UI布局兼容
越南语文字普遍比中文长30%左右,泰语更高,不改布局按钮会撑爆。建议固定按钮宽度,文字字号做缩放适配。
// LangManager.js 自适应调整setLabel( node, key ) {    let str = this.langData[key;    let label = node.getComponent(cc.Label);    label.string = str;    // 英文和越南语适当缩小字号    if (this.curLang == 'en' || this.curLang == 'vi') {        label.fontSize = label.fontSize * 0.85;    }}
4.3 换肤与图标替换
海外上架需要去掉明显的中国风元素,把龙、凤换成当地吉祥物,支付图标改成Maya、GCash等。资源替换完成后重新打包,注意把图集也一并更新。
二开文档区-百游棋牌房卡海外版二开文档:服务端Lua代码修改、多语言适配与支付接入实战(3)
百游棋牌客户端多语言界面演示图,用手机竖屏模拟真实运行效果,标注不同语言下的UI布局差异,展示海外适配的最终呈现状态。
五、海外支付接入实战代码
百游原版支付只接了一家国内第三方,海外需要替换成当地支付,这里以接入菲律宾GCash为例,服务端pay_call.lua处理回调。
-- pay_call.lua 新增GCash回调处理function on_gcash_callback(data)    local order_id = data.order_id    local txn_id = data.txn_id    local amount = data.amount    -- 验签    if not verify_gcash_sign(data) then        return http_resp(403, "sign error")    end    -- 处理订单,发放房卡或金币    local uid = get_uid_by_order(order_id)    local goods = get_goods_by_order(order_id)    if goods.type == "room_card" then        add_user_card(uid, goods.num)    end    -- 记录流水    save_pay_log(uid, amount, "GCash", txn_id)    return http_resp(200, "SUCCESS")end
客户端调用支付SDK拉起GCash,支付成功后通知服务端,流程和国内支付一致,只是签名算法和请求格式需要按GCash文档调整。这部分代码量较多,完整插件包我整理在本地,需要的朋友文末扫码获取。

以上就是百游棋牌房卡海外版二开过程中的关键代码改动,从服务端Lua多语言、房卡消耗算法,到客户端UI适配和支付接入,基本覆盖了90%以上的改造需求。实际项目里还会碰到运营商短信、Facebook登录等模块,但万变不离其宗,核心还是把语言和支付这两条链路打通。
如果你也在做百游棋牌房卡的海外二开,卡在某个报错上,或者需要完整的多语言资源包和支付插件源码,可以扫描下方二维码加我微信(备注“百游海外”)。

客服微信二维码
任何一个凭本事吃饭的人,都值得被尊重。

回复

请选择回复
🙏感谢分享,好内容!
📌收藏了,慢慢看。
👏支持楼主,干得漂亮!
🎯技术贴不错,学到了!
🤝多谢无私分享!
🌟内容清晰,赞!
🏆论坛高手多,佩服!
🧠方案不错,值得试试!
🔧这个版本能兼容吗?
📄有注释或文档吗?
🐛运行报错,求指点!
✅实测可用,好用!
🛠设计挺好,可再优化。
💬有空一起交流下~
📖已阅,期待更多更新!
🆕新手福利,感谢!
🌍好贴越来越多,顶!
🚀教程有用,搭建成功!
📌留名关注!
🔍学习中,再来请教!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

admin@78910j.cn

发布帖子最高可获得95%佣金酬劳!
邀请他人发帖,最高可获得10%额外奖励,
邀请越多,收益越高!点击查看 👈
  • 扫一扫手机端
Copyright © 2001-2026 同花论坛 版权所有 All Rights Reserved. 辽ICP备2024034080号-1| 地图索引 | 网站地图 | txt地图
关灯 在本版发帖
扫一扫添加微信客服
QQ客服:70497313返回顶部
快速回复 返回顶部 返回列表