“Pere工作笔记”的版本间的差异
(2021-06-07 16:40 笔记测试) |
Chinodaisuki(讨论 | 贡献) 小 |
||
第5行: | 第5行: | ||
在[main]里面写: | 在[main]里面写: | ||
debug: 1 | <code>debug: 1</code> | ||
然后编译地图后会生成一个out.scx.epmap,把它拖到epTrace.exe,然后进入游戏玩out.scx | 然后编译地图后会生成一个out.scx.epmap,把它拖到epTrace.exe,然后进入游戏玩out.scx | ||
第87行: | 第87行: | ||
注意,当同时选中两个兵时,右下角的按钮面板会变为244(Units)号Button Set。所以即使你把两个兵单独的button set改成了其他,那么当同时选中两个兵时,button set还是变为244,所以我们一般在改按钮之后还要把244号button set清空: | 注意,当同时选中两个兵时,右下角的按钮面板会变为244(Units)号Button Set。所以即使你把两个兵单独的button set改成了其他,那么当同时选中两个兵时,button set还是变为244,所以我们一般在改按钮之后还要把244号button set清空: | ||
SetMemory(0x005187E8 + 12 * 244, SetTo, 0); | <code>SetMemory(0x005187E8 + 12 * 244, SetTo, 0);</code> | ||
SetMemory(0x005187E8 + 12 * 244 + 4, SetTo, 0); | <code>SetMemory(0x005187E8 + 12 * 244 + 4, SetTo, 0);</code> | ||
注意: | 注意: |
2021年6月7日 (一) 16:42的版本
[Unlimiter]插件会导致被Create出来的Unit的+0x0C(sprite pointer)变成0,导致无法改unit颜色。所以CreateUnit的代码应该写在unlimiter代码生效之前,只能写在onPluginStart
使用epTrace来debug:
在[main]里面写:
debug: 1
然后编译地图后会生成一个out.scx.epmap,把它拖到epTrace.exe,然后进入游戏玩out.scx
退出游戏后,会生成out.scx.epmap.prof,用txt查看即可
教程:
https://cafe.naver.com/edac/63490
如何让scv以造建筑的形式造任何单位:
搞出相应的按钮,按钮的Condition: 3 (Always), Action: 29 (Build Terran Building), Action value是要造的unitID
然后把要造的unit在units.dat的requirement改成always use。(当然可以改mineral/gas数/人口数/BuildingDimension等)这样就可以让scv建造它时收到建造order了(order=30, buildQueue0=unitID)
此时可以检测scv的order和buildQueue然后CreateUnit
如果想让scv直接走过去造,则还需要:
Construction Animation改成0
如何进行“按钮 - 选择目标位置”的触发:
以scv为例子,首先把scv的5红AI-order全部设为2,Right-Click order设为6,然后有如下几种可行的方法:
1. 建造建筑的按钮
(1)给SCV一个按钮,Condition设为Always(或者Can Create Unit/Building,注意改需求),Action设为Create Building - Terran,然后随便设一个Action Value X,然后注意要让单位X的Requirement满足。
(2)检测到scv的order为30(建造)时,获取scv的orderTargetPosition
2. 基本指令按钮
(1)给SCV一个按钮,Condition设为Always,Action设为20 (Patrol)
(2)检测到scv的order为152(Patrol)时,获取scv的orderTargetPosition
注意,按钮Action设为Attack或者move时,由于Attack按钮点到空地和单位上分别会导致order=14(Attack Move)和order=10(Attack Unit)两种,所以检测order时要同时考虑10和14,同理Move点到空地和单位上分别会导致order 6(Ignore)和order 49(Follow)两种。
3. 施法,Tech use
(1)给SCV一个按钮,Condition设为Always,Action设为24 (Use Technology),Action Value设为14(Dark Swarm)
(2)将Dark Swarm所需要的能量设为0
(3)将TechData的14号(Dark Swarm)的Usage requirement改成Always use。注意:order的119号(Dark Swarm)不用动
(4)检测到scv的order为119(Dark Swarm)时,获取scv的orderTargetPosition
如何把Terran Civilian调出Attack按钮,并且能用它来给order并且给完order之后它原地不动:
DatEdit - Unit(Terran Civilian) - AI actions: Attack Unit = 10, Right-click Action = 3
FireGraft - Button Set - Terran Civilian - "Attack" button - Condition = 3 (Always)
注意,使用data dumper来强行改动stat_txt.tbl之后,会使自定义快捷键失效,所以除非万不得已,否则千万不要使用自定义stat_txt.tbl。另外,使用settbl或者settbl2函数也会使得自定快捷键失效。
按钮触发实现方法:
(1)方法一:build check法
EE3 - data edit - Button set - Terran Marine - 激活 button list - 右键 - New code - Train Unit - 随便选择一个value(最好选择英雄Unit,假设选择的unit是Jim Raynor),然后随便选一个图标和注释
然后data edit - Unit - Jim Raynor要修改两个:
default: Mineral和Vespene都改成0
Requirements: Always Use
然后就可以使用buildcheck和buildreset了
(2)方法二:order法
EE3 - data edit - Button set - Terran Marine - 激活 button list - 右键 - New code - Basic Command - confirm
删掉不需要的按钮,然后button work的condition改成Always,action改成Stop reaver
然后orders - Reaver stop - Requirements改成Always
注意,当同时选中两个兵时,右下角的按钮面板会变为244(Units)号Button Set。所以即使你把两个兵单独的button set改成了其他,那么当同时选中两个兵时,button set还是变为244,所以我们一般在改按钮之后还要把244号button set清空:
SetMemory(0x005187E8 + 12 * 244, SetTo, 0);
SetMemory(0x005187E8 + 12 * 244 + 4, SetTo, 0);
注意:
当一个兵的Right-Click order设为6时,选中它之后右键空地的效果是:出现⊙动画,但是兵原地不动;
当Right-Click order设为3时,单位将处于“Can't move”状态,选中之后右键空地不会出现⊙动画,同时也会导致很多order用不了(比如Patrol、Attack用不了)
所以,如果把单位的Right-Click order设为3,则需要将152号Order(Patrol)的requirement改成Always Use才能让单位对于Patrol有反应(单位的CUnit的order ID会变为152号)。注意,由于order requirement本身已经处于1316/1316的爆满状态,如果想更改order,可能首先需要将一些没用的order的requirement设为Don't Use
SetDeaths的单位如果是P9-P12的单位,则在非eud地图中不起任何作用
如果地图是eud图,则会起作用
星际判断一个单位是否在location中,仅跟该单位的Unit Size (Unit Dimension)有关,即内存0x6617C8