@yangrunchi/a_6 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/A5_/346/270/270/346/210/217/345/256/242/346/210/267/347/253/257/346/250/241/345/235/227/345/274/200/345/217/221/350/247/204/350/214/203.md +275 -0
- package/AutoCfg/A6_generate-tablemgr.js +696 -0
- package/AutoCfg/A6_template_tablemgr.txt +37 -0
- package/AutoCfg/csvcfg.js +417 -0
- package/AutoCode/A1_996_config.json +5 -0
- package/AutoCode/A2_generate-panel.js +141 -0
- package/AutoCode/A3_watcher.js +132 -0
- package/AutoCode/A4_template_1.txt +31 -0
- package/AutoCode/A4_template_2.txt +30 -0
- package/AutoNetMsg/A4_exclude_modules.json +9 -0
- package/AutoNetMsg/A4_template_3.txt +30 -0
- package/AutoNetMsg/A4_template_4.txt +25 -0
- package/AutoNetMsg/A5_generate-funcdata.js +1021 -0
- package/AutoNetMsg/A5_sync-netmsg.js +98 -0
- package/SVNUpdate/svn_996.js +20 -0
- package/Tools/install-keys.js +117 -0
- package/Tools/project-keys.json +24 -0
- package/Tools/svn-utils.js +126 -0
- package/Tools/uninstall-keys.js +65 -0
- package/bat_manager/index.html +1248 -0
- package/bat_manager/local_scripts.json +42 -0
- package/bat_manager/run-server.bat +4 -0
- package/bat_manager/server.js +498 -0
- package/bat_manager/users.json +7 -0
- package/cli.js +29 -0
- package/index.js +9 -0
- package/package.json +47 -0
- package/run-autoCode.bat +5 -0
- package/run-client.bat +14 -0
- package/run-csvcfg.bat +4 -0
- package/run-svn.bat +4 -0
- package/run-sync.bat +4 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
|
|
2
|
+
# -- 作者: 杨润池
|
|
3
|
+
# -- 日期: 2026年05月21日
|
|
4
|
+
# -- 版本: 1.3
|
|
5
|
+
# -- 描述: 游戏客户端模块开发规范(v1.0)
|
|
6
|
+
|
|
7
|
+
## 📌 目录 (ctrl+单击————可跳转)
|
|
8
|
+
- [1. UI 资源规范](#1-ui-资源规范)
|
|
9
|
+
- [2. UI 模版规范](#2-ui-模版规范)
|
|
10
|
+
- [3. 配置来源(策划)](#3-配置来源策划)
|
|
11
|
+
- [4. 数据来源(后端)](#4-数据来源后端)
|
|
12
|
+
- [5. 数据交互](#5-数据交互)
|
|
13
|
+
- [6. 红点](#6-红点)
|
|
14
|
+
- [7. 启动游戏](#7-启动游戏)
|
|
15
|
+
- [8. 开发效率工具](#8-开发效率工具)
|
|
16
|
+
|
|
17
|
+
## 1. UI 资源规范
|
|
18
|
+
|
|
19
|
+
目标:按工程和模块划分目录,避免资源命名冲突。
|
|
20
|
+
|
|
21
|
+
目录结构:
|
|
22
|
+
dev/res/
|
|
23
|
+
├── ui/
|
|
24
|
+
│ ├── {工程名}_{模块名}/ -- 例如:ssrgame_bag/
|
|
25
|
+
│ └── ...
|
|
26
|
+
├── fonts/
|
|
27
|
+
│ ├── {工程名}_{字体名}/ -- 例如:ssrgame_fangzheng/
|
|
28
|
+
│ └── ...
|
|
29
|
+
命名规则:
|
|
30
|
+
格式:{工程名}_{模块名}、{工程名}_{字体名}
|
|
31
|
+
要求:全小写,单词间用下划线 _ 分隔
|
|
32
|
+
-------------------------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
## 2. UI 模版规范
|
|
36
|
+
|
|
37
|
+
目标:区分 UI 与脚本对象,强制文件后缀,支持自动生成布局文件。
|
|
38
|
+
目录结构
|
|
39
|
+
dev/GUIExport/
|
|
40
|
+
└── {模块文件夹}/
|
|
41
|
+
├── Panel/ -- 存放多个 UI.lua 文件(可选)
|
|
42
|
+
├── Items/ -- 存放 Item 文件,命名以 Item.lua 结尾(可选)
|
|
43
|
+
└── {XXX}UI.lua -- UI 文件必须以 UI.lua 结尾
|
|
44
|
+
命名示例
|
|
45
|
+
类型 命名格式 示例
|
|
46
|
+
普通面板 UI{XXX}.lua UIBagPanel.lua
|
|
47
|
+
主面板 UIMain{XXX}.lua UIMainBag.lua
|
|
48
|
+
子面板 UISub{XXX}.lua UISubBag.lua
|
|
49
|
+
Item {XXX}Item.lua 无
|
|
50
|
+
|
|
51
|
+
自动生成映射
|
|
52
|
+
源文件 自动生成文件
|
|
53
|
+
dev/GUIExport/bag/UIBag.lua dev/GUILayout/bag/UIBagPanel.lua
|
|
54
|
+
dev/GUIExport/bag/UIMainBag.lua dev/GUILayout/bag/UIMainBagPanel.lua
|
|
55
|
+
dev/GUIExport/bag/UISubBag.lua dev/GUILayout/bag/UISubBagPanel.lua
|
|
56
|
+
|
|
57
|
+
若以UI{XXX}.lua后缀结尾 --> 则首次自动生成GUILayout 目录下的 lua 文件。
|
|
58
|
+
|
|
59
|
+
模版类型 —— 区分单独面板和子面板,减少重复代码
|
|
60
|
+
|
|
61
|
+
类型一:单独面板(不依赖一级背景框)
|
|
62
|
+
适用:UI{XXX}.lua、UIMain{XXX}.lua
|
|
63
|
+
模版:A4_template_1.txt
|
|
64
|
+
```lua
|
|
65
|
+
ssrObjCfg.Wing = {
|
|
66
|
+
ID = 41600,
|
|
67
|
+
|
|
68
|
+
OBJ_PATH = "GUILayout/R/UIWingPanel",
|
|
69
|
+
UI_PATH = "R/WingUI",
|
|
70
|
+
UI_Name = "翅膀"
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
-- 打开方式
|
|
74
|
+
ssrUIManager:OPEN(ssrObjCfg.Wing)
|
|
75
|
+
```
|
|
76
|
+
#### 类型二:子面板(依赖通用一级背景框 ComOneBgOBJ)
|
|
77
|
+
- **适用**:UISub{XXX}.lua
|
|
78
|
+
- **模版**:A4_template_2.txt
|
|
79
|
+
- **目的**:
|
|
80
|
+
依赖通用一级背景框的模版 ,就是把子界面拼接组装到 ComOneBgOBJ 里面,更灵活些。
|
|
81
|
+
- **注意事项**:
|
|
82
|
+
1、通用一级框 ComOneBgOBJ , 包含 遮罩 背景 关闭 问号 页签(有无都支持) 红点 等,能用一级背景框,尽量使用。
|
|
83
|
+
|
|
84
|
+
2、子界面 【垂直水平居中】 推荐使用节点
|
|
85
|
+
第一种:基础容器 + 节点 —— 【N多元素 放2级节点里面】
|
|
86
|
+
1级 基础容器 描点(0.5,0.5) 坐标(50%,50% ) 尺寸(100%,100%)
|
|
87
|
+
2级 节点 描点(0,0) 坐标(50%,50% ) 尺寸(0,0)
|
|
88
|
+
|
|
89
|
+
第二种:基础容器 + 基础容器 —— 【N多元素 放2级基础容器里面】
|
|
90
|
+
1级 基础容器 描点(0.5,0.5) 坐标(50%,50% ) 尺寸(100%,100%)
|
|
91
|
+
2级 基础容器 描点(0.5,0.5) 坐标(50%,50% ) 尺寸(1136,640)
|
|
92
|
+
|
|
93
|
+
无分页模式:
|
|
94
|
+
-----------------------------------------------------------
|
|
95
|
+
```lua
|
|
96
|
+
--邮件
|
|
97
|
+
ssrObjCfg.Mail = {
|
|
98
|
+
ID = 96000,
|
|
99
|
+
OBJ_PATH = "GUILayout/social/mail/UISubMailPanel",
|
|
100
|
+
UI_PATH = "social/mail/UISubMail",
|
|
101
|
+
UI_Name = "邮件"
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
--无页签 例如{XXX}NoPage
|
|
105
|
+
ssrObjCfg.MailNoPage = {
|
|
106
|
+
ID = 90205,
|
|
107
|
+
OBJ_ORDER = { ssrObjCfg.Mail },
|
|
108
|
+
--OBJ_DESCRIBE = { "41400" }, 没有页签注释
|
|
109
|
+
OBJ_TITLE = { "96000" },
|
|
110
|
+
OBJ_PATH = "GUILayout/R/Com/ComOneBgOBJ",
|
|
111
|
+
UI_PATH = "R/Com/ComOneBgUI",
|
|
112
|
+
}
|
|
113
|
+
-- 打开方式
|
|
114
|
+
ssrUIManager:OPEN(ssrObjCfg.Mail)
|
|
115
|
+
```
|
|
116
|
+
------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
**有分页模式**:
|
|
119
|
+
2.2.1 注册子界面
|
|
120
|
+
```lua
|
|
121
|
+
--强化子界面
|
|
122
|
+
ssrObjCfg.EquipQH = {
|
|
123
|
+
ID = 1049,
|
|
124
|
+
OBJ_PATH = "GUILayout/R/Equip/UISubEquipQHPanel",
|
|
125
|
+
UI_PATH = "R/Equip/UISubEquipQH",
|
|
126
|
+
UI_Name = "强化"
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
--升星子界面
|
|
130
|
+
ssrObjCfg.EquipSX = {
|
|
131
|
+
ID = 1050,
|
|
132
|
+
OBJ_PATH = "GUILayout/R/Equip/UISubEquipSXPanel",
|
|
133
|
+
UI_PATH = "R/Equip/UISubEquipSX",
|
|
134
|
+
UI_Name = "升星"
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
--洗练子界面
|
|
138
|
+
ssrObjCfg.EquipXL = {
|
|
139
|
+
ID = 1051,
|
|
140
|
+
OBJ_PATH = "GUILayout/R/Equip/UISubEquipXLPanel",
|
|
141
|
+
UI_PATH = "R/Equip/UISubEquipXL",
|
|
142
|
+
UI_Name = "洗练"
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
--镶嵌子界面
|
|
146
|
+
ssrObjCfg.EquipXQ = {
|
|
147
|
+
ID = 1052,
|
|
148
|
+
OBJ_PATH = "GUILayout/R/Equip/UISubEquipXQPanel",
|
|
149
|
+
UI_PATH = "R/Equip/UISubEquipXQ",
|
|
150
|
+
UI_Name = "镶嵌"
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
------------------------ 子界面 end ------------------------
|
|
154
|
+
|
|
155
|
+
2.2.2 注册主界面
|
|
156
|
+
|
|
157
|
+
--有页签 例如 {XXX}Page
|
|
158
|
+
--例如:装备 强化、升星、洗练、镶嵌
|
|
159
|
+
ssrObjCfg.EquipPage = {
|
|
160
|
+
ID = 90107,
|
|
161
|
+
|
|
162
|
+
OBJ_ORDER = { ssrObjCfg.EquipQH, ssrObjCfg.EquipSX, ssrObjCfg.EquipXQ, ssrObjCfg.EquipXL },
|
|
163
|
+
OBJ_DESCRIBE = { "强化", "升星", "镶嵌", "洗炼" }, -- OBJ_DESCRIBE 数字 按钮名字是图片 ,否则按钮名字是中文
|
|
164
|
+
OBJ_TITLE = { "1049", "1049", "1049", "1049" },
|
|
165
|
+
|
|
166
|
+
OBJ_PATH = "GUILayout/R/Com/ComOneBgOBJ",
|
|
167
|
+
UI_PATH = "R/Com/ComOneBgUI",
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
-- 打开方式(自动选中对应页签)
|
|
171
|
+
--打开强化界面 且会选择第一个页签 ssrUIManager:OPEN(ssrObjCfg.EquipQH)
|
|
172
|
+
--打开升星界面 且会选择第二个页签 ssrUIManager:OPEN(ssrObjCfg.EquipSX)
|
|
173
|
+
--打开镶嵌界面 且会选择第三个页签 ssrUIManager:OPEN(ssrObjCfg.EquipXQ)
|
|
174
|
+
--打开洗炼界面 且会选择第四个页签 ssrUIManager:OPEN(ssrObjCfg.EquipXL)
|
|
175
|
+
|
|
176
|
+
---------------------------------------------------------------------------------
|
|
177
|
+
```
|
|
178
|
+
本地生成方式1:手动执行命令可自动生成(已集成VSCode任务【Run AutoCode】,可自定义快捷键)
|
|
179
|
+
本地生成方式2:http://localhost:8080/ 进入地址执行 (步骤: H:\NiePanChuanQi\Tools\Tool_other\bat_manager\sm.md)
|
|
180
|
+
|
|
181
|
+
## 3. 配置来源(策划)
|
|
182
|
+
|
|
183
|
+
源文件: Project\MirServer\功能模块表
|
|
184
|
+
|
|
185
|
+
后端生成文件:Project\MirServer\Mir200\Envir\QuestDiary\cfgcsv —— 自动生成自动提交SVN
|
|
186
|
+
前端生成文件:Project\996M2_Client\dev\GUILayout\ssrgame\csvcfg —— 自动生成自动提交SVN
|
|
187
|
+
|
|
188
|
+
本地生成方式:策划提交配置后。手动执行命令可自动生成(已集成VSCode任务【Run Table Client】,可自定义快捷键)
|
|
189
|
+
远程生成方式:http://10.13.0.26:8080/ 进入地址执行
|
|
190
|
+
|
|
191
|
+
## 4. 数据来源(后端)
|
|
192
|
+
|
|
193
|
+
源文件1:Project\NetMsg
|
|
194
|
+
源文件2:Project\MirServer\Mir200\Envir\QuestDiary\net\NetMsgCfg.lua
|
|
195
|
+
|
|
196
|
+
前端生成文件:Project\996M2_Client\dev\GUILayout\ssrgame\net\NetMsgCfg.lua
|
|
197
|
+
前端生成目录下所有文件:Project\996M2_Client\dev\GUILayout\ssrgame\funcData
|
|
198
|
+
前端生成文件:Project\996M2_Client\dev\GUILayout\ssrgame\mgr\FuncDataMgr.lua
|
|
199
|
+
|
|
200
|
+
本地生成方式:后端提交协议(源文件)后,手动执行命令可自动生成(已集成VSCode任务【Run NetMsg Sync】,可自定义快捷键)
|
|
201
|
+
远程生成方式:http://10.13.0.26:8080/ 进入地址执行
|
|
202
|
+
|
|
203
|
+
## 5. 数据交互
|
|
204
|
+
|
|
205
|
+
dev/GUILayout/ssrgame/funcData 存放协议数据类 【Run NetMsg Sync】 —— 自动生成自动提交SVN
|
|
206
|
+
dev/GUILayout/ssrgame/mgr/FuncDataMgr.lua 注册协议类名 【Run NetMsg Sync】 —— 自动生成自动提交SVN
|
|
207
|
+
**例如:**
|
|
208
|
+
```lua
|
|
209
|
+
-- 第一种:以第一列作为 Key
|
|
210
|
+
local curCfg = ssrTableMgr.cfg_item_add[道具ID]
|
|
211
|
+
local curCfg = ssrTableMgr.cfg_item[道具ID]
|
|
212
|
+
local curCfg = ssrTableMgr.cfg_equip[装备ID]
|
|
213
|
+
|
|
214
|
+
-- 第二种 table的任意列 作为key 如下可获取
|
|
215
|
+
表 第一列和第二列数据一样
|
|
216
|
+
local curCfg = ssrTableMgr:GetCfg(table, 字段名, 字段名的值)
|
|
217
|
+
|
|
218
|
+
-- 第三种 table的任意列 作为key 如下可获取 字段组的配置且可排序
|
|
219
|
+
|
|
220
|
+
local groupCfgs = ssrTableMgr:GetCfgs(table, 字段名,字段名的值,排序)
|
|
221
|
+
|
|
222
|
+
-- 分组配置:当 fieldValue == 大于 0 时,获取单个table配置 。且 可选择 排序
|
|
223
|
+
local groupCfgs = ssrTableMgr:GetCfgs(ssrTableMgr.cfg_new_gongming, "type", 1)
|
|
224
|
+
|
|
225
|
+
-- 所有配置:当 fieldValue == -1 时,获取所有配置(单个table) 。通过Id分组 ,且 可选择 排序
|
|
226
|
+
local groupCfgs = ssrTableMgr:GetCfgs(ssrTableMgr.cfg_new_chenghao, "id", -1, {"-id"})
|
|
227
|
+
-- 筛选配置:当 fieldValue == -2 时,筛选所有有值的配置(嵌套table)。 通过Id分组 ,且 可选择 排序
|
|
228
|
+
local groupCfgs = ssrTableMgr:GetCfgs(ssrTableMgr.cfg_new_chenghao, "id", -2, {"+id"})
|
|
229
|
+
-- 分组配置:当 fieldValue == -3 时。获取所有非空值配置(嵌套table),通过Id分组 把数据拆分成 多个table, 且 可选择 排序
|
|
230
|
+
local groupCfgs = ssrTableMgr:GetCfgs(ssrTableMgr.cfg_new_chenghao, "id", -3, {"+id"})
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
dev/GUILayout/ssrgame/mgr/TableMgr.lua 注册配置表名 【Run Table Client】 —— 自动生成自动提交SVN
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
## 6. 红点
|
|
237
|
+
### 红点注册方式
|
|
238
|
+
```lua
|
|
239
|
+
-- 主界面红点注册
|
|
240
|
+
ssrRedMgr:Register(主界面红点对象, ssrObjCfg.NiepanZB.ID, "mianBtnRed")
|
|
241
|
+
|
|
242
|
+
-- 通用页签红点注册
|
|
243
|
+
ssrRedMgr:Register(页签红点对象, ssrObjCfg.NiepanZB.ID)
|
|
244
|
+
|
|
245
|
+
-- 设置主界面红点和页签红点(模块ID,状态)
|
|
246
|
+
ssrRedMgr:SetRed(ssrObjCfg.NiepanZB.ID, isRed)
|
|
247
|
+
|
|
248
|
+
-- 界面内红点注册(按钮、列表等)
|
|
249
|
+
ssrRedMgr:Register(红点对象1, 模块ID, 参数1)
|
|
250
|
+
ssrRedMgr:Register(红点对象2, 模块ID, 参数2)
|
|
251
|
+
|
|
252
|
+
-- 设置界面内红点(模块ID,状态,参数)
|
|
253
|
+
ssrRedMgr:SetRed(ssrObjCfg.NiepanZB.ID, isRed, 参数1)
|
|
254
|
+
ssrRedMgr:SetRed(ssrObjCfg.NiepanZB.ID, isRed, 参数2)
|
|
255
|
+
|
|
256
|
+
-- 注意:参数格式为 NiepanData、XiLianData、ChenghaoData 等 Vo 对象
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 7. 启动游戏
|
|
261
|
+
|
|
262
|
+
已集成VSCode任务【Run 996M2 Client】,可自定义快捷键 默认使用启动【Ctrl+F6】
|
|
263
|
+
|
|
264
|
+
## 8. 开发效率工具
|
|
265
|
+
|
|
266
|
+
### 方式一:VSCode 任务集成 + 快捷键安装脚本
|
|
267
|
+
|
|
268
|
+
**配置文件:** `dev/.vscode/project-keys.json`
|
|
269
|
+
**启用快捷键:终端执行** `node a_tools/a_node/Tools/install-keys.js`
|
|
270
|
+
**禁用快捷键:终端执行** `node a_tools/a_node/Tools/uninstall-keys.js`
|
|
271
|
+
`修改 project-keys.json 后,必须重新执行【启用快捷键】`
|
|
272
|
+
|
|
273
|
+
### 方式二:远程执行脚本(适合非 VSCode 用户)无需安装 VSCode,打开浏览器即可使用
|
|
274
|
+
|
|
275
|
+
### 远程地址:http://10.13.0.26:8080/
|