Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
--================================================================================================================================================================= -- Berkyt's Map Win Condition -- By BERKYT -- Links: VK: https://vk.com/b_e_r_k_y_t Discord: https://discord.gg/amMreCC YouTube: https://www.youtube.com/channel/UCaPBjmrAYO6p-ksHNaymwLg?view_as=subscriber -- The script is distributed freely, provided that the author of the script is indicated - BERKYT --================================================================================================================================================================= function bm_OnGameSetup() for i=1, World_GetPlayerCount() do if i ~= 3 then g_table_players["player_"..i] = World_GetPlayerAt(i-1) end end g_count_ad = 1 g_table_sgroup_enemies = { } g_table_squad_stuck = { } g_table_squad_reinforcement_timers = { } --Timer g_timer_wave = 0 g_timer_re = 0 g_timer_to_win = -1 g_interval_squad_stuck = 0 g_time_squad_stuck = 0 --Waves g_num_waves = 1 g_number_wave = 0 --Music g_id_track = nil g_check_music_playing = false g_check_wave_alive = false end function bm_init() print("
Initing Berkyt's Map Scar... ") bm_OnGameSetup() bm_Test() bm_deleteHq() bm_Start_map() bm_SetSGroupOfWavesFromTable() bm_CreateTableTimersSquadStuck() bm_CreateTableTimersReinforcement() bm_SetSGroupOfReinforcementsFromTable() Cpu_Enable(g_Player3, false) Rule_Add(bm_Rule_EndGameWin) Rule_Add(bm_Rule_EndGameLose) Rule_AddOneShot(bm_Sberbank, 30) Rule_AddInterval(bm_Advertising, 7 * 60) Rule_AddInterval(bm_CheckingEndWave, 1) print("
Success") end Scar_AddInit(bm_init) function bm_Start_map() Fade_Start(5, true) Util_MissionTitle("By: BERKYT") end -- This function created by SWayfarer function bm_deleteHq() local i1 = 0 local eg = "rjgrfjlrefvrfgftgb" local sg = "brjrfgbkfgnf3243re" if (Marker_Exists("mkr_BERKYT_script_deleteEntities", "basic_marker")) then for i1 = 1, World_GetPlayerCount() do Player_GetAllEntitiesNearMarker(World_GetPlayerAt(i1 - 1), eg, "mkr_BERKYT_script_deleteEntities") EGroup_DestroyAllEntities(eg) EGroup_Destroy(eg) end else print("
(Error) Can't remove entities because special marker not exists!") end if (Marker_Exists("mkr_BERKYT_script_deleteSquads", "basic_marker")) then for i1 = 1, World_GetPlayerCount() do Player_GetAllSquadsNearMarker(World_GetPlayerAt(i1 - 1), sg, "mkr_BERKYT_script_deleteSquads") SGroup_DestroyAllSquads(sg) SGroup_Destroy(sg) end else print("
(Error) Can't remove squads because special marker not exists!") end end -- function bm_Advertising() if(g_count_ad == 1) then bm_Site_En() elseif(g_count_ad == 2) then bm_VKontakte() elseif(g_count_ad == 3) then bm_Sberbank() elseif(g_count_ad == 4) then bm_WebMoney() g_count_ad = 0 end g_count_ad = g_count_ad + 1 end function bm_WebMoney() Util_MissionTitle("If you want to thank the author for the script, then here's how to do it: WebMoney: R515364081475(RUB) or Z262863085617(USD)(Check ReadMe - file)") end function bm_Sberbank() Util_MissionTitle("If you want to thank the author for the script, then here's how to do it: Sberbank: 5469 4000 2976 6750 (Check ReadMe - file)") end function bm_VKontakte() Util_MissionTitle("VKontakte: https://vk.com/club177090833 (Check ReadMe - file)") end function bm_Site_En() if World_GetRand(0, 1) == 1 then Util_MissionTitle("Visit my website and receive exclusive information!(Check ReadMe - file)") else Util_MissionTitle("Visit my website and receive exclusive information! Link: http://bit.ly/3glPSP7") end end function bm_Site_Ru() Util_MissionTitle("???????? ??? ???? ? ????????? ???????????? ??????????!(????????? 'ReadMe' - ????)") end function bm_Print(...) local line = "" for i = 1, arg.n do line = line .. " " ..tostring(arg[i]) end print("
{ "..line.." }") end function bm_LengthTable(table) local len = 0 if type(table) == "table" then for _ in table do len = len + 1 end return tonumber(len) else return nil end end function bm_TurnOnMusicWhenAttack(player) local name_race = Player_GetRaceName(player) local table_playlist = { ["chaos_marine_race"] = { "MU_IG_STR_Chaos", "MU_IG_STR_Chaos_perc", "MU_IG_STR_Chaos_perc_brass", "MU_IG_STR_Chaos_perc_str", "MU_IG_STR_Chaos_perc_voice" }, ["eldar_race"] = { "MU_IG_STR_Eldar", "MU_IG_STR_Eldar_perc", "MU_IG_STR_Eldar_perc_brass", "MU_IG_STR_Eldar_perc_str" }, ["guard_race"] = { "MU_IG_STR_ImpGd_perc_brass", "MU_IG_STR_ImpGd", "MU_IG_STR_ImpGd_perc", "MU_IG_STR_ImpGd_perc_str", "MU_IG_STR_ImpGd_perc_voice" }, ["necron_race"] = { "MU_IG_THEME_Nightbringer", "MU_IG_STR_Necron", "MU_IG_STR_Necron_perc", "MU_IG_STR_Necron_perc_brass", "MU_IG_STR_Necron_perc_str" }, ["ork_race"] = { "MU_IG_STR_Ork", "MU_IG_STR_Ork_perc", "MU_IG_STR_Ork_perc_str", "MU_IG_STR_Ork_perc_brass", "music_msd5o", "music_msd1" }, ["space_marine_race"] = { "MU_IG_STR_SpaceMarine", "MU_IG_STR_SpaceMarine_perc", "MU_IG_STR_SpaceMarine_perc_brass", "MU_IG_STR_SpaceMarine_perc_str" }, ["tau_race"] = { "MU_IG_STR_Tau", "MU_IG_RAC_Tau", "MU_IG_STR_Tau_perc", "MU_IG_STR_Tau_perc_str", "MU_IG_STR_Tau_perc_brass" }, ["dark_eldar_race"] = { "MU_IG_STR_darkeldar_perc_str", "MU_IG_STR_darkeldar", "MU_IG_STR_darkeldar_perc", "MU_IG_STR_darkeldar_perc_brass" }, ["sisters_race"] = { "mu_ig_str_sisters", "mu_ig_str_sisters_perc_str", "mu_ig_str_sisters_perc_voice" }, ["default"] = { "MU_IG_STR_Tau", "MU_IG_STR_Chaos", "MU_IG_STR_Eldar", "MU_IG_STR_ImpGd_perc_brass", "MU_IG_THEME_Nightbringer", "MU_IG_STR_Ork", "MU_IG_STR_SpaceMarine", "MU_IG_STR_darkeldar_perc_str", "mu_ig_str_sisters" } } for key in table_playlist do if key == name_race then Sound_PlaylistPlayNow(PC_Music, table_playlist[key][World_GetRand(1, bm_LengthTable(table_playlist[key]))]) g_check_music_playing = true return end end Sound_PlaylistPlayNow(PC_Music, table_playlist["default"][World_GetRand(1, bm_LengthTable(table_playlist["default"]))]) end function bm_Rule_EndGameWin() if g_num_waves > bm_LengthTable(g_table_warriors.waves) and bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) <= 0 then World_SetGameOver() end end function bm_Rule_EndGameLose() local building_exceptions = { "chaos_armoury", "chaos_listening_post", "chaos_mine_field", "chaos_plasma_generator", "chaos_thermo_plasma_generator", "chaos_turret_bolter", "eldar_advanced_warp_generator", "eldar_listening_post", "eldar_mine_field", "eldar_soul_shrine", "eldar_support_platform_scatterlaser", "eldar_warp_generator", "ork_bigger_generator", "ork_generator", "ork_gork_totem", "ork_mine_field", "ork_pile_o_guns", "ork_waagh_banner", "space_marine_armoury", "space_marine_generator", "space_marine_listening_post", "space_marine_mine_field", "space_marine_turret_bolter", "space_marine_thermo_generator", "guard_listening_post", "guard_mines", "guard_plasma_generator", "guard_tactica", "guard_thermo_plasma", "guard_turret_heavy_bolter", "necron_listening_post", "necron_summoning_core", "necron_plasma_generator", "necron_energy_core", "necron_greater_summoning_core", "necron_forbidden_archive", "necron_thermoplasma_generator", "necron_turret", "tau_listening_post", "tau_research_building", "tau_shrine_of_kauyon", "tau_shrine_of_montka", "tau_shrine_of_purpose", "tau_thermoplasma_generator", "tau_turret_sp", "tau_plasma_generator", "sisters_thermo_plasma", "sisters_plasma_generator", "sisters_turret_flamer", "sisters_holy_reliquary", "sisters_listening_post", "sisters_mines", "sisters_sanctuary", "dark_eldar_haemonculus_laboratory", "dark_eldar_listening_post", "dark_eldar_plasma_generator", "dark_eldar_slave_caravel", "dark_eldar_soul_cage", "dark_eldar_thermo_plasma", "dark_eldar_wych_cult_arena" } for key, player in pairs(g_table_players) do if Player_IsAlive(player) then if Player_HasBuildingsExcept(player, building_exceptions) == false then Player_Kill(player) end end end end function bm_CreateTableTimersSquadStuck() for key_wave, table_waves in pairs(g_table_warriors.waves) do g_table_squad_stuck[key_wave] = {} for key in table_waves do g_table_squad_stuck[key_wave][key] = 0 --bm_Print(g_table_squad_stuck[key_wave][key]) end end end function bm_CreateTableTimersReinforcement() for player in g_table_players do g_table_squad_reinforcement_timers[player] = 0 --bm_Print("g_table_squad_reinforcement_timers[player] =",g_table_squad_reinforcement_timers[player]) end end function bm_CheckingSquadStuck(key_wave, key_type, sg_wave_troops_team) local time_wait = 90 SGroup_CreateIfNotFound(sg_wave_troops_team) if SGroup_IsUnderAttack(sg_wave_troops_team, false) == false then g_table_squad_stuck[key_wave][key_type] = g_table_squad_stuck[key_wave][key_type] + 1 --bm_Print(g_table_squad_stuck[key_wave][key_type]) if g_table_squad_stuck[key_wave][key_type] >= time_wait then SGroup_DestroyAllSquads(sg_wave_troops_team) g_table_squad_stuck[key_wave][key_type] = 0 end else g_table_squad_stuck[key_wave][key_type] = 0 end end function bm_SearchForAPlayerInTableByIndex(var) for key in g_table_players do local int_key = tonumber(string.sub(tostring(key), 8)) if int_key == var then return g_table_players[key] end end end function bm_Timer() sg_table_type_unit = g_table_sgroup_enemies["wave_"..g_number_wave + 1] if g_number_wave ~= 0 then sg_table_type_unit = g_table_sgroup_enemies["wave_"..g_number_wave] end if bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) <= 0 then g_timer_wave = g_timer_wave + 1 --bm_Print("g_timer_wave = ", g_timer_wave) if g_timer_wave > g_interval + 1 then g_timer_wave = 0 end end for player in g_table_sgroup_players do SGroup_CreateIfNotFound(g_table_sgroup_players[player]) if SGroup_GetAvgHealth(g_table_sgroup_players[player]) <= 0 then g_table_squad_reinforcement_timers[player] = g_table_squad_reinforcement_timers[player] + 1 --bm_Print("g_table_squad_reinforcement_timers[player] =",g_table_squad_reinforcement_timers[player]) if g_table_squad_reinforcement_timers[player] > g_t_interval_reinforcement + 1 then g_table_squad_reinforcement_timers[player] = 0 end end end end function bm_SetSGroupOfWavesFromTable() for key_wave, table_waves in pairs(g_table_warriors.waves) do g_table_sgroup_enemies[key_wave] = {} for key in table_waves do g_table_sgroup_enemies[key_wave][key] = "sg_Attack_Warriors_"..key SGroup_CreateIfNotFound("sg_Attack_Warriors_"..key) end end end function bm_SetSGroupOfReinforcementsFromTable() for item in g_table_players do g_table_sgroup_players[item] = "sg_Reinforcements_Warriors_"..string.sub(tostring(item), 8) end end function bm_SGroup_GetAvgHealthFromTable(table_wave) local sum_health = 0 for key in table_wave do sum_health = sum_health + SGroup_GetAvgHealth(table_wave[key]) end --bm_Print("sum_health=", sum_health) return sum_health end function bm_CheckingEndWave() local sg_table_type_unit = g_table_sgroup_enemies["wave_"..g_number_wave + bm_SmartIncrement()] if bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) <= 0 and g_check_wave_alive then g_check_wave_alive = false Util_MissionTitle("You did it! But it's too early to relax. A new attack is about to begin!") end end function bm_SGroup_IsEmptyTable(table_wave) local sum_health = 0 for key in table_wave do if SGroup_IsEmpty(table_wave[key]) then return true end end return false end function bm_SmartIncrement() local increment = 0 if g_number_wave == 0 then increment = increment + 1 return increment end return increment end function bm_CreateWaves() sg_table_type_unit = g_table_sgroup_enemies["wave_"..g_number_wave + bm_SmartIncrement()] if bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) > 0 then for key_type in sg_table_type_unit do bm_CheckingSquadStuck("wave_"..g_number_wave + bm_SmartIncrement(), key_type, sg_table_type_unit[key_type]) end end if g_timer_wave >= g_interval and bm_SGroup_IsEmptyTable(sg_table_type_unit) and bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) <= 0 then g_timer_wave = 0 g_check_wave_alive = true bm_TurnOnMusicWhenAttack(g_Player3) Util_MissionTitle("Wave number "..g_num_waves) if bm_SGroup_GetAvgHealthFromTable(sg_table_type_unit) <= 0 then for key_wave, table_types in pairs(g_table_warriors.waves) do if type(table_types) == "table" and tonumber(string.sub(key_wave, 6)) == g_num_waves then for key_j, table_items in pairs(table_types) do Util_CreateSquadsAtMarkerEx(g_Player3, g_table_sgroup_enemies[key_wave][key_j], table_items[1], "mkr_wave_"..World_GetRand(1, g_attack_point), table_items[2], table_items[3]) if table_items[4][1] ~= "default" or table_items[4][2] ~= nil then Squad_ForceUpgradeWeapons( SGroup_GetSpawnedSquadAt( SGroup_FromName(g_table_sgroup_enemies[key_wave][key_j]), 1), table_items[4][1], table_items[4][2]) end if table_items[5] then SGroup_AddLeaders(g_table_sgroup_enemies[key_wave][key_j]) end Cmd_AttackMoveMarker(g_table_sgroup_enemies[key_wave][key_j], "mkr_to_player_"..World_GetRand(1, bm_LengthTable(g_table_players))) end end end end g_num_waves = g_num_waves + 1 g_number_wave = g_number_wave + 1 end end function bm_SpawnReinforcement() --bm_Print("g_table_squad_reinforcement_timers[player] =",g_table_squad_reinforcement_timers[player]) for player in g_table_players do local num_player = tonumber(string.sub(tostring(player), 8)) if num_player > 3 then num_player = num_player - 1 end if g_table_squad_reinforcement_timers[player] == g_t_interval_reinforcement then g_table_squad_reinforcement_timers[player] = 0 SGroup_CreateIfNotFound(g_table_sgroup_players[player]) if SGroup_IsEmpty(g_table_sgroup_players[player]) and SGroup_GetAvgHealth(g_table_sgroup_players[player]) <= 0 then for key_i, table_i in pairs(g_table_warriors.reinforcements) do if bm_SearchForAPlayerInTableByIndex( tonumber(string.sub(tostring(key_i), 25))) == g_table_players[player] then for key_j, table_j in pairs(table_i) do bm_Print(g_table_players[player], g_table_sgroup_players[player]) Util_CreateSquadsAtMarkerEx(g_table_players[player], g_table_sgroup_players[player], table_j[1], "mkr_reinforcement_"..num_player, table_j[2], table_j[3]) end SGroup_AddLeaders(g_table_sgroup_players[player]) end end Ping_Marker ("mkr_reinforcement_"..num_player, false) Util_MissionTitle("Reinforcements have arrived!") end end end end function bm_Test() if Debug_mod then FOW_RevealAll() Util_CreateSquadsAtMarkerEx(g_table_players.player_1, "230948720398414887023984723094781811520", "guard_squad_baneblade", "mkr_to_player_1", 4, 1) end end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)