Простые вопросы #3

SniperX

Друзья CG
26 Фев 2018
535
97
steamcommunity.com
Проект
Dota 2 Classic 6.84
Как использовать кастомный магазин?
В хаммере триггеру выдал имя кастомного магазина, в shops.txt прописал этот магазин, предметам выдал "CustomShop" "1". Вызов GameRules:GetGameModeEntity():AddItemToCustomShop("item_aghanims_shard", "side_shop", "1") крашит доту.
KV:
"dota_shops"
{
    "custom"
    {
        "side_shop"
        {
            "1"
            {
                "item"        "item_aghanims_shard"
            }
            "2"
            {
            }
        }
    }
}

1633717646087.png 1633717725902.png
 

stranger568

Активный
7 Сен 2015
102
23
bmemov.ru
Проект
Birzha Memov
Как использовать кастомный магазин?
В хаммере триггеру выдал имя кастомного магазина, в shops.txt прописал этот магазин, предметам выдал "CustomShop" "1". Вызов GameRules:GetGameModeEntity():AddItemToCustomShop("item_aghanims_shard", "side_shop", "1") крашит доту.
KV:
"dota_shops"
{
    "custom"
    {
        "side_shop"
        {
            "1"
            {
                "item"        "item_aghanims_shard"
            }
            "2"
            {
            }
        }
    }
}

Посмотреть вложение 1422 Посмотреть вложение 1423
Тебе надо создать отдельную папку shops
и сделать для каждой карты имякарты.txt
и внутри уже инфа магазина
Чекни как это сделано в aghanim
 
  • Нравится
Реакции: SniperX

Сандаль

Новичок
15 Окт 2021
7
0
Контекст:
Есть у вещей такой ключ - "ItemCastOnPickup", он часто в кастомках используется для всяких томов аттрибутов и прочих моментально применяемых эффектов не связанных с инвентарём напрямую. У этого ключа есть некоторая особенность работы - если у героя все слоты инвентаря заняты, то предмет не поднять и не купить. Чисто для полноты картины также упомяну что в одной ситуации купить предмет с полным инвентарём всёже можно - если предмет продаётся в основном магазине - тогда он попадёт в тайник игрока, что считается как pickup, и предмет активируется.

Проблема:
Допустим я хочу сделать предмет, купив который игрок автоматом кастует ульту зевса. Должно быть всё равно есть ли у героя свободный слот в инвентаре, но предмет должен быть покупаем только в особом магазине.

Чтобы предмет можно было купить только в конкретном магазине, нужно пометить его либо ключем "SecretShop" либо "SideShop". Оба этих ключа не дадут купить предмет в основном магазине, но также запретят помещать предмет в тайник при покупке. Получается противоречивая ситуация - либо можно покупать только в конкретном магазине, но должен быть пустой слот в инвентаре, либо можно покупать предмет где угодно, но пустой слот инвентаря не требуется.

Как-то можно иcхитриться и сделать вещь, которая покупается не требуя слота, но купить её можно только находясь рядом с конкретным магазином?
 
Последнее редактирование:

tender322

Новичок
21 Окт 2021
9
0
QQ.
Ребят, в чем проблема?
Ошибка:"Entity I/O attempted to invoke unknown private script function "Creepsv1" on entity "tp_first"!"
Создал триггер на телепорт, герой телепортируется.
Добавил к триггеру появление крипов, крипы не появляются. Хотя по архитектуре одинаковые функции. Также триггеры одинаковые 1231.png
function tp_1(event)
print("start")
local unit = event.activator
local point = Entities:FindByName(nil, "tpp1"):GetAbsOrigin()
event.activator:SetAbsOrigin(point)
FindClearSpaceForUnit(event.activator, point, false)
event.activator:Stop()
end
function Creepsv1(event)
print("StartWave")
local SP1 = Entities:FindByName(nil, "spawner1")
local WP1 = Entities:FindByName(nil,"way1")
local count = 3
local repeat_interval = 10

Timers:CreateTimer(5, function()
For i=1, count do
Timers:CreateTimer(0.1,function()
local unit = CreateUnitByName("creepv1", SP1,true,nil,nil, DOTA_TEAM_NEUTRALS)
unit:SetInitialGoalEntity(WP1)
Timers:RemoveTimer(0.1)
end)
return repeat_interval
end)
print("EndWave")
end
 

Сандаль

Новичок
15 Окт 2021
7
0
QQ.
Ребят, в чем проблема?
Думаю тут недостаточно информации для того чтобы кто-то тебе помог. Чисто вилами по воде могу предложить проверить что функция Creepsv1 действительно лежит в нужном файле, и перезапустить инструменты разработки, на случай если они что-то кешируют и не видят изменений, которые внесены после запуска.
 

SniperX

Друзья CG
26 Фев 2018
535
97
steamcommunity.com
Проект
Dota 2 Classic 6.84
QQ.
Ребят, в чем проблема?
Ошибка:"Entity I/O attempted to invoke unknown private script function "Creepsv1" on entity "tp_first"!"
Создал триггер на телепорт, герой телепортируется.
Добавил к триггеру появление крипов, крипы не появляются. Хотя по архитектуре одинаковые функции. Также триггеры одинаковые Посмотреть вложение 1426
function tp_1(event)
print("start")
local unit = event.activator
local point = Entities:FindByName(nil, "tpp1"):GetAbsOrigin()
event.activator:SetAbsOrigin(point)
FindClearSpaceForUnit(event.activator, point, false)
event.activator:Stop()
end
function Creepsv1(event)
print("StartWave")
local SP1 = Entities:FindByName(nil, "spawner1")
local WP1 = Entities:FindByName(nil,"way1")
local count = 3
local repeat_interval = 10

Timers:CreateTimer(5, function()
For for i=1, count do
Timers:CreateTimer(0.1,function()
local unit = CreateUnitByName("creepv1", SP1,true,nil,nil, DOTA_TEAM_NEUTRALS)
unit:SetInitialGoalEntity(WP1)
Timers:RemoveTimer(0.1)
end)
end
return repeat_interval
end)
print("EndWave")
end
у тебя не хватает end для закрытия for. + For --> for
 

tender322

Новичок
21 Окт 2021
9
0
у тебя не хватает end для закрытия for. + For --> for
Все равно пишет "Entity I/O attempted to invoke unknown private script function "Creepsv1" on entity "tp_first"!"
function Creepsv1(event)
print("StartWave")
local SP1 = Entities:FindByName(nil, "spawner1")
local WP1 = Entities:FindByName(nil,"way1")
local count = 3

local repeat_interval = 10

Timers:CreateTimer(5, function()
for i=1, count do
Timers:CreateTimer(0.1,function()
local unit = CreateUnitByName("creepv1", SP1,true,nil,nil, DOTA_TEAM_NEUTRALS)
unit:SetInitialGoalEntity(WP1)
Timers:RemoveTimer(0.1)
end)
return repeat_interval
end
end)
print("EndWave")

end
 

tender322

Новичок
21 Окт 2021
9
0
Думаю тут недостаточно информации для того чтобы кто-то тебе помог. Чисто вилами по воде могу предложить проверить что функция Creepsv1 действительно лежит в нужном файле, и перезапустить инструменты разработки, на случай если они что-то кешируют и не видят изменений, которые внесены после запуска.
Создал отдельный lua для этой функции (управления спавна)
 

SniperX

Друзья CG
26 Фев 2018
535
97
steamcommunity.com
Проект
Dota 2 Classic 6.84
Создал отдельный lua для этой функции (управления спавна)
так в тот же файл функцию пропиши, на сколько я знаю, нельзя подключить 2 lua файла к 1му триггеру (без использования require)
 

tender322

Новичок
21 Окт 2021
9
0
так в тот же файл функцию пропиши, на сколько я знаю, нельзя подключить 2 lua файла к 1му триггеру (без использования require)
Спасибо, заработало, но теперь он не спавнит юнитов "Cannot create an entity because entity class is NULL -1"
 

SniperX

Друзья CG
26 Фев 2018
535
97
steamcommunity.com
Проект
Dota 2 Classic 6.84
Спасибо, заработало, но теперь он не спавнит юнитов "Cannot create an entity because entity class is NULL -1"
Это ошибка с юнитами, попробуй заспавнить npc_dota_neutral_alpha_wolf, если он спавнится, то проблема в юните, в ошибке написано, что с бейзклассом юнита что-то не то
 

tender322

Новичок
21 Окт 2021
9
0
Это ошибка с юнитами, попробуй заспавнить npc_dota_neutral_alpha_wolf, если он спавнится, то проблема в юните, в ошибке написано, что с бейзклассом юнита что-то не то
Да, спасибо, получилось. А когда скрипт меняешь не обязательно всё билдить? Можно же просто запустить?
 
Последнее редактирование:

tender322

Новичок
21 Окт 2021
9
0
В чем проблема? Юнит не идет по пути

local WP1 = Entities:FindByName(nil,"way0.5") или local WP1 = Entities:FindByName(nil,"way1") (2 точки)
unit:SetInitialGoalEntity(WP1)
 
Последнее редактирование:

Сандаль

Новичок
15 Окт 2021
7
0
В чем проблема? Юнит не идет по пути
я тоже не смог заставить SetInitialGoalEntity работать. В итоге брал позицию из сущности и использовал её для SetInitialGoalPosition. Этот вариант рабочий, но при условии что сущность у тебя никуда не ходит.

Есть ещё вариант что у тебя FindByName просто не находит ничего. Проверь не нулевой ли print(WP1).
 

tender322

Новичок
21 Окт 2021
9
0
я тоже не смог заставить SetInitialGoalEntity работать. В итоге брал позицию из сущности и использовал её для SetInitialGoalPosition. Этот вариант рабочий, но при условии что сущность у тебя никуда не ходит.

Есть ещё вариант что у тебя FindByName просто не находит ничего. Проверь не нулевой ли print(WP1).
Я вывожу коорды, там они есть.. Ты про info enitity?
 

sdelalmolodec

Новичок
21 Ноя 2021
2
0
Проект
не скажу
Как сделать чтоб койл работал и на крипов? Нужно создавать свою кастомную способность или изменить у пака как-то? Подскажите как, буду благодарен.
Код:
    //=================================================================================================================
    // Puck: Dream Coil
    //=================================================================================================================
    "puck_dream_coil"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "ID"                    "5073"                                                        // unique ID number for this ability.  Do not change this once established or it will invalidate collected stats.
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_AOE | DOTA_ABILITY_BEHAVIOR_POINT"
        "AbilityType"                    "DOTA_ABILITY_TYPE_ULTIMATE"
        "AbilityUnitDamageType"            "DAMAGE_TYPE_MAGICAL"   
        "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO"
        "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
        "FightRecapLevel"                "2"
        "HasScepterUpgrade"            "1"
        "AbilitySound"                    "Hero_Puck.Dream_Coil"

        // Casting
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCastRange"                "750"
        "AbilityCastPoint"                "0.1 0.1 0.1"
        "AbilityCastAnimation"        "ACT_DOTA_CAST_ABILITY_5"

        // Time       
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCooldown"                "80 60 40"

        // Cost
        //-------------------------------------------------------------------------------------------------------------
        "AbilityManaCost"                "100 150 200"
                
        // Stats
        //-------------------------------------------------------------------------------------------------------------
        "AbilityModifierSupportValue"    "0.5"    // Does two modifiers

        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                    "FIELD_FLOAT"
                "coil_duration"                "6.0 6.0 6.0"
            }
            "02"
            {
                "var_type"                    "FIELD_INTEGER"
                "coil_break_radius"            "600 600 600"
            }
            "03"
            {
                "var_type"                    "FIELD_FLOAT"
                "stun_duration"                "0.5"
            }
            "04"
            {
                "var_type"                    "FIELD_FLOAT"
                "coil_stun_duration"        "1.8 2.4 3.0"
            }
            "05"
            {
                "var_type"                    "FIELD_INTEGER"
                "coil_break_damage"            "300 400 500"
            }
            "06"
            {
                "var_type"                    "FIELD_INTEGER"
                "coil_radius"                "375 375 375"
            }           
            "07"
            {
                "var_type"                    "FIELD_FLOAT"
                "coil_duration_scepter"        "8"
            }
            "08"
            {
                "var_type"                    "FIELD_INTEGER"
                "coil_break_damage_scepter"    "400 550 700"
            }
            "09"
            {
                "var_type"                    "FIELD_FLOAT"
                "coil_stun_duration_scepter"        "1.5 3 4.5"
            }
        }
    }
 
Реклама: