CustomGames.ru - Dota 2 пользовательские игры

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

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Slavko

  • Продвинутый
  • 224
  • Мощь: 5
  • -_-
В общем. Мне нужно, чтобы когда игрок пикает перса - ему выдавало другого. Вот что сделал:
Спойлер
Код
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
Я так понимаю, когда игроку дается омник, скрипт думает, что он снова пикнул героя и все начинается сначала. Как это исправить можно ?
З.Ы. Потом добавлю проверку текущего персонажа, должно прокатить
« Последнее редактирование: 03-07-2015, 11:49:37 от -ExotiC- »
Ландшафтеры, мастера фотошопа и скриптеры более-менее адекватного уровня - приглашаю за заманчивым предложением в скайп: vyacheslavmikh

Оффлайн fiCeVitka

  • Продвинутый
  • 48
  • Мощь: 0
Re: Вопрос.
« Ответ #1 : 03-07-2015, 11:23:39 »
Можно сделать костыль, создать глобальную переменную логическую. И при пике сравнивать ее, а при выдаче героя сделать ее тру. Если не понял, то напишу

Оффлайн Slavko

  • Продвинутый
  • 224
  • Мощь: 5
  • -_-
Re: Вопрос.
« Ответ #2 : 03-07-2015, 11:28:17 »
fiCeVitka, да, можно и так, но должна прокатить и проверка текущего перса, его ведь событие выдает :)
Ландшафтеры, мастера фотошопа и скриптеры более-менее адекватного уровня - приглашаю за заманчивым предложением в скайп: vyacheslavmikh

Оффлайн fiCeVitka

  • Продвинутый
  • 48
  • Мощь: 0
Re: Вопрос.
« Ответ #3 : 03-07-2015, 11:30:32 »
Slavko, так можно сделать таблицу со значение для каждого игрока и по индексу сравнивать
Hero_picked = {
          false,
          false,
          false,
          ....
}

Оффлайн Slavko

  • Продвинутый
  • 224
  • Мощь: 5
  • -_-
И так сойдет.
Код
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
Ландшафтеры, мастера фотошопа и скриптеры более-менее адекватного уровня - приглашаю за заманчивым предложением в скайп: vyacheslavmikh

Оффлайн Slavko

  • Продвинутый
  • 224
  • Мощь: 5
  • -_-
Тут еще такое дело, когда таким образом героя создаешь - ему нужно кешировать модельки. Нужно все модели отдельно кешировать, или каким-то образом можно сразу всего героя ?
Ландшафтеры, мастера фотошопа и скриптеры более-менее адекватного уровня - приглашаю за заманчивым предложением в скайп: vyacheslavmikh

Оффлайн doter.ua

  • Друзья CG
  • 272
  • Мощь: 1
Тут еще такое дело, когда таким образом героя создаешь - ему нужно кешировать модельки. Нужно все модели отдельно кешировать, или каким-то образом можно сразу всего героя ?
в аддон гейм моде должна быть такая функция по дефолту
Код
-- 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
гайды
сурпрайз mthfckr :D

[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
В общем. Мне нужно, чтобы когда игрок пикает перса - ему выдавало другого.

Ты уже продвинутый, но мало ли интересно будет.