Завершение игры

  • Автор темы Автор темы TopKun
  • Дата начала Дата начала

TopKun

Пользователь
22 Июл 2016
46
0
Нужно завершить игру, когда вся команда dire будет мертва. Но не определённое количество смертей, а только при одновременной смерти всех героев за dire
 
Нужно завершить игру, когда вся команда dire будет мертва. Но не определённое количество смертей, а только при одновременной смерти всех героев за dire
Код:
function GameMode:_OnEntityKilled( keys )
 -- The Unit that was Killed
 local killedUnit = EntIndexToHScript( keys.entindex_killed )
 -- The Killing entity
 local killerEntity = nil
 local count = HeroList:GetHeroCount()
 if keys.entindex_attacker ~= nil then
  killerEntity = EntIndexToHScript( keys.entindex_attacker )
 end

 if killedUnit:IsRealHero() then 
    EmitGlobalSound("scp.scp_death")
	  local allisdead, i = true, 0
while i < HeroList:GetHeroCount() and allisdead do
  if HeroList:GetHero(i):GetTeamNumber() == 2 and HeroList:GetHero(i):IsAlive() then
    allisdead = false
  end
	i = i + 1
end
  if allisdead then
   GameRules:SetSafeToLeave( true )
   GameRules:SetGameWinner( killerEntity:GetTeam() )
  end

  --PlayerResource:GetTeamKills
  if SHOW_KILLS_ON_TOPBAR then
   GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_BADGUYS, GetTeamHeroKills(DOTA_TEAM_BADGUYS) )
   GameRules:GetGameModeEntity():SetTopBarTeamValue ( DOTA_TEAM_GOODGUYS, GetTeamHeroKills(DOTA_TEAM_GOODGUYS) )
  end
 end
end
 
Последнее редактирование модератором:
Выше метод универсальнее, но универсальностью в моддинге можно пренебрегать, чтобы упрощать свой код:

Код:
function InvasionMode:OnHeroKilled(data)
	local AllDead = true

	for i=0,5 do //здесь, естественно, столько, соклько у тебя может быть героев
		if PlayerResource:IsValidPlayer(i) then
			local Hero = PlayerResource:GetSelectedHeroEntity(i)
			if Hero:IsAlive() and Hero:GetTeamNumber() == DOTA_TEAM_BADGUYS then
				AllDead = false
			end
		end
	end

	if AllDead then
		GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
	end
end

Ну и если можно получить одной функцией количество игроков той или иной командой, то код будет еще проще.
 
Реклама: