Убрать пробивание бкб

Ares

Пользователь
22 Окт 2015
25
0
Я изменил хукшот клокверка(кд, манакост, все такое)
но вот не получилось сделать так, чтобы скилл не пробивал мейджик иммюн
я добавил вот эту строчку
Код:
	"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"
но ничего не именилось, бкб по прежнему пробивает
Общий код способности выглядит вот так
Код:
	"new_rattletrap_hookshot"
{
	// General
	//-------------------------------------------------------------------------------------------------------------
	"BaseClass"				"rattletrap_hookshot"
	"AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_POINT"
	"AbilityUnitDamageType"        "DAMAGE_TYPE_MAGICAL"
	"SpellImmunityType"				"SPELL_IMMUNITY_ENEMIES_NO"

	// Casting
	//-------------------------------------------------------------------------------------------------------------
	"AbilityCastPoint"				"0.3"
	"AbilityCastRange"				"2000"
	"MaxLevel" "1"
	
	// Time		
	//-------------------------------------------------------------------------------------------------------------
	"AbilityCooldown"				"7"
	
	// Cost
	//-------------------------------------------------------------------------------------------------------------
	"AbilityManaCost"				"0"
	
	// Special
	//-------------------------------------------------------------------------------------------------------------
	"AbilitySpecial"
	{
		"01"
		{
			"var_type"			"FIELD_INTEGER"
			"latch_radius"		"125"
		}
		"02"
		{
			"var_type"			"FIELD_INTEGER"
			"stun_radius"		"175"
		}
		"03"
		{	
			"var_type"			"FIELD_FLOAT"
			"duration"			"1.0"
		}
		
		"04"
		{	
			"var_type"			"FIELD_INTEGER"
			"speed"				"4000"
		}
		"05"
		{	
			"var_type"			"FIELD_INTEGER"
			"tooltip_range"		"2000"
		}
		"06"
		{
			"var_type"			"FIELD_INTEGER"
			"damage"			"10"
		}
	}
}


Из единственного возможного варианта пофиксить этого - это переписать скилл с нуля, что не в моих силах
Может что-то еще можно сделать?
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Сделай каст на target. Его хук кастуется на точку, и, соответственно, он будет отрабатывать на бкб, ибо бкб не блокирует "эффекты" скиллов, оно поглощает магический дмг и запрещает на "носителя" накладывать "дебаффы".
Если сделаешь хуку условие "кастоваться на цель", а не на точку: получишь свой "иммунитет к хуку".
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Это не вариант, если сделать хукшот таргет спеллом, то весь смысл скилла пропадет из-за невозможности кастовать его на точку

по-другому никак?
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Это не вариант, если сделать хукшот таргет спеллом, то весь смысл скилла пропадет из-за невозможности кастовать его на точку

по-другому никак?

По другому - это мудрить не с умением, а с бкб. Например, можешь попробовать сделать модификатор для бкб такой, что делает своего носителя "прозрачным" для эффектов. Например, объект "дерево" "прозрачно" для эффекта хука (его анимации и отработки столкновения с объектом "не прозрачным").

Ну и еще по другому: сделать свой хук с нуля.
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Ну, если быть точным, то мне конкретно нужно для того, чтобы хукшот проходил сквозь фейз шифт пака
Но дело как раз в том, что у фейз шифта модификатор иммуна к магии стоит
Код:
MODIFIER_STATE_MAGIC_IMMUNE
Как я понял, ты имеешь ввиду что-то из этого
Код:
MODIFIER_STATE_INVULNERABLE
MODIFIER_STATE_OUT_OF_GAME

но при этих модификаторах фейз шифт не является челлендж спеллом

А хук с нуля я хотел попробовать, мне сказали, что легче всего сделать это, взяв скрипт хука пуджа(он доступен). Но это оказалось слишком сложным для моих текущих способностей, там скрипта 2 в общей сложности на 300 строк гдет, и многое я не смог понять
 

Илья

Друзья CG
25 Сен 2015
2,348
41
[quote author=Ares link=topic=331.msg1841#msg1841 date=1445605295]
Ну, если быть точным, то мне конкретно нужно для того, чтобы хукшот проходил сквозь фейз шифт пака
Но дело как раз в том, что у фейз шифта модификатор иммуна к магии стоит
Код:
MODIFIER_STATE_MAGIC_IMMUNE
Как я понял, ты имеешь ввиду что-то из этого
Код:
MODIFIER_STATE_INVULNERABLE
MODIFIER_STATE_OUT_OF_GAME

но при этих модификаторах фейз шифт не является челлендж спеллом

А хук с нуля я хотел попробовать, мне сказали, что легче всего сделать это, взяв скрипт хука пуджа(он доступен). Но это оказалось слишком сложным для моих текущих способностей, там скрипта 2 в общей сложности на 300 строк гдет, и многое я не смог понять
[/quote]

Нет, я имел в виду как раз писать "свои" модификаторы, а не просто менять какие-то константы.
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Нет, я имел в виду как раз писать "свои" модификаторы, а не просто менять какие-то константы.

Можешь дать гайд какой-нибудь, или что-нибудь в этом роде(можно даже на английском, постараюсь разобраться)?
Просто понятия не имею как модификаторы писать
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Можешь дать гайд какой-нибудь, или что-нибудь в этом роде(можно даже на английском, постараюсь разобраться)?
Просто понятия не имею как модификаторы писать

http://customgames.ru/forum/index.php?topic=169.0

http://customgames.ru/forum/index.php?topic=69.0

http://moddota.com/forums/discussion/14/datadriven-ability-breakdown-documentation##icon
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
11
Читаю и такой чоооооооооооооооооооооооооооо.
Вообщем, тип урона ванильных скилов изменять нельзя, можно изменить только то что напишется в игре, по факту урон останется тем же. Хочешь изменить тип урона - перепиши скилл полностью.
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Читаю и такой чоооооооооооооооооооооооооооо.
Вообщем, тип урона ванильных скилов изменять нельзя, можно изменить только то что напишется в игре, по факту урон останется тем же. Хочешь изменить тип урона - перепиши скилл полностью.

Да я и дело то не в типе урона, а в анимации скилла и его отработке.
 
Последнее редактирование модератором:

xxNpCxx

Активный
16 Окт 2015
85
0
Читаю и такой чоооооооооооооооооооооооооооо.
Вообщем, тип урона ванильных скилов изменять нельзя, можно изменить только то что напишется в игре, по факту урон останется тем же. Хочешь изменить тип урона - перепиши скилл полностью.
Зачем изменять скилл полностью если есть возможность взять этот самый скилл за родительский класс для создания нового и изменить только те вещи которые тебя интересуют ?
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Зачем изменять скилл полностью если есть возможность взять этот самый скилл за родительский класс для создания нового и изменить только те вещи которые тебя интересуют ?

Потому что это ему ничего не даст, если ограничиваться только ability cutom.
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Зачем изменять скилл полностью если есть возможность взять этот самый скилл за родительский класс для создания нового и изменить только те вещи которые тебя интересуют ?

Потому что нельзя убрать флаг, пробивающий бкб если меняешь скилл через родительский класс, как я понял

Тут только скилл переписывать как я понял, но это слишком сложно для меня, хорошо, что мне это не слишком нужно.
 
Последнее редактирование модератором:

xxNpCxx

Активный
16 Окт 2015
85
0
Потому что нельзя убрать флаг, пробивающий бкб если меняешь скилл через родительский класс, как я понял

Тут только скилл переписывать как я понял, но это слишком сложно для меня, хорошо, что мне это не слишком нужно.
Полиморфизм. -)
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Полиморфизм. -)

Помоги в другом. Пытаюсь сделать так, чтобы при касте скилла джаггернаута все, кто попал под действие скилла отлетали (knockback)
но что-то не выходит
Код:
 "juggernaut_blade_fury_datadriven"
{
 // General
 //-------------------------------------------------------------------------------------------------------------
 "BaseClass"    "juggernaut_blade_fury"
 "AbilityBehavior"    "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IMMEDIATE | DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL"
 "AbilityUnitDamageType"   "DAMAGE_TYPE_MAGICAL" 
 "SpellImmunityType"    "SPELL_IMMUNITY_ENEMIES_NO"
 "FightRecapLevel"    "1"
 "AbilityTextureName"   "juggernaut_blade_fury"

 // Casting
 //-------------------------------------------------------------------------------------------------------------
 "AbilityCastRange"    "0"
 "AbilityCastPoint"    "0 0 0 0"

 // Time  
 //-------------------------------------------------------------------------------------------------------------
 "AbilityCooldown"    "9 9 9 8"
 "AbilityDuration"    "0.4"

 // Damage.
 //-------------------------------------------------------------------------------------------------------------
 "AbilityDamage"     "300 350 400 450"

 // Cost
 //-------------------------------------------------------------------------------------------------------------
 "AbilityManaCost"    "30 30 35 35"  

 // Special
 //-------------------------------------------------------------------------------------------------------------
 "AbilitySpecial"
 {
  "01"
  {
   "var_type"     "FIELD_FLOAT"
   "blade_fury_damage_tick" "0.2"
  }
  "02"
  {
   "var_type"     "FIELD_INTEGER"
   "blade_fury_radius"   "250"
  }
 }
   "OnSpellStart"
 {
  "ApplyModifier"
  {
   "ModifierName" "modifier_knockback"
   "Target"   "POINT"
   "Duration"  "0.4"
  }
 }
  
 "Modifiers"
 {
   "modifier_knockback"
   {
    "Passive"   "0"
    "IsHidden"   "0"
    "IsDebuff"   "0"
    "OnSpellStart"
     {
      "Knockback"
      {
        "target" "POINT"
       "Center"     "CASTER"
       "Distance"     "300"
       "Duration"     "0.2"
       "Height"     "0"
      }
     }
   }
 }
}
}

Код:
"target" "POINT"

Точнее я даже знаю, что скорее всего из-за этого
Но что поставить вместо POINT, чтобы кнокбек был в радиусе действия скилла? Или как задать POINT?
 
Последнее редактирование модератором:

xxNpCxx

Активный
16 Окт 2015
85
0
Точнее я даже знаю, что скорее всего из-за этого
Но что поставить вместо POINT, чтобы кнокбек был в радиусе действия скилла? Или как задать POINT?

Правильно обратил внимание что дело в Target. Вот тебе информация . Читай тут все что тебе нужно.

Значение точечных целей для Target

CASTER
TARGET
POINT
ATTACKER
UNIT

Многоцелевые значения для Target

Чтобы указать сразу несколько целей в игровом мире для действия, используем следующие значения в Target. Далее перечислены значения, которые описывают область в которой нужно искать цели и каким образом фильтровать цели.

Center - Где будет находится центр области(Круга).То есть на кастующем, на цели, на клике, на ракете, на юните, на атакующем.

CASTER, TARGET, POINT, PROJECTILE, UNIT, ATTACKER

Radius - длина радиуса в юнитах(ед.изм Hammer редактора)

IntegerValue

Teams - Фильтр по команде.

DOTA_UNIT_TARGET_TEAM_BOTH
DOTA_UNIT_TARGET_TEAM_CUSTOM
DOTA_UNIT_TARGET_TEAM_ENEMY
DOTA_UNIT_TARGET_TEAM_FRIENDLY
DOTA_UNIT_TARGET_TEAM_NONE

Types, ExcludeTypes - Фильтр по типу объектов в игровом мире.

DOTA_UNIT_TARGET_ALL
DOTA_UNIT_TARGET_BASIC
DOTA_UNIT_TARGET_BUILDING
DOTA_UNIT_TARGET_COURIER
DOTA_UNIT_TARGET_CREEP
DOTA_UNIT_TARGET_CUSTOM
DOTA_UNIT_TARGET_HERO
DOTA_UNIT_TARGET_MECHANICAL
DOTA_UNIT_TARGET_NONE
DOTA_UNIT_TARGET_OTHER
DOTA_UNIT_TARGET_TREE

Flags, ExcludeFlags - Фильтр по флагам, которые установлены у объектов игрового мира.

DOTA_UNIT_TARGET_FLAG_CHECK_DISABLE_HELP
DOTA_UNIT_TARGET_FLAG_DEAD
DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE
DOTA_UNIT_TARGET_FLAG_INVULNERABLE
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES
DOTA_UNIT_TARGET_FLAG_MANA_ONLY
DOTA_UNIT_TARGET_FLAG_MELEE_ONLY
DOTA_UNIT_TARGET_FLAG_NO_INVIS
DOTA_UNIT_TARGET_FLAG_NONE
DOTA_UNIT_TARGET_FLAG_NOT_ANCIENTS
DOTA_UNIT_TARGET_FLAG_NOT_ATTACK_IMMUNE
DOTA_UNIT_TARGET_FLAG_NOT_CREEP_HERO
DOTA_UNIT_TARGET_FLAG_NOT_DOMINATED
DOTA_UNIT_TARGET_FLAG_NOT_ILLUSIONS
DOTA_UNIT_TARGET_FLAG_NOT_MAGIC_IMMUNE_ALLIES
DOTA_UNIT_TARGET_FLAG_NOT_NIGHTMARED
DOTA_UNIT_TARGET_FLAG_NOT_SUMMONED
DOTA_UNIT_TARGET_FLAG_OUT_OF_WORLD
DOTA_UNIT_TARGET_FLAG_PLAYER_CONTROLLED
DOTA_UNIT_TARGET_FLAG_RANGED_ONLY

MaxTargets -Максимум найденных целей в области.

IntegerValue

Random - Добавить ли еще один рандомный объект из игрового мира сверх максимума.

BooleanValue

ScriptSelectPoints - Поиск в области делается через LUA скрипт.

ScriptFile, Function, Radius, Count
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
А сама структура у меня не была нарушена? То есть при касте скилла модификатор должен применяться у меня?

Код:
  "OnSpellStart"
 {
  "ApplyModifier"
  {
   "ModifierName" "modifier_knockback"
   "Duration"  "0.4"
  }
 }
  
 "Modifiers"
 {
   "modifier_knockback"
   {
    "Passive"   "0"
    "IsHidden"   "0"
    "IsDebuff"   "0"
    "OnSpellStart"
     {

     "Target"
     {
      "Center"  "CASTER"
      "Radius"  "%blade_fury_radius"
      "Teams"  "DOTA_UNIT_TARGET_TEAM_ENEMY"
      "Types"  "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
     }
      "Knockback"
      {
       "Distance"     "300"
       "Duration"     "0.2"
       "Height"     "0"
      }
     }
   }
 }

где я ошибся?
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
11
[quote author=Ares link=topic=331.msg1891#msg1891 date=1445972485]
А сама структура у меня не была нарушена? То есть при касте скилла модификатор должен применяться у меня?

Код:
  "OnSpellStart"
 {
  "ApplyModifier"
  {
   "ModifierName" "modifier_knockback"
   "Duration"  "0.4"
  }
 }
  
 "Modifiers"
 {
   "modifier_knockback"
   {
    "Passive"   "0"
    "IsHidden"   "0"
    "IsDebuff"   "0"
    "OnSpellStart"
     {

     "Target"
     {
      "Center"  "CASTER"
      "Radius"  "%blade_fury_radius"
      "Teams"  "DOTA_UNIT_TARGET_TEAM_ENEMY"
      "Types"  "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
     }
      "Knockback"
      {
       "Distance"     "300"
       "Duration"     "0.2"
       "Height"     "0"
      }
     }
   }
 }

где я ошибся?
[/quote]
Target внутри блока действия, то есть внутри Knockback
 
Последнее редактирование модератором:

Ares

Пользователь
22 Окт 2015
25
0
Код:
   "OnSpellStart"
 {
   "ApplyModifier"
  {
   "ModifierName" "modifier_knockback"
   "Duration"  "0.4"
  }
 }
  
 "Modifiers"
 {
   "modifier_knockback"
   {
    "Passive"   "0"
    "IsHidden"   "0"
    "IsDebuff"   "0"
    "OnSpellStart"
     {
      "Knockback"
      {
       "Target"
         {
      "Center"  "CASTER"
      "Radius"  "%blade_fury_radius"
      "Teams"  "DOTA_UNIT_TARGET_TEAM_ENEMY"
      "Types"  "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
         }
       "Distance"     "300"
       "Duration"     "0.2"
       "Height"     "0"
      }
     }
   }
 }

Вот так? Не получается. А в ApplyModifier что писать в "Target"? Или достаточно того, что у меня написано?
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Я практиковался недавно с knockback, у меня было так:

Код:
 "OnSpellStart"
    {    
	    "Knockback"
		     {
            "Target" "TARGET"
            "Center" "CASTER"
            "Duration" "1"
            "Distance" "100"
            "Height" "0"
			}

		"Damage"
            {
            "Target" "TARGET"
            "Type" "DAMAGE_TYPE_PHYSICAL"
            "Damage" "50"
            } 
    }
 
Последнее редактирование модератором:
Реклама: