arma3吧 关注:50,812贴子:493,779

分享个自己做的飞机投弹脚本.

只看楼主收藏回复

params["_vehicle","_weapon"];
// 设置俯冲高度, 投弹高度.
nowHeight = (getPosATL _vehicle) select 2;
targetHeight = floor (nowHeight * 0.1);
fireHeight = ceil (nowHeight * 0.8);
// 俯冲
_vehicle flyInHeight targetHeight;
// 等待达到攻击高度
waitUntil {
((getPosATL _vehicle) select 2) <= fireHeight;
};
// 攻击
while {_vehicle ammo _weapon > 0} do {
if (local _vehicle) then {
_vehicle selectWeapon _weapon;
sleep 0.1;
[_vehicle, _weapon] call BIS_fnc_fire;
};
};
// 拉高
sleep 3;
_vehicle flyInHeight nowHeight;
// 如果有干扰弹 扔干扰弹
if ((weapons _vehicle) find "CMFlareLauncher" >= 0) then {
for "_i" from 0 to 10 do {
sleep 0.5;
[_vehicle, "CMFlareLauncher"] call BIS_fnc_fire;
};
};


IP属地:北京1楼2018-07-15 12:15回复
    上述代码保存为文件 命名为fire.sqf 放到自己编辑任务的 script文件夹里(没有就自己建一个)
    比如:
    C:\Users\用户名\Documents\Arma 3\missions\任务名.地图名\script


    IP属地:北京2楼2018-07-15 12:15
    回复
      使用时 比如创建个飞机, 给它一个 路径点 "移动"
      然后在"移动" 的 执行栏里写入
      [vehicle this, "武器名"] execVM "script\fire.sqf";
      // this代表触发当前路径点的小队长 (一架飞机自己一个小队)
      // vehicle this 的意思就是获取当前触发路径点的小队长所乘坐的载具
      // 武器名就是飞机挂载的武器 比如Mk82 是 MK82Launcher; 获取载具武器名字可以 给载具设置个变量名
      // 比如p1, 然后进入游戏 打开控制台 输入 weapons p1; 即可在控制台的下方看到载具所携带的武器.


      IP属地:北京3楼2018-07-15 12:16
      回复
        演示:


        IP属地:北京4楼2018-07-15 12:17
        回复
          谢谢教导


          IP属地:广西5楼2018-07-15 12:29
          回复
            mcc有这东西


            IP属地:广东来自Android客户端6楼2018-07-15 13:47
            回复
              试了一下还不错,高度计算是根据初始高度来算了,低了投弹就能炸到飞机,建议用生成命令,顺便设置好高度,路径点,在投弹完一段时间后,删除,也能方便反复调用,类似于空中支援,当然,我也就说说,写这个太高端


              IP属地:上海来自Android客户端8楼2018-07-15 23:36
              回复(4)
                fn_setDirFLY2 = {//速度&方向设置
                private ["_veh","_dir","_v"];
                _veh = _this select 0;
                _dir = _this select 1;
                _v = velocity _veh;
                _veh setDir _dir;
                _veh setVelocity [
                (_v select 1) * sin _dir - (_v select 0) * cos _dir,
                (_v select 0) * sin _dir + (_v select 1) * cos _dir,
                _v select 2
                ];
                };
                [_veh, (getDir player)] call fn_setDirFLY2;
                _relPos = [player, random 3 - 3, getDir player] call BIS_fnc_relPos;
                输入物体或者位置,距离,方向,返回物体前后一定距离的位置
                [start, distance, direction] call BIS_fnc_relPosParameters:
                start: Object or Position - Object or position which should be used as initial point.
                distance: Number - Distance from initial point.
                direction: Number - Direction from the intial position.
                Return Value:Position


                IP属地:广东9楼2018-07-16 12:44
                收起回复
                  厉害啊!!


                  IP属地:加拿大10楼2018-07-17 12:56
                  回复
                    显现 script script\fire.sgf ont found 是什么意思?


                    IP属地:广西11楼2018-07-17 20:28
                    收起回复
                      终于搞定了不知是我的问题还是你没讲清楚,我是在飞行员的脚本里写的代码不是在移动的里面写的才成功。


                      IP属地:广西来自iPhone客户端12楼2018-07-19 20:31
                      回复
                        楼主为啥我弄好了飞机到达指定位置没有投弹?


                        13楼2018-08-16 20:23
                        回复


                          IP属地:贵州来自Android客户端14楼2019-02-12 17:30
                          收起回复

                            这是飞机武器和飞行员脚本


                            IP属地:贵州16楼2019-02-12 18:02
                            收起回复


                              IP属地:贵州17楼2019-02-12 18:26
                              回复