Datadriven А.И.

Qweik

Пользователь
14 Фев 2015
54
1
Сорри может я и боян, но не нашел этого тут, может кому пригодиться.

Datadriven А.И.
Очень полезный пример для простых AI, позволяет использовать АоЕ заклинания и Buffs. Способности будут использоваться по определенным значениям, параметры которых вы зададите в объекте. Более сложный ИИ пишется на Lua vscripts.

Состояние:
** DefaultState * определяет, каким будет поведение на основе ключей, заданных в блоке.

Код:
"DefaultState"    "Invade"
"States"
{
  "Invade"
  {
    "Name"     "Invade"
    "Aggression"  "70.0"
    "Avoidance"   "30.0"
    "Support"    "0.0"
    "RoamDistance" "1000.0"
  }
}

Параметры:

"Aggression" - желание атаковать и использовать атакующие способности после определенного порога HP (%).
"Avoidance" - объект будет убегать, после данного % HP.
"Support" - % HP , при которой объект начнет использование защитных способностей.
RoamDistance : расстояние, на которое объект будет отбегать во время бегства. По умолчанию 0.

Наступательные Способности А.И. ((("OffensiveAbilities")))

Пример 1

После того, как первый навык перезаряжается, объект будет пытаться использовать Ability2 все время.

Код:
"OffensiveAbilities"
{
  "Ability1"        
  {
    "Name"    "creature_force_of_nature"
    "UseOnTrees" "1"
    "AOE"     "1"
    "Radius"   "100"
  }
  "Ability2"        
  {
    "Name"    "furion_sprout"
  }
}

Пример 2

Это позволит использовать превосходство и бешенство, когда это возможно, и третью способность, когда есть по крайней мере 2 цели в радиусе 275.

Код:
"OffensiveAbilities"
{
  "Ability1"        
  {
    "Name"        "ursa_overpower"
  }
  "Ability2"        
  {
    "Name"        "ursa_enrage"
  }
  "Ability3"        
  {
    "Name"        "ursa_earth_shock"
    "AOE"        "1"
    "Radius"       "275"
    "MinimumTargets"   "2"
  }        
}

Пример 3

Не дает объекту использовать скилл, при наличии уже повешенного скилла на атакуемый объект.

Код:
"OffensiveAbilities"
{
  "Ability1"        
  {
    "Name"       "lesser_nightcrawler_pounce"
    "Damage"      "1"
    "Debuff"      "1"
  }
}

Пример 4

Не дает оглушать атакуемый объект, который будучи уже оглушен. (Не думаю , что это когда - либо работало, но все же. )

Код:
"OffensiveAbilities"
{
  "Ability1"
  {
    "Name"       "holdout_gyrocopter_homing_missile"
    "Damage"      "1"
    "Stun"       "1"
  }
}


Оборонительные Способности А.И. ((("DefensiveAbilities")))
Значения этого навыка привязаны к "Support" значению , определенному в "States".

Пример 1

"Buff" "1" Будет пытаться наложить "Buff" на объект, не будет применять, пока эффект действует.

Код:
"DefensiveAbilities"
{
  "Ability1"       
  {
    "Name"   "treant_living_armor"
    "Buff"   "1"
  }
}

Пример 2

"UseSelfishly" означает, отдавать приоритет на себя, "UseAtHealthPercent" вынуждает использование навыка, после этого порога HP (%).

Код:
"DefensiveAbilities"
{
  "Ability1"        
  {
    "Name"        "creature_zombie_berserk"
    "UseSelfishly"    "1"
    "Buff"        "1"
    "UseAtHealthPercent" "50"
  }
}

Пример 3

Использует способность, когда есть по крайней мере 3 цели в 650 радиуса, которые могут быть излечены.

Код:
"DefensiveAbilities"
{
  "Ability1"
  {
    "Name"         "creature_summon_undead"
  "Heal"         "1"
  "AOE"         "1"
  "Radius"        "650"
  "MinimumTargets"    "3"
  }
}

Побег Способности А.И. ((("EscapeAbilities")))

Будет использоваться в режиме отступать, привязан к "Avoidance".

Пример


Код:
"EscapeAbilities"
{
  "Ability1"        
  {
    "Name"        "lesser_nightcrawler_pounce"
  }
}

Предметы
Должен иметь "HasInventory" "1"


Пример

Код:
"EquippedItems"
{
  "ForceStaff"  {  "Item"  "item_force_staff"  }
  "PhaseBoots"  {  "Item"  "item_phase_boots"  }
  "Drums"      
  {  
    "Item"    "item_ancient_janggo"
    "Charges"  "10"
  }
  "Urn"
  {
    "Item"    "item_urn_of_shadows"
    "Charges"  "10"
  }
}
 
Последнее редактирование модератором:
  • Нравится
Реакции: Naydan

Илья

Друзья CG
25 Сен 2015
2,348
41
Отсюда взял?
Желательно ссылки на источник оставлять.
А так молодец, что перевел.
 

Qweik

Пользователь
14 Фев 2015
54
1
[quote author=Илья link=topic=1274.msg7774#msg7774 date=1485164850]
Отсюда взял?
Желательно ссылки на источник оставлять.
А так молодец, что перевел.
[/quote]
Не знал, да от туда . ;)
 

rosomaxa12

Активный
24 Авг 2018
72
2
Проект
colosseum
[quote author=Илья link=topic=1274.msg7774#msg7774 date=1485164850]
Отсюда взял?
Желательно ссылки на источник оставлять.
А так молодец, что перевел.
Не знал, да от туда . ;)[/QUOTE]

Как по мне не работает 1 пример.Босс вешает ульту слардара по кд

"OffensiveAbilities"
{
"Ability1"
{
"Name" "vengefulspirit_magic_missile"
}
"Ability2"
{
"Name" "slardar_amplify_damage"
"Damage" "1"
"Debuff" "1"
}
}
 

Веджитто

Пользователь
3 Июн 2017
45
0
Проект
Dotomemium Phoenix
Сорри может я и боян, но не нашел этого тут, может кому пригодиться.

Datadriven А.И.
Очень полезный пример для простых AI, позволяет использовать АоЕ заклинания и Buffs. Способности будут использоваться по определенным значениям, параметры которых вы зададите в объекте. Более сложный ИИ пишется на Lua vscripts.

Состояние:
** DefaultState * определяет, каким будет поведение на основе ключей, заданных в блоке.

Код:
"DefaultState"    "Invade"
"States"
{
  "Invade"
  {
    "Name"     "Invade"
    "Aggression"  "70.0"
    "Avoidance"   "30.0"
    "Support"    "0.0"
    "RoamDistance" "1000.0"
  }
}

Параметры:

"Aggression" - желание атаковать и использовать атакующие способности после определенного порога HP (%).
"Avoidance" - объект будет убегать, после данного % HP.
"Support" - % HP , при которой объект начнет использование защитных способностей.
RoamDistance : расстояние, на которое объект будет отбегать во время бегства. По умолчанию 0.

Наступательные Способности А.И. ((("OffensiveAbilities")))

Пример 1


После того, как первый навык перезаряжается, объект будет пытаться использовать Ability2 все время.

Код:
"OffensiveAbilities"
{
  "Ability1"       
  {
    "Name"    "creature_force_of_nature"
    "UseOnTrees" "1"
    "AOE"     "1"
    "Radius"   "100"
  }
  "Ability2"       
  {
    "Name"    "furion_sprout"
  }
}

Пример 2

Это позволит использовать превосходство и бешенство, когда это возможно, и третью способность, когда есть по крайней мере 2 цели в радиусе 275.

Код:
"OffensiveAbilities"
{
  "Ability1"       
  {
    "Name"        "ursa_overpower"
  }
  "Ability2"       
  {
    "Name"        "ursa_enrage"
  }
  "Ability3"       
  {
    "Name"        "ursa_earth_shock"
    "AOE"        "1"
    "Radius"       "275"
    "MinimumTargets"   "2"
  }       
}

Пример 3

Не дает объекту использовать скилл, при наличии уже повешенного скилла на атакуемый объект.

Код:
"OffensiveAbilities"
{
  "Ability1"       
  {
    "Name"       "lesser_nightcrawler_pounce"
    "Damage"      "1"
    "Debuff"      "1"
  }
}

Пример 4

Не дает оглушать атакуемый объект, который будучи уже оглушен. (Не думаю , что это когда - либо работало, но все же. )

Код:
"OffensiveAbilities"
{
  "Ability1"
  {
    "Name"       "holdout_gyrocopter_homing_missile"
    "Damage"      "1"
    "Stun"       "1"
  }
}


Оборонительные Способности А.И. ((("DefensiveAbilities")))
Значения этого навыка привязаны к "Support" значению , определенному в "States".

Пример 1

"Buff" "1" Будет пытаться наложить "Buff" на объект, не будет применять, пока эффект действует.

Код:
"DefensiveAbilities"
{
  "Ability1"      
  {
    "Name"   "treant_living_armor"
    "Buff"   "1"
  }
}

Пример 2

"UseSelfishly" означает, отдавать приоритет на себя, "UseAtHealthPercent" вынуждает использование навыка, после этого порога HP (%).

Код:
"DefensiveAbilities"
{
  "Ability1"       
  {
    "Name"        "creature_zombie_berserk"
    "UseSelfishly"    "1"
    "Buff"        "1"
    "UseAtHealthPercent" "50"
  }
}

Пример 3

Использует способность, когда есть по крайней мере 3 цели в 650 радиуса, которые могут быть излечены.

Код:
"DefensiveAbilities"
{
  "Ability1"
  {
    "Name"         "creature_summon_undead"
  "Heal"         "1"
  "AOE"         "1"
  "Radius"        "650"
  "MinimumTargets"    "3"
  }
}

Побег Способности А.И. ((("EscapeAbilities")))

Будет использоваться в режиме отступать, привязан к "Avoidance".

Пример



Код:
"EscapeAbilities"
{
  "Ability1"       
  {
    "Name"        "lesser_nightcrawler_pounce"
  }
}

Предметы
Должен иметь "HasInventory" "1"

Пример


Код:
"EquippedItems"
{
  "ForceStaff"  {  "Item"  "item_force_staff"  }
  "PhaseBoots"  {  "Item"  "item_phase_boots"  }
  "Drums"     
  { 
    "Item"    "item_ancient_janggo"
    "Charges"  "10"
  }
  "Urn"
  {
    "Item"    "item_urn_of_shadows"
    "Charges"  "10"
  }
}
а писать то это куда?
 

Веджитто

Пользователь
3 Июн 2017
45
0
Проект
Dotomemium Phoenix
Не работает
Код:
"npc_dota_neutral_kobold"
    {                                       
        // General
        //----------------------------------------------------------------
        "Model"                        "models/creeps/neutral_creeps/n_creep_kobold/kobold_c/n_creep_kobold_c.vmdl"    // Model.
        "BaseClass"                    "npc_dota_creep_neutral"
        "SoundSet"                    "n_creep_Melee"
        "Level"                        "1"
        "ModelScale"                     ".9"
        "IsNeutralUnitType"            "1"

        // Abilities
        //----------------------------------------------------------------
        "Ability1"                    "Respawn"            // Ability 1
        "Ability2"                    "centaur_khan_war_stomp"            // Ability 2
        "Ability3"                    ""            // Ability 3
        "Ability4"                    ""            // Ability 4

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

        // Attack
        //----------------------------------------------------------------
        "AttackCapabilities"        "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttackDamageMin"            "20"        // Damage range min.
        "AttackDamageMax"            "20"        // Damage range max.   
        "AttackRate"                "0.7"        // Speed of attack.
        "AttackAnimationPoint"        "0.38"        // Normalized time in animation cycle to attack.
        "AttackAcquisitionRange"    "500"        // Range within a target can be acquired.
        "AttackRange"                "100"        // Range within a target can be attacked.
        "ProjectileModel"            ""            // Particle system model for projectile.
        "ProjectileSpeed"            "0"            // Speed of projectile.           

        // Bounds
        //----------------------------------------------------------------
        "RingRadius"                "40"
        "HealthBarOffset"            "130"

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

        // Movement
        //----------------------------------------------------------------
        "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
        "MovementSpeed"                "270"        // Speed.

        // Status
        //----------------------------------------------------------------
        "StatusHealth"                "240"        // Base health.
        "StatusHealthRegen"            "0.5"        // Health regeneration rate.
        "StatusMana"                "1000"            // Base mana.
        "StatusManaRegen"            "1.0"        // Mana regeneration rate.         
        
        // Vision
        //----------------------------------------------------------------
        "VisionDaytimeRange"        "1400"        // Range of vision during day light.
        "VisionNighttimeRange"        "800"        // Range of vision at night time.
        
        // Team
        //----------------------------------------------------------------
        "TeamName"                    "DOTA_TEAM_NEUTRALS"                            // Team name.
        "CombatClassAttack"            "DOTA_COMBAT_CLASS_ATTACK_BASIC"
        "CombatClassDefend"            "DOTA_COMBAT_CLASS_DEFEND_BASIC"
        "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
        "DefaultState"    "Invade"
"States"
{
  "Invade"
  {
    "Name"     "Invade"
    "Aggression"  "100.0"
    "Avoidance"   "1.0"
    "Support"    "0.0"
    "RoamDistance" "0.0"
  }
}
"OffensiveAbilities"
{
  "Ability1"       
  {
    "Name"        "centaur_khan_war_stomp"
  }
    
}
    }
 

xDes

Продвинутый
8 Ноя 2018
232
34
Проект
Boss Survival Adventure
Не работает
Код:
"npc_dota_neutral_kobold"
    {                                    
        // General
        //----------------------------------------------------------------
        "Model"                        "models/creeps/neutral_creeps/n_creep_kobold/kobold_c/n_creep_kobold_c.vmdl"    // Model.
        "BaseClass"                    "npc_dota_creep_neutral"
        "SoundSet"                    "n_creep_Melee"
        "Level"                        "1"
        "ModelScale"                     ".9"
        "IsNeutralUnitType"            "1"

        // Abilities
        //----------------------------------------------------------------
        "Ability1"                    "Respawn"            // Ability 1
        "Ability2"                    "centaur_khan_war_stomp"            // Ability 2
        "Ability3"                    ""            // Ability 3
        "Ability4"                    ""            // Ability 4

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

        // Attack
        //----------------------------------------------------------------
        "AttackCapabilities"        "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttackDamageMin"            "20"        // Damage range min.
        "AttackDamageMax"            "20"        // Damage range max.
        "AttackRate"                "0.7"        // Speed of attack.
        "AttackAnimationPoint"        "0.38"        // Normalized time in animation cycle to attack.
        "AttackAcquisitionRange"    "500"        // Range within a target can be acquired.
        "AttackRange"                "100"        // Range within a target can be attacked.
        "ProjectileModel"            ""            // Particle system model for projectile.
        "ProjectileSpeed"            "0"            // Speed of projectile.        

        // Bounds
        //----------------------------------------------------------------
        "RingRadius"                "40"
        "HealthBarOffset"            "130"

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

        // Movement
        //----------------------------------------------------------------
        "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
        "MovementSpeed"                "270"        // Speed.

        // Status
        //----------------------------------------------------------------
        "StatusHealth"                "240"        // Base health.
        "StatusHealthRegen"            "0.5"        // Health regeneration rate.
        "StatusMana"                "1000"            // Base mana.
        "StatusManaRegen"            "1.0"        // Mana regeneration rate.      
     
        // Vision
        //----------------------------------------------------------------
        "VisionDaytimeRange"        "1400"        // Range of vision during day light.
        "VisionNighttimeRange"        "800"        // Range of vision at night time.
     
        // Team
        //----------------------------------------------------------------
        "TeamName"                    "DOTA_TEAM_NEUTRALS"                            // Team name.
        "CombatClassAttack"            "DOTA_COMBAT_CLASS_ATTACK_BASIC"
        "CombatClassDefend"            "DOTA_COMBAT_CLASS_DEFEND_BASIC"
        "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
        "DefaultState"    "Invade"
"States"
{
  "Invade"
  {
    "Name"     "Invade"
    "Aggression"  "100.0"
    "Avoidance"   "1.0"
    "Support"    "0.0"
    "RoamDistance" "0.0"
  }
}
"OffensiveAbilities"
{
  "Ability1"    
  {
    "Name"        "centaur_khan_war_stomp"
  }
 
}
    }


на, на основе этого можешь сделать, там и дроп есть и вещи у крипа и т.д. короче разбирайся
Код:
"Slark"
    {
        // General
        //----------------------------------------------------------------
        "BaseClass"                    "npc_dota_creature"
        "Model"                        "models/heroes/slark/slark.vmdl"
        "SoundSet"                    "Hero_Slark"
        "Level"                        "1"
        //1
        "ModelScale"                 "1.2"
        "HasInventory"                "1"

        // Abilities
        //----------------------------------------------------------------
        "Ability1"                    "slark_dark_pact"
        "Ability2"                    ""
        "Ability3"                    ""
        "Ability4"                    ""

        // Armor
        //----------------------------------------------------------------
        "ArmorPhysical"                "100"
        "MagicalResistance"            "10"

        // Attack
        //----------------------------------------------------------------
        "AttackCapabilities"        "DOTA_UNIT_CAP_MELEE_ATTACK"
        "AttackDamageMin"            "500"
        "AttackDamageMax"            "500"
        "AttackRate"                "0.4"
        "AttackAnimationPoint"        "0.2"
        "AttackAcquisitionRange"    "800"
        "AttackRange"                "150"
        "ProjectileModel"            ""
        "ProjectileSpeed"            ""

        // Bounds
        //----------------------------------------------------------------
        "RingRadius"                "70"
        "HealthBarOffset"            "160"

        // Bounty
        //----------------------------------------------------------------
        "BountyXP"                    "90"
        "BountyGoldMin"                "0"
        "BountyGoldMax"                "0"

        // Movement
        //----------------------------------------------------------------
        "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
        "MovementSpeed"                "400"

        // Status
        //----------------------------------------------------------------
        "StatusHealth"                "4000"
        "StatusHealthRegen"            "20"
        "StatusMana"                "3500"
        "StatusManaRegen"            "30"
       
        // Vision
        //----------------------------------------------------------------
        "VisionDaytimeRange"        "800"
        "VisionNighttimeRange"        "800"

        // Team
        //----------------------------------------------------------------
        "TeamName"                    "DOTA_TEAM_BADGUYS"
        "CombatClassAttack"            "DOTA_COMBAT_CLASS_ATTACK_BASIC"
        "CombatClassDefend"            "DOTA_COMBAT_CLASS_DEFEND_BASIC"
        "UnitRelationshipClass"        "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"


                //Precache
        //---------------------------------------------------------------------
        "GameSoundsFile"        "soundevents/game_sounds_heroes/game_sounds_slark.vsndevts"
        // Creature Data
        //----------------------------------------------------------------
        "Creature"
        {
            "CanRespawn"                "0"
   
           
            "States"
            {
                "Invade"
                {
                "Name"                "Invade"
                "Aggression"        "100.0"
                "Avoidance"            "0.0"
                "Support"            "0.0"
                }
            }
            "DefaultState"                "Invade"
           
            "OffensiveAbilities"
            {
                "Ability1"              
                {
                    "Name"                "slark_dark_pact"
                    "AOE"                "1"
                    "Radius"            "375"
                    "MinimumTargets"    "1"
                }
            }
            "AttachWearables"
            {
                "Wearable1" { "ItemDef" "336" }
                "Wearable2" { "ItemDef" "353" }
                "Wearable3" { "ItemDef" "354" }
                "Wearable4" { "ItemDef" "355" }
                "Wearable4" { "ItemDef" "356" }
            }      

            "ItemDrops"
            {
                "Trinkets"
                {
                    "Item"
                    {  
                        "1"                "item_mana_potion"
                        "2"                "item_health_potion"
                    }
                    "Chance"            "20"
                }
            }
           
            "EquippedItems"
            {
                "PowerTreads"
                {
                    "Item"                    "item_power_treads"
                }
                "vlad"
                {
                    "Item"                    "item_vladmir"
                }
                "desol"
                {
                    "Item"                    "item_desolator"
                }
            }
        }
    }
 
Реклама: