При выборе героя, изменить его на другого

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

Slavko

Продвинутый
22 Июн 2015
224
4
В общем. Мне нужно, чтобы когда игрок пикает перса - ему выдавало другого. Вот что сделал:
Код:
function Activate()
	ListenToGameEvent("dota_player_pick_hero", ReplaceHero, nil)
end

function ReplaceHero(event)
  Timers:CreateTimer(5, function()  
    local hIndex = event.heroindex
    local hIndexHScript = EntIndexToHScript(hIndex)
    local pID = hIndexHScript:GetPlayerID()
    local hero = PlayerResource:ReplaceHeroWith(pID, 'npc_dota_hero_omniknight', 500, 500)
    return nil
  end)
end
Все норм, все работает, через 5 секунд после пика дается омник.. но еще через 5 этот омник врезает дуба и игроку дается другой омник :D
Я так понимаю, когда игроку дается омник, скрипт думает, что он снова пикнул героя и все начинается сначала. Как это исправить можно ?
З.Ы. Потом добавлю проверку текущего персонажа, должно прокатить
 
Последнее редактирование модератором:
Re: Вопрос.

Можно сделать костыль, создать глобальную переменную логическую. И при пике сравнивать ее, а при выдаче героя сделать ее тру. Если не понял, то напишу
 
Re: Вопрос.

fiCeVitka, да, можно и так, но должна прокатить и проверка текущего перса, его ведь событие выдает :)
 
Re: Вопрос.

Slavko, так можно сделать таблицу со значение для каждого игрока и по индексу сравнивать
Hero_picked = {
false,
false,
false,
....
}
 
И так сойдет.
Код:
function ReplaceHero(event)
  local hero1 = event.hero
  local hero2 = "npc_dota_hero_omniknight"
  if hero1 ~= hero2 then
   Timers:CreateTimer(5, function()  
     local hIndex = event.heroindex
     local hIndexHScript = EntIndexToHScript(hIndex)
     local pID = hIndexHScript:GetPlayerID()
     local hero = PlayerResource:ReplaceHeroWith(pID, 'npc_dota_hero_omniknight', 500, 500)
     return nil
   end)
  end
end
 
Последнее редактирование модератором:
Тут еще такое дело, когда таким образом героя создаешь - ему нужно кешировать модельки. Нужно все модели отдельно кешировать, или каким-то образом можно сразу всего героя ?
 
Тут еще такое дело, когда таким образом героя создаешь - ему нужно кешировать модельки. Нужно все модели отдельно кешировать, или каким-то образом можно сразу всего героя ?
в аддон гейм моде должна быть такая функция по дефолту
Код:
-- Generated from template
function Precache( context )
	--[[
		Precache things we know we'll use. Possible file types include (but not limited to):
			PrecacheResource( "model", "*.vmdl", context )
			PrecacheResource( "soundfile", "*.vsndevts", context )
			PrecacheResource( "particle", "*.vpcf", context )
			PrecacheResource( "particle_folder", "particles/folder", context )
	]]
	PrecacheUnitByNameSync("npc_dota_hero_wisp", context)

end
 
Последнее редактирование модератором:
Реклама: