![]() |
|
![]() |
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
![]() Quote:
My script already does that. When it reaches target it does some flying round then hunts. But I would like to alter the script so that during flight it alters waypoint to nearest target. It almost needs a loop time script so that say every 60 seconds until it reaches its waypoint, that is searcers for closest enemy air target.
__________________
__________________ Win7, 64bit Ultra Asus P8P67Pro MB Intel i7-2600K Coursair 16GB (4x 4GB), DDR3-1600MHz Gainward Nvidia 580GTX 3GB DDR5 850-Watt Modular Power Supply WIN7 and COD on Gskill SSD 240GB 40" Panasonic LCD TrackIR5 + Thrustmaster Warthog stick, throttle & pedals |
#2
|
|||
|
|||
![]()
I was saying exactly the same: you need to do that new waypoint assignment in real-time, during the mission (and not only at mission's generation). If I am remembering right, it was already done as a nexample in Cross Roundel mp map naarvy's script (in which he dynamically assigned new waypoints and targets to ground groups during the mission)..
|
#3
|
|||
|
|||
![]()
I think onTickGame method should be used to repeat target pos checks every 60 seconds.
|
#4
|
|||
|
|||
![]()
Hi guys,
Would this code look ok for making the AI airgroups re-check their targets ever 34 seconds? Code:
/////////////////check ai air waypoints and set new task ever 34 sec. AiAirGroup airGroup = actor as AiAirGroup; if (Time.tickCounter ()% 34 == 0) / / 34 Ticks should be a second if ((airGroup != null) || (1) || (2)) { SetNewTask(airGroup); AiAirGroup[] eGroups = GamePlay.gpAirGroups((airGroup.Army() == 1) ? 2 : 1); if (eGroups != null) foreach (AiAirGroup eGroup in eGroups) { if (eGroup != null) { if ((eGroup.hasCourseWeapon()) && ((airGroup.isAircraftType(AircraftType.Fighter)) || (airGroup.isAircraftType(AircraftType.HeavyFighter)))) { AiWayPoint[] chkWP = eGroup.GetWay(); bool res = true; foreach (AiWayPoint eWP in chkWP) { AiAirWayPoint aAWP = (eWP as AiAirWayPoint); if ((aAWP.Action != AiAirWayPointType.HUNTING) || (aAWP.Action != AiAirWayPointType.NORMFLY) || ((aAWP.Action == AiAirWayPointType.AATTACK_BOMBERS) && (aAWP.Target != null) && (aAWP.Target.IsValid())) || ((aAWP.Action == AiAirWayPointType.AATTACK_BOMBERS) && (aAWP.Target != null) && (aAWP.Target.IsValid()))) { res = false; break; } } if (res) { SetNewFighterTask(eGroup, airGroup); } } } } }
__________________
__________________ Win7, 64bit Ultra Asus P8P67Pro MB Intel i7-2600K Coursair 16GB (4x 4GB), DDR3-1600MHz Gainward Nvidia 580GTX 3GB DDR5 850-Watt Modular Power Supply WIN7 and COD on Gskill SSD 240GB 40" Panasonic LCD TrackIR5 + Thrustmaster Warthog stick, throttle & pedals |
#5
|
|||
|
|||
![]()
Do you insert this into OnTickGame method?
Maybe you need to delete an old waypoint after the new one is created. Checking every second (30 ticks ~ 1 second) could be too much load on server if you have many airgroups. I know that bombers look for targets within 5 km radius automatically. Probably fighters do at least the same. Therefore you do not have to adjust waypoint every second. |
![]() |
|
|