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

Дикий Пёс

Активный
28 Июн 2017
108
14
18
Проект
HOOK WARS REBORN
Реакции
23 0 1
как закрыть вижен зданием?
 
20 Дек 2016
388
45
28
10
Реакции
57 0 0
local knockback = {
duration = 0.4,
knockback_duration = 0.4,
knockback_distance = 400,
knockback_height = 900,
center_x = self.target:GetAbsOrigin().x,
center_y = self.target:GetAbsOrigin().y,
center_z = self.target:GetAbsOrigin().z,
should_stun = 0,
}
unit:AddNewModifier( self:GetCaster(), self, "modifier_boss_kotl_blinding_light_knockback", knockback )
Почему юнит не толкается? Модифиер на 0.4 сек накладывается и ничего не проиcходит
Эти параметры (кроме duration офк) работают только для дотовских модификаторов, которые подразумевают кнокбэк.
 

shesmu

Активный
22 Фев 2018
128
17
18
22
Реакции
24 0 2
modifier_knockback надо было использовать, а не кастомный, теперь понял что имели ввиду
 
Реклама:
20 Дек 2016
388
45
28
10
Реакции
57 0 0
а чтобы само здание вообще никак тип?
Можно прямо в здании сделать CreateTempTree и заменить ему модель на пустую. Правда тут есть две проблемы: CreateTempTree не возвращает ссылки на созданное дерево, и его скорее всего можно будет срубить (но в этом я не уверен, если модель будут пустая)
Возможно есть и адекватные способы.
 

Thunder Lane

Пользователь
30 Сен 2018
40
5
8
19
Проект
Thunder's COT RPG
Реакции
6 0 0

Дикий Пёс

Активный
28 Июн 2017
108
14
18
Проект
HOOK WARS REBORN
Реакции
23 0 1
Можно прямо в здании сделать CreateTempTree и заменить ему модель на пустую. Правда тут есть две проблемы: CreateTempTree не возвращает ссылки на созданное дерево, и его скорее всего можно будет срубить (но в этом я не уверен, если модель будут пустая)
Возможно есть и адекватные способы.
проблема в том, что все эти способы блокируют вижен и на само здание и его становится невозможно атаковать с одной из сторон, а в моей ситуации сторон для атаки всего две
UPD: решил проблему поставив два здания и между ними obstruction, и когда рушится одно убивать второе
 
Последнее редактирование:
Реклама:

-ExotiC-

Администратор
Команда форума
11 Авг 2014
437
25
28
23
customgames.ru
Проект
Trolls vs Elves
Реакции
30 0 0
Как прописать доп. урон с руки как у МКБ
Код:
// Rewrite of Monkey King Bar
// Author: Rook
// Date: January 30, 2015

"item_monkey_king_bar_datadriven"
{
    // General
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"                        "item_datadriven"
    "ID"                            "1135"  //Valve's version of this item uses the ID "135".
    "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "Model"                            "models/props_gameplay/red_box.vmdl"
    "Effect"                        "particles/generic_gameplay/dropped_item.vpcf"
    "AbilityTextureName"            "item_monkey_king_bar"
    
    // Item Info
    //-------------------------------------------------------------------------------------------------------------
    "ItemCost"                        "5400"
    "ItemShopTags"                    "damage;attack_speed;hard_to_tag"
    "ItemQuality"                    "epic"
    "ItemAliases"                    "mkb;monkey king bar"
    "ItemDeclarations"                "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_IN_SPEECH | DECLARE_PURCHASES_TO_SPECTATORS"

    // Special   
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_damage"            "88"
        }
        "02"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_attack_speed"    "15"
        }
        "03"
        {
            "var_type"                "FIELD_INTEGER"
            "bash_chance"            "35"
        }
        "04"
        {
            "var_type"                "FIELD_INTEGER"
            "bash_damage"            "100"
        }
        "05"
        {
            "var_type"                "FIELD_FLOAT"
            "bash_stun"                "0.01"
        }
    }
    
    "Modifiers"
    {
        "modifier_item_monkey_king_bar_datadriven"
        {
            "Passive"            "1"
            "IsHidden"            "1"
            "Attributes"         "MODIFIER_ATTRIBUTE_MULTIPLE"
            
            "Properties"
            {
                "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE"        "%bonus_damage"
                "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"        "%bonus_attack_speed"
            }
            
            "States"
            {
                "MODIFIER_STATE_CANNOT_MISS"            "MODIFIER_STATE_VALUE_ENABLED"  //When attacking uphill, cannot miss units but can still miss buildings.
            }
            
            "OnAttackLanded"
            {
                "Random"
                {
                    "Chance"            "%bash_chance"
                    "PseudoRandom"        "DOTA_PSEUDO_RANDOM_ITEM_MKB"
                    "OnSuccess"
                    {
                        "Damage"
                        {
                            "Target"        "TARGET"
                            "Type"            "DAMAGE_TYPE_MAGICAL"
                            "Damage"        "%bash_damage"
                        }
                        
                        "ApplyModifier"
                        {
                            "Target"            "TARGET"
                            "ModifierName"        "modifier_item_monkey_king_bar_datadriven_bash"
                        }
                        
                        "FireSound"
                        {
                            "EffectName"        "DOTA_Item.MKB.Minibash"
                            "Target"            "TARGET"
                        }
                    }
                }
            }
        }
        "modifier_item_monkey_king_bar_datadriven_bash"
        {
            "Duration"              "%bash_stun"
            "Passive"                "0"
            "IsHidden"                "0"
            "IsBuff"                "0"
            "IsDebuff"                "1"
            "IsPurgable"            "1"
            
            "EffectName"            "particles/generic_gameplay/generic_stunned.vpcf"
            "EffectAttachType"      "follow_overhead"
            "OverrideAnimation"     "ACT_DOTA_DISABLED"
            
            "States"
            {
                "MODIFIER_STATE_STUNNED"         "MODIFIER_STATE_VALUE_ENABLED"
            }
        }
    }
}
https://github.com/Pizzalol/SpellLi...npc/items/item_monkey_king_bar_datadriven.txt
 
20 Дек 2016
388
45
28
10
Реакции
57 0 0
Брал скрипт создания иллюзий со скилла наги в SpellLibrary. Проблема в том, что когда убивают кастера, голда, которую получают при смерти кастера, увеличивается в столько раз, сколько находится в живых его иллюзий. Как это исправить?
Как временную заплатку можно использовать SetModifyGoldFilter
А можно и не как временную. Просто я даже не уверен, что такой баг был всегда.

Еще можно попробовать убрать строчку
Код:
        illusion:SetPlayerID(caster:GetPlayerID())
 

Thunder Lane

Пользователь
30 Сен 2018
40
5
8
19
Проект
Thunder's COT RPG
Реакции
6 0 0
Как прописать кастомное кол-во опыта на каждый уровень в баребонесах , я просто не могу понять
Вот код который там
-- Fill this table up with the required XP per level if you want to change it
XP_PER_LEVEL_TABLE = {}
for i=1,MAX_LEVEL do
XP_PER_LEVEL_TABLE = i * 600
end
И еще одно почему то на первый уровень нужно 1200 опыта , а потом на все остальные 600 (надо что бы с первого было 600)
 

-ExotiC-

Администратор
Команда форума
11 Авг 2014
437
25
28
23
customgames.ru
Проект
Trolls vs Elves
Реакции
30 0 0
Как прописать кастомное кол-во опыта на каждый уровень в баребонесах , я просто не могу понять
Вот код который там
-- Fill this table up with the required XP per level if you want to change it
XP_PER_LEVEL_TABLE = {}
for i=1,MAX_LEVEL do
XP_PER_LEVEL_TABLE = i * 600
end
И еще одно почему то на первый уровень нужно 1200 опыта , а потом на все остальные 600 (надо что бы с первого было 600)
Это итерация (цикл). После каждого цикла i будет увеличиваться на 1.

1: 1*600 = 600
2: 2*600 = 1200
3: 3*600 = 1800

Чтобы работало, надо дописать в settings.lua
Код:
USE_CUSTOM_HERO_LEVELS = true
MAX_LEVEL = 50
USE_CUSTOM_XP_VALUES = true
Или можешь просто использовать массивы, заполнив таблицу
Код:
XP_PER_LEVEL_TABLE = {}
XP_PER_LEVEL_TABLE[1] = 0
XP_PER_LEVEL_TABLE[2] = 30
XP_PER_LEVEL_TABLE[3] = 50
XP_PER_LEVEL_TABLE[4] = 50
XP_PER_LEVEL_TABLE[5] = 50
XP_PER_LEVEL_TABLE[6] = 50
XP_PER_LEVEL_TABLE[7] = 125
XP_PER_LEVEL_TABLE[8] = 150
XP_PER_LEVEL_TABLE[9] = 175
XP_PER_LEVEL_TABLE[10] = 200
XP_PER_LEVEL_TABLE[11] = 250
XP_PER_LEVEL_TABLE[12] = 300
XP_PER_LEVEL_TABLE[13] = 350
XP_PER_LEVEL_TABLE[14] = 400
XP_PER_LEVEL_TABLE[15] = 500
XP_PER_LEVEL_TABLE[16] = 600
XP_PER_LEVEL_TABLE[17] = 700
XP_PER_LEVEL_TABLE[18] = 800
XP_PER_LEVEL_TABLE[19] = 900
XP_PER_LEVEL_TABLE[20] = 1000
XP_PER_LEVEL_TABLE[21] = 1200
XP_PER_LEVEL_TABLE[22] = 1400
XP_PER_LEVEL_TABLE[23] = 1600
XP_PER_LEVEL_TABLE[24] = 1800
XP_PER_LEVEL_TABLE[25] = 2000
XP_PER_LEVEL_TABLE[26] = 2200
XP_PER_LEVEL_TABLE[27] = 2400
XP_PER_LEVEL_TABLE[28] = 2600
XP_PER_LEVEL_TABLE[29] = 2800
XP_PER_LEVEL_TABLE[30] = 3000
XP_PER_LEVEL_TABLE[31] = 3200
XP_PER_LEVEL_TABLE[32] = 3400
XP_PER_LEVEL_TABLE[33] = 3600
XP_PER_LEVEL_TABLE[34] = 3800
XP_PER_LEVEL_TABLE[35] = 4000
XP_PER_LEVEL_TABLE[36] = 4200
XP_PER_LEVEL_TABLE[37] = 4400
XP_PER_LEVEL_TABLE[38] = 4600
XP_PER_LEVEL_TABLE[39] = 4800
XP_PER_LEVEL_TABLE[40] = 5000
XP_PER_LEVEL_TABLE[41] = 5500
XP_PER_LEVEL_TABLE[42] = 6000
XP_PER_LEVEL_TABLE[43] = 6500
XP_PER_LEVEL_TABLE[44] = 7000
XP_PER_LEVEL_TABLE[45] = 7500
XP_PER_LEVEL_TABLE[46] = 8000
XP_PER_LEVEL_TABLE[47] = 8500
XP_PER_LEVEL_TABLE[48] = 9000
XP_PER_LEVEL_TABLE[49] = 9500
XP_PER_LEVEL_TABLE[50] = 10000
Читай здесь: https://customgames.ru/forum-old/index.php?topic=790.0 я там подробнее объяснял
 

Thunder Lane

Пользователь
30 Сен 2018
40
5
8
19
Проект
Thunder's COT RPG
Реакции
6 0 0
Это итерация (цикл). После каждого цикла i будет увеличиваться на 1.

1: 1*600 = 600
2: 2*600 = 1200
3: 3*600 = 1800

Чтобы работало, надо дописать в settings.lua
Код:
USE_CUSTOM_HERO_LEVELS = true
MAX_LEVEL = 50
USE_CUSTOM_XP_VALUES = true
Или можешь просто использовать массивы, заполнив таблицу
Код:
XP_PER_LEVEL_TABLE = {}
XP_PER_LEVEL_TABLE[1] = 0
XP_PER_LEVEL_TABLE[2] = 30
XP_PER_LEVEL_TABLE[3] = 50
XP_PER_LEVEL_TABLE[4] = 50
XP_PER_LEVEL_TABLE[5] = 50
XP_PER_LEVEL_TABLE[6] = 50
XP_PER_LEVEL_TABLE[7] = 125
XP_PER_LEVEL_TABLE[8] = 150
XP_PER_LEVEL_TABLE[9] = 175
XP_PER_LEVEL_TABLE[10] = 200
XP_PER_LEVEL_TABLE[11] = 250
XP_PER_LEVEL_TABLE[12] = 300
XP_PER_LEVEL_TABLE[13] = 350
XP_PER_LEVEL_TABLE[14] = 400
XP_PER_LEVEL_TABLE[15] = 500
XP_PER_LEVEL_TABLE[16] = 600
XP_PER_LEVEL_TABLE[17] = 700
XP_PER_LEVEL_TABLE[18] = 800
XP_PER_LEVEL_TABLE[19] = 900
XP_PER_LEVEL_TABLE[20] = 1000
XP_PER_LEVEL_TABLE[21] = 1200
XP_PER_LEVEL_TABLE[22] = 1400
XP_PER_LEVEL_TABLE[23] = 1600
XP_PER_LEVEL_TABLE[24] = 1800
XP_PER_LEVEL_TABLE[25] = 2000
XP_PER_LEVEL_TABLE[26] = 2200
XP_PER_LEVEL_TABLE[27] = 2400
XP_PER_LEVEL_TABLE[28] = 2600
XP_PER_LEVEL_TABLE[29] = 2800
XP_PER_LEVEL_TABLE[30] = 3000
XP_PER_LEVEL_TABLE[31] = 3200
XP_PER_LEVEL_TABLE[32] = 3400
XP_PER_LEVEL_TABLE[33] = 3600
XP_PER_LEVEL_TABLE[34] = 3800
XP_PER_LEVEL_TABLE[35] = 4000
XP_PER_LEVEL_TABLE[36] = 4200
XP_PER_LEVEL_TABLE[37] = 4400
XP_PER_LEVEL_TABLE[38] = 4600
XP_PER_LEVEL_TABLE[39] = 4800
XP_PER_LEVEL_TABLE[40] = 5000
XP_PER_LEVEL_TABLE[41] = 5500
XP_PER_LEVEL_TABLE[42] = 6000
XP_PER_LEVEL_TABLE[43] = 6500
XP_PER_LEVEL_TABLE[44] = 7000
XP_PER_LEVEL_TABLE[45] = 7500
XP_PER_LEVEL_TABLE[46] = 8000
XP_PER_LEVEL_TABLE[47] = 8500
XP_PER_LEVEL_TABLE[48] = 9000
XP_PER_LEVEL_TABLE[49] = 9500
XP_PER_LEVEL_TABLE[50] = 10000
Читай здесь: https://customgames.ru/forum-old/index.php?topic=790.0 я там подробнее объяснял
Хотелось бы сделать циклом , но что-то идет не так

Код заполнен как надо :
USE_CUSTOM_HERO_LEVELS = true -- Should we allow heroes to have custom levels?
MAX_LEVEL = 99 -- What level should we let heroes get to?
USE_CUSTOM_XP_VALUES = true -- Should we use custom XP values to level up heroes, or the default Dota numbers?

Ну и как я понял в цикле ничего менять не надо кроме цифры 600 , но при этом на первом уровне надо 1200 опыта (хоть и написано 600) 1 скрин

Ну и этот код остался не измененным
XP_PER_LEVEL_TABLE = {}
for i=1,MAX_LEVEL do
XP_PER_LEVEL_TABLE = i * 600
end

А через функцию SetCustomHeroMaxLevel я не понял как делать :(

Прочитал там , но не понимаю куда вставлять этот код

if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end

А также таблицу с опытом
 

Вложения

  • 766.9 KB Просмотры: 2
Реклама:

-ExotiC-

Администратор
Команда форума
11 Авг 2014
437
25
28
23
customgames.ru
Проект
Trolls vs Elves
Реакции
30 0 0
Вместо этого куска
XP_PER_LEVEL_TABLE = {}
for i=1,MAX_LEVEL do
XP_PER_LEVEL_TABLE = i * 600
end
Вот этот вставь
Код:
XP_PER_LEVEL_TABLE = {}
XP_PER_LEVEL_TABLE[1] = 0
for i=2,MAX_LEVEL do
  XP_PER_LEVEL_TABLE[i] = XP_PER_LEVEL_TABLE[i-1] + i * 600
end
У тебя твои новые значения не присваиваются к массивам, а с каждой итерацией перезаписывают друг друга, т.к. нет индекса.



А через функцию SetCustomHeroMaxLevel я не понял как делать
В той теме оказывается не для Barebones была инфа.
 
Последнее редактирование:
20 Дек 2016
388
45
28
10
Реакции
57 0 0
28 Июн 2018
116
1
18
37
Проект
s
Реакции
1 0 4
MODIFIER_PROPERTY_MOVESPEED_MAX
Работает вроде только для луа
Lua:
modifier_movespeed_cap = class({})

function modifier_movespeed_cap:DeclareFunctions()
    local funcs = {
        MODIFIER_PROPERTY_MOVESPEED_MAX,
    }

    return funcs
end

function modifier_movespeed_cap:GetModifierMoveSpeed_Max( params )
    return 1000
end

function modifier_movespeed_cap:IsHidden()
    return true
end
???
 
Реклама:
Реклама: