气垫运输的研究

:6_273:
也就是cob是给机器看的,bos是给人看的
bos可以没有,cob不能没有
改完bos必须将它编译成cob
是这样吗?

已编译TA33A的A族气垫脚本。。。现在在替代之并将测试。

[

基本上就是这样。
bos是为了方便继续修改,所以一般正式发布版里很少有bos。
cob是绝对不能缺的。

啊。。。突然想到一件事。。。这个代码似乎有bug。。。回炉去。。。

Edit: 运了鼠标所点的单位后,该单位的坐标改变了,所以要预先记录该单位原本坐标。否则就等同于以运输船为圆心了。
Edit2: 再次上传。。。
Edit3: 配图。。。

阴影线区域就是会被装载的区域。

觉得这个区域似乎太大了点,我想把装载的鼠标改成这么一个大圆圈,不知道行不行

:7_341: 觉得太大?自己把压缩包里的bos打开,找distance2 <= […] ,省略号的地方就是小圆半径,改小点即可。然后再用scriptor重新编译一下,把编译好的cob放到ta33a里去。

至于光标。。。可能所有运输单位用的鼠标光标都是同一个。。。所以如果你改成一个圆圈的话(假设能改),可能运输飞机用这个光标看起来会比较古怪。

是不是应该搞个投票,因为这个涉及我改鼠标的圆圈大小
不过我认为最好的方法是改脚本,像TRO那样显示一个圈

:6_288:另外原子版那种卸载方式不爽啊,最好改为猫版那种

:7_355: 你给我猫版的bos源文件再说

:6_284:既然可以记录装载单位的初始位置,是不是说空地也可以呢?能不能改为点空地也能装载呢?

hmm…不行吧。。。
TransportPickUp()的回调函数只给了一个unitid的参数,而不是一个position参数。
想要position类型参数,可能。。。用攻击指令来装载?也许可以?我不清楚。

TALON的大运输机就是用攻击指令来装载。。。。。。不过这样我就不能把鼠标改为大圆圈啦,但貌似TALON的攻击指令是一次装一个的

脚本上没限制一次装几个单位吧。。。

:6_274:算了,现在的重点是把原子版的卸载方式改掉,改到像猫版那样就好啦

气垫运输的运载量似乎很低啊。。。
不超过10吧?

实在不行的话,我自己试着写一个卸载脚本。。。

气垫是很低,运输船最高,可以运20来个,另外原子版的脚本似乎会把一些本来不能运的T3也吸进去,但是却不会把T4吸进去,比较奇怪

[
你按照猫版那个卸载脚本就可以了

你贴的那份我完全看不懂。。。

猫版的完全版
#define TA // This is a TA script

#include “sfxtype.h”
#include “exptype.h”

piece base, chassis, LDoor, RDoor, wake1, wake2, wake3, wake4,
wake5, wake6, wake7, wake8, load_shoulder, load_arm, unload_shoulder, unload_arm,
goal_shoulder, goal_arm;

static-var bMoving, Static_Var_2, Static_Var_3, Static_Var_4, Static_Var_5,
Static_Var_6, Static_Var_7, Static_Var_8, Static_Var_9, Static_Var_10,
Static_Var_11, Static_Var_12, Static_Var_13, Static_Var_14, Static_Var_15,
Static_Var_16, Static_Var_17, Static_Var_18, Static_Var_19, Static_Var_20,
Static_Var_21, Static_Var_22, Static_Var_23, Static_Var_24, Static_Var_25,
Static_Var_26, Static_Var_27, Static_Var_28, Static_Var_29, Static_Var_30,
Static_Var_31, Static_Var_32, Static_Var_33, Static_Var_34, Static_Var_35;

// Signal definitions
#define SIG_MOVE 32

TransportPickup(unitid)
{
var Func_Var_2, Func_Var_3;
if( get XZ_HYPOT(get UNIT_XZ(unitid) - get PIECE_XZ(load_shoulder)) <= [95.000000] )
{
set BUSY to 1;
if( Static_Var_2 < 0 )
{
Static_Var_2 = 0;
Static_Var_34 = 0;
}
if( Static_Var_2 >= 50 )
{
sleep 320;
set BUSY to 0;
return;
}
if( get UNKNOWN_UNIT_VALUE(72)(unitid) != Static_Var_8 )
{
sleep 320;
set BUSY to 0;
return;
}
Func_Var_2 = get UNIT_HEIGHT(unitid);
Func_Var_3 = 0;
Func_Var_3 = 398;
Func_Var_3 = 85;
Func_Var_3 = 4181;
Func_Var_3 = 321;
Func_Var_3 = 218;
Func_Var_3 = 650;
Func_Var_3 = 70;
Func_Var_3 = 300;
if( FALSE )
{
Func_Var_3 = 1000;
}
if( TRUE )
{
Func_Var_3 = [6553.600000];
}
if( TRUE )
{
sleep 320;
set BUSY to 0;
return (Func_Var_3);
}
turn LDoor to z-axis <150.000000> now;
turn RDoor to z-axis <150.000000> now;
turn load_shoulder to y-axis <0.000000> now;
move load_arm to z-axis [0.000000] now;
move load_arm to y-axis [0.000000] now;
explode load_arm type BITMAP5;
attach-unit 0 to chassis;
Static_Var_2 = 1;
Static_Var_34 = Func_Var_3;
if( TRUE )
{
Static_Var_33 = 65536;
}
if( TRUE )
{
Static_Var_33 = unitid;
}
if( TRUE )
{
Static_Var_32 = 65536;
}
if( TRUE )
{
Static_Var_32 = unitid;
}
if( TRUE )
{
Static_Var_31 = 65536;
}
if( TRUE )
{
Static_Var_31 = unitid;
}
if( TRUE )
{
Static_Var_30 = 65536;
}
if( TRUE )
{
Static_Var_30 = unitid;
}
if( TRUE )
{
Static_Var_29 = 65536;
}
if( TRUE )
{
Static_Var_29 = unitid;
}
if( TRUE )
{
Static_Var_28 = 65536;
}
if( TRUE )
{
Static_Var_28 = unitid;
}
if( TRUE )
{
Static_Var_27 = 65536;
}
if( TRUE )
{
Static_Var_27 = unitid;
}
if( TRUE )
{
Static_Var_26 = 65536;
}
if( TRUE )
{
Static_Var_26 = unitid;
}
if( TRUE )
{
Static_Var_25 = 65536;
}
if( TRUE )
{
Static_Var_25 = unitid;
}
if( TRUE )
{
Static_Var_24 = 65536;
}
if( TRUE )
{
Static_Var_24 = unitid;
}
if( TRUE )
{
Static_Var_23 = 65536;
}
if( TRUE )
{
Static_Var_23 = unitid;
}
if( TRUE )
{
Static_Var_22 = 65536;
}
if( TRUE )
{
Static_Var_22 = unitid;
}
if( TRUE )
{
Static_Var_21 = 65536;
}
if( TRUE )
{
Static_Var_21 = unitid;
}
if( TRUE )
{
Static_Var_20 = 65536;
}
if( TRUE )
{
Static_Var_20 = unitid;
}
if( TRUE )
{
Static_Var_19 = 65536;
}
if( TRUE )
{
Static_Var_19 = unitid;
}
if( TRUE )
{
Static_Var_18 = 65536;
}
if( TRUE )
{
Static_Var_18 = unitid;
}
if( TRUE )
{
Static_Var_17 = 65536;
}
if( TRUE )
{
Static_Var_17 = unitid;
}
if( TRUE )
{
Static_Var_16 = 65536;
}
if( TRUE )
{
Static_Var_16 = unitid;
}
if( TRUE )
{
Static_Var_15 = 65536;
}
if( TRUE )
{
Static_Var_15 = unitid;
}
if( TRUE )
{
Static_Var_14 = 65536;
}
if( TRUE )
{
Static_Var_14 = unitid;
}
if( TRUE )
{
Static_Var_13 = 65536;
}
if( TRUE )
{
Static_Var_13 = unitid;
}
if( TRUE )
{
Static_Var_12 = 65536;
}
if( TRUE )
{
Static_Var_12 = unitid;
}
if( TRUE )
{
Static_Var_11 = 65536;
}
if( TRUE )
{
Static_Var_11 = unitid;
}
if( TRUE )
{
Static_Var_10 = 65536;
}
if( TRUE )
{
Static_Var_10 = unitid;
}
if( TRUE )
{
Static_Var_9 = 65536;
}
if( TRUE )
{
Static_Var_9 = unitid;
}
if( TRUE )
{
explode chassis type BITMAP5;
show chassis;
}
turn LDoor to z-axis <0.000000> speed <60.000000>;
turn RDoor to z-axis <0.000000> speed <60.000000>;
set BUSY to 0;
}
}

TransportDrop(unitid, position)
{
var Func_Var_3, Func_Var_4;
if( TRUE )
{
var Func_Var_5;
Func_Var_5 = 0;
if( TRUE )
{
Func_Var_5 = [20.000000];
}
if( TRUE )
{
set BUSY to 1;
turn LDoor to z-axis <150.000000> now;
turn RDoor to z-axis <150.000000> now;
turn unload_shoulder to y-axis <0.000000> now;
move unload_arm to x-axis [0.000000] now;
move unload_arm to y-axis [0.000000] now;
turn unload_arm to y-axis <0.000000> now;
move unload_arm to z-axis Func_Var_5 now;
move unload_arm to y-axis [0.000000] now;
attach-unit unitid to unload_arm;
wait-for-move unload_arm along z-axis;
drop-unit unitid;
Static_Var_2 = 1;
Func_Var_3 = 0;
Func_Var_4 = 0;
Func_Var_4 = 398;
Func_Var_4 = 85;
Func_Var_4 = 4181;
Func_Var_4 = 321;
Func_Var_4 = 218;
Func_Var_4 = 650;
Func_Var_4 = 70;
Func_Var_4 = 300;
if( FALSE )
{
Func_Var_4 = 1000;
}
if( TRUE )
{
Func_Var_4 = [6553.600000];
}
Static_Var_34 = Func_Var_4;
mo