- 20 Авг 2015
- 21
- 0
Привет. Помогите плз. После попытки создать строителя для тд перестали работать все CreateUnitByName()...
Раньше работали как надо. Пытался скопировать в другой мод, там тоже не работает.
Код на скил постройки башен брал с гайда. Но если вдруг надо то вот:
Код:
function GameMode:OnPlayerPickHero(keys)
print ('[BAREBONES] OnPlayerPickHero')
DeepPrintTable(keys)
local heroClass = keys.hero
local heroEntity = EntIndexToHScript(keys.heroindex)
local player = EntIndexToHScript(keys.player)
Say(nil,'game in progres', false)
--local pID = PlayerResource:GetNthPlayerIDOnTeam(2, 1)
local pID = player:GetPlayerID()
local TeamNum = player:GetTeamNumber()
print('pID = '..pID)
Say(nil,'pID = ' .. pID, false)
if PlayerResource:IsValidPlayer(pID) then
print('1')
if PlayerResource:HasSelectedHero( pID ) then
print('2')
if PlayerResource:GetConnectionState(pID) == 2 then
print('3')
print('pID = ' .. pID)
print('TeamNum = ' .. TeamNum)
if TeamNum == 2 then
print('in tn=2')
local hero = PlayerResource:GetPlayer(pID):GetAssignedHero()
--local TeNum = PlayerResource:GetTeam(pID)
local pos1 =Entities:FindByName( nil, "good_shop"):GetAbsOrigin()
local unit1 = CreateUnitByName("npc_good_shop", pos1, false, hero, hero:GetOwner(), 2 )
GameRules.bar1[pID+1] = unit1
if unit1 ~= nil then
print('?')
unit1:SetControllableByPlayer( pID, false )
unit1:SetOwner( hero )
end
--[[for i = 1, 6, 1 do
print('bar1[' .. i .. '] = ' .. bar1[i])
end]]
elseif TeamNum == 3 then
print('in tn=3')
local hero = PlayerResource:GetPlayer(pID):GetAssignedHero()
--local TeNum = PlayerResource:GetTeam(pID)
local pos1 =Entities:FindByName( nil, "bad_shop"):GetAbsOrigin()
local unit1 = CreateUnitByName("npc_bad_shop", pos1, false, hero, hero:GetOwner(), 3 )
GameRules.bar1[pID+1] = unit1
if unit1 ~= nil then
unit1:SetControllableByPlayer( pID, false )
unit1:SetOwner( hero )
end
--[[for i = 1, 6, 1 do
print('bar1[' .. i .. '] = ' .. bar1[i])
end]]
end
end
end
end
end
Код на скил постройки башен брал с гайда. Но если вдруг надо то вот:
Код:
PLACED_BUILDING_RADIUS = 64.0
function Build_Swordman(keys)
-- Нам потребуется несколько переменных, они должны быть понятны
blocking_counter = 0
attempt_place_location = keys.target_points[1]
-- Как же сложно! В основном, эта строка находит все объекты внутри PLACED_BUILDING_RADIUS от того, где мы хотим поставить башню
-- Цикл для подсчета
for _,thing in pairs(Entities:FindAllInSphere(GetGroundPosition(attempt_place_location, nil), PLACED_BUILDING_RADIUS) ) do
blocking_counter = blocking_counter + 1
end
print(blocking_counter .. " blockers")
-- Если есть объекты, которые мешают размещению башни, тогда не строим здесь, иначе - размещаем
if blocking_counter == 0 then
tower = CreateUnitByName("npc_dota_building_swordman", keys.target_points[1], false, nil, nil,keys.caster:GetPlayerOwner():GetTeam() )
tower:SetControllableByPlayer(keys.caster:GetPlayerID(), true)
end
end
Последнее редактирование модератором: