Jump to content

MIssion Scripting Tools (Mist)- enhancing mission scripting Lua


Recommended Posts

do'h. You just need to make it be

 

local function SEAD_launch(event)

 

(all of your code here)

 

mist.addEventHandler(SEAD_launch)

 

there is no need to declare SEAD_launch as a table first

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

Hi Grimes,

 

We just noticed that -

table mist.respawnGroup (string groupName, boolean/number task)

 

Has the task parameter, while -

mist.respawnInZone (string groupName, string zoneName, Boolean disperse, number radius)

 

Does not include the task parameter.

 

I'm asking about this because we noticed that a respawned unit, using the respawninzone script RTBs imidietly, could this be that it does not receive the task parmeter and therefore does as expect in the respawn script and rtbs?

Link to comment
Share on other sites

'On Road' doesn't work any more

 

path = {}

path[#path + 1] = mist.ground.buildWP(position1,'On Road',speed)

path[#path + 1] = mist.ground.buildWP(position2,'On Road',speed)

mist.goRoute(groupName, path)

 

does not make a group move on a road connecting two points any more. Not sure if this is a MIST issue or DCS World 1.26 issue. This used to work perfectly in MIST 2.0 and DCS 1.2.5. I updated both recently so I am not sure which is at fault.

[sIGPIC][/sIGPIC]

 

Intel Core I7 4820K @4.3 GHz, Asus P9X79 motherboard, 16 GB RAM @ 933 MHz, NVidia GTX 1070 with 8 GB VRAM, Windows 10 Pro

Link to comment
Share on other sites

Confirmed, also it doesn't work in the MIST 3.1 goToRandomPoint function: seems something changed in DCS World.

ChromiumDis.png

Author of DSMC, mod to enable scenario persistency and save updated miz file

Stable version & site: https://dsmcfordcs.wordpress.com/

Openbeta: https://github.com/Chromium18/DSMC

 

The thing is, helicopters are different from planes. An airplane by it's nature wants to fly, and if not interfered with too strongly by unusual events or by a deliberately incompetent pilot, it will fly. A helicopter does not want to fly. It is maintained in the air by a variety of forces in opposition to each other, and if there is any disturbance in this delicate balance the helicopter stops flying; immediately and disastrously.

Link to comment
Share on other sites

wolle, chromium. Yeah thats a bug with mist. I had already fixed it with mist 3.2 as I was implementing/testing the patrol script. I've been overly distracted by GTA5 and haven't had the time to tidy up and release 3.2. Will try to get it finished sometime this weekend.

 

xcom, Sometime while writing all of those functions I decided I didn't really want to have the route data in there because it was more of a function for randomly spawning ground threats. But also the thought that if you spawned a group in a random location and then had it follow its non-random route, the initial random location really wouldn't have much of an impact. Adding it in as an optional variable at the end is pretty straight forward, although I think I'll have to make it create a new first waypoint.

 

You can always use mist.getGroupRoute() on the respawned group as mist.respawnInZone returns a table of group information. Something like...

 

local newGroup = mist.respawnInZone('group1')

mist.goRoute(newGroup.groupName, mist.getGroupRoute(newGroup.groupName, 'true'))

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

thanks :) I would say that thanks to your support I archieved to make mist.getToRandomPoint to work on any group that has a particoular tag in its name (i.e. "MOVE") to a unit defined as an objective point by name (i.e. unit name = "Objective1"), easily customizable. If anyone interested, I'll post the script.

 

PS:

 

mist.getToRandomPoint is a very powerful function IMHO, cause you can combine it with a table group taken randomly and obtain some sort of axis advance by an enemy that is unpredictable at mission start. This, combined with the clone function on several zones and another script by someone else(1) give an enourmous amount of freedom and replayability with minimum effort for the designer.

 

(1): dismount script from MBot.

ChromiumDis.png

Author of DSMC, mod to enable scenario persistency and save updated miz file

Stable version & site: https://dsmcfordcs.wordpress.com/

Openbeta: https://github.com/Chromium18/DSMC

 

The thing is, helicopters are different from planes. An airplane by it's nature wants to fly, and if not interfered with too strongly by unusual events or by a deliberately incompetent pilot, it will fly. A helicopter does not want to fly. It is maintained in the air by a variety of forces in opposition to each other, and if there is any disturbance in this delicate balance the helicopter stops flying; immediately and disastrously.

Link to comment
Share on other sites

Hi Grimes,

 

We tested the mist.respawnGroup (string groupName, boolean/number task)

 

It seems that after the unit respawns, it will not re engage other units but will go through the regular waypoints.

I'm thinking maybe the ROE advanced action that we put into the original one is not passing on to the respawned unit.

 

Is there a way to pass those actions as well? shouldn't the unit engage other units from the other coalition anyway?

 

tested with DCS scripting engine and it works fine.

Link to comment
Share on other sites

Can you attach an example of how you are using it?

 

What type of unit is it? Aircraft, ground unit, helicopter...?

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

We've already altered the mission but what we had is -

 

Fw190D9 spawning with the mission start.

trigger -

1.Switched condition

2.Lua Predicate - if not Group.getByName("FW1") then

return true

end

3. Do script - mist.respawnGroup('FW1', true)

 

the FW that is being respawned has a different skin, and only follows it's WPs without engaging any unit (even if gets shot by a unit, will not respond, only continue throught the WPs).

Link to comment
Share on other sites

Grimes,

 

I had the same problem as Xcom but with DynAdd. The 2nd respawn the planes do not carry out their mission.

In the original post I had included a test mission

 

Thank you Grimes and St3v3f for the effort it is greatly apreciated.

 

I have 2 problems with Dynadd and I don't know if it s a bug or a lack of skill on my part

 

1) I have a group of Su-25T attacking randomly targets one at a time. Once one group is destroyed the Su-25T go back to base and respawn via Dynadd. So far so good. However the 2nd time it looks like the order attack group is not carried out. (Also the destoyed group is not respawning but it s a mistake on my part with the flag).

 

2) every time i exit the mission to go back to the editor DCS crashed. I wonder if it s not due to DynAdd in 1.2.6 (in 1.2.5 with mist 3.1 I had no problem). I tried other missions without Dynadd and there is no crash.

 

Also how do I add mist.schedulefunction with dynadd?

mist.scheduleFunction(dynadd(Group), {101, true}, timer.getTime() + 40)

 

Thank you.

Link to comment
Share on other sites

Thanks, I already had a good guess as to what was going on with it. Everything should be fixed regarding that stuff in 3.2. On a side note, helicopters are weird. Fixed wing aircraft can spawn without a livery_id without problem and will simply chose the first livery for that country. For some reason helicopters, especially the Ka-50, don't do that. I've fixed that issue within mist.

 

That would solve the helicopters being "yellow". :pain:

It is quite a challenge to get the livery_id corectly populated in the new instanciated units, fixing some parts in your code.

Was abroad for a few days. I'll have a look again... :-)

 

Saw the other posts about units not continuing their mission. Know how to fix that one.

 

 

Sven


Edited by FlightControl

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

That would solve the helicopters being "yellow". :pain:

It is quite a challenge to get the livery_id corectly populated in the new instanciated units, fixing some parts in your code.

Was abroad for a few days. I'll have a look again... :-)

 

Saw the other posts about units not continuing their mission. Know how to fix that one.

 

 

Sven

 

YES, YES, YES!!! FOUND IT...

 

c0bw.jpgUploaded with ImageShack.us

 

The livery_id was not populated in the databases (mist.DBs).

As such, added the following code (added code is colored RED bold).

 

in the code to populate the DBs:

 

 
for unit_num, unit_data in pairs(group_data.units) do
          local units_tbl = mist.DBs.units[coa_name][countryName][category][group_num]["units"]  --pointer to the units table for this group

          units_tbl[unit_num] = {}
          units_tbl[unit_num]["unitName"] = unit_data.name
          units_tbl[unit_num]["type"] = unit_data.type
          units_tbl[unit_num]["skill"] = unit_data.skill  --will be nil for statics
          units_tbl[unit_num]["unitId"] = unit_data.unitId
          units_tbl[unit_num]["category"] = category
          units_tbl[unit_num]["coalition"] = coa_name
          units_tbl[unit_num]["country"] = countryName
          units_tbl[unit_num]["countryId"] = cntry_id
          units_tbl[unit_num]["heading"] = unit_data.heading
          units_tbl[unit_num]["playerCanDrive"] = unit_data.playerCanDrive
          units_tbl[unit_num]["alt"] = unit_data.alt
          units_tbl[unit_num]["alt_type"] = unit_data.alt_type
          units_tbl[unit_num]["speed"] = unit_data.speed
          [b][color=red]units_tbl[unit_num]["livery_id"] = unit_data.livery_id[/color][/b]
[b][color=red]         if type(unit_data.livery_id) == 'nil' then[/color][/b]
[b][color=red]         else[/color][/b]
[b][color=red]          env.info(("Livery:"..unit_data.livery_id))[/color][/b]
[b][color=red]         end[/color][/b]
          if unit_data.point then  --ME currently does not work like this, but it might one day
           units_tbl[unit_num]["point"] = unit_data.point
          else
           units_tbl[unit_num]["point"] = {}
           units_tbl[unit_num]["point"]["x"] = unit_data.x
           units_tbl[unit_num]["point"]["y"] = unit_data.y
          end

 

In the code of the function getGroupData:

 

 
mist.getGroupData = function(gpName)
for groupName, groupData in pairs(mist.DBs.groupsByName) do
 if string.lower(groupName) == string.lower(gpName) then
  local newData = {}
  newData.hidden = false -- maybe add this to DBs
  newData.groupId = groupData.groupId
  newData.groupName = groupName
  newData.category = groupData.category
  newData.units = {}

  for unitNum, unitData in pairs(groupData.units) do
   newData.units[unitNum] = {}

   mist.debug.writeData(mist.utils.serialize,{'unitData', unitData}, 'newData'..timer.getAbsTime()..'.txt') 
   newData.units[unitNum]["unitId"] = unitData.unitId
   --newData.units[unitNum]['point'] = unitData.point
   newData.units[unitNum]['x'] = unitData.point.x
   newData.units[unitNum]['y'] = unitData.point.y
   newData.units[unitNum]['alt'] = unitData.alt
   newData.units[unitNum]['alt_type'] = unitData.alt_type
   newData.units[unitNum]['speed'] = unitData.speed
   newData.units[unitNum]["type"] = unitData.type
   newData.units[unitNum]["skill"] = unitData.skill
   newData.units[unitNum]["unitName"] = unitData.unitName
   newData.units[unitNum]["heading"] = unitData.heading -- added to DBs
   newData.units[unitNum]["playerCanDrive"] = unitData.playerCanDrive -- added to DBs

   [color=red][b]if (newData.category == 'plane' or newData.category == 'helicopter') then[/b][/color]
[b][color=red]   newData.units[unitNum].payload = mist.getPayload(unitData.unitName)[/color][/b]
[b][color=red]   newData.units[unitNum]["livery_id"] = unitData.livery_id[/color][/b]
[b][color=red]  end[/color][/b]
  end
  return newData 
 end
end
end

 

Coding the scripts is as much fun as the game itself :beer:

 

And now in search why new spawned units are not executing their mission (pinpointed tasks...).

 

Sv.


Edited by FlightControl

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Grimes,

 

I had the same problem as Xcom but with DynAdd. The 2nd respawn the planes do not carry out their mission.

In the original post I had included a test mission

 

I have found the root cause of the issue. It has to do with that in a group structure, the "task" variable is not set. I have hardcoded the task field in Mist 3.1 to "CAS", and tatataaaa, the units started to engage.

 

Currently finding out how to copy the group task variable... I'll keep you posted.

 

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Grimes,

 

I had the same problem as Xcom but with DynAdd. The 2nd respawn the planes do not carry out their mission.

In the original post I had included a test mission

 

 

Got it fixed in MIST 3.1....

 

The following code needs to be added in MIST 3.1, in the section where the tables are created (indicated RED bold):

 

 
if group_data and group_data.units and type(group_data.units) == 'table' then  --making sure again- this is a valid group
          
         mist.DBs.units[coa_name][countryName][category][group_num] = {}
         mist.DBs.units[coa_name][countryName][category][group_num]["groupName"] = group_data.name
         mist.DBs.units[coa_name][countryName][category][group_num]["groupId"] = group_data.groupId 
         mist.DBs.units[coa_name][countryName][category][group_num]["category"] = category
         mist.DBs.units[coa_name][countryName][category][group_num]["coalition"] = coa_name
         mist.DBs.units[coa_name][countryName][category][group_num]["country"] = countryName
         mist.DBs.units[coa_name][countryName][category][group_num]["countryId"] = cntry_id
         mist.DBs.units[coa_name][countryName][category][group_num]["startTime"] = group_data.start_time
        [color=red][b] mist.DBs.units[coa_name][countryName][category][group_num]["task"] = group_data.task[/b][/color]
         mist.DBs.units[coa_name][countryName][category][group_num]["units"] = {}

 

Now i will try to make these tables complete, because only half of the group and unit fields are copied properly, as comparing with the mission editor.

 

Find my new mist file attached. I'll repost a cleaned-up version after i've added these other fields of the group.

 

Grimes, please consider my changes in MIST 3.2.

 

kind regards,

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

We've already altered the mission but what we had is -

 

Fw190D9 spawning with the mission start.

trigger -

1.Switched condition

2.Lua Predicate - if not Group.getByName("FW1") then

return true

end

3. Do script - mist.respawnGroup('FW1', true)

 

the FW that is being respawned has a different skin, and only follows it's WPs without engaging any unit (even if gets shot by a unit, will not respond, only continue throught the WPs).

 

I fixed all of your issues, check out my latest posts...

 

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

OK, find attached a cleaned-up version of MIST 3.1.

 

I added also the following lines for a group copy:

 

 
 if coa_data.country then --there is a country table
  for cntry_id, cntry_data in pairs(coa_data.country) do
   
   local countryName = string.lower(cntry_data.name)
   mist.DBs.units[coa_name][countryName] = {}
   mist.DBs.units[coa_name][countryName]["countryId"] = cntry_data.id
   if type(cntry_data) == 'table' then  --just making sure
   
    for obj_type_name, obj_type_data in pairs(cntry_data) do
    
     if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then --should be an unncessary check 
      
      local category = obj_type_name
      
      if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then  --there's a group!
      
       mist.DBs.units[coa_name][countryName][category] = {}
       
       for group_num, group_data in pairs(obj_type_data.group) do
        
        if group_data and group_data.units and type(group_data.units) == 'table' then  --making sure again- this is a valid group
          
         mist.DBs.units[coa_name][countryName][category][group_num] = {}
         mist.DBs.units[coa_name][countryName][category][group_num]["groupName"] = group_data.name
         mist.DBs.units[coa_name][countryName][category][group_num]["groupId"] = group_data.groupId 
         mist.DBs.units[coa_name][countryName][category][group_num]["category"] = category
         mist.DBs.units[coa_name][countryName][category][group_num]["coalition"] = coa_name
         mist.DBs.units[coa_name][countryName][category][group_num]["country"] = countryName
         mist.DBs.units[coa_name][countryName][category][group_num]["countryId"] = cntry_id
         mist.DBs.units[coa_name][countryName][category][group_num]["startTime"] = group_data.start_time
[color=red][b]          mist.DBs.units[coa_name][countryName][category][group_num]["task"] = group_data.task
         mist.DBs.units[coa_name][countryName][category][group_num]["communication"] = group_data.communication
         mist.DBs.units[coa_name][countryName][category][group_num]["modulation"] = group_data.modulation
         mist.DBs.units[coa_name][countryName][category][group_num]["frequency"] = group_data.frequency[/b][/color]
         
         mist.DBs.units[coa_name][countryName][category][group_num]["units"] = {}
              
         for unit_num, unit_data in pairs(group_data.units) do
          local units_tbl = mist.DBs.units[coa_name][countryName][category][group_num]["units"]  --pointer to the units table for this group
          
          units_tbl[unit_num] = {}
          units_tbl[unit_num]["unitName"] = unit_data.name
          units_tbl[unit_num]["type"] = unit_data.type
          units_tbl[unit_num]["skill"] = unit_data.skill  --will be nil for statics
          units_tbl[unit_num]["unitId"] = unit_data.unitId
          units_tbl[unit_num]["category"] = category
          units_tbl[unit_num]["coalition"] = coa_name
          units_tbl[unit_num]["country"] = countryName
          units_tbl[unit_num]["countryId"] = cntry_id
          units_tbl[unit_num]["heading"] = unit_data.heading
          units_tbl[unit_num]["playerCanDrive"] = unit_data.playerCanDrive
          units_tbl[unit_num]["alt"] = unit_data.alt
          units_tbl[unit_num]["alt_type"] = unit_data.alt_type
          units_tbl[unit_num]["speed"] = unit_data.speed
          [b][color=red]units_tbl[unit_num]["livery_id"] = unit_data.livery_id[/color][/b]
          if unit_data.point then  --ME currently does not work like this, but it might one day
           units_tbl[unit_num]["point"] = unit_data.point
          else
           units_tbl[unit_num]["point"] = {}
           units_tbl[unit_num]["point"]["x"] = unit_data.x
           units_tbl[unit_num]["point"]["y"] = unit_data.y
          end
          
          
          
          units_tbl[unit_num]["groupName"] = group_data.name
          units_tbl[unit_num]["groupId"] = group_data.groupId
         end --for unit_num, unit_data in pairs(group_data.units) do
        end --if group_data and group_data.units then
       end --for group_num, group_data in pairs(obj_type_data.group) do
      end --if ((type(obj_type_data) == 'table') and obj_type_data.group and (type(obj_type_data.group) == 'table') and (#obj_type_data.group > 0)) then
     end --if obj_type_name == "helicopter" or obj_type_name == "ship" or obj_type_name == "plane" or obj_type_name == "vehicle" or obj_type_name == "static" then
    end --for obj_type_name, obj_type_data in pairs(cntry_data) do
   end --if type(cntry_data) == 'table' then
  end --for cntry_id, cntry_data in pairs(coa_data.country) do
 end --if coa_data.country then --there is a country table
end --if coa_name == 'red' or coa_name == 'blue' and type(coa_data) == 'table' then
end --for coa_name, coa_data in pairs(mission.coalition) do

 

And for getGroupData:

 

mist.getGroupData = function(gpName)
for groupName, groupData in pairs(mist.DBs.groupsByName) do
 if string.lower(groupName) == string.lower(gpName) then
  --mist.debug.writeData(mist.utils.serialize,{'groupData', groupData}, 'groupData.txt') 
  local newData = {}
  newData.hidden = false -- maybe add this to DBs
  newData.groupId = groupData.groupId
  newData.groupName = groupName
  [color=red][b]newData.task = groupData.task -- new
  newData.communication = groupData.communication -- new
  newData.modulation = groupData.modulation -- new
  newData.frequency = groupData.frequency -- new
  newData.category = groupData.category
[/b][/color]   newData.units = {}

  for unitNum, unitData in pairs(groupData.units) do
   newData.units[unitNum] = {}
   
   newData.units[unitNum]["unitId"] = unitData.unitId
   --newData.units[unitNum]['point'] = unitData.point
   newData.units[unitNum]['x'] = unitData.point.x
   newData.units[unitNum]['y'] = unitData.point.y
   newData.units[unitNum]['alt'] = unitData.alt
   newData.units[unitNum]['alt_type'] = unitData.alt_type
   newData.units[unitNum]['speed'] = unitData.speed
   newData.units[unitNum]["type"] = unitData.type
   newData.units[unitNum]["skill"] = unitData.skill
   newData.units[unitNum]["unitName"] = unitData.unitName
   newData.units[unitNum]["heading"] = unitData.heading -- added to DBs
   newData.units[unitNum]["playerCanDrive"] = unitData.playerCanDrive -- added to DBs
[color=red][b]    newData.units[unitNum]["livery_id"] = unitData.livery_id
[/b][/color]    
   if (newData.category == 'plane' or newData.category == 'helicopter') then
    newData.units[unitNum].payload = mist.getPayload(unitData.unitName)
   end
  end
  return newData 
 end
end
end

 

Find my cleaned-up MIST 3.1 file attached. Curious if it solved the issues on your side also :thumbup:

 

Sven

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

Most of it was already fixed in changes I have made for 3.2.

 

I'm kind of annoyed right now that something which acts as a filter for selecting aircraft and the specific tasks those aircraft can fulfill in the mission editor is a required entry to allow the AI to engage targets even if the mission task is added correctly.

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

Sven and Grimes,

 

If you also want to fix the "On Road" bug (making groundunits move on a road doesn't work any more), change the lines:

 

if point.form and not form then

form = point.form

end

 

in mist.ground.buildWP to

 

if point.form and not OverRideForm then

form = point.form

else

form = OverRideForm

end

 

That at least works for me

 

Wolle

[sIGPIC][/sIGPIC]

 

Intel Core I7 4820K @4.3 GHz, Asus P9X79 motherboard, 16 GB RAM @ 933 MHz, NVidia GTX 1070 with 8 GB VRAM, Windows 10 Pro

Link to comment
Share on other sites

Sven,

 

your modification of Mist worked, the planes now do carry over their mission after respawn. However DCS still crash on me when I end the mission.

 

It looks like the log book does not like the fact that a respawned plane had killed a unit. I don t know if it s a case of 2 units getting the same ID or something else.

Link to comment
Share on other sites

Most of it was already fixed in changes I have made for 3.2.

 

I'm kind of annoyed right now that something which acts as a filter for selecting aircraft and the specific tasks those aircraft can fulfill in the mission editor is a required entry to allow the AI to engage targets even if the mission task is added correctly.

 

 

Hi Grimes,

 

At least some of the guys on the forum got helped for a few moments until your new version comes out.

 

On your problem, what is the issue you have exactly? (Hard to understand the English).

 

Sv.

[TABLE][sIGPIC][/sIGPIC]|

[/TABLE]

Link to comment
Share on other sites

I was just complaining that "task" impacted AI behavior when I had previously thought that it didn't. I know back with Lock-on and probably BS1 it had some minor impact on AI behavior, but I thought that was basically removed with A-10C and all it does now was act as a filter within the mission editor to filter down aircraft, payloads, and available waypoint actions that are capable of a given task. I did a test a while back where I tasked AI to perform actions that were not available with its filtered task in the editor. For instance telling a A-10C with a task of "CAS" to do a runway bombing. This was back in 1.2.3 so its possible that it may have changed, but it performed the task as it was told. I'll need to experiment a bit to see if "CAP" aircraft could perform "CAS" missions if told to do so.

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

Mist V3.2

 

Sorry for the delay which was basically caused by GTA5 and me wanting to change how mist.ground.patrol had worked and add mist.ground.patrolRoute... but mostly GTA5. :music_whistling:

 

I'd also like to point out that I am working on some online documentation. What is available so far can be found here: http://wiki.hoggit.us/view/Mission_Scripting_Tools_Documentation

It still has a fair amount of work to go on it, and even some of the pages already created are not complete. I'd like to add proper examples for every function, but getting all basics in there first is a higher priority.

 

Changelog:

- fixed some documentation typos

- added mist.utils.makeVec3GL() returns a vec 3 coordinate at ground level of a given vec2/vec3 coordinate

- added mist.ground.patrol()

- added mist.ground.patrolRoute()

- fixed bug with mist.ground.buildWP not accepting formations. Also some minor organizational changes within the function

- helipad Id is now retrieved on mist.getGroupRoute

- added livery_id to DBs so aircraft dont spawn with default or error skins

- added task to DBs and dynAdd scripts so that AI aircraft will engage targets if respawned

 

The previous statements I've made about adding group manipulation functions have basically been pushed back to the next version.

 

svenvandevelde, I didn't add the communication stuff as all of that is specific to aircraft and I plan on adding a communication specific database that keeps track of callsigns and frequencies used within a mission.

 

 

edit; uploaded a hotfix for 3.2

Mistv3_2.rar


Edited by Grimes

The right man in the wrong place makes all the difference in the world.

Current Projects:  Grayflag ServerScripting Wiki

Useful Links: Mission Scripting Tools MIST-(GitHub) MIST-(Thread)

 SLMOD, Wiki wishlist, Mission Editing Wiki!, Mission Building Forum

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...