FunGame.Core 需要配合 使用 如果是 的数据请求,则配合 使用 确保已添加对应的枚举 数据请求结果 详细错误信息 私有的实现类 私有的实现类(这是局内请求的) 基于本地已连接的 创建新的数据请求 使用 中的 创建一个新的请求 插件则使用 中的 创建一个新的请求 基于本地已连接的 创建新的数据请求 使用 中的 创建一个新的请求 插件则使用 中的 创建一个新的请求 此数据请求只能调用异步方法 请求数据 基于本地已连接的 创建新的局内()数据请求 使用 中的 创建一个新的请求 此构造方法是给 提供的 基于本地已连接的 创建新的局内()数据请求 使用 中的 创建一个新的请求 此构造方法是给 提供的 此数据请求只能调用异步方法 请求数据 添加数据 长时间运行的数据请求需要在使用完毕后自行关闭 向服务器发送数据请求 警告: 调用此方法将抛出异常。请调用并等待 异步向服务器发送数据请求 获取指定key对应的反序列化对象 常规数据请求 游戏局内请求 反序列化Hashtable中的Json对象 邮件服务内部ID Smtp客户端信息 上一个邮件发送的结果 上一个邮件的发送错误信息(如果发送失败) 内部变量 创建邮件服务 创建完整邮件对象 发送邮件 关闭邮件服务 关闭邮件服务 需要在Server中继承此类实现 执行一个命令 影响的行数 执行一个指定的命令 命令 影响的行数 查询DataSet 结果集 执行指定的命令查询DataSet 命令 结果集 执行指定的命令查询DataRow(可选实现) 结果行 执行指定的命令查询DataRow(可选实现) 命令 结果行 关闭连接 创建一个SQL事务 提交事务 回滚事务 行动顺序表 用于文本输出 当前的行动顺序 当前已死亡的角色顺序(第一个是最早死的) 硬直时间表 角色正在吟唱的魔法 角色预释放的爆发技 角色目前赚取的金钱 角色目前的连杀数 角色被插队次数 助攻伤害 游戏是否结束 新建一个行动顺序表 参与本次游戏的角色列表 用于文本输出 将角色加入行动顺序表 从行动顺序表取出第一个角色 显示当前所有角色的状态和硬直时间 回合开始前触发 角色 的回合进行中 是否结束游戏 回合结束后触发 时间进行流逝,减少硬直时间,减少技能冷却时间,角色也会因此回复状态 流逝的时间 对敌人造成伤害 获取EP 参数1 参数2 最大获取量 计算物理伤害 计算魔法伤害 死亡结算 游戏结束信息 检查是否可以释放技能 是否在回合外释放爆发技插队 当前正在行动的角色 打断施法 此标记意味着属性允许初始设定,但不是强制的。适用于 此标记意味着属性需要经过初始设定。适用于 简易的实体模组配置文件生成器 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 简易的实体模组配置文件生成器 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 模组的名称 配置文件的名称(后缀将是.json) 使用索引器给指定key赋值,不存在key会新增 获取指定key的value 添加一个配置,如果已存在key会覆盖 从配置文件中读取配置。 将配置保存到配置文件。调用此方法会覆盖原有的.json,请注意备份 获取角色实例 获取库存实例 获取物品实例 Item类型 主动 或 被动 获取房间实例 房间内部序列号 房间号 创建时间 房主 房间类型 游戏模组 房间状态 房间密码 通过DataSet获取房间实例 通过DataSet获取房间列表 获取大厅(-1号房) 获取用户实例 获取用户实例 获取用户实例 获取用户实例 适用于客户端的模组集 适用于服务器的模组集 游戏地图集 角色表 技能表 物品表 客户端模组与服务器模组的关联字典 已加载的模组DLL名称对应的路径 传入 类型来创建指定端的模组读取器 runtime = 时,仅读取 runtime = 时,都会读取,并且生成关联字典 都会读取 传入 类型来创建指定端的模组读取器 用于构建 其他需要传入给插件初始化的对象 获取对应名称的模组实例 如果需要取得服务器模组的实例,请调用 获取对应名称的服务器模组实例 获取对应名称的游戏地图 网络服务工具箱 判断字符串是否是IP地址 判断字符串是否为邮箱地址 判断字符串是否是正常的用户名(只有中英文和数字) 判断字符串是否是全中文的字符 获取用户名长度 判断字符串是否是一个FunGame可接受的服务器地址 此方法可以解析域名 返回地址验证结果,同时输出服务器地址和端口号 判断参数是否是一个FunGame可接受的服务器地址 获取服务器的延迟 服务器IP地址 解析域名为IP地址 返回目标对象的Json字符串 返回目标对象的Json字符串 可指定反序列化选项 反序列化Json对象 反序列化Json对象 使用 可指定反序列化选项 反序列化Json对象 可指定反序列化选项 反序列化Hashtable中的Json对象 反序列化IEnumerable中的Json对象 反序列化IEnumerable中的Json对象 可指定反序列化选项 反序列化Hashtable中的Json对象 可指定反序列化选项 时间服务工具箱 获取系统时间 格式化类型 通过字符串转换为DateTime对象 时间字符串 转换失败返回当前时间 获取系统时间并转为字符串 格式化类型 获取系统时间并转为字符串 格式化字符串 获取系统短时间 时:分:秒 获取系统日期 加密服务工具箱 使用 HMAC-SHA512 算法对文本进行加密 需要加密的文本 用于加密的秘钥 加密后的 HMAC-SHA512 哈希值 计算文件的 SHA-256 哈希值 要计算哈希值的文件路径 文件的 SHA-256 哈希值 使用 RSA 算法加密 明文 公钥 使用 RSA 算法解密 密文 私钥 为字符串(string)添加扩展方法 使用 HMAC-SHA512 算法对文本进行加密 注意:此方法会先将 转为小写并计算两次哈希。 需要加密的文本 用于加密的秘钥 加密后的 HMAC-SHA512 哈希值 验证码服务工具箱 生成验证码 类型 长度 数字验证码 字母验证码 混合验证码 多线程服务工具箱 开启一个任务:调用返回对象的OnCompleted()方法可以执行后续操作,支持异步 开启一个任务:调用返回对象的OnCompleted()方法可以执行后续操作,支持异步 开启一个计时器任务 计算服务工具箱 四舍五入计算 四舍五入保留2位小数 四舍五入保留4位小数 此方法检查一个 百分比(%) 数值是否存在于 [0,1] 区间 如果超过0,则返回0;超过1则返回1。 See: , , 获取FunGame.Implement.dll中接口的实现方法 程序集 接口代号 获取接口实现类类名 接口类型 获取接口方法名(支持属性) 方法 公开方法:获取FunGame.Implement.DLL中指定方法(属性)的返回值 接口代号 方法代号(支持属性) 是否是方法(如是属性请传入false) 创建一个Json工具类 此工具类拥有单独的序列化选项,支持添加自定义转换器 继承自 序列化选项 已经默认添加了下列转换器: , , 注册一个自定义转换器,支持 注册多个自定义转换器,支持 获取Json字符串 反序列化Json对象 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化Hashtable中Key对应的Json对象 反序列化IEnumerable中的Json对象 可指定反序列化选项 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 Private JsonSerializerOptions 简易的插件配置文件生成器 仅支持部分基本类型(, , , , )及其数组(List<long>, List<double>, List<decimal>, List<string>, List<bool>long[], double[], decimal[], string[], bool[]文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 简易的插件配置文件生成器 仅支持部分基本类型(, , , , )及其数组(List<long>, List<double>, List<decimal>, List<string>, List<bool>long[], double[], decimal[], string[], bool[]文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 插件的名称 配置文件的名称(后缀将是.json) 使用索引器给指定key赋值,不存在key会新增 如果保存了对象,请使用此方法转换 获取指定key的value 使用泛型获取指定key的value 添加一个配置,如果已存在key会覆盖 从配置文件中读取配置。 注意:所有保存时为数组的对象都会变成对象,并且不支持类型 将配置保存到配置文件。调用此方法会覆盖原有的.json,请注意备份 Json反序列化的方法 Json数组反序列化的方法。不支持数组。 已读取的插件列表 key 是 已加载的插件DLL名称对应的路径 构建一个插件读取器并读取插件 用于构建 其他需要传入给插件初始化的对象 单例表:表中的对象以类名作为Key保存,并以Key获取该对象,Key具有唯一约束 用于储存单例对象使用 查询目标的类是否已经有实例 单例对象 将目标和目标的类添加至单例表 单例对象 添加单例到单例表时遇到错误 将目标和目标的类从单例表中移除 单例对象 获取单例对象 目标类 不能从单例表中获取到指定的单例 获取单例对象 目标类 不能从单例表中获取到指定的单例 默认的配置文件名称 写入ini文件 Section 文件名,缺省为FunGame.ini 读取ini文件 Section 文件名,缺省为FunGame.ini 读取到的值 查询ini文件是否存在 文件名,缺省为FunGame.ini 是否存在 初始化ini模板文件 读取TXT文件内容 文件名(需要包含扩展名) 相对路径 内容 写入TXT文件内容(如不存在文件会创建) 选项用于覆盖或追加文本 文件名(需要包含扩展名) 相对路径 是否覆盖 写入并覆盖TXT文件内容 文件名(需要包含扩展名) 相对路径 追加错误日志 默认写入logs文件夹下的当日日期.log文件 Aka. 2FA 双重认证 双因素身份验证 SQLHelper 允许为空 不使用SQL模式 使用SQL模式 记录对应账号的密文到数据库中 检查账号是否需要2FA 2FA验证 每30秒刷新 6位数字2FA验证码 ----- PUBLIC KEY ----- ----- SECRET SIGN ----- 创键私钥,用于绑定账号,并生成两个文件,需要用户保存 生成随机秘钥字符串 生成基于当前时间戳的6位数字2FA验证码 获取当前时间节点 生成验证码 拆分字符串中的密文和私钥 这个控制器在Base的基础上添加了DataRequest 基于本地已连接的Socket创建新的数据请求 基于本地已连接的Socket创建长时间运行的数据请求 基于本地已连接的Socket创建新的局内数据请求 基于本地已连接的Socket创建长时间运行的局内数据请求 基于本地已连接的Socket创建新的数据请求 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建长时间运行的数据请求 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建新的局内()数据请求 此方法是给 提供的,但是 也能调用 模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建长时间运行的局内()数据请求 此方法是给 提供的,但是 也能调用 模组服务器调用此方法将抛出异常 新建一个AddonController 这是通用的控制器,仅提供基本功能 Addon的类型,如或者 控制器的本体 输出系统消息 输出错误消息 输出系统消息 输出错误消息 新建一个BaseAddonController 默认的输出错误消息方法 输出错误消息 此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能 -- 需要继承并实现部分方法 -- 与服务器的连接套接字实例 套接字是否已经连接 接收服务器信息的线程 用于类内赋值 是否正在接收服务器信息 断开服务器连接 发送结束游戏反馈 连接服务器 获取服务器地址 string:IP地址;int:端口号 此方法将在连接服务器前触发 客户端可以重写此方法 服务器IP 服务器端口 重写时可以提供额外的连接参数 false:中止连接 此方法将在连接服务器后触发(Connect结果返回前) 客户端可以重写此方法 连接服务器后返回的一些数据,可以使用也可以修改它们 客户端需要自行实现自动登录的事务 关闭所有连接 输出消息 自定处理异常的方法 -- 一般放在catch中 -- 基于本地已连接的Socket创建新的数据请求 基于本地已连接的Socket创建长时间运行的数据请求 基于本地已连接的Socket创建新的数据请求 加载项专用( / 基于本地已连接的Socket创建长时间运行的数据请求 加载项专用( / 基于本地已连接的Socket创建新的局内()数据请求 加载项专用:此方法是给 提供的 基于本地已连接的Socket创建长时间运行的局内()数据请求 加载项专用:此方法是给 提供的 开始接收服务器信息 获取服务器已发送的信息为SocketObject数组 具体接收服务器信息以及处理信息的方法 客户端接收服务器断开连接的通知 客户端接收并处理服务器系统消息 客户端接收并处理服务器心跳 客户端接收强制退出登录的通知 客户端接收并处理聊天信息 客户端接收并处理更换房主信息 客户端接收并处理匹配房间成功信息 客户端接收并处理开始游戏信息 客户端接收并处理游戏结束信息 客户端接收并处理局内消息 继承 AsyncAwaiter 用法: 1、调用Socket.Send()前,请设置为等待状态:SetWorking(); 2、调用Socket.Send() == Success后,请等待任务完成:WaitForWorkDone(); 3、在其他任何地方修改Working状态,均会使任务终止。 接收到的SocketObject实例 Socket WebSocket 继承请调用base构造 Socket 继承请调用base构造 Socket 继承请重写此方法 SocketObject 判断是否已经Disposed 公开的Dispose方法 关闭时 关闭事件 Controller关闭时事件 不建议new Dispose()方法,建议使用事件 事件会在base.Dispose()执行前触发 触发关闭事件 实体的数字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 ],反之为战技 魔法消耗 [ 魔法 ] 基础魔法消耗 [ 魔法 ] 吟唱时间 [ 魔法 ] 能量消耗 [ 战技 ] 基础能量消耗 [ 战技 ] 冷却时间 剩余冷却时间 [ 建议配合 属性使用 ] 硬直时间 效果列表 其他参数 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在 触发技能升级 当获得技能时 技能开始吟唱时 [ 吟唱魔法、释放战技和爆发技、预释放爆发技均可触发 ] 触发技能效果 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ] 返回技能的详细说明 等级 记录 的生涯、赛季统计数据 Key为赛季(long),每个key代表第key赛季,key = 0时为生涯数据。 服务器实例是否在运行 客户端的套接字实例 客户端的用户实例,在用户登录后有效 客户端的名称,默认是客户端的IP地址 客户端是否启动了开发者模式 向客户端发送消息 向客户端发送系统消息 获取客户端的名称,通常未登录时显示为客户端的IP地址,登录后显示为账号名 开始接收客户端消息 请勿在 中调用此方法 启动对客户端的监听 请勿在 中调用此方法 窗体继承这些接口便能实现事件,或为插件预留。 局内事件的接口,与 配套使用 这是最基本的接口,要求客户端实现 服务器需要实现此接口 一个服务器标识秘钥 模组名称 模组描述 模组版本 模组作者 此模组中包含的角色 加载标记 加载模组 模组加载后需要做的事 允许返回false来阻止加载此模组 建议使用一个类来存储常量,方便重用 模组:必须继承基类: 继承事件接口并实现其方法来使模组生效。例如继承: 模组服务器:必须继承基类: 使用switch块分类处理 注意:服务器模组的名称必须和模组名称相同。除非你指定了 地图:必须继承基类: 角色:必须继承基类: 技能:必须继承基类: 物品:必须继承基类: 必须继承基类: 继承事件接口并实现其方法来使插件生效。例如继承: 地图名称 地图描述 地图版本 地图作者 长度 宽度 高度 格子大小 格子集 使用坐标获取格子,0号格子的坐标是(0, 0),如果你还有高度的话,则是(0, 0, 0) 使用坐标获取格子,从0号开始 加载标记 加载地图 加载后需要做的事 允许返回false来阻止加载此地图 模组名称 模组描述 模组版本 模组作者 默认地图 模组的依赖集合 适用的房间模式 是否连接其他的服务器模组 如果将 设置为true,那么此属性必须指定一个存在的服务器模组的 名称。 包含了一些常用方法的控制器 base控制器,没有DataRequest 控制器内部变量 必须重写此方法,游戏的主要逻辑写在这里面 此方法会在 时调用 如模组有界面,请重写此方法 加载标记 加载模组 模组加载后需要做的事 允许返回false来阻止加载此模组 传递委托以便让模组调用 Session对象 Config对象 关联的服务器模组名称 绑定事件。在后触发 模组的依赖集合 (地图名称()的数组) (角色模组名称()的数组) (技能模组名称()的数组) (物品模组名称()的数组) 模组的依赖集合 (地图名称()的数组) (角色模组名称()的数组) (技能模组名称()的数组) (物品模组名称()的数组) 模组所使用的地图组 模组所使用的角色组 模组所使用的技能组 模组所使用的物品组 实际使用的地图组对象 请使用 自动填充,不要自己添加 实际使用的角色组对象 请使用 自动填充,不要自己添加 实际使用的技能组对象 请使用 自动填充,不要自己添加 实际使用的物品组对象 请使用 自动填充,不要自己添加 获得所有的依赖项 此方法会自动填充 服务器模组的名称 如果服务器模组配合一个相关联的模组使用,那么它们的 名称必须相同。 模组描述 模组版本 模组作者 默认地图 模组的依赖集合 包含了一些常用方法的控制器 控制器内部变量 启动服务器监听 请在此处实现服务器逻辑 接收并处理GamingMessage 发送此消息的账号 消息类型 消息参数 底层会将哈希表中的数据发送给客户端 加载标记 加载模组 模组加载后需要做的事 允许返回false来阻止加载此模组 格子编号 格子在地图中的x坐标 格子在地图中的y坐标 格子在地图中的z坐标 是谁站在这格子上? 此格子目前受到了什么影响?或者它有什么技能… 此格子呈现的颜色(默认为 模组名称 模组描述 模组版本 模组作者 此模组中包含的物品 加载标记 加载模组 模组加载后需要做的事 允许返回false来阻止加载此模组 插件名称 插件描述 插件版本 插件作者 包含了一些常用方法的控制器 base控制器,没有DataRequest 控制器内部变量 加载标记 加载插件 插件加载后需要做的事 允许返回false来阻止加载此插件 传递委托以便让插件调用 Session对象 Config对象 绑定事件。在后触发 模组名称 模组描述 模组版本 模组作者 此模组中包含的技能 加载标记 加载模组 模组加载后需要做的事 允许返回false来阻止加载此模组 继承这个类可以获得异步等待的功能 参考实现 接收到的实例 是否处于等待的状态 异步操作前,请设置为等待状态 等待任务完成(需要自己异步) 异步等待任务完成 任务的等待器,可以设置在任务完成后需要的操作 任务是否完成 捕获到的异常 内部实现类 实现参见 构造一个等待器 返回TaskAwaiter可以连续的调用方法 但是意义不大,前一个OnCompleted方法并不会等待下一个方法 可以理解为并行广播 在捕获到异常时,将触发Error事件 发件人邮箱 发件人名称 邮件主题 邮件内容 邮件优先级 内容是否支持HTML 收件人列表 抄送列表 密送列表 使用MailSender工具类创建邮件对象 使用地址和名称创建邮件对象 使用地址和名称创建邮件对象,同时写主题、内容、单个收件人 使用地址和名称创建邮件对象,同时写主题、内容、单个收件人、单个抄送 完整的创建邮件对象 发送邮件 -- 适合创建一次性邮件并发送 -- 添加收件人 添加多个收件人 添加抄送 添加多个抄送 添加密送 添加多个密送 从参数列表中获取指定类型和索引的参数 类型 索引 类型的参数 索引超过数组上限 配合 使用,也别忘了修改 需要同步更新 将通信类型的枚举转换为字符串 通信类型 等效字符串 需要同步更新 RunTime Main Register Login Room Gaming 获取Type的等效字符串 获取Type的等效字符串 获取Type的等效字符串 获取字符串对应的枚举 添加-debug启动项将开启DebugMode(仅适用于Desktop或Console) 目前支持禁用心跳检测功能 此类保存常用的对象常量 空的实体类 用于object返回 默认的未知用户 游客用户 本地用户 大厅(空房间)实例 默认的字符编码 默认的时间格式 默认的时间值(1970年8月1日8点0分0秒) 最多自动重试连接次数 1C2G推荐的任务数量 2C2G推荐的任务数量 4C4G推荐的任务数量 默认Socket数据包大小 默认Stream传输大小 配合 使用,也别忘了修改 配合 使用,也别忘了修改 配合 使用 需要同步更新 需要同步更新 需要同步更新 魔法,编号 1xxx 战技,编号 2xxx 爆发技,编号 3xxx 被动,编号 4xxx 注意:具有控制效果的特效,应该和技能本身的特效(一般此项为None)区分开来。此效果被赋值会改变一些判断的结果。 无特殊效果 标记,目标受到某些技能的标记 眩晕,目标无法行动 冰冻,目标无法行动 沉默,目标无法使用技能 定身 恐惧 睡眠,目标暂时无法行动,受到伤害后会苏醒 击退 击倒,目标被击倒在地,暂时无法行动 嘲讽,目标被迫攻击施法者 减速,目标行动速度和攻击频率降低 衰弱,目标的攻击和防御降低 中毒,目标在一段时间内持续受到伤害 燃烧,目标受到火焰伤害,持续一段时间 流血,目标持续受到物理伤害 致盲,目标无法准确攻击,命中率降低 致残,减少目标的行动或攻击能力 护盾,减少受到的伤害或抵消部分伤害 持续治疗,逐步恢复生命值 加速,提升行动速度和攻击频率 无敌,暂时不会受到任何伤害 不可选中,无法成为普攻和技能的目标 伤害提升,增加攻击输出 防御提升,减少所受伤害 暴击提升,增加暴击率或暴击伤害 魔法恢复,增加魔法值回复速度 破甲,降低目标的防御值 降低魔法抗性,目标更容易受到魔法伤害 诅咒,降低目标的属性或给予负面效果 疲劳,减少目标的攻击或技能效果 魔力燃烧,消耗目标的魔法值 魅惑,控制目标替施法者作战 缴械,目标无法进行普通攻击 混乱,目标的行动变得随机化 石化,目标无法行动,并大幅增加受到的伤害 法术沉默,目标无法施放魔法技能 放逐,目标暂时无法被攻击,也无法行动 毁灭,目标在倒计时结束后受到大量伤害或死亡 角色目前所处的状态 可以行动 [ 战斗相关 ] 完全行动不能 [ 战斗相关 ] 行动受限 [ 战斗相关 ] 战斗不能 [ 战斗相关 ] 技能受限 [ 战斗相关 ] 处于吟唱中 [ 战斗相关 ] [ 技能相关 ] 预释放爆发技(插队) [ 战斗相关 ] [ 技能相关 ] Commands 是否自动连接服务器 是否自动登录 是否在匹配中 是否连接上服务器 是否正在重连 是否自动重连 是否在房间中 当前所处的房间类型 服务器名称 公告 自动登录的账号 自动登录的密码 自动登录的秘钥 游戏局内类 客户端需要使用创建此类单例 使用的模组实例 游戏的参数 此实例所属的玩家 传入游戏所需的参数,构造一个Gaming实例 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 客户端也可以参照此方法自行实现 此方法目的是为了触发 的局内事件实现 消息类型 接收到的数据 服务器地址 服务器端口号 SocketToken LoginKey 已登录的用户 已登录用户名 所处的房间 已加载的插件DLL名称对应的路径 已加载的模组DLL名称对应的路径 从plugins目录加载所有插件 从modules目录加载所有模组 从modules目录加载所有适用于服务器的模组 从maps目录加载所有地图 添加构造好的模组类实例到字典中 加载的类型 循环程序集的类型 实例的字典 加载时触发的检查方法,返回false不添加 默认的序列化选项 获取Json字符串 获取Json字符串 反序列化Json对象 反序列化Json对象,使用 反序列化Json对象 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化SocketObject中索引为index的Json对象 反序列化Hashtable中Key对应的Json对象 反序列化IEnumerable中的Json对象 反序列化IEnumerable中的Json对象 反序列化Hashtable中Key对应的Json对象 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 检查字符串是否为完整的JSON对象 用于保存Smtp客户端 一个邮件服务对应一个Smtp客户端 用于保存邮件服务 允许服务器同时存在多个服务 获取某个已经保存过的邮件服务 统一调用此方法发送邮件 关闭邮件服务 目前的Model数量 最大接受的Model数量 可参与高并发的字典,但添加效率较低 Init ModelManager MaxModel 获取Model对象 Model的Key Model对象 向Model管理器中添加Model Model的Key Model对象 True:操作成功 从Model管理器中移除Model Model的Key True:操作成功 将Model移除,并取得这个Model Model的Key Model对象 被移除的Model 将Model移除,并取得这个Model Model的Key 被移除的Model 清空Model管理器 获取Model对象的列表 客户端专用Socket 服务器端专用Socket 创建服务器监听Socket 监听端口号 最大连接数量 服务器端专用Socket 创建一个监听到客户端Socket 客户端IP地址[0]和客户端Socket[1] 创建客户端Socket 服务器IP地址 服务器监听端口 客户端专用Socket 用于服务器端向客户端Socket发送信息 客户端Socket Socket信息容器 通信结果 用于客户端向服务器Socket发送信息 Socket信息容器 通信结果 接收数据流中的信息 如果是服务器接收信息需要传入客户端Socket 如果是服务器接收信息需要传入客户端Socket SocketObjects 监听事件的委托 SocketObject 监听事件 触发异步监听事件 SocketObject 开启一个任务:调用返回对象的OnCompleted()方法可以执行后续操作,支持异步 开启一个任务:调用返回对象的OnCompleted()方法可以执行后续操作,支持异步 内部实现类 返回ITaskAwaiter可以进一步调用方法 但是意义不大,前一个OnCompleted方法并不会等待下一个方法 可以理解为并行广播 在捕获到异常时,将触发Error事件