[Pick] Рандомим героя

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Что нужно прописать, чтобы герою по его ID дать рандомного героя? Нужное время и условие в нужной функции у меня уже есть
Код:
	if GameRules:State_Get() == DOTA_GAMERULES_STATE_PRE_GAME then
		if _G.gamemode_done == false then
			CAddonTemplateGameMode:ApplyGamemode()
		end
		for i=0,9 do
			if PlayerResource:GetPlayer(i) ~= nil then
				if PlayerResource:GetPlayer(i):GetAssignedHero() == nil then
					
				end
			end
		end
	end
 

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Код:
PlayerResource:GetPlayer(i):MakeRandomHeroSelection()
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
ZLOY,
Код:
[  Server        ]: SV: PlayerID 0 was asked to make a random hero selection but randoming isn't enabled and !bForce
 

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Volvo может, да.
Попробуй так мб
Код:
local heroList = {"hero_name1","hero_name2","hero_name3"}
local i = RandomInt(1,#heroList)
local heroName = heroList[i]
CreateHeroForPlayer(heroName,player)
table.remove(heroList,i) -- для того чтобы герои не повторялись
 
Последнее редактирование модератором:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Только heroList не local, а где-то один раз объяви, а то герои таки будут повторяться
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
Только heroList не local, а где-то один раз объяви, а то герои таки будут повторяться
Так?:
Код:
			local heroList
			heroList = {"npc_dota_hero_razor","npc_dota_hero_razor","npc_dota_hero_razor"}
			local i = RandomInt(1,#heroList)
			local heroName = heroList[i]
			CreateHeroForPlayer(heroName,PlayerResource:GetPlayer(i))
			table.remove(heroList,i)
 
Последнее редактирование модератором:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
heroList вынеси из цикла
или вообще из функции
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
ZLOY, Ничего не происходит вообще. Мб потому что в файле
dota_npc_units.txt
нет героев?
Код:
function CAddonTemplateGameMode:InitGameMode()
	print( "Template addon is loaded." )
	_G.heroes_done = false
	_G.heroList = {"npc_dota_hero_razor","npc_dota_hero_razor","npc_dota_hero_razor"}
	GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
	CustomGameEventManager:RegisterListener("custom_gamemode", OnCustomGamemodeChanged )
end
Код:
   if _G.heroes_done == false then
     for i=0,9 do
      if PlayerResource:GetPlayer(i) ~= nil then
        if PlayerResource:GetPlayer(i):GetAssignedHero() == nil then
         local i = RandomInt(1,#heroList)
         local heroName = _G.heroList[i]
         CreateHeroForPlayer(heroName,PlayerResource:GetPlayer(i))
         table.remove(heroList,i)
        end
      end
     end
     _G.heroes_done = true
   end
 
Последнее редактирование модератором:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
В herolist.txt может отключен разор?
А так хз, тебе самому придется разбираться наверно)
 

EnDronist

Продвинутый
28 Апр 2016
231
0
Проект
Защитники Изобилия | Defenders of Abundance
ZLOY, Герой рандомится только во время CDOTA_Hud_Main::EventGameRulesStateChanged DOTA_GAMERULES_STATE_HERO_SELECTION
У меня сейчас получилось с помощью MakeRandomHeroSelection()
 
Реклама: