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

  • Автор темы Автор темы Ares
  • Дата начала Дата начала

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"
		}
	}
}


Из единственного возможного варианта пофиксить этого - это переписать скилл с нуля, что не в моих силах
Может что-то еще можно сделать?
 
Последнее редактирование модератором:
Сделай каст на target. Его хук кастуется на точку, и, соответственно, он будет отрабатывать на бкб, ибо бкб не блокирует "эффекты" скиллов, оно поглощает магический дмг и запрещает на "носителя" накладывать "дебаффы".
Если сделаешь хуку условие "кастоваться на цель", а не на точку: получишь свой "иммунитет к хуку".
 
Последнее редактирование модератором:
Это не вариант, если сделать хукшот таргет спеллом, то весь смысл скилла пропадет из-за невозможности кастовать его на точку

по-другому никак?
 
Это не вариант, если сделать хукшот таргет спеллом, то весь смысл скилла пропадет из-за невозможности кастовать его на точку

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

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

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

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

А хук с нуля я хотел попробовать, мне сказали, что легче всего сделать это, взяв скрипт хука пуджа(он доступен). Но это оказалось слишком сложным для моих текущих способностей, там скрипта 2 в общей сложности на 300 строк гдет, и многое я не смог понять
 
[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]

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

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

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
 
Последнее редактирование модератором:
Читаю и такой чоооооооооооооооооооооооооооо.
Вообщем, тип урона ванильных скилов изменять нельзя, можно изменить только то что напишется в игре, по факту урон останется тем же. Хочешь изменить тип урона - перепиши скилл полностью.
 
Читаю и такой чоооооооооооооооооооооооооооо.
Вообщем, тип урона ванильных скилов изменять нельзя, можно изменить только то что напишется в игре, по факту урон останется тем же. Хочешь изменить тип урона - перепиши скилл полностью.

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

Потому что это ему ничего не даст, если ограничиваться только ability cutom.
 
Последнее редактирование модератором:
Зачем изменять скилл полностью если есть возможность взять этот самый скилл за родительский класс для создания нового и изменить только те вещи которые тебя интересуют ?

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

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

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

Помоги в другом. Пытаюсь сделать так, чтобы при касте скилла джаггернаута все, кто попал под действие скилла отлетали (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?
 
Последнее редактирование модератором:
Точнее я даже знаю, что скорее всего из-за этого
Но что поставить вместо 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
 
Последнее редактирование модератором:
А сама структура у меня не была нарушена? То есть при касте скилла модификатор должен применяться у меня?

Код:
  "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 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
 
Последнее редактирование модератором:
Код:
   "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"? Или достаточно того, что у меня написано?
 
Последнее редактирование модератором:
Я практиковался недавно с knockback, у меня было так:

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

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