- 25 Сен 2015
- 2,348
- 41
Прежде всего хочу сказать спасибо ребятам из петров.
Их код помог мне создать этот код.
И напоследок, не забудьте подгрузить нужные модельки для этих героев, например так.
Иначе у вас всегда будут получаться error man или error girl.
Если у кого-то есть еще какие идеи или если кто видит какую дикость в коде, отписываемся, будем править.
Их код помог мне создать этот код.
Код:
-- В данном примере, мы будем менять героев игрокам темной стороны
-- Я изначально ограничиваю число плохишей до двух игроков и уже с ними буду работать
--собственно, как нам отличить первого от второго: с помощью счетчика
roomBG = 1 --почему 1? потому что 42
function FT:InitGameMode()
--Создаем слушателя событий, который слушает смену стадий игры.
ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(FT, 'OnGameRulesStateChange'), self)
end
-- Оп, функция, которую выполним, когда стадия игры сменится
function FT:OnGameRulesStateChange(keys)
--что же за стадия сейчас?
local newState = GameRules:State_Get()
--если это та самая, а именно пик героя, тооо...
if newState == DOTA_GAMERULES_STATE_HERO_SELECTION then
--запускаем функцию насилия
FT:ForcedToPlay()
end
end
function FT:ForcedToPlay()
print("----------------------------------------ForcedToPlay----------------------------------------")
for i=0,5 do --у меня в игре 6 мест, 2е плохих, 4 хороших: реализуйте под себя
if PlayerResource:IsValidPlayer(i) then --если это "реальный" чувак
local player = PlayerResource:GetPlayer(i) --пробиваем его по ip
local teamNumb = player:GetTeamNumber() --пробиваем его адрес по ip
local name = GetTeamName(teamNumb) -- пробиваем его семью по ip
if name == "#DOTA_BadGuys" then --уу, если он плохиш, то наказываем его
if roomBG == 1 then
--плюем на его права и насильно даем героя undying
player = CreateHeroForPlayer("npc_dota_hero_undying",player)
--зачем я делаю именно так "player =", смотрите ниже
end
--я говорил, что у меня будет двое плохишей
if roomBG == 2 then
player = CreateHeroForPlayer("npc_dota_hero_life_stealer",player)
--этому я еще и подарок в мягком месте оставлю, вот зачем "player ="
player:AddItemByName("item_ultimate_scepter")
end
roomBG = roomBG+1
end
end
end
end
И напоследок, не забудьте подгрузить нужные модельки для этих героев, например так.
Иначе у вас всегда будут получаться error man или error girl.
Если у кого-то есть еще какие идеи или если кто видит какую дикость в коде, отписываемся, будем править.
Последнее редактирование модератором: