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

Custom Abilities начало.

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

Оффлайн doter.ua

  • Друзья CG
  • 272
  • Мощь: 1
Custom Abilities начало.
« : 25-09-2014, 20:46:35 »
ability_datadriven

Предисловие:
Спойлер
Для полноценного гайда за один присест времени нету, буду добавлять фрагментами.
[свернуть]
Часть 1

Статья ориентирована на тех, кто уже делал скилы сам или по предыдущим гайдам (на основе существующих "BaseClass" "ability_name")
Первым делом нужно указать "BaseClass"             "ability_datadriven"
Следующее, что нужно сделать  - сохранить (добавить в закладки) два ресурса:
По сути это ссылки на одно и то же, но в первой более удобная структура (есть понятные заметки-инструкции), а вторая (вики), в отличии от первой, обновляется. Если не смогли найти что-нибудь в первой - пробуйте на вики.
Просто так начать кодить будет непросто. Вначале можно искать чужие примеры (GitHub, Holdout и т.д.), и переделывать их.
Сам принцип работы с Key Value подразумевает, что вы знаете некоторые value которые можно подставить, или знаете где их взять (если забыли как они пишутся).
Например: одним из первых параметров, которые нужно будет указать, это поведение абилки (англ. behavior) "AbilityBehavior". Так с ходу сложно предположить, что вообще туда можно подставить, но если в первой из ссылок  воспользоваться поиском по слову behavior (для chrome Ctrl + F), то можно увидеть, что есть список констант (зарезервированных разработчиками значений).
Для наглядности скрин:
Спойлер
[свернуть]
Там есть английские комменты, но все мы играли в доту, и даже без них понимаем, какая абилка использует DOTA_ABILITY_BEHAVIOR_PASSIVE или  DOTA_ABILITY_BEHAVIOR_AOE. (забегая на перед, скажу, что можно использовать несколько поведений в одной абилке, разделяя значения символом "|")

Первую часть пилил в браузере (стим не запускал, уже поздно и мне влом  8)), поэтому в основном сухая теория, во второй планирую показать простую абилку.
Пока буду искать время для второй части советую изучить первую ссылку, особенно верх и низ (в центре куча модифаеров, их можно не задрачивать :D)

Часть 2

1. Разберем пару свойств (ключей):
  • "AbilityTextureName" - иконка. Указав "treant_living_armor", получим
  • "AbilityUnitTargetTeam" фракции (команды), на которых будет действовать заклинание, например: "DOTA_UNIT_TARGET_TEAM_ENEMY" на врагов.
  • "AbilityUnitTargetType" типы юнитов, на которых будет действовать заклинание, например:   "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" на героев и на крипов
Остальные разберем в процессе написания самих скилов. А сейчас стоит отметить две ключевых штуки: Events и Actions по сути из них строится вся структура абилок.
Код
Event 
{
   Action
}
- когда происходит событие, будут выполняться действия, которые мы указали.
Вот список значений из второй ссылки (Вики)
Events
Спойлер
OnChannelFinish
OnChannelInterrupted
OnChannelSucceeded
OnOwnerDied
OnOwnerSpawned
OnProjectileFinish
OnProjectileHitUnit
OnSpellStart
OnToggleOff
OnToggleOn
OnUpgrade
OnAbilityEndChannel
OnAbilityStart
OnAttack
OnAttackAllied
OnAttackFailed
OnCreated
OnEquip
OnHealReceived
OnHealthGained
OnHeroKilled
OnManaGained
OnOrder
OnProjectileDodge
OnRespawn
OnSpentMana
OnStateChanged
OnTeleported
OnTeleporting
OnUnitMoved
[свернуть]
У Actions тоже есть список, но я не буду копировать его, просто в качестве примера возьму один элемент:
Где Heal  - название, а под ним перечисляются свойства: HealAmount и Target.
Код
 Название
{
    "Свойство"     "значение"
}
Не обязательно использовать все свойства (Обычно по логике видно, без каких будет работать) Например у Damage есть необязательные свойства минДмг и МаксДмг, а вот без Таргета (цель) работать не будет :)
В общем хватит теории делаем простую абилку: будем наносить урон по таргету.
Спойлер
[свернуть]
Сделаю вид, что вы уже прочитали в каком-либо гайде (а они есть) о том, как\где создавать абилку и добавлять ее к герою.
Где-то в файле npc_abilities_custom.txt пишем:
Код
"DOTAAbilities"
{
"Version" "1"

"my_mega_ability"
{
"BaseClass"                      "ability_datadriven"
"AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
"AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_BOTH"
          "AbilityUnitTargetType"      "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
"AbilityTextureName"    "viper_viper_strike"

"AbilityCastRange" "1000"
"AbilityCooldown" "1"

"OnSpellStart"
{
"Damage"
{
"Damage" "100"
"Type" "DAMAGE_TYPE_MAGICAL"
"Target" "TARGET"
}
}
}
}
"OnSpellStart" - на старте заклинания.
Значения Type"   "DAMAGE_TYPE_MAGICAL" можно посмотреть в разделе констант: developer.valvesoftware.com/...onstants

В следующей части добавим анимацию, как вы могли заметить, хп отнимается моментально и не понятно кто нанес урон.
To be continue . . .
« Последнее редактирование: 27-09-2014, 13:54:07 от doter.ua »
гайды
сурпрайз mthfckr :D

[свернуть]

Оффлайн doter.ua

  • Друзья CG
  • 272
  • Мощь: 1
Re: Custom Abilities начало.
« Ответ #1 : 27-09-2014, 13:54:40 »
Up! добавил часть 2.
гайды
сурпрайз mthfckr :D

[свернуть]

Оффлайн quantt

  • 3
  • Мощь: 0
  • null
Re: Custom Abilities начало.
« Ответ #2 : 09-08-2015, 13:48:48 »
Привет друг, у меня есть вопрос. Можно ли как-то увести исходники скилов(Нашел мод с интересными скилами но хреновой реализацией)?( 1-й День занимаюсь картостоением, прости если вопрос тупой ::) )

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Re: Custom Abilities начало.
« Ответ #3 : 09-08-2015, 14:12:52 »
Привет друг, у меня есть вопрос. Можно ли как-то увести исходники скилов(Нашел мод с интересными скилами но хреновой реализацией)?( 1-й День занимаюсь картостоением, прости если вопрос тупой ::) )
Вполне можно. Качаешь мод в воркшопе, качаешь GFC Scape, идешь в Steam\steamapps\workshop\content\570\ ищешь папку по id мода, открываешь GFC Scapом и распаковываешь. Пожалуйста, скрипты и абилки доступны полностью с комментами.

Оффлайн quantt

  • 3
  • Мощь: 0
  • null
Re: Custom Abilities начало.
« Ответ #4 : 09-08-2015, 16:50:15 »
CryDeS, Большее спасибо)

Оффлайн doter.ua

  • Друзья CG
  • 272
  • Мощь: 1
Re: Custom Abilities начало.
« Ответ #5 : 10-08-2015, 08:00:06 »
CryDeS, а потом в стиме появляются клоны твоей карты с постфиксом multiplier x20 и онлайном больше чем в твоем оригинале, который становится мусором. Не все используют чужие исходники в подобных целях, но таких достаточно.
гайды
сурпрайз mthfckr :D

[свернуть]

Оффлайн CryDeS

  • Друзья CG
  • 1194
  • Мощь: 11
Re: Custom Abilities начало.
« Ответ #6 : 10-08-2015, 16:14:18 »
CryDeS, а потом в стиме появляются клоны твоей карты с постфиксом multiplier x20 и онлайном больше чем в твоем оригинале, который становится мусором. Не все используют чужие исходники в подобных целях, но таких достаточно.
Я знаю что не все используют исходники для обучения, но что уж поделать если почти все прозрачно.
Спойлер
Да и у меня вообще мнение, что если используют мое и переделывают - пожалуйста, мне не особо жалко. Но всякие multiplier'ы я все же не очень понимаю, скучные же они, чисто на разок сыграть. А если после multiplierа твою карту бросили, ну значит карта была не так интересна, верно?
[свернуть]

Оффлайн Slavko

  • Продвинутый
  • 224
  • Мощь: 5
  • -_-
Re: Custom Abilities начало.
« Ответ #7 : 11-08-2015, 07:53:44 »
doter.ua, значит разработчик заслужил, раз не догадался немного доработать свою карту первым :)
Ландшафтеры, мастера фотошопа и скриптеры более-менее адекватного уровня - приглашаю за заманчивым предложением в скайп: vyacheslavmikh

Оффлайн vanjavs

  • 6
  • Мощь: 0
Re: Custom Abilities начало.
« Ответ #8 : 21-09-2015, 07:55:56 »
Спойлер
ability_datadriven


Предисловие:
Спойлер
Для полноценного гайда за один присест времени нету, буду добавлять фрагментами.
[свернуть]
Часть 1

Статья ориентирована на тех, кто уже делал скилы сам или по предыдущим гайдам (на основе существующих "BaseClass" "ability_name")
Первым делом нужно указать "BaseClass"             "ability_datadriven"
Следующее, что нужно сделать  - сохранить (добавить в закладки) два ресурса:
По сути это ссылки на одно и то же, но в первой более удобная структура (есть понятные заметки-инструкции), а вторая (вики), в отличии от первой, обновляется. Если не смогли найти что-нибудь в первой - пробуйте на вики.
Просто так начать кодить будет непросто. Вначале можно искать чужие примеры (GitHub, Holdout и т.д.), и переделывать их.
Сам принцип работы с Key Value подразумевает, что вы знаете некоторые value которые можно подставить, или знаете где их взять (если забыли как они пишутся).
Например: одним из первых параметров, которые нужно будет указать, это поведение абилки (англ. behavior) "AbilityBehavior". Так с ходу сложно предположить, что вообще туда можно подставить, но если в первой из ссылок  воспользоваться поиском по слову behavior (для chrome Ctrl + F), то можно увидеть, что есть список констант (зарезервированных разработчиками значений).
Для наглядности скрин:
Спойлер
[свернуть]
Там есть английские комменты, но все мы играли в доту, и даже без них понимаем, какая абилка использует DOTA_ABILITY_BEHAVIOR_PASSIVE или  DOTA_ABILITY_BEHAVIOR_AOE. (забегая на перед, скажу, что можно использовать несколько поведений в одной абилке, разделяя значения символом "|")

Первую часть пилил в браузере (стим не запускал, уже поздно и мне влом  8) ), поэтому в основном сухая теория, во второй планирую показать простую абилку.
Пока буду искать время для второй части советую изучить первую ссылку, особенно верх и низ (в центре куча модифаеров, их можно не задрачивать :D )

Часть 2

1. Разберем пару свойств (ключей):
  • "AbilityTextureName" - иконка. Указав "treant_living_armor", получим
  • "AbilityUnitTargetTeam" фракции (команды), на которых будет действовать заклинание, например: "DOTA_UNIT_TARGET_TEAM_ENEMY" на врагов.
  • "AbilityUnitTargetType" типы юнитов, на которых будет действовать заклинание, например:   "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP" на героев и на крипов
Остальные разберем в процессе написания самих скилов. А сейчас стоит отметить две ключевых штуки: Events и Actions по сути из них строится вся структура абилок.
Код
Event 
{
   Action
}
- когда происходит событие, будут выполняться действия, которые мы указали.
Вот список значений из второй ссылки (Вики)
Events
Спойлер
OnChannelFinish
OnChannelInterrupted
OnChannelSucceeded
OnOwnerDied
OnOwnerSpawned
OnProjectileFinish
OnProjectileHitUnit
OnSpellStart
OnToggleOff
OnToggleOn
OnUpgrade
OnAbilityEndChannel
OnAbilityStart
OnAttack
OnAttackAllied
OnAttackFailed
OnCreated
OnEquip
OnHealReceived
OnHealthGained
OnHeroKilled
OnManaGained
OnOrder
OnProjectileDodge
OnRespawn
OnSpentMana
OnStateChanged
OnTeleported
OnTeleporting
OnUnitMoved
[свернуть]
У Actions тоже есть список, но я не буду копировать его, просто в качестве примера возьму один элемент:
Где Heal  - название, а под ним перечисляются свойства: HealAmount и Target.
Код
 Название
{
    "Свойство"     "значение"
}
Не обязательно использовать все свойства (Обычно по логике видно, без каких будет работать) Например у Damage есть необязательные свойства минДмг и МаксДмг, а вот без Таргета (цель) работать не будет :)
В общем хватит теории делаем простую абилку: будем наносить урон по таргету.
Спойлер
[свернуть]
Сделаю вид, что вы уже прочитали в каком-либо гайде (а они есть) о том, как\где создавать абилку и добавлять ее к герою.
Где-то в файле npc_abilities_custom.txt пишем:
Код
"DOTAAbilities"
{
   "Version"      "1"

   "my_mega_ability"
    {
      "BaseClass"                        "ability_datadriven"
      "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
      "AbilityUnitTargetTeam"     "DOTA_UNIT_TARGET_TEAM_BOTH"
            "AbilityUnitTargetType"      "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
      "AbilityTextureName"       "viper_viper_strike"

      "AbilityCastRange"       "1000"
      "AbilityCooldown"      "1"
     
      "OnSpellStart"
      {
         "Damage"
         {
            "Damage"        "100"
            "Type"      "DAMAGE_TYPE_MAGICAL"
            "Target"      "TARGET"
         }
      }
   }
}
"OnSpellStart" - на старте заклинания.
Значения Type"   "DAMAGE_TYPE_MAGICAL" можно посмотреть в разделе констант: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Constants

В следующей части добавим анимацию, как вы могли заметить, хп отнимается моментально и не понятно кто нанес урон.
To be continue . . .
[свернуть]

А "тутор" будет продолжен, или все "Прошла любовь, завяли помидоры"(как-то так)? :-X

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Re: Custom Abilities начало.
« Ответ #9 : 08-10-2015, 10:55:44 »
Думаю, это можно оставить здесь, как доп материал.