本帖最后由 疯人¢衰人 于 2016-9-1 08:10 编辑
这是使用SE时遇到的一些细节问题的总结,由于是多个版本积累,所以可能有部分内容有所差别,或错误。括号中对应的地图文件在附件中 SC2编辑器细节内容总结 1. 集合效果中的最大计数最小数量决定了集合效果中能够起效的效果的总数。如果不启用随机,则将会按照顺序执行。无论是否启用随机,如果执行的效果没有通过验证器验证,将不会继续考虑其他效果,直接结束效果。(随机效果验证器作用测试.SC2Map) 2. 多层行为的每个行为的周期事件都会独立运行。如果到达行为叠加上限,会逐个移除最早添加的行为以保持行为层数不会超过叠加上限(不同单位添加的相同行为的效果差异.SC2Map) 3. 应用和移除行为效果,单个效果会添加移除多层行为时,会多次响应行为增加减少事件,响应次数与操作的行为数量有关。并且每次触发获取的单位获得的行为层数都是最终结果。 4. 当行为的所需条件不满足时,行为层数验证器也不能验证到行为存在。 5. 从模板中创建对话框,会创建模板下所有的UI控件。 6. [Left]的锚点对[XXX]无效。将重载的锚点UI的pos=""的值Max和Min相应修改。无法使用从模板中创建对话框项创建小地图等官方UI,使用衔接标准对话框项动作Hook标准UI的路径不包括GameUI(小地图相关测试.SC2Map) 7. TextError:Text [XX] is too tall for a single line. Exceeds by [n] 是指对话框大小(高度)不足以满足单行文字。 8. 在高速移动的单位无法响应全部经过的路径上的区域事件。单位进入离开区域事件是通过在每个周期验证单位是否在区域范围内来实现。(区域事件测试.SC2Map) 9. FixedToInt向下取整,FloorI向下取整,CeilingI向上取整。(Celiling与Floor作用.SC2Map) 10. 自定义动作或函数时将选项设为子函数,参数就可以采用“任意类型”作为参数类型。此时不填写子函数类型的部分数据,然后在自定义脚本中填写以函数引用、结构体引用及数组引用的为参数的函数的正常调用(动作需要带有分号,函数不需要)语法,通过#PARAM(脚本识别符)来使用自定义动作或函数中的参数,这样可以实现以这些引用作为参数的动作及函数的封装。注意使用这类自定义动作时,引用参数需要选择“任意类型”的变量类型。(结构体引用作为参数类型.SC2Map) 11. 自定义函数及动作时可以采用#AUTOVAR(PoseitionAdditional,fixed [2])[0]这类的方式来声明及使用数组随机变量。 12. 对话框可以被鼠标点击透过。 13. 鼠标UI层分辨率固定为1600*1200,与对话框的UI层坐标不一致。 14. 隐藏面板将会隐藏从面板创建的对话框控件. 15. 对话框项只有可见部分才会触发对话框项系列事件。 16. 引用不能用等于null来验证没有赋值,但是可以用一个未进行赋值的引用来验证。 17. 目前支持的变量类型列表:注释类型为不能赋值为null: abilcmd gv_variable_0 = null; aifilter gv_variable_1 = null; actor gv_variable_2 = null; actorscope gv_variable_3 = null; bank gv_variable_4 = null; //bool gv_variable_5 = null; //byte gv_variable_6 = null; camerainfo gv_variable_7 = null; //char gv_variable_8 = null; //color gv_variable_9 = null; doodad gv_variable_10 = null; effecthistory gv_variable_11 = null; //fixed gv_variable_12 = null; generichandle gv_variable_13 = null; //int gv_variable_14 = null; marker gv_variable_15 = null; order gv_variable_16 = null; playergroup gv_variable_17 = null; point gv_variable_18 = null; region gv_variable_19 = null; revealer gv_variable_20 = null; sound gv_variable_21 = null; soundlink gv_variable_22 = null; string gv_variable_23 = null; //struct gv_variable_24 = null; text gv_variable_25 = null; timer gv_variable_26 = null; transmissionsource gv_variable_27 = null; trigger gv_variable_28 = null; unit gv_variable_29 = null; unitfilter gv_variable_30 = null; unitgroup gv_variable_31 = null; //void gv_variable_32 = null; wave gv_variable_33 = null; waveinfo gv_variable_34 = null; wavetarget gv_variable_35 = null; 18. 引用中,子函数声明的局部变量的数据无法通过引用反馈到父级函数,传递过程中实际数值会丢失。结构体引用的数组在声明后每个结构体引用都是未初始化的,而数组引用的数组是可用的。 19. 本地变量最大值为32k-1,带有一个字段的结构体约占用4,引用为1 20. 创建周期性效果可以通过字段(基本) 搜索: 暴露标旗来开启效果创建的开图器,(基本) 搜索的几个字段值决定了开图效果,这种开图方式无视视野阻断器的影响。(周期性效果开图器.SC2Map) 21. 点在区域内函数,当点在区域边界时返回真。 22. 鼠标指针贴图保存格式为(8.8.8.8 ARGB 32bpp | unsigned) 23. 鼠标滚轮事件在鼠标指针放在某些UI框体(如默认下部UI)上时不会响应鼠标滚轮事件 24. 鼠标进入和离开对话框事件响应于最表层的对话框项 25. 触发上限4096,Mod本身会自带一部分触发 26. 演算体条件Option可以验证游戏配置,等级中“极高(Extreme)”对应游戏配置“极高”,“过激(Ultra)”对应游戏配置“超高”,“着色器”对应“渲染” 27. “无法作为高亮”,“无法作为目标”,“无法选择”,“无鼠标提示”标旗都为已启用才能去除单位对鼠标选择的遮挡 28. 影响行为进度条的显示的设置条件包括:单位的单位:标旗“无法作为目标的”,单位演算体的UI:状态条标旗:“时长”,行为的UI:显示倒计时“需要显示的联盟关系” 29. 自定义死亡的名称需要在SYSTEM_ActorConfig演算体中定义,然后在单位演算体中的死亡自定义数据,自定义死亡两条属性中新增,最后在演算体的事件增加如下触发内容(注意添加条件): <On Terms="UnitDeathCustomize" Send="DeathCustomize 自定义死亡名称"/> 30. 默认自定义死亡关键字 <DeathCustomPriorityList value="Empty"/> <DeathCustomPriorityList value="Upgrade"/> <DeathCustomPriorityList value="UpgradedFire"/> <DeathCustomPriorityList value="UpgradedAcid"/> <DeathCustomPriorityList value="UpgradedEviscerate"/> <DeathCustomPriorityList value="Warpgate"/> <DeathCustomPriorityList value="DarkProtoss"/> <DeathCustomPriorityList value="BlackOps"/> <DeathCustomPriorityList value="Detached"/> <DeathCustomPriorityList value="Flying"/> <DeathCustomPriorityList value="Uprooted"/> <DeathCustomPriorityList value="Burrowed"/> <DeathCustomPriorityList value="AntiGravGeneric"/> <DeathCustomPriorityList value="AntiGravProtoss"/> <DeathCustomPriorityList value="AntiGravTerran"/> <DeathCustomPriorityList value="AntiGravZerg"/> <DeathCustomPriorityList value="Variation0"/> <DeathCustomPriorityList value="Variation1"/> <DeathCustomPriorityList value="Variation2"/> <DeathCustomPriorityList value="Variation3"/> <DeathCustomPriorityList value="Variation4"/> <DeathCustomPriorityList value="Variation5"/> <DeathCustomPriorityList value="Variation6"/> <DeathCustomPriorityList value="Variation7"/> <DeathCustomPriorityList value="Variation8"/> <DeathCustomPriorityList value="Variation9"/> <DeathCustomPriorityList value="Variation10"/> <DeathCustomPriorityList value="Variation11"/> <DeathCustomPriorityList value="Variation12"/> <DeathCustomPriorityList value="Variation13"/> <DeathCustomPriorityList value="Variation14"/> <DeathCustomPriorityList value="Variation15"/> <DeathCustomPriorityList value="Variation16"/> <DeathCustomPriorityList value="Variation17"/> <DeathCustomPriorityList value="Variation18"/> <DeathCustomPriorityList value="Variation19"/> <DeathCustomPriorityList value="Variation20"/> <DeathCustomPriorityList value="Variation21"/> <DeathCustomPriorityList value="Variation22"/> <DeathCustomPriorityList value="Variation23"/> <DeathCustomPriorityList value="Variation24"/> <DeathCustomPriorityList value="Variation25"/> <DeathCustomPriorityList value="Variation26"/> <DeathCustomPriorityList value="Variation27"/> <DeathCustomPriorityList value="Variation28"/> <DeathCustomPriorityList value="Variation29"/> <DeathCustomPriorityList value="Variation30"/> <DeathCustomPriorityList value="Variation31"/> <DeathCustomPriorityList value="Variation32"/> <DeathCustomPriorityList value="Variation33"/> <DeathCustomPriorityList value="Variation34"/> <DeathCustomPriorityList value="Variation35"/> <DeathCustomPriorityList value="Variation36"/> <DeathCustomPriorityList value="Variation37"/> <DeathCustomPriorityList value="Variation38"/> <DeathCustomPriorityList value="Variation39"/> <DeathCustomPriorityList value="Variation40"/> <DeathCustomPriorityList value="Variation41"/> <DeathCustomPriorityList value="Variation42"/> <DeathCustomPriorityList value="Variation43"/> <DeathCustomPriorityList value="Variation44"/> <DeathCustomPriorityList value="Variation45"/> <DeathCustomPriorityList value="Variation46"/> <DeathCustomPriorityList value="Variation47"/> <DeathCustomPriorityList value="Variation48"/> <DeathCustomPriorityList value="Variation49"/> <DeathCustomPriorityList value="Variation50"/> <DeathCustomPriorityList value="Variation51"/> <DeathCustomPriorityList value="Variation52"/> <DeathCustomPriorityList value="Variation53"/> <DeathCustomPriorityList value="Variation54"/> <DeathCustomPriorityList value="Variation55"/> <DeathCustomPriorityList value="Variation56"/> <DeathCustomPriorityList value="Variation57"/> <DeathCustomPriorityList value="Variation58"/> <DeathCustomPriorityList value="Variation59"/> <DeathCustomPriorityList value="Variation60"/> <DeathCustomPriorityList value="Variation61"/> <DeathCustomPriorityList value="Variation62"/> <DeathCustomPriorityList value="Variation63"/> <DeathCustomPriorityList value="Variation64"/> <DeathCustomPriorityList value="Variation65"/> <DeathCustomPriorityList value="Variation66"/> <DeathCustomPriorityList value="Variation67"/> <DeathCustomPriorityList value="Variation68"/> <DeathCustomPriorityList value="Variation69"/> <DeathCustomPriorityList value="Variation70"/> <DeathCustomPriorityList value="Variation71"/> <DeathCustomPriorityList value="Variation72"/> <DeathCustomPriorityList value="Variation73"/> <DeathCustomPriorityList value="Variation74"/> <DeathCustomPriorityList value="Variation75"/> <DeathCustomPriorityList value="Variation76"/> <DeathCustomPriorityList value="Variation77"/> <DeathCustomPriorityList value="Variation78"/> <DeathCustomPriorityList value="Variation79"/> <DeathCustomPriorityList value="Variation80"/> <DeathCustomPriorityList value="Variation81"/> <DeathCustomPriorityList value="Variation82"/> <DeathCustomPriorityList value="Variation83"/> <DeathCustomPriorityList value="Variation84"/> <DeathCustomPriorityList value="Variation85"/> <DeathCustomPriorityList value="Variation86"/> <DeathCustomPriorityList value="Variation87"/> <DeathCustomPriorityList value="Variation88"/> <DeathCustomPriorityList value="Variation89"/> <DeathCustomPriorityList value="Variation90"/> <DeathCustomPriorityList value="RagdollNoBlood"/> <DeathCustomPriorityList value="RagdollBlood"/> <DeathCustomPriorityList value="RagdollBasicNoBlood"/> <DeathCustomPriorityList value="RagdollGibNoBlood"/> <DeathCustomPriorityList value="RagdollBasicAndGibNoBlood"/> <DeathCustomPriorityList value="RagdollBasic"/> <DeathCustomPriorityList value="RagdollBasicAir"/> <DeathCustomPriorityList value="RagdollSparks"/> <DeathCustomPriorityList value="RagdollGibSparks"/> <DeathCustomPriorityList value="RagdollBasicAndGibSparks"/> <DeathCustomPriorityList value="RagdollAoE"/> <DeathCustomPriorityList value="RagdollOverkill"/> <DeathCustomPriorityList value="RagdollOverkillDPRH"/> <DeathCustomPriorityList value="RagdollOverkillDOI"/> <DeathCustomPriorityList value="RagdollOverkillGank2x1"/> <DeathCustomPriorityList value="RagdollBaneling"/> <DeathCustomPriorityList value="RagdollSiegeTank"/> <DeathCustomPriorityList value="RagdollUltraUnburrow"/> <DeathCustomPriorityList value="RagdollSpineCrawlerHurl"/> <DeathCustomPriorityList value="RagdollFire"/> <DeathCustomPriorityList value="RagdollAcid"/> <DeathCustomPriorityList value="RagdollNuke"/> <DeathCustomPriorityList value="RagdollMidair"/> <DeathCustomPriorityList value="RagdollUpgraded"/> <DeathCustomPriorityList value="RagdollUpgradedMidair"/> <DeathCustomPriorityList value="Low"/> <DeathCustomPriorityList value="Hallucination"/> <DeathCustomPriorityList value="Vortex"/> <DeathCustomPriorityList value="Polymorph"/> <DeathCustomPriorityList value="Shadow"/> <DeathCustomPriorityList value="Rescue00"/> <DeathCustomPriorityList value="Rescue01"/> <DeathCustomPriorityList value="Rescue02"/> 31. 演算体消息播放动画的最后一个参数覆盖优先级可以将优先级较低的模型动画的优先级调高,避免被其他如Stand等高优先级的动画覆盖。动画的默认优先级可以在过场动画编辑器中播放的模型动画名后面()中的数字找到 32. 附着过的模型在通过设置主体为空后无法通过设置位置来调整模型位置(附着相关测试.SC2Map) 33. 负数取模的值是0减去其绝对值的模的值 35. 行为对于移动速度的修改,其倍率以相乘的方式获得最终结果。(行为对移动速度倍率叠加关系.SC2Map) 36. 行为持续时间覆盖的属性的意义是,按照列表符合最先一条验证器对应的值覆盖当前行为的持续时间。其验证数据是行为应用后的数据(首次应用行为时验证结果是1层行为存在)(行为持续时间覆盖.SC2Map) 37. 行为的抑制攻击效果并不会完全的禁止武器,而是不运行效果,所以当对一个抑制攻击的单位发布攻击命令时,是起效的,只是攻击效果没发生 38. Marker是否效验与效果的link有关,如果验证使用的是不同的效果树(包括引发效果树的技能或武器),那么只有当效果树从开启marker的效果匹配时,才会进行效验。(Marker测试.SC2Map) a) 测试地图中独立效果MarkerTestEffectSingle和设置效果MarkerTestEffectSet是添加Marker的效果。其中独立效果由SCV的武器引发,设置效果通过触发添加来测试独立效果的效果树末端效果测试效果副本MarkerTestEffectTestCopy是否会被释放。Marker通过测试应用行为MarkerTestEffectAB来添加行为并维持Marker持续存在。如果设置效果的效果树仅包括设置效果和测试应用行为两个效果(添加Marker和维持Marker),自身不存在测试效果MarkerTestEffectTest(如果存在也会与测试效果副本一样进行Maker验证,哪怕两个链接不同)。这样在应用设置效果后,独立效果的最终测试效果副本不会被使用。所以影响两个效果树的Marker是否彼此影响的是不同效果树种添加Marker的效果的链接(仅此效果,必须相同)以及相应的标旗(暂时未测试),包括具体的效果类型也可以不同 b) Marker效验的效果不能是Marker添加的效果本身 c) 武器跟效果在Marker上并不会被区分,武器添加的标记和效果添加的标记并不会在验证Marker时被区分(Marker测试武器加Marker.SC2Map) 39. 效果中的标记-时长是在标记正常存在时间基础之上的时长,比如应用行为能够保持添加行为的效果树的效果存在,如果标记-时长为默认值0,那么标记计数在行为被移除后同时移除,如果标记-时长大于0且小于效果的持续时间,那么标记会在到达标记-时长数据项的时间后移除,即不会等到行为被移除。 40. 单位组中的单位死亡时会自动排除,如果死亡单位的死亡时间不为0,则在单位死亡死亡时间后会在所有所在的单位组中删除 41. 当使用Marker作为武器根效果的验证器时,如果使用noMarker验证(标记为0),则目标可以被攻击,当验证不通过时攻击继续进行但是效果不会被使用,如果使用其他Maker验证(标记不为0)则始终无法对目标使用武器。(Marker禁止攻击目标.SC2Map,修改1 验证效果的验证器)其原因在于,Marker效验的前提是在验证前已经在目标身上释放了一个技能/武器/效果,来添加Marker设置,这样才能在其后续的效果树中进行验证。所以当验证器为noMarker时,由于武器筛选目标时,因为对目标进行根效果验证,由于此时武器的Marker数据没有添加,所以可以通过,而当筛选好目标添加效果时,由于武器已经添加了Maker信息,导致验证不通过。反之如果采用Marker为0验证,由于武器筛选目标时没有Maker信息在此之前加入目标单位,所以Marker计数不可能为非0,所以永远无法通过效验。 42. 指令是自动获得的函数能够返回指令获得的来源。以攻击为例,如果命令单位攻击单位,则返回假,如果攻击地面或者目标单位在攻击范围返回真。(指令是自动获得的.SC2Map)
43. 单位进入/离开点事件的点不会随着点的位置变化(移动点)而改变触发的位置,区域进入离开事件则会随着区域的变化而变化(点范围事件测试.SC2Map)
|