Кодим функции: ...STATE_HERO_SELECTION или как задать конкретного персонажа

Илья

Друзья CG
25 Сен 2015
2,348
41
Прежде всего хочу сказать спасибо ребятам из петров.
Их код помог мне создать этот код.

Код:
-- В данном примере, мы будем менять героев игрокам темной стороны
-- Я изначально ограничиваю число плохишей до двух игроков и уже с ними буду работать
--собственно, как нам отличить первого от второго: с помощью счетчика
roomBG = 1 --почему 1? потому что 42

function FT:InitGameMode()

--Создаем слушателя событий, который слушает смену стадий игры.
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(FT, 'OnGameRulesStateChange'), self)

end

-- Оп, функция, которую выполним, когда стадия игры сменится
function FT:OnGameRulesStateChange(keys)
--что же за стадия сейчас?
  local newState = GameRules:State_Get()
--если это та самая, а именно пик героя, тооо...
  if newState == DOTA_GAMERULES_STATE_HERO_SELECTION then
--запускаем функцию насилия
    FT:ForcedToPlay()
  end
end


function FT:ForcedToPlay()
print("----------------------------------------ForcedToPlay----------------------------------------")
for i=0,5 do --у меня в игре 6 мест, 2е плохих, 4 хороших: реализуйте под себя
	if PlayerResource:IsValidPlayer(i) then --если это "реальный" чувак
		local player = PlayerResource:GetPlayer(i) --пробиваем его по ip 
		local teamNumb = player:GetTeamNumber() --пробиваем его адрес по ip
		local name = GetTeamName(teamNumb) -- пробиваем его семью по ip
		if name == "#DOTA_BadGuys" then --уу, если он плохиш, то наказываем его
			if roomBG == 1 then 
				--плюем на его права и насильно даем героя undying
				player = CreateHeroForPlayer("npc_dota_hero_undying",player)
 				--зачем я делаю именно так "player =", смотрите ниже			
			end
				--я говорил, что у меня будет двое плохишей
			if roomBG == 2 then
				player = CreateHeroForPlayer("npc_dota_hero_life_stealer",player)
			--этому я еще и подарок в мягком месте оставлю, вот зачем "player ="
				player:AddItemByName("item_ultimate_scepter")					
			end
			roomBG = roomBG+1		
		end
	end
end
end

И напоследок, не забудьте подгрузить нужные модельки для этих героев, например так.
Иначе у вас всегда будут получаться error man или error girl.


Если у кого-то есть еще какие идеи или если кто видит какую дикость в коде, отписываемся, будем править.
 
Последнее редактирование модератором:
Реклама: