Нельзя атаковать в триггере

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Косяк с мультиплеером, если один герой зайдёт в зону (OnStartTouch ) всё работает как надо и если зайдёт второй герой (OnStartTouch ) всё будет работать как надо но если один из героев покинет зону тоесть (OnEndTouch) то скрипт работает через жопу и тот герой который остался один в зоне выходя из нёё он не может атаковать и герой который может атаковать зайдя в зону может атаковать, пробовал OnTrigger и OnEndTouch, OnStartTouchAll и OnEndTouchAll
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Можно закрыть тему всё исправил)
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Как в итоге исправил то? : )

Да в скрипте косяк был + для респавна героев прописал чтобы атака была ближняя так как если челик умрёт в зоне то респавнется герой без атакаи и прихлдилось бы бежать к триггеру. Последнее что осталось с триггером сделать это прописать ему проверку на то чтобы когда герой заходил в зону с нужным предметом он мог атаковать и при выкидывании предмета из инвентаря он не мог атаковать находясь попрежнему в зоне на данный момент если выкинуть итем то он будет атаковать в зоне
 
Последнее редактирование модератором:

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
А как тогда сделать так что бы нельзя было атаковать GetUnitName() == "npc_1" и при этом можно было применить на него предмет, сделал на npc неуязвимость но когда я пытаюсь использовать на npc предмет пишет "цель неуязвима" и нельзя применить предмет, по задумке у меня всё работает если уберу неуязвимость то смогу использовать предмет но также получается что могу с руки атаковать и в итоге выходит всё насмарку, с тем что бы использовать модификатор это правильно я с тобой согласен но если я бы знал как это реализовать
 
Последнее редактирование модератором:

CryDeS

Друзья CG
14 Июл 2015
1,210
11
А как тогда сделать так что бы нельзя было атаковать GetUnitName() == "npc_1" и при этом можно было применить на него предмет, сделал на npc неуязвимость но когда я пытаюсь использовать на npc предмет пишет "цель неуязвима" и нельзя применить предмет, по задумке у меня всё работает если уберу неуязвимость то смогу использовать предмет но также получается что могу с руки атаковать и в итоге выходит всё насмарку, с тем что бы использовать модификатор это правильно я с тобой согласен но если я бы знал как это реализовать
DOTA_UNIT_TARGET_FLAG_INVULNERABLE
 
Последнее редактирование модератором:

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Что то я делаю не так через states пробовал "MODIFIER_STATE_INVULNERABLE" "MODIFIER_STATE_VALUE_ENABLED" так же цель неуязвима как я понял DOTA_UNIT_TARGET_FLAG_INVULNERABLE делает не неуязвимым, пробовал "AbilityUnitTargetFlag" "DOTA_UNIT_TARGET_FLAG_INVULNERABLE" для предмета героя и для абилки которая имеет npc, через FindUnitsInRadius флаг этот делать также не получается
 
Последнее редактирование модератором:

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Ща по порядку всё объясню как у меня устроенно

для npc прописана банальное применение модификатора:
Код:
функция (ключ)
	local caster = keys.caster
	local target = keys.target
	local ability = keys.ability

ability:ApplyDataDrivenModifier(keys.caster, keys.caster, "modifier_invulnerable", {})
конец
то есть npc неуязвим

в npc абилити
Код:
	"BaseClass"			 "ability_datadriven"
	"AbilityBehavior"		"DOTA_ABILITY_BEHAVIOR_PASSIVE"
	"AbilityUnitDamageType"	"DAMAGE_TYPE_PURE"
	"AbilityUnitTargetType"	"DOTA_UNIT_TARGET_HERO"
	"AbilityUnitTargetFlag"     "DOTA_UNIT_TARGET_FLAG_INVULNERABLE"
	"AbilityCastAnimation"     "ACT_DOTA_DISABLED"

имеет пассивку, сама по себе пассивка
Код:
    "IsHidden" "1"
    "Passive" "1"
и запуск скрипта через таймер
Код:
    "ThinkInterval" "1"
    "OnIntervalThink"

далее предмет:
Код:
"AbilityBehavior"		"DOTA_ABILITY_BEHAVIOR_UNIT_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED"
	"AbilityUnitTargetTeam"	"DOTA_UNIT_TARGET_TEAM_ENEMY"
	"AbilityUnitTargetType"	"DOTA_UNIT_TARGET_CREEP"
	"AbilityUnitTargetFlag"     "DOTA_UNIT_TARGET_FLAG_INVULNERABLE"

и путь к скрипту, весть итем

код итема:
Код:
function ytryerwyery(keys)
  local caster = keys.caster
		 
	local units = FindUnitsInRadius( caster:GetTeamNumber(), caster:GetAbsOrigin(), caster, 150,
		DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BUILDING, DOTA_UNIT_TARGET_FLAG_INVULNERABLE, 0, false )
		
	  if units[1] then 
	if units[1]:IsCreep() then
	if units[1]:GetUnitName() == "npc_1" then
	units[1]:ForceKill(false)
 -- caster:Stop() 
  end	
 end
 end
end

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

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Немного упростил для npc
Код:
{

  "AbilityBehavior"   "DOTA_ABILITY_BEHAVIOR_PASSIVE"
  "BaseClass"      "ability_datadriven"
  "AbilityTextureName"    "rubick_empty1"
  "MaxLevel"           "1"
  
  "Modifiers"
  {
   "dummy_unit"
   {
     "Passive"            "1"
     "IsHidden"            "1"  
     "States"
     {

       "MODIFIER_STATE_INVULNERABLE"  "MODIFIER_STATE_VALUE_ENABLED"

     }
   }
  }
}
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Ты крипа спавнишь через dota base или скриптом? Мог бы просто кидать при спавне модификатор неуязвимости, а предметом его снимать и убивать (что, наверное, и имел в виду Адам).

"modifier_invulnerable" по моему (ссыль).
 
Последнее редактирование модератором:

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
[quote author=Илья link=topic=1444.msg9289#msg9289 date=1494267807]
Ты крипа спавнишь через dota base или скриптом? Мог бы просто кидать при спавне модификатор неуязвимости, а предметом его снимать и убивать (что, наверное, и имел в виду Адам).

"modifier_invulnerable" по моему (ссыль).
[/quote]

На данный момент спавню через -createhero), а так через CreateUnitByName по координатам
 
Последнее редактирование модератором:

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
А как я предметом сниму ? если цель неуязвима я даже не могу на него направить скилл, через AOE пробовал тоже самое я щас через флаг пытаюсь как то реализовать как CryDeS сказал, не получается(
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Ну попробуй спавнить так:

Код:
local unit = CreateUnitByName("unitName", Vector(x,y,z), true, nil, nil, team ) 
unit:AddNewModifier(unit, nil, "modifier_invulnerable", {})

И предметом убивать так (предмет на область ориентирован, потому что так надо?):

Код:
function ytryerwyery(keys)
  local caster = keys.caster
		 
  local units = FindUnitsInRadius( caster:GetTeamNumber(), caster:GetAbsOrigin(), caster, 150,
		DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BUILDING, DOTA_UNIT_TARGET_FLAG_INVULNERABLE, 0, false )
		
  if units[1] then 
	if units[1]:IsCreep() then
	  if units[1]:GetUnitName() == "npc_1" then
        units[1]:RemoveModifierByName("modifier_invulnerable")
	    units[1]:ForceKill(false)
 -- caster:Stop() 
      end	
    end
   end
end
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Мммм, на неуязвимость применять ниче нельзя? Ну тогда понятно, почему через аое пытаешься.
 

Илья

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

И да, я люблю ездить на велосипедах : ))
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Да даже через аое не получается
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Хахах да это как то люто будет, неужели нет того кто снимал неуязвимость)))
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Зачем тогда придумали DOTA_UNIT_TARGET_FLAG_INVULNERABLE чё за дичь или я криворукий
 

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
Узнал что ульта снайпера игнорирует неуязвимость
 
Реклама: