J'avais un script dans le genre il y a un bout de temps, je le met ici au cas où tu trouverais quelque chose d'intéressant.
CODE
in_zone = {}
mig_chance = 10
mig_in_flight = false
spawned_red_units = {}
spawned_blue_units = {}
group_counter = 500
unit_counter = 500
add = 10
mult = 10
main_zone = trigger.misc.getZone("MainZone")
blue_units_in_main_zone = {}
init = false
score = 0
pending_score = 0
fac = {
["x"] = nil,
["y"] = nil,
["init"] = false,
["delay"] = 30,
["counter"] = 1,
["name"] = "FAC",
}
huey_max_loadout = 12
hueys = {
["Huey #1"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #2"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #3"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #4"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #5"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #6"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #7"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
["Huey #8"] = {
["loaded"] = false,
["has_radio_command"] = false,
},
}
blue_ground_groups = {
["anti_tank_humvee"] = {
[1] = "M1045 HMMWV TOW",
[2] = "M1045 HMMWV TOW",
},
["stryker_missile"] = {
[1] = "M1134 Stryker ATGM",
},
["stryker_canon"] = {
[1] = "M1128 Stryker MGS",
},
["mortar"] = {
[1] = "2B11 mortar",
[2] = "2B11 mortar",
[3] = "2B11 mortar",
[4] = "2B11 mortar",
[5] = "2B11 mortar",
[6] = "Soldier M4",
[7] = "Soldier M4",
[8] = "Soldier M4",
},
}
blue_flyable_units = {
["A-10C"] = {
["count"] = 0,
["force"] = 5,
},
["Ka-50"] = {
["count"] = 0,
["force"] = 5,
},
["UH-1H"] = {
["count"] = 0,
["force"] = 1,
},
["P-51D"] = {
["count"] = 0,
["force"] = 0,
},
["total"] = 0,
}
red_units = {
[1] = {
["name"] = "BMP-3",
["force"] = 5,
},
[2] = {
["name"] = "BTR-80",
["force"] = 3,
},
[3] = {
["name"] = "T-55",
["force"] = 2,
},
[4] = {
["name"] = "Ural-375 PBU",
["force"] = 1,
},
[5] = {
["name"] = "T-80UD",
["force"] = 4,
},
[6] = {
["name"] = "Ural-375 ZU-23",
["force"] = 5
},
[7] = {
["name"] = "ZSU-23-4 Shilka",
["force"] = 6,
},
[8] = {
["name"] = "Strela-1 9P31",
["force"] = 8,
},
[9] = {
["name"] = "SAU Gvozdika",
["force"] = 3,
},
}
zones = {
["pickup"] = {
[1] = {
["name"] = "FARP1",
["smoke_color"] = trigger.smokeColor.Blue,
},
[2] = {
["name"] = "FARP2",
["smoke_color"] = trigger.smokeColor.Blue,
},
},
["mig"] = {
[1] = "MIG1",
[2] = "MIG2",
},
["red_spawn"] = {
[1] = {
["name"] = "N",
},
[2] = {
["name"] = "NE",
},
[3] = {
["name"] = "E",
},
[4] = {
["name"] = "SE",
},
[5] = {
["name"] = "S",
},
[6] = {
["name"] = "SW",
},
[7] = {
["name"] = "W",
},
[8] = {
["name"] = "NW",
},
},
}
function spawn_mig()
group_counter = group_counter + 1
unit_counter = unit_counter + 1
local sel = math.random(2)
local mig_name = "Mig" .. unit_counter
local start_zone = nil
local dest_zone = nil
if sel == 1 then
start_zone = trigger.misc.getZone(zones["mig"][1])
dest_zone = trigger.misc.getZone(zones["mig"][2])
else
start_zone = trigger.misc.getZone(zones["mig"][2])
dest_zone = trigger.misc.getZone(zones["mig"][1])
end
env.info("spawn_mig 9")
local group = {
["modulation"] = 0,
["tasks"] =
{
}, -- end of ["tasks"]
["task"] = "CAP",
["uncontrolled"] = false,
["route"] =
{
["points"] =
{
[1] =
{
["alt"] = 20000,
["type"] = "Turning Point",
["action"] = "Turning Point",
["alt_type"] = "BARO",
["formation_template"] = "",
["properties"] =
{
["vnav"] = 1,
["scale"] = 0,
["angle"] = 0,
["vangle"] = 0,
["steer"] = 2,
}, -- end of ["properties"]
["ETA"] = 0,
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["speed"] = 138.88888888889,
["ETA_locked"] = true,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
[1] =
{
["enabled"] = true,
["auto"] = true,
["id"] = "EngageTargets",
["number"] = 1,
["key"] = "CAP",
["params"] =
{
["targetTypes"] =
{
[1] = "Air",
}, -- end of ["targetTypes"]
["priority"] = 0,
}, -- end of ["params"]
}, -- end of [1]
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = true,
}, -- end of [1]
[2] =
{
["alt"] = 2000,
["type"] = "Turning Point",
["action"] = "Turning Point",
["alt_type"] = "BARO",
["formation_template"] = "",
["properties"] =
{
["vnav"] = 1,
["scale"] = 0,
["angle"] = 0,
["vangle"] = 0,
["steer"] = 2,
}, -- end of ["properties"]
["ETA"] = 303.9621922784,
["y"] = dest_zone.point.z,
["x"] = -dest_zone.point.x,
["speed"] = 138.88888888889,
["ETA_locked"] = false,
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = false,
}, -- end of [2]
}, -- end of ["points"]
}, -- end of ["route"]
["groupId"] = group_counter,
["hidden"] = false,
["units"] =
{
[1] =
{
["alt"] = 2000,
["heading"] = 1.316297268452,
["callsign"] = 101,
["psi"] = -1.316297268452,
["livery_id"] = "120 gviap #45 domna ab",
["onboard_num"] = "11",
["type"] = "MiG-29A",
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["name"] = mig_name,
["payload"] =
{
["pylons"] =
{
[1] =
{
["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}",
}, -- end of [1]
[7] =
{
["CLSID"] = "{682A481F-0CB5-4693-A382-D00DD4A156D7}",
}, -- end of [7]
}, -- end of ["pylons"]
["fuel"] = "3380",
["flare"] = 30,
["chaff"] = 30,
["gun"] = 100,
}, -- end of ["payload"]
["speed"] = 138.88888888889,
["unitId"] = unit_counter,
["alt_type"] = "BARO",
["skill"] = "Average",
}, -- end of [1]
}, -- end of ["units"]
["y"] = start_zone.point.z,
["x"] = start_zone.point.x,
["name"] = "MIG group" .. group_counter,
["communication"] = true,
["start_time"] = 0,
["frequency"] = 124,
}
coalition.addGroup(country.id.RUSSIA, Group.Category.AIRPLANE, group)
trigger.action.outText("ALERTE ALERTE ALERTE ALERTE\nMig 29 en approche, je répète, Mig29 en approche !\n\nLes pleutres, planquez-vous !\n\nLes autres, TAIAU !!!\n(il vaut 100 points, le bougre, une fois, hein !)", 15)
mig_in_flight = mig_name
timer.scheduleFunction(destroy_mig, nil, timer.getTime() + 300)
end
function destroy_mig()
local unit = Unit.getByName(mig_in_flight)
if unit then
unit:destroy()
trigger.action.outText("Le Mig est parti, fin de menace !!!", 15)
mig_in_flight = false
return
end
trigger.action.outText("Wow, vous avez réussi à descendre le Mig ??? Joliiiiiii !!! Score + 100", 15)
score = score + 100
end
function build_group(args, new_unit_func)
group_counter = group_counter + 1
-- args = {
-- ["name"] = "example",
-- ["x"] = x,
-- ["y"] = y,
-- ["dest"] = nil,
-- ["units"] = {
-- [1] = "unit1",
-- [2] = "unit2",
-- [3] = "unit3",
-- [4] = "unit4"
-- },
-- }
local group = {
["manualHeading"] = false,
["visible"] = false,
["taskSelected"] = true,
["groupId"] = group_counter,
["hidden"] = false,
["units"] = {},
["y"] = args["y"],
["x"] = args["x"],
["name"] = args["name"] .. group_counter,
["start_time"] = 0,
["task"] = "Ground Nothing",
["route"] = {
["points"] =
{
[1] =
{
["alt"] = 41,
["type"] = "Turning Point",
["ETA"] = 0,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = args["y"],
["x"] = args["x"],
["ETA_locked"] = true,
["speed"] = 5.5555555555556,
["action"] = "On Road",
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
},
},
},
["speed_locked"] = false,
},
},
},
}
if args["dest"] ~= nil then
local dest = {
["alt"] = 54,
["type"] = "Turning Point",
["ETA"] = 52.09716824195,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = args["dest"]["y"],
["x"] = args["dest"]["x"],
["ETA_locked"] = false,
["speed"] = 5.1,
["action"] = "On Road",
["speed_locked"] = false,
["task"] = {
["id"] = "ComboTask",
["params"] = {
["tasks"] = {},
},
},
}
table.insert(group["route"]["points"], dest)
end
local units = args["units"]
for i=1,#units do
local angle = math.pi * 2 * (i-1) / #units
local xofs = math.cos(angle) * 40
local yofs = math.sin(angle) * 40
table.insert(group["units"], new_unit_func(args["x"] + xofs, args["y"] + yofs, units[i], angle))
end
return group
end
function select_random_in_table(table)
return table[math.random( #table )]["name"]
end
function select_zone()
local sel = math.random( #spawn_zones )
local zone_name = spawn_zones[sel]
return zone_name
end
function get_distance(x1, y1, x2, y2)
return math.sqrt(math.pow(x1-x2,2) + math.pow(y1-y2,2))
end
function red_units_in_main_zone()
local tbl = spawned_red_units
if #tbl > 0 then
for i=1,#tbl do
local unit_name = tbl[i]
local unit = Unit.getByName(tbl[i])
if unit then
local unit_life = unit:getLife()
if unit_life > 1 then
return true
end
end
end
end
score = score + pending_score
return false
end
function new_red_unit(x, y, unit_type)
local unit_name = "EnemyUnit" .. unit_counter
table.insert(spawned_red_units, unit_name)
return new_unit(x, y, unit_type, unit_name)
end
function new_blue_unit(x, y, unit_type)
local unit_name = "FriendlyUnit" .. unit_counter
table.insert(spawned_blue_units, unit_name)
local unit = new_unit(x, y, unit_type, unit_name)
unit["playerCanDrive"] = true
return unit
end
function new_unit(x, y, unit_type, unit_name, heading)
local unit = {
["y"] = y,
["type"] = unit_type,
["name"] = unit_name,
["unitId"] = unit_counter,
["heading"] = heading,
["playerCanDrive"] = false,
["skill"] = "Average",
["x"] = x,
}
unit_counter = unit_counter + 1
return unit
end
function spawn_red_group()
local zone_name = select_random_in_table(zones["red_spawn"])
local zone = trigger.misc.getZone(zone_name)
local left_to_assign = 0
for k, v in pairs(blue_flyable_units) do
if not string.match(k, "total") then
if v["count"] > 0 then
if v["force"] > 0 then
left_to_assign = add + left_to_assign + v["force"] * v["count"]
end
end
end
end
if left_to_assign == 0 then
return
end
local difficulty = left_to_assign
local units = {}
local sel = nil
while left_to_assign > 0 do
sel = math.random( #red_units )
if red_units[sel]["force"] <= left_to_assign then
table.insert(units, red_units[sel]["name"])
left_to_assign = left_to_assign - red_units[sel]["force"]
end
end
if #units > 0 then
local args = {
["name"] = "Enemy_group",
["x"] = zone.point.x,
["y"] = zone.point.z,
["dest"] = {
["x"] = main_zone.point.x,
["y"] = main_zone.point.z,
},
["units"] = units,
}
coalition.addGroup(country.id.RUSSIA, Group.Category.GROUND, build_group(args, new_red_unit))
add = add + mult
trigger.action.outText(string.format("Un nouveau groupe d'ennemis vient d'apparaître !\nDirection: %s\nDifficulté: %d\nScore de l'équipe bleue jusqu'ici: %d", zone_name, difficulty, score), 15)
spawn_smoke(zone.point.x, zone.point.z, trigger.smokeColor.Red)
-- score = score + difficulty
pending_score = difficulty
end
return nil
end
function spawn_fac(arg)
group_counter = group_counter + 1
unit_counter = unit_counter + 1
fac["init"] = false
trigger.action.outText("Réapparition d'un nouveau FAC", 15)
local x = arg["x"]
local y = arg["y"]
local group = {
["manualHeading"] = false,
["taskSelected"] = true,
["route"] =
{
["points"] =
{
[1] =
{
["alt"] = 922,
["type"] = "Turning Point",
["ETA"] = 0,
["alt_type"] = "BARO",
["formation_template"] = "",
["y"] = y,
["x"] = x,
["ETA_locked"] = true,
["speed"] = 5.5555555555556,
["action"] = "Off Road",
["task"] =
{
["id"] = "ComboTask",
["params"] =
{
["tasks"] =
{
}, -- end of ["tasks"]
}, -- end of ["params"]
}, -- end of ["task"]
["speed_locked"] = true,
}, -- end of [1]
}, -- end of ["points"]
}, -- end of ["route"]
["groupId"] = group_counter,
["tasks"] =
{
}, -- end of ["tasks"]
["hidden"] = false,
["units"] =
{
[1] =
{
["y"] = y,
["type"] = "M-1 Abrams",
["name"] = fac["name"],
["unitId"] = unit_counter,
["heading"] = 3.1415926535898,
["playerCanDrive"] = true,
["skill"] = "Excellent",
["x"] = x,
}, -- end of [1]
}, -- end of ["units"]
["y"] = y,
["x"] = x,
["name"] = fac["name"],
["visible"] = false,
["start_time"] = 0,
["task"] = "Ground Nothing",
}
coalition.addGroup(country.id.USA, Group.Category.GROUND, group)
return nil
end
function huey_in_pickup_zone(unit)
for i=1,#zones["pickup"] do
local trigger_zone = trigger.misc.getZone(zones["pickup"][i]["name"])
if unit_is_in_trigger_zone(unit, trigger_zone) then
return trigger_zone
end
end
return nil
end
function huey_load(args)
local huey_name = args["name"]
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
local units_loaded = ""
if huey_in_pickup_zone(unit) then
local group_to_load = args["group_to_load"]
if hueys[huey_name]["loaded"] == false then
hueys[huey_name]["loaded"] = {}
for i=1,#group_to_load do
table.insert(hueys[huey_name]["loaded"], group_to_load[i])
units_loaded = string.format("%s\n%s", units_loaded, group_to_load[i])
end
trigger.action.outText(string.format("%s a chargé des troupes, une fois, hein !%s", player_name, units_loaded), 5)
return
end
trigger.action.outText(string.format("%s, tu as déjà chargé des troupes, une fois, hein !", player_name), 5)
return
end
trigger.action.outText(string.format("%s, tu n'es pas dans une zone de chargement, une fois, hein !", player_name), 5)
end
function huey_load_close_units(huey_name)
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
if hueys[huey_name]["loaded"] ~= false then
trigger.action.outText(string.format("%s, tu as déjà chargé des troupes, une fois, hein !", player_name), 5)
return
end
local tbl = spawned_blue_units
local loaded_units = false
if #tbl > 0 then
for i=1,#tbl do
local ground_unit_name = tbl[i]
local ground_unit = Unit.getByName(tbl[i])
if ground_unit then
local ground_unit_pos = ground_unit:getPoint()
local huey_pos = unit:getPoint()
if get_distance(huey_pos.x, huey_pos.z, ground_unit_pos.x, ground_unit_pos.z) <= 60 then
if hueys[huey_name]["loaded"] == false then
hueys[huey_name]["loaded"] = {}
end
table.insert(hueys[huey_name]["loaded"], ground_unit:getTypeName())
ground_unit:destroy()
if loaded_units == false then
loaded_units = 1
end
loaded_units = loaded_units + 1
end
end
end
end
if loaded_units and loaded_units > 0 then
trigger.action.outText(string.format("%s a récupéré %d unités sur le champ de bataille, une fois, hein", player_name, loaded_units - 1), 5)
return
end
trigger.action.outText(string.format("%s: désolé, pas d'unités amies à proxmité, une fois, hein", player_name), 5)
end
function huey_unload(huey_name)
local unit = Unit.getByName(huey_name)
local player_name = unit:getPlayerName()
local pos = unit:getPoint()
if unit:inAir() then
trigger.action.outText(string.format("%s vient d'essayer de balancer ses passagers par la fenêtre, une fois, hein !", player_name), 5)
return
end
if hueys[huey_name]["loaded"] == false then
trigger.action.outText(string.format("%s, tu n'as pas chargé des troupes, une fois, hein !", player_name), 5)
return
end
local args = {
["name"] = "FriendlyGroup",
["x"] = pos.x,
["y"] = pos.z,
["dest"] = nil,
["units"] = hueys[huey_name]["loaded"],
}
coalition.addGroup(country.id.USA, Group.Category.GROUND, build_group(args, new_blue_unit))
trigger.action.outText(string.format("%s a déchargé ses troupes, une fois, hein !", player_name), 5)
hueys[huey_name]["loaded"] = false
end
function unit_is_in_trigger_zone(unit, trigger_zone)
local unitpos = unit:getPoint()
return get_distance(unitpos.x, unitpos.z, trigger_zone.point.x, trigger_zone.point.z) < trigger_zone.radius
end
function spawn_smoke(smoke_x, smoke_y, smoke_color)
trigger.action.smoke({x=smoke_x, y=land.getHeight({ x = smoke_x, y = smoke_y }), z=smoke_y}, smoke_color)
end
function show_score()
trigger.action.outText(string.format("Score: %s", score), 5)
end
function smoke_timer(arg, time)
for i=1,#zones["pickup"] do
local zone = trigger.misc.getZone(zones["pickup"][i]["name"])
spawn_smoke(zone.point.x, zone.point.z, zones["pickup"][i]["smoke_color"])
end
return time + 270
end
function check_red(arg, time)
if not red_units_in_main_zone() then
spawn_red_group()
end
return time + 5
end
function count_blue_in_main_zone(arg, time)
blue_flyable_units["total"] = 0
blue_flyable_units["A-10C"]["count"] = 0
blue_flyable_units["Ka-50"]["count"] = 0
blue_flyable_units["UH-1H"]["count"] = 0
blue_flyable_units["P-51D"]["count"] = 0
for k, v in pairs(mist.DBs.humansByName) do
local this_unit = Unit.getByName(k)
if this_unit ~= nil then
local player = this_unit:getPlayerName()
if unit_is_in_trigger_zone(this_unit, main_zone) then
blue_flyable_units["total"] = blue_flyable_units["total"] + 1
blue_flyable_units[v["type"]]["count"] = blue_flyable_units[v["type"]]["count"] + 1
if in_zone[player] ~= true then
trigger.action.outText(string.format("%s vient d'entrer dans la zone avec son %s, une fois, hein", player, v["type"]), 5)
in_zone[player] = true
end
else
if in_zone[player] == true then
trigger.action.outText(string.format("%s vient de sortir de la zone, une fois, hein", player), 5)
in_zone[player] = false
end
end
end
end
return time + 5
end
function do_fac(arg, time) -- hmm, do him ! =p
local fac_unit = Unit.getByName(fac["name"])
if fac_unit == nil and not fac["init"] then
fac["init"] = true
fac["name"] = "FAC" .. fac["counter"]
fac["counter"] = fac["counter"] + 1
local args = {}
args["x"] = fac["x"] + 50
args["y"] = fac["y"]
trigger.action.outText(string.format("Le FAC a été détruit. Réapparation d'un nouveau FAC dans %d secondes, une fois, hein", fac["delay"]), 15)
timer.scheduleFunction(spawn_fac, args, timer.getTime() + fac["delay"])
else
if fac_unit ~= nil then
local fac_pos = fac_unit:getPoint()
fac["x"] = fac_pos.x
fac["y"] = fac_pos.z
end
end
return time + 5
end
function huey_add_radio_commands(arg, time)
for k,v in pairs(hueys) do
if hueys[k]["has_radio_command"] == false then
local unit = Unit.getByName(k)
if unit ~= nil then
local group = unit:getGroup()
if group ~= nil then
local gid = group:getID()
-- local path_1 = missionCommands.addSubMenu("Charger un nouveau groupe", nil)
missionCommands.addCommandForGroup(gid, "Charger un HMMVV anti-chars", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["anti_tank_humvee"],})
missionCommands.addCommandForGroup(gid, "Charger un Stryker missile", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["stryker_missile"],})
missionCommands.addCommandForGroup(gid, "Charger un Stryker canon", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["stryker_canon"],})
missionCommands.addCommandForGroup(gid, "Charger un groupe mortier", nil, huey_load, {["name"] = k, ["group_to_load"] = blue_ground_groups["mortar"],})
missionCommands.addCommandForGroup(gid, "Décharger les troupes", nil, huey_unload, k)
missionCommands.addCommandForGroup(gid, "Charger les unités proches", nil, huey_load_close_units, k)
missionCommands.addCommandForGroup(gid, "Afficher le score", nil, show_score, nil)
hueys[k]["has_radio_command"] = true
end
end
end
end
return time + 5
end
function check_mig(arg, time)
if mig_in_flight ~= false then
return
end
local sel = math.random(100)
if sel <= mig_chance then
spawn_mig()
end
return time + 300
end
do
timer.scheduleFunction(count_blue_in_main_zone, nil, timer.getTime() + 5)
timer.scheduleFunction(check_red, nil, timer.getTime() + 12)
timer.scheduleFunction(do_fac, nil, timer.getTime() + 8)
timer.scheduleFunction(huey_add_radio_commands, nil, timer.getTime() + 9)
timer.scheduleFunction(smoke_timer, nil, timer.getTime() + 11)
timer.scheduleFunction(check_mig, nil, timer.getTime() + 300)
end
En gros, tu définis une grosse zone sur la carte, et des points de spawn pour les ennemis. Au fur et à mesure que les bleus rentrent dans la zone, des troupes ennemies apparaissent aléatoirement (tu définis les points de spawn au moyen de zones également). Le type et la quantité d'ennemis dépend du nombre et du type de troupes bleues dans la zone principale. 1 Huey fera apparaître moins d'ennemis que 4 A10, par exemple.
Chaque fois qu'un groupe ennemi est détruit, le score bleu augmente, et un nouveau groupe apparaît un peu après. Aussi, au plus la mission avance (au plus le score bleu grimpe), au plus il y a d'ennemis.
Je le met ici parce que j'avais créé une mécanique permettant aux Huey de choisir ce qu'ils voulaient embarquer. Tu leur définis une ou plusieurs zones dans lesquelles ils peuvent aller chercher des troupes, ils choisissent ce qu'ils veulent (mortier, infanterie, stryker ( ^^ ), etc ...) via menu radio. Ensuite, ils vont les déposer où il veulent, et ils peuvent même les ré-embarquer de n'importe où sur le champ de bataille pour peu qu'ils se posent à côté.
Le contrôle CA est activé par défaut, donc tout le monde peut prendre le contrôle des zigotos au sol.
Il y a encore quelques autres fonctions, mais la comme ça j'ai oublié, de toute façon tout est dans le code =)
Ah, et les "une fois, hein", quelqu'un m'avait dit que la mission ne faisait pas assez "belge" ... =D
EDIT: en relisant le début du code, je me rappelle que j'ai viré les fantassins, ils ne servaient pas à grand chose =s
EDIT2: j'ai oublié de préciser que le script utilise Mist