协议命令参考

← 返回首页
本页内容整理自 newserv 项目的 docs/ 目录,覆盖 PSOBB 客户端与服务器之间的网络协议及游戏内子命令(0x60/0x62/0x6C/0x6D 载荷)两部分。操作码与处理函数名保持英文,以便与源码/抓包记录对照。

PSO 协议命令参考

本文档描述 PSO 客户端与 newserv 服务器之间使用的网络协议命令(操作码)。

概述

命令由 1 字节操作码(0x00–0xFF)标识。不同游戏版本的命令处理方式不同。服务器支持 14 个游戏版本:

列号版本
1PC_PATCH
2BB_PATCH
3DC_NTE
4DC_112000
5DCV1
6DCV2
7PC_NTE
8PC
9GCNTE
10GC
11EP3TE
12EP3
13XB
14BB

命令头格式

  • DC/GC/XB(PSOCommandHeaderDCV3): 4 字节 — command(1)、flag(1)、size(2)
  • PC(PSOCommandHeaderPC): 4 字节 — size(2)、command(1)、flag(1)
  • BB(PSOCommandHeaderBB): 8 字节 — size(2)、command(2)、flag(4)

源码命名规范

  • C_ 前缀:客户端→服务器(客户端发送)
  • S_ 前缀:服务器→客户端(服务器发送)
  • SC_ 前缀:双向(两端均可发送)

补丁服务器命令(仅 PC_PATCH / BB_PATCH)

操作码方向名称说明
0x02S→CServerInit_Patch补丁连接的服务器初始化
0x02C→S(响应)客户端确认补丁服务器初始化
0x04S→C(请求登录)服务器请求用户登录信息
0x04C→SLogin_Patch客户端发送用户名、密码、邮箱
0x06S→COpenFile_Patch打开文件进行补丁
0x07S→CWriteFileHeader_Patch写入补丁文件头
0x08S→CCloseCurrentFile_Patch关闭当前补丁文件
0x09S→CEnterDirectory_Patch进入补丁目录
0x0CS→CFileChecksumRequest_Patch向客户端请求文件校验和
0x0FC→SFileInformation_Patch客户端回复文件校验和/大小
0x10C→S(所有校验和完成)客户端完成所有校验和响应
0x11S→CStartFileDownloads_Patch开始文件下载

登录与认证命令

操作码方向处理函数版本说明
0x02/0x17S→C—DC/PC/V3服务器初始化(加密设置)
0x03S→C—BBBB 服务器初始化
0x05C→Son_05_XBXBXbox 断开连接(退出游戏)
0x05C→Son_ignored其他版本忽略(加密确认)
0x88C→Son_88_DCNTEDC_NTEDC NTE 登录
0x8BC→Son_8B_DCNTEDC_NTEDC NTE 扩展登录
0x90C→Son_90_DCDCDC V1 登录
0x91S→C—DC/PC/V3服务器初始化(备用)
0x92C→Son_92_DCDCDC V1 注册
0x93C→Son_93_DCDCDC V1 含硬件信息的登录
0x93C→Son_93_BBBBBB 登录(多种子格式)
0x9AC→Son_9ADC/PC/V3使用 V1 序列号 + V2 序列号登录
0x9BS→C—全部服务器初始化(备用)
0x9CC→Son_9CDC/PC/V3/BB注册
0x9DC→Son_9D_9EDC/PC/GC登录(DC/PC/GC 格式)
0x9EC→Son_9D_9EPC/GC登录(扩展格式)
0x9EC→Son_9E_XBXBXbox 登录
0xDBC→Son_DB_V3V3账号验证(V3)

导航与菜单命令

操作码方向处理函数说明
0x07S→C—菜单项列表
0x08C→Son_08_E6请求游戏列表
0x09C→Son_09请求菜单项信息(任务/游戏/大厅详情)
0x0ES→C—旧版加入游戏
0x10C→Son_10菜单选择(主菜单、游戏列表、任务列表等)
0x1FC→Son_1F请求信息菜单
0x84C→Son_84大厅选择
0xA0C→Son_A0切换飞船(返回飞船选择)
0xA1C→Son_A1切换区块(同切换飞船处理)
0xD6C→Son_D6_V3请求信息板 / 欢迎消息(V3)
0xE6C→Son_08_E6请求观战队伍列表(BB)

大厅与玩家管理

操作码方向处理函数说明
0x61C→Son_61_98发送玩家数据(角色数据)
0x64S→C—加入游戏通知
0x65/0x67/0x68S→C—加入大厅通知
0x66/0x69S→C—离开大厅通知
0x83S→C—大厅列表
0x88S→C—箭头更新(大厅箭头)
0x95S→C—设置公会卡号
0x96C→Son_96角色存档信息
0x98C→Son_61_98离开游戏(发送玩家数据)
0xC1S→C—创建游戏

游戏命令与子命令

操作码方向处理函数说明
0x60C→S/S→Con_6x_C9_CB游戏子命令(广播给房间所有人)
0x62C→S/S→Con_6x_C9_CB游戏子命令(发给指定玩家)
0x6CC→S/S→Con_6x_C9_CB扩展游戏子命令(广播)
0x6DC→S/S→Con_6x_C9_CB扩展游戏子命令(发给指定玩家)
0xC9C→Son_6x_C9_CB / on_C9_XB游戏子命令(EP3/XB 变体)
0xCBC→Son_6x_C9_CB游戏子命令(EP3 变体)
0x30C→Son_30创建游戏

聊天与通信

操作码方向处理函数说明
0x01S→C—向客户端发送文本消息
0x06C→Son_06聊天消息 / 聊天命令
0x11S→C—系统消息(BB 中滚动显示)
0x1AS→C—消息框
0x40C→S/S→C—公会卡搜索
0xB0S→C—文本消息(滚动)
0xC0C→Son_C0广播符号聊天
0xC1C→Son_C1_PC / on_C1_BB创建游戏(PC/BB)
0xC2C→Son_C2符号聊天
0xD8S→C/C→Son_D8信息板

任务系统

操作码方向处理函数说明
0xA2C→Son_A2请求任务列表
0xA2/0xA4S→C—任务菜单条目
0x44/0xA6S→C—打开任务文件
0x13/0xA7C→Son_13_A7_V3_V4任务文件写入确认
0xA9C→Son_A9取消任务选择
0xAAC→Son_AA更新任务统计信息
0xABS→C—调用任务标签
0xACC→Son_AC_V3_BB任务文件已加载 / 可加入任务就绪
0xB2S→C—执行代码(向客户端发送函数)
0xB3C→Son_B3执行代码结果(函数调用响应)

服务器系统命令

操作码方向处理函数说明
0x04S→C—更新客户端配置
0x19S→C—重连(重定向到另一台服务器)
0x1DC→Son_1DPing 响应
0xB1C→Son_B1请求服务器时间
0xB1S→C—服务器时间响应
0xDES→C—稀有怪物列表(BB)
0xEFS→C—设置关机命令(BB)

BB 专属命令

操作码方向处理函数说明
0xDCC→Son_DC_BB请求公会卡数据
0xDC (01)S→C—公会卡文件头
0xDC (02)S→C—公会卡文件分块
0xDFC→Son_DF_BB挑战模式设置
0xE0C→Son_E0_BB请求系统文件
0xE1S→C—系统文件已创建通知
0xE2C→Son_E2_BB同步系统文件
0xE3C→Son_E3_BB玩家预览请求 / 选择角色
0xE4S→C—批准玩家选择 / 玩家预览
0xE5C→Son_E5_BB创建角色
0xE6S→C—客户端初始化(BB)
0xE7C→Son_E7_BB同步存档文件
0xE8C→Son_E8_BB公会卡操作(添加/删除/备注/排序)
0xEAC→Son_EA_BB团队命令(创建/解散/添加/移除成员等)
0xEBC→Son_EB_BB流文件操作(索引/分块)
0xECC→Son_EC_BB离开角色选择
0xEDC→Son_ED_BB更新设置(选项/符号聊天/快捷语/按键配置/手柄配置/技能菜单/自定义/挑战记录)

BB 团队子命令(0xEA)

子操作码方向说明
0x01EAC→S创建团队
0x03EAC→S添加团队成员
0x05EAC→S移除团队成员
0x09EAS→C团队成员列表
0x0FEAC→S设置团队旗帜
0x11EAC→S更改团队成员权限等级
0x12EAS→C更新团队成员资格
0x13EAS→C玩家的团队信息(所有大厅客户端)
0x15EAS→C玩家的团队信息(单个客户端)
0x18EAS→C团队内部排名
0x19EAS→C团队奖励列表
0x1AEAS→C团队奖励列表(已购买)
0x1CEAS→C跨团队排名
0x1DEAS→C更新团队奖励标志
0x1EEAC→S重命名团队

第三章节(卡牌对战)命令

操作码方向处理函数说明
0xB7C→Son_B7_Ep3请求 EP3 排名/音乐更新
0xB7S→C—排名更新
0xB9S→C—媒体更新(地图、卡牌定义等)
0xBAC→Son_BA_Ep3Meseta 交易(在商店买/卖卡牌)
0xBAS→C—Meseta 交易结果
0xBBS→C—锦标赛观战队伍列表
0xCAC→Son_CA_Ep3卡牌对战服务器数据(游戏命令)
0xCCS→C—确认锦标赛参赛
0xDCC→Son_DC_Ep3请求锦标赛列表(EP3)
0xE0S→C—锦标赛列表
0xE1S→C—游戏信息
0xE2C→Son_E2_Ep3锦标赛操作(列表/查询/参赛/退出)
0xE2S→C—锦标赛参赛列表
0xE3S→C—锦标赛游戏详情
0xE4C→Son_E4_Ep3卡牌对战桌面状态更新
0xE4S→C—卡牌对战桌面状态
0xE5C→Son_E5_Ep3卡牌对战桌面确认
0xE5S→C—卡牌对战桌面确认响应
0xE6C→S—加入观战队伍
0xE7C→S—创建观战队伍
0xE8S→C—加入观战队伍响应
0xE9S→C—离开观战队伍
0xEAS→C—限时消息框
0xEEC→Son_EE_Ep3卡牌交易操作
0xEES→C—卡牌交易状态推进 / 完成
0xEFC→Son_EF_Ep3卡牌拍卖
0xEFS→C—开始卡牌拍卖

GC/Xbox 专属命令

操作码方向处理函数说明
0xD7C→Son_D7_GCGBA 游戏文件请求(GC)
0xD0C→Son_D0_V3_BB选择搜索条件更新(V3/BB)
0xD2C→Son_D2_V3_BB选择搜索请求(V3/BB)
0xD4C→Son_D4_V3_BB选择搜索结果选定(V3/BB)

DC NTE 专属命令

操作码方向处理函数说明
0x88C→Son_88_DCNTE登录
0x8AC→Son_8A连接信息
0x8BC→Son_8B_DCNTE扩展登录
0x8EC→Son_8E_DCNTE切换飞船(映射到 0xA0)
0x8FC→Son_8F_DCNTE切换区块(映射到 0xA1)

物品与商店命令

操作码方向说明
0x24S→C兑换秘密抽奖券结果(BB)
0x25S→CGallon 方案结果(BB)

游戏子命令参考(0x60/0x62/0x6C/0x6D)

游戏子命令承载在主协议命令 0x60(广播)、0x62(发给指定玩家)、0x6C(扩展广播)、0x6D(扩展发给指定玩家)中。每个子命令有 1 字节的子操作码(0x00–0xFF)。

子命令头格式

标准头:4 字节 — subcommand(1)、size_in_dwords(1)、data... 扩展头(size=0):8 字节 — subcommand(1)、0x00、extended_size(4)、data...

版本映射

每个子命令有三列操作码:

  • DC NTE — Dreamcast 网络试玩版
  • DC 11/2000 — Dreamcast 原型(2000 年 11 月)
  • Final — 所有其他版本(DCV1、DCV2、PC、GC、EP3、XB、BB)

NONE 表示该子命令在对应版本中不存在。


玩家移动与位置

子操作码处理函数说明
6x1Fon_change_floor切换楼层(含传送/传送管道过渡)
6x20on_movement_xyz_with_floor设置含楼层的位置(SetPosition)
6x21on_change_floor切换楼层(备用)
6x24on_movement_xyz将玩家传送至 XYZ 坐标
6x3Eon_movement_xyz_with_floor停在指定位置
6x3Fon_movement_xyz_with_floor设置位置(备用)
6x40on_movement_xz步行到指定位置(XZ 平面)
6x41on_movement_xz跑向指定位置
6x42on_movement_xz跑向指定位置(备用)
6x55on_movement_xyz地图内传送
6x56on_movement_xyz设置玩家位置和朝向
6x94on_warp传送到另一区域

玩家状态与动画

子操作码处理函数说明
6x02forward_subcommand_m(基础转发)
6x03forward_subcommand_m(基础转发)
6x04forward_subcommand_m(基础转发)
6x05on_switch_state_changed开关状态改变
6x0Con_received_condition受到负面状态(状态异常)
6x0Eforward (entity_id_transcode)清除负面状态效果
6x17on_set_entity_pos_and_angle设置实体位置和朝向
6x23on_set_player_visible设置玩家可见性
6x2Fon_change_hp改变玩家 HP
6x30on_level_up玩家升级
6x4Aon_change_hp改变 HP(变体)
6x4Bon_change_hp改变 HP(变体)
6x4Con_change_hp改变 HP(变体)
6x4Don_player_died玩家死亡
6x4Eon_player_revivable玩家可被复活
6x4Fon_player_revived玩家已复活
6x52on_set_animation_state设置动画状态

物品与背包操作

子操作码处理函数说明
6x25on_equip_item装备物品
6x26on_unequip_item卸下物品
6x27on_use_item使用物品(消耗)
6x28on_feed_mag喂养 MAG
6x29on_destroy_inventory_item销毁背包中的物品
6x2Aon_player_drop_item玩家丢弃物品到地面
6x2Bon_create_inventory_item在背包中创建物品
6x59on_pick_up_item拾取物品(已确认)
6x5Aon_pick_up_item_request请求拾取物品
6x5Con_destroy_floor_item销毁地面物品
6x5Don_drop_partial_stack丢弃部分叠加物品
6x5Eon_buy_shop_item从商店购买物品
6x5Fon_box_or_enemy_item_drop箱子/怪物掉落物品通知
6x60on_entity_drop_item_request实体掉落物品请求
6x63on_destroy_floor_item销毁地面物品(备用)
6xA2on_entity_drop_item_request实体掉落物品请求(备用)

战斗与攻击

子操作码处理函数说明
6x46forward (entity_targets_transcode)攻击完成(命中目标)
6x47forward (entity_targets_transcode)释放技能(命中目标)
6x48on_cast_technique_finished技能释放完毕
6x49forward (entity_targets_transcode)发动光子爆发(命中目标)
6x89forward (entity_id_transcode)设置击杀实体 ID
6x8Fforward (entity_id_transcode)增加战斗伤害得分
6x91on_update_attackable_col_state更新可攻击碰撞状态
6xE4on_incr_enemy_damage累计敌方伤害(扩展)

Boss 行为

子操作码处理函数说明
6x10forward (entity_id_transcode)Dragon Boss 行为
6x11forward (entity_id_transcode)Dragon Boss 行为(备用)
6x12on_dragon_actionsDragon 特殊行为
6x13forward (entity_id_transcode)De Rol Le Boss 行为
6x14forward (entity_id_transcode)De Rol Le Boss 含目标行为
6x15forward (entity_id_transcode)Vol Opt Boss 行为
6x16on_vol_opt_actionsVol Opt Boss 特殊行为
6x18forward (entity_id_transcode)Vol Opt 第二阶段 Boss 行为
6x19forward (entity_id_transcode)Dark Falz 行为
6x84on_vol_opt_actionsVol Opt Boss 行为(V2+)
6x9Fforward (entity_id_transcode)Gal Gryphon Boss 行为
6xA0forward (entity_id_transcode)Gal Gryphon Boss 行为(备用)
6xA3forward (entity_id_transcode)Olga Flow Boss 行为
6xA4forward (entity_id_transcode)Olga Flow Boss 行为(备用)
6xA5forward (entity_id_transcode)Olga Flow Boss 行为(备用 2)
6xA8on_gol_dragon_actionsGol Dragon 行为
6xA9forward (entity_id_transcode)Barba Ray Boss 行为
6xAAforward (entity_id_transcode)Barba Ray Boss 行为(备用)

敌人与物体状态

子操作码处理函数说明
6x0Aon_update_enemy_state更新敌人状态
6x0Bon_update_object_state更新物体状态
6x76on_set_entity_set_flag设置实体集合标志
6x86on_update_object_state击中可破坏物体
6x9Con_set_enemy_low_game_flags_ultimate设置敌人标志(究极难度)

游戏同步与加入

子操作码处理函数说明
6x6Bon_sync_joining_player_compressed_state同步加入玩家状态(压缩,玩家 0)
6x6Con_sync_joining_player_compressed_state同步加入玩家状态(压缩,玩家 1)
6x6Don_sync_joining_player_compressed_state同步加入玩家状态(压缩,玩家 2)
6x6Eon_sync_joining_player_compressed_state同步加入玩家状态(压缩,玩家 3)
6x6Fon_sync_joining_player_quest_flags同步加入玩家的任务标志
6x70on_sync_joining_player_disp_and_inventory同步加入玩家的显示数据和背包

事件与地图触发器

子操作码处理函数说明
6x67on_trigger_set_event触发设置事件
6x68on_update_telepipe_state更新传送管道状态
6x69on_npc_controlNPC 控制
6x6Aon_set_boss_warp_flags设置 Boss 传送标志
6x75on_set_quest_flag设置任务标志
6x77on_sync_quest_register同步任务寄存器
6x93on_activate_timed_switch激活计时开关

通信

子操作码处理函数说明
6x06on_send_guild_card向其他玩家发送公会卡
6x07on_symbol_chat符号聊天
6x74on_word_select词语选择(预设短语)
6xBDon_ep3_private_word_select_bb_bank_actionEP3 私聊词语选择 / BB 银行操作
6xB2on_play_sound_from_player从玩家处播放音效

挑战与对战模式

子操作码处理函数说明
6x7Con_challenge_update_records更新挑战模式记录
6x7Don_update_battle_data更新对战模式数据
6x7Fon_battle_scores对战模式得分
6x97on_challenge_mode_retry_or_quit挑战模式重试或退出
6xCFon_battle_restart_bb对战模式重新开始(BB)
6xD0on_battle_level_up_bb对战模式升级(BB)
6xD1on_request_challenge_grave_recovery_item_bb挑战遗物恢复物品(BB)

BB 专属子命令

子操作码处理函数说明
6xB5on_open_shop_bb_or_ep3_battle_subs打开商店(BB)/ EP3 对战子命令
6xB7on_buy_shop_item_bb购买商店物品(BB)
6xB8on_identify_item_bb鉴定物品(鉴定师)
6xBAon_accept_identify_item_bb接受已鉴定物品
6xBBon_open_bank_bb_or_card_trade_counter_ep3打开银行(BB)/ 卡牌交易柜台(EP3)
6xC0on_sell_item_at_shop_bb在商店出售物品
6xC3on_drop_partial_stack_bb丢弃部分叠加物品
6xC4on_sort_inventory_bb整理背包
6xC5on_medical_center_bb医疗中心(治疗)
6xC6on_steal_exp_bb偷取经验(武器特殊效果)
6xC7on_charge_attack_bb蓄力攻击(武器特殊效果)
6xC8on_enemy_exp_request_bb请求敌人经验值
6xC9on_adjust_player_meseta_bb调整玩家 Meseta
6xCAon_quest_create_item_bb任务创建物品
6xCBon_transfer_item_via_mail_message_bb通过邮件转移物品
6xCCon_exchange_item_for_team_points_bb兑换物品为团队积分
6xD2on_write_quest_counter_bb写入任务计数器
6xD5on_quest_exchange_item_bb任务兑换物品
6xD6on_wrap_item_bb包装物品(礼物)
6xD7on_photon_drop_exchange_for_item_bb光子液兑换物品
6xD8on_photon_drop_exchange_for_s_rank_special_bb光子液兑换 S 级特殊
6xD9on_momoka_item_exchange_bbMomoka 物品兑换
6xDAon_upgrade_weapon_attribute_bb升级武器属性
6xDEon_secret_lottery_ticket_exchange_bb秘密抽奖券兑换
6xDFon_photon_crystal_exchange_bb光子晶体兑换
6xE0on_quest_F95E_result_bb任务 F95E 结果
6xE1on_quest_F95F_result_bb任务 F95F 结果
6xE2on_quest_F960_result_bb任务 F960 结果

EP3 卡牌对战子命令

子操作码处理函数说明
6xBCon_ep3_trade_card_countsEP3 交易卡牌数量
6xBFon_forward_check_ep3_lobbyEP3 大厅转发

Xbox 专属

子操作码处理函数说明
6xB3on_xbox_voice_chat_controlXbox 语音聊天控制
6xB4on_xbox_voice_chat_controlXbox 语音聊天控制

调试

子操作码处理函数说明
6xFFon_debug_info调试信息(扩展子命令,用于调试补丁)

汇总

已定义子命令总数:256(0x00–0xFF)

  • 有效处理函数(非 on_invalid):约 160 个
  • 仅转发(无服务器端逻辑):约 60 个
  • 服务器端处理:约 100 个