中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
楼主: 下网上载

[原创] 红外标记,地面载具火力支援脚本【按L锁定目标】10月15日更新

    [复制链接]
发表于 2013-10-13 20:12:39 | 显示全部楼层
感谢,LZ分享,去试一下!
发表于 2013-10-13 22:51:58 | 显示全部楼层
dddddddddddddddddddddddddddddd
发表于 2013-10-13 23:38:03 | 显示全部楼层
好东西啊。看看
发表于 2013-10-13 23:50:54 | 显示全部楼层
下网上载 发表于 2013-10-13 12:30
dowatch

和 tank1 fire (weapons tank1 select 0);

目标建筑的ID是在哪里写的?
 楼主| 发表于 2013-10-14 00:01:55 | 显示全部楼层
bym101 发表于 2013-10-13 23:50
目标建筑的ID是在哪里写的?

dowatch那里~ getpos 让炮塔盯着目标然后fire~

唯一遗憾的是~

炮塔回转到位以及 发射的时间不大好协调~我的脚本里也有这个BUG~~有时是一边射击一边瞄准的。。。
发表于 2013-10-14 00:19:48 | 显示全部楼层
下网上载 发表于 2013-10-14 00:01
dowatch那里~ getpos 让炮塔盯着目标然后fire~

唯一遗憾的是~


给个完整写法。。。。
发表于 2013-10-14 00:26:53 | 显示全部楼层
学习学习
 楼主| 发表于 2013-10-14 01:31:49 | 显示全部楼层
bym101 发表于 2013-10-14 00:19
给个完整写法。。。。

给你也没用~得用脚本循环执行~~~

输入ID dowatch

然后开火

并且。。。我不知道怎么让AI把弹药切换成高爆弹~~

我写的这个脚本都是强制添加弹药进去的~完全按原版的流程走的话~暂时还没研究出坦克炮AI弹药切换的办法
发表于 2013-10-14 02:01:26 | 显示全部楼层
~~~~~~~~
发表于 2013-10-14 10:38:47 | 显示全部楼层
本帖最后由 FFUR2007SLX2_5 于 2013-10-14 10:57 编辑
bym101 发表于 2013-10-14 00:19
给个完整写法。。。。


Hi 大家好。

不知道bym有没有试过这个方法?

我们以蓝方的坦克来说:

  1. f_tank doWatch ([0,0,0] NearestObject 140329)
复制代码


140329是您地图上开启ID显示后,您想要进行攻击的建筑。

  1. f_tank fire ((weapons f_tank) select 0)
复制代码


完成瞄准后就可以让AI射击了,这里我们打了主炮,select 1为使用机枪。主炮中弹种切换我们使用fire数组。

祝愉快。
 楼主| 发表于 2013-10-14 11:00:13 | 显示全部楼层
本帖最后由 下网上载 于 2013-10-14 11:04 编辑
FFUR2007SLX2_5 发表于 2013-10-14 10:38
Hi 大家好。

不知道bym有没有试过这个方法?


f_tank fire ((weapons f_tank) select 0)

fire数组?


f_tank fire (((weapons f_tank) select 0) select 1)

这种写法?


对了,版主~dowatch这种写法 没法判断AI是否已经瞄准啊~~因为回转炮塔也是需要一定的时间的。。。。

所以有时都没校准就开始射击了~所以这种写法其实在脚本里应用不算好~~~

发表于 2013-10-14 13:06:43 | 显示全部楼层
下网上载 发表于 2013-10-13 14:20
其实按道理来讲~~通过无线电联系好~~并且附近仅有这帮人在火拼~~

比如变形金刚1那种情况~~几个美军瞄 ...

额其实是需要的,只是变形金刚那个目标太大。。。。太容易识别了。。。所以就免了。。。。
发表于 2013-10-14 13:40:05 | 显示全部楼层
下网上载 发表于 2013-10-14 11:00
f_tank fire ((weapons f_tank) select 0)

fire数组?


hi 下网上载

别对自己失去信心,为什么说doWatch的写法不好呢?我看却好得很。

不知道您是否留意过BIS_fnc_DirTo,WeaponDirection和atan2呢?

假设我们的目标是_Target,我们让_tank dowatch _target然后就fire。

炮塔转动的时间差如何取得?用sleep是不是不准确?

首先当_tank开始dowatch时我们先得到炮塔的方位角:

  1. _offset = _tank weapondirection (currentWeapon _tank);
  2. _dir_degrees = (_offset select 0) atan2 (_offset select 1);
复制代码


在得到了炮塔方位角后我们要知道_target距离_tank的方位角:

  1. _dir = [_tank, getposATL _target] call BIS_fnc_dirTo;
复制代码


在得到了相对位方位角后我们需要将炮塔方位角与相对位方位角进行匹配:

  1. waitUntil {
  2. if ((round _dir_degrees) == (round _dir)) exitWith {true};
  3. _offset = _tank weapondirection (currentWeapon _tank);
  4. _dir_degrees = (_offset select 0) atan2 (_offset select 1);
  5. _dir = [_tank, getposATL _target] call BIS_fnc_dirTo;
  6. };
复制代码


这样无论是静止瞄准还是移动中瞄准都可以判断主炮是否已瞄准了目标。

祝愉快。
 楼主| 发表于 2013-10-14 14:09:01 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-10-14 13:40
hi 下网上载

别对自己失去信心,为什么说doWatch的写法不好呢?我看却好得很。

感激版主详细的教导
 楼主| 发表于 2013-10-14 15:59:22 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-10-14 13:40
hi 下网上载

别对自己失去信心,为什么说doWatch的写法不好呢?我看却好得很。

版主啊有个很搞笑的情况出现

                                   waitUntil {
                                                if ((round _dir_degrees) == (round _dir)) exitWith {true};
                                                if !(alive _tank) exitWith {true};
                                                _offset = _tank weapondirection (currentWeapon _tank);
                                                _dir_degrees = (_offset select 0) atan2 (_offset select 1);
                                                _dir = [_tank, getposATL JB_LS] call BIS_fnc_dirTo;
                                                hintSilent format ["DIR:%1",(round _dir)];       
                                               };

这样写~没有任何问题

但是如果这样写
                                   waitUntil {
                                                if ((round _dir_degrees) == (round _dir)) exitWith {true};
                                                if !(alive _tank) exitWith {true};
                                                _offset = _tank weapondirection (currentWeapon _tank);
                                                _dir_degrees = (_offset select 0) atan2 (_offset select 1);
                                                _dir = [_tank, getposATL JB_LS] call BIS_fnc_dirTo;
                             };
去掉显示角度的那句代码,他就会报错
Error Generic error in expression
这是什么情况??

完全不能理解为何他这样就不能跑了。。。。

另外一个问题就是:怎么判断坦克 或者 某个载具的 炮塔受损了?
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-5-8 23:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表