FunGame.Core 需要配合 使用 如果是 的数据请求,则配合 使用 确保已添加对应的枚举 数据请求结果 详细错误信息 是否已经关闭 私有的实现类 私有的实现类(这是局内请求的) 指示关闭的变量 基于本地已连接的 创建新的数据请求 使用 中的 创建一个新的请求 插件则使用 中的 创建一个新的请求 基于本地已连接的 创建新的数据请求 使用 中的 创建一个新的请求 插件则使用 中的 创建一个新的请求 此数据请求只能调用异步方法 请求数据 基于本地已连接的 创建新的局内()数据请求 使用 中的 创建一个新的请求 此构造方法是给 提供的 基于本地已连接的 创建新的局内()数据请求 使用 中的 创建一个新的请求 此构造方法是给 提供的 此数据请求只能调用异步方法 请求数据 添加数据 长时间运行的数据请求需要在使用完毕后自行关闭 关闭时 向服务器发送数据请求 警告: 调用此方法将抛出异常。请调用并等待 异步向服务器发送数据请求 获取指定key对应的反序列化对象 常规数据请求 游戏局内请求 反序列化Dictionary中的Json对象 邮件服务内部ID Smtp客户端信息 上一个邮件发送的结果 上一个邮件的发送错误信息(如果发送失败) 内部变量 创建邮件服务 创建完整邮件对象 发送邮件 关闭邮件服务 关闭邮件服务 数据库助手类。这是一个抽象类,需要在Server中继承此类实现 FunGame 类型 使用的数据库类型 SQL 脚本 命令类型 数据库事务 执行结果 SQL 服务器信息 上一次执行命令影响的行数 上一次执行的命令是 Insert 时,返回的自增 ID,大于 0 有效 上一次执行命令的查询结果集 SQL 语句参数 上一次执行命令是否成功 是否在每次执行命令后清除参数,默认为 true 执行现有命令( 影响的行数 执行一个指定的命令 命令 影响的行数 异步执行现有命令( 影响的行数 异步执行一个指定的命令 命令 影响的行数 执行现有命令()查询 DataSet 结果集 执行指定的命令查询 DataSet 命令 结果集 异步执行现有命令()查询 DataSet 结果集 异步执行指定的命令查询 DataSet 命令 结果集 执行现有命令()查询 DataRow(可选实现) 结果行 执行指定的命令查询 DataRow(可选实现) 命令 结果行 异步执行现有命令()查询 DataRow(可选实现) 结果行 异步执行指定的命令查询 DataRow(可选实现) 命令 结果行 查询数据库是否存在 执行一个 sql 脚本文件 异步执行一个 sql 脚本文件 关闭连接 创建一个SQL事务 提交事务 回滚事务 释放资源 此标记意味着属性允许初始设定,但不是强制的。适用于 此标记意味着属性需要经过初始设定。适用于 此标记意味着字段需要满足 x.x.x 的格式。适用于 的版本号 目前的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管理器 获取Model对象的列表 中获取指定键的值,并将其转换为指定的类型。 要转换的目标类型 要从中获取值的字典 要获取值的键 转换后的值,如果键不存在或转换失败,则返回默认值。 简易的实体模组配置文件生成器,适用范围:动态扩展技能和物品、保存玩家的存档 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 简易的实体模组配置文件生成器,适用范围:动态扩展技能和物品、保存玩家的存档 仅支持继承了 的实体类型,每个 仅保存一种实体类型的数据 文件会保存为:程序目录/configs//.json 新建一个配置文件,文件会保存为:程序目录/configs//.json 模组的名称 配置文件的名称(后缀将是.json) 使用索引器给指定key赋值,不存在key会新增 获取指定key的value 添加一个配置,如果已存在key会覆盖 从配置文件中读取配置。 将配置保存到配置文件。调用此方法会覆盖原有的.json,请注意备份 支持动态扩展的工厂实例 注册工厂方法 构造一个实体实例 此方法使用 取得一个实体字典 使用 构造一个实体字典并保存 注册工厂方法 [SQLHelper] 构造一个 SQLHelper 实例 注册工厂方法 [MailSender] 构造一个 MailSender 实例 获取角色实例 获取库存实例 获取技能实例 获取技能特效实例 获取物品实例 获取房间实例 房间内部序列号 房间号 创建时间 房主 房间类型 游戏模组 房间状态 房间密码 人数上限 通过DataSet获取房间实例 通过DataSet获取房间列表 获取大厅(-1号房) 获取用户实例 获取用户实例 获取用户实例 获取用户实例 适用于客户端的模组集 适用于服务器的模组集 游戏地图集 角色表 技能表 物品表 已加载的模组DLL名称对应的路径 传入 类型来创建指定端的模组读取器 runtime = 时,仅读取 runtime = 时,仅读取 都会读取 传入 类型来创建指定端的模组读取器 用于构建 其他需要传入给插件初始化的对象 获取对应名称的模组实例 如果需要取得服务器模组的实例,请调用 获取对应名称的服务器模组实例 获取对应名称的游戏地图 网络服务工具箱 判断字符串是否是IP地址 判断字符串是否为邮箱地址 判断字符串是否是正常的用户名(只有中英文和数字) 判断字符串是否是全中文的字符 获取用户名长度 判断字符串是否是一个FunGame可接受的服务器地址 此方法可以解析域名 返回地址验证结果,同时输出服务器地址和端口号 判断参数是否是一个FunGame可接受的服务器地址 获取服务器的延迟 服务器IP地址 解析域名为IP地址 返回目标对象的Json字符串 返回目标对象的Json字符串 可指定反序列化选项 反序列化Json对象 反序列化Json对象 使用 可指定反序列化选项 反序列化Json对象 可指定反序列化选项 反序列化Hashtable中的Json对象 反序列化Dictionary中的Json对象 反序列化IEnumerable中的Json对象 反序列化IEnumerable中的Json对象 可指定反序列化选项 反序列化Hashtable中的Json对象 可指定反序列化选项 发送 GET 请求 发送 POST 请求 时间服务工具箱 获取系统时间 格式化类型 通过字符串转换为DateTime对象 时间字符串 转换失败返回当前时间 获取系统时间并转为字符串 格式化类型 获取系统时间并转为字符串 格式化字符串 获取系统短时间 时:分:秒 获取系统日期 获取 DLL 编译时间 获取下一次可交易的时间 加密服务工具箱 使用 HMAC-SHA512 算法对文本进行加密 需要加密的文本 用于加密的秘钥 加密后的 HMAC-SHA512 哈希值 使用 HMAC-SHA256 算法对文本进行加密 需要加密的文本 用于加密的秘钥 加密后的 HMAC-SHA256 哈希值 使用 SHA256 算法对文本进行加密 需要加密的文本 加密后的 SHA256 哈希值 计算文件的 SHA-256 哈希值 要计算哈希值的文件路径 文件的 SHA-256 哈希值 使用 RSA 算法加密 明文 公钥 使用 RSA 算法解密 密文 私钥 使用 MD5 算法加密 生成随机字符串 验证码服务工具箱 生成验证码 类型 长度 数字验证码 字母验证码 混合验证码 Web API 自定义 Token 验证器 添加自定义 Token 验证器 对自定义 Token 进行验证 多线程服务工具箱 开启一个异步任务。调用返回对象的 OnCompleted() 方法可以执行后续操作 开启一个异步任务。调用返回对象的 OnCompleted() 方法可以执行后续操作 开启一个计时器任务 添加任务计划,使用 的时分秒。如果用 ,请直接在 中添加 添加循环任务。如果用 ,请直接在 中添加 计算服务工具箱 四舍五入计算 四舍五入保留2位小数 四舍五入保留4位小数 此方法检查一个 百分比(%) 数值是否存在于 [0,1] 区间 如果低于0,则返回0;超过1则返回1。 检查 是否约等于 0 See: , , 获取FunGame.Implement.dll中接口的实现方法 程序集 接口代号 获取接口实现类类名 接口类型 获取接口方法名(支持属性) 方法 公开方法:获取FunGame.Implement.DLL中指定方法(属性)的返回值 接口代号 方法代号(支持属性) 是否是方法(如是属性请传入false) Json工具类 此工具类拥有单独的序列化选项,支持添加自定义转换器 继承自 默认的序列化选项 序列化选项 创建一个Json工具类 此工具类拥有单独的序列化选项,支持添加自定义转换器 继承自 注册一个自定义转换器,支持 注册多个自定义转换器,支持 获取Json字符串 反序列化Json对象 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化Hashtable中Key对应的Json对象 反序列化Dictionary中Key对应的Json对象 反序列化IEnumerable中的Json对象 可指定反序列化选项 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 视觉小说文本配置器 文件会保存为:程序目录/(通常是 novels)//.json 新建一个配置文件,文件会保存为:程序目录/(通常是 novels)//.json 视觉小说文本配置器 文件会保存为:程序目录/(通常是 novels)//.json 新建一个配置文件,文件会保存为:程序目录/(通常是 novels)//.json 配置文件存放的根目录 是否允许 模组的名称 配置文件的名称(后缀将是.json) 断言方法字典 都有显示的条件,反序列化 json 文件时,会根据其名称来分配具体的断言方法 使用索引器给指定key赋值,不存在key会新增 获取指定key的value 添加一个配置,如果已存在key会覆盖 从指定路径加载配置文件,并根据其文件名,转换为本框架所需的文件 为 false 时将不会复制此文件至配置文件目录并且不允许 需要注意: 用于检查加载的文件名是否在配置文件目录中已经存在 如果不使用此检查,使用 时可能会覆盖原有文件(程序目录/(通常是 novels)//[所选的文件名].json) 从配置文件中读取配置。 传入定义好的条件字典 根据断言方法字典重新生成小说的字典 将配置保存到配置文件。调用此方法会覆盖原有的.json,请注意备份 检查配置文件目录是否存在 检查配置文件目录是否存在,不存在则创建 检查配置文件目录中是否存在指定文件 简易的插件配置文件生成器 仅支持部分基本类型(, , , , )及其数组(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 数组反序列化的方法,支持特定类型数组和混合类型数组(包括嵌套对象和数组)。 字典的键 JSON 数组的枚举器 递归解析 JSON 对象 递归解析 JSON 数组 已读取的插件列表 key 是 已加载的插件DLL名称对应的路径 构建一个插件读取器并读取插件 用于构建 其他需要传入给插件初始化的对象 已读取的插件列表 key 是 已加载的插件DLL名称对应的路径 构建一个插件读取器并读取插件 用于构建 其他需要传入给插件初始化的对象 单例表:表中的对象以类名作为Key保存,并以Key获取该对象,Key具有唯一约束 用于储存单例对象使用 查询目标的类是否已经有实例 单例对象 将目标和目标的类添加至单例表,如果存在,将更新此类单例 单例对象 存入基类 将目标和目标的类从单例表中移除 单例对象 获取单例对象 目标类 获取单例对象 目标类 为字符串(string)添加扩展方法 使用 HMAC-SHA512 算法对文本进行加密 需要加密的文本 用于加密的秘钥 加密后的 HMAC-SHA512 哈希值 任务计划管理器实例,可以直接使用 创建一个轻量级的任务计划管理器 添加一个任务计划 添加一个循环任务 移除任务计划 获取任务计划上一次执行时间 获取任务计划下一次执行时间 执行任务 默认的配置文件名称 写入ini文件 Section 文件名,缺省为FunGame.ini 读取ini文件 Section 文件名,缺省为FunGame.ini 读取到的值 查询ini文件是否存在 文件名,缺省为FunGame.ini 是否存在 初始化ini模板文件 读取TXT文件内容 文件名(需要包含扩展名) 相对路径 内容 写入TXT文件内容(如不存在文件会创建) 选项用于覆盖或追加文本 文件名(需要包含扩展名) 相对路径 是否覆盖 写入并覆盖TXT文件内容 文件名(需要包含扩展名) 相对路径 追加错误日志 默认写入logs文件夹下的当日日期.log文件 追加错误日志 默认写入logs文件夹下的当日日期.log文件 Aka. 2FA 双重认证 双因素身份验证 SQLHelper 允许为空 不使用SQL模式 使用SQL模式 记录对应账号的密文到数据库中 检查账号是否需要2FA 2FA验证 每30秒刷新 6位数字2FA验证码 ----- PUBLIC KEY ----- ----- SECRET SIGN ----- 创键私钥,用于绑定账号,并生成两个文件,需要用户保存 生成随机秘钥字符串 生成基于当前时间戳的6位数字2FA验证码 获取当前时间节点 生成验证码 拆分字符串中的密文和私钥 已读取的插件列表 key 是 已加载的插件DLL名称对应的路径 构建一个插件读取器并读取插件 用于构建 其他需要传入给插件初始化的对象 这个控制器在 Base 的基础上添加了 DataRequest 基于本地已连接的Socket创建新的数据请求 基于本地已连接的Socket创建长时间运行的数据请求 基于本地已连接的Socket创建新的局内数据请求 基于本地已连接的Socket创建长时间运行的局内数据请求 基于本地已连接的Socket创建新的数据请求 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建长时间运行的数据请求 此方法只允许插件调用,如果是模组和模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建新的局内()数据请求 此方法是给 提供的,但是 也能调用 模组服务器调用此方法将抛出异常 基于本地已连接的Socket创建长时间运行的局内()数据请求 此方法是给 提供的,但是 也能调用 模组服务器调用此方法将抛出异常 新建一个AddonController AI的核心决策方法,根据当前游戏状态为角色选择最佳行动。 当前行动的AI角色。 角色的起始格子。 从起始格子可达的所有移动格子(包括起始格子本身)。 角色所有可用的技能(已过滤CD和EP/MP)。 角色所有可用的物品(已过滤CD和EP/MP)。 场上所有敌人。 场上所有队友。 场上能够选取的敌人。 场上能够选取的队友。 包含最佳行动的AIDecision对象。 选择技能的最佳目标 评估普通攻击的价值 评估技能的价值 评估物品的价值 辅助函数:计算单个目标在某个技能下的价值 这是通用的控制器,仅提供基本功能 Addon的类型,如 或者 / / 控制器的本体 输出系统消息 输出错误消息 输出系统消息 输出错误消息 JSON 工具类对象 新建一个BaseAddonController 默认的输出错误消息方法 输出错误消息 此类实现服务器连接、断开连接、心跳检测、创建数据请求等功能 -- 需要继承并实现部分方法 -- 与服务器的连接套接字实例 与服务器的连接套接字实例(WebSocket) 套接字是否已经连接 接收服务器信息的线程 用于类内赋值 用于类内赋值 是否正在接收服务器信息 断开服务器连接 发送结束游戏反馈 连接服务器 [ 可选参数需要根据连接方式提供 ] 建议使用异步版,此方法为兼容性处理 连接服务器 [ 异步版,可选参数需要根据连接方式提供 ] 使用 Socket 方式连接服务器 使用 WebSocket 方式连接服务器 获取服务器地址 string:服务器地址;int:端口号 此方法将在连接服务器前触发 客户端可以重写此方法 服务器地址 服务器端口 重写时可以提供额外的连接参数 false:中止连接 此方法将在连接服务器后触发(Connect结果返回前) 客户端可以重写此方法 连接服务器后返回的一些数据,可以使用也可以修改它们 客户端需要自行实现自动登录的事务 关闭 Socket 连接 关闭 WebSocket 连接 输出消息 自定处理异常的方法 -- 一般放在catch中 -- 基于本地已连接的Socket创建新的数据请求 基于本地已连接的Socket创建长时间运行的数据请求 基于本地已连接的Socket创建新的数据请求 加载项专用( / 基于本地已连接的Socket创建长时间运行的数据请求 加载项专用( / 基于本地已连接的Socket创建新的局内()数据请求 加载项专用:此方法是给 提供的 基于本地已连接的Socket创建长时间运行的局内()数据请求 加载项专用:此方法是给 提供的 开始接收服务器信息 [ Socket Only ] 获取服务器已发送的信息为SocketObject数组 [ Socket Only ] 具体接收服务器信息以及处理信息的方法 [ Socket Only ] 处理接收到的信息 客户端接收服务器断开连接的通知 客户端接收并处理服务器系统消息 客户端接收并处理服务器心跳 客户端接收强制退出登录的通知 客户端接收并处理聊天信息 客户端接收并处理更换房主信息 客户端接收并处理匹配房间成功信息 客户端接收并处理开始游戏信息 客户端接收并处理游戏结束信息 客户端接收并处理局内消息 客户端接收并处理匿名服务器的消息 这个控制器在 Base 的基础上添加了 SQLHelper 和 MailSender 新建一个ServerAddonController 这个控制器在 Base 的基础上添加了 SQLHelper 和 MailSender 新建一个ServerAddonController 数据库连接器 [ 后台长连接仅查询专用,请勿用于事务、更新和新增,对应需求请使用: ] 邮件发送器 获取一个可以用来进行事务操作、更新/新增数据的数据库连接器 [ 请使用 using Controller.GetSQLHelper() 来让它能够自动释放 ] 新建 SQLHelper [ 后台长连接仅查询专用,请勿用于事务、更新和新增,对应需求请使用: ] 新建 MailSender 关闭插件的服务 继承 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 实体的名称 实体的当前状态(关联数据库操作) 实体所用的游戏平衡常数 比较两个实体是否相同 获取实体的 Id.Name 用于记录对哪个角色造成了多少伤害 此详情类属于哪个角色 对敌人造成的伤害 最后一次造成伤害的时间 对某角色最后一次友方非伤害辅助的时间 初始化一个助攻详情类 获取和设置对 的伤害,并设置时间 获取对 的伤害 目标的 的百分比形式 获取对 造成伤害的最后时间 意味着没有时间 获取对某角色友方非伤害辅助的最后时间 意味着没有时间 角色需要使用 Factory.Get 的方式来构造,并赋值 标记的属性 在使用时仅需要调用 方法即可获得相同对象 唯一标识符 角色的姓 角色的名字 角色的昵称 角色所属的玩家 角色的详细资料 角色的装备 魔法属性 角色定位1 角色定位2 角色定位3 角色评级 晋升点数 核心属性 等级 经验值 等级突破进度 [ 对应 中的索引 ] 角色目前所处的状态 [ 战斗相关 ] 角色目前被特效施加的状态 [ 用于设置角色的状态,这些状态会影响角色的行动 ] 角色目前被特效施加的控制效果 [ 用于特效在不同的钩子中更改角色的行为 ] 我们需要明确控制效果不一定能造成角色的状态改变(影响角色的行动),但是这些控制状态需要由特效在不同的地方改变角色的行为 角色目前被特效施加的免疫状态 [ 战斗相关 ] 角色是否是中立的 [ 战斗相关 ] 角色是否是不可选中的 [ 战斗相关 ] 角色是否具备免疫状态 [ 战斗相关 ] 初始生命值 [ 初始设定 ] 基础生命值 [ 与初始设定和等级相关 ] [ 与基础力量相关 ] 额外生命值 [ 与额外力量相关 ] 额外生命值2 [ 与技能和物品相关 ] 额外生命值3 [ 额外生命值% ] 额外生命值% [ 与技能和物品相关 ] 最大生命值 = 基础生命值 + 额外生命值 + 额外生命值2 + 额外生命值3 当前生命值 [ 战斗相关 ] 是否有魔法值 [ 初始设定 ] 初始魔法值 [ 初始设定 ] 基础魔法值 [ 与初始设定和等级相关 ] [ 与基础智力相关 ] 额外魔法值 [ 与额外智力相关 ] 额外魔法值2 [ 与技能和物品相关 ] 额外魔法值3 [ 额外魔法值% ] 额外魔法值% [ 与技能和物品相关 ] 最大魔法值 = 基础魔法值 + 额外魔法值 + 额外魔法值2 + 额外魔法值3 当前魔法值 [ 战斗相关 ] 当前爆发能量 [ 战斗相关 ] 初始攻击力 [ 初始设定 ] 基础攻击力 [ 与初始设定和等级相关 ] [ 与核心属性相关 ] 额外攻击力 [ 与额外核心属性相关 ] 额外攻击力2 [ 与技能和物品相关 ] 额外攻击力3 [ 额外攻击力% ] 额外攻击力% [ 与技能和物品相关 ] 攻击力 = 基础攻击力 + 额外攻击力 + 额外攻击力2 + 额外攻击力3 初始物理护甲 [ 初始设定 ] 基础物理护甲 [ 与初始设定相关 ] [ 与基础力量相关 ] 额外物理护甲 [ 与额外力量相关 ] 额外物理护甲2 [ 与技能和物品相关 ] 额外物理护甲3 [ 额外物理护甲% ] 额外物理护甲% [ 与技能和物品相关 ] 物理护甲 = 基础物理护甲 + 额外物理护甲 + 额外物理护甲2 + 额外物理护甲3 物理伤害减免(%) = [ 与物理护甲相关 ] + 额外物理伤害减免(%) 额外物理伤害减免(%) [ 与技能和物品相关 ] 魔法抗性(%) [ 与技能和物品相关 ] 物理穿透(%) [ 与技能和物品相关 ] 魔法穿透(%) [ 与技能和物品相关 ] 初始生命回复力 [ 初始设定 ] 生命回复力 = [ 与初始设定相关 ] [ 与力量相关 ] + 额外生命回复力 额外生命回复力 [ 与技能和物品相关 ] 初始魔法回复力 [ 初始设定 ] 魔法回复力 = [ 与初始设定相关 ] [ 与智力相关 ] + 额外魔法回复力 额外魔法回复力 [ 与技能和物品相关 ] 能量回复力 [ 与技能和物品相关 ] 核心属性的值 [ 核心属性相关 ] 基础核心属性的值 [ 核心属性相关 ] 额外核心属性的值 [ 核心属性相关 ] 初始力量 [ 初始设定 ] 初始敏捷 [ 初始设定 ] 初始智力 [ 初始设定 ] 基础力量 [ 与初始设定和等级相关 ] 基础敏捷 [ 与初始设定和等级相关 ] 基础智力 [ 与初始设定和等级相关 ] 额外力量 [ 与技能和物品相关 ] 额外敏捷 [ 与技能和物品相关 ] 额外智力 [ 与技能和物品相关 ] 额外力量2 [ 额外力量% ] 额外敏捷2 [ 额外敏捷% ] 额外智力2 [ 额外智力% ] 额外力量% [ 与技能和物品相关 ] 额外敏捷% [ 与技能和物品相关 ] 额外智力% [ 与技能和物品相关 ] 力量 = 基础力量 + 额外力量 + 额外力量2 敏捷 = 基础敏捷 + 额外敏捷 + 额外敏捷2 智力 = 基础智力 + 额外智力 + 额外智力2 力量成长值(+BaseSTR/Lv) 敏捷成长值(+BaseAGI/Lv) 智力成长值(+BaseINT/Lv) 行动速度 [ 初始设定 ] 行动速度 = [ 与初始设定相关 ][ 与敏捷相关 ] + 额外行动速度 额外行动速度 [ 与技能和物品相关 ] 行动系数(%) = [ 与速度相关 ] + 额外行动系数(%) 额外行动系数(%) [ 与技能和物品相关 ] 加速系数(%) = [ 与智力相关 ] + 额外加速系数(%) 额外加速系数(%) [ 与技能和物品相关 ] 冷却缩减(%) = [ 与智力相关 ] + 额外冷却缩减(%) 额外冷却缩减(%) [ 与技能和物品相关 ] 攻击距离 [ 与武器相关 ] [ 单位:格(半径) ] 额外攻击距离 [ 与技能和物品相关 ] [ 单位:格(半径) ] 行动力/可移动距离 [ 与第一定位相关 ] [ 单位:格(半径) ] 行动力/可移动距离 [ 与技能和物品相关 ] [ 单位:格(半径) ] 暴击率(%) = [ 与敏捷相关 ] + 额外暴击率(%) 额外暴击率(%) [ 与技能和物品相关 ] 暴击伤害(%) = [ 与力量相关 ] + 额外暴击伤害(%) 额外暴击伤害(%) [ 与技能和物品相关 ] 闪避率(%) = [ 与敏捷相关 ] + 额外闪避率(%) 额外闪避率(%) [ 与技能和物品相关 ] 生命偷取 [ 与技能和物品相关 ] 护盾值 [ 与技能和物品相关 ] 普通攻击对象 角色的技能列表 角色的持续性特效列表 角色携带的物品 ===== 私有变量 ===== 等级 生命值 魔法值 能量值 物理穿透 魔法穿透 回复状态至满 按时间回复状态 按当前百分比回复状态(一般在属性变化时调用) 为角色装备物品(必须使用此方法而不是自己去给EquipSlot里的物品赋值) 此方法装备到指定栏位,并返回被替换的装备(如果有的话) 为角色装备物品(必须使用此方法而不是自己去给EquipSlot里的物品赋值) 此方法为根据物品类型,优先空位自动装备 为角色装备物品(必须使用此方法而不是自己去给EquipSlot里的物品赋值) 此方法为根据物品类型,优先空位自动装备 此方法可返回被替换的装备(如果有的话) 取消装备,返回被取消的物品对象 设置角色等级,并默认完全回复状态 新的等级 false 为按百分比回复 角色升级 角色突破,允许继续升级 角色的属性发生变化,会影响特殊效果的计算 比较一个角色(只比较 获取角色实例的昵称以及所属玩家,如果没有昵称,则用名字代替 获取角色实例的名字、昵称 获取角色实例的名字、昵称以及所属玩家 获取角色实例的名字、昵称以及所属玩家,包含等级 获取角色实例的名字、昵称以及等级 获取角色的名字 如果 = false,返回 ;反之,返回 + 获取角色的详细信息 获取角色的简略信息 获取战斗状态的信息 获取战斗状态的信息(简略版) 获取角色的技能信息 获取角色的物品信息 获取角色装备栏信息 获取角色背包信息 获取魔法抗性信息 更新角色的状态,参见 用法 复制一个角色 [ 推荐从模组中复制后使用对象 ] 复活此角色,回复出厂状态 注意:此方法仅用于角色的复活,如果需要完全重构相同角色,请使用 需要一个原始的角色用于还原状态 基于初始属性创建角色构建器 基于模板角色创建角色构建器 基于初始条件构建新的角色 需要传入技能、物品,可选构建装备 构建的新角色 使用 角色构建 新角色将获得参考角色的等级、技能、装备和身上的物品 高危数据警告:传入此项会修改库存中物品的角色引用 对于动态扩展的物品而言,传入已定义的物品表,不使用被复制物品的数据 对于动态扩展的技能而言,传入已定义的技能表,不使用被复制技能的数据 构建的新角色 角色的一些个人信息 角色的一些个人信息 角色的姓 角色的名字 角色的昵称 角色的出生地 角色的出生日期 角色的身份 角色的隶属 角色的性别 角色的身高 角色的体重 角色的故事 复制一个角色资料 角色的装备槽位 角色的装备槽位 魔法卡包 武器 防具 鞋子 饰品1 饰品2 上一次装备的饰品槽 是否有任意装备 角色的魔法抗性,对不同的魔法类型有不同抗性 无属性魔法抗性 星痕魔法抗性 纯粹结晶魔法抗性 纯现代结晶魔法抗性 光魔法抗性 影魔法抗性 元素魔法抗性 紫宛魔法抗性 时空魔法抗性 平均魔法抗性 获取或设置抗性值 增加所有抗性,传入负数来减少 复制一个魔法抗性对象 角色的护盾,对不同的魔法类型有不同值 绑定到特效的护盾对象。键为特效,值为对应的护盾对象。 物理护盾 无属性魔法护盾 星痕魔法护盾 纯粹结晶护盾 纯现代结晶护盾 光护盾 影护盾 元素护盾 紫宛护盾 时空护盾 混合护盾 总计混合护盾 总计物理护盾 总计魔法护盾 获取或设置护盾值 添加一个绑定到特效的护盾,注意:如果特效已经存在护盾,则会覆盖原有护盾。 移除某个特效的护盾 计算并更新特效的护盾值,如果护盾值小于等于 0,则移除该特效的护盾。 复制一个护盾对象。注意:不会复制绑定到特效的护盾对象。 绑定到特效的护盾对象。这个类没有 JSON 转换器支持。 绑定到特效的护盾对象。这个类没有 JSON 转换器支持。 是一个用于描述生物的单元对象(单位),而 是一种高级单位(单位单位/英雄单位) 和单位一样,使用 标记的需要初始赋值的属性 单位名称 获取单位名称以及所属玩家 获取单位名称以及所属玩家,包含等级 获取单位的详细信息 获取单位的简略信息 获取战斗状态的信息 获取战斗状态的信息(简略版) 获取单位的技能信息 获取单位的物品信息 一样,需要继承构造 唯一标识符 物品的描述 物品的通用描述 物品的背景故事 物品类型 是否是装备 锁定后无法被出售和交易且不能被手动移出库存 是否允许装备 [ 注意:这个不是用来判断是不是装备类型的,判断装备类型时,请判断他们的 ] 是否允许取消装备 [ 注意:这个不是用来判断是不是装备类型的,判断装备类型时,使用 ] 当前装备的槽位 武器类型(如果是武器) 品质类型 稀有度类型 物品评级 快捷键 是否是主动物品 是否可用(涉及冷却和禁用等) 是否是局内使用的物品(局内是指对角色生效的物品) 是否允许购买 物品的价格 是否允许出售 下次可出售的时间 是否允许交易 下次可交易的时间 剩余使用次数 对于永久性主动物品而言,如果是 物品,可以不设置此值;反之,强烈建议设置为 1. 使用后减少使用次数 用完后删除物品 物品所属的角色(只有装备物品,才需要设置) 所属的玩家 物品拥有的技能 其他内容 当装备物品时 当取消装备物品时 设置游戏内的行动顺序表实例 局内使用物品触发 局外(库存)使用物品触发 使用后减少使用次数或删除物品 当物品被角色使用时 当物品被玩家使用时 当物品被装备时 当物品被取消装备时 物品完成复制后触发 显示物品的详细信息 显示物品的详细信息 是否显示通用描述,而不是描述 是否在商店中显示 判断两个物品是否相同 检查Id.Name 设置一些属性给从工厂构造出来的 对象 复制一个物品 设置所有技能的等级 设置所有魔法的等级 所属的角色 用于动态扩展物品 物品只有一个主动技能,但是可以有很多个被动技能 魔法卡包具有很多个魔法技能 唯一的主动技能 被动技能组 魔法技能组 特殊效果类,需要继承 所属的技能 特殊效果类型 注意:如果技能特效没有原生施加控制效果,请始终保持此属性为 持续性的 配合 使用,而不是 持续时间 配合 使用。 持续时间(回合) 使用此属性需要将 设置为 false。 剩余持续时间 剩余持续时间(回合) 是否是没有具体持续时间的持续性特效 附属于某个特效 是否是某个特效的附属 是否强制在状态栏中隐藏 是否显示在状态栏 特效是否生效 魔法类型 驱散性 [ 能驱散什么特效,默认无驱散 ] 被驱散性 [ 能被什么驱散类型驱散,默认弱驱散 ] 是否是负面效果 驱散性和被驱散性的具体说明 是否具备弱驱散功能(强驱散包含在内) 是否具备强驱散功能 是否是临时驱散 [ 需注意持续性驱散是在持续时间内将特效无效化而不是移除,适用临时驱散机制 ] 是否处于临时被驱散状态 [ 如果使用后不手动恢复为 false,那么行动顺序表会在时间流逝时恢复它 ] 注意看标准实现,需要配合 使用 无视免疫类型 效果描述 等级,跟随技能的等级 此特效的施加者,用于溯源 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在 用于动态扩展特效的参数 输出文本或日志 Values 构造动态特效参考这个构造函数 获得此特效时 失去此特效时 在伤害计算前修改伤害类型 在伤害计算前修改预期伤害 返回伤害增减值 在伤害计算完成后修改实际伤害 [ 允许取消伤害 ] 返回伤害增减值 在应用真实伤害前修改伤害 [ 允许取消伤害 ] 返回 true 取消伤害 伤害应用时触发 在完成普通攻击动作之后修改硬直时间 在完成释放技能动作之后修改硬直时间 在造成伤害时,修改获得的能量 在受到伤害时,修改获得的能量 技能开始吟唱时 [ 爆发技插队可触发此项 ] 技能吟唱被打断时 吟唱结束后释放技能(魔法)/ 直接释放技能(战技/爆发技) 对目标触发技能效果(局外) 时间流逝时 时间流逝时 [ 地图用 ] 在完成伤害结算后 在治疗结算前修改治疗值 返回治疗增减值 在特效持有者的回合开始前 在特效持有者的回合结束后 技能被升级时 特效持有者升级时 在完成死亡结算后 [ 全体广播 ] 闪避检定前触发 返回 false 表示不进行闪避检定 在触发闪避时 返回 true 表示无视闪避 暴击检定前触发 返回 false 表示不进行暴击检定 在触发暴击时 角色属性发生变化 行动开始前,修改可选择的 , , 列表 注意 是副本,修改无效 开始选择移动目标前 开始选择目标前,修改可选择的 , 列表 有两种,使用时注意判断是 还是 行动开始前,指定角色的行动,而不是使用顺序表自带的逻辑;或者修改对应的操作触发概率 可重写对某个特效的驱散实现,适用于特殊驱散类型 当特效被驱散时的 返回 false 可以阻止驱散 当角色触发生命偷取后 在角色护盾结算前触发 返回 false 可以跳过护盾结算 在角色护盾有效防御时 [ 破碎本身不会触发此钩子,但破碎后化解可触发 ] 当角色护盾破碎时 [ 非绑定特效,只有同种类型的总护盾值小于等于 0 时触发 ] 返回 false 可以阻止后续扣除角色生命值 当角色护盾破碎时 [ 绑定特效的护盾值小于等于 0 时便会触发 ] 返回 false 可以阻止后续扣除角色生命值 在免疫检定时 false:免疫检定不通过 在伤害免疫检定时 false:免疫检定不通过 对敌人造成技能伤害 [ 强烈建议使用此方法造成伤害而不是自行调用 ] 治疗一个目标 [ 强烈建议使用此方法而不是自行调用 ] 打断施法 [ 尽可能的调用此方法而不是直接调用 ,以防止中断性变更 ] 打断施法 [ 用于使敌人目标丢失 ] [ 尽可能的调用此方法而不是直接调用 ,以防止中断性变更 ] 将特效状态设置到角色上 [ 尽可能的调用此方法而不是自己实现 ] 将特效控制效果设置到角色上 [ 尽可能的调用此方法而不是自己实现 ] 施加 EffectType 的同时也会施加 CharacterState,参见 将免疫状态设置到角色上 [ 尽可能的调用此方法而不是自己实现 ] 将特效状态从角色身上移除 [ 尽可能的调用此方法而不是自己实现 ] 将特效控制效果从角色身上移除 [ 尽可能的调用此方法而不是自己实现 ] 将免疫状态从角色身上移除 [ 尽可能的调用此方法而不是自己实现 ] 从角色身上消除特效类型 [ 如果重写了 ,则尽可能的调用此方法而不是自己实现 ] 从角色身上消除状态类型 [ 如果重写了 ,则尽可能的调用此方法而不是自己实现 ] 驱散目标 [ 尽可能的调用此方法而不是自己实现 ] 此方法会触发 修改角色的硬直时间 [ 尽可能的调用此方法而不是自己实现 ] 角色 加值 是否是百分比 是否使用插队保护机制 设置角色为 AI 控制 [ 系统控制 ] 检查角色是否在 AI 控制状态 添加角色应用的特效类型到回合记录中 返回特效详情 复制一个特效 比较两个特效 获取驱散描述 驱散描述 普通攻击名称 普通攻击说明 普通攻击的通用说明 所属的角色 基础普通攻击伤害倍率 [ 武器类型相关 ] 普通攻击的伤害 额外普通攻击伤害 [ 技能和物品相关 ] 额外普通攻击伤害% [ 技能和物品相关 ] 普通攻击等级 是否是魔法伤害 魔法伤害需要指定魔法类型 是否可用 是否在持续生效,为 true 时不允许再次使用。普通攻击始终为 false 无视免疫类型 硬直时间 [ 武器类型相关 ] 额外硬直时间 [ 技能和物品相关 ] 额外硬直时间% [ 技能和物品相关 ] 实际硬直时间 可选取自身 可选取敌对角色 可选取友方角色 选取所有敌对角色,优先级大于 选取所有友方角色,优先级大于 ,默认包含自身 可选取的作用目标数量 可选取的作用范围 [ 单位:格 ] 普通攻击没有魔法消耗 普通攻击没有吟唱时间 普通攻击没有能量消耗 普通攻击没有冷却时间 普通攻击没有冷却时间 游戏中的行动顺序表实例,使用时需要判断其是否存在 绑定到特效的普通攻击扩展。键为特效,值为对应的普攻扩展对象。 获取可选择的目标列表 实际可选取的目标数量 选取普攻目标 对目标(或多个目标)发起普通攻击 修改基础伤害类型。不一定转换成功,要看是否有特效覆盖 修改伤害类型。不一定转换成功,要看是否有其他特效覆盖 移除特效对伤害类型的更改 计算是否是魔法伤害和当前的魔法类型 比较两个普攻对象 输出信息 输出信息 等级 是否是魔法伤害 [ 生效型 ] 魔法类型 [ 生效型 ] 是否是魔法伤害 [ 修改型 ] 魔法类型 [ 修改型 ] 绑定到特效的普通攻击扩展。这个类没有 JSON 转换器支持。 绑定到特效的普通攻击扩展。这个类没有 JSON 转换器支持。 用于动态扩展技能, 返回所有特效的描述 不同,构造技能时,建议继承此类再构造 唯一标识符 [ 只有物品技能需要赋值,用于表示与其关联的物品: ] 其他情况请保持此属性为 此技能所属的角色 技能描述 技能的通用描述 驱散性和被驱散性的描述 释放技能时的口号 技能等级,等于 0 时可以称之为尚未学习 技能类型 [ 此项为最高优先级 ] 是否是主动技能 [ 此项为高优先级 ] 是否可用 [ 此项为高优先级 ] 效果持续生效中 [ 此项为高优先级 ] [ 此项设置为true后不允许再次释放,防止重复释放 ] 是否是爆发技 [ 此项为高优先级 ] 是否属于魔法 [ 必须为 true ],反之为战技 是否无视施法距离(全图施法),魔法默认为 true,战技默认为 false 施法距离 [ 单位:格 ] 可选取自身 可选取敌对角色 可选取友方角色 选取所有敌对角色,优先级大于 选取所有友方角色,优先级大于 ,默认包含自身 可选取的作用目标数量 可选取的作用范围 [ 单位:格 ] 如果为 true,表示非指向性技能,可以任意选取一个范围( = 0 时为单个格子)。 如果为 false,表示必须选取一个角色作为目标,当 > 0 时,技能作用范围将根据目标位置覆盖 形状的区域;= 0 时正常选取目标。 作用范围形状 - 菱形。默认的曼哈顿距离正方形 - 圆形。基于欧几里得距离的圆形 - 正方形 - 施法者与目标之前的直线 - 施法者与目标所在的直线,贯穿至地图边缘 - 扇形 注意,该属性不影响选取目标的范围。选取目标的范围由 决定。 选取角色的条件 实际魔法消耗 [ 魔法 ] 魔法消耗 [ 魔法 ] 吟唱时间 [ 魔法 ] 实际吟唱时间 [ 魔法 ] 实际能量消耗 [ 战技 ] 能量消耗 [ 战技 ] 消耗所有能量 [ 战技 ] 消耗所有能量的最小能量限制 [ 战技 ] 默认值:100 上一次释放此技能消耗的魔法 [ 魔法 ] 上一次释放此技能消耗的能量 [ 战技 ] 实际冷却时间 冷却时间 剩余冷却时间 [ 建议配合 属性使用 ] 硬直时间 额外硬直时间 [ 技能和物品相关 ] 额外硬直时间% [ 技能和物品相关 ] 实际硬直时间 效果列表 用于动态扩展技能的参数 游戏中的行动顺序表实例,在技能效果被触发时,此实例会获得赋值,使用时需要判断其是否存在 技能是否属于某个物品 继承此类实现时,调用基类的构造函数 用于构造 JSON 设置一些属性给从工厂构造出来的 对象 触发技能升级 当获得技能时 在技能持有者的回合开始前 获取可选择的目标列表 实际可选取的目标数量 选取技能目标 技能开始吟唱时 [ 吟唱魔法、释放战技和爆发技、预释放爆发技均可触发 ] 技能效果触发前 触发技能效果 [ 局内版 ] 对目标触发技能效果 检查角色是否在 AI 控制状态 被动技能,需要重写此方法,返回被动特效给角色 [ 此方法会在技能学习时触发 ] 返回技能的详细说明 返回技能的详细说明 返回技能的详细说明,有选项 判断两个技能是否相同 检查Id.Name 复制一个技能 等级 施法距离 技能和它的目标结构体 技能和它的目标结构体 技能实例 技能的目标列表 记录 的生涯、赛季统计数据 Key为赛季(long),每个key代表第key赛季,key = 0时为生涯数据。 库存 ID 与用户 ID 绑定 库存的名称,默认为 “的库存”;可更改 库存属于哪个玩家 玩家持有 的数量 玩家持有 的数量 玩家拥有的角色 玩家拥有的物品 主战角色 小队 练级中的角色 头像链接 签名 性别 生日 关注者 正在关注 头衔 用户组 回合制游戏的基础队列 使用的游戏平衡常数 用于文本输出 原始的角色字典 参与本次游戏的所有角色列表 当前的行动顺序 上回合记录 所有回合的记录 当前已死亡的角色顺序(第一个是最早死的) 角色数据 游戏运行的时间 游戏运行的回合 对于某角色而言,在其行动的回合叫 Turn,而所有角色行动的回合,都称之为 Round。 使用的地图 显示队列信息 处理回合动作 造成伤害 治疗一个目标 计算物理伤害 计算魔法伤害 死亡结算 打断施法 打断施法 [ 用于使敌人目标丢失 ] 使用物品 角色移动 选取移动目标 选取技能目标 选取普通攻击目标 判断目标对于某个角色是否是队友 获取目标对于某个角色是否是队友的字典 设置角色为 AI 控制 检查角色是否在 AI 控制状态 修改角色的硬直时间 角色 加值 是否是百分比 是否使用插队保护机制 计算角色的数据 服务器实例是否在运行 客户端的套接字实例 客户端的数据库连接实例 客户端的邮件服务实例 客户端的用户实例,在用户登录后有效 客户端的名称,默认是客户端的IP地址 客户端是否启动了开发者模式 客户端所在的房间 客户端的游戏模组服务器 向客户端发送消息 向客户端发送系统消息 踢下线 强制退出登录 获取客户端的名称,通常未登录时显示为客户端的IP地址,登录后显示为账号名 监听器的名称 已连接的客户端列表 已登录的用户列表 黑名单IP地址列表 关闭监听 实体的数字标识符 实体的唯一标识符 实体的名称 获取实体的 Id.Name ISkill 是技能的通用接口,包含一些基本属性,实现类: 所属的行动顺序表实例 此技能所属的角色 技能描述 技能的通用描述 技能等级,等于 0 时可以称之为尚未学习 是否可用 [ 此项为高优先级 ] 效果持续生效中 [ 此项为高优先级 ] [ 此项设置为true后不允许再次释放,防止重复释放 ] 可选取自身 可选取敌对角色 可选取友方角色 选取所有敌对角色,优先级大于 选取所有友方角色,优先级大于 ,默认包含自身 可选取的作用目标数量 可选取的作用范围 [ 单位:格 ] 实际魔法消耗 [ 魔法 ] 实际吟唱时间 [ 魔法 ] 实际能量消耗 [ 战技 ] 实际冷却时间 剩余冷却时间 实际硬直时间 获取可选择的目标列表 实际可选取的目标数量 窗体继承这些接口便能实现事件,或为插件预留。 局内事件的接口,与 配套使用 这是最基本的接口,要求客户端实现 服务器需要实现此接口 一个服务器标识秘钥 模组名称 模组描述 模组版本 模组作者 此模组中包含的角色 加载标记 加载模组 注册工厂 模组加载后需要做的事 允许返回false来阻止加载此模组 建议使用一个类来存储常量,方便重用 模组:必须继承基类: 继承事件接口并实现其方法来使模组生效。例如继承: 模组服务器:必须继承基类: 使用switch块分类处理 注意:服务器模组的名称必须和模组名称相同。除非你指定了 创建一个工作类,接收服务器启动参数的同时,还能定义一些需要的属性 创建一个工作类,接收服务器启动参数的同时,还能定义一些需要的属性 匿名服务器示例 接收并处理匿名服务器消息 地图:必须继承基类: 角色:必须继承基类: 技能:必须继承基类: 物品:必须继承基类: 必须继承基类: 继承事件接口并实现其方法来使插件生效。例如继承: 地图名称 地图描述 地图版本 地图作者 长度 宽度 高度 格子大小 格子集 格子集(基于坐标) 角色集 使用坐标获取格子,0号格子的坐标是(0, 0),如果你还有高度的话,则是(0, 0, 0) 使用编号获取格子,从0号开始 加载标记 加载地图 地图完全加载后需要做的事 允许返回false来阻止加载此地图 初始化游戏队列,要求返回一个新的地图实例,而不是 this 获取角色当前所在的格子 强制设置角色当前所在的格子 将角色从地图中移除 获取以某个格子为中心,一定范围内的格子(曼哈顿距离),只考虑同一平面的格子。 获取以某个格子为中心,最远距离的格子(曼哈顿距离),只考虑同一平面的格子。 获取以某个格子为中心,一定半径内的格子(圆形范围,欧几里得距离),只考虑同一平面的格子。 获取以某个格子为中心,最远距离的格子(圆形范围,欧几里得距离),只考虑同一平面的格子。 设置角色移动 移动的步数,只算平面移动步数 设置角色移动。如果不能达到目标格子,则移动到离目标格子最近的一个可达格子上。 移动的步数,只算平面移动步数 计算两个格子之间的曼哈顿距离 两个格子之间的曼哈顿距离 在事件流逝前处理 在事件流逝后处理 时间流逝时,处理格子上的特效 模组名称 模组描述 模组版本 模组作者 默认地图 模组的依赖集合 适用的房间模式 模组的容纳人数 是否隐藏主界面 是否连接其他的服务器模组 如果将 设置为true,那么此属性必须指定一个存在的服务器模组的 名称。 包含了一些常用方法的控制器 base控制器,没有DataRequest 控制器内部变量 必须重写此方法,游戏的主要逻辑写在这里面 此方法会在 时调用 如模组有界面,请重写此方法 加载标记 加载模组 模组完全加载后需要做的事 允许返回false来阻止加载此模组 传递委托以便让模组调用 Session对象 Config对象 关联的服务器模组名称 绑定事件。在后触发 模组的依赖集合 (地图名称()的数组) (角色模组名称()的数组) (技能模组名称()的数组) (物品模组名称()的数组) 模组的依赖集合 (地图名称()的数组) (角色模组名称()的数组) (技能模组名称()的数组) (物品模组名称()的数组) 模组所使用的地图组 模组所使用的角色组 模组所使用的技能组 模组所使用的物品组 实际使用的地图组对象 请使用 自动填充,不要自己添加 实际使用的角色组对象 请使用 自动填充,不要自己添加 实际使用的技能组对象 请使用 自动填充,不要自己添加 实际使用的物品组对象 请使用 自动填充,不要自己添加 获得所有的依赖项 此方法会自动填充 服务器模组的名称 如果服务器模组配合一个相关联的模组使用,那么它们的 名称必须相同。 模组描述 模组版本 模组作者 默认地图 模组的依赖集合 是否是匿名服务器 包含了一些常用方法的控制器 base控制器 控制器内部变量 此模组所有正在运行的游戏对象 启动服务器监听 请在此处实现服务器逻辑。注意,此方法必须立即返回 接收并处理GamingMessage 发送此消息的客户端 消息类型 消息参数 底层会将字典中的数据发送给客户端 启动匿名服务器监听 结束匿名服务器监听 接收并处理匿名服务器监听消息 此方法为可选实现,可以帮助 RESTful API 处理不需要验证的 WebSocket 请求 发送此消息的客户端 消息参数 底层会将字典中的数据发送给客户端 加载标记 加载模组 模组完全加载后需要做的事 允许返回false来阻止加载此模组 给所有客户端发送游戏结束通知 给客户端发送局内消息 发送失败的客户端 给客户端发送消息 发送失败的客户端 给客户端发送匿名服务器消息 发送失败的客户端 空格子 格子编号 格子在地图中的x坐标 格子在地图中的y坐标 格子在地图中的z坐标 是谁站在这格子上? 此格子目前受到了什么影响? 此格子呈现的颜色(默认为 默认的字符串表示形式 模组名称 模组描述 模组版本 模组作者 此模组中包含的物品 加载标记 加载模组 注册工厂 模组加载后需要做的事 允许返回false来阻止加载此模组 插件名称 插件描述 插件版本 插件作者 包含了一些常用方法的控制器 base控制器,没有DataRequest 控制器内部变量 加载标记 加载插件 插件完全加载后需要做的事 允许返回false来阻止加载此插件 传递一些插件可以用参数 Session对象 Config对象 绑定事件。在后触发 插件名称 插件描述 插件版本 插件作者 包含了一些常用方法的控制器 base控制器 控制器内部变量 加载标记 加载插件 接收服务器控制台的输入 插件完全加载后需要做的事 允许返回false来阻止加载此插件 绑定事件。在后触发 模组名称 模组描述 模组版本 模组作者 此模组中包含的技能 加载标记 加载模组 注册工厂 注册工厂(特效类) 模组加载后需要做的事 允许返回false来阻止加载此模组 插件名称 插件描述 插件版本 插件作者 包含了一些常用方法的控制器 base控制器 控制器内部变量 加载标记 加载插件 接收服务器控制台的输入 插件完全加载后需要做的事 允许返回false来阻止加载此插件 当 Web API 服务启动完成后触发 绑定事件。在后触发 继承这个类可以获得异步等待的功能 参考实现 接收到的实例 是否处于等待的状态 异步操作前,请设置为等待状态 等待任务完成(需要自己异步) 异步等待任务完成 任务的等待器,可以设置在任务完成后需要的操作 任务是否完成 捕获到的异常 内部实现类 实现参见 构造一个等待器 返回 TaskAwaiter 可以进一步等待并执行方法 注意事项:async () 委托的后续 OnCompleted 方法将不会进一步等待,而是直接执行,因为它是异步的 这意味着你不能这样操作: TaskUtility.NewTask(() => { Console.WriteLine(0); }).OnCompleted(async () => { await Task.Delay(3000); Console.WriteLine(1); }).OnCompleted(() => { Console.WriteLine(2); }); 上述代码将导致:任务输出 0 之后,2 不会等待 1 的完成,因此会直接输出 2,再输出 1. 在捕获到异常时,将触发Error事件 发送 GET 请求 发送 POST 请求 发件人邮箱 发件人名称 邮件主题 邮件内容 邮件优先级 内容是否支持HTML 收件人列表 抄送列表 密送列表 使用MailSender工具类创建邮件对象 使用地址和名称创建邮件对象 使用地址和名称创建邮件对象,同时写主题、内容、单个收件人 使用地址和名称创建邮件对象,同时写主题、内容、单个收件人、单个抄送 完整的创建邮件对象 发送邮件 -- 适合创建一次性邮件并发送 -- 添加收件人 添加多个收件人 添加抄送 添加多个抄送 添加密送 添加多个密送 唯一指定的通信数据结构 通信类型 通信令牌 参数列表 参数数量 从参数列表中获取指定索引的参数的Json对象 -- 此索引器仅返回Json对象,获取实例请使用反序列化方法GetParam[T]() -- -- 当然也可以自己反序列化 -- -- 基本类型可能有效,但仍建议使用反序列化方法 -- 索引超过数组上限 构建通信数据对象 从参数列表中获取指定类型和索引的参数 类型 索引 类型的参数 索引超过数组上限 配合 使用,也别忘了修改 需要同步更新 将通信类型的枚举转换为字符串 通信类型 等效字符串 需要同步更新 RunTime Main Register Login Room UserCenter Inventory 获取Type的等效字符串 获取Type的等效字符串 获取Type的等效字符串 获取字符串对应的枚举 添加-debug启动项将开启DebugMode(仅适用于Desktop或Console) 目前支持禁用心跳检测功能 核心库的版本号 此类保存常用的对象常量 支持动态扩展的工厂实例 空的实体类 用于object返回 默认的未知用户 游客用户 本地用户 大厅(空房间)实例 默认的字符编码 默认的时间格式 yyyy-MM-dd HH:mm:ss.fff yyyy年MM月dd日 HH:mm:ss HH:mm:ss 默认的时间值(1970年8月1日8点0分0秒) 游戏平衡常数 最多自动重试连接次数 1C2G推荐的任务数量 2C2G推荐的任务数量 4C4G推荐的任务数量 默认Socket数据包大小 默认Stream传输大小 ��� ʹ�ã�Ҳ�������޸� 角色目前所处的状态 可以行动 [ 战斗相关 ] [ 常态 ] 完全行动不能 [ 战斗相关 ] [ 控制态 ] 行动受限 [ 战斗相关 ] [ 控制态 ] 战斗不能 [ 战斗相关 ] [ 控制态 ] 技能受限 [ 战斗相关 ] [ 控制态 ] 攻击受限 [ 战斗相关 ] [ 控制态 ] 处于吟唱中 [ 战斗相关 ] [ 技能相关 ] [ 吟唱态 ] 预释放爆发技(插队) [ 战斗相关 ] [ 技能相关 ] [ 吟唱态 ] 配合 使用,也别忘了修改 配合 使用 需要同步更新 需要同步更新 需要同步更新 魔法,编号 1xxx 战技,编号 2xxx 爆发技,编号 3xxx 被动,编号 4xxx(物品被动从5xxx开始) 物品的主动技能,编号 6xxx 注意:具有控制效果的特效,应该和技能本身的特效(一般此项为None)区分开来。此效果被赋值会改变一些判断的结果。 关联方法: 无特殊效果 这是来自装备的特效 标记,目标受到某些技能的标记 眩晕,目标无法行动 冰冻,目标无法行动 沉默,目标无法使用技能 定身 恐惧 睡眠,目标暂时无法行动,受到伤害后会苏醒 击退 击倒,目标被击倒在地,暂时无法行动 嘲讽,目标被迫攻击施法者 减速,目标行动速度或加速系数降低 衰弱,目标的攻击和防御降低 中毒,目标在一段时间内持续受到伤害 燃烧,目标受到伤害,持续一段时间 流血,目标持续受到伤害 致盲,目标无法准确攻击,命中率降低 致残,减少目标的行动或攻击能力 护盾,减少受到的伤害或抵消部分伤害 持续治疗,逐步恢复生命值 加速,提升行动速度 无敌,暂时不会受到任何伤害 不可选中,无法成为普攻和技能的目标 伤害提升,增加攻击输出 物理护甲/魔法抗性提升,减少所受伤害 暴击提升,增加暴击率或暴击伤害 魔法恢复,增加魔法值回复速度 破甲,提高物理/魔法穿透 降低魔法抗性,目标更容易受到魔法伤害 诅咒,降低目标的属性或给予负面效果 疲劳,减少目标的攻击或技能效果 魔力燃烧,消耗目标的魔法值 魅惑,控制目标替施法者作战 缴械,目标无法进行普通攻击 混乱,目标的行动变得随机化 石化,目标无法行动 法术沉默,目标无法施放魔法技能 放逐,目标暂时无法被攻击,也无法行动 毁灭,目标在倒计时结束后受到大量伤害或死亡 物理免疫 魔法免疫 技能免疫 完全免疫:物理免疫 + 技能免疫 闪避提升 生命偷取 重伤,目标受到的治疗效果降低 持续性弱驱散 持续性强驱散 恢复 易伤 迟滞,硬直时间延长 魔法卡包 编号 10xxx 武器 编号 11xxx 防具 编号 12xxx 鞋子 编号 13xxx 饰品 编号 14xxx 消耗品 编号 15xxx 魔法卡 编号 16xxx 收藏品 编号 17xxx 特殊物品 编号 18xxx 任务物品 编号 19xxx 礼包 编号 20xxx 其他 编号 21xxx 指示物品在哪个栏位上 不是武器 单手剑 双手重剑 手枪 步枪 双持短刀 法器 法杖 长柄 拳套 暗器 报价发起方修改报价, 如果当前状态为 (已创建) 和 (协商中), 则状态转为 (等待发起方确认) 报价发起方确认报价,状态转为 (发起方已确认) 报价发起方发送报价,状态转为 (已发送) 报价接收方修改报价,状态转为 (等待接收方确认) 报价接收方确认报价,状态转为 (接收方已确认) 报价接收方发送报价,状态转为 (协商中) 报价发起方同意接收方的协商,状态转为 (协商已接受) 报价发起方手动取消了报价,状态转为 (已取消) 报价接收方同意报价,状态转为 (已完成) 报价接收方拒绝报价,状态转为 (已拒绝) 无驱散 [ 默认,不能驱散其他特效 ] 弱驱散 持续性弱驱散 临时弱驱散 强驱散 持续性强驱散 临时强驱散 特殊驱散 可弱驱散 [ 默认 ] 需强驱散 需特殊驱散 不可驱散 [ 最高优先级 ] 标准实现的免疫类型 Commands 行动顺序表管理器,对 的封装 按房间类型创建行动顺序表 游戏平衡常数 游戏货币名称 游戏材料名称(第二货币) 游戏时间名称(如技能冷却、硬直) 晋升点数上限 使用的魔法类型 初始生命值 初始魔法值 角色最高等级 经验值上限 使用等级突破机制 使用等级突破机制后,角色处于这些等级时需要突破才能继续升级 魔法最高等级 战技最高等级 爆发技最高等级 被动最高等级 普通攻击最高等级 最大能量值 初始攻击力 初始物理护甲 初始力量 初始敏捷 初始智力 力量成长 敏捷成长 智力成长 初始暴击率 初始暴击伤害 初始闪避率 每级增加基础生命值 生命值增长因子 每级增加基础魔法值 魔法值增长因子 每级增加基础攻击力 攻击力增长因子 物理伤害减免因子 行动速度上限 每 1 点力量增加生命值 每 1 点力量增加生命回复力 每 1 点力量增加物理护甲 每 1 点力量增加暴击伤害 每 1 点智力增加魔法值 每 1 点智力增加冷却缩减 每 1 点智力增加魔法回复力 每 1 点智力减少魔法消耗 每 1 点智力减少能量消耗 每 1 点智力增加加速系数 每 1 点敏捷增加行动速度 每 1 点敏捷增加暴击率 每 1 点敏捷增加闪避率 造成伤害获得能量值因子 造成伤害获得能量值上限 受到伤害获得能量值因子 受到伤害获得能量值上限 单手剑的基础伤害倍率 单手剑的基础伤害倍率成长 双手剑的基础伤害倍率 双手剑的基础伤害倍率成长 弓的基础伤害倍率 弓的基础伤害倍率成长 手枪的基础伤害倍率 手枪的基础伤害倍率成长 步枪的基础伤害倍率 步枪的基础伤害倍率成长 双持短刀的基础伤害倍率 双持短刀的基础伤害倍率成长 法器的基础伤害倍率 法器的基础伤害倍率成长 法杖的基础伤害倍率 法杖的基础伤害倍率成长 长柄武器的基础伤害倍率 长柄武器的基础伤害倍率成长 拳套的基础伤害倍率 拳套的基础伤害倍率成长 暗器的基础伤害倍率 暗器的基础伤害倍率成长 单手剑的硬直时间 双手剑的硬直时间 弓的硬直时间 手枪的硬直时间 步枪的硬直时间 双持短刀的硬直时间 法器的硬直时间 法杖的硬直时间 长柄武器的硬直时间 拳套的硬直时间 暗器的硬直时间 单手剑的攻击距离 双手剑的攻击距离 弓的攻击距离 手枪的攻击距离 步枪的攻击距离 双持短刀的攻击距离 法器的攻击距离 法杖的攻击距离 长柄武器的攻击距离 拳套的攻击距离 暗器的攻击距离 核心角色的移动距离 先锋角色的移动距离 近卫角色的移动距离 支援角色的移动距离 治疗角色的移动距离 应用此游戏平衡常数给实体 是否自动连接服务器 是否自动登录 是否在匹配中 是否连接上服务器 是否正在重连 是否自动重连 是否在房间中 当前所处的房间类型 服务器名称 公告 自动登录的账号 自动登录的密码 自动登录的秘钥 游戏局内类 客户端需要使用创建此类单例 使用的模组实例 游戏的参数 此实例所属的玩家 传入游戏所需的参数,构造一个Gaming实例 需在RunTimeController的SocketHandler_Gaming方法中调用此方法 客户端也可以参照此方法自行实现 此方法目的是为了触发 的局内事件实现 消息类型 接收到的数据 提供一个基础的回合制游戏队列基类实现,可继承扩展 该默认实现为混战模式 使用的游戏平衡常数 用于文本输出 参与本次游戏的所有角色列表 原始的角色字典 当前的行动顺序 硬直时间表 当前已死亡的角色顺序(第一个是最早死的) 角色是否在 AI 控制下 角色数据 游戏运行的时间 游戏运行的回合 对于某角色而言,在其行动的回合叫 Turn,而所有角色行动的回合,都称之为 Round。 第一滴血获得者 最大复活次数 [ 不为 0 时开启死斗模式 ] 0:不复活 / -1:无限复活 复活次数统计 复活倒计时 最大获胜积分 设置一个大于0的数以启用 上回合记录 所有回合的记录 回合奖励 是否使用插队保护机制 插队保护机制检查的最多被插队次数:-1 为默认,即队列长度,最少为 5;0 为不保护 自定义数据 金币奖励记录 使用的地图 参与本次游戏的所有角色列表 原始的角色字典 当前的行动顺序 当前已死亡的角色顺序(第一个是最早死的) 角色是否在 AI 控制下 [ 系统控制 ] 角色是否在 AI 控制下 [ 玩家手动设置 ] 硬直时间表 角色正在吟唱的技能(通常是魔法) 角色预释放的爆发技 角色即将使用的物品 角色目前赚取的金钱 角色最高连杀数 角色目前的连杀数 角色被插队次数 助攻伤害 角色数据 复活次数统计 复活倒计时 当前回合死亡角色 回合奖励 回合奖励的特效工厂 最多被插队次数,-1 为默认,即队列长度,最少为 5 游戏是否结束 是否在回合内 使用的地图 新建一个基础回合制游戏队列 用于文本输出 游戏地图 新建一个基础回合制游戏队列并初始化角色 参与本次游戏的角色列表 用于文本输出 游戏地图 加载地图 初始化角色表 初始化行动顺序表 将角色加入行动顺序表 清空行动队列 从行动顺序表取出第一个角色 时间进行流逝,减少硬直时间,减少技能冷却时间,角色也会因此回复状态 流逝的时间 显示当前所有角色的状态和硬直时间 角色 的回合进行中 是否结束游戏 处理角色死亡 获取某角色的团队成员 角色行动后触发 死亡结算时触发 死亡结算完成后触发 获取复活时间 回合开始前触发 回合结束后触发 对敌人造成伤害 死亡结算 死亡结算,击杀队友的情况 治疗一个目标 需要处理复活和解除施法等 使用物品实际逻辑 角色移动实际逻辑 通过概率计算角色要干嘛 选取移动目标 选取技能目标 选取普通攻击目标 检查是否可以释放技能 检查是否可以释放技能(物品版) 计算物理伤害 计算魔法伤害 获取EP 参数1 参数2 最大获取量 判断目标对于某个角色是否是队友(不包括自己) 获取目标对于某个角色是否是友方的字典(包括自己) 对角色设置仅移动的硬直时间 初始化回合奖励 最大回合数 每个奖励回合生成多少技能 key: 特效的数字标识符;value: 是否是主动技能的特效 通过数字标识符来获取构造特效的参数 获取回合奖励 移除回合奖励 是否在回合外释放爆发技插队(仅自动化,手动设置请调用: 打断施法 打断施法 [ 用于使敌人目标丢失 ] 设置角色复活 设置角色将预释放爆发技 设置角色对目标们的非伤害辅助时间 修改角色的硬直时间 角色 加值 是否是百分比 是否使用插队保护机制 设置角色为 AI 控制 设置角色为 AI 控制 [ 玩家手动设置 ] 检查角色是否在 AI 控制状态 检查角色是否在 AI 控制状态 [ 系统控制 ] 检查角色是否在 AI 控制状态 [ 玩家手动设置 ] 免疫检定 计算角色的数据 装备物品 装备物品到指定栏位,并返回被替换的装备(如果有的话) 取消装备,并返回被替换的装备(如果有的话) 回合开始事件 回合开始事件 回合结束事件 回合结束事件 决定角色的行动事件 决定角色的行动事件 角色需要选择一个技能 角色需要选择一个技能 角色需要选择一个物品 角色需要选择一个物品 选取移动目标事件 选取移动目标事件 选取技能目标事件 选取技能目标事件 选取普通攻击目标事件 选取普通攻击目标事件 打断施法事件 打断施法事件 死亡结算事件 死亡结算事件 死亡结算(击杀队友)事件 死亡结算(击杀队友)事件 角色死亡事件,此事件位于 之后 角色死亡事件,此事件位于 之后 治疗事件 治疗事件 造成伤害事件 造成伤害事件 角色普通攻击事件 角色普通攻击事件 角色吟唱技能事件(包括直接释放战技) 角色吟唱技能事件(包括直接释放战技) 角色释放技能事件 角色释放技能事件 角色使用物品事件 角色使用物品事件 角色释放物品的技能事件 角色释放物品的技能事件 角色免疫事件 角色免疫事件 角色主动结束回合事件(区别于放弃行动,这个是主动的) 角色主动结束回合事件(区别于放弃行动,这个是主动的) 角色放弃行动事件 角色放弃行动事件 角色移动事件 角色移动事件 游戏结束事件 游戏结束事件 行动顺序表更新事件 行动顺序表更新事件 混战游戏队列,增强版混战模式 死亡结算后 游戏结束信息 创建一个混战游戏队列 创建一个混战游戏队列并初始化角色 任务名称 循环执行间隔 任务执行逻辑 记录上一次运行时间 记录下一次运行时间 最后一次运行时发生的错误 捕获异常后,触发的回调函数 任务名称 每天的目标时间 任务执行逻辑 记录上一次运行时间 当天是否已经运行 最后一次运行时发生的错误 捕获异常后,触发的回调函数 服务器地址 服务器端口号 SocketToken LoginKey 已登录的用户 已登录用户名 所处的房间 团队游戏队列,团队模式 当前团灭的团队顺序(第一个是最早死的) 团队及其成员 当前团灭的团队顺序(第一个是最早死的) 团队及其成员 添加一个团队 获取角色的团队 从已淘汰的团队中获取角色的团队 获取某角色的团队成员 角色行动后 死亡结算时 死亡结算后 游戏结束信息 [ 团队版 ] 创建一个团队游戏队列 创建一个团队游戏队列并初始化角色 游戏结束事件(团队版) 游戏结束事件(团队版) 已加载的插件DLL名称对应的路径 已加载的模组DLL名称对应的路径 从plugins目录加载所有插件 从plugins目录加载所有Server插件 从plugins目录加载所有WebAPI插件 从modules目录加载所有模组 从modules目录加载所有适用于服务器的模组 从maps目录加载所有地图 添加构造好的模组类实例到字典中 加载的类型 循环程序集的类型 实例的字典 加载时触发的检查方法,返回false不添加 实际的 监听实例 [ 单例 ] 开始监听 当 = "*" 时,需要管理员权限 客户端连接远程 WebSocket 服务器 客户端向服务器发送消息 服务器向客户端发送消息 服务器接受一个 HTTP 的 WebSocket 升级请求 [0]客户端IP地址;[1]客户端的WebSocket实例 服务器接收客户端消息 客户端接收服务器消息 将收到的消息反序列为 默认的序列化选项 获取Json字符串 获取Json字符串 反序列化Json对象 反序列化Json对象,使用 反序列化Json对象 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化Json对象,此方法可能无法返回正确的类型,请注意辨别 反序列化SocketObject中索引为index的Json对象 反序列化Hashtable中Key对应的Json对象 反序列化Dictionary中Key对应的Json对象 反序列化IEnumerable中的Json对象 反序列化IEnumerable中的Json对象 反序列化Hashtable中Key对应的Json对象 反序列化Dictionary中Key对应的Json对象 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 反序列化多个Json对象 注意必须是相同的Json对象才可以使用此方法解析 检查字符串是否为完整的JSON对象 用于保存Smtp客户端 一个邮件服务对应一个Smtp客户端 用于保存邮件服务 允许服务器同时存在多个服务 获取某个已经保存过的邮件服务 统一调用此方法发送邮件 关闭邮件服务 客户端专用Socket 服务器端专用Socket 创建服务器监听Socket 监听端口号 最大连接数量 服务器端专用Socket 创建一个监听到客户端Socket 客户端IP地址[0]和客户端Socket[1] 创建客户端Socket 服务器IP地址 服务器监听端口 客户端专用Socket 用于服务器端向客户端Socket发送信息 客户端Socket Socket信息容器 通信结果 用于服务器端向客户端Socket发送信息 [ 异步版 ] 客户端Socket Socket信息容器 通信结果 用于客户端向服务器Socket发送信息 Socket信息容器 通信结果 用于客户端向服务器Socket发送信息 [ 异步版 ] Socket信息容器 通信结果 接收数据流中的信息 如果是服务器接收信息需要传入客户端Socket 如果是服务器接收信息需要传入客户端Socket SocketObjects 接收数据流中的信息 [ 异步版 ] 如果是服务器接收信息需要传入客户端Socket 如果是服务器接收信息需要传入客户端Socket SocketObjects 监听事件的委托 SocketObject 监听事件 触发异步监听事件 SocketObject 开启一个任务:调用返回对象的 OnCompleted() 方法可以执行后续操作,支持异步 开启一个任务:调用返回对象的 OnCompleted() 方法可以执行后续操作,支持异步 内部实现类 返回 ITaskAwaiter 可以进一步等待并执行方法 注意事项:async () 委托的后续 OnCompleted 方法将不会进一步等待,而是直接执行,因为它是异步的 在捕获到异常时,将触发 Error 事件