- #============================================================================== 
- # ■ [Sprite Custom Weather] 精灵增强-粒子天气 v1.0 by SailCat 
- # /req [Sprite] 精灵增强系统核心 v1.0 
- #------------------------------------------------------------------------------ 
- #   方法:本脚本插入到Main之前使用 
- #   依赖:精灵增强系统核心 
- #   版本:v1.0 (Build 211202) 
- #   效果: 
- #     1. 可以自定义天气的强度(可超过事件系统1-9的范围) 
- #     2. 可以自定义天气的种类(共8种,不限于系统默认的晴风雨雪) 
- #     3. 动画天气效果(警告:过度使用可能会有性能损失) 
- #     4. 利用天气引擎实现粒子动画效果(可以和天气同屏渲染,注意性能) 
- #   配置:天气强度上限、八种默认天气的粒子行为参数、天气粒子色彩、屏显范围 
- #   冲突:无 
- #   说明: 
- #     1. 自定义天气使用插件命令实现,具体为: 
- #        cmd_custom_weather(天气种类, 强度表, 延迟帧[, 自定义图片表[, 动画表]]) 
- #        其中最后两个参数可选 
- #        a) 天气种类为任意0-255的数值,也可写作字符串,具体如下 
- #           数值   字符串   含义      数值   字符串   含义 
- #            1     rain     下雨       16    sand     扬沙 
- #            2     storm    刮风       32    hail     冰雹 
- #            4     snow     下雪       64    sleet    冻雨 
- #            8     dust     浮尘      128    petal    花雨 
- #           若要多种天气同屏显示,可用数值的和表示,或用逗号隔开多个天气 
- #           如 5 表示 雨夹雪 的天气,也可写成 "rain,snow" 
- #           如 146 表示 风吹沙起花落 的天气,也可写成 "storm,petal,sand" 
- #           写作 0 表示没有天气,也可以用事件“天气设置”为“无”来关掉天气 
- #        b) 强度表可以只写一个数字,表示指定的天气种类统一设为该强度 
- #           也可以写成数组形式,表示按天气种类的顺序分别指定强度 
- #           若天气种类用数值表示,则按数字从小到大的顺序指定 
- #           若天气种类用字符串表示,则按字符串中的顺序指定 
- #           天气强度的数值设为1-9与事件系统“天气设置”相同,10以上为扩展强度 
- #        c) 延迟帧的含义和事件系统的“天气设置”相同,即在X帧之后渐变达到强度 
- #        d) 自定义图片表为字符串数组形式(若只有1个天气元素可省略数组) 
- #           与指定的天气种类逐一对应,用以代替系统默认的天气粒子图片 
- #        e) 动画表为动画ID的数组形式(若只有1个天气元素可省略数组) 
- #           与指定的天气种类逐一对应,表示在这些天气粒子上同时播放对应ID的动画 
- #        (注:由于XP内建支持雾图形功能,多云、阴、沙尘暴、雾、霾等强阴影天气, 
- #        建议使用雾图形功能实现) 
- #     2. 粒子动画使用插件命令实现,具体为: 
- #        cmd_particle_setup(发射器编号, 粒子元件名, 发射器设置, 粒子设置, 强度) 
- #        a) 发射器编号为1-8的值,是控制发射器的凭据,对同一个发射器的反复设置会 
- #           覆盖前一次的设置,其逻辑类似于显示图片 
- #           可以在设置中更改最大并发数,注意性能问题 
- #        b) 粒子元件名即粒子的元件图片名称,要放在Graphics/Pictures文件夹中 
- #        c) 发射器设置为一个长度为3的数组:[粒子再生率, 关键帧表, 缓动类型] 
- #           粒子再生率是一个自然数,表示发射器每帧最多可增加或减少该数目的粒子 
- #           关键帧表是粒子发射器的移动位置变化表,以{帧数=>Rect}的hash形式表示 
- #           每一帧的Rect表示粒子发射器在这一帧可生成粒子的范围区域 
- #           缓动类型是粒子发射器在两个相邻关键帧间的移动补间方式,用字符串表示 
- #           "linear": 表示粒子发射器在两个关键帧之间线性补间处理(默认) 
- #           "static": 表示粒子发射器在两个关键帧之间不进行补间处理 
- #           "smooth": 表示粒子发射器在两个关键帧之间平滑补间处理 
- #           "slow": 表示粒子发射器在两个关键帧之间慢速补间处理(比smooth平滑) 
- #           "hasty": 表示粒子发射器在两个关键帧之间急动补间处理 
- #           "fast": 表示粒子发射器在两个关键帧之间快速补间处理(比hasty急动) 
- #           "circular": 表示粒子发射器在两个关键帧之间圆性补间处理 
- #           "axial": 表示粒子发射器在两个关键帧之间轴性补间处理 
- #        d) 粒子设置是一个长度为10的数组,可任选以下两种方式之一表示: 
- #           i. [0, 水平初速, 垂直初速, 淡出, 水平加速, 垂直加速, 动力, 自旋, 
- #               放大率, 放大加速] 
- #           ii.[1, 移向, 移速, 淡出, 转向, 加速, 动力, 自旋, 放大率, 放大加速] 
- #           具体效果可以参考脚本配置区中默认天气粒子的设置 
- #        e) 强度和天气设置相同,强度1同时发射8个粒子,强度每+1,同时发射粒子+4 
- #     3. 粒子动画的实时控制用插件命令实现,具体为: 
- #        cmd_particle_control(发射器编号, 命令[, 参数]) 
- #        发射器编号就是生成粒子动画时指定的编号 
- #        命令为以下五个字符串之一: 
- #        "change": 更改粒子动画的元件名为参数指定的新文件名 
- #        "max": 更改粒子动画的强度上限为新的参数指定的值,发射器将缓缓再生粒子 
- #        "fade": 无参数,阻止发射器中粒子的再生行为,所有粒子消失后,消除发射器 
- #        "kill": 无参数,立即停止粒子动画,清除一切粒子,并消除发射器 
- #        "proc": 参数指定一个Proc,更改发射器的粒子清除判定规则 
- #                默认规则为粒子进入画面无效区域,或者粒子淡出到指定透明度以下 
- #     4. 本插件改变了在事件中连续设定天气的解释逻辑,每当设定一个延迟帧不为0的 
- #        天气(包括用事件指令和插件命令设定时),如果此时已经有天气变化的预约调 
- #        用,不会覆盖调用天气变化,而是追加为排队的调用。 
- #        如果确需覆盖调用,可插入一个延迟帧为0的天气指令,这会清空预约队列。 
- #==============================================================================