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

danilkoo832832

Пользователь
5 Фев 2016
40
3
8
18
Реакции
3 0 0
Вроде бы можно просто в BaseClass прописать стандартного героя, но восприниматься он будет как новый.
Как я понял надо сделать так?
Код:
"custom_npc_finnick"
    {
        "HeroID" 170
        "BaseClass"    "npc_dota_hero_invoker"
        "Model"        "models/heroes/invoker/invoker.vmdl"
        "ModelScale"    "1.1"
        "Ability1"                    "generic_hidden"
        "Ability2"                    "dota_ability_give_regen_health"
        "Ability3"                    "generic_hidden"
        "Ability4"                    "generic_hidden"
        "Ability5"                    "generic_hidden"
        "Ability6"                    "generic_hidden"
        "Ability7"                    "custom_ability_finnick_invulnerability"
        "Ability10" "special_bonus_strength_6"
        "Ability11" "special_bonus_attack_damage_20"
        "Ability12" "special_bonus_attack_speed_20"
        "Ability13" "special_bonus_hp_250"
        "Ability14" "special_bonus_evasion_15"
        "Ability15" "special_bonus_all_stats_10"
        "Ability16" "special_bonus_hp_250"
        "Ability17" "special_bonus_all_stats_10"
        "AbilityTalentStart"        "10"
        "AttackCapabilities"    "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttributePrimary"        "DOTA_ATTRIBUTE_STRENGTH"
        "AttackRange"            "150"
        "AttackRate"            "2.2"
        "AttributeBaseStrength"    "24"
        "AttributeBaseIntelligence"    "28"
        "AttributeBaseAgility"    "20"
        "AttributeStrengthGain"    "2.8"
        "AttributeIntelligenceGain"    "3.0"
        "AttributeAgilityGain"    "2.2"
        "MagicalResistance"        "45"
        "AttackDamageMin"        "22"
        "AttackDamageMax"        "32"
    }
Таким и всеми любыми способами как должно это работать, что пришли мне в голову не работают. Создаётся герой в меню пика без портрета которого нельзя пикнуть.

Будет проще смириться.

При более чем 100 героях - разве сложно переписать и перерисовать одно из них? (через тот же хекс модифаер - сменить модельку)
Я хочу сделать что бы и старых героев можно было пикать.

Я вкратце смотрел что да как в Angel arena black star и там как я понял это с помощью крипов сделано.
 
14 Авг 2017
514
44
28
18
Проект
Battle Heroes Arena
Реакции
43 0 1
Как я понял надо сделать так?
Код:
"custom_npc_finnick"
    {
        "HeroID" 170
        "BaseClass"    "npc_dota_hero_invoker"
        "Model"        "models/heroes/invoker/invoker.vmdl"
        "ModelScale"    "1.1"
        "Ability1"                    "generic_hidden"
        "Ability2"                    "dota_ability_give_regen_health"
        "Ability3"                    "generic_hidden"
        "Ability4"                    "generic_hidden"
        "Ability5"                    "generic_hidden"
        "Ability6"                    "generic_hidden"
        "Ability7"                    "custom_ability_finnick_invulnerability"
        "Ability10" "special_bonus_strength_6"
        "Ability11" "special_bonus_attack_damage_20"
        "Ability12" "special_bonus_attack_speed_20"
        "Ability13" "special_bonus_hp_250"
        "Ability14" "special_bonus_evasion_15"
        "Ability15" "special_bonus_all_stats_10"
        "Ability16" "special_bonus_hp_250"
        "Ability17" "special_bonus_all_stats_10"
        "AbilityTalentStart"        "10"
        "AttackCapabilities"    "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttributePrimary"        "DOTA_ATTRIBUTE_STRENGTH"
        "AttackRange"            "150"
        "AttackRate"            "2.2"
        "AttributeBaseStrength"    "24"
        "AttributeBaseIntelligence"    "28"
        "AttributeBaseAgility"    "20"
        "AttributeStrengthGain"    "2.8"
        "AttributeIntelligenceGain"    "3.0"
        "AttributeAgilityGain"    "2.2"
        "MagicalResistance"        "45"
        "AttackDamageMin"        "22"
        "AttackDamageMax"        "32"
    }
Таким и всеми любыми способами как должно это работать, что пришли мне в голову не работают. Создаётся герой в меню пика без портрета которого нельзя пикнуть.


Я хочу сделать что бы и старых героев можно было пикать.

Я вкратце смотрел что да как в Angel arena black star и там как я понял это с помощью крипов сделано.
В кратце. Тебе нужен KV объект в файлах с юнитами и героями и чтобы heroid не было использовано ранее у других героев. Я точно не помню лимит, но он около 20 может меньше героев, своих.
 

danilkoo832832

Пользователь
5 Фев 2016
40
3
8
18
Реакции
3 0 0
В кратце. Тебе нужен KV объект в файлах с юнитами и героями и чтобы heroid не было использовано ранее у других героев. Я точно не помню лимит, но он около 20 может меньше героев, своих.
Айди не совпадает, а так была бы ошибка. Я сейчас буду создавать крипа и с помощью CreateHeroForPlayer c кастомным меню пика присваивать героя. Осталось сделать это меню... На кройняк сделаю выбор через команду -pick в чат и применять ReplaceHeroWith.
P.S: Что-то ничего не получается. CreateHeroForPlayer создаёт героя, но контролировать я его не могу, хоть он и считается моим. Пробовал удалять перед этим основного героя через Destroy, но не уверен что это правильно. ReplaceHeroWith отлично меняет героев стандартных, но вот моего что-то не хочет. На верхней панели герой пропадает и отключает мне взаимодействие с миром т.е. старый персонаж остался, на мои команды передвижение и подобные не реагирует, как и все остальные заспавненые нпс. Надеюсь объяснил понятно.
Оставлю тут на всякий
Код:
function ChatCommand:PickHero(playerid,text)
    print(string.sub(text, 7))
    if string.sub(text, 7) == "finnick" then
        PlayerResource:GetPlayer(playerid):GetAssignedHero():Destroy()
        CreateHeroForPlayer("npc_dota_hero_riki",PlayerResource:GetPlayer(playerid)) -- Мой 2 способ изменить героя
    else
        PlayerResource:ReplaceHeroWith(playerid,string.sub(text, 7),0,0) --Изначально использовал этот способ.
    end
end
Код:
"DOTAHeroes"
{
    "custom_hero_finnick"
    {
        // General
        //
        "HeroID"        "134"
        "BaseClass"                    "npc_dota_hero"
        "Model"                        "models/heroes/invoker/invoker.vmdl"
        "SoundSet"                    "0"                    // Name of sound set.
        "SelectOnSpawn"                "0"
        "UnitLabel"                 "finnick"
        "new_player_enable"        "1"
       
        // Abilities
        //----------------------------------------------------------------
       
        "Ability1"                    "generic_hidden"
        "Ability2"                    "dota_ability_give_regen_health"
        "Ability3"                    "generic_hidden"
        "Ability4"                    "generic_hidden"
        "Ability5"                    "generic_hidden"
        "Ability6"                    "generic_hidden"
        "Ability7"                    "custom_ability_finnick_invulnerability"
        "Ability10" "special_bonus_strength_6"
        "Ability11" "special_bonus_attack_damage_20"
        "Ability12" "special_bonus_attack_speed_20"
        "Ability13" "special_bonus_hp_250"
        "Ability14" "special_bonus_evasion_15"
        "Ability15" "special_bonus_all_stats_10"
        "Ability16" "special_bonus_hp_250"
        "Ability17" "special_bonus_all_stats_10"
        "AbilityTalentStart"        "10"

        // Armor
        //----------------------------------------------------------------
        "ArmorPhysical"                "0"            // Physical protection.
        "MagicalResistance"                "0"            // Magical protection.

        // Attack
        //----------------------------------------------------------------
        "AttackCapabilities"            "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttackDamageMin"            "23"            // Damage range min.
        "AttackDamageMax"            "28"            // Damage range max.
        "AttackDamageType"            "DAMAGE_TYPE_ArmorPhysical"
        "AttackRate"                "2.2"        // Speed of attack.
        "AttackAnimationPoint"        "0.4"        // Normalized time in animation cycle to attack.
        "AttackAcquisitionRange"    "250"        // Range within a target can be acquired.
        "AttackRange"                "120"        // Range within a target can be attacked.
        "AttackRangeBuffer"            "250"        // Extra attack range within which the target can move without canceling the attack

        // Attributes
        //----------------------------------------------------------------
        "AttributePrimary"            "DOTA_ATTRIBUTE_STRENGTH"
        "AttributeBaseStrength"        "24"            // Base strength
        "AttributeStrengthGain"        "2.8"            // Strength bonus per level.
        "AttributeBaseIntelligence"    "28"            // Base intelligence
        "AttributeIntelligenceGain"    "3.0"            // Intelligence bonus per level.
        "AttributeBaseAgility"        "20"            // Base agility
        "AttributeAgilityGain"        "2.2"            // Agility bonus per level.

        // Bounty
        //----------------------------------------------------------------
        "BountyXP"                    "0"            // Experience earn.
        "BountyGoldMin"                "0"            // Gold earned min.
        "BountyGoldMax"                "0"            // Gold earned max.

        // Bounds
        //----------------------------------------------------------------
        "BoundsHullName"            "DOTA_HULL_SIZE_HERO"
        "RingRadius"                "70"
        "HealthBarOffset"            "250"        // -1 means use the models

        // Movement
        //----------------------------------------------------------------
        "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
        "MovementSpeed"                "300"        // Speed
        "MovementTurnRate"            "0.5"        // Turning rate.
        "HasAggressiveStance"        "0"            // Plays alternate idle/run animation when near enemies
        "FollowRange"                "100"        // Distance to keep when following

        // Status
        //----------------------------------------------------------------
        "StatusHealth"                "250"        // Base health.
        "StatusHealthRegen"            "0"            // Health regeneration rate.
        "StatusMana"                "0"            // Base mana.
        "StatusManaRegen"            "0"            // Mana regeneration rate.
        "StatusStartingMana"        "-1"        // -1 means default to full mana

        // Team
        //----------------------------------------------------------------
        "TeamName"                    "DOTA_TEAM_GOODGUYS"
        "CombatClassAttack"            "DOTA_COMBAT_CLASS_ATTACK_HERO"
        "CombatClassDefend"            "DOTA_COMBAT_CLASS_DEFEND_HERO"
        "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
       
        // Vision
        //----------------------------------------------------------------
        "VisionDaytimeRange"        "575"        // Range of vision during day light.
        "VisionNighttimeRange"        "575"        // Range of vision at night time.
       
        // Bots
        //----------------------------------------------------------------
        "AttackDesire"                "1.0"        // How much bots want to attack them vs other non-hero things

        //Inventory
        "HasInventory"                "1"

        "IdleSoundLoop"                ""
    }
}
 
Последнее редактирование:
14 Авг 2017
514
44
28
18
Проект
Battle Heroes Arena
Реакции
43 0 1
Айди не совпадает, а так была бы ошибка. Я сейчас буду создавать крипа и с помощью CreateHeroForPlayer c кастомным меню пика присваивать героя. Осталось сделать это меню... На кройняк сделаю выбор через команду -pick в чат и применять ReplaceHeroWith.
P.S: Что-то ничего не получается. CreateHeroForPlayer создаёт героя, но контролировать я его не могу, хоть он и считается моим. Пробовал удалять перед этим основного героя через Destroy, но не уверен что это правильно. ReplaceHeroWith отлично меняет героев стандартных, но вот моего что-то не хочет. На верхней панели герой пропадает и отключает мне взаимодействие с миром т.е. старый персонаж остался, на мои команды передвижение и подобные не реагирует, как и все остальные заспавненые нпс. Надеюсь объяснил понятно.
Оставлю тут на всякий
Код:
function ChatCommand:PickHero(playerid,text)
    print(string.sub(text, 7))
    if string.sub(text, 7) == "finnick" then
        PlayerResource:GetPlayer(playerid):GetAssignedHero():Destroy()
        CreateHeroForPlayer("npc_dota_hero_riki",PlayerResource:GetPlayer(playerid)) -- Мой 2 способ изменить героя
    else
        PlayerResource:ReplaceHeroWith(playerid,string.sub(text, 7),0,0) --Изначально использовал этот способ.
    end
end
Код:
"DOTAHeroes"
{
    "custom_hero_finnick"
    {
        // General
        //
        "HeroID"        "134"
        "BaseClass"                    "npc_dota_hero"
        "Model"                        "models/heroes/invoker/invoker.vmdl"
        "SoundSet"                    "0"                    // Name of sound set.
        "SelectOnSpawn"                "0"
        "UnitLabel"                 "finnick"
        "new_player_enable"        "1"
      
        // Abilities
        //----------------------------------------------------------------
      
        "Ability1"                    "generic_hidden"
        "Ability2"                    "dota_ability_give_regen_health"
        "Ability3"                    "generic_hidden"
        "Ability4"                    "generic_hidden"
        "Ability5"                    "generic_hidden"
        "Ability6"                    "generic_hidden"
        "Ability7"                    "custom_ability_finnick_invulnerability"
        "Ability10" "special_bonus_strength_6"
        "Ability11" "special_bonus_attack_damage_20"
        "Ability12" "special_bonus_attack_speed_20"
        "Ability13" "special_bonus_hp_250"
        "Ability14" "special_bonus_evasion_15"
        "Ability15" "special_bonus_all_stats_10"
        "Ability16" "special_bonus_hp_250"
        "Ability17" "special_bonus_all_stats_10"
        "AbilityTalentStart"        "10"

        // Armor
        //----------------------------------------------------------------
        "ArmorPhysical"                "0"            // Physical protection.
        "MagicalResistance"                "0"            // Magical protection.

        // Attack
        //----------------------------------------------------------------
        "AttackCapabilities"            "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttackDamageMin"            "23"            // Damage range min.
        "AttackDamageMax"            "28"            // Damage range max.
        "AttackDamageType"            "DAMAGE_TYPE_ArmorPhysical"
        "AttackRate"                "2.2"        // Speed of attack.
        "AttackAnimationPoint"        "0.4"        // Normalized time in animation cycle to attack.
        "AttackAcquisitionRange"    "250"        // Range within a target can be acquired.
        "AttackRange"                "120"        // Range within a target can be attacked.
        "AttackRangeBuffer"            "250"        // Extra attack range within which the target can move without canceling the attack

        // Attributes
        //----------------------------------------------------------------
        "AttributePrimary"            "DOTA_ATTRIBUTE_STRENGTH"
        "AttributeBaseStrength"        "24"            // Base strength
        "AttributeStrengthGain"        "2.8"            // Strength bonus per level.
        "AttributeBaseIntelligence"    "28"            // Base intelligence
        "AttributeIntelligenceGain"    "3.0"            // Intelligence bonus per level.
        "AttributeBaseAgility"        "20"            // Base agility
        "AttributeAgilityGain"        "2.2"            // Agility bonus per level.

        // Bounty
        //----------------------------------------------------------------
        "BountyXP"                    "0"            // Experience earn.
        "BountyGoldMin"                "0"            // Gold earned min.
        "BountyGoldMax"                "0"            // Gold earned max.

        // Bounds
        //----------------------------------------------------------------
        "BoundsHullName"            "DOTA_HULL_SIZE_HERO"
        "RingRadius"                "70"
        "HealthBarOffset"            "250"        // -1 means use the models

        // Movement
        //----------------------------------------------------------------
        "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
        "MovementSpeed"                "300"        // Speed
        "MovementTurnRate"            "0.5"        // Turning rate.
        "HasAggressiveStance"        "0"            // Plays alternate idle/run animation when near enemies
        "FollowRange"                "100"        // Distance to keep when following

        // Status
        //----------------------------------------------------------------
        "StatusHealth"                "250"        // Base health.
        "StatusHealthRegen"            "0"            // Health regeneration rate.
        "StatusMana"                "0"            // Base mana.
        "StatusManaRegen"            "0"            // Mana regeneration rate.
        "StatusStartingMana"        "-1"        // -1 means default to full mana

        // Team
        //----------------------------------------------------------------
        "TeamName"                    "DOTA_TEAM_GOODGUYS"
        "CombatClassAttack"            "DOTA_COMBAT_CLASS_ATTACK_HERO"
        "CombatClassDefend"            "DOTA_COMBAT_CLASS_DEFEND_HERO"
        "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
      
        // Vision
        //----------------------------------------------------------------
        "VisionDaytimeRange"        "575"        // Range of vision during day light.
        "VisionNighttimeRange"        "575"        // Range of vision at night time.
      
        // Bots
        //----------------------------------------------------------------
        "AttackDesire"                "1.0"        // How much bots want to attack them vs other non-hero things

        //Inventory
        "HasInventory"                "1"

        "IdleSoundLoop"                ""
    }
}
Нужно KV в heroes и units
 

danilkoo832832

Пользователь
5 Фев 2016
40
3
8
18
Реакции
3 0 0
Что-то я ничего не понимаю. Надо юнита добавить в "DOTAHeroes" и в "DOTAUnits"? Я так сделал, но проблема остаётся. Потом решил и в npc_heroes_custom. Создай файл с юнитом и привязал его к в двух этих файлах с помощью #base, позже просто записал юнита без #base.
 
Реклама:

Pancer

Активный
30 Мар 2017
92
4
8
steamcommunity.com
Проект
MARVEL Heroes
VK
https://vk.com/pancerneroma
Реакции
4 0 0
Что-то я ничего не понимаю. Надо юнита добавить в "DOTAHeroes" и в "DOTAUnits"? Я так сделал, но проблема остаётся. Потом решил и в npc_heroes_custom. Создай файл с юнитом и привязал его к в двух этих файлах с помощью #base, позже просто записал юнита без #base.
Юнита (если это не герой) надо записывать только в "DOTAUnits" в npc_units_custom.txt. А проблема-то в чём?
 

Pancer

Активный
30 Мар 2017
92
4
8
steamcommunity.com
Проект
MARVEL Heroes
VK
https://vk.com/pancerneroma
Реакции
4 0 0
Слушайте, а как можно получить статистику о герое из npc_heroes_custom.txt? Например, мне надо получить значение "ArmorPhysical" для работы в lua. Находил вот это self:GetParent():GetKeyValue("ArmorPhysical"), но выдаёт ошибку о том, что нет значения.
 
Последнее редактирование:

shesmu

Продвинутый
22 Фев 2018
158
35
18
23
Реакции
32 0 3
Слушайте, а как можно получить статистику о герое из npc_heroes_custom.txt? Например, мне надо получить значение "ArmorPhysical" для работы в lua. Находил вот это self:GetParent():GetKeyValue("ArmorPhysical"), но выдаёт ошибку о том, что нет значения.
LoadKeyValues( "scripts/npc/npc_heroes_custom.txt" )[ self:GetParent():GetUnitName() ][ "ArmorPhysical" ], функции GetKeyValue не существует
 

WinTPo

Новичок
26 Янв 2019
1
0
1
22
Реакции
0 0 0
Всем привет! Цель у меня такая - нужно на иконку скилла сделать иконку героя. Как это правильно сделать? Остановился на том, чтобы создать просто новые иконки и указать путь, а где взять эти иконки? Рылся в файлах доты не нашел.
 
Реклама:

Thunder Lane

Активный
30 Сен 2018
86
14
8
20
Проект
Thunder's COT RPG
Реакции
14 0 0
Всем привет! Цель у меня такая - нужно на иконку скилла сделать иконку героя. Как это правильно сделать? Остановился на том, чтобы создать просто новые иконки и указать путь, а где взять эти иконки? Рылся в файлах доты не нашел.
Можно просто взять с вики
Пример : https://dota2-ru.gamepedia.com/Ember_Spirit
 

almazist1

Активный
17 Июл 2018
112
3
18
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0

almazist1

Активный
17 Июл 2018
112
3
18
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
Ребят как присвоить победу последнему выжившему на карте?
 
28 Июн 2017
148
47
18
Проект
Petri Reborn
Реакции
46 0 1
Ребят как присвоить победу последнему выжившему на карте?
в слушателе на смерть юнита делать проверку на героя и цикл который считает кол-во живых героев на карте, если жив только один то получать команду и присваивать победу
 

almazist1

Активный
17 Июл 2018
112
3
18
Проект
https://steamcommunity.com/sharedfiles/filedetails/?id=1589084821
Реакции
3 0 0
в слушателе на смерть юнита делать проверку на героя и цикл который считает кол-во живых героев на карте, если жив только один то получать команду и присваивать победу
Код:
chek = 0
-- An entity died
function GameMode:OnEntityKilled( keys )
  DebugPrint( '[BAREBONES] OnEntityKilled Called' )
  DebugPrintTable( keys )


  -- The Unit that was Killed
  local killedUnit = EntIndexToHScript( keys.entindex_killed )
  -- The Killing entity
  local killerEntity = nil

  if keys.entindex_attacker ~= nil then
    killerEntity = EntIndexToHScript( keys.entindex_attacker )
  end

  -- The ability/item used to kill, or nil if not killed by an item/ability
  local killerAbility = nil

  if keys.entindex_inflictor ~= nil then
    killerAbility = EntIndexToHScript( keys.entindex_inflictor )
  end

  local damagebits = keys.damagebits -- This might always be 0 and therefore useless
-----------------------------

-------------------------

-------------------------
if killedUnit:IsHero()then
    if killedUnit:IsHero() and killedUnit:IsAlive() then
    chek = chek + 1
    end
   
    if chek == 1 then
    GameRules:SetGameWinner(killedUnit:GetTeam())
    end
   
end
-------------------------
-----------------------------
  -- Put code here to handle when an entity gets killed
end
так?
 
Реклама:

Thunder Lane

Активный
30 Сен 2018
86
14
8
20
Проект
Thunder's COT RPG
Реакции
14 0 0
Привет, ты сделал победу последнему выжившему игроку? Просто нашел твой пост тут на форуме, и сам столкнулся с такой проблемой.
Привет и к сожалению нет так как вообще не разбираюсь в скриптах
 

Pancer

Активный
30 Мар 2017
92
4
8
steamcommunity.com
Проект
MARVEL Heroes
VK
https://vk.com/pancerneroma
Реакции
4 0 0
А как можно текстуру сделать полупрозрачной? Или модель надо сделать полупрозрачной? Просто надо сделать очки для персонажа, чтобы были видны глаза персонажа через них.
 

xDes

Активный
8 Ноя 2018
77
6
8
30
Реакции
6 0 0
как сделать команду в чате GG ? как в капитанском моде
 

Pancer

Активный
30 Мар 2017
92
4
8
steamcommunity.com
Проект
MARVEL Heroes
VK
https://vk.com/pancerneroma
Реакции
4 0 0
Как определить, какой тип и сколько урона наноситься (чистый, магический, критический)? И как посмотреть сколько времени весит на врага дебафф (замедление, оглушение)?
 
Реклама:
Реклама: