diff --git a/dll/FunGame.Core.dll b/dll/FunGame.Core.dll index 8b0c7c1..ae7e4e7 100644 Binary files a/dll/FunGame.Core.dll and b/dll/FunGame.Core.dll differ diff --git a/dll/FunGame.Core.xml b/dll/FunGame.Core.xml index ba76000..618604f 100644 --- a/dll/FunGame.Core.xml +++ b/dll/FunGame.Core.xml @@ -6,7 +6,8 @@ - 需要配合Milimoe.FunGame.Core.Library.Constant.DataRequestType使用 + 需要配合 使用 + 如果是 的数据请求,则配合 使用 确保已添加对应的枚举 @@ -25,14 +26,56 @@ 私有的实现类 - + + + 私有的实现类(这是局内请求的) + + + 基于本地已连接的 创建新的数据请求 使用 中的 创建一个新的请求 + 插件则使用 中的 创建一个新的请求 + + + + + 基于本地已连接的 创建新的数据请求 + 使用 中的 创建一个新的请求 + 插件则使用 中的 创建一个新的请求 + 此数据请求只能调用异步方法 请求数据 + + + + + + + + + 基于本地已连接的 创建新的局内()数据请求 + 使用 中的 创建一个新的请求 + 此构造方法是给 提供的 + + + + + + + + + 基于本地已连接的 创建新的局内()数据请求 + 使用 中的 创建一个新的请求 + 此构造方法是给 提供的 + 此数据请求只能调用异步方法 请求数据 + + + + + @@ -49,8 +92,10 @@ 向服务器发送数据请求 + 警告: 调用此方法将抛出异常。请调用并等待 + @@ -66,6 +111,16 @@ + + + 常规数据请求 + + + + + 游戏局内请求 + + 反序列化Hashtable中的Json对象 @@ -204,63 +259,269 @@ 回滚事务 - + - 数据请求结果 + 行动顺序表 - + - 详细错误信息 + 用于文本输出 - + - 私有的实现类 + 当前的行动顺序 - + - 基于本地已连接的 创建新的数据请求 + 当前已死亡的角色顺序(第一个是最早死的) - - - + - 添加数据 + 硬直时间表 + + + + + 角色正在吟唱的魔法 + + + + + 角色预释放的爆发技 + + + + + 角色目前赚取的金钱 + + + + + 角色目前的连杀数 + + + + + 角色被插队次数 + + + + + 助攻伤害 + + + + + 游戏是否结束 + + + + + 新建一个行动顺序表 + + 参与本次游戏的角色列表 + 用于文本输出 + + + + 将角色加入行动顺序表 + + + + + + + + 从行动顺序表取出第一个角色 + + + + + + 显示当前所有角色的状态和硬直时间 + + + + + 回合开始前触发 + + + + + + 角色 的回合进行中 + + + 是否结束游戏 + + + + 回合结束后触发 + + + + + + 时间进行流逝,减少硬直时间,减少技能冷却时间,角色也会因此回复状态 + + 流逝的时间 + + + + 对敌人造成伤害 + + + + + + + + + + + + 获取EP + + 参数1 + 参数2 + 最大获取量 + + + + 计算物理伤害 + + + + + + + + + + + 计算魔法伤害 + + + + + + + + + + + + 死亡结算 + + + + + + + 游戏结束信息 + + + + + 检查是否可以释放技能 + + + + + + + + + 是否在回合外释放爆发技插队 + + 当前正在行动的角色 + + + + + 打断施法 + + + + + + + 此标记意味着属性允许初始设定,但不是强制的。适用于 + + + + + 此标记意味着属性需要经过初始设定。适用于 + + + + + 简易的实体模组配置文件生成器 + 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 + 文件会保存为:程序目录/configs//.json + + + 新建一个配置文件,文件会保存为:程序目录/configs//.json + + + + + + + 简易的实体模组配置文件生成器 + 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 + 文件会保存为:程序目录/configs//.json + + + 新建一个配置文件,文件会保存为:程序目录/configs//.json + + + + + + + 模组的名称 + + + + + 配置文件的名称(后缀将是.json) + + + + + 使用索引器给指定key赋值,不存在key会新增 + + + + + + + 获取指定key的value + + + + + + + 添加一个配置,如果已存在key会覆盖 - + - 向服务器发送数据请求 + 从配置文件中读取配置。 - - + - 异步向服务器发送数据请求 + 将配置保存到配置文件。调用此方法会覆盖原有的.json,请注意备份 - - - - - 获取指定key对应的反序列化对象 - - - - - - - - 反序列化Hashtable中的Json对象 - - - - - @@ -276,23 +537,11 @@ - 获取物品实例,默认返回Passiveitem 被动物品 需要强制转换 + 获取物品实例 Item类型 主动 或 被动 - - - 获取主动物品实例 - - - - - - 获取被动物品实例 - - - 获取房间实例 @@ -302,7 +551,7 @@ 创建时间 房主 房间类型 - 游戏模组 + 游戏模组 房间状态 @@ -331,32 +580,13 @@ - - - 获取技能实例,默认返回PassiveSkill 被动技能 需要强制转换 - - Skill类型 主动 或 被动 - - - - - 获取主动技能实例 - - - - - - 获取被动技能实例 - - - 获取用户实例 - + 获取用户实例 @@ -389,64 +619,74 @@ - + 适用于客户端的模组集 - + 适用于服务器的模组集 - + 游戏地图集 - + 角色表 - + 技能表 - + 物品表 - + + + 客户端模组与服务器模组的关联字典 + + + + + 已加载的模组DLL名称对应的路径 + + + 传入 类型来创建指定端的模组读取器 - runtime = 时,仅读取 - runtime = 时,仅读取 - 都会读取 + runtime = 时,仅读取 + runtime = 时,都会读取,并且生成关联字典 + 都会读取 传入 类型来创建指定端的模组读取器 - 用于构建 + 用于构建 其他需要传入给插件初始化的对象 - + 获取对应名称的模组实例 - 如果需要取得服务器模组的实例,请调用 + 如果需要取得服务器模组的实例,请调用 - + 获取对应名称的服务器模组实例 - + 获取对应名称的游戏地图 @@ -479,6 +719,13 @@ + + + 判断字符串是否是全中文的字符 + + + + 获取用户名长度 @@ -544,6 +791,15 @@ + + + 反序列化Json对象 使用 可指定反序列化选项 + + + + + + 反序列化Json对象 可指定反序列化选项 @@ -638,40 +894,58 @@ - 使用HMACSHA512算法加密 + 加密服务工具箱 - 使用HMACSHA512算法加密 + 使用 HMAC-SHA512 算法对文本进行加密 - 需要加密的值 - 秘钥 - + 需要加密的文本 + 用于加密的秘钥 + 加密后的 HMAC-SHA512 哈希值 + + + + 计算文件的 SHA-256 哈希值 + + 要计算哈希值的文件路径 + 文件的 SHA-256 哈希值 - 使用RSA算法加密 + 使用 RSA 算法加密 - 明文 - 公钥 + 明文 + 公钥 - 使用RSA算法解密 + 使用 RSA 算法解密 - 密文 - 私钥 + 密文 + 私钥 + + + 为字符串(string)添加扩展方法 + + - 使用HMACSHA512算法加密 + 使用 HMAC-SHA512 算法对文本进行加密 + 注意:此方法会先将 转为小写并计算两次哈希。 + + 需要加密的文本 + 用于加密的秘钥 + 加密后的 HMAC-SHA512 哈希值 + + + + 验证码服务工具箱 - 需要加密的值 - 秘钥 - @@ -702,6 +976,11 @@ + + + 多线程服务工具箱 + + 开启一个任务:调用返回对象的OnCompleted()方法可以执行后续操作,支持异步 @@ -721,6 +1000,40 @@ + + + 计算服务工具箱 + + + + + 四舍五入计算 + + + + + + + + 四舍五入保留2位小数 + + + + + + + 四舍五入保留4位小数 + + + + + + + 此方法检查一个 百分比(%) 数值是否存在于 [0,1] 区间 + + + 如果超过0,则返回0;超过1则返回1。 + See: , , @@ -841,11 +1154,11 @@ 简易的插件配置文件生成器 - 仅支持部分基本类型(, , , )及其数组(List<long>, List<decimal>, List<string>, List<bool>long[], decimal[], string[], bool[]) + 仅支持部分基本类型(, , , , )及其数组(List<long>, List<double>, List<decimal>, List<string>, List<bool>long[], double[], decimal[], string[], bool[]文件会保存为:程序目录/configs//.json - 新建一个配置文件,文件会保存为:程序目录/configs//.json + 新建一个配置文件,文件会保存为:程序目录/configs//.json @@ -853,11 +1166,11 @@ 简易的插件配置文件生成器 - 仅支持部分基本类型(, , , )及其数组(List<long>, List<decimal>, List<string>, List<bool>long[], decimal[], string[], bool[]) + 仅支持部分基本类型(, , , , )及其数组(List<long>, List<double>, List<decimal>, List<string>, List<bool>long[], double[], decimal[], string[], bool[]文件会保存为:程序目录/configs//.json - 新建一个配置文件,文件会保存为:程序目录/configs//.json + 新建一个配置文件,文件会保存为:程序目录/configs//.json @@ -939,11 +1252,16 @@ key 是 + + + 已加载的插件DLL名称对应的路径 + + 构建一个插件读取器并读取插件 - 用于构建 + 用于构建 其他需要传入给插件初始化的对象 @@ -1030,18 +1348,27 @@ 读取TXT文件内容 - 文件名 + 文件名(需要包含扩展名) 相对路径 内容 - + - 写入TXT文件内容(如不存在文件会创建,反之新起一行追加) + 写入TXT文件内容(如不存在文件会创建) + 选项用于覆盖或追加文本 - - 文件名 + + 文件名(需要包含扩展名) + 相对路径 + 是否覆盖 + + + + 写入并覆盖TXT文件内容 + + + 文件名(需要包含扩展名) 相对路径 - 内容 @@ -1146,63 +1473,135 @@ - + - 输出系统消息 + 这个控制器在Base的基础上添加了DataRequest + - - - 输出错误消息 - - - + 基于本地已连接的Socket创建新的数据请求 - + 基于本地已连接的Socket创建长时间运行的数据请求 - + + + 基于本地已连接的Socket创建新的局内数据请求 + + + + + 基于本地已连接的Socket创建长时间运行的局内数据请求 + + + + + 基于本地已连接的Socket创建新的数据请求 + 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 + + + + + + + + 基于本地已连接的Socket创建长时间运行的数据请求 + 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 + + + + + + + + 基于本地已连接的Socket创建新的局内()数据请求 + 此方法是给 提供的,但是 也能调用 + 模组服务器调用此方法将抛出异常 + + + + + + + + + 基于本地已连接的Socket创建长时间运行的局内()数据请求 + 此方法是给 提供的,但是 也能调用 + 模组服务器调用此方法将抛出异常 + + + + + + + + + 新建一个AddonController + + + + + + + 这是通用的控制器,仅提供基本功能 + + Addon的类型,如或者 + + + + 控制器的本体 + + + + + 输出系统消息 + + + + + 输出错误消息 + + + 输出系统消息 - + 输出错误消息 - + - 基于本地已连接的Socket创建新的数据请求 - 请勿在 中调用此方法 + 新建一个BaseAddonController - - - - - - 基于本地已连接的Socket创建长时间运行的数据请求 - 请勿在 中调用此方法 - - - - - - - 新建一个AddonController - - + + + + 默认的输出错误消息方法 + + + + + + + 输出错误消息 + + + + 此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能 @@ -1319,6 +1718,42 @@ + + + 基于本地已连接的Socket创建新的数据请求 + 加载项专用( / ) + + + + + + + + 基于本地已连接的Socket创建长时间运行的数据请求 + 加载项专用( / ) + + + + + + + + 基于本地已连接的Socket创建新的局内()数据请求 + 加载项专用:此方法是给 提供的 + + + + + + + + 基于本地已连接的Socket创建长时间运行的局内()数据请求 + 加载项专用:此方法是给 提供的 + + + + + 开始接收服务器信息 @@ -1414,12 +1849,23 @@ Socket + + + WebSocket + + 继承请调用base构造 Socket + + + 继承请调用base构造 + + Socket + 继承请重写此方法 @@ -1459,6 +1905,1211 @@ 触发关闭事件 + + + 实体的数字ID + + + + + 实体的唯一ID + + + + + 实体的名称 + + + + + 用于记录对哪个角色造成了多少伤害 + + + + + 此详情类属于哪个角色 + + + + + 初始化一个助攻详情类 + + + + + + + 获取和设置对 的伤害 + + + + + + + 获取对 的伤害 + + + 目标的 的百分比形式 + + + + 角色需要使用 Factory.Get 的方式来构造,并赋值 标记的属性 + 在使用时仅需要调用 方法即可获得相同对象 + 不建议继承 + + + + + 角色的姓 + + + + + 角色的名字 + + + + + 角色的昵称 + + + + + 角色所属的玩家 + + + + + 角色的详细资料 + + + + + 魔法属性 + + + + + 角色定位1 + + + + + 角色定位2 + + + + + 角色定位3 + + + + + 角色评级 + + + + + 晋升点数 + + + + + 核心属性 + + + + + 等级 + + + + + 经验值 + + + + + 角色目前所处的状态 [ 战斗相关 ] + + + + + 角色目前被特效施加的状态 [ 用于设置角色是否被控制的状态 ] + + + + + 角色目前被特效施加的控制效果 [ 用于特效判断是否需要在移除特效时更改角色状态 ] + + + + + 角色是否是中立的 [ 战斗相关 ] + + + + + 角色是否是不可选中的 [ 战斗相关 ] + + + + + 初始生命值 [ 初始设定 ] + + + + + 基础生命值 [ 与初始设定和等级相关 ] [ 与基础力量相关 ] + + + + + 额外生命值 [ 与额外力量相关 ] + + + + + 额外生命值2 [ 与技能和物品相关 ] + + + + + 最大生命值 = 基础生命值 + 额外生命值 + 额外生命值2 + + + + + 当前生命值 [ 战斗相关 ] + + + + + 初始魔法值 [ 初始设定 ] + + + + + 基础魔法值 [ 与初始设定和等级相关 ] [ 与基础智力相关 ] + + + + + 额外魔法值 [ 与额外智力相关 ] + + + + + 额外魔法值2 [ 与技能和物品相关 ] + + + + + 最大魔法值 = 基础魔法值 + 额外魔法值 + 额外魔法值2 + + + + + 当前魔法值 [ 战斗相关 ] + + + + + 当前爆发能量 [ 战斗相关 ] + + + + + 初始攻击力 [ 初始设定 ] + + + + + 基础攻击力 [ 与初始设定和等级相关 ] [ 与核心属性相关 ] + + + + + 额外攻击力 [ 与额外核心属性相关 ] + + + + + 额外攻击力2 [ 与技能和物品相关 ] + + + + + 攻击力 = 基础攻击力 + 额外攻击力 + 额外攻击力2 + + + + + 初始物理护甲 [ 初始设定 ] + + + + + 基础物理护甲 [ 与初始设定相关 ] [ 与基础力量相关 ] + + + + + 额外物理护甲 [ 与额外力量相关 ] + + + + + 额外物理护甲2 [ 与技能和物品相关 ] + + + + + 物理护甲 = 基础物理护甲 + 额外物理护甲 + 额外物理护甲2 + + + + + 物理伤害减免(%) = [ 与物理护甲相关 ] + 额外物理伤害减免(%) + + + + + 额外物理伤害减免(%) [ 与技能和物品相关 ] + + + + + 魔法抗性(%) [ 与技能和物品相关 ] + + + + + 物理穿透(%) [ 与技能和物品相关 ] + + + + + 魔法穿透(%) [ 与技能和物品相关 ] + + + + + 初始生命回复力 [ 初始设定 ] + + + + + 生命回复力 = [ 与初始设定相关 ] [ 与力量相关 ] + 额外生命回复力 + + + + + 额外生命回复力 [ 与技能和物品相关 ] + + + + + 初始魔法回复力 [ 初始设定 ] + + + + + 魔法回复力 = [ 与初始设定相关 ] [ 与智力相关 ] + 额外魔法回复力 + + + + + 额外魔法回复力 [ 与技能和物品相关 ] + + + + + 能量回复力 [ 与技能和物品相关 ] + + + + + 核心属性的值 [ 核心属性相关 ] + + + + + 基础核心属性的值 [ 核心属性相关 ] + + + + + 额外核心属性的值 [ 核心属性相关 ] + + + + + 初始力量 [ 初始设定 ] + + + + + 初始敏捷 [ 初始设定 ] + + + + + 初始智力 [ 初始设定 ] + + + + + 基础力量 [ 与初始设定和等级相关 ] + + + + + 基础敏捷 [ 与初始设定和等级相关 ] + + + + + 基础智力 [ 与初始设定和等级相关 ] + + + + + 额外力量 [ 与技能和物品相关 ] + + + + + 额外敏捷 [ 与技能和物品相关 ] + + + + + 额外智力 [ 与技能和物品相关 ] + + + + + 力量 = 基础力量 + 额外力量 + + + + + 敏捷 = 基础敏捷 + 额外敏捷 + + + + + 智力 = 基础智力 + 额外智力 + + + + + 力量成长值(+BaseSTR/Lv) + + + + + 敏捷成长值(+BaseAGI/Lv) + + + + + 智力成长值(+BaseINT/Lv) + + + + + 行动速度 [ 初始设定 ] + + + + + 行动速度 = [ 与初始设定相关 ][ 与敏捷相关 ] + 额外行动速度 + + + + + 额外行动速度 [ 与技能和物品相关 ] + + + + + 行动系数(%) = [ 与速度相关 ] + 额外行动系数(%) + + + + + 额外行动系数(%) [ 与技能和物品相关 ] + + + + + 加速系数(%) [ 与技能和物品相关 ] + + + + + 冷却缩减(%) = [ 与智力相关 ] + 额外冷却缩减(%) + + + + + 额外冷却缩减(%) [ 与技能和物品相关 ] + + + + + 攻击距离 [ 与技能和物品相关 ] [ 单位:格 ] + + + + + 暴击率(%) = [ 与敏捷相关 ] + 额外暴击率(%) + + + + + 额外暴击率(%) [ 与技能和物品相关 ] + + + + + 暴击伤害(%) = [ 与力量相关 ] + 额外暴击伤害(%) + + + + + 额外暴击伤害(%) [ 与技能和物品相关 ] + + + + + 闪避率(%) = [ 与敏捷相关 ] + 额外闪避率(%) + + + + + 额外闪避率(%) [ 与技能和物品相关 ] + + + + + 普通攻击对象 + + + + + 角色的技能列表 + + + + + 角色的持续性特效列表 + + + + + 角色携带的物品 + + + + ===== 私有变量 ===== + + 等级 + + + + + 生命值 + + + + + 魔法值 + + + + + 能量值 + + + + + 物理穿透 + + + + + 魔法穿透 + + + + + 回复状态至满 + + + + + + 按时间回复状态 + + + + + + + 按当前百分比回复状态(一般在属性变化时调用) + + + + + + + + + 角色的属性发生变化,会影响特殊效果的计算 + + + + + 比较一个角色(只比较 ) + + + + + + + 获取角色实例的名字、昵称以及所属玩家 + + + + + + 获取角色实例的名字、昵称以及所属玩家,包含等级 + + + + + + 获取角色的名字 + + + 如果 = false,返回 ;反之,返回 + + + + + 获取角色的详细信息 + + + + + + 获取战斗状态的信息 + + + + + + + 更新角色的状态 + + + + + + 复制一个角色 + [ 推荐从模组中复制后使用对象 ] + + + + + + 角色的姓 + + + + + 角色的名字 + + + + + 角色的昵称 + + + + + 角色的出生地 + + + + + 角色的出生日期 + + + + + 角色的身份 + + + + + 角色的隶属 + + + + + 角色的性别 + + + + + 角色的身高 + + + + + 角色的体重 + + + + + 角色的故事 + + + + + 特殊效果类,需要继承 + + + + + 特殊效果类,需要继承 + + + + + 所属的技能 + + + + + 特殊效果类型 + 注意:如果技能特效没有原生施加控制效果,请始终保持此属性为 。 + + + + + 作用于自身 + + + + + 作用目标数量 + + + + + 作用范围 + + + + + 持续性的 + 配合 使用,而不是 。 + + + + + 持续时间 + 配合 使用。 + + + + + 持续时间(回合) + 使用此属性需要将 设置为 false。 + + + + + 剩余持续时间 + + + + + 剩余持续时间(回合) + + + + + 魔法类型 + + + + + 效果描述 + + + + + 等级,跟随技能的等级 + + + + + 此特效的施加者,用于溯源 + + + + + 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在 + + + + + 输出文本或日志 + + + + + 获得此特效时 + + + + + + 失去此特效时 + + + + + + 在伤害计算前修改伤害类型 + + + + + + + + + + 在伤害计算前修改预期伤害 + + + + + + + + + + + 在伤害计算完成后修改实际伤害 [ 允许取消伤害 ] + + + + + + + + + 返回 true 表示取消此伤害,等同于闪避 + + + + 在完成普通攻击动作之后修改硬直时间 + + + + + + + + 在完成释放技能动作之后修改硬直时间 + + + + + + + + + 在造成伤害时,修改获得的能量 + + + + + + + 在受到伤害时,修改获得的能量 + + + + + + + 技能开始吟唱时 [ 爆发技插队可触发此项 ] + + + + + + 技能吟唱被打断时 + + + + + + + + 吟唱结束后释放技能(魔法)/ 直接释放技能(战技/爆发技) + + + + + + + + + 时间流逝时 + + + + + + + 在完成伤害结算后 + + + + + + + + + + + + 在特效持有者的回合开始前 + + + + + + 在特效持有者的回合结束后 + + + + + + 技能被升级时 + + + + + + + 特效持有者升级时 + + + + + + + 在完成死亡结算后 [ 全体广播 ] + + + + + + + + + 在触发闪避时 + + + + + 返回 true 表示无视闪避 + + + + 在触发暴击时 + + + + + + + 角色属性发生变化 + + + + + + 行动开始前,修改可选择的 , , 列表 + 注意 是副本,修改无效 + + + + + + + + 返回 true 表示更改生效 + + + + 对敌人造成技能伤害 [ 强烈建议使用此方法造成伤害而不是自行调用 ] + + + + + + + + + + + 打断施法 [ 尽可能的调用此方法而不是直接调用 ,以防止中断性变更 ] + + + + + + + 返回特效详情 + + + + + + 比较两个特效 + + + + + + + 普通攻击名称 + + + + + 普通攻击说明 + + + + + 所属的角色 + + + + + 普通攻击的伤害 + + + + + 普通攻击等级 + + + + + 是否是魔法伤害 + + + + + 魔法伤害需要指定魔法类型 + + + + + 硬直时间 + + + + + 对目标(或多个目标)发起普通攻击 + + + + + + + + 修改伤害类型 + + + + + + + 等级 + + + + + 是否是魔法伤害 + + + + + 魔法类型 + + + + + 与 不同,构造技能时,建议继承此类再构造 + + + + + 此技能所属的角色 + + + + + 技能描述 + + + + + 快捷键 + + + + + 技能等级,等于 0 时可以称之为尚未学习 + + + + + 技能 [ 此项为最高优先级 ] + + + + + 是否是主动技能 [ 此项为高优先级 ] + + + + + 是否可用 [ 此项为高优先级 ] + + + + + 效果持续生效中 [ 此项为高优先级 ] [ 此项设置为true后不允许再次释放,防止重复释放 ] + + + + + 是否是爆发技 [ 此项为高优先级 ] + + + + + 是否属于魔法 [ 必须为 true ],反之为战技 + + + + + 魔法消耗 [ 魔法 ] + + + + + 基础魔法消耗 [ 魔法 ] + + + + + 吟唱时间 [ 魔法 ] + + + + + 能量消耗 [ 战技 ] + + + + + 基础能量消耗 [ 战技 ] + + + + + 冷却时间 + + + + + 剩余冷却时间 [ 建议配合 属性使用 ] + + + + + 硬直时间 + + + + + 效果列表 + + + + + 其他参数 + + + + + 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在 + + + + + 触发技能升级 + + + + + 当获得技能时 + + + + + + 技能开始吟唱时 [ 吟唱魔法、释放战技和爆发技、预释放爆发技均可触发 ] + + + + + 触发技能效果 + + + + + 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ] + + + + + + 返回技能的详细说明 + + + + + + 等级 + + 记录 的生涯、赛季统计数据 @@ -1518,7 +3169,7 @@ 开始接收客户端消息 - 请勿在 中调用此方法 + 请勿在 中调用此方法 @@ -1526,7 +3177,7 @@ 启动对客户端的监听 - 请勿在 中调用此方法 + 请勿在 中调用此方法 @@ -1536,7 +3187,7 @@ - 局内事件的接口,与 配套使用 + 局内事件的接口,与 配套使用 @@ -1549,53 +3200,100 @@ 服务器需要实现此接口 - + + + 一个服务器标识秘钥 + + + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的角色 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + + + 建议使用一个类来存储常量,方便重用 + + + + + 模组:必须继承基类: + 继承事件接口并实现其方法来使模组生效。例如继承: + + + + + 模组服务器:必须继承基类: + 使用switch块分类处理 。 + + + + + 注意:服务器模组的名称必须和模组名称相同。除非你指定了 + + + + + 地图:必须继承基类: + + + + + 角色:必须继承基类: + + + + + 技能:必须继承基类: + + + + + 物品:必须继承基类: + + + 必须继承基类: 继承事件接口并实现其方法来使插件生效。例如继承: @@ -1621,6 +3319,11 @@ 地图作者 + + + 长度 + + 宽度 @@ -1636,6 +3339,27 @@ 格子大小 + + + 格子集 + + + + + 使用坐标获取格子,0号格子的坐标是(0, 0),如果你还有高度的话,则是(0, 0, 0) + + + + + + + + + 使用坐标获取格子,从0号开始 + + + + 加载标记 @@ -1659,153 +3383,250 @@ - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 默认地图 - + - 模组所使用的地图 + 模组的依赖集合 - + 适用的房间模式 - + + + 是否连接其他的服务器模组 + + + + + 如果将 设置为true,那么此属性必须指定一个存在的服务器模组的 名称。 + + + 包含了一些常用方法的控制器 - + + + base控制器,没有DataRequest + + + 控制器内部变量 - + + + 必须重写此方法,游戏的主要逻辑写在这里面 + 此方法会在 时调用 + + + + + + 如模组有界面,请重写此方法 - 此方法会在StartGame时调用 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + 传递委托以便让模组调用 - + Session对象 - + Config对象 - + - 绑定事件。在后触发 + 关联的服务器模组名称 - + - 模组名称 + 绑定事件。在后触发 - + + + 模组的依赖集合 + (地图名称()的数组) + (角色模组名称()的数组) + (技能模组名称()的数组) + (物品模组名称()的数组) + + + + + 模组的依赖集合 + (地图名称()的数组) + (角色模组名称()的数组) + (技能模组名称()的数组) + (物品模组名称()的数组) + + + + + 模组所使用的地图组 + + + + + 模组所使用的角色组 + + + + + 模组所使用的技能组 + + + + + 模组所使用的物品组 + + + + + 实际使用的地图组对象 + 请使用 自动填充,不要自己添加 + + + + + 实际使用的角色组对象 + 请使用 自动填充,不要自己添加 + + + + + 实际使用的技能组对象 + 请使用 自动填充,不要自己添加 + + + + + 实际使用的物品组对象 + 请使用 自动填充,不要自己添加 + + + + + 获得所有的依赖项 + 此方法会自动填充 + + + + + 服务器模组的名称 + 如果服务器模组配合一个相关联的模组使用,那么它们的 名称必须相同。 + + + 模组描述 - + 模组版本 - + 模组作者 - + 默认地图 - + - 模组所使用的地图 + 模组的依赖集合 - + 包含了一些常用方法的控制器 - + 控制器内部变量 - + 启动服务器监听 请在此处实现服务器逻辑 - + - + - + 接收并处理GamingMessage @@ -1814,68 +3635,103 @@ 消息参数 底层会将哈希表中的数据发送给客户端 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 - + + + 格子编号 + + + + + 格子在地图中的x坐标 + + + + + 格子在地图中的y坐标 + + + + + 格子在地图中的z坐标 + + + + + 是谁站在这格子上? + + + + + 此格子目前受到了什么影响?或者它有什么技能… + + + + + 此格子呈现的颜色(默认为 ) + + + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的物品 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 @@ -1906,6 +3762,11 @@ 包含了一些常用方法的控制器 + + + base控制器,没有DataRequest + + 控制器内部变量 @@ -1952,47 +3813,47 @@ 绑定事件。在后触发 - + 模组名称 - + 模组描述 - + 模组版本 - + 模组作者 - + 此模组中包含的技能 - + 加载标记 - + 加载模组 - + 模组加载后需要做的事 - + 允许返回false来阻止加载此模组 @@ -2394,6 +4255,266 @@ 需要同步更新 + + + 魔法,编号 1xxx + + + + + 战技,编号 2xxx + + + + + 爆发技,编号 3xxx + + + + + 被动,编号 4xxx + + + + + 注意:具有控制效果的特效,应该和技能本身的特效(一般此项为None)区分开来。此效果被赋值会改变一些判断的结果。 + + + + + 无特殊效果 + + + + + 标记,目标受到某些技能的标记 + + + + + 眩晕,目标无法行动 + + + + + 冰冻,目标无法行动 + + + + + 沉默,目标无法使用技能 + + + + + 定身 + + + + + 恐惧 + + + + + 睡眠,目标暂时无法行动,受到伤害后会苏醒 + + + + + 击退 + + + + + 击倒,目标被击倒在地,暂时无法行动 + + + + + 嘲讽,目标被迫攻击施法者 + + + + + 减速,目标行动速度和攻击频率降低 + + + + + 衰弱,目标的攻击和防御降低 + + + + + 中毒,目标在一段时间内持续受到伤害 + + + + + 燃烧,目标受到火焰伤害,持续一段时间 + + + + + 流血,目标持续受到物理伤害 + + + + + 致盲,目标无法准确攻击,命中率降低 + + + + + 致残,减少目标的行动或攻击能力 + + + + + 护盾,减少受到的伤害或抵消部分伤害 + + + + + 持续治疗,逐步恢复生命值 + + + + + 加速,提升行动速度和攻击频率 + + + + + 无敌,暂时不会受到任何伤害 + + + + + 不可选中,无法成为普攻和技能的目标 + + + + + 伤害提升,增加攻击输出 + + + + + 防御提升,减少所受伤害 + + + + + 暴击提升,增加暴击率或暴击伤害 + + + + + 魔法恢复,增加魔法值回复速度 + + + + + 破甲,降低目标的防御值 + + + + + 降低魔法抗性,目标更容易受到魔法伤害 + + + + + 诅咒,降低目标的属性或给予负面效果 + + + + + 疲劳,减少目标的攻击或技能效果 + + + + + 魔力燃烧,消耗目标的魔法值 + + + + + 魅惑,控制目标替施法者作战 + + + + + 缴械,目标无法进行普通攻击 + + + + + 混乱,目标的行动变得随机化 + + + + + 石化,目标无法行动,并大幅增加受到的伤害 + + + + + 法术沉默,目标无法施放魔法技能 + + + + + 放逐,目标暂时无法被攻击,也无法行动 + + + + + 毁灭,目标在倒计时结束后受到大量伤害或死亡 + + + + + 角色目前所处的状态 + + + + + 可以行动 [ 战斗相关 ] + + + + + 完全行动不能 [ 战斗相关 ] + + + + + 行动受限 [ 战斗相关 ] + + + + + 战斗不能 [ 战斗相关 ] + + + + + 技能受限 [ 战斗相关 ] + + + + + 处于吟唱中 [ 战斗相关 ] [ 技能相关 ] + + + + + 预释放爆发技(插队) [ 战斗相关 ] [ 技能相关 ] + + Commands @@ -2468,23 +4589,41 @@ 客户端需要使用创建此类单例 - + + + 使用的模组实例 + + + + + 游戏的参数 + + + + + 此实例所属的玩家 + + + 传入游戏所需的参数,构造一个Gaming实例 - - - + + + + + + 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 客户端也可以参照此方法自行实现 - 此方法目的是为了触发 的局内事件实现 + 此方法目的是为了触发 的局内事件实现 - - + 消息类型 + 接收到的数据 @@ -2521,6 +4660,16 @@ 所处的房间 + + + 已加载的插件DLL名称对应的路径 + + + + + 已加载的模组DLL名称对应的路径 + + 从plugins目录加载所有插件 @@ -2530,11 +4679,11 @@ - + - 从gamemodes目录加载所有模组 + 从modules目录加载所有模组 - + @@ -2542,11 +4691,12 @@ - + - 从gamemodes目录加载所有适用于服务器的模组 + 从modules目录加载所有适用于服务器的模组 - + + @@ -2556,12 +4706,21 @@ - 从gamemaps目录加载所有地图 + 从maps目录加载所有地图 - + + + + 添加构造好的模组类实例到字典中 + + 加载的类型 + 循环程序集的类型 + 实例的字典 + 加载时触发的检查方法,返回false不添加 + 默认的序列化选项 @@ -2592,6 +4751,15 @@ + + + 反序列化Json对象,使用 + + + + + + 反序列化Json对象 diff --git a/dll/OneBot-HTTPClient.dll b/dll/OneBot-HTTPClient.dll index 991a0ad..378cc78 100644 Binary files a/dll/OneBot-HTTPClient.dll and b/dll/OneBot-HTTPClient.dll differ diff --git a/src/ListeningTask/FriendMessageTask.cs b/src/ListeningTask/FriendMessageTask.cs index 55ecdde..d6edbfe 100644 --- a/src/ListeningTask/FriendMessageTask.cs +++ b/src/ListeningTask/FriendMessageTask.cs @@ -49,6 +49,12 @@ namespace Milimoe.RainBOT.ListeningTask return quick_reply; } + if (e.detail == "挑战结束" && e.user_id == GeneralSettings.Master) + { + await Bot.Unmute12ClockMembers(); + return quick_reply; + } + if (GeneralSettings.IsMute && e.detail == "忏悔") { if (!await Bot.CheckBlackList(false, e.user_id, e.user_id)) return quick_reply; diff --git a/src/ListeningTask/GroupMessageTask.cs b/src/ListeningTask/GroupMessageTask.cs index 86bf4ae..fdfea38 100644 --- a/src/ListeningTask/GroupMessageTask.cs +++ b/src/ListeningTask/GroupMessageTask.cs @@ -108,6 +108,11 @@ namespace Milimoe.RainBOT.ListeningTask await Bot.SendGroupMessage(e.group_id, "12点大挑战", "欢迎加入12点大挑战。参加本挑战后,你将在每晚的12点获得8小时禁言和优质的睡眠,确保第二天的精神饱满!\r\n发送【加入12点】即可参加。"); return quick_reply; } + else if (e.detail == "挑战结束" && e.user_id == GeneralSettings.Master) + { + await Bot.Unmute12ClockMembers(); + return quick_reply; + } // 发图API if (e.detail == "来图") diff --git a/src/Settings/Bot.cs b/src/Settings/Bot.cs index ff0c232..04ef297 100644 --- a/src/Settings/Bot.cs +++ b/src/Settings/Bot.cs @@ -354,5 +354,29 @@ namespace Milimoe.RainBOT.Settings Console.WriteLine("已向12点大挑战的成员发放奖励。"); Console.ForegroundColor = ConsoleColor.Gray; } + + public static async Task Unmute12ClockMembers() + { + foreach (long group_id in GroupMembers.Keys) + { + List list = []; + foreach (Member m in GroupMembers[group_id]) + { + if (GeneralSettings.Challenge12ClockGroup.Contains(m.user_id)) + { + MuteRecall.Muted.Remove(m.user_id); + SetGroupBanContent content = new(group_id, m.user_id, 0); + list.Add(content); + } + } + if (list.Count > 0) + { + await SendMessage(SupportedAPI.set_group_ban, group_id, "12点大挑战", list, true); + } + } + Console.ForegroundColor = ConsoleColor.Magenta; + Console.WriteLine("已解禁所有参与12点大挑战的成员。"); + Console.ForegroundColor = ConsoleColor.Gray; + } } } diff --git a/src/Settings/GeneralSettings.cs b/src/Settings/GeneralSettings.cs index f52f004..23a576a 100644 --- a/src/Settings/GeneralSettings.cs +++ b/src/Settings/GeneralSettings.cs @@ -1,5 +1,4 @@ -using System.Drawing; -using Milimoe.OneBot.Framework.Utility; +using Milimoe.OneBot.Framework.Utility; namespace Milimoe.RainBOT.Settings { diff --git a/src/Settings/OSMCore.cs b/src/Settings/OSMCore.cs index ca04eae..67837e7 100644 --- a/src/Settings/OSMCore.cs +++ b/src/Settings/OSMCore.cs @@ -3,8 +3,8 @@ public class OSMCore { public const string version = "v1.0"; - public const string version2 = "Patch9"; - public const string time = "Aug. 12th 2024"; + public const string version2 = "Patch10"; + public const string time = "Sep. 12th 2024"; public static string Info => $"OSM Core {version} {version2}\r\nAuthor: Milimoe\r\nBuilt on {time}\r\nSee: https://github.com/milimoe"; }