Если юнит 1 в радиусе x от юнита 2, применить заклинание.

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

Epselot

Пользователь
11 Янв 2017
34
0
Здравствуйте. Как сделать скрипт: если юнит 1 в радиусе x от юнита 2, то юнит 2 применяет заклинание на юнит 1, либо начать атаковать?
И куда его вписывать? И рассчитано что таких юнитов будет очень много.
 
Здравствуйте. Как сделать скрипт: если юнит 1 в радиусе x от юнита 2, то юнит 2 применяет заклинание на юнит 1, либо начать атаковать?
И куда его вписывать? И рассчитано что таких юнитов будет очень много.
https://developer.valvesoftware.com..._Tools/Scripting/API/Global.FindUnitsInRadius
https://developer.valvesoftware.com...ls/Scripting/API/Global.ExecuteOrderFromTable
 
Последнее редактирование модератором:
Способов много. Например можешь искать юнитов через FindUnitsInRadius() и кастовать способность. Либо можешь почитать Datadriven Creature AI.
 
В итоге сделал через автокаст. Первоначальное забыл про него, а потом вспомнил как в варике делал подобное.
 
Код:
function modifier_black_flash_speed_blast_aghanim:OnIntervalThink()
  if IsServer() then
  	if self:GetCaster():HasScepter() then
	  	local units = FindUnitsInRadius( self:GetCaster():GetTeamNumber(), self:GetCaster():GetOrigin(), self:GetCaster(), 400, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO, 0, FIND_CLOSEST, false )
			if #units > 0 then
				for _,target in pairs(units) do
					if self:GetAbility():IsCooldownReady() then
						local info = {
								EffectName = "particles/units/heroes/hero_vengeful/vengeful_magic_missle.vpcf",
								Ability = self:GetAbility(),
								iMoveSpeed = self:GetAbility():GetSpecialValueFor( "missile_speed" ),
								Source = self:GetAbility():GetCaster(),
								Target = target,
								iSourceAttachment = DOTA_PROJECTILE_ATTACHMENT_ATTACK_2
							}

						ProjectileManager:CreateTrackingProjectile( info )
						EmitSoundOn( "Hero_VengefulSpirit.MagicMissile", self:GetCaster() )
						self:GetAbility():StartCooldown(self:GetAbility():GetCooldown(self:GetAbility():GetLevel()))
						break
					end
				end
			end
		end
  end
end
 
Последнее редактирование модератором:
Реклама: