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

Краш доты при покупке предмета

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

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Может вы увидите. При покупке предметы вылетает игра, только в лобби с живыми людьми. С ботами не вылетит. Помогите найти проблему)
Код
	"item_recipe_high_frequency_blade"
{
// General
//-------------------------------------------------------------------------------------------------------------
"ID" "6227"
"Model" "models/props_gameplay/recipe.vmdl"
"BaseClass" "item_datadriven"
// Item Info
//-------------------------------------------------------------------------------------------------------------
"ItemCost" "225"
"ItemShopTags" ""

// Recipe
//-------------------------------------------------------------------------------------------------------------
"ItemRecipe" "1"
"ItemResult" "item_high_frequency_blade"
"ItemRequirements"
{
"01" "item_demon_shard;item_echo_sabre"
}
}

//=================================================================================================================
// High frequency blade
//=================================================================================================================
"item_high_frequency_blade"
{
"ID" "600654600456"
"BaseClass" "item_lua"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityTextureName"            "high_frequency_blade"
"FightRecapLevel" "1"
"AbilityCooldown" "15.0"
"AbilityCastPoint" "0.0"
"ScriptFile" "items/item_high_frequency_blade.lua"

"ItemCost" "12800"
"ItemShopTags" "int;attack_speed"
"ItemQuality" "epic"
"ItemAliases" "blade"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_all_stats" "50"
}
"02"
{
"var_type" "FIELD_INTEGER"
"bonus_attack_speed" "35"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_damage" "60"
}
"04"
{
"var_type" "FIELD_INTEGER"
"bonus_mana_regen" "175"
}
"05"
{
"var_type" "FIELD_INTEGER"
"crit_chance" "10"
}
"06"
{
"var_type" "FIELD_INTEGER"
"crit_damage" "875"
}
}
}

LUA

Код
LinkLuaModifier ("modifier_item_high_frequency_blade", "items/item_high_frequency_blade.lua", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier ("modifier_item_high_frequency_blade_echoe", "items/item_high_frequency_blade.lua", LUA_MODIFIER_MOTION_NONE)
LinkLuaModifier ("modifier_item_high_frequency_blade_crit", "items/item_high_frequency_blade.lua", LUA_MODIFIER_MOTION_NONE)

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

function item_high_frequency_blade:GetBehavior ()
    local behav = DOTA_ABILITY_BEHAVIOR_PASSIVE
    return behav
end

function item_high_frequency_blade:GetIntrinsicModifierName ()
    return "modifier_item_high_frequency_blade"
end

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

function modifier_item_high_frequency_blade:IsHidden()
    return true
end



function modifier_item_high_frequency_blade:DeclareFunctions()
    local funcs = {
        MODIFIER_PROPERTY_MANA_REGEN_PERCENTAGE,
        MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT,
        MODIFIER_PROPERTY_STATS_AGILITY_BONUS,
        MODIFIER_PROPERTY_STATS_INTELLECT_BONUS,
        MODIFIER_PROPERTY_STATS_STRENGTH_BONUS,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
        MODIFIER_EVENT_ON_ATTACK_START
    }

    return funcs
end

function modifier_item_high_frequency_blade:GetModifierBaseAttack_BonusDamage (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_damage")
end
function modifier_item_high_frequency_blade:GetModifierBonusStats_Strength (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_all_stats")
end
function modifier_item_high_frequency_blade:GetModifierBonusStats_Intellect (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_all_stats")
end
function modifier_item_high_frequency_blade:GetModifierBonusStats_Agility (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_all_stats")
end
function modifier_item_high_frequency_blade:GetModifierAttackSpeedBonus_Constant (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_attack_speed")
end
function modifier_item_high_frequency_blade:GetModifierPercentageManaRegen(params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("bonus_mana_regen")
end
function modifier_item_high_frequency_blade:OnAttackStart ( params )
    if IsServer() then
        if params.attacker == self:GetParent() then
            local hAbility = self:GetAbility ()
            local chance = hAbility:GetSpecialValueFor ("crit_chance")
            local random = math.random (100)
            if hAbility:IsCooldownReady() then
                self:GetParent ():AddNewModifier (self:GetCaster (), self:GetAbility (), "modifier_item_high_frequency_blade_echoe", nil)
                hAbility:StartCooldown(hAbility:GetCooldown(hAbility:GetLevel()))
                return 0
            elseif random <= chance then
                self:GetParent ():AddNewModifier (self:GetCaster (), self:GetAbility (), "modifier_item_high_frequency_blade_crit", nil)
            end
        end
    end

    return 0
end


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

function modifier_item_high_frequency_blade_echoe:IsHidden ()
    return true
end


function modifier_item_high_frequency_blade_echoe:RemoveOnDeath ()
    return true
end


function modifier_item_high_frequency_blade_echoe:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE,
        MODIFIER_PROPERTY_ATTACK_POINT_CONSTANT,
        MODIFIER_EVENT_ON_ATTACK_LANDED
    }

    return funcs
end

function modifier_item_high_frequency_blade_echoe:GetModifierPreAttack_CriticalStrike (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("crit_damage")
end

function modifier_item_high_frequency_blade_echoe:GetModifierAttackPointConstant (params)
    return 0.1
end

function modifier_item_high_frequency_blade_echoe:OnAttackLanded (params)
    if IsServer () then
        if params.attacker == self:GetParent() then
            if self:GetParent ():HasModifier ("modifier_item_high_frequency_blade_echoe") then
                self:Destroy()
            end
        end
    end

    return 0
end

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


function modifier_item_high_frequency_blade_crit:IsHidden ()
    return true
end


function modifier_item_high_frequency_blade_crit:RemoveOnDeath ()
    return true
end


function modifier_item_high_frequency_blade_crit:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_PREATTACK_CRITICALSTRIKE,
        MODIFIER_EVENT_ON_ATTACK_LANDED
    }

    return funcs
end

function modifier_item_high_frequency_blade_crit:GetModifierPreAttack_CriticalStrike (params)
    local hAbility = self:GetAbility ()
    return hAbility:GetSpecialValueFor ("crit_damage")
end


function modifier_item_high_frequency_blade_crit:OnAttackLanded (params)
    if IsServer () then
        if params.attacker == self:GetParent () then
            if self:GetParent ():HasModifier ("modifier_item_high_frequency_blade_crit") then
                self:Destroy ()
            end
        end
    end

    return 0
end
By PG.Freeman

Оффлайн Илья

  • Супермодератор
  • 1904
  • Мощь: 16
Re: Краш доты при покупке предмета
« Ответ #1 : 07-05-2016, 22:16:18 »
Я начал читать, но потом увидел масштаб файла и решил, что гляну завтра :D

А так пока на глаза бросился ток id = 600654600456. Но я без понятия, можно ли вообще какой угодно указывать или есть диапазон определенный.

И не очень понятно, зачем модификаторы определять как класс:
if modifier_item_high_frequency_blade == nil then
    modifier_item_high_frequency_blade = class ( {})
end

Они же подключаются как библиотечка итак. Ну, по крайней мере я пока ни разу так не делал - не нужно было.

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Краш доты при покупке предмета
« Ответ #2 : 07-05-2016, 22:41:34 »
Я начал читать, но потом увидел масштаб файла и решил, что гляну завтра :D

А так пока на глаза бросился ток id = 600654600456. Но я без понятия, можно ли вообще какой угодно указывать или есть диапазон определенный.

И не очень понятно, зачем модификаторы определять как класс:
if modifier_item_high_frequency_blade == nil then
    modifier_item_high_frequency_blade = class ( {})
end

Они же подключаются как библиотечка итак. Ну, по крайней мере я пока ни разу так не делал - не нужно было.
Раньше ID был 6230, все равно вылетало.
Если класса нету, то краш.
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Краш доты при покупке предмета
« Ответ #3 : 08-05-2016, 06:39:15 »
Модификатор должен быть классом, тут все норм.
Попробуй повырубать модификаторы некоторые и потестить. У меня глаз не зацепился ни за что :c

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Краш доты при покупке предмета
« Ответ #4 : 08-05-2016, 10:34:34 »
Модификатор должен быть классом, тут все норм.
Попробуй повырубать модификаторы некоторые и потестить. У меня глаз не зацепился ни за что :c
Вылет в момент покупки, тут либо с кв, либо с пассивным иодификатором
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Краш доты при покупке предмета
« Ответ #5 : 08-05-2016, 11:14:44 »
Вылет в момент покупки, тут либо с кв, либо с пассивным иодификатором
Я недавно столкнулся с тем что при создании бейскласса = echo_sabre у меня крашит при покупке, но у тебя везде переделанные. Странно крч.

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Краш доты при покупке предмета
« Ответ #6 : 08-05-2016, 11:31:26 »
Я недавно столкнулся с тем что при создании бейскласса = echo_sabre у меня крашит при покупке, но у тебя везде переделанные. Странно крч.
Кв сделаны на основе echo sabre тоже, хммм
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Краш доты при покупке предмета
« Ответ #7 : 08-05-2016, 11:36:33 »
Во, ща заметил. В рецепте используется echo sabre, убери и не будет вылетов. (Я переписал, хоть и криво даже первую саблю, тогда краши прекратились)

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Краш доты при покупке предмета
« Ответ #8 : 08-05-2016, 11:46:47 »
Во, ща заметил. В рецепте используется echo sabre, убери и не будет вылетов. (Я переписал, хоть и криво даже первую саблю, тогда краши прекратились)
Ща попробую
By PG.Freeman

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Краш доты при покупке предмета
« Ответ #9 : 08-05-2016, 11:49:45 »
Adam Smith, можешь показать свою кастомку (ссылкой в мастерскую)?
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Краш доты при покупке предмета
« Ответ #10 : 08-05-2016, 12:59:56 »
Adam Smith, можешь показать свою кастомку (ссылкой в мастерскую)?
steamcommunity.com/...ils/?id=600881584

Край, спс)Работает
By PG.Freeman