Advertisement
Janne252

COH2 Spectator Mode script

Feb 28th, 2014
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 22.00 KB | None | 0 0
  1. function OnInitID()
  2.     squads_german = {
  3.         {sbp = SBP.GERMAN.ASSAULT_GRENADIER_SQUAD_MP, name="Assault Grenadier Squad"},
  4.         {sbp = SBP.GERMAN.GRENADIER_SQUAD_MP, name="Grenadier Squad"},
  5.         {sbp = SBP.GERMAN.MG42_HEAVY_MACHINE_GUN_SQUAD_MP, name="HMG42 Squad"},
  6.         {sbp = SBP.GERMAN.MORTAR_TEAM_81MM_MP, name="Mortar Squad"},
  7.         {sbp = SBP.GERMAN.PANZER_GRENADIER_SQUAD_MP, name="Panzer Grenadier Squad"},
  8.         {sbp = SBP.GERMAN.PIONEER_SQUAD_MP, name="Pioneer Squad"},
  9.         {sbp = SBP.GERMAN.SNIPER_SQUAD_MP, name="Sniper Squad"},
  10.         {sbp = SBP.GERMAN.PAK40_75MM_AT_GUN_SQUAD_MP, name="Pak40 AT-Gun Squad"},
  11.         {sbp = SBP.GERMAN.BRUMMBAR_SQUAD_MP, name="Brummbär Squad"},
  12.         {sbp = SBP.GERMAN.SDKFZ_251_HALFTRACK_SQUAD_MP, name="Halftrack Squad"},
  13.         {sbp = SBP.GERMAN.OSTWIND_SQUAD_MP, name="Ostwind Squad"},
  14.         {sbp = SBP.GERMAN.PANTHER_SQUAD_MP, name="Panther Squad"},
  15.         {sbp = SBP.GERMAN.PANZERWERFER_SQUAD_MP, name="Panzerwerfer Squad"},
  16.         {sbp = SBP.GERMAN.PANZER_IV_SQUAD_MP, name="Panzer IV Squad"},
  17.         {sbp = SBP.GERMAN.SCOUTCAR_SDKFZ222_MP, name="Scout Car Squad"},
  18.     }
  19.     squads_soviet = {
  20.         {sbp = SBP.SOVIET.COMBAT_ENGINEER_SQUAD_MP, name="Combat Engineer Squad"},
  21.         {sbp = SBP.SOVIET.BASE_CONSCRIPT_SQUAD_MP, name="Conscript Squad"},
  22.         {sbp = SBP.SOVIET.CONSCRIPT_SQUAD_MP, name="Conscript Squad"},
  23.         {sbp = SBP.SOVIET.DSHK_38_HMG_SQUAD_MP, name="DSHK HMG Squad"},
  24.         {sbp = SBP.SOVIET.M1910_MAXIM_HEAVY_MACHINE_GUN_SQUAD_MP, name="Maxim Squad"},
  25.         {sbp = SBP.SOVIET.PM_82_41_MORTAR_SQUAD_MP, name="Mortar Squad"},
  26.         {sbp = SBP.SOVIET.SNIPER_TEAM_MP, name="Sniper Squad"},
  27.         {sbp = SBP.SOVIET.PENAL_BATTALION_MP, name="Penal Squad"},
  28.         {sbp = SBP.SOVIET.M3A1_SCOUT_CAR_SQUAD_MP, name="M3A1 Scout Car Squad"},
  29.         {sbp = SBP.SOVIET.M5_HALFTRACK_SQUAD_MP, name="M5 Halftrack Squad"},
  30.         {sbp = SBP.SOVIET.M1937_53_K_45MM_AT_GUN_SQUAD_MP, name="45mm AT-Gun Squad"},
  31.         {sbp = SBP.SOVIET.M1942_ZIS_3_76MM_AT_GUN_SQUAD_MP, name="ZiS AT-Gun Squad"},
  32.         {sbp = SBP.SOVIET.SU_76M_MP, name="SU-76 Squad"},
  33.         {sbp = SBP.SOVIET.SU_85_MP, name="SU-85 Squad"},
  34.         {sbp = SBP.SOVIET.T_70M_MP, name="T-70 Squad"},
  35.         {sbp = SBP.SOVIET.T_34_76_SQUAD_MP, name="T-34 Squad"},
  36.     }
  37.     filters = {EBP.GERMAN.BEREICH_FESTUNG_MP, EBP.GERMAN.DOLCH_AKTIONEN_MP, EBP.GERMAN.HINTERE_PANZERWERK_MP, EBP.GERMAN.SCHWERES_KRIEGSWERK_MP, EBP.GERMAN.GERMAN_HQ_MP, EBP.SOVIET.BARRACKS_MP, EBP.SOVIET.MOTORPOOL_MP, EBP.SOVIET.TANK_DEPOT_MP, EBP.SOVIET.WEAPON_SUPPORT_CENTER_MP, EBP.SOVIET.HQ_MP,}
  38.  
  39.     g_german_commanders = {
  40.         {
  41.             upgrades = {
  42.                 "armor_commander","panzer_tactician","stuka_close_air_support","recon_plane","fast_march",
  43.             },
  44.             commander_title = "Blitzkrieg Doctrine",
  45.         },
  46.         {
  47.             upgrades = {
  48.                 "fast_march","light_artillery_support","stuka_fragmentation_bomb","assault_field_officer","relief_infantry",
  49.             },
  50.             commander_title = "German Infantry Doctrine",
  51.         },
  52.         {
  53.             upgrades = {
  54.                 "armor_commander","stuka_smoke_bomb","mechanized_grenadier_group","stationary_los_gain","howitzer_105mm_emplacement",
  55.             },
  56.             commander_title = "German Mechanized Doctrine",
  57.         },
  58.         {
  59.             upgrades = {
  60.                 "aerial_superiority_recon_plane","aerial_superiority_stuka_strafe","aerial_superiority_stuka_close_air_support","redistribute_resources","stuka_bombing_run_upgrade",
  61.             },
  62.             commander_title = "Close Air Support Doctrine",
  63.         },
  64.         {
  65.             upgrades = {
  66.                 "supply_truck_lockdown","assault_field_officer","stuka_strafe","tiger_tank","stuka_fragmentation_bomb",
  67.             },
  68.             commander_title = "Assault Support Doctrine",
  69.         },
  70.         {
  71.             upgrades = {
  72.                 "panzer_tactician","pak_43_emplacement","armor_commander","hull_down","railway_artillery_support",
  73.             },
  74.             commander_title = "Festung Armor Doctrine",
  75.         },
  76.         {
  77.             upgrades = {
  78.                 "stuka_smoke_bomb","mortar_halftrack","relief_infantry","sector_artillery","howitzer_105mm_emplacement",
  79.             },
  80.             commander_title = "Festung Support Doctrine",
  81.         },
  82.         {
  83.             upgrades = {
  84.                 "panzer_tactician","hull_down","elefant_unlock","armor_commander","recon_plane",
  85.             },
  86.             commander_title = "Fortified Armor Doctrine",
  87.         },
  88.         {
  89.             upgrades = {
  90.                 "air_drop_medical_supplies","air_drop_resources","recon_plane","stuka_flame_strike","stuka_bombing_run_upgrade",
  91.             },
  92.             commander_title = "Luftwaffe Supply Doctrine",
  93.         },
  94.         {
  95.             upgrades = {
  96.                 "sector_artillery","hull_down","trench","pak_43_emplacement","defensive_fortifications",
  97.             },
  98.             commander_title = "Defensive Doctrine (Community)",
  99.         },
  100.         {
  101.             upgrades = {
  102.                 "troop_training","jaeger_light_infantry","panzer_tactician","tiger_tank_ace","blinding_grenades",
  103.             },
  104.             commander_title = "Elite Troops Doctrine",
  105.         },
  106.         {
  107.             upgrades = {
  108.                 "breakthrough","supply_break","sprint","crush_the_pocket","stormtroopers",
  109.             },
  110.             commander_title = "Encirclement Doctrine",
  111.         },
  112.         {
  113.             upgrades = {
  114.                 "tiger_tank","light_artillery_support","stug_short_barrel","assault_grenadiers","mechanized_group",
  115.             },
  116.             commander_title = "Mechanized Assault Doctrine",
  117.         },
  118.         {
  119.             upgrades = {
  120.                 "railway_artillery_support","assault_field_officer","redistribute_resources","ostruppen","trench",
  121.             },
  122.             commander_title = "Osttruppen Doctrine",
  123.         },
  124.         {
  125.             upgrades = {
  126.                 "urban_assault_panzer_grenadiers","forward_repair_station","munition_blitz","mortar_incendiary_barrage","strategic_bombing",
  127.             },
  128.             commander_title = "Urban Assault Doctrine",
  129.         },
  130.         {
  131.             upgrades = {
  132.                 "heavy_at_mine","recon_plane","stationary_los_gain","stuka_bombing_run_upgrade","elefant_unlock",
  133.             },
  134.             commander_title = "Jaeger Armor Doctrine",
  135.         },
  136.         {
  137.             upgrades = {
  138.                 "ambush_camouflage","stuka_close_air_support","jaeger_light_infantry","fast_march","light_artillery_support",
  139.             },
  140.             commander_title = "Jaeger Infantry Doctrine",
  141.         },
  142.         {
  143.             upgrades = {
  144.                 "recon_plane","pak_43_emplacement","light_artillery_support","assault_field_officer","howitzer_105mm_emplacement",
  145.             },
  146.             commander_title = "Joint Operations Doctrine",
  147.         },
  148.         {
  149.             upgrades = {
  150.                 "stuka_close_air_support","jaeger_light_infantry","fast_march","relief_infantry","tiger_tank",
  151.             },
  152.             commander_title = "Lightning War Doctrine",
  153.         },
  154.         {
  155.             upgrades = {
  156.                 "panzer_tactician","mortar_halftrack","recon_plane","tiger_tank","stuka_fragmentation_bomb",
  157.             },
  158.             commander_title = "Spearhead Doctrine",
  159.         },
  160.         {
  161.             upgrades = {
  162.                 "ambush_camouflage","heavy_at_mine","fast_march","stuka_bombing_run_upgrade","howitzer_105mm_emplacement",
  163.             },
  164.             commander_title = "Storm Doctrine",
  165.         },
  166.     }
  167.     g_soviet_commanders = {
  168.         {
  169.             upgrades = {
  170.                 "ml_20_howitzer_unlock","il-2_bomb_strike","il-2_recon","anti_tank_gun_ambush_tactics","guard_troops",
  171.             },
  172.             commander_title = "Soviet Combined Arms Army",
  173.         },
  174.         {
  175.             upgrades = {
  176.                 "ml_20_howitzer_unlock","conscript_assault_package","partisan_troops_tow","rapid_conscription","conscript_repair_kit",
  177.             },
  178.             commander_title = "Soviet Reserve Army",
  179.         },
  180.         {
  181.             upgrades = {
  182.                 "shock_troops","ml_20_howitzer_unlock","il-2_sturmovik_attack","conscript_assault_package","hm120_mortar_unlock",
  183.             },
  184.             commander_title = "Soviet Shock Army",
  185.         },
  186.         {
  187.             upgrades = {
  188.                 "t34_85_advanced_unlock","radio_intercept","il-2_sturmovik_attack_advanced","conscript_assault_package","conscript_repair_kit",
  189.             },
  190.             commander_title = "Advanced Warfare Tactics",
  191.         },
  192.         {
  193.             upgrades = {
  194.                 "shock_troops","il-2_recon","fire_artillery","fear_propaganda","kv-8_unlock",
  195.             },
  196.             commander_title = "Anti-Infantry Tactics",
  197.         },
  198.         {
  199.             upgrades = {
  200.                 "conscript_evasive_tactics","conscript_repair_kit","conscript_assault_package","rapid_conscription","fire_artillery",
  201.             },
  202.             commander_title = "Conscripts Support Tactics",
  203.         },
  204.         {
  205.             upgrades = {
  206.                 "guard_troops","hm120_mortar_unlock","mark_vehicle","t34_85_unlock","vehicle_self_repair_training",
  207.             },
  208.             commander_title = "Guard Motor Coordination Tactics",
  209.         },
  210.         {
  211.             upgrades = {
  212.                 "guard_troops","conscript_evasive_tactics","conscript_assault_package","il-2_sturmovik_attack","ml_20_howitzer_unlock",
  213.             },
  214.             commander_title = "Guard Rifle Combined Arms Tactics",
  215.         },
  216.         {
  217.             upgrades = {
  218.                 "guard_troops","anti_tank_gun_ambush_tactics","mark_vehicle","il-2_bomb_strike","isu152_unlock",
  219.             },
  220.             commander_title = "Mechanized Support Tactics",
  221.         },
  222.         {
  223.             upgrades = {
  224.                 "il-2_recon","fear_propaganda","rapid_conscription","radio_intercept","il-2_sturmovik_attack",
  225.             },
  226.             commander_title = "NKVD Rifle Disruption Tactics",
  227.         },
  228.         {
  229.             upgrades = {
  230.                 "isu152_unlock","il-2_bomb_strike","conscript_repair_kit","tank_detection","shock_troops",
  231.             },
  232.             commander_title = "Shock Motor Heavy Tactics",
  233.         },
  234.         {
  235.             upgrades = {
  236.                 "shock_troops","kv-8_unlock","anti_tank_gun_ambush_tactics","fire_artillery","is-2_support",
  237.             },
  238.             commander_title = "Shock Rifle Frontline Tactics",
  239.         },
  240.         {
  241.             upgrades = {
  242.                 "dshk_machinegun","tank_traps","anti_personnel_mines","hm120_mortar_unlock","m-42_at_gun",
  243.             },
  244.             commander_title = "Defensive Tactics (Community)",
  245.         },
  246.         {
  247.             upgrades = {
  248.                 "kv1_unlock","il-2_recon","shock_troops","howtizer_203mm","for_mother_russia",
  249.             },
  250.             commander_title = "Counterattack Tactics",
  251.         },
  252.         {
  253.             upgrades = {
  254.                 "soviet_industry","kv2_unlock","repair_bunker","vehicle_self_repair_training","kv-8_unlock",
  255.             },
  256.             commander_title = "Soviet Industry Tactics",
  257.         },
  258.         {
  259.             upgrades = {
  260.                 "order227","manpower_blitz","hold_the_line","scorched_earth_policy_mp","commissar_squad",
  261.             },
  262.             commander_title = "Not One Step Back Tactics",
  263.         },
  264.         {
  265.             upgrades = {
  266.                 "partisan_commander_troops","partisan_commander_antivehicle_troops","spy_network","mark_vehicle","radio_intercept",
  267.             },
  268.             commander_title = "Partisan Tactics",
  269.         },
  270.         {
  271.             upgrades = {
  272.                 "engineer_salvage_kits_unlock","il-2_anti_tank_bomb","conscript_at_grenade_assault","light_anti_vehicle_mines","conscript_ptrs",
  273.             },
  274.             commander_title = "Tank Hunter Tactics",
  275.         },
  276.         {
  277.             upgrades = {
  278.                 "fire_artillery","tank_detection","m-42_at_gun","forward_hq","booby_trap",
  279.             },
  280.             commander_title = "Urban Defense Tactics",
  281.         },
  282.         {
  283.             upgrades = {
  284.                 "radio_intercept","vehicle_self_repair_training","is-2_support","t34_85_unlock","il-2_sturmovik_attack",
  285.             },
  286.             commander_title = "Armored Assault Tactics",
  287.         },
  288.         {
  289.             upgrades = {
  290.                 "shock_troops","il-2_bomb_strike","fear_propaganda","kv-8_unlock","ml_20_howitzer_unlock",
  291.             },
  292.             commander_title = "Terror Tactics",
  293.         },
  294.     }
  295.  
  296.    
  297.     commander_tables = {g_soviet_commanders, g_german_commanders}
  298.  
  299.     g_debug = false
  300.     player1 = nil
  301.     player2 = nil
  302.     player1_commander = "N/A"
  303.     player2_commander = "N/A"
  304.     spectator1 = nil
  305.     spectator2 = nil
  306.     spectator_count = 0
  307.     g_spectators = {}
  308.     g_playerCount = World_GetPlayerCount()
  309.     g_rt = {RT_Manpower, RT_Fuel, RT_Munition, RT_Command, RT_Action}
  310.     player1 = World_GetPlayerAt(1)
  311.     player2 = World_GetPlayerAt(2)
  312.     g_players = {player1, player2}
  313.     if g_playerCount == 3 then
  314.         player1 = World_GetPlayerAt(1)
  315.         spectator1 = World_GetPlayerAt(2)
  316.         player2 = World_GetPlayerAt(3)
  317.         spectator_count = 1
  318.         g_spectators = {spectator1}
  319.         g_players = {player1, player2}
  320.     end
  321.     if g_playerCount == 4 then
  322.         player1 = World_GetPlayerAt(1)
  323.         spectator1 = World_GetPlayerAt(2)      
  324.         player2 = World_GetPlayerAt(3)
  325.         spectator2 = World_GetPlayerAt(4)
  326.         spectator_count = 2
  327.         g_spectators = {spectator1, spectator2}
  328.         g_players = {player1, player2}
  329.     end
  330.     if g_playerCount == 5 then
  331.         player1 = World_GetPlayerAt(1)
  332.         spectator1 = World_GetPlayerAt(2)  
  333.         spectator2 = World_GetPlayerAt(3)  
  334.         player2 = World_GetPlayerAt(4)
  335.         spectator3 = World_GetPlayerAt(5)
  336.         spectator_count = 3
  337.         g_spectators = {spectator1, spectator2, spectator3}
  338.         g_players = {player1, player2}
  339.     end
  340.     if g_playerCount == 6 then
  341.         player1 = World_GetPlayerAt(1)
  342.         spectator1 = World_GetPlayerAt(2)  
  343.         spectator2 = World_GetPlayerAt(3)  
  344.         player2 = World_GetPlayerAt(4)
  345.         spectator3 = World_GetPlayerAt(5)
  346.         spectator4 = World_GetPlayerAt(6)
  347.         spectator_count = 4
  348.         g_spectators = {spectator1, spectator2, spectator3, spectator4}
  349.         g_players = {player1, player2}
  350.     end
  351.    
  352.     res_rate_sync = false
  353.     Rule_AddOneShot(EnableSpectator, 0.125)
  354.    
  355.     Rule_Add(ResourceSync)
  356.     Rule_Add(CommanderCheck)
  357.     Rule_AddInterval(SyncResRate, 1)
  358. end
  359.  
  360. function EnableSpectator()
  361.     eg_spec = EGroup_CreateIfNotFound("eg_spec")
  362.     sg_spec = SGroup_CreateIfNotFound("sg_spec")
  363.    
  364.     for key, spectator in ipairs(g_spectators) do
  365.         FOW_PlayerRevealAll(spectator)
  366.         World_EnableSharedLineOfSight(player1, spectator, false)
  367.         World_EnableSharedLineOfSight(player2, spectator, false)
  368.  
  369.         Player_GetAll(spectator, sg_spec, eg_spec)
  370.         SGroup_DestroyAllSquads(sg_spec)
  371.         EGroup_DestroyAllEntities(eg_spec)
  372.         if Player_GetID(Game_GetLocalPlayer()) == Player_GetID(spectator) or g_debug then
  373.             Init_Objective()
  374.             title = Util_CreateLocString(Player_GetDisplayName(player1)[1].." is Producing:")
  375.             Objective_UpdateText(OBJ_Production1, title, title, false)
  376.             title = Util_CreateLocString(Player_GetDisplayName(player2)[1].." is Producing:")
  377.             Objective_UpdateText(OBJ_Production2, title, title, false)
  378.         end
  379.     end
  380.     res_rate_sync = true
  381.  
  382. end
  383.  
  384. function ResourceSync()
  385.     player_constructing_string = {{player = player1, constructing = ""}, {player = player2, constructing = ""}}
  386.  
  387.    
  388.     t_sources = {[0] = squads_german, [1] = squads_soviet}
  389.     eg_all_prod = EGroup_CreateIfNotFound("eg_all_prod")
  390.     added_squadIDs = {}
  391.     local is_added = function(sid)
  392.         for key, value in ipairs(added_squadIDs) do
  393.             if value == sid then
  394.                 return true
  395.             end
  396.         end
  397.         return false
  398.     end
  399.     for pkey, player in ipairs(g_players) do
  400.         local t_source = t_sources[Player_GetRace(player)]
  401.         EGroup_Clear(eg_all_prod)
  402.         Player_GetAll(player, eg_all_prod)
  403.         EGroup_Filter(eg_all_prod, filters, FILTER_KEEP)
  404.         local first_added = false
  405.         local comma = ""
  406.         for sbpkey, sbp in ipairs(t_source) do
  407.             local result = Util_EgroupIsMaking(eg_all_prod, sbp.sbp)
  408.             if result[1] then
  409.                 if first_added then comma = ", " else comma = "" end
  410.                 if result[2] > 1 then
  411.                     player_constructing_string[pkey].constructing = player_constructing_string[pkey].constructing..comma..sbp.name.." ("..result[2]..")"
  412.                 else
  413.                     player_constructing_string[pkey].constructing = player_constructing_string[pkey].constructing..comma..sbp.name
  414.                 end
  415.                 first_added = true
  416.             end
  417.         end
  418.     end
  419.    
  420.     for key, spectator in ipairs(g_spectators) do
  421.             local source_player
  422.             if Player_GetTeam(spectator) == 0 then
  423.                 source_player = player1
  424.             elseif Player_GetTeam(spectator) == 1 then
  425.                 source_player = player2
  426.             end
  427.             for key, restype in ipairs(g_rt) do
  428.                 Player_SetResource(spectator, restype, Player_GetResource(source_player, restype))
  429.                
  430.  
  431.             end
  432.    
  433.         if Player_GetID(Game_GetLocalPlayer()) == Player_GetID(spectator) or g_debug then  
  434.             --text =    Player_GetDisplayName(player1)[1]..": "..player1_commander.."\n"..
  435.             --      Player_GetDisplayName(player2)[1]..": "..player2_commander.."\n"
  436.             local title = Util_CreateLocString(Player_GetDisplayName(player1)[1]..": "..player1_commander)
  437.             Objective_UpdateText(OBJ_Commander1, title, title, false)
  438.             local title = Util_CreateLocString(Player_GetDisplayName(player2)[1]..": "..player2_commander)
  439.             Objective_UpdateText(OBJ_Commander2, title, title, false)
  440.             --dr_clear("UI")
  441.             --dr_setautoclear("UI", false)
  442.             --dr_text2d("UI", 0.015, 0.02, text, 255, 255, 255)  
  443.             --dr_clear("UIProd")
  444.             --dr_setautoclear("UIProd", false)
  445.             --constructing_completed = Player_GetDisplayName(player1)[1].." is producing:\n"..player_constructing_string[1].constructing.."\n\n"..
  446.             --Player_GetDisplayName(player2)[1].." is constructing:\n"..player_constructing_string[2].constructing
  447.            
  448.             local title = Util_CreateLocString(player_constructing_string[1].constructing)
  449.             Objective_UpdateText(OBJ_Production1_Sub, title, title, false)
  450.             local title = Util_CreateLocString(player_constructing_string[2].constructing)
  451.             Objective_UpdateText(OBJ_Production2_Sub, title, title, false)
  452.            
  453.             --dr_text2d("UIProd", 0.815, 0.02, constructing_completed, 255, 255, 255)  
  454.  
  455.         end
  456.     end
  457. end
  458.  
  459. function SyncResRate()
  460.     for key, spectator in ipairs(g_spectators) do
  461.         local source_player
  462.         if Player_GetTeam(spectator) == 0 then
  463.             source_player = player1
  464.         elseif Player_GetTeam(spectator) == 1 then
  465.             source_player = player2
  466.         end
  467.         for key, restype in ipairs(g_rt) do
  468.             Player_SetResource(spectator, restype, Player_GetResource(source_player, restype))
  469.            
  470.             if restype ~= RT_Command and restype ~= RT_Action then
  471.                 in_plr = Player_GetResourceRate(source_player, restype)
  472.                 in_spec = Player_GetResourceRate(spectator, restype)
  473.                
  474.                 local rate = in_plr / in_spec          
  475.                 Modify_PlayerResourceRate(spectator, restype, rate)
  476.                 --dr_clear("UIG")
  477.                 --dr_setautoclear("UIG", false)
  478.                 --dr_text2d("UIG", 0.515, 0.52, "restype: "..key.." in_plr: "..in_plr.." / in_spec: "..in_spec.." = "..rate, 255, 0, 0)  
  479.             end
  480.         end    
  481.     end
  482. end
  483. function Util_EgroupIsMaking(egroup, queueItem)
  484.     local state = {false, 0}
  485.     local EntityMaking = function(egID, index, entity)
  486.         if Entity_GetProductionQueueSize(entity) > 0 then
  487.             local count = 0
  488.             for i = 0, Entity_GetProductionQueueSize(entity) - 1 do
  489.                 if Entity_GetProductionQueueItem(entity, i) == queueItem then
  490.                     count = count + 1
  491.                     state = {true, count}
  492.                 end
  493.             end
  494.         end
  495.     end
  496.    
  497.     EGroup_ForEach(egroup, EntityMaking)
  498.     return state
  499. end
  500. function CommanderCheck()
  501.     for key, commander_table in ipairs(commander_tables) do
  502.         for key, commander in ipairs(commander_table) do
  503.             upg_count = 0;
  504.             for key, upg in ipairs(commander.upgrades) do
  505.                 local upgrade = BP_GetUpgradeBlueprint(upg)
  506.                 if Player_HasUpgrade(player1, upgrade) then
  507.                     upg_count = upg_count + 1
  508.                 end
  509.             end
  510.             if upg_count == 5 then
  511.                 player1_commander = commander.commander_title
  512.             end
  513.         end
  514.     end
  515.     for key, commander_table in ipairs(commander_tables) do
  516.         for key, commander in ipairs(commander_table) do
  517.             upg_count = 0;
  518.             for key, upg in ipairs(commander.upgrades) do
  519.                 local upgrade = BP_GetUpgradeBlueprint(upg)
  520.                 if Player_HasUpgrade(player2, upgrade) then
  521.                     upg_count = upg_count + 1
  522.                 end
  523.             end
  524.             if upg_count == 5 then
  525.                 player2_commander = commander.commander_title
  526.             end
  527.         end
  528.     end
  529.     if player1_commander ~= "N/A" and player2_commander ~= "N/A" then
  530.         Rule_RemoveMe()
  531.     end
  532. end
  533. function Init_Objective()
  534.     OBJ_Main = {
  535.         Title = Util_CreateLocString("Commanders"),
  536.         Type = OT_Primary,
  537.        
  538.         Intel_Start = nil,
  539.         Intel_Start_SkipFunc = nil,
  540.  
  541.         SetupUI = function()    
  542.         end,
  543.        
  544.         OnStart = function()
  545.         end,
  546.        
  547.         Intel_Complete = nil,
  548.         Intel_Complete_SkipFunc = nil, 
  549.  
  550.         OnComplete = function()
  551.            
  552.         end,
  553.  
  554.         Intel_Fail = nil,
  555.         Intel_Fail_SkipFunc = nil,
  556.  
  557.         OnFail = function()
  558.            
  559.         end,       
  560.     }
  561.     OBJ_Commander1 = {
  562.         Title = Util_CreateLocString("Commanders"),
  563.         Type = OT_Secondary,
  564.        
  565.         Intel_Start = nil,
  566.         Intel_Start_SkipFunc = nil,
  567.  
  568.         SetupUI = function()    
  569.         end,
  570.        
  571.         OnStart = function()
  572.         end,
  573.        
  574.         Intel_Complete = nil,
  575.         Intel_Complete_SkipFunc = nil, 
  576.  
  577.         OnComplete = function()
  578.            
  579.         end,
  580.         Parent = OBJ_Main,
  581.         Intel_Fail = nil,
  582.         Intel_Fail_SkipFunc = nil,
  583.  
  584.         OnFail = function()
  585.            
  586.         end,       
  587.     }
  588.     OBJ_Commander2 = {
  589.         Title = Util_CreateLocString("Commanders"),
  590.         Type = OT_Secondary,
  591.        
  592.         Intel_Start = nil,
  593.         Intel_Start_SkipFunc = nil,
  594.  
  595.         SetupUI = function()    
  596.         end,
  597.        
  598.         OnStart = function()
  599.         end,
  600.        
  601.         Intel_Complete = nil,
  602.         Intel_Complete_SkipFunc = nil, 
  603.  
  604.         OnComplete = function()
  605.            
  606.         end,
  607.         Parent = OBJ_Main,
  608.         Intel_Fail = nil,
  609.         Intel_Fail_SkipFunc = nil,
  610.  
  611.         OnFail = function()
  612.            
  613.         end,       
  614.     }
  615.     OBJ_Production1 = {
  616.         Title = Util_CreateLocString("Productions"),
  617.         Type = OT_Primary,
  618.        
  619.         Intel_Start = nil,
  620.         Intel_Start_SkipFunc = nil,
  621.  
  622.         SetupUI = function()    
  623.         end,
  624.        
  625.         OnStart = function()
  626.         end,
  627.        
  628.         Intel_Complete = nil,
  629.         Intel_Complete_SkipFunc = nil, 
  630.  
  631.         OnComplete = function()
  632.            
  633.         end,
  634.         Intel_Fail = nil,
  635.         Intel_Fail_SkipFunc = nil,
  636.  
  637.         OnFail = function()
  638.            
  639.         end,       
  640.     }
  641.     OBJ_Production2 = {
  642.         Title = Util_CreateLocString("Productions"),
  643.         Type = OT_Primary,
  644.        
  645.         Intel_Start = nil,
  646.         Intel_Start_SkipFunc = nil,
  647.  
  648.         SetupUI = function()    
  649.         end,
  650.        
  651.         OnStart = function()
  652.         end,
  653.        
  654.         Intel_Complete = nil,
  655.         Intel_Complete_SkipFunc = nil, 
  656.  
  657.         OnComplete = function()
  658.            
  659.         end,
  660.         Intel_Fail = nil,
  661.         Intel_Fail_SkipFunc = nil,
  662.  
  663.         OnFail = function()
  664.            
  665.         end,       
  666.     }
  667.     OBJ_Production1_Sub = {
  668.         Title = Util_CreateLocString("Productions"),
  669.         Type = OT_Primary,
  670.        
  671.         Intel_Start = nil,
  672.         Intel_Start_SkipFunc = nil,
  673.  
  674.         SetupUI = function()    
  675.         end,
  676.        
  677.         OnStart = function()
  678.         end,
  679.        
  680.         Intel_Complete = nil,
  681.         Intel_Complete_SkipFunc = nil, 
  682.  
  683.         OnComplete = function()
  684.            
  685.         end,
  686.         Parent = OBJ_Production1,
  687.         Intel_Fail = nil,
  688.         Intel_Fail_SkipFunc = nil,
  689.  
  690.         OnFail = function()
  691.            
  692.         end,       
  693.     }
  694.     OBJ_Production2_Sub = {
  695.         Title = Util_CreateLocString("Productions"),
  696.         Type = OT_Primary,
  697.        
  698.         Intel_Start = nil,
  699.         Intel_Start_SkipFunc = nil,
  700.  
  701.         SetupUI = function()    
  702.         end,
  703.        
  704.         OnStart = function()
  705.         end,
  706.        
  707.         Intel_Complete = nil,
  708.         Intel_Complete_SkipFunc = nil, 
  709.  
  710.         OnComplete = function()
  711.            
  712.         end,
  713.         Parent = OBJ_Production2,
  714.         Intel_Fail = nil,
  715.         Intel_Fail_SkipFunc = nil,
  716.  
  717.         OnFail = function()
  718.            
  719.         end,       
  720.     }  
  721.     Objective_Register(OBJ_Main)
  722.     Objective_Register(OBJ_Commander1)
  723.     Objective_Register(OBJ_Commander2)
  724.     Objective_Register(OBJ_Production1)
  725.     Objective_Register(OBJ_Production2)
  726.     Objective_Register(OBJ_Production1_Sub)
  727.     Objective_Register(OBJ_Production2_Sub)
  728.  
  729.     --Objective_Register(OBJ_Productions)
  730.     Objective_Start(OBJ_Main, false)
  731.     Objective_Start(OBJ_Commander1, false)
  732.     Objective_Start(OBJ_Commander2, false)
  733.     Objective_Start(OBJ_Production1, false)
  734.     Objective_Start(OBJ_Production2, false)
  735.     Objective_Start(OBJ_Production1_Sub, false)
  736.     Objective_Start(OBJ_Production2_Sub, false)
  737.     --Objective_Start(OBJ_Productions, false)
  738. end
  739.  
  740.  
  741. function Util_CreateLocString(text)
  742.     local tmpstr = LOC(text)
  743.     tmpstr[1] = text
  744.     return tmpstr
  745. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement