XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Hate
конь вакуумный
offline
Опыт: 43,117
Активность:
он должен поворачиваться к ближайшему юниту, тоесть сначала проверяет есть ли в радиусе 50 живые враги, если нет то в 100 потом 150.... и так до 700. и есть есть юнит то он поворачивается к случайному юниту в этом радиусе который есть (например на радиусе 250 условие выполнилось и он повернется к случайному в радиусе 250)
Старый 13.11.2011, 16:53
16GB
GhostOne User
offline
Опыт: 59,317
Активность:
значит находить ближайшего юнита в 700 понятно
16GB добавил:
вот
» Code
function ABU takes unit u,unit c returns real
return Atan2(GetUnitY(u)-GetUnitY(c),GetUnitX(u)-GetUnitX(c))
endfunction

function IsUnitDead takes unit u returns boolean
return GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function FDFD takes unit u,unit u2 returns real
local real dx = GetUnitX(u2)-GetUnitX(u)
local real dy = GetUnitY(u2)-GetUnitY(u)
return SquareRoot(dx*dx+dy*dy)
endfunction

function GetClosest takes unit h,group g returns unit
local unit tmp = null
local unit u = null
local real d = 0.
local real c = 700.
call GroupClear(udg_G)
set bj_groupAddGroupDest = udg_G
call ForGroup(g,function GroupAddGroupEnum)
loop
set tmp = FirstOfGroup(udg_G)
if tmp != null then
set d = FDFD(h,tmp)
if d < c then
set c = d
set u = tmp
endif
endif
call GroupRemoveUnit(udg_G,tmp)
exitwhen tmp == null
endloop
return u
endfunction

function T takes nothing returns nothing
local real x = GetUnitX(udg_Dante)
local real y = GetUnitY(udg_Dante)
local integer i = 0
local unit u
call GroupEnumUnitsInRange(udg_G,x,y,700.,null)
loop
set u = FirstOfGroup(udg_G)
if IsUnitEnemy(u,GetOwningPlayer(udg_Dante)) and not IsUnitDead(u) then
set i = i+1
call GroupAddUnit(udg_GG,u)
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
if i > 0 then
set u = GetClosest(udg_Dante,udg_GG)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\DeathandDecay\\DeathandDecayTa​rget.mdl",u,"chest"))
call SetUnitFacingTimed(udg_Dante,ABU(udg_Dante,u),.6)
set i = 0
endif
call GroupClear(udg_GG)
set u = null
endfunction
Старый 13.11.2011, 17:03
Hate
конь вакуумный
offline
Опыт: 43,117
Активность:
~16GB:
значит находить ближайшего юнита в 700 понятно
16GB добавил:
вот
» Code
function ABU takes unit u,unit c returns real
return Atan2(GetUnitY(u)-GetUnitY(c),GetUnitX(u)-GetUnitX(c))
endfunction

function IsUnitDead takes unit u returns boolean
return GetUnitTypeId(u) == 0 or IsUnitType(u, UNIT_TYPE_DEAD)
endfunction

function FDFD takes unit u,unit u2 returns real
local real dx = GetUnitX(u2)-GetUnitX(u)
local real dy = GetUnitY(u2)-GetUnitY(u)
return SquareRoot(dx*dx+dy*dy)
endfunction

function GetClosest takes unit h,group g returns unit
local unit tmp = null
local unit u = null
local real d = 0.
local real c = 700.
call GroupClear(udg_G)
set bj_groupAddGroupDest = udg_G
call ForGroup(g,function GroupAddGroupEnum)
loop
set tmp = FirstOfGroup(udg_G)
if tmp != null then
set d = FDFD(h,tmp)
if d < c then
set c = d
set u = tmp
endif
endif
call GroupRemoveUnit(udg_G,tmp)
exitwhen tmp == null
endloop
return u
endfunction

function T takes nothing returns nothing
local real x = GetUnitX(udg_Dante)
local real y = GetUnitY(udg_Dante)
local integer i = 0
local unit u
call GroupEnumUnitsInRange(udg_G,x,y,700.,null)
loop
set u = FirstOfGroup(udg_G)
if IsUnitEnemy(u,GetOwningPlayer(udg_Dante)) and not IsUnitDead(u) then
set i = i+1
call GroupAddUnit(udg_GG,u)
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
if i > 0 then
set u = GetClosest(udg_Dante,udg_GG)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\DeathandDecay\\DeathandDecayTa​rget.mdl",u,"chest"))
call SetUnitFacingTimed(udg_Dante,ABU(udg_Dante,u),.6)
set i = 0
endif
call GroupClear(udg_GG)
set u = null
endfunction
нешта тут много ошибок компиляции непонятных...
Старый 13.11.2011, 17:18
Msey
????
offline
Опыт: 67,346
Активность:
Hatsume_Hate, скрин ошибок покажи, и желательно строки, на которые ругается ве
Старый 13.11.2011, 19:09
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:40.