[quote author=Илья link=topic=710.msg2704#msg2704 date=1453949101]
У тебя консоль ошибок не выдает на эту строчку?
Я в ней совершенно не уверен.
По идеи ты должен для каждого героя при старте игры задвать этот респавн, а не как ты пытался: сразу для всего (и хз, что конкретно возвращает GetGameModeEntity())
Вот тебе пример на скорую руку написанного и не проверенного метода (естественно main везде замени на название своего скрипта):
Код:
function main:GameRulesStateChange(keys)
local newState = GameRules:State_Get()
if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
for i=0,5 do
if PlayerResource:IsValidPlayer(i) then
PlayerResource:GetSelectedHeroEntity(i):SetFixedRespawnTime(1)
end
end
end
end
Код не проверен только в строчке задачи респавна. А так он берет и в момент старта игры проверяет первые 5 свободных индексов на принадлежность их к игрокам (ну, всегда начинается счет с 0, если у те будет больше 5, то лишних не тронет, если меньше, ниче страшного не произойдет) и задействованным индексам, т.е. игрокам, задает этот респавн.
И не забудь добавить слушателя в свой initial метод :
Код:
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(main, 'GameRulesStateChange'), self)
[/quote]
Код:
SetFixedRespawnTime(time)
работает не на юнита, а на всю игру, то есть на гейментити.