0x00 前言
新表情系统系统是 2023 年引入的新特性:
- 在传统的 50 个基础表情上,扩展了 23 个新表情
- 新增了表情包商城,目前提供了 3 套自选购买的表情包:
- 21 周年纪念表情包(免费): 内含 10 个新表情
- 2023 中秋节表情包(付费): 内含 10 个新表情
- 2023 感恩节表情包(付费): 内含 10 个新表情
0x10 表情图档
表情包需要图档支持,对应位置在:
data/sprite/emotion
data/sprite/捞蒲飘
0x20 界面图档
表情包商城的 UI 图档位置在:
data/texture/蜡历牢磐其捞胶/cashemotion
如果希望汉化 UI ,需要修改对应的文字图片
0x30 界面变量配置
表情包商城的 UI 变量文字并没有写在 data/msgstringtable.csv
,而是独立配置到 data/texture/simplemsg/msg_emotion.csv
。
但这两个配置文件存在一些异同:
异同点 | msg_emotion.csv | msgstringtable.csv |
---|---|---|
每一行格式 | key,default,value | key,value |
value 变量占位符 | {index} 或 {} |
%s 或 %d |
加密方式 | base64 | base64 |
msg_emotion.csv 解密前:
解密后:
建议使用 python 等批量解密后修改、再重新加密为 base64 替换原文件内容
0x40 客户端代码
在表情包系统中,与图档关联的代码、和与服务端关联的代码,主要定义在:
data/texture/luafiles514/lua files/cashemotion
data/texture/luafiles514/lua files/emotion
但是不建议动这两个目录,因为表情包系统与其他系统不一样,可定制的空间很少,基本 GF 提供的表情就足够了,除非你自己要做一套表情包进去。
唯一有修改价值的,可能就是 cashemotionlistdefine.lub
中的 EMOTION_PACK_PRICE
:
EMOTION_PACK_PRICE = {
-- 21 周年纪念(免费)
[EMOTION_PACK_TYPE.EPT_21ST_ANNIVERSARY] = 0,
-- 2023 中秋节(价格 99 个)
[EMOTION_PACK_TYPE.EPT_2023CHUSEOK] = 99,
-- 2023 感恩节(价格 99 个)
[EMOTION_PACK_TYPE.EPT_2023THXGIVING] = 99
}
EMOTION_PACK_PRICE
定义了每套的价格:玩家需要用多少个 6909 喵杨桃果实
才能换到对应的表情包。
客户端会根据 EMOTION_PACK_PRICE
显示到 UI,同时会检查玩家背包是否有符合数量的 6909 喵杨桃果实
才会发送交易封包给服务端做进一步验证。
注意:交易表情包的关键道具
6909 喵杨桃果实
无法在 lub 中修改成另一个道具、也无法在 Ragexe 中修改,它是固化的交易道具。
除此外的其他配置项其实都没有必要太过关注了,例如 EMOTION_PACK_LIMITED_TIME_START
和 EMOTION_PACK_LIMITED_TIME_END
,客户端压根不会检查这它们,都是在服务端才检查的。
0x50 服务端配置
前面提到的 cashemotionlistdefine.lub
中,在 EMOTION_PACK_TYPE
定义了表情包的 Id 和 Name:
EMOTION_PACK_TYPE = {
EPT_BASIC = 0,
EPT_21ST_ANNIVERSARY = 1,
EPT_2023CHUSEOK = 2,
EPT_2023THXGIVING = 3
}
这些 Id 和 Name,与服务端的配置 db/emote_db.yml
一一关联 :
Body:
# 21 周年纪念(免费)
- Id: 1
Name: EPT_21ST_ANNIVERSARY
Starttime: 2025-08-02
KeepInShop: true
Type: 1
# 2023 中秋节
- Id: 2
Name: EPT_2023CHUSEOK
Starttime: 2023-09-06
Endtime: 2023-10-30
Type: 1
Prices:
# 喵杨桃果实
- Material: Nyangvine_Fruit
Amount: 99
# 2023 感恩节
- Id: 3
Name: EPT_2023THXGIVING
Starttime: 2025-11-01
Type: 1
Prices:
# 喵杨桃果实
- Material: Nyangvine_Fruit
Amount: 99
其格式解读如下:
Starttime
: 表情包的上架日期,如果当前日期还未到,则不能购买(但是商城可以看到)Endtime
: 表情包的下架日期,如果当前日期已经过期,也不能购买(但是商城可以看到)Prices
: 真正决定表情包需要多少个Nyangvine_Fruit 喵杨桃果实
才能交易
需要注意的是:
虽然可以在服务端修改交易物品为其他道具,例如 Jellopy 杰勒比结晶
。
但是前面说过,客户端写死了 喵杨桃果实
,而且会先检查 喵杨桃果实
的数量才会发送交易封包给服务端。
假如服务端修改成与客户端不一样的交易道具,就会导致:
即使玩家身上带了足够数量的 杰勒比结晶
,但是会被客户端检查到没有 喵杨桃果实
而触发交易拦截。
只有玩家身上带了足够数量的 喵杨桃果实
才能绕过客户端检查,但实际交易扣除的却是 杰勒比结晶
。
0x60 使用
玩家通过快捷键 Alt + L
可以唤出新表情商城。
确保身上有足够的 喵杨桃果实
后,选择 Tab 【未购买】兑换想要的表情包:
购买后切换到 Tab 【购买】,鼠标悬浮在任意表情上,会浮现该表情的命令,如下图为 /奸笑_21周年纪念
。
点击表情系统的右上角的 ⭐,打开表情快捷命令配置界面,在任意槽位配置命令,如下图在 Alt + 1
配置了命令。
然后玩家只要按 Alt + 1
快捷键,即可触发新表情: