Commit ffa2b33d authored by Nemo Ma's avatar Nemo Ma

cleanup2

parent 894a4630
# achievement.func.php 文件分析
## 文件概述
`achievement.func.php` 是游戏系统中处理成就系统的核心函数库。该文件包含了成就的初始化、检查、更新和完成等功能,是游戏成就系统的完整实现。文件体积较大(约3213行),包含了处理各种类型成就的详细逻辑。
## 主要函数列表
### init_achtabledata($ach)
**功能**:初始化单个成就页面
**参数**
- `$ach`:成就ID
**处理流程**
1. 检查是否存在对应的页面模板
2. 如果存在,返回模板名称
3. 如果不存在,返回成就ID(用于动态生成模板)
**返回值**:成就页面模板名称或成就ID
### print_achievement_rev($ach)
**功能**:解析成就数据
**参数**
- `$ach`:JSON格式的成就数据
**处理流程**
1. 将JSON格式的成就数据解码为数组
2. 如果数据为空,返回空数组
**返回值**:解析后的成就数据数组
### check_achievement_rev($which, $who)
**功能**:检查指定玩家的指定成就状态
**参数**
- `$which`:成就ID
- `$who`:玩家名称
**处理流程**
1. 从数据库获取玩家的成就记录
2. 解析成就数据
3. 检查指定成就的完成状态和等级
4. 返回成就等级值
**返回值**:成就等级值(0表示未完成,999表示完全完成)
### update_achievement_rev($which, $who, $value)
**功能**:更新指定玩家的指定成就进度
**参数**
- `$which`:成就ID
- `$who`:玩家名称
- `$value`:新的成就进度值
**处理流程**
1. 从数据库获取玩家的成就记录
2. 更新指定成就的进度值
3. 将更新后的数据保存回数据库
**返回值**:无
### done_achievement_rev($which, $ch, $who)
**功能**:标记指定成就为已完成
**参数**
- `$which`:成就ID
- `$ch`:成就完成的附加信息
- `$who`:玩家名称
**处理流程**
1. 从数据库获取玩家的成就记录
2. 标记指定成就为已完成状态
3. 记录完成时间和附加信息
4. 将更新后的数据保存回数据库
**返回值**:无
### reset_achievement_rev($which, $who)
**功能**:重置指定玩家的指定成就
**参数**
- `$which`:成就ID
- `$who`:玩家名称
**处理流程**
1. 从数据库获取玩家的成就记录
2. 删除指定成就的记录
3. 将更新后的数据保存回数据库
**返回值**:无
### check_daily_achievement($who, $only_id=0)
**功能**:检查玩家的每日成就
**参数**
- `$who`:玩家名称
- `$only_id`:是否只返回成就ID,默认为0
**处理流程**
1. 从数据库获取玩家的每日成就记录
2. 检查每日成就是否需要刷新(基于时间)
3. 返回刷新时间和当前每日成就ID
**返回值**:数组,包含刷新时间和每日成就ID
## 成就检查函数
文件中包含了大量针对不同类型成就的检查函数:
1. **check_mixitem_achievement_rev**:检查物品合成相关成就
2. **check_end_achievement_rev**:检查游戏结束相关成就
3. **check_battle_achievement_rev**:检查战斗相关成就
4. **check_item_achievement_rev**:检查物品相关成就
5. **check_misc_achievement_rev**:检查杂项成就
这些函数包含了详细的条件判断和进度更新逻辑,用于处理游戏中各种情况下的成就触发和更新。
## 成就系统特点
1. **多层级成就**:成就系统支持多个等级的成就进度
2. **每日成就**:支持每日刷新的成就任务
3. **成就分类**:成就按照不同类型进行分类(战斗、物品、结局等)
4. **成就记录**:记录成就完成的时间和方式
5. **成就重置**:支持重置特定成就的进度
## 注意事项
1. 文件使用JSON格式存储成就数据,需要注意JSON编码和解码的正确性
2. 成就系统与游戏的多个子系统(战斗、物品、合成等)紧密集成
3. 每日成就系统包含时间检查和自动刷新机制
4. 文件中包含大量条件判断,用于处理各种成就触发条件
5. 部分成就检查函数非常庞大,包含了大量特定成就的处理逻辑
6. 文件同时包含新版(带_rev后缀)和旧版成就系统函数,新版函数是主要使用的版本
\ No newline at end of file
# battle.func.php 文件分析
## 文件概述
`battle.func.php` 是游戏系统中处理战斗遭遇和物品交互的函数库。该文件主要包含了玩家遇到队友、发现尸体以及物品赠送等功能的实现,是游戏战斗系统的基础组件之一。
## 函数列表
### findteam(&$w_pdata)
**功能**:处理玩家遇到队友的情况
**参数**
- `&$w_pdata`:队友的玩家数据(引用传递)
**处理流程**
1. 检查游戏是否处于连斗阶段(`$gamestate>=40`),如果是则取消所有队伍
2. 设置战斗标题为"发现队友"
3. 初始化战斗界面(调用`init_battle_rev`函数)
4. 加载队友遭遇的模板页面
5. 显示遇到队友的消息
**返回值**:无,直接修改全局变量
### findcorpse(&$w_pdata)
**功能**:处理玩家发现尸体的情况
**参数**
- `&$w_pdata`:尸体的玩家数据(引用传递)
**处理流程**
1. 设置战斗标题为"发现尸体"
2. 初始化战斗界面(调用`init_battle_rev`函数)
3. 显示发现尸体的消息
4. 初始化尸体上物品的tooltip信息
5. 检查是否允许摧毁尸体
6. 加载尸体遭遇的模板页面
**返回值**:无,直接修改全局变量
### senditem()
**功能**:处理玩家赠送物品的功能
**参数**:无
**处理流程**
1. 检查是否选择了有效的物品
2. 检查物品是否可以赠送(某些物品不允许赠送)
3. 检查接收者是否存在且状态正常
4. 检查接收者的物品栏是否有空位
5. 将物品从赠送者移除并添加到接收者的物品栏
6. 记录赠送物品的事件
7. 更新双方的数据库记录
**返回值**:无,直接修改全局变量
## 主要特点
1. **队伍交互**:提供玩家与队友交互的功能
2. **尸体处理**:提供玩家与尸体交互的功能,包括获取物品和摧毁尸体
3. **物品赠送**:提供玩家之间赠送物品的功能
4. **模板集成**:使用模板系统生成交互界面
5. **数据库操作**:直接操作数据库更新玩家数据
## 注意事项
1. 函数大量使用全局变量,这可能导致代码维护困难
2. 函数通过引用传递参数,直接修改传入的数据
3. 物品赠送功能包含多种安全检查,防止游戏漏洞
4. 尸体处理功能考虑了不同类型尸体的特殊处理
5. 连斗阶段会取消所有队伍,这是游戏机制的一部分
\ No newline at end of file
# clubskills.func.php 文件分析
## 文件概述
`clubskills.func.php` 是游戏系统中处理俱乐部技能的核心函数库。该文件包含了俱乐部技能的定义、升级、效果计算等功能,是游戏技能系统的重要组成部分。文件体积较大(约1381行),包含了大量与俱乐部技能相关的函数。
## 主要函数列表
### getskills(&$arr)
**功能**:初始化俱乐部技能数据
**参数**
- `&$arr`:技能数据数组(引用传递)
**处理流程**
1. 定义各个俱乐部称号的技能数据
2. 包括技能等级、消耗、效果等详细信息
3. 将技能数据存储到传入的数组中
**返回值**:无,直接修改传入的数组
### getskills2(&$arr)
**功能**:初始化第二套俱乐部技能数据
**参数**
- `&$arr`:技能数据数组(引用传递)
**处理流程**
1. 定义另一套俱乐部称号的技能数据
2. 包括技能等级、消耗、效果等详细信息
3. 将技能数据存储到传入的数组中
**返回值**:无,直接修改传入的数组
### upgradeclubskills($cmd)
**功能**:处理俱乐部技能升级
**参数**
- `$cmd`:升级命令
**处理流程**
1. 解析升级命令,确定要升级的技能
2. 检查技能点是否足够
3. 检查技能等级是否已达上限
4. 执行技能升级,扣除技能点
5. 更新玩家数据
**返回值**:无,直接修改全局变量
### rev_get_clubskill_bonus($aclub, $askl, $pa, $bclub, $bskl, $pd, &$att, &$def)
**功能**:计算俱乐部技能对战斗属性的加成
**参数**
- `$aclub`:攻击者的俱乐部
- `$askl`:攻击者的技能数据
- `$pa`:攻击者的玩家数据
- `$bclub`:防御者的俱乐部
- `$bskl`:防御者的技能数据
- `$pd`:防御者的玩家数据
- `&$att`:攻击力(引用传递)
- `&$def`:防御力(引用传递)
**处理流程**
1. 根据俱乐部和技能数据计算攻击力加成
2. 根据俱乐部和技能数据计算防御力加成
3. 应用各种特殊技能效果
**返回值**:无,直接修改传入的攻击力和防御力变量
## 俱乐部技能系统
文件实现了完整的俱乐部技能系统,包括:
1. **技能定义**:定义了各个俱乐部的技能数据和效果
2. **技能升级**:实现了技能升级和技能点消耗的机制
3. **技能效果**:实现了各种技能效果的计算和应用
4. **战斗加成**:计算技能对战斗属性的各种加成
5. **特殊效果**:实现了各种特殊技能效果
## 技能效果类型
文件中定义了多种技能效果类型:
1. **命中率加成**:提高攻击命中率
2. **暴击率加成**:提高暴击几率
3. **伤害加成**:提高造成的伤害
4. **防御加成**:提高防御效果
5. **反击加成**:提高反击几率和伤害
6. **特殊效果**:各种特殊技能效果(如隐身、逃跑等)
## 主要特点
1. **完整的技能系统**:实现了从技能定义到效果应用的完整流程
2. **多样的技能效果**:支持多种类型的技能效果和加成
3. **平衡性设计**:技能效果随等级提升,但消耗也相应增加
4. **俱乐部特色**:不同俱乐部有不同的技能特点和优势
5. **战斗集成**:与战斗系统紧密集成,影响战斗结果
## 注意事项
1. 技能数据结构复杂,修改时需要小心
2. 技能效果计算涉及多种公式和条件判断
3. 新版(带_rev后缀)和旧版函数并存,新版函数是主要使用的版本
4. 技能系统与战斗系统紧密相关,修改可能影响游戏平衡
5. 部分技能有特殊的使用条件和限制
\ No newline at end of file
# combat.func.php 文件分析
## 文件概述
`combat.func.php` 是游戏系统中处理战斗核心逻辑的函数库。该文件包含了攻击、防御、伤害计算、状态效果等战斗系统的核心功能,是游戏战斗机制的主要实现。文件体积较大(约2361行),包含了大量与战斗相关的函数和计算逻辑。
## 主要函数列表
### combat($active = 1, $wep_kind = '')
**功能**:处理战斗的主函数,协调整个战斗流程
**参数**
- `$active`:是否为主动攻击,默认为1(主动)
- `$wep_kind`:武器类型,默认为空(自动判断)
**处理流程**
1. 设置战斗标题为"战斗发生"
2. 确定使用的武器类型
3. 加载俱乐部技能函数库
4. 检查是否选择逃跑
5. 验证敌人是否存在、是否在同一地点、是否存活
6. 处理战斗前的喊话消息
7. 初始化战斗界面
8. 执行攻击和防御计算
9. 处理战斗结果和经验值变化
10. 更新数据库中的玩家数据
**返回值**:无,直接修改全局变量
### attack($wep_kind = 'N', $active = 0)
**功能**:计算攻击伤害和效果
**参数**
- `$wep_kind`:武器类型,默认为'N'(空手)
- `$active`:是否为主动攻击,默认为0(被动)
**处理流程**
1. 根据武器类型和技能确定攻击方式
2. 计算命中率和命中次数
3. 计算基础伤害值
4. 应用各种伤害修正(技能、状态、装备等)
5. 计算暴击和特殊效果
6. 处理武器耐久度减少
7. 应用战斗后的状态效果
**返回值**:总伤害值
### defend($w_wep_kind = 'N', $active = 0)
**功能**:计算防御效果和反击伤害
**参数**
- `$w_wep_kind`:对方武器类型,默认为'N'(空手)
- `$active`:是否为主动防御,默认为0(被动)
**处理流程**
1. 根据防御方式和技能确定防御效果
2. 计算伤害减免
3. 处理装甲耐久度减少
4. 计算反击伤害
5. 应用各种状态效果
6. 处理生命值和怒气值变化
**返回值**:无,直接修改全局变量
### get_original_dmg($w1, $w2, $att, $def, $ws, $wp_kind)
**功能**:计算原始伤害值
**参数**
- `$w1`:武器第一属性
- `$w2`:武器第二属性
- `$att`:攻击力
- `$def`:防御力
- `$ws`:武器强度
- `$wp_kind`:武器类型
**处理流程**
1. 根据武器类型应用不同的伤害计算公式
2. 考虑攻击力和防御力的差值
3. 应用武器强度修正
**返回值**:计算出的原始伤害值
## 辅助函数
文件中还包含大量辅助函数,用于处理战斗中的各种细节:
1. **checkdmg/checkdef/checkarb**:检查伤害、防御和护甲效果
2. **getatkkey/getdefkey**:获取攻击和防御的关键参数
3. **get_hit_time**:计算命中次数
4. **get_ex_dmg**:计算额外伤害
5. **get_inf**:获取状态效果
6. **exprgup**:计算经验和怒气值变化
7. **addnoise**:添加战斗噪音(影响周围玩家)
8. **npc_changewep/npc_chat**:处理NPC的武器切换和对话
## 主要特点
1. **复杂的伤害计算**:考虑了武器类型、属性、技能、状态等多种因素
2. **多种武器系统**:支持不同类型武器的特殊效果和计算方式
3. **状态效果系统**:实现了各种战斗状态的应用和变化
4. **技能联动**:与游戏中的技能系统紧密结合
5. **NPC行为**:包含NPC战斗行为的特殊处理
6. **噪音系统**:战斗会产生噪音,影响周围玩家
## 注意事项
1. 文件使用了大量全局变量,增加了代码复杂度和维护难度
2. 伤害计算逻辑复杂,涉及多种公式和条件判断
3. 函数之间存在较多依赖关系,需要小心修改
4. 代码中包含大量游戏平衡性相关的常数和公式
5. 部分代码包含注释掉的旧版本实现,可能是为了调试或保留历史记录
\ No newline at end of file
# common.inc.php 文件分析
## 文件概述
`common.inc.php` 是游戏系统的核心包含文件,负责初始化游戏环境、加载必要的库文件、建立数据库连接,以及处理游戏状态的更新。该文件在每次页面请求时都会被加载,是整个游戏系统的入口点。
## 主要功能
1. **环境初始化**:设置游戏常量、错误处理、时区等
2. **数据过滤**:对输入数据进行安全过滤
3. **数据库连接**:建立与数据库的连接
4. **配置加载**:加载游戏配置文件
5. **游戏状态管理**:检查和更新游戏状态(准备、开始、结束等)
6. **房间管理**:处理游戏房间相关逻辑
7. **禁区管理**:处理游戏中禁区的增加和警告
8. **反挂机机制**:处理游戏中的反挂机逻辑
## 关键常量定义
- `IN_GAME`:标识在游戏环境中
- `GAME_ROOT`:游戏根目录路径
- `GAMENAME`:游戏名称
## 主要流程
1. 定义常量和设置环境
2. 加载全局函数库和系统函数库
3. 设置错误处理和数据过滤
4. 加载配置文件
5. 连接数据库
6. 加载游戏数据和初始化函数
7. 处理游戏状态更新
- 游戏准备状态检查
- 游戏开始状态检查
- 禁区增加和警告检查
- 游戏结束条件检查
- 连斗条件检查
- 反挂机检查
8. 保存游戏信息
9. 检查新消息
## 关键变量
- `$now`:当前时间(考虑时区偏移)
- `$db`:数据库连接对象
- `$gamestate`:游戏当前状态
- `$groomid`:当前房间ID
- `$tablepre`:数据库表前缀
- `$roomlist`:房间列表
- `$udata`:当前用户数据
## 游戏状态值
- `0`:游戏未开始
- `10`:游戏准备中
- `20`:游戏进行中
- `30`:游戏停止激活
- `40`:游戏进入连斗状态
## 注意事项
1. 该文件是游戏系统的核心,几乎所有页面都会包含它
2. 文件中包含游戏状态的自动更新逻辑,确保游戏按照预定规则进行
3. 文件中的时间计算考虑了时区偏移
4. 文件中包含对小房间和大房间不同的处理逻辑
5. 文件使用了文件锁(`process.lock`)来防止并发问题
\ No newline at end of file
# db_mysqli.class.php 类分析
`db_mysqli.class.php`是基于MySQLi的数据库操作类,提供了数据库连接和操作的核心功能。
## 类结构
### dbstuff 类
这是主要的数据库操作类,基于MySQLi扩展实现。
#### 属性
- **$querynum** - 查询次数计数器
- **$link** - MySQLi连接对象
- **$charset** - 字符集
- **$version** - 数据库版本
- **$querylog** - 查询日志数组
- **$debug** - 调试模式开关
- **$safecheck** - 安全检查开关
#### 方法
##### 连接和初始化
###### `connect($dbhost, $dbuser, $dbpw, $dbname = '', $dbcharset = '', $pconnect = 0, $halt = TRUE)`
- **功能**: 连接数据库
- **参数**:
- `$dbhost`: 数据库主机
- `$dbuser`: 数据库用户名
- `$dbpw`: 数据库密码
- `$dbname`: 数据库名
- `$dbcharset`: 字符集
- `$pconnect`: 是否持久连接
- `$halt`: 错误时是否终止
- **返回值**: 连接对象
###### `select_db($dbname)`
- **功能**: 选择数据库
- **参数**: `$dbname`: 数据库名
- **返回值**: 布尔值,表示操作是否成功
###### `set_charset($charset)`
- **功能**: 设置字符集
- **参数**: `$charset`: 字符集
- **返回值**: 布尔值,表示操作是否成功
##### 查询操作
###### `query($sql, $type = '', $cachetime = FALSE)`
- **功能**: 执行SQL查询
- **参数**:
- `$sql`: SQL语句
- `$type`: 查询类型
- `$cachetime`: 缓存时间
- **返回值**: 查询结果
###### `fetch_array($query, $result_type = MYSQLI_ASSOC)`
- **功能**: 获取结果行为数组
- **参数**:
- `$query`: 查询结果
- `$result_type`: 结果类型
- **返回值**: 结果数组
###### `fetch_first($sql)`
- **功能**: 获取查询的第一行结果
- **参数**: `$sql`: SQL语句
- **返回值**: 结果数组
###### `fetch_all($sql, $id = '')`
- **功能**: 获取所有查询结果
- **参数**:
- `$sql`: SQL语句
- `$id`: 索引字段
- **返回值**: 结果数组
###### `result($query, $row = 0)`
- **功能**: 获取特定行的第一个字段值
- **参数**:
- `$query`: 查询结果
- `$row`: 行号
- **返回值**: 字段值
###### `result_first($sql)`
- **功能**: 获取查询结果的第一行第一个字段值
- **参数**: `$sql`: SQL语句
- **返回值**: 字段值
###### `num_rows($query)`
- **功能**: 获取结果行数
- **参数**: `$query`: 查询结果
- **返回值**: 行数
###### `num_fields($query)`
- **功能**: 获取结果字段数
- **参数**: `$query`: 查询结果
- **返回值**: 字段数
###### `affected_rows()`
- **功能**: 获取受影响的行数
- **参数**: 无
- **返回值**: 受影响的行数
###### `insert_id()`
- **功能**: 获取最后插入的ID
- **参数**: 无
- **返回值**: 插入ID
##### 数据操作
###### `insert($table, $data, $return_insert_id = false, $replace = false, $silent = false)`
- **功能**: 插入数据
- **参数**:
- `$table`: 表名
- `$data`: 数据数组
- `$return_insert_id`: 是否返回插入ID
- `$replace`: 是否使用REPLACE
- `$silent`: 是否静默执行
- **返回值**: 插入结果
###### `update($table, $data, $condition, $unbuffered = false, $low_priority = false)`
- **功能**: 更新数据
- **参数**:
- `$table`: 表名
- `$data`: 数据数组
- `$condition`: 条件
- `$unbuffered`: 是否非缓冲
- `$low_priority`: 是否低优先级
- **返回值**: 更新结果
###### `delete($table, $condition, $limit = 0, $unbuffered = true)`
- **功能**: 删除数据
- **参数**:
- `$table`: 表名
- `$condition`: 条件
- `$limit`: 限制数量
- `$unbuffered`: 是否非缓冲
- **返回值**: 删除结果
##### 事务处理
###### `begin_transaction()`
- **功能**: 开始事务
- **参数**: 无
- **返回值**: 布尔值,表示操作是否成功
###### `commit()`
- **功能**: 提交事务
- **参数**: 无
- **返回值**: 布尔值,表示操作是否成功
###### `rollback()`
- **功能**: 回滚事务
- **参数**: 无
- **返回值**: 布尔值,表示操作是否成功
##### 辅助功能
###### `free_result($query)`
- **功能**: 释放结果集
- **参数**: `$query`: 查询结果
- **返回值**: 布尔值,表示操作是否成功
###### `escape_string($str)`
- **功能**: 转义字符串
- **参数**: `$str`: 需要转义的字符串
- **返回值**: 转义后的字符串
###### `error()`
- **功能**: 获取最后一个错误
- **参数**: 无
- **返回值**: 错误信息
###### `errno()`
- **功能**: 获取错误代码
- **参数**: 无
- **返回值**: 错误代码
###### `halt($message = '', $sql = '')`
- **功能**: 处理错误并终止
- **参数**:
- `$message`: 错误消息
- `$sql`: SQL语句
- **返回值**: 无
###### `close()`
- **功能**: 关闭数据库连接
- **参数**: 无
- **返回值**: 布尔值,表示操作是否成功
##### 调试功能
###### `debug_info()`
- **功能**: 获取调试信息
- **参数**: 无
- **返回值**: 调试信息数组
###### `get_version()`
- **功能**: 获取数据库版本
- **参数**: 无
- **返回值**: 版本信息
###### `get_table_status($table)`
- **功能**: 获取表状态
- **参数**: `$table`: 表名
- **返回值**: 表状态信息
###### `get_tables_list($database = '')`
- **功能**: 获取数据库中的表列表
- **参数**: `$database`: 数据库名
- **返回值**: 表列表数组
###### `get_table_fields($table)`
- **功能**: 获取表字段信息
- **参数**: `$table`: 表名
- **返回值**: 字段信息数组
这个类提供了完整的数据库操作功能,包括连接管理、查询执行、数据操作、事务处理和调试功能,是整个游戏系统数据库操作的核心组件。
\ No newline at end of file
# elementmix.func.php 文件分析
## 文件概述
`elementmix.func.php` 是游戏系统中处理元素合成的核心函数库。该文件包含了元素特征显示、元素配方管理、尸体分解、物品分解和元素合成等功能,是游戏中元素系统的完整实现。文件与 `elementmix.calc.php` 配合使用,提供了完整的元素合成机制。
## 主要函数列表
### emix_init_elements_tags($eid, $etype, $ekey, $data)
**功能**:显示已了解的元素特征
**参数**
- `$eid`:元素ID
- `$etype`:元素类型(dom主元素或次元素)
- `$ekey`:元素键值
- `$data`:玩家数据
**处理流程**
1. 检查玩家是否已了解该元素特征
2. 如果已了解,显示特征描述
3. 如果未了解,显示问号
**返回值**:元素特征的HTML标签
### emix_init_elements_info($data)
**功能**:显示已了解的元素配方
**参数**
- `$data`:玩家数据
**处理流程**
1. 加载元素配方数据
2. 检查玩家已了解的配方
3. 生成配方显示HTML
**返回值**:元素配方的HTML内容
### split_corpse_to_elements(&$edata, $emode)
**功能**:将尸体分解为元素
**参数**
- `&$edata`:尸体数据(引用传递)
- `$emode`:分解模式
**处理流程**
1. 检查尸体类型和状态
2. 根据尸体特性确定可获得的元素
3. 生成分解结果
4. 更新玩家的元素数据
**返回值**:无,直接修改传入的数据
### split_item_to_elements($iid=NULL)
**功能**:将物品分解为元素
**参数**
- `$iid`:物品ID,默认为NULL(使用当前选中物品)
**处理流程**
1. 检查物品是否存在
2. 确定物品类型和特性
3. 根据物品特性确定可获得的元素
4. 生成分解结果
5. 移除原物品,添加获得的元素
**返回值**:无,直接修改全局变量
### element_mix($emlist, $emnums, $domkey, $eitmemax = 100, $eitmesr = 55)
**功能**:执行元素合成
**参数**
- `$emlist`:元素列表
- `$emnums`:元素数量列表
- `$domkey`:主元素键值
- `$eitmemax`:最大合成效率,默认为100
- `$eitmesr`:合成成功率,默认为55
**处理流程**
1. 检查元素列表和数量是否合法
2. 确定主元素和次元素
3. 计算合成效率和成功率
4. 执行合成操作
5. 根据结果生成合成物品或失败消息
**返回值**:无,直接修改全局变量
## 元素系统特点
1. **元素特征**:每种元素有不同的特征和属性
2. **元素配方**:通过特定配方组合元素生成物品
3. **尸体分解**:可以将尸体分解为元素
4. **物品分解**:可以将物品分解为元素
5. **元素合成**:可以将元素组合合成新物品
6. **学习系统**:玩家可以逐渐了解元素特征和配方
## 元素合成机制
元素合成系统包含以下核心机制:
1. **主元素和次元素**:合成时需要指定一个主元素,其他为次元素
2. **合成效率**:影响合成结果的品质
3. **成功率**:决定合成是否成功
4. **元素特性**:不同元素组合产生不同效果
5. **配方系统**:特定元素组合对应特定物品
## 主要特点
1. **完整的元素系统**:从元素获取到合成的完整流程
2. **尸体利用**:提供了尸体分解为元素的机制
3. **物品循环**:物品可以分解为元素,元素又可以合成新物品
4. **学习机制**:玩家通过游戏过程逐渐了解元素系统
5. **界面交互**:提供了友好的界面显示元素信息和配方
## 注意事项
1. 元素系统与物品系统和尸体系统紧密集成
2. 元素合成涉及随机因素,成功率和效率会影响结果
3. 元素配方数据存储在配置文件中,需要与代码保持一致
4. 元素系统包含学习机制,玩家数据中记录已了解的元素特征和配方
5. 文件依赖于elementmix.calc.php提供的计算函数
\ No newline at end of file
# 游戏系统分析总结
## 概述
本文档汇总了对PHP游戏系统核心文件的分析结果,主要关注`include/game`目录下的关键功能文件。通过分析这些文件,我们深入了解了游戏的核心机制、系统设计和各组件之间的交互关系。
## 已分析文件列表
### 战斗系统
1. **battle.func.php** - 战斗遭遇和物品交互的函数
2. **combat.func.php** - 战斗机制的核心逻辑
3. **revcombat.func.php** - 改进版战斗系统
4. **revbattle.func.php** - 改进版战斗遭遇系统
### 物品系统
1. **item.func.php** - 物品系统的核心函数
2. **itembag.func.php** - 物品背包系统
3. **itemmain.func.php** - 物品主系统
4. **itemmix.func.php** - 物品合成系统
5. **elementmix.func.php** - 元素合成系统
### 角色系统
1. **revattr.func.php** - 角色属性系统
2. **clubskills.func.php** - 社团技能系统
3. **titles.func.php** - 称号系统
### 其他系统
1. **achievement.func.php** - 成就系统的管理函数
2. **special.func.php** - 特殊功能和事件系统
## 系统架构概述
游戏系统采用模块化设计,各个子系统相对独立但又紧密协作。主要系统包括:
### 战斗系统架构
战斗系统是游戏的核心机制,分为以下几个主要组件:
- **战斗遭遇**:处理敌人发现、战斗准备和逃跑等机制
- **战斗执行**:处理攻击逻辑、伤害计算和战斗结果
- **属性影响**:角色属性、装备和技能对战斗的影响
战斗系统的特点是模块化设计,使用PHP命名空间组织代码,通过引用传递修改玩家数据,并将战斗过程分为准备、执行、攻击和结果处理四个阶段。
### 物品系统架构
物品系统管理游戏中的各种物品,包括以下组件:
- **物品背包**:管理玩家的物品库存
- **物品使用**:处理物品的使用效果
- **物品合成**:允许玩家将多个物品组合创造新物品
- **元素系统**:管理元素特性、配方和合成
物品系统的特点是使用JSON格式存储数据,支持多样化的物品类型,实现了复杂的效果计算,包含物品合成、陷阱和箱子等机制。
### 角色系统架构
角色系统管理玩家的属性、技能和成长,包括以下组件:
- **属性系统**:处理角色属性和战斗能力计算
- **技能系统**:管理社团技能的获取、升级和效果
- **称号系统**:管理玩家获得的称号及其效果
角色系统的特点是实现了复杂的属性计算系统,支持多种技能效果,使用JSON格式存储称号数据。
### 其他系统架构
- **成就系统**:管理游戏成就的初始化、检查、更新和完成
- **特殊功能系统**:处理游戏中的特殊事件、NPC互动和特殊地点效果
## 系统交互关系
游戏系统各组件之间存在复杂的交互关系:
1. **战斗与物品系统**:战斗中使用物品,物品影响战斗结果
2. **战斗与角色系统**:角色属性和技能影响战斗能力,战斗结果影响角色成长
3. **物品与角色系统**:物品可以提升角色属性,角色属性影响物品使用效果
4. **成就与其他系统**:各种游戏行为触发成就,成就可能提供奖励
5. **特殊事件与其他系统**:特殊事件可能影响战斗、物品和角色状态
## 技术特点
1. **PHP实现**:系统使用PHP语言实现,适合Web游戏开发
2. **命名空间**:部分文件使用PHP命名空间组织代码,提高可维护性
3. **JSON数据存储**:多个系统使用JSON格式存储数据,提高灵活性和扩展性
4. **引用传递**:广泛使用引用传递修改玩家数据,提高效率
5. **模块化设计**:系统分为多个相对独立的模块,便于维护和扩展
6. **随机性**:多个系统引入随机性,增加游戏变化性和重玩价值
## 设计亮点
1. **平衡性考虑**:各系统设计考虑了游戏平衡,如战斗公式、物品效果和技能加成
2. **扩展性**:系统设计允许轻松添加新的物品、技能和事件
3. **深度游戏机制**:实现了复杂的战斗、物品和角色成长系统,提供深度游戏体验
4. **随机性与策略性**:系统平衡了随机性和策略性,既有不可预测性又允许玩家制定策略
5. **成就系统**:提供长期游戏目标和奖励,增加游戏寿命
## 潜在改进方向
1. **代码一致性**:统一使用命名空间和编码风格
2. **减少全局变量**:减少对全局变量的依赖,提高代码可维护性
3. **增强文档**:为复杂函数和系统添加更详细的文档
4. **优化性能**:优化数据处理和计算密集型操作
5. **增强测试**:添加单元测试和集成测试,确保系统稳定性
## 结论
通过对这些核心文件的分析,我们可以看到游戏系统的复杂性和各系统之间的紧密联系。战斗系统是游戏的核心机制,通过精心设计的公式和参数实现了平衡的战斗体验。物品系统提供了丰富的物品类型和交互方式,增加了游戏的深度和策略性。角色系统支持多样化的成长路径和技能发展。特殊功能系统则通过随机事件和NPC互动丰富了游戏内容,增加了游戏的变化性和重玩价值。
这些系统之间相互依赖,共同构成了一个复杂而有趣的游戏世界。在修改或扩展这些系统时,需要考虑它们之间的关系和平衡性,以确保游戏体验的一致性和乐趣。
\ No newline at end of file
# game.func.php 函数分析
`game.func.php`是游戏核心函数库,包含了游戏运行所需的主要功能函数。
## 函数列表
### 游戏初始化和配置
#### `init_game($gid, $mode = 0)`
- **功能**: 初始化游戏
- **参数**:
- `$gid`: 游戏ID
- `$mode`: 初始化模式
- **返回值**: 初始化结果
#### `load_game_config($gid)`
- **功能**: 加载游戏配置
- **参数**: `$gid`: 游戏ID
- **返回值**: 游戏配置数组
#### `start_game($gid, $players)`
- **功能**: 开始游戏
- **参数**:
- `$gid`: 游戏ID
- `$players`: 玩家列表
- **返回值**: 开始结果
#### `end_game($gid, $winner = 0)`
- **功能**: 结束游戏
- **参数**:
- `$gid`: 游戏ID
- `$winner`: 获胜者ID
- **返回值**: 结束结果
### 玩家管理
#### `join_game($uid, $gid, $team = 0)`
- **功能**: 玩家加入游戏
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$team`: 队伍ID
- **返回值**: 加入结果
#### `leave_game($uid, $gid)`
- **功能**: 玩家离开游戏
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 离开结果
#### `get_player_list($gid, $status = 0)`
- **功能**: 获取玩家列表
- **参数**:
- `$gid`: 游戏ID
- `$status`: 玩家状态
- **返回值**: 玩家列表数组
#### `update_player_status($uid, $gid, $status)`
- **功能**: 更新玩家状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$status`: 新状态
- **返回值**: 更新结果
### 游戏动作和交互
#### `player_move($uid, $gid, $direction)`
- **功能**: 玩家移动
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$direction`: 移动方向
- **返回值**: 移动结果
#### `player_attack($uid, $gid, $target, $skill = 0)`
- **功能**: 玩家攻击
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$target`: 目标ID
- `$skill`: 技能ID
- **返回值**: 攻击结果
#### `player_use_item($uid, $gid, $item_id, $target = 0)`
- **功能**: 玩家使用物品
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$item_id`: 物品ID
- `$target`: 目标ID
- **返回值**: 使用结果
#### `player_pickup_item($uid, $gid, $item_id)`
- **功能**: 玩家拾取物品
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$item_id`: 物品ID
- **返回值**: 拾取结果
### 游戏状态和进程
#### `update_game_time($gid, $time = 0)`
- **功能**: 更新游戏时间
- **参数**:
- `$gid`: 游戏ID
- `$time`: 时间增量
- **返回值**: 更新结果
#### `check_game_end($gid)`
- **功能**: 检查游戏是否结束
- **参数**: `$gid`: 游戏ID
- **返回值**: 布尔值,表示游戏是否结束
#### `get_game_progress($gid)`
- **功能**: 获取游戏进度
- **参数**: `$gid`: 游戏ID
- **返回值**: 游戏进度信息
#### `trigger_game_event($gid, $event_type, $params = array())`
- **功能**: 触发游戏事件
- **参数**:
- `$gid`: 游戏ID
- `$event_type`: 事件类型
- `$params`: 事件参数
- **返回值**: 事件触发结果
### 战斗系统
#### `calculate_battle_result($attacker, $defender, $skill = 0)`
- **功能**: 计算战斗结果
- **参数**:
- `$attacker`: 攻击者信息
- `$defender`: 防御者信息
- `$skill`: 技能ID
- **返回值**: 战斗结果
#### `apply_damage($uid, $gid, $damage, $type = 'physical')`
- **功能**: 应用伤害
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$damage`: 伤害值
- `$type`: 伤害类型
- **返回值**: 应用结果
#### `check_player_death($uid, $gid)`
- **功能**: 检查玩家是否死亡
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 布尔值,表示玩家是否死亡
#### `handle_player_death($uid, $gid, $killer = 0)`
- **功能**: 处理玩家死亡
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$killer`: 杀手ID
- **返回值**: 处理结果
### 物品和装备系统
#### `generate_item($gid, $type, $level = 1)`
- **功能**: 生成物品
- **参数**:
- `$gid`: 游戏ID
- `$type`: 物品类型
- `$level`: 物品等级
- **返回值**: 物品信息
#### `equip_item($uid, $gid, $item_id)`
- **功能**: 装备物品
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$item_id`: 物品ID
- **返回值**: 装备结果
#### `unequip_item($uid, $gid, $slot)`
- **功能**: 卸下装备
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$slot`: 装备槽位
- **返回值**: 卸下结果
#### `drop_item($uid, $gid, $item_id)`
- **功能**: 丢弃物品
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$item_id`: 物品ID
- **返回值**: 丢弃结果
### 技能和能力
#### `learn_skill($uid, $gid, $skill_id)`
- **功能**: 学习技能
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$skill_id`: 技能ID
- **返回值**: 学习结果
#### `upgrade_skill($uid, $gid, $skill_id)`
- **功能**: 升级技能
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$skill_id`: 技能ID
- **返回值**: 升级结果
#### `use_skill($uid, $gid, $skill_id, $target = 0)`
- **功能**: 使用技能
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$skill_id`: 技能ID
- `$target`: 目标ID
- **返回值**: 使用结果
#### `check_skill_cooldown($uid, $gid, $skill_id)`
- **功能**: 检查技能冷却
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$skill_id`: 技能ID
- **返回值**: 布尔值,表示技能是否冷却完毕
### 游戏地图和环境
#### `load_map($gid, $map_id)`
- **功能**: 加载地图
- **参数**:
- `$gid`: 游戏ID
- `$map_id`: 地图ID
- **返回值**: 地图信息
#### `get_area_players($gid, $area_id)`
- **功能**: 获取区域内的玩家
- **参数**:
- `$gid`: 游戏ID
- `$area_id`: 区域ID
- **返回值**: 玩家列表
#### `get_area_items($gid, $area_id)`
- **功能**: 获取区域内的物品
- **参数**:
- `$gid`: 游戏ID
- `$area_id`: 区域ID
- **返回值**: 物品列表
#### `update_area_status($gid, $area_id, $status)`
- **功能**: 更新区域状态
- **参数**:
- `$gid`: 游戏ID
- `$area_id`: 区域ID
- `$status`: 新状态
- **返回值**: 更新结果
这只是部分函数的分析,完整的game.func.php文件包含更多游戏核心功能函数,用于支持游戏系统的各个方面。
\ No newline at end of file
# gameencrypt.php 文件分析
## 文件概述
`gameencrypt.php` 是游戏系统中负责数据加密和解密的函数库。该文件提供了一套简单但有效的加密机制,用于保护游戏数据的安全性,防止数据被未授权访问或修改。
## 函数列表
### game_encrypt($txt, $key)
**功能**:使用指定密钥加密字符串
**参数**
- `$txt`:待加密的原始字符串
- `$key`:私有密钥,用于加密
**处理流程**
1. 生成随机加密密钥(通过随机数和MD5)
2. 遍历原始字符串的每个字符
3. 将原始字符与加密密钥的对应位置字符进行异或操作
4. 将加密密钥的字符和异或结果交替组合
5. 使用`game_key()`函数进一步处理结果
6. 对最终结果进行base64编码
**返回值**:加密后的字符串(base64编码)
### game_decrypt($txt, $key)
**功能**:使用指定密钥解密字符串
**参数**
- `$txt`:加密后的字符串(base64编码)
- `$key`:私有密钥,用于解密
**处理流程**
1. 对加密字符串进行base64解码
2. 使用`game_key()`函数处理解码后的字符串
3. 遍历处理后的字符串,每两个字符为一组
4. 将每组中的第一个字符与第二个字符进行异或操作,得到原始字符
**返回值**:解密后的原始字符串
### game_key($txt, $encrypt_key)
**功能**:处理加密/解密过程中的密钥
**参数**
- `$txt`:待处理的字符串
- `$encrypt_key`:私有密钥
**处理流程**
1. 对私有密钥进行MD5处理
2. 遍历待处理字符串的每个字符
3. 将字符与MD5处理后的密钥的对应位置字符进行异或操作
**返回值**:处理后的字符串
### game_encode($array)
**功能**:将数组编码为URL查询字符串格式
**参数**
- `$array`:待编码的数组
**处理流程**
1. 遍历数组的每个元素
2. 将每个元素转换为"键=值"的格式,其中值使用`urlencode()`进行URL编码
3. 使用"&"符号连接所有转换后的元素
**返回值**:URL查询字符串格式的编码结果
## 加密原理
该文件实现的加密机制基于以下原理:
1. **随机密钥生成**:使用随机数和MD5生成一次性加密密钥
2. **异或操作**:使用异或操作混淆原始数据
3. **交替组合**:将加密密钥和异或结果交替组合,增加破解难度
4. **二次处理**:通过`game_key()`函数进行二次处理
5. **Base64编码**:使用Base64编码确保加密结果可以安全传输
## 主要特点
1. **简单实现**:使用基本的加密技术,易于理解和实现
2. **双向加密**:提供加密和解密功能,可以完整恢复原始数据
3. **密钥依赖**:加密和解密过程依赖于相同的私有密钥
4. **随机性**:使用随机生成的一次性密钥,增加安全性
5. **URL安全**:提供数组到URL查询字符串的安全编码
## 注意事项
1. 该加密机制适用于基本的数据保护,不适用于高安全性要求的场景
2. 加密强度依赖于私有密钥的复杂度和保密性
3. 该实现不使用标准的加密算法(如AES、RSA等),而是使用自定义的简单加密方法
4. `game_encode()`函数与加密无关,仅提供数组到URL查询字符串的编码
5. 文件中包含详细的注释,解释了每个函数的工作原理
\ No newline at end of file
# global.func.php 函数分析
`global.func.php`是全局函数库,提供全局可用的通用函数,支持游戏系统的各个部分。
## 函数列表
### 游戏核心功能
#### `gamecfg($key = '')`
- **功能**: 获取游戏配置
- **参数**: `$key`: 配置键名
- **返回值**: 配置值或整个配置数组
#### `get_gameinfo($gid)`
- **功能**: 获取游戏信息
- **参数**: `$gid`: 游戏ID
- **返回值**: 游戏信息数组
#### `get_gamenum()`
- **功能**: 获取游戏数量
- **参数**: 无
- **返回值**: 游戏数量
#### `get_gamelist()`
- **功能**: 获取游戏列表
- **参数**: 无
- **返回值**: 游戏列表数组
#### `get_gameinfo_by_gname($gname)`
- **功能**: 通过游戏名称获取游戏信息
- **参数**: `$gname`: 游戏名称
- **返回值**: 游戏信息数组
### 用户相关功能
#### `get_userinfo($uid, $fields = '*')`
- **功能**: 获取用户信息
- **参数**:
- `$uid`: 用户ID
- `$fields`: 需要获取的字段
- **返回值**: 用户信息数组
#### `get_userinfo_by_username($username, $fields = '*')`
- **功能**: 通过用户名获取用户信息
- **参数**:
- `$username`: 用户名
- `$fields`: 需要获取的字段
- **返回值**: 用户信息数组
#### `update_user_info($uid, $data)`
- **功能**: 更新用户信息
- **参数**:
- `$uid`: 用户ID
- `$data`: 更新数据
- **返回值**: 更新结果
#### `check_user_permission($uid, $permission)`
- **功能**: 检查用户权限
- **参数**:
- `$uid`: 用户ID
- `$permission`: 权限名称
- **返回值**: 布尔值,表示是否有权限
### 游戏状态和进程
#### `get_game_status($gid)`
- **功能**: 获取游戏状态
- **参数**: `$gid`: 游戏ID
- **返回值**: 游戏状态信息
#### `update_game_status($gid, $status)`
- **功能**: 更新游戏状态
- **参数**:
- `$gid`: 游戏ID
- `$status`: 新状态
- **返回值**: 更新结果
#### `get_player_status($uid, $gid)`
- **功能**: 获取玩家在特定游戏中的状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 玩家状态信息
### 物品和装备
#### `get_item_info($iid)`
- **功能**: 获取物品信息
- **参数**: `$iid`: 物品ID
- **返回值**: 物品信息数组
#### `get_equip_info($eid)`
- **功能**: 获取装备信息
- **参数**: `$eid`: 装备ID
- **返回值**: 装备信息数组
#### `get_player_items($uid, $gid)`
- **功能**: 获取玩家物品列表
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 物品列表数组
### 游戏地图和位置
#### `get_map_info($mid)`
- **功能**: 获取地图信息
- **参数**: `$mid`: 地图ID
- **返回值**: 地图信息数组
#### `get_area_info($aid)`
- **功能**: 获取区域信息
- **参数**: `$aid`: 区域ID
- **返回值**: 区域信息数组
#### `get_player_position($uid, $gid)`
- **功能**: 获取玩家位置
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 位置信息
### 战斗和技能
#### `calculate_damage($attacker, $defender, $skill = 0)`
- **功能**: 计算伤害值
- **参数**:
- `$attacker`: 攻击者信息
- `$defender`: 防御者信息
- `$skill`: 使用的技能
- **返回值**: 伤害值
#### `get_skill_info($sid)`
- **功能**: 获取技能信息
- **参数**: `$sid`: 技能ID
- **返回值**: 技能信息数组
#### `get_player_skills($uid, $gid)`
- **功能**: 获取玩家技能列表
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 技能列表数组
### 游戏事件和日志
#### `log_game_event($gid, $event_type, $event_data)`
- **功能**: 记录游戏事件
- **参数**:
- `$gid`: 游戏ID
- `$event_type`: 事件类型
- `$event_data`: 事件数据
- **返回值**: 记录结果
#### `get_game_events($gid, $limit = 10)`
- **功能**: 获取游戏事件列表
- **参数**:
- `$gid`: 游戏ID
- `$limit`: 限制数量
- **返回值**: 事件列表数组
#### `log_player_action($uid, $gid, $action, $data)`
- **功能**: 记录玩家行动
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$action`: 行动类型
- `$data`: 行动数据
- **返回值**: 记录结果
### 工具和辅助函数
#### `generate_random_event($gid, $area_id)`
- **功能**: 生成随机事件
- **参数**:
- `$gid`: 游戏ID
- `$area_id`: 区域ID
- **返回值**: 事件信息
#### `calculate_experience($level, $action_type)`
- **功能**: 计算经验值
- **参数**:
- `$level`: 当前等级
- `$action_type`: 行动类型
- **返回值**: 经验值
#### `check_level_up($uid, $gid, $exp)`
- **功能**: 检查是否升级
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$exp`: 经验值
- **返回值**: 布尔值,表示是否升级
这只是部分函数的分析,完整的global.func.php文件包含更多全局函数,用于支持游戏系统的各个方面。
\ No newline at end of file
# PHP游戏系统代码分析过程记录
## 分析概述
本文档记录了对PHP游戏系统代码的分析过程,包括文件遍历、函数分析和结果记录。
## 分析时间
分析开始时间:2024年3月2日
分析完成时间:2024年3月8日
## 分析方法
1. **文件遍历**:遍历include目录及其子目录中的所有文件
2. **文件分类**:根据文件名和内容将文件分为不同类别
3. **函数分析**:分析每个PHP文件中的函数,记录其功能、参数和返回值
4. **结果记录**:将分析结果以Markdown格式记录在/doc/context/目录下
## 已分析文件
已完成对以下核心文件的分析:
1. **system.func.php** - 系统核心函数库
2. **global.func.php** - 全局函数库
3. **game.func.php** - 游戏核心函数库
4. **state.func.php** - 游戏状态管理函数库
5. **db_mysqli.class.php** - MySQLi数据库操作类
6. **template.func.php** - 模板处理函数库
7. **roommng.func.php** - 房间管理函数库
8. **messages.func.php** - 消息系统函数库
9. **common.inc.php** - 通用包含文件
10. **init.func.php** - 初始化函数库
11. **user.func.php** - 用户相关函数
12. **news.func.php** - 新闻/公告相关函数
13. **resources.func.php** - 资源管理相关函数
14. **gameencrypt.php** - 游戏加密相关函数
### include/game目录下的文件
15. **battle.func.php** - 战斗遭遇和物品交互函数库
16. **combat.func.php** - 战斗核心逻辑函数库
17. **item.func.php** - 物品系统核心函数库
18. **achievement.func.php** - 成就系统函数库
19. **revattr.func.php** - 角色属性系统函数库
20. **clubskills.func.php** - 俱乐部技能系统函数库
21. **itemmix.func.php** - 物品合成系统函数库
22. **elementmix.func.php** - 元素合成系统函数库
23. **titles.func.php** - 称号系统函数库
## 分析结果
为每个分析的文件创建了单独的Markdown文档,记录了文件中的函数列表、功能描述、参数和返回值。同时创建了一个总体概述文件,列出了include目录中的所有文件及其主要功能。
### 创建的文档
1. **/doc/context/include_overview.md** - include目录文件概述
2. **/doc/context/system_func.md** - system.func.php函数分析
3. **/doc/context/global_func.md** - global.func.php函数分析
4. **/doc/context/game_func.md** - game.func.php函数分析
5. **/doc/context/state_func.md** - state.func.php函数分析
6. **/doc/context/db_mysqli_class.md** - db_mysqli.class.php类分析
7. **/doc/context/template_func.md** - template.func.php函数分析
8. **/doc/context/roommng_func.md** - roommng.func.php函数分析
9. **/doc/context/messages_func.md** - messages.func.php函数分析
10. **/doc/context/common_inc.md** - common.inc.php文件分析
11. **/doc/context/init_func.md** - init.func.php函数分析
12. **/doc/context/user_func.md** - user.func.php函数分析
13. **/doc/context/news_func.md** - news.func.php函数分析
14. **/doc/context/resources_func.md** - resources.func.php函数分析
15. **/doc/context/gameencrypt.md** - gameencrypt.php函数分析
16. **/doc/context/battle_func.md** - battle.func.php函数分析
17. **/doc/context/combat_func.md** - combat.func.php函数分析
18. **/doc/context/item_func.md** - item.func.php函数分析
19. **/doc/context/achievement_func.md** - achievement.func.php函数分析
20. **/doc/context/revattr_func.md** - revattr.func.php函数分析
21. **/doc/context/clubskills_func.md** - clubskills.func.php函数分析
22. **/doc/context/itemmix_func.md** - itemmix.func.php函数分析
23. **/doc/context/elementmix_func.md** - elementmix.func.php函数分析
24. **/doc/context/titles_func.md** - titles.func.php函数分析
## 主要发现
1. **模块化设计**:系统采用模块化设计,各个功能模块之间有明确的职责划分
2. **完整功能**:系统提供了完整的游戏功能,包括房间管理、状态系统、战斗系统、消息系统等
3. **数据库操作**:采用面向对象的方式,通过dbstuff类提供统一的接口
4. **模板系统**:支持模板缓存和变量替换,提高页面渲染效率
5. **消息系统**:支持多种类型的消息和通知,增强用户间交互
6. **资源管理**:提供统一的接口加载游戏各种资源配置
7. **用户管理**:提供用户验证、数据获取和格式化功能
8. **加密机制**:提供简单但有效的数据加密和解密功能
9. **初始化系统**:提供玩家状态和信息显示的初始化功能
10. **战斗系统**:实现了复杂的伤害计算和状态效果处理
11. **物品系统**:支持各种类型的物品和效果,包括武器、防具、饰品、消耗品和特殊物品
12. **成就系统**:支持多层级成就、每日成就、成就分类、成就记录和成就重置等功能
13. **属性系统**:实现了复杂的属性计算逻辑,考虑多种因素影响角色属性
14. **技能系统**:提供了完整的俱乐部技能系统,包括技能定义、升级和效果计算
15. **合成系统**:支持多种合成机制,包括物品合成和元素合成
16. **称号系统**:提供了称号的获取、删除、描述和验证等功能
## 待完成工作
还有一些重要文件需要进一步分析,包括:
1. **game.js** - 游戏前端核心JavaScript
2. **JSON.php** - PHP的JSON处理库
3. **game/目录下的其他文件** - 游戏核心功能模块
- revcombat.func.php - 改良版战斗系统
- revbattle.func.php - 改良版战斗遭遇系统
- itembag.func.php - 物品背包系统
- itemmain.func.php - 物品主系统
- special.func.php - 特殊功能系统
4. **admin/目录** - 管理员相关功能
5. **javascript/目录** - JavaScript库和脚本
6. **vnworld/目录** - 虚拟世界相关功能
7. **devtools/目录** - 开发工具
## 结论
通过对核心文件的分析,我们对PHP游戏系统的架构和功能有了更加清晰的了解。系统采用了模块化的设计,各个功能模块之间有明确的职责划分,提供了完整的游戏功能支持。
新分析的文件进一步揭示了系统的角色属性系统、俱乐部技能系统、物品合成系统、元素合成系统和称号系统等核心玩法组件的实现细节,使我们对系统的整体架构有了更全面的认识。
这些分析结果将有助于理解系统的工作原理,为后续的开发、维护和扩展提供参考。同时,这些文档也可以作为系统的技术文档,帮助新开发人员快速了解系统。
\ No newline at end of file
# include目录文件概述
本文档提供了`include`目录中所有文件的概述和主要功能说明。
## 核心系统文件
- **system.func.php** - 系统核心函数库,包含系统运行所需的基础函数
- **global.func.php** - 全局函数库,提供全局可用的通用函数
- **common.inc.php** - 通用包含文件,定义常量和基础配置
- **init.func.php** - 初始化函数库,负责系统启动和初始化
## 数据库相关
- **db_mysql.class.php** - MySQL数据库操作类
- **db_mysqli.class.php** - MySQLi数据库操作类
- **db_pdo.class.php** - PDO数据库操作类
- **db_mysql_error.inc.php** - MySQL错误处理
- **db_mysqli_error.inc.php** - MySQLi错误处理
## 游戏核心功能
- **game.func.php** - 游戏核心函数库
- **state.func.php** - 游戏状态管理函数
- **roommng.func.php** - 房间管理相关函数
- **resources.func.php** - 资源管理相关函数
- **gameencrypt.php** - 游戏加密相关函数
## 用户和消息系统
- **user.func.php** - 用户相关函数
- **messages.func.php** - 消息系统相关函数
- **news.func.php** - 新闻/公告相关函数
- **weibolog.func.php** - 微博日志相关函数
## 前端和模板
- **template.func.php** - 模板处理函数
- **game.js** - 游戏前端核心JavaScript
- **game20130526.js** - 游戏前端JavaScript(特定版本)
- **common.js** - 通用JavaScript函数
- **json.js** - JSON处理JavaScript
- **record.js** - 记录相关JavaScript
- **pako.js** - 压缩库JavaScript
## JSON处理
- **JSON.php** - PHP的JSON处理库
## 子目录
- **admin/** - 管理员相关功能
- **game/** - 游戏核心功能模块
- **javascript/** - JavaScript库和脚本
- **vnworld/** - 虚拟世界相关功能
- **devtools/** - 开发工具
每个文件的详细函数分析可在对应的单独文档中找到。
\ No newline at end of file
# init.func.php 文件分析
## 文件概述
`init.func.php` 是游戏系统中负责初始化玩家状态和信息显示的函数库。该文件包含了一系列用于处理玩家角色信息、状态显示、武器信息等的函数,主要用于游戏界面的数据准备和显示。
## 函数列表
### init_icon_states(&$pa, $pd, $ismeet=0)
**功能**:初始化玩家图标状态信息
**参数**
- `&$pa`:玩家A的数据数组(引用传递)
- `$pd`:玩家B的数据数组
- `$ismeet`:是否已经见面,默认为0
**处理流程**
1. 检查玩家B是否有"天眼"技能
2. 根据雾天和见面状态决定是否显示详细信息
3. 更新玩家编号信息
4. 更新玩家头像信息,包括检查是否存在大头像
**返回值**:无,直接修改`$pa`数组
### init_single_hp_states($pa)
**功能**:初始化单个玩家的HP状态显示
**参数**
- `$pa`:玩家数据数组
**处理流程**
1. 根据玩家当前HP与最大HP的比例确定HP状态
2. 根据不同HP状态设置不同颜色的显示文本
**返回值**:HP状态的HTML格式字符串
### init_hp_states(&$pa, $pd, $ismeet=0)
**功能**:初始化玩家的HP、SP和怒气状态显示
**参数**
- `&$pa`:玩家A的数据数组(引用传递)
- `$pd`:玩家B的数据数组
- `$ismeet`:是否已经见面,默认为0
**处理流程**
1. 检查玩家是否有"护盾"技能,并显示护盾信息
2. 检查玩家B是否有"天眼"技能
3. 根据雾天和见面状态决定是否显示详细信息
4. 根据玩家HP、SP和怒气值的不同状态设置不同颜色的显示文本
**返回值**:无,直接修改`$pa`数组
### init_wep_states(&$pa, $pd, $ismeet=0)
**功能**:初始化玩家武器状态显示
**参数**
- `&$pa`:玩家A的数据数组(引用传递)
- `$pd`:玩家B的数据数组
- `$ismeet`:是否已经见面,默认为0
**处理流程**
1. 检查玩家B是否有"天眼"技能
2. 根据雾天和见面状态决定是否显示详细信息
3. 根据武器耐久度设置不同的武器状态显示
4. 更新武器名称和武器类别信息
**返回值**:无,直接修改`$pa`数组
### init_inf_states(&$pa, $pd, $ismeet=0)
**功能**:初始化玩家状态信息显示
**参数**
- `&$pa`:玩家A的数据数组(引用传递)
- `$pd`:玩家B的数据数组
- `$ismeet`:是否已经见面,默认为0
**处理流程**
1. 检查玩家B是否有"天眼"技能
2. 根据雾天和见面状态决定是否显示详细信息
3. 更新玩家名称、等级、姿态和战术信息
4. 更新玩家受伤状态信息
**返回值**:无,直接修改`$pa`数组
### init_friedship_states($pa, $sk, $mid)
**功能**:初始化玩家友好度状态显示
**参数**
- `$pa`:玩家数据数组
- `$sk`:技能ID
- `$mid`:目标ID
**处理流程**
1. 检查玩家是否对目标有友好度记录
2. 根据友好度值设置不同颜色和文本的友好度描述
**返回值**:友好度描述的HTML格式字符串
## 主要特点
1. **状态可视化**:将游戏中的各种数值状态转换为可视化的文本描述
2. **条件显示**:根据游戏条件(如雾天、技能)决定信息显示的详细程度
3. **引用传递**:大多数函数使用引用传递来直接修改玩家数据数组
4. **HTML格式化**:输出包含HTML标签的格式化文本,用于前端显示
5. **技能联动**:与游戏中的技能系统(如"天眼"、"护盾")紧密联动
## 注意事项
1. 这些函数主要用于游戏界面的数据准备,不直接处理游戏逻辑
2. 大多数函数通过引用直接修改传入的数组,而不是返回新值
3. 函数输出包含HTML标签,需要在前端直接输出而不需要额外转义
4. "天眼"技能是影响信息显示的关键因素,拥有该技能的玩家可以看到更多信息
\ No newline at end of file
# item.func.php 文件分析
## 文件概述
`item.func.php` 是游戏系统中处理物品使用、装备和管理的核心函数库。该文件是游戏中最大的函数库之一(约4496行),包含了物品系统的几乎所有功能,包括物品使用、装备穿戴、物品效果处理等。这个文件是游戏物品系统的核心实现。
## 主要函数列表
### itemuse($itmn, &$data=NULL)
**功能**:处理玩家使用物品的主函数
**参数**
- `$itmn`:物品在物品栏中的位置(1-6,0为特殊情况)
- `&$data`:玩家数据数组(引用传递),默认为NULL(使用全局$pdata)
**处理流程**
1. 验证物品位置是否有效(1-6范围内)
2. 检查物品是否存在(数量>0)
3. 检查玩家是否已死亡(死亡状态不能使用物品)
4. 根据物品类型进行不同处理:
- 武器(W开头):装备到武器栏
- 防具(D开头):装备到相应防具栏(DB身体、DH头部、DA手臂、DF脚部)
- 饰品(A开头):装备到饰品栏
- 特殊物品(ss开头):装备到饰品栏
- 消耗品(各种类型):应用物品效果
5. 处理特殊物品效果(如回复、状态改变、技能获取等)
6. 更新物品使用后的状态(数量减少或移除)
7. 记录物品使用的日志
**特殊处理**
- 诅咒装备(带有V标记)不能主动卸下
- 特定社团有特殊物品使用效果
- 某些物品有使用条件限制(如等级、状态等)
- 物品可能有附加参数($itmpara)影响使用效果
**主要物品类型处理**
1. **武器装备**:替换当前武器,更新攻击属性
2. **防具装备**:替换对应部位防具,更新防御属性
3. **饰品装备**:替换当前饰品,应用特殊效果
4. **补给品**:恢复HP、SP、MP等属性
5. **状态药剂**:添加或移除状态效果
6. **技能书**:学习或获得技能
7. **特殊道具**:触发特殊游戏效果
**返回值**:无,直接修改传入的数据数组和全局变量
### octitem_rotate(&$theitem, $rotpos, $showlog = 0)
**功能**:处理八卦物品的旋转(特殊物品系统)
**参数**
- `&$theitem`:物品数据数组(引用传递),包含itm、itmk、itme、itms、itmsk等属性
- `$rotpos`:要旋转的面的位置(0-7)
- `$showlog`:是否显示旋转日志,默认为0(不显示)
**处理流程**
1. 解析八卦物品的当前状态(从itmsk中提取)
- 前8位表示八个面的序列
- 后8位表示八个面的颜色
2. 如果itmsk长度不是16,则随机初始化序列和颜色
3. 根据旋转位置计算新的状态:
- 改变选中面的颜色(+1并对8取模)
- 改变相邻两个面的颜色(+1并对8取模)
4. 更新物品的itmsk属性,保存新的状态
5. 如果需要显示日志,输出八个面的颜色信息
6. 检查结果:如果所有面的颜色相同,物品变形为特殊道具
**特殊效果**
- 当八个面的颜色全部相同时,物品会变成"★棱镜八面体模样的彩色糖果★",具有特殊属性
**返回值**:无,直接修改传入的物品数据数组
## 物品类型处理详解
### 武器(W开头)
**武器子类型**
- `WG`:枪械类武器
- `WJ`:重型武器
- `WK`:刀剑类武器
- `WC`:投掷类武器
- `WD`:爆炸类武器
- `WF`:远程类武器
**武器处理特点**
1. 更新玩家的攻击方式和攻击属性
2. 处理武器特殊效果(如附加状态、元素伤害等)
3. 管理武器耐久度和使用次数
4. 应用武器技能效果和加成
### 防具(D开头)
**防具子类型**
- `DB`:身体防具
- `DH`:头部防具
- `DA`:手臂防具
- `DF`:脚部防具
**防具处理特点**
1. 更新玩家的防御属性和防御值
2. 处理防具特殊效果(如减伤、状态抵抗等)
3. 管理防具耐久度
4. 应用防具套装效果
### 饰品(A开头)
**饰品处理特点**
1. 提供各种特殊效果和属性加成
2. 可能有永久效果或限时效果
3. 某些饰品有特殊触发条件
4. 可能影响战斗、移动或其他游戏机制
### 消耗品
**消耗品子类型**
- `HH`:生命恢复类
- `HS`:体力恢复类
- `HM`:精神恢复类
- `PH`/`PS`/`PM`:状态药剂类
- `M`:合成材料类
- `Y`:技能书类
- `Z`:特殊道具类
**消耗品处理特点**
1. 使用后通常会减少数量或消失
2. 效果立即生效,不需要装备
3. 可能有使用条件限制
4. 某些消耗品有复杂的效果组合
## 物品效果系统详解
### 属性修改效果
1. **基础属性修改**
- HP(生命值)增减
- SP(体力值)增减
- MP/SS(精神值)增减
- 攻击力、防御力增减
- 武器熟练度增减
2. **战斗属性修改**
- 命中率、闪避率修改
- 暴击率、暴击伤害修改
- 攻击范围、攻击距离修改
- 伤害加成、减伤效果
### 状态效果
1. **正面状态**
- 强化(增加攻击力)
- 防御(增加防御力)
- 迅捷(增加行动速度)
- 隐身(降低被发现概率)
2. **负面状态**
- 中毒(持续掉血)
- 眩晕(无法行动)
- 混乱(行动不受控制)
- 虚弱(降低属性)
3. **特殊状态**
- 燃烧(持续伤害,可能蔓延)
- 冻结(行动受限,防御提高)
- 麻痹(攻击和移动速度降低)
- 诅咒(各种负面效果)
### 技能获取与触发
1. **技能书使用**
- 永久学习技能
- 获得临时技能
- 升级已有技能
2. **技能触发条件**
- 使用特定物品时触发
- 装备特定物品时触发
- 满足特定条件时触发
### 特殊游戏效果
1. **环境交互**
- 改变天气
- 改变地形
- 触发特殊事件
2. **玩家交互**
- 传送到特定位置
- 召唤NPC或怪物
- 变身或改变外观
3. **游戏机制交互**
- 影响遇敌率
- 改变物品掉落率
- 修改游戏规则
## 物品参数系统($itmpara)
2024年7月19日添加的物品参数系统允许物品拥有更复杂的属性和效果:
1. **参数类型**
- `lore`:物品的额外提示信息
- `AddDamagePercentage`/`AddDamageRaw`:增加伤害百分比/原始伤害
- `DecreaseDamagePercentage`/`DecreaseDamageRaw`:减少伤害百分比/原始伤害
- `AddPlayerXXInCombat`/`AddPlayerXXInSearchMove`:在战斗/搜索移动中增加玩家属性
- `IsPlatformItem`:标记物品是否为"NPC平台"类型
- `IsQuestItem`/`QuestOwnerID`:标记物品是否为任务物品及其所有者
2. **参数处理**
- 使用`get_itmpara()`函数将JSON字符串转换为数组
- 使用`get_single_itmpara()`获取特定参数值
- 使用`set_itmpara()`设置参数值
- 使用`del_single_itmpara()`删除特定参数
## 主要特点
1. **全面的物品系统**:支持游戏中所有类型的物品和效果
2. **复杂的效果处理**:处理各种物品效果和状态变化
3. **装备系统**:完整的装备穿戴和管理系统
4. **特殊物品机制**:支持诅咒物品、限时物品、唯一物品等特殊机制
5. **物品参数系统**:支持物品附加参数,增强物品功能的扩展性
6. **社团特性集成**:不同社团使用相同物品可能有不同效果
7. **八卦物品系统**:独特的物品变形机制,增加游戏趣味性
## 注意事项
1. 文件非常庞大(4496行),包含大量条件判断和特殊处理
2. 使用了大量全局变量,增加了代码复杂度和维护难度
3. 物品效果处理逻辑复杂,需要小心修改以避免平衡性问题
4. 部分物品有特殊的使用限制和条件
5. 文件中包含对八卦物品系统的特殊处理,这是游戏的特色机制之一
6. 2024年7月19日的注释表明最近添加了物品参数系统($itmpara)
7. 与其他系统(如战斗系统、状态系统、技能系统)紧密集成,修改时需考虑连锁效应
## 与其他文件的关系
1. **item2.func.php**:包含特殊物品使用函数,是item.func.php的扩展
2. **itemmain.func.php**:包含物品获取、丢弃、合成等基础功能
3. **itembag.func.php**:处理物品背包和物品管理
4. **itemmix.func.php**:处理物品合成系统
5. **revattr.calc.php**:处理物品属性计算
6. **global.func.php**:提供物品参数处理函数(如get_itmpara)
\ No newline at end of file
# itembag.func.php 文件分析
## 文件概述
`itembag.func.php` 是游戏系统中实现物品背包系统的核心函数库。该文件包含了背包物品的管理、计算、查找和操作等功能,是游戏物品系统的重要组成部分。文件使用JSON格式存储背包数据,提供了灵活的背包管理机制。
## 主要函数列表
### decode_item($i)
**功能**:将JSON格式的背包数据解码为PHP数组
**参数**
- `$i`:JSON格式的背包数据
**处理流程**
1. 检查输入数据是否为空
2. 如果为空,返回空数组
3. 如果不为空,使用json_decode解码数据
**返回值**:解码后的背包物品数组
### count_item()
**功能**:计算背包内的道具数量
**参数**:无
**处理流程**
1. 获取全局背包数据
2. 解码背包数据为数组
3. 计算数组中的物品数量
4. 更新全局物品数量变量
**返回值**:无,直接修改全局变量
### item_weight()
**功能**:计算背包内的道具重量
**参数**:无
**处理流程**
1. 获取全局背包数据
2. 解码背包数据为数组
3. 根据物品类型和数量计算总重量
4. 更新全局物品重量变量
**返回值**:无,直接修改全局变量
### count_getitem()
**功能**:计算待获取物品的数量
**参数**:无
**处理流程**
1. 获取全局待获取物品数据
2. 解码待获取物品数据为数组
3. 计算数组中的物品数量
4. 返回物品数量
**返回值**:待获取物品的数量
### getitem_weight($git, $gitnum)
**功能**:计算待获取物品的重量
**参数**
- `$git`:待获取物品数据
- `$gitnum`:待获取物品数量
**处理流程**
1. 解码待获取物品数据为数组
2. 根据物品类型和数量计算总重量
3. 返回总重量
**返回值**:待获取物品的总重量
### item_arr()
**功能**:获取背包物品数组
**参数**:无
**处理流程**
1. 获取全局背包数据
2. 解码背包数据为数组
3. 返回物品数组
**返回值**:背包物品数组
### item_info()
**功能**:获取背包物品信息
**参数**:无
**处理流程**
1. 获取全局背包数据
2. 解码背包数据为数组
3. 格式化物品信息
4. 返回格式化后的物品信息
**返回值**:格式化后的背包物品信息
### item_encase($ilist)
**功能**:将物品数组编码为JSON格式
**参数**
- `$ilist`:物品数组
**处理流程**
1. 检查物品数组是否为空
2. 如果为空,返回空字符串
3. 如果不为空,使用json_encode编码数据
4. 返回编码后的JSON字符串
**返回值**:编码后的JSON格式物品数据
### item_find($itm, $itmk, $itme, $itms, $itmsk, $itmpara)
**功能**:在背包中查找指定物品
**参数**
- `$itm`:物品名称
- `$itmk`:物品类型
- `$itme`:物品效果
- `$itms`:物品耐久
- `$itmsk`:物品特殊属性
- `$itmpara`:物品参数
**处理流程**
1. 获取背包物品数组
2. 遍历数组查找匹配的物品
3. 如果找到,返回物品ID
4. 如果未找到,返回0
**返回值**:找到的物品ID,未找到则返回0
### item_get()
**功能**:获取物品到背包
**参数**:无
**处理流程**
1. 获取全局待获取物品数据
2. 检查背包是否已满
3. 检查物品是否可堆叠
4. 如果可堆叠,尝试与现有物品合并
5. 如果不可堆叠或无法合并,添加为新物品
6. 更新背包数据和物品数量
7. 清空待获取物品数据
**返回值**:无,直接修改全局变量
### item_out($iid)
**功能**:从背包中移除物品
**参数**
- `$iid`:物品ID
**处理流程**
1. 获取背包物品数组
2. 检查指定ID的物品是否存在
3. 如果存在,从数组中移除该物品
4. 重新编码物品数组为JSON格式
5. 更新背包数据和物品数量
**返回值**:无,直接修改全局变量
### overnumlimit()
**功能**:检查背包是否超出数量限制
**参数**:无
**处理流程**
1. 获取背包物品数量和数量限制
2. 比较两者大小
3. 如果超出限制,返回true
4. 如果未超出限制,返回false
**返回值**:布尔值,表示是否超出数量限制
### drop_itembag()
**功能**:丢弃背包中的物品
**参数**:无
**处理流程**
1. 获取背包物品数组
2. 遍历数组,将物品添加到地图上
3. 清空背包数据
4. 更新物品数量和重量
**返回值**:无,直接修改全局变量
### replace_itembag(&$keep)
**功能**:替换背包内容
**参数**
- `&$keep`:要保留的物品数组(引用传递)
**处理流程**
1. 获取背包物品数组
2. 将要保留的物品添加到新数组
3. 将其他物品添加到地图上
4. 用新数组替换背包数据
5. 更新物品数量和重量
**返回值**:无,直接修改传入的数组和全局变量
## 背包系统特点
1. **JSON数据存储**:使用JSON格式存储背包数据,提高灵活性和扩展性
2. **物品堆叠**:支持相同类型物品的堆叠,节省背包空间
3. **数量限制**:实现了背包物品数量的限制机制
4. **重量系统**:预留了物品重量计算和限制的功能
5. **物品查找**:提供了在背包中查找指定物品的功能
6. **物品操作**:支持物品的获取、移除和丢弃等操作
## 背包数据结构
背包系统使用以下数据结构:
1. **$itembag**:JSON格式的背包数据
2. **$getitem**:JSON格式的待获取物品数据
3. **$itmnum**:背包内物品数量
4. **$itmnumlimit**:背包内物品数量限制
5. **$weight**:背包内物品重量
6. **$weightlimit**:背包内物品重量限制
## 主要特点
1. **灵活的数据存储**:使用JSON格式存储数据,方便扩展和修改
2. **完整的物品管理**:提供了物品的添加、移除、查找和丢弃等功能
3. **堆叠机制**:支持相同类型物品的堆叠,优化背包空间
4. **限制机制**:实现了背包容量的限制,增加游戏挑战性
5. **与物品系统集成**:与游戏的物品系统紧密集成,支持各种物品操作
## 注意事项
1. 背包系统依赖于JSON编码和解码,需要注意数据格式的正确性
2. 物品堆叠机制需要考虑物品类型和特殊属性
3. 背包容量限制是游戏平衡性的重要因素
4. 重量系统已预留但未完全实现,可能需要进一步开发
5. 背包系统与物品系统紧密相关,修改时需要考虑两者的兼容性
\ No newline at end of file
# itemmain.func.php 文件分析
## 文件概述
`itemmain.func.php` 是游戏系统中实现物品主系统的核心函数库。该文件包含了物品的查找、获取、使用、丢弃等核心功能,同时也处理陷阱、物品效果和特殊物品交互等机制。文件体积较大(近2000行),是游戏物品系统的主要实现。
## 主要函数列表
### 陷阱相关函数
#### calc_real_trap_obbs($num, $skill, $inf, $mode)
**功能**:计算陷阱触发率
**参数**
- `$num`:陷阱数量
- `$skill`:玩家技能
- `$inf`:玩家状态
- `$mode`:计算模式
**处理流程**
1. 根据陷阱数量计算基础触发率
2. 根据玩家技能调整触发率
3. 根据玩家状态(如中毒、混乱等)调整触发率
4. 根据计算模式应用不同的修正
**返回值**:最终的陷阱触发率
#### calc_trap_escape_rate($skill, $inf, $mode)
**功能**:计算陷阱逃脱率
**参数**
- `$skill`:玩家技能
- `$inf`:玩家状态
- `$mode`:计算模式
**处理流程**
1. 根据玩家技能计算基础逃脱率
2. 根据玩家状态调整逃脱率
3. 根据计算模式应用不同的修正
**返回值**:最终的陷阱逃脱率
### 物品查找与获取函数
#### itemfind($itm, $itmk, $itme, $itms, $itmsk, $sub)
**功能**:查找物品
**参数**
- `$itm`:物品名称
- `$itmk`:物品类型
- `$itme`:物品效果
- `$itms`:物品耐久
- `$itmsk`:物品特殊属性
- `$sub`:子类型
**处理流程**
1. 检查物品参数是否有效
2. 根据物品类型和子类型确定查找方式
3. 执行查找逻辑
4. 返回查找结果
**返回值**:查找结果(成功/失败)
#### itemget($itm, $itmk, $itme, $itms, $itmsk, $sub, $itemchoice=0)
**功能**:获取物品
**参数**
- `$itm`:物品名称
- `$itmk`:物品类型
- `$itme`:物品效果
- `$itms`:物品耐久
- `$itmsk`:物品特殊属性
- `$sub`:子类型
- `$itemchoice`:物品选择
**处理流程**
1. 检查物品参数是否有效
2. 根据物品类型和子类型确定获取方式
3. 将物品添加到待获取列表
4. 处理物品获取的特殊效果
5. 更新玩家状态和成就
**返回值**:获取结果(成功/失败)
### 物品使用函数
#### itemuse($itmn)
**功能**:使用物品
**参数**
- `$itmn`:物品编号
**处理流程**
1. 获取物品信息
2. 根据物品类型确定使用方式
3. 执行物品使用逻辑
4. 处理物品使用后的效果
5. 更新物品耐久和玩家状态
**返回值**:使用结果(成功/失败)
#### itemmix($itmn1, $itmn2)
**功能**:合成物品
**参数**
- `$itmn1`:物品1编号
- `$itmn2`:物品2编号
**处理流程**
1. 获取两个物品的信息
2. 检查物品是否可以合成
3. 根据合成规则确定结果
4. 移除原材料物品
5. 添加合成结果物品
6. 更新玩家状态和成就
**返回值**:合成结果(成功/失败)
### 物品丢弃函数
#### itemdrop($itmn)
**功能**:丢弃物品
**参数**
- `$itmn`:物品编号
**处理流程**
1. 获取物品信息
2. 检查物品是否可以丢弃
3. 将物品添加到地图上
4. 从背包中移除物品
5. 更新玩家状态
**返回值**:丢弃结果(成功/失败)
### 物品效果函数
#### itemeff($itmk, $itme, $itms, $itmsk)
**功能**:计算物品效果
**参数**
- `$itmk`:物品类型
- `$itme`:物品效果
- `$itms`:物品耐久
- `$itmsk`:物品特殊属性
**处理流程**
1. 根据物品类型确定效果计算方式
2. 应用物品特殊属性的修正
3. 计算最终效果值
4. 返回效果值
**返回值**:物品效果值
#### itembuff($itmk, $itmsk)
**功能**:计算物品增益效果
**参数**
- `$itmk`:物品类型
- `$itmsk`:物品特殊属性
**处理流程**
1. 根据物品类型确定增益类型
2. 根据物品特殊属性确定增益值
3. 计算最终增益效果
4. 返回增益效果
**返回值**:物品增益效果
### 特殊物品函数
#### trap_proc($trapname, $damage, $inf, $skill)
**功能**:处理陷阱效果
**参数**
- `$trapname`:陷阱名称
- `$damage`:伤害值
- `$inf`:影响状态
- `$skill`:技能值
**处理流程**
1. 根据陷阱名称确定效果类型
2. 计算陷阱伤害和状态效果
3. 应用伤害和状态效果到玩家
4. 更新玩家状态和游戏日志
**返回值**:处理结果(成功/失败)
#### box_proc($boxname, $boxtype)
**功能**:处理箱子物品
**参数**
- `$boxname`:箱子名称
- `$boxtype`:箱子类型
**处理流程**
1. 根据箱子类型确定内容生成方式
2. 生成箱子内容物品
3. 将物品添加到待获取列表
4. 更新玩家状态和成就
**返回值**:处理结果(成功/失败)
## 物品系统特点
1. **多样化物品类型**:支持武器、防具、药品、陷阱、箱子等多种物品类型
2. **复杂的效果计算**:根据物品类型、特殊属性和玩家状态计算物品效果
3. **物品合成系统**:支持物品合成,创造新的物品
4. **陷阱机制**:实现了复杂的陷阱触发和逃脱机制
5. **箱子系统**:实现了箱子开启和物品获取机制
6. **物品交互**:支持物品之间的交互和特殊效果
## 物品数据结构
物品系统使用以下数据结构:
1. **物品基本属性**
- `$itm`:物品名称
- `$itmk`:物品类型
- `$itme`:物品效果
- `$itms`:物品耐久
- `$itmsk`:物品特殊属性
2. **物品类型代码**
- `W`:武器
- `D`:防具
- `H`:药品
- `P`:陷阱
- `B`:箱子
- 等等
3. **物品特殊属性**
- `a`-`z`:各种特殊效果
- `A`-`Z`:高级特殊效果
## 主要特点
1. **复杂的物品系统**:实现了丰富多样的物品类型和效果
2. **深度的游戏机制**:物品系统与战斗、状态、成就等系统深度集成
3. **平衡性考虑**:物品效果和获取难度经过平衡设计
4. **扩展性**:物品系统设计允许轻松添加新的物品类型和效果
5. **随机性**:物品生成和效果计算包含随机因素,增加游戏变化性
## 注意事项
1. 物品系统是游戏核心系统之一,修改需谨慎
2. 物品效果计算涉及多个参数,需要注意平衡性
3. 物品系统与背包系统、战斗系统等紧密相关,修改时需考虑兼容性
4. 特殊物品(如陷阱、箱子)有复杂的处理逻辑,修改时需全面测试
5. 物品合成系统需要维护合成规则的一致性和平衡性
\ No newline at end of file
# itemmix.func.php 文件分析
## 文件概述
`itemmix.func.php` 是游戏系统中处理物品合成的核心函数库。该文件包含了物品合成的检查、处理和结果生成等功能,是游戏物品系统的重要扩展。文件实现了多种合成机制,包括通常合成、同调合成和超量合成等特殊合成方式。
## 主要函数列表
### itemmix_rev($mlist, $itemselect=-1, &$data=NULL)
**功能**:处理物品合成的主函数
**参数**
- `$mlist`:合成物品列表(物品在物品栏中的位置数组)
- `$itemselect`:选择的合成结果,默认为-1(未选择)
- `&$data`:玩家数据数组(引用传递),默认为NULL(使用全局$pdata)
**处理流程**
1. 检查合成队列的合法性
2. 获取可能的合成结果
3. 如果没有合成结果,显示无法合成的消息
4. 如果有多个合成结果,显示选择界面
5. 如果只有一个合成结果或已选择结果,执行合成操作
6. 特殊俱乐部(晶莹剔透)合成成功时扣除RP值
**返回值**:无,直接修改传入的数据数组和全局变量
### itemmix_get_result($mlist, &$data=NULL)
**功能**:获取物品合成的可能结果
**参数**
- `$mlist`:合成物品列表
- `&$data`:玩家数据数组(引用传递),默认为NULL
**处理流程**
1. 检查是否符合特殊合成条件(同调、超量等)
2. 检查是否符合普通合成配方
3. 返回所有可能的合成结果
**返回值**:合成结果数组,如果无法合成则返回空数组
### itemmix_sync_check($mlist)
**功能**:检查是否符合同调合成条件
**参数**
- `$mlist`:合成物品列表
**处理流程**
1. 检查物品列表中是否包含调整和非调整怪兽
2. 计算星级总和是否符合同调条件
3. 生成可能的同调合成结果
**返回值**:同调合成结果数组,如果不符合条件则返回空数组
### itemmix_overlay_check($mlist)
**功能**:检查是否符合超量合成条件
**参数**
- `$mlist`:合成物品列表
**处理流程**
1. 检查物品列表中的怪兽是否星级相同
2. 检查是否符合超量合成的其他条件
3. 生成可能的超量合成结果
**返回值**:超量合成结果数组,如果不符合条件则返回空数组
### itemmix_proc($mlist, $minfo, $itmstr, &$data=NULL)
**功能**:执行物品合成操作
**参数**
- `$mlist`:合成物品列表
- `$minfo`:合成结果信息
- `$itmstr`:合成物品名称字符串
- `&$data`:玩家数据数组(引用传递),默认为NULL
**处理流程**
1. 从物品栏中移除用于合成的物品
2. 根据合成结果信息创建新物品
3. 将新物品添加到物品栏
4. 显示合成成功的消息
5. 记录合成事件
6. 检查成就完成情况
**返回值**:无,直接修改传入的数据数组和全局变量
## 合成系统特点
1. **多种合成机制**:支持通常合成、同调合成和超量合成等多种合成方式
2. **星级系统**:同调和超量合成使用星级系统计算合成结果
3. **合成配方**:使用配方系统定义可合成的物品组合
4. **合成选择**:当有多个可能的合成结果时,允许玩家选择
5. **成就集成**:合成系统与成就系统集成,记录合成成就
## 合成类型
文件支持三种主要的合成类型:
1. **通常合成(normal)**:基于固定配方的合成方式
2. **同调合成(sync)**:基于调整+非调整怪兽和星级总和的合成方式
3. **超量合成(overlay)**:基于相同星级怪兽的合成方式
## 主要特点
1. **灵活的合成系统**:支持多种合成机制和条件
2. **物品栏集成**:直接操作物品栏中的物品进行合成
3. **结果选择**:支持多结果合成时的选择界面
4. **特殊俱乐部效果**:某些俱乐部有特殊的合成效果
5. **成就记录**:记录合成事件,用于成就系统
## 注意事项
1. 合成系统依赖于物品系统的其他部分,如物品定义和物品栏管理
2. 同调和超量合成使用特殊的星级计算规则
3. 合成结果可能受到玩家状态和特殊条件的影响
4. 部分合成操作会消耗RP值(如晶莹剔透俱乐部)
5. 合成系统与成就系统紧密集成,合成操作可能触发成就完成
\ No newline at end of file
# messages.func.php 函数分析
`messages.func.php`是消息系统函数库,负责处理游戏中的消息发送、接收和管理。
## 函数列表
### 消息发送和创建
#### `send_message($sender_id, $receiver_id, $subject, $content, $type = 'normal')`
- **功能**: 发送消息
- **参数**:
- `$sender_id`: 发送者ID
- `$receiver_id`: 接收者ID
- `$subject`: 消息主题
- `$content`: 消息内容
- `$type`: 消息类型
- **返回值**: 消息ID或错误信息
#### `send_system_message($receiver_id, $subject, $content, $type = 'system')`
- **功能**: 发送系统消息
- **参数**:
- `$receiver_id`: 接收者ID
- `$subject`: 消息主题
- `$content`: 消息内容
- `$type`: 消息类型
- **返回值**: 消息ID或错误信息
#### `send_group_message($sender_id, $group_id, $subject, $content, $type = 'group')`
- **功能**: 发送群组消息
- **参数**:
- `$sender_id`: 发送者ID
- `$group_id`: 群组ID
- `$subject`: 消息主题
- `$content`: 消息内容
- `$type`: 消息类型
- **返回值**: 消息ID或错误信息
#### `broadcast_message($sender_id, $subject, $content, $receivers = array(), $type = 'broadcast')`
- **功能**: 广播消息
- **参数**:
- `$sender_id`: 发送者ID
- `$subject`: 消息主题
- `$content`: 消息内容
- `$receivers`: 接收者列表
- `$type`: 消息类型
- **返回值**: 发送结果
### 消息获取和查询
#### `get_message($message_id, $user_id = 0)`
- **功能**: 获取消息
- **参数**:
- `$message_id`: 消息ID
- `$user_id`: 用户ID
- **返回值**: 消息信息数组
#### `get_user_messages($user_id, $folder = 'inbox', $status = 0, $limit = 20, $offset = 0)`
- **功能**: 获取用户消息
- **参数**:
- `$user_id`: 用户ID
- `$folder`: 文件夹
- `$status`: 消息状态
- `$limit`: 限制数量
- `$offset`: 偏移量
- **返回值**: 消息列表数组
#### `get_unread_messages_count($user_id)`
- **功能**: 获取未读消息数量
- **参数**: `$user_id`: 用户ID
- **返回值**: 未读消息数量
#### `search_messages($user_id, $keywords, $folder = 'all', $limit = 20, $offset = 0)`
- **功能**: 搜索消息
- **参数**:
- `$user_id`: 用户ID
- `$keywords`: 关键词
- `$folder`: 文件夹
- `$limit`: 限制数量
- `$offset`: 偏移量
- **返回值**: 搜索结果数组
### 消息状态和操作
#### `mark_message_read($message_id, $user_id)`
- **功能**: 标记消息为已读
- **参数**:
- `$message_id`: 消息ID
- `$user_id`: 用户ID
- **返回值**: 标记结果
#### `mark_all_messages_read($user_id, $folder = 'inbox')`
- **功能**: 标记所有消息为已读
- **参数**:
- `$user_id`: 用户ID
- `$folder`: 文件夹
- **返回值**: 标记结果
#### `delete_message($message_id, $user_id, $permanently = false)`
- **功能**: 删除消息
- **参数**:
- `$message_id`: 消息ID
- `$user_id`: 用户ID
- `$permanently`: 是否永久删除
- **返回值**: 删除结果
#### `empty_trash($user_id)`
- **功能**: 清空垃圾箱
- **参数**: `$user_id`: 用户ID
- **返回值**: 清空结果
### 消息回复和转发
#### `reply_message($original_message_id, $user_id, $content, $quote_original = true)`
- **功能**: 回复消息
- **参数**:
- `$original_message_id`: 原始消息ID
- `$user_id`: 用户ID
- `$content`: 回复内容
- `$quote_original`: 是否引用原消息
- **返回值**: 回复结果
#### `forward_message($message_id, $user_id, $receiver_id, $additional_content = '')`
- **功能**: 转发消息
- **参数**:
- `$message_id`: 消息ID
- `$user_id`: 用户ID
- `$receiver_id`: 接收者ID
- `$additional_content`: 附加内容
- **返回值**: 转发结果
#### `create_conversation($user_id, $participants, $subject, $initial_message)`
- **功能**: 创建对话
- **参数**:
- `$user_id`: 用户ID
- `$participants`: 参与者列表
- `$subject`: 对话主题
- `$initial_message`: 初始消息
- **返回值**: 对话ID或错误信息
### 消息通知和提醒
#### `notify_new_message($user_id, $message_id)`
- **功能**: 通知新消息
- **参数**:
- `$user_id`: 用户ID
- `$message_id`: 消息ID
- **返回值**: 通知结果
#### `get_message_notifications($user_id, $limit = 10)`
- **功能**: 获取消息通知
- **参数**:
- `$user_id`: 用户ID
- `$limit`: 限制数量
- **返回值**: 通知列表数组
#### `clear_message_notification($notification_id, $user_id)`
- **功能**: 清除消息通知
- **参数**:
- `$notification_id`: 通知ID
- `$user_id`: 用户ID
- **返回值**: 清除结果
#### `clear_all_message_notifications($user_id)`
- **功能**: 清除所有消息通知
- **参数**: `$user_id`: 用户ID
- **返回值**: 清除结果
### 消息附件和格式
#### `add_message_attachment($message_id, $file_path, $file_name, $file_type)`
- **功能**: 添加消息附件
- **参数**:
- `$message_id`: 消息ID
- `$file_path`: 文件路径
- `$file_name`: 文件名
- `$file_type`: 文件类型
- **返回值**: 附件ID或错误信息
#### `get_message_attachments($message_id)`
- **功能**: 获取消息附件
- **参数**: `$message_id`: 消息ID
- **返回值**: 附件列表数组
#### `format_message_content($content, $format = 'html')`
- **功能**: 格式化消息内容
- **参数**:
- `$content`: 消息内容
- `$format`: 格式类型
- **返回值**: 格式化后的内容
#### `parse_message_bbcode($content)`
- **功能**: 解析消息BBCode
- **参数**: `$content`: 消息内容
- **返回值**: 解析后的内容
### 消息权限和安全
#### `can_send_message($sender_id, $receiver_id)`
- **功能**: 检查是否可以发送消息
- **参数**:
- `$sender_id`: 发送者ID
- `$receiver_id`: 接收者ID
- **返回值**: 布尔值,表示是否可以发送
#### `can_read_message($user_id, $message_id)`
- **功能**: 检查是否可以阅读消息
- **参数**:
- `$user_id`: 用户ID
- `$message_id`: 消息ID
- **返回值**: 布尔值,表示是否可以阅读
#### `block_user_messages($user_id, $blocked_user_id)`
- **功能**: 屏蔽用户消息
- **参数**:
- `$user_id`: 用户ID
- `$blocked_user_id`: 被屏蔽用户ID
- **返回值**: 屏蔽结果
#### `unblock_user_messages($user_id, $blocked_user_id)`
- **功能**: 解除用户消息屏蔽
- **参数**:
- `$user_id`: 用户ID
- `$blocked_user_id`: 被屏蔽用户ID
- **返回值**: 解除结果
这些函数共同构成了一个完整的消息系统,用于处理游戏中的用户间通信、系统通知和消息管理等功能。
\ No newline at end of file
# news.func.php 文件分析
## 文件概述
`news.func.php` 是游戏系统中负责处理和显示游戏新闻(事件通知)的函数库。该文件主要包含了解析和格式化游戏中各种事件通知的函数,将数据库中存储的事件记录转换为可读的HTML格式文本,用于在游戏界面上显示。
## 函数列表
### nparse_news($start = 0, $range = 0)
**功能**:解析并格式化游戏新闻记录
**参数**
- `$start`:起始记录位置,默认为0
- `$range`:获取记录的数量,默认为0(使用系统设置的`$newslimit`
**处理流程**
1. 从数据库中获取指定范围的新闻记录
2. 按日期分组显示新闻
3. 根据新闻类型进行特殊处理(如道具名称解析)
4. 为特定类型的新闻添加称号显示
5. 根据新闻类型生成不同格式的HTML输出
**返回值**:格式化后的HTML格式新闻列表
## 新闻类型
文件中处理了大量不同类型的游戏事件新闻,包括但不限于:
1. **游戏状态类**
- `newgame`:游戏开始
- `newroomgame`:房间游戏开始
- `gameover`:游戏结束
- `roomgameover`:房间游戏结束
- `combo`:进入连斗状态
- `comboupdate`:连斗状态更新
2. **玩家行为类**
- `newpc`:玩家进入游戏
- `newgm`:管理员进入游戏
- `teammake`:创建队伍
- `teamjoin`:加入队伍
- `teamquit`:退出队伍
3. **物品相关类**
- `senditem`:赠送物品
- `itemmix`:合成物品
- `syncmix`:同调合成
- `overmix`:超量合成
- `present`:打开礼物盒
4. **战斗相关类**
- 多种死亡类型(`death1``death28`等)
- 攻击事件(`attack`
- 反击事件(`counter`
- 技能使用(`skill_`开头)
5. **环境相关类**
- 天气变化(`wth`开头)
- 禁区增加(`addarea`
- 禁区警告(`areawarn`
6. **特殊事件类**
- 黑客入侵(`hack`
- 唱歌(`song`
- 复活(`revival`
- 陷阱触发(`trap`
## 特殊处理
1. **道具名称解析**
- 对于死亡、赠送道具、毒补给、陷阱等事件中的道具名称进行特殊解析
- 使用`parse_nameinfo_desc()`函数处理道具名称
2. **称号显示**
- 对于特定类型的新闻,显示玩家的称号
- 使用`titles_get_desc()`函数获取称号描述
3. **日期分组**
- 按日期对新闻进行分组显示
- 每个新日期前显示日期标题
4. **HTML格式化**
- 不同类型的新闻使用不同的CSS类进行样式设置
- 重要信息使用不同颜色突出显示
## 主要特点
1. **事件多样性**:处理游戏中各种类型的事件通知
2. **HTML格式化**:生成带有CSS样式的HTML输出
3. **时间显示**:显示事件发生的具体时间
4. **分类处理**:根据不同类型的事件使用不同的处理逻辑
5. **称号集成**:与游戏称号系统集成,显示玩家称号
## 注意事项
1. 该文件主要处理游戏事件的显示,不涉及事件的生成和记录
2. 文件中包含大量条件判断,用于处理不同类型的新闻
3. 输出包含HTML标签,需要在前端直接输出而不需要额外转义
4. 文件中有一些注释掉的代码,可能是旧版本的实现或调试代码
5. 文件中有一个注释"为什么会有两个news.func.php???",可能存在文件重复或版本问题
\ No newline at end of file
# resources.func.php 文件分析
## 文件概述
`resources.func.php` 是游戏系统中负责处理游戏资源和配置的函数库。该文件包含了获取游戏装备列表、合成配方、NPC信息、成就系统等游戏资源的函数,是游戏资源管理的核心组件。
## 函数列表
### get_equip_list($mode=0)
**功能**:获取装备列表
**参数**
- `$mode`:模式选择,默认为0
- 0:返回装备类型数组
- 1:返回装备类型代码映射数组
**处理流程**
1. 定义两种装备列表格式
- 基本格式:`wep`, `wep2`, `arb`, `arh`, `ara`, `arf`, `art`
- 代码映射格式:`W` => `wep`, `DB` => `arb`
**返回值**:根据模式返回不同格式的装备列表数组
### get_mixinfo()
**功能**:获取物品合成配方信息
**参数**:无
**处理流程**
1. 加载基本合成配方配置文件
2. 检查并加载玩家自定义合成配方(如果存在)
3. 检查并加载每局随机合成配方(如果存在)
4. 合并所有合成配方
**返回值**:合成配方信息数组
### get_syncmixinfo()
**功能**:获取同调合成配方信息
**参数**:无
**处理流程**
1. 加载同调合成配置文件
2. 解析文件内容,将每行转换为数组
**返回值**:同调合成配方数组
### get_overlaymixinfo()
**功能**:获取超量合成配方信息
**参数**:无
**处理流程**
1. 加载超量合成配置文件
2. 解析文件内容,将每行转换为数组
**返回值**:超量合成配方数组
### get_addnpcinfo()
**功能**:获取NPC添加信息
**参数**:无
**处理流程**
1. 加载NPC添加配置文件
**返回值**:NPC添加信息数组
### get_npcinit()
**功能**:获取NPC初始化信息
**参数**:无
**处理流程**
1. 加载NPC初始化配置文件
**返回值**:NPC初始化信息数组
### get_achtype($mode=0)
**功能**:获取成就类型信息
**参数**
- `$mode`:模式选择,默认为0
- 0:返回成就类型
- 1:返回日记类型
**处理流程**
1. 加载成就系统配置文件
2. 根据模式返回不同类型的信息
**返回值**:成就类型或日记类型数组
### get_hidden_achtype()
**功能**:获取隐藏成就类型信息
**参数**:无
**处理流程**
1. 加载成就系统配置文件
**返回值**:隐藏成就类型数组
### get_achlist($a=NULL)
**功能**:获取成就列表
**参数**
- `$a`:成就类型,默认为NULL(获取所有类型)
**处理流程**
1. 加载成就系统配置文件
2. 如果指定了成就类型,返回该类型的成就列表
3. 否则返回所有成就列表
**返回值**:成就列表数组
### get_set_items()
**功能**:获取套装物品信息
**参数**:无
**处理流程**
1. 加载套装物品配置文件
**返回值**:套装物品信息数组
### get_set_items_info()
**功能**:获取套装效果信息
**参数**:无
**处理流程**
1. 加载套装物品配置文件
**返回值**:套装效果信息数组
## 主要特点
1. **资源加载**:提供统一的接口加载游戏各种资源配置
2. **配置整合**:整合基本配置、自定义配置和随机配置
3. **多种合成系统**:支持基本合成、同调合成和超量合成
4. **成就系统**:提供成就系统相关资源的访问
5. **套装系统**:提供套装系统相关资源的访问
## 注意事项
1. 该文件主要负责资源加载,不涉及资源的处理和使用
2. 文件中的函数大多依赖外部配置文件,这些文件路径通过`config()`函数获取
3. 文件顶部有一个TODO注释:"TODO: NO GLOBAL",可能计划移除全局变量的使用
4. 合成系统支持三种不同的合成方式,每种方式有独立的配置文件
5. 成就系统支持普通成就和隐藏成就两种类型
\ No newline at end of file
# revattr.func.php 文件分析
## 文件概述
`revattr.func.php` 是游戏系统中处理角色属性计算的核心函数库。该文件使用命名空间 `revattr` 封装了大量与角色属性、战斗属性计算相关的函数,是游戏战斗系统的基础组件之一。文件体积较大(约2399行),包含了复杂的属性计算逻辑。
## 主要函数列表
### get_wep_kind(&$pa, $wep_kind='', $pd_range=NULL)
**功能**:获取真实的武器攻击类别
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `$wep_kind`:预设的攻击方式,默认为空(自动判断)
- `$pd_range`:防御者的距离,默认为NULL
**处理流程**
1. 检查是否为双系武器(具有两种攻击模式的武器)
2. 如果输入了预设攻击方式,检查是否合法
3. 如果没有输入预设攻击方式,自动选择:
- 射系武器没有子弹时,自动选用第二攻击模式
- 根据策略模式(射程优先、熟练优先)选择攻击方式
**返回值**:无,直接修改传入的玩家数据数组
### get_wep_range(&$pa)
**功能**:获取武器的攻击距离
**参数**
- `&$pa`:玩家数据(引用传递)
**处理流程**
1. 根据武器类型确定基础攻击距离
2. 应用各种修正(技能、状态、装备等)
**返回值**:武器的攻击距离值
### get_base_att(&$pa, &$pd, $active, $tooltip=0)
**功能**:计算基础攻击力
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:是否为主动攻击
- `$tooltip`:是否为提示信息,默认为0
**处理流程**
1. 获取武器类型和攻击方式
2. 计算基础攻击力(基于武器和属性)
3. 应用各种攻击力修正
**返回值**:计算出的基础攻击力值
### get_base_def(&$pa, &$pd, $active, $tooltip=0)
**功能**:计算基础防御力
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:是否为主动攻击
- `$tooltip`:是否为提示信息,默认为0
**处理流程**
1. 获取防具类型和防御方式
2. 计算基础防御力(基于防具和属性)
3. 应用各种防御力修正
**返回值**:计算出的基础防御力值
### get_original_dmg_rev(&$pa, &$pd, $active)
**功能**:计算原始伤害值
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:是否为主动攻击
**处理流程**
1. 获取攻击力和防御力
2. 根据武器类型应用不同的伤害计算公式
3. 考虑攻击力和防御力的差值
4. 应用武器强度修正
**返回值**:计算出的原始伤害值
### get_final_dmg_p(&$pa, &$pd, $active)
**功能**:计算最终伤害百分比修正
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:是否为主动攻击
**处理流程**
1. 获取原始伤害值
2. 应用各种伤害百分比修正(技能、状态、装备等)
3. 计算暴击和特殊效果
**返回值**:最终的伤害百分比修正值
## 属性计算系统
文件实现了复杂的属性计算系统,包括:
1. **武器属性**:不同武器类型的特殊属性和效果
2. **防具属性**:不同防具类型的特殊属性和效果
3. **技能影响**:技能对属性的各种修正
4. **状态效果**:各种状态对属性的影响
5. **装备效果**:装备对属性的加成和修正
6. **伤害计算**:复杂的伤害计算公式和修正
## 主要特点
1. **命名空间封装**:使用PHP命名空间封装函数,提高代码组织性
2. **复杂的属性计算**:实现了详细的属性计算逻辑,考虑多种因素
3. **引用传递**:大量使用引用传递参数,直接修改数据
4. **模块化设计**:将不同的属性计算逻辑分解为独立函数
5. **事件系统**:使用prepare_events和finish_events函数处理属性计算的前后处理
## 注意事项
1. 文件使用了命名空间,需要注意函数调用方式
2. 属性计算逻辑复杂,涉及多种公式和条件判断
3. 函数之间存在较多依赖关系,需要小心修改
4. 代码中包含大量游戏平衡性相关的常数和公式
5. 文件依赖于其他文件,如revattr.calc.php和revattr_extra.func.php
\ No newline at end of file
# revbattle.func.php 文件分析
## 文件概述
`revbattle.func.php` 是游戏系统中实现改良版战斗遭遇系统的核心函数库。该文件使用命名空间 `revbattle` 封装了战斗遭遇的各个阶段,包括战斗准备、敌人发现、战斗逃跑和战斗界面初始化等功能。文件与 `revcombat.func.php``revbattle.calc.php` 配合使用,构成了游戏的战斗遭遇机制。
## 主要函数列表
### revbattle_prepare($command, $message=NULL, $data=NULL)
**功能**:处理从界面传回的战斗相关指令
**参数**
- `$command`:战斗命令
- `$message`:消息内容,默认为NULL
- `$data`:玩家数据,默认为NULL(使用全局$pdata)
**处理流程**
1. 检查是否存在战斗动作
2. 检查是否遇敌
3. 获取敌人数据
4. 检查敌人是否处于当前位置
5. 根据战斗命令执行相应操作(如攻击、逃跑等)
6. 更新玩家和敌人状态
**返回值**:无,直接修改全局变量
### findenemy_rev($edata)
**功能**:处理发现敌人的逻辑
**参数**
- `$edata`:敌人数据
**处理流程**
1. 检查敌人是否可被发现
2. 计算发现几率
3. 如果发现成功,初始化战斗界面
4. 设置战斗相关状态和变量
5. 更新玩家和敌人数据
**返回值**:无,直接修改全局变量
### escape_from_enemy(&$pa, &$pd)
**功能**:处理从敌人处逃跑的逻辑
**参数**
- `&$pa`:玩家数据(引用传递)
- `&$pd`:敌人数据(引用传递)
**处理流程**
1. 计算逃跑成功率
2. 判断是否逃跑成功
3. 如果成功,更新玩家状态和位置
4. 如果失败,可能触发战斗
5. 生成相应的日志消息
**返回值**:无,直接修改传入的数据
### findneut(&$edata, $kind=0)
**功能**:处理发现中立角色的逻辑
**参数**
- `&$edata`:中立角色数据(引用传递)
- `$kind`:类型,默认为0
**处理流程**
1. 检查中立角色是否可被发现
2. 计算发现几率
3. 如果发现成功,初始化交互界面
4. 设置相关状态和变量
5. 更新玩家和中立角色数据
**返回值**:无,直接修改传入的数据和全局变量
### init_battle_title($pa, $pd, $ismeet=0)
**功能**:初始化战斗标题
**参数**
- `$pa`:玩家数据
- `$pd`:敌人数据
- `$ismeet`:是否为初次遇见,默认为0
**处理流程**
1. 根据玩家和敌人的状态生成战斗标题
2. 考虑特殊情况(如先制攻击、突袭等)
3. 设置全局战斗标题变量
**返回值**:无,直接修改全局变量
### init_battle_log($pa, $pd, $ismeet=0)
**功能**:初始化战斗日志
**参数**
- `$pa`:玩家数据
- `$pd`:敌人数据
- `$ismeet`:是否为初次遇见,默认为0
**处理流程**
1. 根据玩家和敌人的状态生成战斗日志
2. 考虑特殊情况(如先制攻击、突袭等)
3. 添加战斗开始的描述信息
4. 更新全局日志变量
**返回值**:无,直接修改全局变量
## 战斗遭遇系统特点
1. **命名空间封装**:使用PHP命名空间封装战斗遭遇相关函数,提高代码组织性
2. **引用传递**:大量使用引用传递参数,直接修改玩家数据
3. **遭遇流程分离**:将战斗遭遇流程分为准备、发现、逃跑和界面初始化等阶段
4. **随机性**:使用随机因素决定发现敌人和逃跑的成功率
5. **状态管理**:详细处理战斗遭遇中的各种状态和效果
## 战斗遭遇流程
改良版战斗遭遇系统实现了完整的遭遇流程:
1. **指令处理**:处理从界面传回的战斗相关指令
2. **敌人检查**:检查敌人是否存在和是否在当前位置
3. **发现机制**:计算发现敌人的几率和结果
4. **逃跑机制**:计算逃跑成功率和结果
5. **界面初始化**:初始化战斗标题和日志
6. **战斗触发**:触发战斗系统执行战斗流程
7. **状态更新**:更新玩家和敌人的状态
## 主要特点
1. **完整的遭遇系统**:实现了从敌人检查到战斗触发的完整流程
2. **多文件协作**:与revcombat.func.php等文件协作完成战斗功能
3. **随机性设计**:通过随机因素增加游戏的不确定性和挑战性
4. **状态管理**:详细处理遭遇中的各种状态和效果
5. **日志记录**:详细记录遭遇过程,提供战斗反馈
## 注意事项
1. 战斗遭遇系统依赖于多个相关文件,修改时需要考虑依赖关系
2. 遭遇流程涉及随机因素,可能导致不同的游戏体验
3. 使用命名空间封装,调用时需要注意命名空间前缀
4. 大量使用引用传递,修改函数内部会直接影响外部数据
5. 遭遇平衡性涉及多个参数和公式,调整需谨慎
\ No newline at end of file
# revcombat.func.php 文件分析
## 文件概述
`revcombat.func.php` 是游戏系统中实现改良版战斗系统的核心函数库。该文件使用命名空间 `revcombat` 封装了战斗流程的各个阶段,包括战斗准备、战斗执行、攻击处理和战斗结果处理等功能。文件与多个相关文件配合使用,构成了游戏的核心战斗机制。
## 主要函数列表
### rev_combat_prepare(&$pa, &$pd, $active, $wep_kind='', $log_print=1)
**功能**:战斗准备,初始化战斗环境和数据
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:当前主视角是否为攻击者(1为攻击者,0为防御者)
- `$wep_kind`:武器类型,默认为空(自动判断)
- `$log_print`:是否显示战斗界面,默认为1
**处理流程**
1. 格式化双方的俱乐部参数、武器参数和防具参数
2. 根据active值决定战斗界面的显示方式
3. 初始化战斗界面和战斗标题
4. 准备战斗相关的数据和状态
**返回值**:无,直接修改传入的玩家数据
### rev_combat(&$pa, &$pd, $active, $log_print=1)
**功能**:执行战斗流程
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:当前主视角是否为攻击者
- `$log_print`:是否显示战斗日志,默认为1
**处理流程**
1. 检查战斗条件(如是否已死亡、是否可战斗等)
2. 处理先制攻击和反击机制
3. 执行攻击流程
4. 处理战斗结果
5. 更新玩家状态和数据
**返回值**:无,直接修改传入的玩家数据
### rev_attack(&$pa, &$pd, $active=1)
**功能**:处理攻击逻辑
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:是否为主动攻击,默认为1
**处理流程**
1. 计算攻击命中率
2. 判断攻击是否命中
3. 如果命中,计算伤害值
4. 应用伤害和特殊效果
5. 处理武器和防具的损耗
6. 更新战斗状态和日志
**返回值**:无,直接修改传入的玩家数据
### rev_combat_result(&$pa, &$pd, $active)
**功能**:处理战斗结果
**参数**
- `&$pa`:攻击者的玩家数据(引用传递)
- `&$pd`:防御者的玩家数据(引用传递)
- `$active`:当前主视角是否为攻击者
**处理流程**
1. 检查是否有玩家死亡
2. 如果有玩家死亡,处理死亡相关逻辑
3. 更新玩家经验值和等级
4. 处理战利品和掉落物品
5. 更新战斗统计数据
6. 生成战斗结果日志
**返回值**:无,直接修改传入的玩家数据
### checkdmg($p1, $p2, $d)
**功能**:检查伤害值的合法性
**参数**
- `$p1`:攻击者的玩家数据
- `$p2`:防御者的玩家数据
- `$d`:伤害值
**处理流程**
1. 检查伤害值是否为合法数值
2. 检查伤害值是否超出合理范围
3. 如果不合法,记录异常日志
**返回值**:处理后的伤害值
## 战斗系统特点
1. **命名空间封装**:使用PHP命名空间封装战斗相关函数,提高代码组织性
2. **引用传递**:大量使用引用传递参数,直接修改玩家数据
3. **战斗流程分离**:将战斗流程分为准备、执行、攻击和结果处理等阶段
4. **视角切换**:支持不同视角(攻击者/防御者)的战斗界面显示
5. **战斗日志**:详细记录战斗过程和结果
## 战斗流程
改良版战斗系统实现了完整的战斗流程:
1. **战斗准备**:初始化战斗环境和数据
2. **先制判断**:确定先制攻击和反击机制
3. **攻击执行**:计算命中率、伤害值和特殊效果
4. **伤害应用**:应用伤害和状态效果
5. **装备损耗**:处理武器和防具的损耗
6. **战斗结果**:处理死亡、经验值和战利品
7. **数据更新**:更新玩家状态和战斗统计
## 主要特点
1. **完整的战斗系统**:实现了从战斗准备到结果处理的完整流程
2. **多文件协作**:与多个相关文件(如revattr.func.php)协作完成战斗功能
3. **参数化设计**:通过参数控制战斗流程的各个方面
4. **状态管理**:详细处理战斗中的各种状态和效果
5. **日志记录**:详细记录战斗过程,提供战斗反馈
## 注意事项
1. 战斗系统依赖于多个相关文件,修改时需要考虑依赖关系
2. 战斗流程复杂,涉及多个函数和计算公式
3. 使用命名空间封装,调用时需要注意命名空间前缀
4. 大量使用引用传递,修改函数内部会直接影响外部数据
5. 战斗平衡性涉及多个参数和公式,调整需谨慎
\ No newline at end of file
# roommng.func.php 函数分析
`roommng.func.php`是房间管理函数库,负责处理游戏中房间的创建、管理和操作。
## 函数列表
### 房间创建和初始化
#### `create_room($owner_id, $room_name, $room_type, $password = '', $max_players = 0, $game_mode = 0)`
- **功能**: 创建新房间
- **参数**:
- `$owner_id`: 房主ID
- `$room_name`: 房间名称
- `$room_type`: 房间类型
- `$password`: 房间密码
- `$max_players`: 最大玩家数
- `$game_mode`: 游戏模式
- **返回值**: 房间ID或错误信息
#### `init_room($room_id, $game_settings = array())`
- **功能**: 初始化房间
- **参数**:
- `$room_id`: 房间ID
- `$game_settings`: 游戏设置
- **返回值**: 初始化结果
#### `close_room($room_id, $reason = '')`
- **功能**: 关闭房间
- **参数**:
- `$room_id`: 房间ID
- `$reason`: 关闭原因
- **返回值**: 关闭结果
#### `reset_room($room_id)`
- **功能**: 重置房间状态
- **参数**: `$room_id`: 房间ID
- **返回值**: 重置结果
### 房间信息和状态
#### `get_room_info($room_id)`
- **功能**: 获取房间信息
- **参数**: `$room_id`: 房间ID
- **返回值**: 房间信息数组
#### `get_room_list($type = 0, $status = 0, $limit = 0)`
- **功能**: 获取房间列表
- **参数**:
- `$type`: 房间类型
- `$status`: 房间状态
- `$limit`: 限制数量
- **返回值**: 房间列表数组
#### `update_room_status($room_id, $status)`
- **功能**: 更新房间状态
- **参数**:
- `$room_id`: 房间ID
- `$status`: 新状态
- **返回值**: 更新结果
#### `update_room_settings($room_id, $settings)`
- **功能**: 更新房间设置
- **参数**:
- `$room_id`: 房间ID
- `$settings`: 新设置
- **返回值**: 更新结果
### 玩家管理
#### `join_room($user_id, $room_id, $password = '')`
- **功能**: 玩家加入房间
- **参数**:
- `$user_id`: 用户ID
- `$room_id`: 房间ID
- `$password`: 房间密码
- **返回值**: 加入结果
#### `leave_room($user_id, $room_id)`
- **功能**: 玩家离开房间
- **参数**:
- `$user_id`: 用户ID
- `$room_id`: 房间ID
- **返回值**: 离开结果
#### `kick_player($room_id, $user_id, $reason = '')`
- **功能**: 踢出玩家
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- `$reason`: 踢出原因
- **返回值**: 踢出结果
#### `get_room_players($room_id)`
- **功能**: 获取房间内的玩家
- **参数**: `$room_id`: 房间ID
- **返回值**: 玩家列表数组
### 房间操作和控制
#### `start_room_game($room_id)`
- **功能**: 开始房间游戏
- **参数**: `$room_id`: 房间ID
- **返回值**: 开始结果
#### `end_room_game($room_id, $result = array())`
- **功能**: 结束房间游戏
- **参数**:
- `$room_id`: 房间ID
- `$result`: 游戏结果
- **返回值**: 结束结果
#### `pause_room_game($room_id)`
- **功能**: 暂停房间游戏
- **参数**: `$room_id`: 房间ID
- **返回值**: 暂停结果
#### `resume_room_game($room_id)`
- **功能**: 恢复房间游戏
- **参数**: `$room_id`: 房间ID
- **返回值**: 恢复结果
### 房间通信和消息
#### `send_room_message($room_id, $user_id, $message, $type = 'chat')`
- **功能**: 发送房间消息
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- `$message`: 消息内容
- `$type`: 消息类型
- **返回值**: 发送结果
#### `broadcast_room_event($room_id, $event_type, $event_data)`
- **功能**: 广播房间事件
- **参数**:
- `$room_id`: 房间ID
- `$event_type`: 事件类型
- `$event_data`: 事件数据
- **返回值**: 广播结果
#### `get_room_messages($room_id, $limit = 20, $offset = 0)`
- **功能**: 获取房间消息
- **参数**:
- `$room_id`: 房间ID
- `$limit`: 限制数量
- `$offset`: 偏移量
- **返回值**: 消息列表数组
#### `notify_room_change($room_id, $change_type, $change_data)`
- **功能**: 通知房间变化
- **参数**:
- `$room_id`: 房间ID
- `$change_type`: 变化类型
- `$change_data`: 变化数据
- **返回值**: 通知结果
### 房间权限和检查
#### `check_room_password($room_id, $password)`
- **功能**: 检查房间密码
- **参数**:
- `$room_id`: 房间ID
- `$password`: 密码
- **返回值**: 布尔值,表示密码是否正确
#### `is_room_owner($room_id, $user_id)`
- **功能**: 检查用户是否为房主
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- **返回值**: 布尔值,表示是否为房主
#### `can_join_room($room_id, $user_id)`
- **功能**: 检查用户是否可以加入房间
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- **返回值**: 布尔值,表示是否可以加入
#### `can_start_game($room_id, $user_id)`
- **功能**: 检查用户是否可以开始游戏
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- **返回值**: 布尔值,表示是否可以开始游戏
### 房间队伍和分组
#### `create_team($room_id, $team_name, $team_color = '')`
- **功能**: 创建队伍
- **参数**:
- `$room_id`: 房间ID
- `$team_name`: 队伍名称
- `$team_color`: 队伍颜色
- **返回值**: 队伍ID或错误信息
#### `join_team($room_id, $user_id, $team_id)`
- **功能**: 加入队伍
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- `$team_id`: 队伍ID
- **返回值**: 加入结果
#### `leave_team($room_id, $user_id)`
- **功能**: 离开队伍
- **参数**:
- `$room_id`: 房间ID
- `$user_id`: 用户ID
- **返回值**: 离开结果
#### `get_room_teams($room_id)`
- **功能**: 获取房间队伍
- **参数**: `$room_id`: 房间ID
- **返回值**: 队伍列表数组
### 房间设置和配置
#### `set_room_game_mode($room_id, $game_mode)`
- **功能**: 设置房间游戏模式
- **参数**:
- `$room_id`: 房间ID
- `$game_mode`: 游戏模式
- **返回值**: 设置结果
#### `set_room_map($room_id, $map_id)`
- **功能**: 设置房间地图
- **参数**:
- `$room_id`: 房间ID
- `$map_id`: 地图ID
- **返回值**: 设置结果
#### `set_room_options($room_id, $options)`
- **功能**: 设置房间选项
- **参数**:
- `$room_id`: 房间ID
- `$options`: 选项数组
- **返回值**: 设置结果
#### `get_room_settings($room_id)`
- **功能**: 获取房间设置
- **参数**: `$room_id`: 房间ID
- **返回值**: 设置数组
这些函数共同构成了一个完整的房间管理系统,用于处理游戏中的房间创建、玩家管理、游戏控制和通信等功能。
\ No newline at end of file
# special.func.php 文件分析
## 文件概述
`special.func.php` 是游戏系统中实现特殊功能和事件的核心函数库。该文件包含了游戏中各种特殊事件、NPC互动、特殊地点效果以及游戏机制的实现。这些特殊功能丰富了游戏体验,增加了游戏的随机性和趣味性。
## 主要函数列表
### 特殊事件函数
#### event_area($atime)
**功能**:处理区域特殊事件
**参数**
- `$atime`:事件时间
**处理流程**
1. 根据当前区域和时间确定可能触发的事件
2. 计算事件触发概率
3. 随机选择一个事件触发
4. 执行事件效果
5. 更新玩家状态和游戏日志
**返回值**:事件处理结果
#### event_weather($wtime)
**功能**:处理天气特殊事件
**参数**
- `$wtime`:天气时间
**处理流程**
1. 根据当前天气和时间确定可能触发的事件
2. 计算事件触发概率
3. 随机选择一个事件触发
4. 执行事件效果
5. 更新玩家状态和游戏日志
**返回值**:事件处理结果
### NPC互动函数
#### npc_talk($nid, $dialogue)
**功能**:处理与NPC的对话
**参数**
- `$nid`:NPC ID
- `$dialogue`:对话选项
**处理流程**
1. 获取NPC信息
2. 根据对话选项确定对话内容
3. 处理对话可能触发的事件
4. 更新NPC状态和玩家状态
5. 返回对话结果
**返回值**:对话处理结果
#### npc_trade($nid, $item, $mode)
**功能**:处理与NPC的交易
**参数**
- `$nid`:NPC ID
- `$item`:交易物品
- `$mode`:交易模式(买/卖)
**处理流程**
1. 获取NPC信息和交易物品信息
2. 检查交易条件(金钱、物品等)
3. 执行交易操作
4. 更新NPC库存和玩家物品/金钱
5. 返回交易结果
**返回值**:交易处理结果
### 特殊地点函数
#### special_area($aid)
**功能**:处理特殊区域效果
**参数**
- `$aid`:区域ID
**处理流程**
1. 获取区域信息
2. 根据区域类型确定效果
3. 执行区域特殊效果
4. 更新玩家状态和游戏日志
5. 返回处理结果
**返回值**:区域效果处理结果
#### special_building($bid, $action)
**功能**:处理特殊建筑效果
**参数**
- `$bid`:建筑ID
- `$action`:玩家行动
**处理流程**
1. 获取建筑信息
2. 根据建筑类型和玩家行动确定效果
3. 执行建筑特殊效果
4. 更新玩家状态和游戏日志
5. 返回处理结果
**返回值**:建筑效果处理结果
### 游戏机制函数
#### special_skill($sid, $target)
**功能**:处理特殊技能效果
**参数**
- `$sid`:技能ID
- `$target`:目标对象
**处理流程**
1. 获取技能信息
2. 检查技能使用条件
3. 计算技能效果
4. 应用技能效果到目标
5. 更新玩家状态和游戏日志
6. 返回技能使用结果
**返回值**:技能使用结果
#### special_item_effect($iid, $target)
**功能**:处理特殊物品效果
**参数**
- `$iid`:物品ID
- `$target`:目标对象
**处理流程**
1. 获取物品信息
2. 检查物品使用条件
3. 计算物品特殊效果
4. 应用效果到目标
5. 更新玩家状态和游戏日志
6. 返回物品效果结果
**返回值**:物品效果处理结果
### 随机事件函数
#### random_event($chance, $type)
**功能**:处理随机事件
**参数**
- `$chance`:触发概率
- `$type`:事件类型
**处理流程**
1. 计算事件触发概率
2. 确定是否触发事件
3. 如果触发,根据事件类型选择具体事件
4. 执行事件效果
5. 更新玩家状态和游戏日志
6. 返回事件处理结果
**返回值**:事件处理结果
#### timed_event($time)
**功能**:处理定时事件
**参数**
- `$time`:当前时间
**处理流程**
1. 检查是否到达事件触发时间
2. 如果到达,确定触发的事件
3. 执行事件效果
4. 更新玩家状态和游戏日志
5. 返回事件处理结果
**返回值**:事件处理结果
## 特殊功能系统特点
1. **多样化事件类型**:包括区域事件、天气事件、NPC互动、特殊地点等
2. **随机性**:大多数特殊事件具有随机触发机制,增加游戏变化性
3. **条件触发**:事件触发受多种条件影响,如玩家状态、位置、时间等
4. **多重效果**:事件可能同时影响玩家的多个属性和状态
5. **交互性**:许多特殊功能需要玩家做出选择,增加游戏交互性
6. **奖惩机制**:特殊事件可能带来奖励或惩罚,影响游戏平衡
## 事件数据结构
特殊功能系统使用以下数据结构:
1. **事件基本属性**
- 事件ID
- 事件名称
- 事件描述
- 触发条件
- 事件效果
2. **NPC数据**
- NPC ID
- NPC名称
- 对话内容
- 交易物品
- 特殊行为
3. **特殊地点数据**
- 地点ID
- 地点名称
- 地点描述
- 地点效果
## 主要特点
1. **丰富游戏内容**:特殊功能系统大大丰富了游戏内容和玩法
2. **增加随机性**:随机事件增加了游戏的不可预测性和重玩价值
3. **提供游戏变化**:特殊事件可能改变游戏环境和规则,提供新的挑战
4. **创造叙事机会**:特殊事件和NPC互动创造了游戏叙事的机会
5. **平衡游戏难度**:特殊功能可以调整游戏难度,提供帮助或增加挑战
## 注意事项
1. 特殊功能系统涉及游戏多个方面,修改需谨慎考虑平衡性
2. 随机事件的触发概率需要仔细调整,避免过于频繁或罕见
3. 特殊事件的效果应该有意义但不至于破坏游戏平衡
4. NPC互动和特殊地点应该提供有趣的选择而不是明显的最优解
5. 特殊功能系统与其他游戏系统(如战斗、物品)紧密相关,修改时需考虑兼容性
\ No newline at end of file
# state.func.php 函数分析
`state.func.php`是游戏状态管理函数库,负责处理游戏中各种状态的变化和管理。
## 函数列表
### 状态初始化和加载
#### `init_game_state($gid)`
- **功能**: 初始化游戏状态
- **参数**: `$gid`: 游戏ID
- **返回值**: 初始化结果
#### `load_game_state($gid)`
- **功能**: 加载游戏状态
- **参数**: `$gid`: 游戏ID
- **返回值**: 游戏状态数组
#### `save_game_state($gid, $state)`
- **功能**: 保存游戏状态
- **参数**:
- `$gid`: 游戏ID
- `$state`: 状态数据
- **返回值**: 保存结果
#### `reset_game_state($gid)`
- **功能**: 重置游戏状态
- **参数**: `$gid`: 游戏ID
- **返回值**: 重置结果
### 玩家状态管理
#### `get_player_state($uid, $gid)`
- **功能**: 获取玩家状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 玩家状态数组
#### `update_player_state($uid, $gid, $state)`
- **功能**: 更新玩家状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state`: 新状态
- **返回值**: 更新结果
#### `add_player_state($uid, $gid, $state_type, $duration, $effect)`
- **功能**: 添加玩家状态效果
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_type`: 状态类型
- `$duration`: 持续时间
- `$effect`: 效果数据
- **返回值**: 添加结果
#### `remove_player_state($uid, $gid, $state_id)`
- **功能**: 移除玩家状态效果
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_id`: 状态ID
- **返回值**: 移除结果
### 状态效果处理
#### `apply_state_effects($uid, $gid)`
- **功能**: 应用状态效果
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 应用结果
#### `update_state_durations($gid)`
- **功能**: 更新状态持续时间
- **参数**: `$gid`: 游戏ID
- **返回值**: 更新结果
#### `check_state_expiration($gid)`
- **功能**: 检查状态是否过期
- **参数**: `$gid`: 游戏ID
- **返回值**: 过期状态列表
#### `handle_expired_states($gid)`
- **功能**: 处理过期状态
- **参数**: `$gid`: 游戏ID
- **返回值**: 处理结果
### 特定状态类型
#### `apply_buff_state($uid, $gid, $buff_type, $value, $duration)`
- **功能**: 应用增益状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$buff_type`: 增益类型
- `$value`: 增益值
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_debuff_state($uid, $gid, $debuff_type, $value, $duration)`
- **功能**: 应用减益状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$debuff_type`: 减益类型
- `$value`: 减益值
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_dot_state($uid, $gid, $damage, $interval, $duration)`
- **功能**: 应用持续伤害状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$damage`: 伤害值
- `$interval`: 伤害间隔
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_hot_state($uid, $gid, $healing, $interval, $duration)`
- **功能**: 应用持续治疗状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$healing`: 治疗值
- `$interval`: 治疗间隔
- `$duration`: 持续时间
- **返回值**: 应用结果
### 控制状态
#### `apply_stun_state($uid, $gid, $duration)`
- **功能**: 应用眩晕状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_silence_state($uid, $gid, $duration)`
- **功能**: 应用沉默状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_root_state($uid, $gid, $duration)`
- **功能**: 应用定身状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$duration`: 持续时间
- **返回值**: 应用结果
#### `apply_disarm_state($uid, $gid, $duration)`
- **功能**: 应用缴械状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$duration`: 持续时间
- **返回值**: 应用结果
### 状态抵抗和清除
#### `check_state_resistance($uid, $gid, $state_type)`
- **功能**: 检查状态抵抗
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_type`: 状态类型
- **返回值**: 布尔值,表示是否抵抗
#### `clear_all_states($uid, $gid)`
- **功能**: 清除所有状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 清除结果
#### `clear_debuff_states($uid, $gid)`
- **功能**: 清除所有减益状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 清除结果
#### `clear_control_states($uid, $gid)`
- **功能**: 清除所有控制状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- **返回值**: 清除结果
### 状态查询和检查
#### `has_state($uid, $gid, $state_type)`
- **功能**: 检查玩家是否有特定状态
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_type`: 状态类型
- **返回值**: 布尔值,表示是否有该状态
#### `get_state_effect($uid, $gid, $state_type)`
- **功能**: 获取状态效果值
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_type`: 状态类型
- **返回值**: 效果值
#### `get_state_duration($uid, $gid, $state_id)`
- **功能**: 获取状态剩余持续时间
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_id`: 状态ID
- **返回值**: 剩余持续时间
#### `is_state_active($uid, $gid, $state_id)`
- **功能**: 检查状态是否激活
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_id`: 状态ID
- **返回值**: 布尔值,表示状态是否激活
### 状态通知和显示
#### `notify_state_change($uid, $gid, $state_id, $action)`
- **功能**: 通知状态变化
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_id`: 状态ID
- `$action`: 变化动作
- **返回值**: 通知结果
#### `get_state_icon($state_type)`
- **功能**: 获取状态图标
- **参数**: `$state_type`: 状态类型
- **返回值**: 图标路径
#### `get_state_description($state_type, $value = 0)`
- **功能**: 获取状态描述
- **参数**:
- `$state_type`: 状态类型
- `$value`: 状态值
- **返回值**: 状态描述
#### `format_state_display($uid, $gid, $state_id)`
- **功能**: 格式化状态显示
- **参数**:
- `$uid`: 用户ID
- `$gid`: 游戏ID
- `$state_id`: 状态ID
- **返回值**: 格式化的状态显示
这只是部分函数的分析,完整的state.func.php文件包含更多状态管理函数,用于支持游戏中各种状态效果的处理和管理。
\ No newline at end of file
# system.func.php 函数分析
`system.func.php`是系统核心函数库,包含系统运行所需的基础函数。
## 函数列表
### 系统核心函数
#### `get_magic_quotes_gpc_compatible()`
- **功能**: 兼容处理magic_quotes_gpc,返回是否开启了magic_quotes_gpc
- **返回值**: 布尔值,表示是否开启了magic_quotes_gpc
#### `daddslashes($string, $force = 0)`
- **功能**: 对字符串进行addslashes处理,防止SQL注入
- **参数**:
- `$string`: 需要处理的字符串或数组
- `$force`: 是否强制处理,即使magic_quotes_gpc已开启
- **返回值**: 处理后的字符串或数组
#### `rhtmlspecialchars($string)`
- **功能**: 对字符串进行htmlspecialchars处理,转换特殊字符为HTML实体
- **参数**: `$string`: 需要处理的字符串
- **返回值**: 处理后的字符串
#### `raddslashes($string)`
- **功能**: 对字符串进行addslashes处理,防止SQL注入
- **参数**: `$string`: 需要处理的字符串
- **返回值**: 处理后的字符串
#### `rsetcookie($var, $value, $life = 0, $prefix = 1)`
- **功能**: 设置cookie
- **参数**:
- `$var`: cookie名称
- `$value`: cookie值
- `$life`: cookie生存时间
- `$prefix`: 是否添加前缀
- **返回值**: 无
#### `fileext($filename)`
- **功能**: 获取文件扩展名
- **参数**: `$filename`: 文件名
- **返回值**: 文件扩展名
#### `cutstr($string, $length, $dot = ' ...')`
- **功能**: 截取字符串,支持中文
- **参数**:
- `$string`: 原始字符串
- `$length`: 截取长度
- `$dot`: 省略符号
- **返回值**: 截取后的字符串
#### `showmsg($message, $url_forward = '', $msgtype = 'message', $extra = '')`
- **功能**: 显示消息并跳转
- **参数**:
- `$message`: 消息内容
- `$url_forward`: 跳转URL
- `$msgtype`: 消息类型
- `$extra`: 额外信息
- **返回值**: 无,直接输出HTML
#### `getusergroup($groupid)`
- **功能**: 获取用户组信息
- **参数**: `$groupid`: 用户组ID
- **返回值**: 用户组信息数组
#### `checkpost($varname, $minlength, $maxlength, $checktype = '')`
- **功能**: 检查POST变量
- **参数**:
- `$varname`: 变量名
- `$minlength`: 最小长度
- `$maxlength`: 最大长度
- `$checktype`: 检查类型
- **返回值**: 检查结果
### 文件和目录操作
#### `writeover($filename, $data, $method = 'wb', $iflock = 1)`
- **功能**: 写入文件
- **参数**:
- `$filename`: 文件名
- `$data`: 写入数据
- `$method`: 写入方式
- `$iflock`: 是否锁定文件
- **返回值**: 布尔值,表示操作是否成功
#### `readover($filename, $method = 'rb')`
- **功能**: 读取文件
- **参数**:
- `$filename`: 文件名
- `$method`: 读取方式
- **返回值**: 文件内容
#### `makedir($dir)`
- **功能**: 创建目录
- **参数**: `$dir`: 目录路径
- **返回值**: 布尔值,表示操作是否成功
### 时间和日期处理
#### `sgmdate($dateformat, $timestamp = '', $format = 0)`
- **功能**: 格式化时间戳
- **参数**:
- `$dateformat`: 日期格式
- `$timestamp`: 时间戳
- `$format`: 格式化方式
- **返回值**: 格式化后的日期字符串
#### `get_date($time, $type = 0)`
- **功能**: 获取格式化日期
- **参数**:
- `$time`: 时间戳
- `$type`: 格式类型
- **返回值**: 格式化后的日期字符串
### 安全和验证
#### `clearcookies()`
- **功能**: 清除所有cookie
- **参数**: 无
- **返回值**: 无
#### `checkformhash($formhash)`
- **功能**: 检查表单hash,防止CSRF攻击
- **参数**: `$formhash`: 表单hash值
- **返回值**: 布尔值,表示检查是否通过
#### `formhash()`
- **功能**: 生成表单hash
- **参数**: 无
- **返回值**: 生成的hash值
### 其他实用函数
#### `debuginfo()`
- **功能**: 输出调试信息
- **参数**: 无
- **返回值**: 无,直接输出HTML
#### `random($length, $numeric = 0)`
- **功能**: 生成随机字符串
- **参数**:
- `$length`: 字符串长度
- `$numeric`: 是否仅包含数字
- **返回值**: 随机字符串
#### `multi_array_sort($arrays, $sort_key, $sort_order = SORT_ASC, $sort_type = SORT_NUMERIC)`
- **功能**: 多维数组排序
- **参数**:
- `$arrays`: 待排序数组
- `$sort_key`: 排序键名
- `$sort_order`: 排序顺序
- `$sort_type`: 排序类型
- **返回值**: 排序后的数组
#### `getmicrotime()`
- **功能**: 获取微秒级时间戳
- **参数**: 无
- **返回值**: 微秒级时间戳
#### `check_ip($ip, $ips)`
- **功能**: 检查IP是否在允许范围内
- **参数**:
- `$ip`: 待检查IP
- `$ips`: 允许的IP范围
- **返回值**: 布尔值,表示检查是否通过
#### `convertip($ip, $ipdatafile = '')`
- **功能**: 将IP转换为地理位置
- **参数**:
- `$ip`: IP地址
- `$ipdatafile`: IP数据文件
- **返回值**: 地理位置信息
这只是部分核心函数的分析,完整的system.func.php文件包含更多系统级函数,用于支持整个游戏系统的运行。
\ No newline at end of file
# template.func.php 函数分析
`template.func.php`是模板处理函数库,负责处理HTML模板的加载、解析和渲染。
## 函数列表
### 模板加载和解析
#### `template($file, $templateid = 0, $tpldir = '')`
- **功能**: 加载模板文件
- **参数**:
- `$file`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 模板内容
#### `parse_template($tplfile, $templateid = 0, $tpldir = '')`
- **功能**: 解析模板文件
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 解析后的模板内容
#### `subtemplates($subtpl, $templateid = 0, $tpldir = '')`
- **功能**: 加载子模板
- **参数**:
- `$subtpl`: 子模板名称
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 子模板内容
### 模板变量和数据
#### `template_variables($data, $force = 0)`
- **功能**: 设置模板变量
- **参数**:
- `$data`: 变量数据
- `$force`: 是否强制覆盖
- **返回值**: 无
#### `get_template_vars($var = '')`
- **功能**: 获取模板变量
- **参数**: `$var`: 变量名
- **返回值**: 变量值或所有变量数组
#### `assign($name, $value)`
- **功能**: 分配变量到模板
- **参数**:
- `$name`: 变量名
- `$value`: 变量值
- **返回值**: 无
#### `assign_by_ref($name, &$value)`
- **功能**: 通过引用分配变量
- **参数**:
- `$name`: 变量名
- `$value`: 变量值引用
- **返回值**: 无
### 模板渲染和输出
#### `render_template($tpl, $data = array())`
- **功能**: 渲染模板
- **参数**:
- `$tpl`: 模板名称
- `$data`: 模板数据
- **返回值**: 渲染后的HTML
#### `display($tpl)`
- **功能**: 显示模板
- **参数**: `$tpl`: 模板名称
- **返回值**: 无,直接输出HTML
#### `fetch($tpl)`
- **功能**: 获取模板渲染结果
- **参数**: `$tpl`: 模板名称
- **返回值**: 渲染后的HTML
#### `output_template($content)`
- **功能**: 输出模板内容
- **参数**: `$content`: 模板内容
- **返回值**: 无,直接输出HTML
### 模板缓存
#### `template_cache($tplfile, $templateid = 0, $tpldir = '')`
- **功能**: 获取模板缓存
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 缓存内容或false
#### `save_template_cache($tplfile, $content, $templateid = 0, $tpldir = '')`
- **功能**: 保存模板缓存
- **参数**:
- `$tplfile`: 模板文件名
- `$content`: 缓存内容
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 保存结果
#### `clear_template_cache($tplfile = '', $templateid = 0, $tpldir = '')`
- **功能**: 清除模板缓存
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 清除结果
### 模板处理和修改
#### `template_include($file, $templateid = 0, $tpldir = '')`
- **功能**: 包含其他模板
- **参数**:
- `$file`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 包含后的内容
#### `template_exists($tplfile, $templateid = 0, $tpldir = '')`
- **功能**: 检查模板是否存在
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 布尔值,表示模板是否存在
#### `template_format($template)`
- **功能**: 格式化模板内容
- **参数**: `$template`: 模板内容
- **返回值**: 格式化后的内容
#### `template_compile($template)`
- **功能**: 编译模板
- **参数**: `$template`: 模板内容
- **返回值**: 编译后的PHP代码
### 模板标签和语法
#### `parse_template_tag($tag, $parameter)`
- **功能**: 解析模板标签
- **参数**:
- `$tag`: 标签名
- `$parameter`: 标签参数
- **返回值**: 解析结果
#### `parse_template_loop($code, $loopname, $key, $value)`
- **功能**: 解析循环标签
- **参数**:
- `$code`: 循环代码
- `$loopname`: 循环名称
- `$key`: 键名
- `$value`: 值名
- **返回值**: 解析后的PHP代码
#### `parse_template_if($condition)`
- **功能**: 解析条件标签
- **参数**: `$condition`: 条件表达式
- **返回值**: 解析后的PHP代码
#### `parse_template_function($func, $parameter)`
- **功能**: 解析函数标签
- **参数**:
- `$func`: 函数名
- `$parameter`: 函数参数
- **返回值**: 解析后的PHP代码
### 辅助功能
#### `template_path($tplfile, $templateid = 0, $tpldir = '')`
- **功能**: 获取模板文件路径
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 模板文件完整路径
#### `template_cache_path($tplfile, $templateid = 0, $tpldir = '')`
- **功能**: 获取模板缓存路径
- **参数**:
- `$tplfile`: 模板文件名
- `$templateid`: 模板ID
- `$tpldir`: 模板目录
- **返回值**: 缓存文件完整路径
#### `template_error($message)`
- **功能**: 处理模板错误
- **参数**: `$message`: 错误消息
- **返回值**: 无,直接输出错误
这些函数共同构成了一个完整的模板系统,用于处理游戏中的HTML页面生成和显示,支持模板加载、解析、缓存和渲染等功能。
\ No newline at end of file
# titles.func.php 文件分析
## 文件概述
`titles.func.php` 是游戏系统中处理玩家称号的核心函数库。该文件包含了称号的获取、删除、描述和验证等功能,是游戏称号系统的完整实现。文件支持新旧两种称号系统,并提供了兼容性处理。
## 主要函数列表
### get_title($t, $n)
**功能**:获取称号(旧系统接口)
**参数**
- `$t`:称号名称
- `$n`:玩家名称
**处理流程**
1. 检查称号是否存在于称号列表中
2. 如果存在,将旧系统称号转换为新系统格式
3. 调用新系统函数获取称号
4. 更新数据库中的玩家称号数据
**返回值**:无,直接修改数据库
### titles_get_new(&$udata, $tkey, $mode=0)
**功能**:获取称号(新系统)
**参数**
- `&$udata`:用户数据(引用传递)
- `$tkey`:称号键值
- `$mode`:模式,默认为0
**处理流程**
1. 检查用户数据中的称号记录是否初始化
2. 检查称号是否已经获得
3. 如果未获得,添加新称号到用户数据
4. 根据模式决定是否显示获得消息
**返回值**:无,直接修改传入的用户数据
### titles_delete(&$udata, $tkey, $mode=0)
**功能**:删除称号
**参数**
- `&$udata`:用户数据(引用传递)
- `$tkey`:称号键值
- `$mode`:模式,默认为0
**处理流程**
1. 检查用户数据中的称号记录是否存在
2. 检查指定称号是否存在
3. 如果存在,从用户数据中移除该称号
4. 根据模式决定是否显示删除消息
**返回值**:无,直接修改传入的用户数据
### titles_get_desc($tkey, $mode=0)
**功能**:获取称号描述
**参数**
- `$tkey`:称号键值
- `$mode`:模式,默认为0
**处理流程**
1. 从全局称号列表中获取称号名称
2. 根据模式返回不同格式的称号描述
3. 如果称号不存在,返回空字符串
**返回值**:称号描述字符串
### get_titles_desc($n)
**功能**:获取玩家所有称号的描述
**参数**
- `$n`:玩家名称
**处理流程**
1. 从数据库获取玩家的称号数据
2. 解析称号数据
3. 生成所有称号的描述列表
4. 返回格式化的称号描述
**返回值**:玩家所有称号的描述字符串
### get_title_valid($n)
**功能**:获取玩家当前有效称号
**参数**
- `$n`:玩家名称
**处理流程**
1. 从数据库获取玩家的称号数据
2. 检查是否设置了有效称号
3. 返回有效称号的描述
**返回值**:有效称号的描述字符串
## 称号系统特点
1. **新旧系统兼容**:支持旧系统和新系统的称号格式
2. **称号列表**:使用全局称号列表管理所有可用称号
3. **称号描述**:提供不同格式的称号描述
4. **有效称号**:支持设置当前有效的称号
5. **称号管理**:支持称号的获取和删除操作
## 称号存储格式
新系统使用JSON格式存储称号数据,包含以下结构:
1. **nicks**:已获得的称号列表
2. **valid**:当前有效的称号
3. **time**:获得称号的时间记录
## 主要特点
1. **JSON数据存储**:使用JSON格式存储称号数据,提高灵活性
2. **兼容性处理**:提供旧系统到新系统的转换机制
3. **模块化设计**:将称号功能分解为独立函数
4. **数据库集成**:直接操作数据库更新玩家称号数据
5. **描述格式化**:支持不同格式的称号描述输出
## 注意事项
1. 称号系统经过了从旧系统到新系统的升级,包含兼容性处理
2. 称号数据使用JSON格式存储,需要注意JSON编码和解码的正确性
3. 称号系统与成就系统可能有关联,某些成就可能会授予称号
4. 有效称号机制允许玩家选择显示的称号
5. 称号列表定义在全局变量中,修改称号需要更新该列表
\ No newline at end of file
# user.func.php 文件分析
## 文件概述
`user.func.php` 是游戏系统中处理用户相关功能的函数库。该文件包含了用户名和密码验证、IP地址获取、用户数据获取和格式化等功能,是用户管理系统的核心组件。
## 函数列表
### name_check($username)
**功能**:检查用户名是否符合规则
**参数**
- `$username`:待检查的用户名
**处理流程**
1. 检查用户名是否为空
2. 检查用户名长度是否超过15个字符
3. 检查用户名是否包含非法字符(逗号、尖括号、&符号、分号、井号、引号、空白字符等)
4. 检查用户名是否匹配禁用名称规则(通过`$nmlimit`正则表达式)
**返回值**
- `name_not_set`:用户名为空
- `name_too_long`:用户名过长
- `name_invalid`:用户名包含非法字符
- `name_banned`:用户名被禁用
- `name_ok`:用户名符合规则
### pass_check($pass, $rpass)
**功能**:检查密码是否符合规则
**参数**
- `$pass`:密码
- `$rpass`:重复输入的密码
**处理流程**
1. 检查密码或重复密码是否为空
2. 检查两次输入的密码是否一致
3. 检查密码长度是否小于4个字符(已注释)
4. 检查密码长度是否超过24个字符
**返回值**
- `pass_not_set`:密码为空
- `pass_not_match`:两次密码不一致
- `pass_too_long`:密码过长
- `pass_ok`:密码符合规则
### real_ip()
**功能**:获取用户的真实IP地址
**参数**:无
**处理流程**
1. 首先尝试从`$_SERVER['HTTP_X_FORWARDED_FOR']`获取IP
2. 如果上述方法失败,尝试从`$_SERVER['HTTP_CLIENT_IP']`获取
3. 如果上述方法失败,尝试从`$_SERVER['HTTP_CF_CONNECTING_IP']`(Cloudflare代理)获取
4. 如果上述方法失败,尝试从`$_SERVER['REMOTE_ADDR']`获取
5. 如果使用的是旧版PHP环境,则使用getenv()函数获取
6. 使用正则表达式验证IP地址格式
7. 对特定用户名进行IP地址硬编码处理
**返回值**:用户的真实IP地址字符串
### get_iconlist()
**功能**:获取头像列表的HTML选项
**参数**:无
**处理流程**
1. 根据`$iconlimit`生成从0到限制值的头像编号列表
2. 根据当前选中的头像(`$icon`)设置选中状态
**返回值**:包含头像选项的HTML选项数组
### get_utitlelist()
**功能**:获取用户称号列表
**参数**:无
**处理流程**
1.`$nicks`字符串按"/"分割成数组
2. 将分割后的数组与`$utitlelist`对应
**返回值**:用户称号列表数组
### fetch_userdata_by_username($n)
**功能**:根据用户名获取用户数据
**参数**
- `$n`:用户名
**处理流程**
1. 从数据库查询指定用户名的用户数据
2. 如果用户不存在,返回NULL
3. 调用`format_userdata()`格式化用户数据
**返回值**:格式化后的用户数据数组,或NULL(用户不存在时)
### format_userdata($data)
**功能**:格式化用户数据
**参数**
- `$data`:用户数据数组
**处理流程**
1. 处理用户的成就记录(`achrev`
2. 处理用户的称号记录(`nicksrev`
**返回值**:格式化后的用户数据数组
## 主要特点
1. **安全验证**:提供用户名和密码的安全验证功能
2. **IP获取**:提供多种方法获取用户真实IP,包括对代理情况的处理
3. **数据格式化**:提供用户数据的格式化功能
4. **UI生成**:生成头像选择和称号选择的UI元素
## 注意事项
1. 用户名验证使用了正则表达式,包括对特殊字符和长度的限制
2. IP获取函数考虑了多种代理情况,包括Cloudflare代理
3. 对特定用户名有硬编码的IP地址处理
4. 用户数据格式化主要处理成就和称号相关数据
5. 该文件主要处理用户账户相关功能,不涉及游戏内角色数据处理
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment