# sdccq **Repository Path**: gechan11_admin/sdccq ## Basic Information - **Project Name**: sdccq - **Description**: 搜打撤传奇 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-19 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 传奇单机版(Godot 4 复刻) 用 Godot 4 复刻的"傲视遮天"类 Flash 传奇页游**单机版**。 原包为 ESSamp 一键端(Apache+PHP+MySQL 网页注册 + Flash 客户端 + C++ 服务端), 本工程把其中的美术/地图/数值资源解析出来,在 Godot 中重写为纯单机玩法, **已移除全部充值相关内容**(元宝商城、充值页、元宝经济脚本)。 ## 运行方法 1. 安装 [Godot 4.3+](https://godotengine.org/download)(标准版即可,无需 .NET) 2. 用 Godot 打开本目录(选择 `project.godot`) 3. 等待首次资源导入完成,按 F5 运行 操作:左键点击移动 / 点击怪物攻击 / 点击 NPC 对话 / 点击掉落物拾取; 按住 `右键` 持续跑向鼠标(松开即停,鼠标停在人脚下则按最后方向继续); `Ctrl+右键` = 走路姿态的持续移动;按住 `Shift` 跑步(点选移动时), `Tab` 攻击最近目标,`1`-`8` 施放技能栏技能,`K` 技能面板(装配/卸下), `C` 人物属性,`Q` 任务,`B` 背包,`Esc` 关闭对话框。 存档自动保存(20 秒一次 + 退出时),位于 `user://savegame.json`。 ## 内容一览 | 模块 | 说明 | |---|---| | 地图 | 7 张(比奇省/月宫/拯救地狱/王者世界/沙巴克皇宫/房间/擂台),48×32 子格碰撞 | | 玩家 | 新兵套装出生,升级加点、背包、装备武器/衣服(外观叠加) | | 怪物 | 106 种(按 mondef 数值),游走/仇恨/追击 AI,按 mongen 刷怪 | | 战斗 | 攻防结算、经验升级(levelinfo 表)、按 mondrop 概率掉落 | | 技能 | 21 个主动技能(数据驱动,按等级自动习得):单体弹道/范围伤害/ 强力斩/治疗/护盾/随机传送,8 槽技能栏 + 冷却遮罩 + MP 消耗 | | NPC | 商店(7 家,纯金币)、免费传送员、通用奖励 | | 素材 | 人物/怪物 .bin 动画、地图 JPG、物品图标、音效,全部取自原资源包 | ## 目录结构 ``` godot-project/ ├─ project.godot # Godot 4.3 工程(GL Compatibility 渲染) ├─ scenes/main.tscn # 主场景 ├─ src/ # GDScript 源码 │ ├─ main.gd # 主控:地图/刷怪/战斗结算/技能施放/商店/传送/存档 │ ├─ actor_base.gd # 角色基类:.bin 动画播放、八方向、网格移动 │ ├─ player.gd # 玩家:背包/装备/经验/技能(已学/装配/冷却) │ ├─ monster.gd / npc.gd / drop_item.gd │ ├─ skill_lib.gd # 技能规则库:分类/威力/冷却/消耗(读 magics 数据) │ ├─ projectile.gd / fx.gd # 技能投射物与程序化特效 │ ├─ hud.gd # UI:原始客户端面板底图(item/chart/skill/task/shop/talk.jpg)+ 实测网格布局 │ ├─ map_data.gd # .mapo 数据加载 + 背景图 + 碰撞 │ ├─ sprite_lib.gd # .bin 解析 → AtlasTexture 动画(autoload) │ └─ game_data.gd # gamedata.json 加载 + 存档(autoload) ├─ data/ │ ├─ gamedata.json # 物品/怪物/技能/刷怪/NPC/等级/掉落/商店 │ └─ maps/*.json # 每张地图的尺寸与行走网格 ├─ assets/ # 从原资源包导出的子集(cloth/weapon/maps/icons/sound/ui) └─ tools/ # Python 数据管线(见下) ``` ## 数据管线(tools/) 源包路径假定为本目录上级的 `wwwroot/res/090020` 与 `server/gs_data`。 ``` python godot-project/tools/convert_data.py # 策划表(GBK CSV) → data/gamedata.json python godot-project/tools/export_assets.py # 复制所需素材 + 生成 data/maps/*.json python godot-project/tools/check_gd.py # GDScript 静态粗查(无 Godot CLI 时) python godot-project/tools/strip_charging.py # 充值内容清理(已执行过,可重复) ``` ## 资源格式文档(逆向结果) ### .bin 精灵动画(0x67xx 家族) ``` u16 magic = 0x67xx(小端,如 67 08) u8 N + N 字节元信息 头部为【动态长度】,帧数据从 3+N 字节开始 (如 1000.bin N=4 头共 7 字节;1001.bin N=8 头 11 字节) 之后每 12 字节一条帧记录,直到文件尾: i16 x, y 帧在同名 PNG 图集中的矩形位置 i16 w, h 帧尺寸 i16 dx, dy 绘制偏移(原点 = 所在子格左上角;身体中心 x+24、脚底 y+21~32) 【真实布局:文件 = 动作,图集行 = 8 方向】(帧几何/镜像配对实证) 图集行序 = 方向 0南 1西南 2西 3西北 4北 5东北 6东 7东南(行宽 33/27/18/26/33/26/18/27, 满足镜像配对 1↔7、2↔6、3↔5;武器 dx 在行 0-3 为正、4-7 为负 = 换手)。行内文件顺序 = 帧序。 玩家 {part}{动作0-7}.bin(cloth/1000站 1001走 1002跑 1003受击 1004攻击 1005施法 1006特殊 1007死亡, cloth 与 weapon 同构)。怪物 {res_id}0{动作}.bin,仅后缀 {0站 1走 3受击 4攻 6特 7死}。 NPC {img}00.bin = 站立(1 行 4 帧朝南);{img}.bin = 行走(8 行 6 帧,多数 NPC 有)。 注意:个别文件魔数 0x99xx / 0xd199(另一种压缩变体),运行时解析失败即整块跳过。 ``` ### .mapo 地图 ``` 头 10 字节:u16 magic, 大格列数, 大格行数, 子格列数(=大格×2), 子格行数(=大格×2) 子格 48×32 像素;坐标 = 大格×2(服务端坐标均为子格坐标) 记录 = [u8 类型][u32 长度][数据],类型 0 为 RLE 行走掩码: RLE 为 (值, 数量) 字节对,行主序铺满全部子格(解码数 == 子格总数,此为校验点); 0=可行走,1=阻挡 同名 JPG 为整图背景(最大 4800×3200,Godot 直接导入) ``` ### 技能系统(skill_lib.gd) ``` magics 字段:effect/effect_type 决定分类,power/maxpower=威力, spell=MP 消耗(×10 后封顶 400,表中有 spell=10000 的脏数据), delay=冷却帧(/60 秒,下限 0.6s),needtrain1=学习等级(升级自动习得) 分类映射(单机实现,不可实现的召唤/隐身/困魔等剔除): eff19→tele eff29/11/12→shield eff2/27+et2(501/512)→heal et0+power>0→melee id408/414→aoe et1/7/8(+et2 power>0)→single et4/5/6→aoe 伤害公式:power_scale(power→maxpower 随等级插值,×0.35) × magic_power(2000+250×(lv-1)+装备mac2) 平砍也乘等级系数(1.5+0.0625×lv)以适配本包私服膨胀数值(怪血 2万~19万) 图标:assets/icons/skill/skill{id}.png,原包 33 个技能图标全量导出 ``` ### 策划表(server/gs_data/*.csv,GBK 编码) - `itemdef.csv` 45 列:icon=第4列, stdmod=第8列, shape=第9列, looks=第14列, duramax/ac/ac2/dc/dc2 从第 16 列起。**武器/衣服的 looks 全为 0**, 外观按经典 mir 规则 `100 + shape - 1` 换算(本包 shape 全为 1 → 部件 1000-1007)。 - `mondef.csv`:hp/ac/dc/dcmax/attack_spd/walk_spd/appr(外形)/ai 等 - `npcshop/*.csv`:`页码,位置,物品名,数量,价格,价格类型`(0=金币,其余为充值货币,已剔除) - 服务端所有坐标(mongen/npcgen/出生点)都是子格坐标,与 .mapo 掩码直接对应 ## 充值清理报告(strip_charging.py) - **删除 111 个文件**:元宝商城表 `vcoinshop.csv`(两份)、元宝商店/兑换/礼包/商铺/绑定元宝/ 赌博/抽奖/元宝领取等脚本(含根目录第二套 `script/` 里调用 `add_vcoin/sub_vcoin/get_vcoin` API 的全部脚本)、元宝进入副本脚本(fub/)、充值道具脚本(item10172 等)、 充值中心页 `jinchar.php`、含充值入口的 `charlist.php`、PHP eaccelerator 缓存中编译进去的旧充值页碎片 - **清洗 6 个文件**:5 个门户网页(删除充值横幅/跑马灯/链接/文案)与 `GameServer.ini`(删除 `npc_buy_vcoin_*`/`vcoin_mul`/`vcoin_fresh_time`/`CHARGEKEY` 等配置行) - **保留**:`script/player.lc|lua`、`server/.../script/player.lc`(玩家 API 定义库,含全量 玩家函数,删除会破坏所有其余脚本;其中 vcoin 函数已无任何调用方); 22 个仅文案提到"元宝"的玩法脚本(传送/BOSS/任务公告); `MySQL5/` 下 `tab_tradevc` 等表结构 .frm(二进制 schema,非功能代码,删除会损坏 MySQL 数据目录) - Godot 工程与数据 JSON 中无任何充值引用(已全量扫描验证) ## 已知限制 - 技能仅实现主动战斗类(21 个);召唤/隐身/困魔咒等状态召唤类剔除(见 skill_lib.gd EXCLUDED) - 技能特效为程序化绘制(fx.gd),未逆向 effect/*.bin 特效素材(格式不同) - 个别怪物侧向帧素材缺失(4xxx 段),右侧由方向镜像补 - 怪物外形中约 20 个文件为未逆向的 0x99xx 压缩变体,运行时自动跳过 - 商店/掉落只保留金币经济;元宝已从数据层移除