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

рандомная способность

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

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
рандомная способность
« : 05-04-2016, 15:02:20 »
как при старте игры, дать герою случайный скил из небольшого списка. ?

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: рандомная способность
« Ответ #1 : 05-04-2016, 15:15:43 »
как при старте игры, дать герою случайный скил из небольшого списка. ?
Код
local random_ability_table = {
    "random_ability_1",
    "random_ability_2",
    "random_ability_3",
}

function GiveRandomAbility(hero)
   local ability_number = RandomInt(1, #random_ability_table)
   hero:AddAbility(random_ability_table[ability_number])
end

Оффлайн Илья

  • Супермодератор
  • 2039
  • Мощь: 19
Re: рандомная способность
« Ответ #2 : 05-04-2016, 15:29:00 »
Твой код можно на целую строчку сократить! :D

Код
local random_ability_table = {
    "random_ability_1",
    "random_ability_2",
    "random_ability_3",
}

function GiveRandomAbility(hero)
   hero:AddAbility(random_ability_table[RandomInt(1, #random_ability_table)])
end

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #3 : 05-04-2016, 15:50:22 »
 это в addon_game_mode.lua ?
а как указать ссылку на нужного героя? к которому это применяться будет, или это ко всем?

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: рандомная способность
« Ответ #4 : 05-04-2016, 16:05:48 »
Твой код можно на целую строчку сократить! :D

Код
local random_ability_table = {
    "random_ability_1",
    "random_ability_2",
    "random_ability_3",
}

function GiveRandomAbility(hero)
   hero:AddAbility(random_ability_table[RandomInt(1, #random_ability_table)])
end
Я могу вообще все это в одно строку упростить, но это будет не так очевидно)
это в addon_game_mode.lua ?
а как указать ссылку на нужного героя? к которому это применяться будет, или это ко всем?
Это просто тебе функция, возьми событие при спавне героя и возьми из аргументов события ссылку на героя, а дальше передай в эту функцию.

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #5 : 05-04-2016, 19:32:17 »
возьми событие при спавне героя и возьми из аргументов события ссылку на героя, а дальше передай в эту функцию.

Код
function GameMode:OnGameInProgress() 
взял вроде, как его изменить правильно?

Код
function Activate()
GiveRandomAbility(hero)
end
так активировать да?
« Последнее редактирование: 05-04-2016, 19:49:45 от UZzip »

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: рандомная способность
« Ответ #6 : 05-04-2016, 19:55:43 »
Нука-нука, давай, интересно глянуть, а  то я не представляю  :D

Если бы эти абилки шли по порядку возрастания id, то еще могу представить, но они ведь так не идут.
Просто, не делать переход на новую строку, lua скушает ток в путь)
Код
function GameMode:OnGameInProgress() 
взял вроде, как его изменить правильно?

Код
function Activate()
GiveRandomAbility(hero)
end
так активировать да?
Давай ты пойдешь читать о событиях и эвентах.
Нет, не так -.-

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #7 : 05-04-2016, 20:37:05 »
CryDeS, тут и тут  я всё прочитал. Кое что понял, но тяжеловато доходит.
мне нужен код событие (игрок выбрал героя или как то так), а где его найти для конкретного примера я не знаю.

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #8 : 05-04-2016, 20:38:33 »
Цитировать
function OnHeroPicked (event)
    local hero = EntIndexToHScript(event.heroindex)
    GiveBlinkDagger(hero)
 end
 
 function Activate ()
    ListenToGameEvent("dota_player_pick_hero", OnHeroPicked, nil)
 end

вот этот пример как то можно переделать?

Оффлайн tasman208

  • 128
  • Мощь: 0
Re: рандомная способность
« Ответ #9 : 05-04-2016, 20:41:17 »
А зачем тебе переделывать?
Код
 function Activate ()
    ListenToGameEvent("dota_player_pick_hero", OnHeroPicked, nil)
 end

function OnHeroPicked (event)
    local hero = EntIndexToHScript(event.heroindex)
    GiveAbility(hero)
 end

 function GiveAbility (hero)
Тут функция, которая дает герою скилл
 end
Crusade Commanders

Оффлайн Илья

  • Супермодератор
  • 2039
  • Мощь: 19
Re: рандомная способность
« Ответ #10 : 05-04-2016, 21:28:01 »
Tasman начинает помогать, молодец!)

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #11 : 06-04-2016, 05:34:17 »
ребята, что я сделал не так?
Код
 function Activate ()
    ListenToGameEvent("dota_player_pick_hero", OnHeroPicked, nil)
 end

function OnHeroPicked (event)
    local hero = EntIndexToHScript(event.heroindex)
    GiveAbility(hero)
 end

 function GiveAbility (hero)
GiveRandomAbility(hero)
 end

local random_ability_table = {
    "dark_seer_surge2",
    "furion_teleportation2",
    "invoker_sun_strike2",
    "legion_commander_duel2",
    "meepo_earthbind2",
    "templar_assassin_refraction2",
}

function GiveRandomAbility(hero)
   hero:AddAbility(random_ability_table[RandomInt(1, #random_ability_table)])
end

dota_player_pick_hero
player ( short )
heroindex ( short )
hero ( string )
« Последнее редактирование: 06-04-2016, 07:21:25 от UZzip »

Оффлайн Илья

  • Супермодератор
  • 2039
  • Мощь: 19
Re: рандомная способность
« Ответ #12 : 06-04-2016, 08:33:17 »
Код
random_ability_table = {
    "dark_seer_surge2",
    "furion_teleportation2",
    "invoker_sun_strike2",
    "legion_commander_duel2",
    "meepo_earthbind2",
    "templar_assassin_refraction2"
}


function Activate ()
    ListenToGameEvent("dota_player_pick_hero", OnHeroPicked, nil)
 end

function OnHeroPicked (event)
    local hero = EntIndexToHScript(event.heroindex)
    GiveRandomAbility(hero)
 end

function GiveRandomAbility(hero)
   hero:AddAbility(random_ability_table[RandomInt(1, #random_ability_table)])
end


Пробуй так. Таблица должна быть в самом верху.
Если ты там где-нибудь какие глобальные переменные объявляешь через _.G или классы, то после них идет таблица.
И в следующий раз скидывай весь свой addon_game_mode.lua

Оффлайн UZzip

  • Продвинутый
  • 282
  • Мощь: 0
  • WorldEditor2
Re: рандомная способность
« Ответ #13 : 06-04-2016, 10:13:40 »
Илья, Огромное тебе спасибо, и всем остальным! Репу апну.

Такое дело, я читал что не имеет значения куда ставить функции, а оказалось имеет.
« Последнее редактирование: 06-04-2016, 10:17:30 от UZzip »

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: рандомная способность
« Ответ #14 : 06-04-2016, 10:47:57 »
Такое дело, я читал что не имеет значения куда ставить функции, а оказалось имеет.
Отреж голову тому кто это сказал, полный бред. Почитай про области видимости на досуге.