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

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

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

Оффлайн Epselot

  • 34
  • Мощь: 0
Здравствуйте. Как сделать скрипт: если юнит 1 в радиусе x от юнита 2, то юнит 2 применяет заклинание на юнит 1, либо начать атаковать?
И куда его вписывать? И рассчитано что таких юнитов будет очень много.

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Здравствуйте. Как сделать скрипт: если юнит 1 в радиусе x от юнита 2, то юнит 2 применяет заклинание на юнит 1, либо начать атаковать?
И куда его вписывать? И рассчитано что таких юнитов будет очень много.
developer.valvesoftware.com/...InRadius
developer.valvesoftware.com/...romTable

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Способов много. Например можешь искать юнитов через FindUnitsInRadius() и кастовать способность. Либо можешь почитать Datadriven Creature AI.

Оффлайн Epselot

  • 34
  • Мощь: 0
В итоге сделал через автокаст. Первоначальное забыл про него, а потом вспомнил как в варике делал подобное.

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Код
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
By PG.Freeman