Кароче еще способ:
Движение: через создание и движение юнита-снаряда (приказ мув)
Столкновение: через детект урона жара
код луа
//! beginusercode
--какие то общие функции
function MoveX (x, Dist, Angle)
return x+Dist*Cos(Angle*0.0175)
end
function MoveY (x, Dist, Angle)
return x+Dist*Sin(Angle*0.0175)
end
function AbilityId(id)
return id:byte(1) * 0x1000000 + id:byte(2) * 0x10000 + id:byte(3) * 0x100 + id:byte(4)
end
--триггер запуска снарядов (примитивный)
MissleClick = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1, 1 do
TriggerRegisterPlayerMouseEventBJ(MissleClick, Player(i), bj_MOUSEEVENTTYPE_DOWN)
end
TriggerAddCondition(MissleClick, Condition(function() return BlzGetTriggerPlayerMouseButton() == MOUSE_BUTTON_TYPE_RIGHT end))
TriggerAddAction(MissleClick, function()
-- весь код экшена
local u=udg_Butcher
local mx=BlzGetTriggerPlayerMouseX()
local my=BlzGetTriggerPlayerMouseY()
local x=GetUnitX(u)
local y=GetUnitY(u)
local a=bj_RADTODEG*Atan2(my - y, mx - x)
--print(a)
local unit ud=CreateUnit(GetOwningPlayer(u), AbilityId('e000'), MoveX(x,30,a) ,MoveY(y,30,a) , a)
local nx=MoveX(x,2500,a)
local ny=MoveY(y,2500,a)
IssuePointOrder(ud, "move", nx, ny)
end)
-- триггер отлова урона через жар
gg_trg_DamageEvent = CreateTrigger( )
for i = 0, bj_MAX_PLAYER_SLOTS - 1, 1 do
TriggerRegisterPlayerUnitEvent(gg_trg_DamageEvent, Player(i), EVENT_PLAYER_UNIT_DAMAGING)
end
TriggerAddCondition( gg_trg_DamageEvent, Condition( function () return BlzGetEventAttackType( ) == ConvertAttackType( 0 ) and BlzGetEventDamageType( ) == ConvertDamageType( 8 ) and BlzGetEventWeaponType( ) == ConvertWeaponType( 0 ) end))
TriggerAddAction( gg_trg_DamageEvent, function ()
BlzSetEventDamage(300)
KillUnit(GetEventDamageSource())
--print("урон от жара")
end)
//! endusercode
Как же их колбасит, система дефолтного движения вызывает дикие дёрганья и неадекватность (но я её и не рассматривал, просто решил проверить на новом патче)
Цитата: "автор не смог найти и засунуть нормальные музыкальные темы для наг", так автор не ты? или о себе в 3 лице говоришь? а что за проблема с музыкой то, 13 лет у меня получилось заменить музыкальное оформление xgm.guru/p/wc3/nagaai, если надо ИИ можешь взять себе и переработать под свою расу, если ИИ конечно нету
А ещё нужен хоть 1 полный игровой скрин, а не только из редактора
prog, я готов к перевариванию этой информации
Событие нашёл, оно там рядом, а где менять урон то? в условии? в действии то точно урон уже нанёсся...
ммм?
По моему с атан2 что-то не так, возвращает число от -3 до 3 вместо 0-360 градусов
в jass формуле ещё какой-то bj_RADTODEG*atan2, вроде равен какой-то мелочи типа 0.0175, но всё равно угол не вернёт
Подставил bj_RADTODEG, всё заработало =)
Чтобы смотреть состояние способностей, как в 1 доте нужен дотахелпер, мемхак и AllySkillViewer. и не управлять....
А чтобы героя появились слева и ими управлять, это полный триггерный контроль, смотри на гуи в категории игрок => установка союза
а мы не будет использовать урон и вешать какой либо бафф, важен лишь факт соприкосновения, первый тик, после этого дамми снаряд будет уничтожен DracoL1ch, но ведь если в фильтре гонять будет бытрее?
лично я использую да тот самый
loop-firstOfGroup
call GroupEnumUnitsInRange(perebor,x,y,80,null)
loop
set e=FirstOfGroup(perebor)
exitwhen e==null
//ACTIONS
call GroupRemoveUnit(perebor,e)
set e=null
endloop
DracoL1ch, не помню чтобы балиста била насквозь =(, но это бы очень подошло quq_CCCP:
Юнитов в качестве снарядов лучше не юзать, большая нагрузка на движок. Юзайте даммика который стреляет по площади или по цели.
точно не подойдёт, визуально может быть и да, но с таким снарядом не столкнуться заранее
JackFastGame, это и собираемся выяснить, ещё не тестировалось особо, но жар перебирает юнитов движком игры, а не таймером+группой Maniac_91, точно я забыл просто как называется =)
Нужно вызвать специалиста по структурам? но код примерно такой будет:
struct AB
int userdata1
int userdata2
int userdataN
endstruct
function ACTIONS takes nothing returns nothing
int total
AB u=AB.create()
u.userdata1=5
u.userdata2=6
total=u.userdata1+u.userdata2 // =>11 вроде всё работает так-то
endfunction
P.s. я не спец по структурам
и тут нет метода delete, он потерялся =)
или структуры, тока не помню уже как точно там но код будет вида "unit.userdata1"
На крайняк можно под юзердату использовать некие поля из РО, смотря какой патч, если 126 и нужно хранить в юзердате к примеру родную броню юнита, то можно поместить броню в GetunitCostGold (в золотостоимость), разумеется если она не используется, но тогда рпидётся делать много манипуляций с РО, смотря для чего в общем, вариантов решения крайне много и смотря какой патч
NazarPunk, новый таймер на отдельную иллюзию верно же?
А как сделать чтобы функцию Jump можно было использовать в других триггерах? просто убрать local?
А все эти прыжки адекватно реагируют на склон/глубокую воду?
PT153, ну волны конечно не собирался использовать, но спасибо за инфу, очень прошу NazarPunk, сделать такую систему на луа wetalq, Как-то так
Каждый снаряд излучает ауру жара, она же аура соприкосновения с ним, и как только снаряд нанесёт урон, значит врезался, новое событие позволяет отследить этот момент соприкосновения, и можно изменить урон, отследить сам снаряд (уничтожит его или отклонить траекторию полёта)
NazarPunk, ну я как бы почти это и предложил, хотя если человека устроил ответ #1, значит достаточно уже тут разводить дискуссии, о том кто на сколько крут в познаниях крутых методов сортировок
это точно не тема, где обсуждать уровень игры вадима, (но в целом он и в экономику плох и в контроль, что войск, что героя, что в кастомки что в "наразвитие")
Очень сложные виды сортировок для не программиста, я бы просто пересортировал единожды мультиборд в отдельнных массив игроков где индексом от 0 до Х выступает номер игрока, сортировал бы по принципу нахождения максимального простым логическим сравнением, ну а в дуэли бы дрались игроки по индексу 0 с 1, 2 с 3 и т.д.
» WarCraft 3 / Удаление 6 лет работы с сайта, авторское право.
» WarCraft 3 / Самый производительный Bullet Hell
Движение: через создание и движение юнита-снаряда (приказ мув)
Столкновение: через детект урона жара
» WarCraft 3 / Heart of Tides
А ещё нужен хоть 1 полный игровой скрин, а не только из редактора
Ред. Берги
» WarCraft 3 / Отлов урона на 131 PTR
BlzSetEventDamage(NewDamage)
» WarCraft 3 / Отлов урона на 131 PTR
» WarCraft 3 / Отлов урона на 131 PTR
Событие нашёл, оно там рядом, а где менять урон то? в условии? в действии то точно урон уже нанёсся...
ммм?
Ред. Берги
» WarCraft 3 / [lua] Математические функции
в jass формуле ещё какой-то bj_RADTODEG*atan2, вроде равен какой-то мелочи типа 0.0175, но всё равно угол не вернёт
Подставил bj_RADTODEG, всё заработало =)
» WarCraft 3 / Заклинание: Вихрь Иллюзий
» WarCraft 3 / Заклинание: Вихрь Иллюзий
» WarCraft 3 / Иконки героев союзников слева
А чтобы героя появились слева и ими управлять, это полный триггерный контроль, смотри на гуи в категории игрок => установка союза
» WarCraft 3 / Самый производительный Bullet Hell
» WarCraft 3 / Самый производительный Bullet Hell
PT153, а то, случайно попало =)
» WarCraft 3 / Самый производительный Bullet Hell
» WarCraft 3 / Самый производительный Bullet Hell
DracoL1ch, но ведь если в фильтре гонять будет бытрее?
лично я использую да тот самый
quq_CCCP:
» WarCraft 3 / Самый производительный Bullet Hell
Maniac_91, точно я забыл просто как называется =)
Ред. Берги
» WarCraft 3 / как создать свой GetUnitUserData
и тут нет метода delete, он потерялся =)
» WarCraft 3 / Заклинание: Вихрь Иллюзий
» WarCraft 3 / как создать свой GetUnitUserData
На крайняк можно под юзердату использовать некие поля из РО, смотря какой патч, если 126 и нужно хранить в юзердате к примеру родную броню юнита, то можно поместить броню в GetunitCostGold (в золотостоимость), разумеется если она не используется, но тогда рпидётся делать много манипуляций с РО, смотря для чего в общем, вариантов решения крайне много и смотря какой патч
» WarCraft 3 / Заклинание: Вихрь Иллюзий
А как сделать чтобы функцию Jump можно было использовать в других триггерах? просто убрать local?
А все эти прыжки адекватно реагируют на склон/глубокую воду?
» WarCraft 3 / Заклинание: Вихрь Иллюзий
» WarCraft 3 / Самый производительный Bullet Hell
wetalq, Как-то так
Каждый снаряд излучает ауру жара, она же аура соприкосновения с ним, и как только снаряд нанесёт урон, значит врезался, новое событие позволяет отследить этот момент соприкосновения, и можно изменить урон, отследить сам снаряд (уничтожит его или отклонить траекторию полёта)
» WarCraft 3 / Самый производительный Bullet Hell
» WarCraft 3 / Как найти наибольшее из нескольких чисел?
» XGM Конкурсы / Warcraft 3 Custom Maps Contest 2019
» WarCraft 3 / Как найти наибольшее из нескольких чисел?