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

kain

Активный
2 Окт 2015
101
45
steamcommunity.com
Проект
GreenCircleTD
Мою так скопировали почти подчистую
ну ты вроде как тут не тянешь на новичка.. хотя может я путаю... но уже 90% свежих кастомок выходят либо покрытых aes, либо скрытых за своим сервером и подгружающих основную логику (изюминку твоей кастомки, только через сервера вальве) через вальве сервера и твой http.

вулкан получал бан на пол года. может потому что он не клялся мамой что не брал чужое , поэтому так влупили... я хз.

ну если кастомка приносит доход, можно и в суд подать. не юрист, но явно схема не нова. темболее для америкосов.
если для души, забить и делать с учетом полученного урока.
 

kotofei

Новичок
17 Июл 2021
8
0
попытался добавить т2 октарин, т1 нормально работает, когда как т2 ничего не даёт(даже статов т1 не содержит). У предмета нет описания хотя вроде добавлял
1626639801060.png1626639712034.png
 

ION

Активный
10 Ноя 2019
83
5
Проект
Memethrow
попытался добавить т2 октарин, т1 нормально работает, когда как т2 ничего не даёт(даже статов т1 не содержит). У предмета нет описания хотя вроде добавлял
Посмотреть вложение 1372Посмотреть вложение 1371
что ты сделал для того что бы оно работало? В дотовских предметах и скилах всё что ты можешь менять - это циферки - значения, которые используются в самом коде предмета. Если хочешь сделать что-то своё - пиши с нуля, ну или пользуйся библиотеками.
 

kotofei

Новичок
17 Июл 2021
8
0
что ты сделал для того что бы оно работало? В дотовских предметах и скилах всё что ты можешь менять - это циферки - значения, которые используются в самом коде предмета. Если хочешь сделать что-то своё - пиши с нуля, ну или пользуйся библиотеками.
в items.txt октарину дописал
"MaxUpgradeLevel" "2"
"ItemBaseLevel" "1" и через пробел дописал значения на второй тир
а в npc_items_custom.txt
//=================================================================================================================
// Recipe: Octarine Core 2
//=================================================================================================================
"item_recipe_octarine_core_2"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "item_datadriven"
"ID" "69150" // unique ID number for this item. Do not change this once established or it will invalidate collected stats.
"Model" "models/props_gameplay/recipe.vmdl"
"AbilityTextureName" "item_recipe"

// Item Info
//-------------------------------------------------------------------------------------------------------------
"ItemCost" "3000"
"ItemShopTags" ""

// Recipe
//-------------------------------------------------------------------------------------------------------------
"ItemRecipe" "1"
"ItemResult" "item_octarine_core_2"
"ItemRequirements"
{
"01" "item_octarine_core"
}
}

//=================================================================================================================
// Octarine Core 2
//=================================================================================================================
"item_octarine_core_2"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "item_datadriven"
"ID" "69151" // unique ID number for this item. Do not change this once established or it will invalidate collected stats.
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"Model" "models/props_gameplay/red_box.vmdl"
"Effect" "particles/generic_gameplay/dropped_item.vpcf"
"AbilityTextureName" "item_octarine_2"
"FightRecapLevel" "1"

// Item Info
//-------------------------------------------------------------------------------------------------------------
"ItemCost" "8475"
"ItemShopTags" "move_speed;boost_mana;mana_pool"
"ItemQuality" "epic"
"ItemAliases" "mana;mb;octarine core"
"ItemDeclarations" "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS"
"ItemDisassembleRule" "DOTA_ITEM_DISASSEMBLE_ALWAYS"
"MaxUpgradeLevel" "2"
"ItemBaseLevel" "2"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_cooldown" "25 35"
}
"02"
{
"var_type" "FIELD_INTEGER"
"cast_range_bonus" "225 335"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_health" "425 625"
}
"04"
{
"var_type" "FIELD_INTEGER"
"bonus_mana" "725 925"
}
"05"
{
"var_type" "FIELD_FLOAT"
"bonus_mana_regen" "3.0 4.5"
}
 

ION

Активный
10 Ноя 2019
83
5
Проект
Memethrow
в items.txt октарину дописал
"MaxUpgradeLevel" "2"
"ItemBaseLevel" "1" и через пробел дописал значения на второй тир
а в npc_items_custom.txt
//=================================================================================================================
// Recipe: Octarine Core 2
//=================================================================================================================
"item_recipe_octarine_core_2"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "item_datadriven"
"ID" "69150" // unique ID number for this item. Do not change this once established or it will invalidate collected stats.
"Model" "models/props_gameplay/recipe.vmdl"
"AbilityTextureName" "item_recipe"

// Item Info
//-------------------------------------------------------------------------------------------------------------
"ItemCost" "3000"
"ItemShopTags" ""

// Recipe
//-------------------------------------------------------------------------------------------------------------
"ItemRecipe" "1"
"ItemResult" "item_octarine_core_2"
"ItemRequirements"
{
"01" "item_octarine_core"
}
}

//=================================================================================================================
// Octarine Core 2
//=================================================================================================================
"item_octarine_core_2"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "item_datadriven"
"ID" "69151" // unique ID number for this item. Do not change this once established or it will invalidate collected stats.
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"Model" "models/props_gameplay/red_box.vmdl"
"Effect" "particles/generic_gameplay/dropped_item.vpcf"
"AbilityTextureName" "item_octarine_2"
"FightRecapLevel" "1"

// Item Info
//-------------------------------------------------------------------------------------------------------------
"ItemCost" "8475"
"ItemShopTags" "move_speed;boost_mana;mana_pool"
"ItemQuality" "epic"
"ItemAliases" "mana;mb;octarine core"
"ItemDeclarations" "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS"
"ItemDisassembleRule" "DOTA_ITEM_DISASSEMBLE_ALWAYS"
"MaxUpgradeLevel" "2"
"ItemBaseLevel" "2"

// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_cooldown" "25 35"
}
"02"
{
"var_type" "FIELD_INTEGER"
"cast_range_bonus" "225 335"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_health" "425 625"
}
"04"
{
"var_type" "FIELD_INTEGER"
"bonus_mana" "725 925"
}
"05"
{
"var_type" "FIELD_FLOAT"
"bonus_mana_regen" "3.0 4.5"
}
bonus_mana_regen, bonus_mana, cast_range_bonus и тд - это всего лишь названия переменных, а через пробел напротив - их значения.

C++:
"item_bracer_datadriven"
{
    // General
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"                        "item_datadriven"
    "ID"                            "1073"  //Valve's version of this item uses the ID "73".
    "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "Model"                            "models/props_gameplay/red_box.vmdl"
    "Effect"                        "particles/generic_gameplay/dropped_item.vpcf"
    "AbilityTextureName"            "item_bracer"
   
    // Item Info
    //-------------------------------------------------------------------------------------------------------------
    "ItemCost"                        "525"
    "ItemShopTags"                    "damage;int;agi;str"
    "ItemQuality"                    "common"
    "ItemAliases"                    "bracer"
       
    // Special  
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_strength"        "6"
        }
        "02"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_agility"            "3"
        }
        "03"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_intelligence"    "3"
        }
        "04"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_damage"            "3"
        }
    }
   
    "Modifiers"
    {
        "modifier_item_bracer_datadriven" // название модифаере пишешь какое захочешь
        {
            "Passive"            "1" // если 1 значит модифаер активируется сам
            "IsHidden"            "1" // если 1 то отображается на панеле бафов в кружочках
            "Attributes"         "MODIFIER_ATTRIBUTE_MULTIPLE"
           
            "Properties"
            {
                "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE"        "%bonus_damage" // собственно то, из-за чего предметы работают и дают бонусы
                "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS"        "%bonus_strength" // это даёт силу
                "MODIFIER_PROPERTY_STATS_AGILITY_BONUS"            "%bonus_agility"    // это ловкость
                "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS"        "%bonus_intelligence"    // а это интеллект. "%название_переменной" - берёт значения из AbilitySpecials.
                 // ну или можно просто число написать типа
                "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"        "15"   // и оно даст 15 скорости атаки
                }
        }
    }
}
на этом же форуме есть вкладка scripting API , там есть большинство нужных модифаеров для предметов, например вводишь в поиск ключевое слово cooldown и находишь MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT, и вставляешь эту строку в свой модифаер, и напротив пишешь всё значение (либо %переменную которую ты указывал выше)
Вот полезная библиотека скиллов и предметов написаных на datadriven. Если нужно будет сделать предмет с башом - глянь код у башера и возьми нужный кусок и тд.. Там интуитивно всё понятно.
 

kotofei

Новичок
17 Июл 2021
8
0
bonus_mana_regen, bonus_mana, cast_range_bonus и тд - это всего лишь названия переменных, а через пробел напротив - их значения.

C++:
"item_bracer_datadriven"
{
    // General
    //-------------------------------------------------------------------------------------------------------------
    "BaseClass"                        "item_datadriven"
    "ID"                            "1073"  //Valve's version of this item uses the ID "73".
    "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE"
    "Model"                            "models/props_gameplay/red_box.vmdl"
    "Effect"                        "particles/generic_gameplay/dropped_item.vpcf"
    "AbilityTextureName"            "item_bracer"
 
    // Item Info
    //-------------------------------------------------------------------------------------------------------------
    "ItemCost"                        "525"
    "ItemShopTags"                    "damage;int;agi;str"
    "ItemQuality"                    "common"
    "ItemAliases"                    "bracer"
     
    // Special
    //-------------------------------------------------------------------------------------------------------------
    "AbilitySpecial"
    {
        "01"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_strength"        "6"
        }
        "02"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_agility"            "3"
        }
        "03"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_intelligence"    "3"
        }
        "04"
        {
            "var_type"                "FIELD_INTEGER"
            "bonus_damage"            "3"
        }
    }
 
    "Modifiers"
    {
        "modifier_item_bracer_datadriven" // название модифаере пишешь какое захочешь
        {
            "Passive"            "1" // если 1 значит модифаер активируется сам
            "IsHidden"            "1" // если 1 то отображается на панеле бафов в кружочках
            "Attributes"         "MODIFIER_ATTRIBUTE_MULTIPLE"
         
            "Properties"
            {
                "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE"        "%bonus_damage" // собственно то, из-за чего предметы работают и дают бонусы
                "MODIFIER_PROPERTY_STATS_STRENGTH_BONUS"        "%bonus_strength" // это даёт силу
                "MODIFIER_PROPERTY_STATS_AGILITY_BONUS"            "%bonus_agility"    // это ловкость
                "MODIFIER_PROPERTY_STATS_INTELLECT_BONUS"        "%bonus_intelligence"    // а это интеллект. "%название_переменной" - берёт значения из AbilitySpecials.
                 // ну или можно просто число написать типа
                "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT"        "15"   // и оно даст 15 скорости атаки
                }
        }
    }
}
на этом же форуме есть вкладка scripting API , там есть большинство нужных модифаеров для предметов, например вводишь в поиск ключевое слово cooldown и находишь MODIFIER_PROPERTY_COOLDOWN_REDUCTION_CONSTANT, и вставляешь эту строку в свой модифаер, и напротив пишешь всё значение (либо %переменную которую ты указывал выше)
Вот полезная библиотека скиллов и предметов написаных на datadriven. Если нужно будет сделать предмет с башом - глянь код у башера и возьми нужный кусок и тд.. Там интуитивно всё понятно.
спасибо большое всё заработало, кроме каст ренжа, попробовал
MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING и MODIFIER_PROPERTY_CAST_RANGE_BONUS не пошло)
У меня нет названия предмета в самой доте(описание имеется) и ещё дота не считает сколько золота до покупки осталось если у меня меньше золота чем стоит предмет или это пофиксится когда предмет(и рецепт) название получит?
И ещё насколько важно в разделе properties после modifier_property расстояние до след записей? типо могу ли через 1 пробел писать или так не будет работать?
 
Последнее редактирование:

ION

Активный
10 Ноя 2019
83
5
Проект
Memethrow
спасибо большое всё заработало, кроме каст ренжа, попробовал
MODIFIER_PROPERTY_CAST_RANGE_BONUS_STACKING и MODIFIER_PROPERTY_CAST_RANGE_BONUS не пошло)
У меня нет названия предмета в самой доте(описание имеется) и ещё дота не считает сколько золота до покупки осталось если у меня меньше золота чем стоит предмет или это пофиксится когда предмет(и рецепт) название получит?
И ещё насколько важно в разделе properties после modifier_property расстояние до след записей? типо могу ли через 1 пробел писать или так не будет работать?
растояние - хоть пол страницы. Не знаю почему у тебя не работает кастрендж бонус, у меня работает.
Полезный гайд по описанию - тык . Если всё правильно сделаешь то и голда, и название рецепта, всё само станет как нужно
 

kotofei

Новичок
17 Июл 2021
8
0
хоть убей, но не работает каст ренж совсем никак, мб кто подскажет в чём проблема и cooldown reduction стакается от нескольких артефактов почему то
Lua:
//=================================================================================================================
    // Recipe: Octafresher
    //=================================================================================================================
    "item_recipe_octafresher"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                     "item_datadriven"
        "ID"                            "69202"                                                        // unique ID number for this item.  Do not change this once established or it will invalidate collected stats.
        "Model"                            "models/props_gameplay/recipe.vmdl"
        "AbilityTextureName"            "item_recipe"

        // Item Info
        //-------------------------------------------------------------------------------------------------------------
        "ItemCost"                        "1500" 
        "ItemShopTags"                    ""
      
        // Recipe
        //-------------------------------------------------------------------------------------------------------------
        "ItemRecipe"                    "1"
        "ItemResult"                    "item_octafresher"
        "ItemRequirements"
        {
            "01"                        "item_octarine_core;item_refresher"

        }
    }
  
    //=================================================================================================================
    // Octafresher
    //=================================================================================================================
    "item_octafresher"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                        "item_datadriven"
        "ID"                            "69201"                                                        // unique ID number for this item.  Do not change this once established or it will invalidate collected stats.
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET"
        "Model"                            "models/props_gameplay/red_box.vmdl"
        "Effect"                        "particles/generic_gameplay/dropped_item.vpcf"
        "AbilityTextureName"            "item_octafresher"
        "AbilitySharedCooldown"            "item_refresher"
      

        // Stats     
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCastPoint"                "0.0"
        "AbilityCooldown"                "120"
        "AbilityManaCost"                "250"

        // Item Info
        //-------------------------------------------------------------------------------------------------------------
        "ItemCost"                        "11775"
        "ItemShopTags"                    "move_speed;boost_mana;mana_pool"
        "ItemQuality"                    "artifact"
        "ItemAliases"                    "octafresher"
        "ItemDeclarations"                "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS"
        "ItemDisassembleRule"            "DOTA_ITEM_DISASSEMBLE_ALWAYS"
      
        // Special 
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_cooldown"        "25"
            }
            "02"
            {
                "var_type"                "FIELD_INTEGER"
                "cast_range_bonus"            "225"
            }
            "03"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_health"            "425"
            }
            "04"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_mana"            "725"
            }
            "05"
            {
                "var_type"                "FIELD_FLOAT"
                "bonus_mana_regen"        "15.0"
            }
            "06"
            {
                "var_type"                 "FIELD_INTEGER"
                "bonus_health_regen"    "13"
            }
        }
      
        "OnSpellStart"
        {
            "RunScript"
            {
                "ScriptFile"        "items/item_octafresher.lua"
                "Function"            "item_refresher_datadriven_on_spell_start"
            }
        }
      
        "Modifiers"
        {
            "modifier_item_octafresher"
            {
                "Passive"            "1"
                "IsHidden"            "1"
                "Attributes"         "MODIFIER_ATTRIBUTE_MULTIPLE"
          
                "Properties"
                {
                    "MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE"        "%bonus_cooldown"
                    "MODIFIER_PROPERTY_CAST_RANGE_BONUS"         "225"
                    "MODIFIER_PROPERTY_HEALTH_BONUS"            "%bonus_health"
                    "MODIFIER_PROPERTY_MANA_BONUS"                "%bonus_mana"
                    "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT"    "%bonus_health_regen"

                }
            } 
        } 
    } 
}
единственный скрипт для рефрешера который нашёл. Тут правда проблемка они рефрешат друг друга
Lua:
--[[ ============================================================================================================
    Author: Rook
    Date: January 26, 2015
    Called when Refresher Orb is cast.  Takes the player's abilities and items off cooldown.
================================================================================================================= ]]
function item_refresher_datadriven_on_spell_start(keys)
    --Refresh all abilities on the caster.
    for i=0, 15, 1 do  --The maximum number of abilities a unit can have is currently 16.
        local current_ability = keys.caster:GetAbilityByIndex(i)
        if current_ability ~= nil then
            current_ability:EndCooldown()
        end
    end
   
    --Refresh all items the caster has.
    for i=0, 5, 1 do
        local current_item = keys.caster:GetItemInSlot(i)
        if current_item ~= nil then
            if current_item:GetName() ~= "item_octafresher" then  --Refresher Orb does not refresh itself.
                current_item:EndCooldown()
            end
        end
    end
end
 
Последнее редактирование:

AceFridge

Активный
8 Мар 2021
74
11
ну ты вроде как тут не тянешь на новичка.. хотя может я путаю... но уже 90% свежих кастомок выходят либо покрытых aes, либо скрытых за своим сервером и подгружающих основную логику (изюминку твоей кастомки, только через сервера вальве) через вальве сервера и твой http.

вулкан получал бан на пол года. может потому что он не клялся мамой что не брал чужое , поэтому так влупили... я хз.

ну если кастомка приносит доход, можно и в суд подать. не юрист, но явно схема не нова. темболее для америкосов.
если для души, забить и делать с учетом полученного урока.
а можно подробней про это? допустим, я вырасту из новичка, закину свою кастомку на всеобщее одобрение, а она соберет море оваций. Из неё тут же вытаскивают основные механики, полюбившиеся игрокам, и на основе их пилят небольшой командой расширенную версию. Я остаюсь неудел, а они продают шапочки. Как защитить свой код? Пока на ум приходит, например, хранение каких-то своих kv файлов, на которых основываются механики, на стороннем сервере, ты об этом пишешь?
 

ION

Активный
10 Ноя 2019
83
5
Проект
Memethrow
хоть убей, но не работает каст ренж совсем никак, мб кто подскажет в чём проблема и cooldown reduction стакается от нескольких артефактов почему то
Lua:
//=================================================================================================================
    // Recipe: Octafresher
    //=================================================================================================================
    "item_recipe_octafresher"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                     "item_datadriven"
        "ID"                            "69202"                                                        // unique ID number for this item.  Do not change this once established or it will invalidate collected stats.
        "Model"                            "models/props_gameplay/recipe.vmdl"
        "AbilityTextureName"            "item_recipe"

        // Item Info
        //-------------------------------------------------------------------------------------------------------------
        "ItemCost"                        "1500"
        "ItemShopTags"                    ""
     
        // Recipe
        //-------------------------------------------------------------------------------------------------------------
        "ItemRecipe"                    "1"
        "ItemResult"                    "item_octafresher"
        "ItemRequirements"
        {
            "01"                        "item_octarine_core;item_refresher"

        }
    }
 
    //=================================================================================================================
    // Octafresher
    //=================================================================================================================
    "item_octafresher"
    {
        // General
        //-------------------------------------------------------------------------------------------------------------
        "BaseClass"                        "item_datadriven"
        "ID"                            "69201"                                                        // unique ID number for this item.  Do not change this once established or it will invalidate collected stats.
        "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_NO_TARGET"
        "Model"                            "models/props_gameplay/red_box.vmdl"
        "Effect"                        "particles/generic_gameplay/dropped_item.vpcf"
        "AbilityTextureName"            "item_octafresher"
        "AbilitySharedCooldown"            "item_refresher"
     

        // Stats    
        //-------------------------------------------------------------------------------------------------------------
        "AbilityCastPoint"                "0.0"
        "AbilityCooldown"                "120"
        "AbilityManaCost"                "250"

        // Item Info
        //-------------------------------------------------------------------------------------------------------------
        "ItemCost"                        "11775"
        "ItemShopTags"                    "move_speed;boost_mana;mana_pool"
        "ItemQuality"                    "artifact"
        "ItemAliases"                    "octafresher"
        "ItemDeclarations"                "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS"
        "ItemDisassembleRule"            "DOTA_ITEM_DISASSEMBLE_ALWAYS"
     
        // Special
        //-------------------------------------------------------------------------------------------------------------
        "AbilitySpecial"
        {
            "01"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_cooldown"        "25"
            }
            "02"
            {
                "var_type"                "FIELD_INTEGER"
                "cast_range_bonus"            "225"
            }
            "03"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_health"            "425"
            }
            "04"
            {
                "var_type"                "FIELD_INTEGER"
                "bonus_mana"            "725"
            }
            "05"
            {
                "var_type"                "FIELD_FLOAT"
                "bonus_mana_regen"        "15.0"
            }
            "06"
            {
                "var_type"                 "FIELD_INTEGER"
                "bonus_health_regen"    "13"
            }
        }
     
        "OnSpellStart"
        {
            "RunScript"
            {
                "ScriptFile"        "items/item_octafresher.lua"
                "Function"            "item_refresher_datadriven_on_spell_start"
            }
        }
     
        "Modifiers"
        {
            "modifier_item_octafresher"
            {
                "Passive"            "1"
                "IsHidden"            "1"
                "Attributes"         "MODIFIER_ATTRIBUTE_MULTIPLE"
         
                "Properties"
                {
                    "MODIFIER_PROPERTY_COOLDOWN_PERCENTAGE"        "%bonus_cooldown"
                    "MODIFIER_PROPERTY_CAST_RANGE_BONUS"         "225"
                    "MODIFIER_PROPERTY_HEALTH_BONUS"            "%bonus_health"
                    "MODIFIER_PROPERTY_MANA_BONUS"                "%bonus_mana"
                    "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT"    "%bonus_health_regen"

                }
            }
        }
    }
}
единственный скрипт для рефрешера который нашёл. Тут правда проблемка они рефрешат друг друга
Lua:
--[[ ============================================================================================================
    Author: Rook
    Date: January 26, 2015
    Called when Refresher Orb is cast.  Takes the player's abilities and items off cooldown.
================================================================================================================= ]]
function item_refresher_datadriven_on_spell_start(keys)
    --Refresh all abilities on the caster.
    for i=0, 15, 1 do  --The maximum number of abilities a unit can have is currently 16.
        local current_ability = keys.caster:GetAbilityByIndex(i)
        if current_ability ~= nil then
            current_ability:EndCooldown()
        end
    end
  
    --Refresh all items the caster has.
    for i=0, 5, 1 do
        local current_item = keys.caster:GetItemInSlot(i)
        if current_item ~= nil then
            if current_item:GetName() ~= "item_octafresher" then  --Refresher Orb does not refresh itself.
                current_item:EndCooldown()
            end
        end
    end
end
такие вещи только на луа пишутся, айтем должен быть полностью на луа, и там команда выглядит типо IsRefreshable или как-то так. А в данном коде нужно добавить нужный айтем (или скилл) в исключения через проверку. Возможно каст рендж работает только на луа.
 

kain

Активный
2 Окт 2015
101
45
steamcommunity.com
Проект
GreenCircleTD
ты об этом пишешь?
я пишу не только о kv , но и о lua в целом.
+ то что указал ZLOY

У нас будет реализованны обе схемы. как минимум криптуем/шифруем код который занимается подключением к нашему серверу (что б вообще не зивестно было где мы храним часть lua кода).
Это сложнее (возможно в разы) чем просто взять чужую кастомку и пользоваться(для создателя, для ворующего можно сказать дешевле написать свою кастомку с нуля).

открой vpk этой кастомки вот этим VRF и посмотри в папочку vscripts
сможешь прочитать только файлы неких утилит (ничего не делают для кастомки как механики, сюжеты, особенности - просто lua)
 

kain

Активный
2 Окт 2015
101
45
steamcommunity.com
Проект
GreenCircleTD
грустно что такие проблемы с воровством существуют в комьюнити
да наоборот, хорошо что такая проблема есть и постепенно приучаемся к правильному подходу для серьезных проектов (которые не петы или хобби).
Вальве, могли бы лучше организовать защиту наших прав. Но с другой стороны я понимаю, как писал AceFridge, вальве готовы защитить тебя, подай иск на территории США в суд. Но как это сделать в рамках всего мира я хз. Они могли бы продумать схему как ты после выкладывания кода, мог бы обозначить свое АП в их кастомках. Но пока они защитили только себя - мол все кастомки это их АП. а вот внутри этих своих АП им пох, пока что, как мы тут грыземся и делаем костыли для защиты.
 
Последнее редактирование:

Дикий Пёс

Друзья CG
28 Июн 2017
410
92
Проект
Petri Reborn
ещё хуже всяким 3д модельерам и прочим, код то хотябы както можно спасти а модели партикли звуки и тд всегда спиздят

возможность запаролить VPK как архив или чтото подобное была бы лучшим решением
хотя многие хотели бы чтобы их кастомку можно было глянуть через gcf или на гите, в образовательных целях
вообщем как обычно изза пары долбаёбов страдают все
 

kain

Активный
2 Окт 2015
101
45
steamcommunity.com
Проект
GreenCircleTD
ещё хуже всяким 3д модельерам и прочим, код то хотябы както можно спасти а модели партикли звуки и тд всегда спиздят
На эти вещи ты можешь иметь свое АП не спрашивая вальве. у них даже когда ты косметические шмотки заливаешь, потом надо договор принять и получать в случае чего отчисления по АП.
сама кастомка по себе как цельный продукт принадлежит вальве, но тут они не давят никого.
Авточесам они предлагали просто - либо поработать вместе( китайцы отказались), либо любую помощь (вроде слияния базы игроков из вальве к авточесам было при релизе на других платформах). А сами изично запилили андерлорд.
Если у тебя переработка вальвоской модельки тут хз... это уже надо посурьезнее в законах шариться...
Партиклы вот тут хз, эти штуки как бы только в вальве работают и делаютсяих ПО. поэтому кому ты можешь продать это АП кроме как в кастомки хз.
PS Опять же вальве из США - поэтому для остальных полная жопа в защите своих прав, кроме граждан США.
 

Дикий Пёс

Друзья CG
28 Июн 2017
410
92
Проект
Petri Reborn
На эти вещи ты можешь иметь свое АП не спрашивая вальве. у них даже когда ты косметические шмотки заливаешь, потом надо договор принять и получать в случае чего отчисления по АП.
сама кастомка по себе как цельный продукт принадлежит вальве, но тут они не давят никого.
Авточесам они предлагали просто - либо поработать вместе( китайцы отказались), либо любую помощь (вроде слияния базы игроков из вальве к авточесам было при релизе на других платформах). А сами изично запилили андерлорд.
Если у тебя переработка вальвоской модельки тут хз... это уже надо посурьезнее в законах шариться...
Партиклы вот тут хз, эти штуки как бы только в вальве работают и делаютсяих ПО. поэтому кому ты можешь продать это АП кроме как в кастомки хз.
PS Опять же вальве из США - поэтому для остальных полная жопа в защите своих прав, кроме граждан США.
да проблема не только и не столько в деньгах или судах, сколько в вычислении самих случаев. никто же за тебя не будет чекать кто там и что у тебя спиздил, тебе надо самому шастать по мастреской чтобы искать копии своих кастомок, а про модели и партикли я вообще молчу.
 

kain

Активный
2 Окт 2015
101
45
steamcommunity.com
Проект
GreenCircleTD
сколько в вычислении самих случаев
ну для вальве это все их файлы и права тоже их (с большего) поэтому искать среди своего и разделять на нас для них дурная затея. они не зарабатывают на твоих файлах, а значит и выгоду лично вальве не имеет что бы с них взыскать, а вот между двум разрабами пжл. вальве всего лишь платформа где ты и я тусим. если мы поругались вальве не приделах(не оправдываю их ниразу) посему только в частном порядке как идиоты в суд. - и в 99999% хер кто пойдет в суд.. ибо дороже будет сам суд чем профит. а в США из китайца получить штраф в твою пользу хер там сможешь (пока китаец не приедет сам в сша) печально все это , поэтому и надо осваивать хоть какие то защитные костыли при разработке кастомок.
 

AceFridge

Активный
8 Мар 2021
74
11
Вопрос по оптимизации. Много где в коде использую таймеры, thinker'ы иногда получаю предупреждения в консоли:
1627039128960.png
1627039520234.png
1627039527773.png
При этом заметных тормозов, фризов нет. Это черевато и стоит оптимизировать или же забить, если проблем с производительностью не наблюдается?
 
Последнее редактирование:
Реклама: