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

almazist1

Активный
17 Июл 2018
83
3
8
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
ошибок в консоле нет?
Код:
function GameMode:OnHeroPicked()  
    local playerCnt = PlayerResource:GetPlayerCount()
    for playerID = 0, playerCnt - 1 do
        local player = PlayerInstanceFromIndex(playerID + 1) -- index = playerID + 1
        local team = player:GetTeamNumber()
        if team == DOTA_TEAM_BADGUYS then
            PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
        end
    end  
end
ошибок нет.
 

.фи

Пользователь
21 Мар 2018
59
2
8
27
Реакции
2 0 0
Код:
modifier_translation = class({})

function modifier_translation:IsPurgable() return false end
function modifier_translation:IsDebuff() return false end
function modifier_translation:IsHidden()    return true end

function modifier_translation:DeclareFunctions()
    local funcs = { MODIFIER_PROPERTY_TRANSLATE_ACTIVITY_MODIFIERS, }
    return funcs
end

function modifier_translation:GetActivityTranslationModifiers()
    if self:GetParent():GetName() == "npc_dota_hero_rubick_dungeon" then
        return "brain_sap" -- // "AbilityCastAnimation"          "ACT_DOTA_CAST_ABILITY_5"
    end
    return 0
end
Вот вешаю я этот модифаер а рубик всё равно рукой не так машет как мне надо.
Что я забываю?)

Вопрос решён. Зависит от типа заклинания, channeled к примеру принимают только channeled_animations.
 
Последнее редактирование:
20 Дек 2016
566
113
28
11
Проект
DI:LS
Реакции
113 0 0
Создал абилку с модификатором на луа которые должны устанавливать реген хп на 30, но что-то пошло не так.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:DeclareFunction()
    local funcs =
    {
        MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT
    }
    return funcs
end

function dota_modifier_give_regen_health:GetModifierConstantHealthRegen(params)
    local Caster = self:GetCaster()
    local supertable =
    {
        a = 19,
        b = 12,
        c =
        {
            a = "dwee",
            b = 30,
        },
    }
    DeepPrintTable(params)
    DeepPrintTable(supertable)
    print('dota_modifier_give_regen_health print')
    Caster:SetBaseHealthRegen(30)
end
Хотел вывести таблицу params чтобы понять что принимает функция, но консоль молчит.
Как мне вывести переменные в консоль?
DeclareFunctions
 
14 Авг 2017
513
44
28
18
Проект
Battle Heroes Arena
Реакции
43 0 1
Создал абилку с модификатором на луа которые должны устанавливать реген хп на 30, но что-то пошло не так.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:DeclareFunction()
    local funcs =
    {
        MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT
    }
    return funcs
end

function dota_modifier_give_regen_health:GetModifierConstantHealthRegen(params)
    local Caster = self:GetCaster()
    local supertable =
    {
        a = 19,
        b = 12,
        c =
        {
            a = "dwee",
            b = 30,
        },
    }
    DeepPrintTable(params)
    DeepPrintTable(supertable)
    print('dota_modifier_give_regen_health print')
    Caster:SetBaseHealthRegen(30)
end
Хотел вывести таблицу params чтобы понять что принимает функция, но консоль молчит.
Как мне вывести переменные в консоль?
Значит ничего не принимает,а сэт решена хп только на крипов.
 
Реклама:

almazist1

Активный
17 Июл 2018
83
3
8
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
так же не работает
Код:
-- An NPC has spawned somewhere in game.  This includes heroes
function GameMode:OnNPCSpawned(keys)
  DebugPrint("[BAREBONES] NPC Spawned")
  DebugPrintTable(keys)

  local npc = EntIndexToHScript(keys.entindex)
 if npc:IsRealHero() then
    local team = GetTeamName(npc:GetTeamNumber())
    local playerID = npc:GetPlayerOwner():GetPlayerID()
    if team == 'DOTA_TEAM_BADGUYS' then
     PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
     end
     end
 
end
 
14 Авг 2017
513
44
28
18
Проект
Battle Heroes Arena
Реакции
43 0 1
так же не работает
Код:
-- An NPC has spawned somewhere in game.  This includes heroes
function GameMode:OnNPCSpawned(keys)
  DebugPrint("[BAREBONES] NPC Spawned")
  DebugPrintTable(keys)

  local npc = EntIndexToHScript(keys.entindex)
 if npc:IsRealHero() then
    local team = GetTeamName(npc:GetTeamNumber())
    local playerID = npc:GetPlayerOwner():GetPlayerID()
    if team == 'DOTA_TEAM_BADGUYS' then
     PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
     end
     end
 
end
Проверяй на номер команды. А не имя
 

almazist1

Активный
17 Июл 2018
83
3
8
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
Проверяй на номер команды. А не имя
не работает какой бы номер я не ставил
Код:
function GameMode:OnNPCSpawned(keys)
  DebugPrint("[BAREBONES] NPC Spawned")
  DebugPrintTable(keys)

  local npc = EntIndexToHScript(keys.entindex)
 if npc:IsRealHero() then
    local team = npc:GetTeam()
local teamNumber = npc:GetTeamNumber()
local playersinteam = PlayerResource:GetPlayerCountForTeam( teamNumber )
    local playerID = npc:GetPlayerOwner():GetPlayerID()
    if playersinteam == 1 then
     PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
     end
     end
 
end
 

danilkoo832832

Пользователь
5 Фев 2016
30
3
8
18
Реакции
3 0 0
Я решил продолжить экспериментировать.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:OnDestroy()
    local Caster = self:GetCaster()
    print("OnDestroy")
end

function dota_modifier_give_regen_health:OnCreated()
    local Caster = self:GetCaster()
    print("OnCreated")
end
Почему консоль выдаёт два раза "OnDestroy" и "OnCreated"

Вторая проблема в том что при использовании функции GetKills() мне видимо иногда возвращает nil выдавая ошибку в консоль.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:DeclareFunctions()
    local funcs =
    {
        MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
    }
    return funcs
end

--[[function dota_modifier_give_regen_health:OnRefresh(params) --Наверное лучше OnCreated
    self.basic_regen = self:GetTalentSpecialValueFor("basic_regen")
    self.regen_per_lasthit = self:GetTalentSpecialValueFor("regen_per_lasthit")
    self.damage_per_lasthit = self:GetTalentSpecialValueFor("damage_per_lasthit")
end]]--

function dota_modifier_give_regen_health:GetModifierConstantHealthRegen(params)
    local Caster = self:GetCaster()
    local HealthRegen = 5 * Caster:GetKills() --self.basic_regen + self.regen_per_lasthit * (Caster:GetKills() or 0)
    return HealthRegen
end

function dota_modifier_give_regen_health:GetModifierBaseAttack_BonusDamage(params)
    local Caster = self:GetCaster()
    local DamageBonus = 5 * Caster:GetKills() --self.damage_per_lasthit * (Caster:GetKills() or 0)
    return DamageBonus
end

И наконец 3 проблема. Как видно из закомментированной части я не смог добавить переменные из KV файла.
Сам KV
Код:
// Dota Heroes File
"DOTAAbilities"
{
    "dota_ability_damage_spell"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_damage_spell"
        "AbilityTextureName"        "dota_ability_damage_spell"
        "MaxLevel"                  "4"

        "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetType"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
        "AbilityUnitDamageType"     "DAMAGE_TYPE_PURE"
        "SpellImmunityType"            "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"        "SPELL_DISPELLABLE_YES"   

        "AbilityCastRange"              "700"
        "AbilityCastPoint"              "0.3"
        "AbilityCastAnimation"          "ACT_DOTA_CAST_ABILITY_1"

        "AbilityCooldown"               "8.0"
        "AbilityManaCost"               "100"
        "AbilityDamage"                 "75 130 200"
    }
    "dota_ability_give_regen_health"
    {
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_give_regen_health"
        "AbilityTextureName"        "medusa_mana_shield"
        "MaxLevel"                  "4"

        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
         "AbilityCastAnimation"            "ACT_INVALID"
        
        // Casting
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"          "FIELD_INTEGER"
                "basic_regen"             "30 40 50 60"
            }
            "02"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
            "03"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
        }
    }
}
Всегда использовался только этот KV и не изменялся.
 

xDes

Пользователь
8 Ноя 2018
42
1
8
30
Реакции
1 0 0
помогите, непонятно как и из-за чего пропадают крипы (становятся невидимыми)
 
Реклама:

.фи

Пользователь
21 Мар 2018
59
2
8
27
Реакции
2 0 0
2: danilkoo832832

У пуджика к примеру вместо последнего значение стоит nil
self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_pudge_rot_lua", nil )​
А у тебя пустая таблица значений {}
Можно конечно и -1 написать, как в случае с виверной... все мы учимся.

local Caster = self:GetCaster()
Зачем эти локальные переменные в функциях которые ничего не делают...

Не проще в OnAbilityPhaseStart объявить:
self.caster = self:GetCaster

и вызывай откуда хочешь

скрин
 
Последнее редактирование:

almazist1

Активный
17 Июл 2018
83
3
8
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
почему так?
function GameMode:OnNPCSpawned(keys)
DebugPrint("[BAREBONES] NPC Spawned")
DebugPrintTable(keys)

local npc = EntIndexToHScript(keys.entindex)
if npc:IsRealHero() then
local npc = player
local player = PlayerResource:GetPlayer(keys.PlayerID)
if player:GetTeam() == DOTA_TEAM_BADGUYS then
PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
end
end

end

GetPlayer parameter 1: expected integer but got void.
scripts\vscripts\events.lua:34: Parameter type mismatch
stack traceback:
[C]: in function 'GetPlayer'
scripts\vscripts\events.lua:34: in function <scripts\vscripts\events.lua:27>
 
Последнее редактирование:

almazist1

Активный
17 Июл 2018
83
3
8
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
может у кого тоже возникнет проблема со сменой героя за одну команду, я нашел ее решение на форуме спустя неделю
function GameMode:OnNPCSpawned(keys)
DebugPrint("[BAREBONES] NPC Spawned")
DebugPrintTable(keys)

local npc = EntIndexToHScript(keys.entindex)
if npc:IsHero() then
if npc:GetTeamNumber() == DOTA_TEAM_BADGUYS then
GameRules:GetGameModeEntity():SetContextThink("ReplaceHeroThink", function()
npc = PlayerResource:ReplaceHeroWith(npc:GetPlayerID(), "npc_dota_hero_pudge", 0, 0)
end, 0)
end
end
end
 

.фи

Пользователь
21 Мар 2018
59
2
8
27
Реакции
2 0 0
Создаю крипа с моделькой троля. В итоге при беге нет анимации бега. Он "плывёт".
Возможные причины - 2 вида анимации бега, мне нужно указать как-то что он melee или range. Или тут что-то ещё?

Да я рот ебал, оказывается всё просто, в исходниках силтбрейкера можно прочитать мысли Ликантропа.
self.szSequenceName = self:GetParent():GetSequence()
 
Последнее редактирование:
Реклама:
20 Дек 2016
566
113
28
11
Проект
DI:LS
Реакции
113 0 0
Я решил продолжить экспериментировать.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:OnDestroy()
    local Caster = self:GetCaster()
    print("OnDestroy")
end

function dota_modifier_give_regen_health:OnCreated()
    local Caster = self:GetCaster()
    print("OnCreated")
end
Почему консоль выдаёт два раза "OnDestroy" и "OnCreated"
Посмотреть вложение 375
Вторая проблема в том что при использовании функции GetKills() мне видимо иногда возвращает nil выдавая ошибку в консоль.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:DeclareFunctions()
    local funcs =
    {
        MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
    }
    return funcs
end

--[[function dota_modifier_give_regen_health:OnRefresh(params) --Наверное лучше OnCreated
    self.basic_regen = self:GetTalentSpecialValueFor("basic_regen")
    self.regen_per_lasthit = self:GetTalentSpecialValueFor("regen_per_lasthit")
    self.damage_per_lasthit = self:GetTalentSpecialValueFor("damage_per_lasthit")
end]]--

function dota_modifier_give_regen_health:GetModifierConstantHealthRegen(params)
    local Caster = self:GetCaster()
    local HealthRegen = 5 * Caster:GetKills() --self.basic_regen + self.regen_per_lasthit * (Caster:GetKills() or 0)
    return HealthRegen
end

function dota_modifier_give_regen_health:GetModifierBaseAttack_BonusDamage(params)
    local Caster = self:GetCaster()
    local DamageBonus = 5 * Caster:GetKills() --self.damage_per_lasthit * (Caster:GetKills() or 0)
    return DamageBonus
end
Посмотреть вложение 376
И наконец 3 проблема. Как видно из закомментированной части я не смог добавить переменные из KV файла.
Сам KV
Код:
// Dota Heroes File
"DOTAAbilities"
{
    "dota_ability_damage_spell"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_damage_spell"
        "AbilityTextureName"        "dota_ability_damage_spell"
        "MaxLevel"                  "4"

        "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetType"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
        "AbilityUnitDamageType"     "DAMAGE_TYPE_PURE"
        "SpellImmunityType"            "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"        "SPELL_DISPELLABLE_YES"

        "AbilityCastRange"              "700"
        "AbilityCastPoint"              "0.3"
        "AbilityCastAnimation"          "ACT_DOTA_CAST_ABILITY_1"

        "AbilityCooldown"               "8.0"
        "AbilityManaCost"               "100"
        "AbilityDamage"                 "75 130 200"
    }
    "dota_ability_give_regen_health"
    {
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_give_regen_health"
        "AbilityTextureName"        "medusa_mana_shield"
        "MaxLevel"                  "4"

        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
         "AbilityCastAnimation"            "ACT_INVALID"
     
        // Casting
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"          "FIELD_INTEGER"
                "basic_regen"             "30 40 50 60"
            }
            "02"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
            "03"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
        }
    }
}
Всегда использовался только этот KV и не изменялся.
Функции модификатора OnCreated и OnDestroy выполняются на сервере и на клиенте, потому сообщение выводит два раза и ошибка возникает, т.к. на клиенте нет функции GetKills
Сделать, чтобы код выполнялся только на сервере очень просто
Lua:
if IsServer() then
    ...
end
 

danilkoo832832

Пользователь
5 Фев 2016
30
3
8
18
Реакции
3 0 0
Я решил продолжить экспериментировать.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:OnDestroy()
    local Caster = self:GetCaster()
    print("OnDestroy")
end

function dota_modifier_give_regen_health:OnCreated()
    local Caster = self:GetCaster()
    print("OnCreated")
end
Почему консоль выдаёт два раза "OnDestroy" и "OnCreated"
Посмотреть вложение 375
Вторая проблема в том что при использовании функции GetKills() мне видимо иногда возвращает nil выдавая ошибку в консоль.
Код:
dota_ability_give_regen_health = class({})
LinkLuaModifier("dota_modifier_give_regen_health","dota_ability_give_regen_health",LUA_MODIFIER_MOTION_NONE)

function dota_ability_give_regen_health:OnToggle()
    local Caster = self:GetCaster()
    if self:GetToggleState() then
        Caster:AddNewModifier(Caster, self, "dota_modifier_give_regen_health", {})
    else
        Caster:RemoveModifierByName("dota_modifier_give_regen_health")
    end
end

dota_modifier_give_regen_health = class({})
function dota_modifier_give_regen_health:DeclareFunctions()
    local funcs =
    {
        MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
    }
    return funcs
end

--[[function dota_modifier_give_regen_health:OnRefresh(params) --Наверное лучше OnCreated
    self.basic_regen = self:GetTalentSpecialValueFor("basic_regen")
    self.regen_per_lasthit = self:GetTalentSpecialValueFor("regen_per_lasthit")
    self.damage_per_lasthit = self:GetTalentSpecialValueFor("damage_per_lasthit")
end]]--

function dota_modifier_give_regen_health:GetModifierConstantHealthRegen(params)
    local Caster = self:GetCaster()
    local HealthRegen = 5 * Caster:GetKills() --self.basic_regen + self.regen_per_lasthit * (Caster:GetKills() or 0)
    return HealthRegen
end

function dota_modifier_give_regen_health:GetModifierBaseAttack_BonusDamage(params)
    local Caster = self:GetCaster()
    local DamageBonus = 5 * Caster:GetKills() --self.damage_per_lasthit * (Caster:GetKills() or 0)
    return DamageBonus
end
Посмотреть вложение 376
И наконец 3 проблема. Как видно из закомментированной части я не смог добавить переменные из KV файла.
Сам KV
Код:
// Dota Heroes File
"DOTAAbilities"
{
    "dota_ability_damage_spell"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_damage_spell"
        "AbilityTextureName"        "dota_ability_damage_spell"
        "MaxLevel"                  "4"

        "AbilityBehavior"           "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
        "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_ENEMY"
        "AbilityUnitTargetType"     "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_BASIC"
        "AbilityUnitDamageType"     "DAMAGE_TYPE_PURE"
        "SpellImmunityType"            "SPELL_IMMUNITY_ENEMIES_NO"
        "SpellDispellableType"        "SPELL_DISPELLABLE_YES"  

        "AbilityCastRange"              "700"
        "AbilityCastPoint"              "0.3"
        "AbilityCastAnimation"          "ACT_DOTA_CAST_ABILITY_1"

        "AbilityCooldown"               "8.0"
        "AbilityManaCost"               "100"
        "AbilityDamage"                 "75 130 200"
    }
    "dota_ability_give_regen_health"
    {
        "BaseClass"                 "ability_lua"
        "ScriptFile"                "dota_ability_give_regen_health"
        "AbilityTextureName"        "medusa_mana_shield"
        "MaxLevel"                  "4"

        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_TOGGLE | DOTA_ABILITY_BEHAVIOR_IMMEDIATE"
        "SpellDispellableType"            "SPELL_DISPELLABLE_NO"
         "AbilityCastAnimation"            "ACT_INVALID"
       
        // Casting
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"          "FIELD_INTEGER"
                "basic_regen"             "30 40 50 60"
            }
            "02"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
            "03"
            {
                "var_type"          "FIELD_FLOAT"
                "regen_per_lasthit"          "6.0 8.0 10.0 16.0"
            }
        }
    }
}
Всегда использовался только этот KV и не изменялся.
3 проблему решил.
Я подсмотрел у чужой кастомки как привязать перемененные из KV файла и не понял что это функция самой кастомки...

Вот так должен выглядеть код.
Код:
function dota_modifier_give_regen_health:OnCreated(params)
    if IsServer then
        self.basic_regen = self:GetAbility():GetSpecialValueFor("basic_regen")
        self.regen_per_lasthit = self:GetAbility():GetSpecialValueFor("regen_per_lasthit")
        self.damage_per_lasthit = self:GetAbility():GetSpecialValueFor("damage_per_lasthit")
    end
end
 

kekman

Новичок
13 Дек 2018
4
0
1
19
Реакции
0 0 0
Привет, подскажите как обновить показатели скорости бега и атаки у клиента? На юнита накладывается бафф
Код:
caster:AddNewModifier(caster, nil, "add_attack_speed", {attack_s = attack_speed})
И подобный на скорость бега, все это есть, он и бьет быстрее, и бегает, но при наведении на статусы прежние показатели.
proxy.php?image=http%3A%2F%2Fskrinshoter.ru%2Fi%2F131218%2FRATqtgfb.png&hash=f10569a0be40c10a2f9629909ace0993

UPD. Юнит не герой и calculatestats не работает.
 
Последнее редактирование:

danilkoo832832

Пользователь
5 Фев 2016
30
3
8
18
Реакции
3 0 0
Привет, подскажите как обновить показатели скорости бега и атаки у клиента? На юнита накладывается бафф
Код:
caster:AddNewModifier(caster, nil, "add_attack_speed", {attack_s = attack_speed})
И подобный на скорость бега, все это есть, он и бьет быстрее, и бегает, но при наведении на статусы прежние показатели.
proxy.php?image=http%3A%2F%2Fskrinshoter.ru%2Fi%2F131218%2FRATqtgfb.png&hash=f10569a0be40c10a2f9629909ace0993

UPD. Юнит не герой и calculatestats не работает.
Код абилки можно?
 
14 Авг 2017
513
44
28
18
Проект
Battle Heroes Arena
Реакции
43 0 1
не работает какой бы номер я не ставил
Код:
function GameMode:OnNPCSpawned(keys)
  DebugPrint("[BAREBONES] NPC Spawned")
  DebugPrintTable(keys)

  local npc = EntIndexToHScript(keys.entindex)
 if npc:IsRealHero() then
    local team = npc:GetTeam()
local teamNumber = npc:GetTeamNumber()
local playersinteam = PlayerResource:GetPlayerCountForTeam( teamNumber )
    local playerID = npc:GetPlayerOwner():GetPlayerID()
    if playersinteam == 1 then
     PlayerResource:ReplaceHeroWith(playerID, "npc_dota_hero_pudge", 0, 0)
     end
     end
 
end
Ты проверил на количество игроков, а надо на номер команды (Используй константа уже написанные валвами)
 
Реклама:
Реклама: