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

Не работает CreateUnitByName()

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

Оффлайн Captain_Pan

  • 21
  • Мощь: 0
Не работает CreateUnitByName()
« : 10-10-2016, 21:46:01 »
Привет. Помогите плз. После попытки создать строителя для тд перестали работать все 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

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: Не работает CreateUnitByName()
« Ответ #1 : 10-10-2016, 22:54:47 »
Во первых, какую ошибку в консоли пишет?

Оффлайн Captain_Pan

  • 21
  • Мощь: 0
Re: Не работает CreateUnitByName()
« Ответ #2 : 10-10-2016, 23:06:18 »
Сори. Раньше не замечал, потомучто отслеживал скрипты.
[ W Entity System        ]: Cannot create an entity because entity class is NULL -1
[   Entity System        ]: SERVER: npc_dota_hero_antimage(CDOTA_Unit_Hero_AntiMage) 'npc_dota_hero_antimage' [316] thinking for 51.97 ms!!!

Есть идеи, в чем ошибка?

p.s.
Вроди исправил. Ошибка гдето в новом нпс который я пытался создать.Удалил и все заработало) Правда хочется вернуть башенку. Вот код, где накосячил?
Код
"npc_dota_building_swordman"
{
// Что мы ходим видеть - моделька
"Model" "models/heroes/wraith_king/wraith_frost.vmdl"
"BaseClass" "npc_dota_creature"
// Насколько большой масштаб. Относится к PLACED_BUILDING_RADIUS
"BoundsHullName" "DOTA_HULL_SIZE_HUGE"

"ModelScale" ".5"
"Level" "1"
// Abilities
//----------------------------------------------------------------
"Ability1" "" // Ability 1.
"Ability2" "" // Ability 2.
"Ability3" "" // Ability 3.
"Ability4" "" // Ability 4.
"Ability5" "" // Ability 5.
"Ability6" "" // Ability 6 - Extra.
"Ability7" "" // Ability 7 - Extra.
"Ability8" "" // Ability 8 - Extra.

// Armor
//----------------------------------------------------------------
"ArmorPhysical" "0" // Physical protection.
"MagicalResistance" "0" // Magical protection.

// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_MELEE_ATTACK"
"AttackDamageMin" "10" // Damage range min.
"AttackDamageMax" "10" // Damage range max.
"AttackRate" "1.6" // Speed of attack.
"AttackAnimationPoint" "0.3" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "800" // Range within a target can be acquired.
"AttackRange" "128" // Range within a target can be attacked.
"ProjectileModel" "" // Particle system model for projectile.
"ProjectileSpeed" "" // Speed of projectile.


// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND" // Type of locomotion - ground, air
"MovementSpeed" "0" // Speed
"MovementTurnRate" "0.5" // Turning rate.

// Status
//----------------------------------------------------------------
"StatusHealth" "1" // Base health.
"StatusHealthRegen" "1" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0" // Mana regeneration rate.

}
}

p.p.s.
Ошибку нашел. Лишняя скобка закрывающая. Тему можно закрывать)
« Последнее редактирование: 10-10-2016, 23:42:29 от Captain_Pan »

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: Не работает CreateUnitByName()
« Ответ #3 : 11-10-2016, 10:17:17 »

Оффлайн I_GRIN_I

  • Продвинутый
  • 579
  • Мощь: 10
  • Научиться бы скриптить...
Re: Не работает CreateUnitByName()
« Ответ #4 : 11-10-2016, 16:17:50 »
Илья, Запрашиваемое изображение не может быть загружено.
Попробуйте позже.
:(
Не узнать мне, что там за мемес

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: Не работает CreateUnitByName()
« Ответ #5 : 11-10-2016, 17:34:34 »
Там Чак Норрис с большим пальцем.