33

» WarCraft 3 / Удаление 6 лет работы с сайта, авторское право.

мы то все за, но хайвовцы начнут написывать нашей администрации с просьбой удалить контент
33

» WarCraft 3 / Самый производительный Bullet Hell

Кароче еще способ:
Движение: через создание и движение юнита-снаряда (приказ мув)
Столкновение: через детект урона жара
код луа
//! 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
Как же их колбасит, система дефолтного движения вызывает дикие дёрганья и неадекватность (но я её и не рассматривал, просто решил проверить на новом патче)
гифка
Загруженные файлы
33

» WarCraft 3 / Heart of Tides

Цитата: "автор не смог найти и засунуть нормальные музыкальные темы для наг", так автор не ты? или о себе в 3 лице говоришь? а что за проблема с музыкой то, 13 лет у меня получилось заменить музыкальное оформление xgm.guru/p/wc3/nagaai, если надо ИИ можешь взять себе и переработать под свою расу, если ИИ конечно нету
А ещё нужен хоть 1 полный игровой скрин, а не только из редактора
33

» WarCraft 3 / Отлов урона на 131 PTR

PrincePhoenix, но сути это не меняет... или я при событии DAMAGING могу сделать, GeteventDamage()=МОЁ ЧИСЛО?
33

» WarCraft 3 / Отлов урона на 131 PTR

prog, я готов к перевариванию этой информации
Событие нашёл, оно там рядом, а где менять урон то? в условии? в действии то точно урон уже нанёсся...
ммм?
33

» WarCraft 3 / [lua] Математические функции

По моему с атан2 что-то не так, возвращает число от -3 до 3 вместо 0-360 градусов
в jass формуле ещё какой-то bj_RADTODEG*atan2, вроде равен какой-то мелочи типа 0.0175, но всё равно угол не вернёт
Подставил bj_RADTODEG, всё заработало =)
33

» WarCraft 3 / Заклинание: Вихрь Иллюзий

NazarPunk, вот пытаюсь чутка код поковырять, вроде всё правильно установил
мне хотя бы 2-3 цвета и было бы норм, вообще сплошной монолит
Загруженные файлы
33

» WarCraft 3 / Иконки героев союзников слева

Принятый ответ
Чтобы смотреть состояние способностей, как в 1 доте нужен дотахелпер, мемхак и AllySkillViewer. и не управлять....
А чтобы героя появились слева и ими управлять, это полный триггерный контроль, смотри на гуи в категории игрок => установка союза
33

» WarCraft 3 / Самый производительный Bullet Hell

PT153, почти нет =) группу же лучше глобальную одну и туже 1 раз создать и просто наполнять её, уж локальная группа точно лишнее
33

» WarCraft 3 / Самый производительный Bullet Hell

e==null - условие выхода из цикла, значит группа пуста, иначе он будет бесконечно гонять loop , что вызовет дикий лаг на пару секунд
33

» WarCraft 3 / Самый производительный Bullet Hell

а мы не будет использовать урон и вешать какой либо бафф, важен лишь факт соприкосновения, первый тик, после этого дамми снаряд будет уничтожен
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:
Юнитов в качестве снарядов лучше не юзать, большая нагрузка на движок. Юзайте даммика который стреляет по площади или по цели.
точно не подойдёт, визуально может быть и да, но с таким снарядом не столкнуться заранее
33

» WarCraft 3 / Самый производительный Bullet Hell

JackFastGame, это и собираемся выяснить, ещё не тестировалось особо, но жар перебирает юнитов движком игры, а не таймером+группой
Maniac_91, точно я забыл просто как называется =)
33

» WarCraft 3 / как создать свой GetUnitUserData

Нужно вызвать специалиста по структурам? но код примерно такой будет:
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, он потерялся =)
33

» WarCraft 3 / Заклинание: Вихрь Иллюзий

А как сделать чтобы функцию Jump можно было использовать в других триггерах? просто убрать local?
Да
Причем не важно где Jump объявлена, хоть вначале хоть в конце кода? Кажись про это неоднократно говорилось уже, но я так и не до конца понял
33

» WarCraft 3 / как создать свой GetUnitUserData

или структуры, тока не помню уже как точно там но код будет вида "unit.userdata1"
На крайняк можно под юзердату использовать некие поля из РО, смотря какой патч, если 126 и нужно хранить в юзердате к примеру родную броню юнита, то можно поместить броню в GetunitCostGold (в золотостоимость), разумеется если она не используется, но тогда рпидётся делать много манипуляций с РО, смотря для чего в общем, вариантов решения крайне много и смотря какой патч
33

» WarCraft 3 / Заклинание: Вихрь Иллюзий

NazarPunk, новый таймер на отдельную иллюзию верно же?
А как сделать чтобы функцию Jump можно было использовать в других триггерах? просто убрать local?
А все эти прыжки адекватно реагируют на склон/глубокую воду?
33

» WarCraft 3 / Заклинание: Вихрь Иллюзий

prog, так то да, если к аттачу weapon эффекта можно еще 1 эффект приципить, я вообще забыл про манипуляции с эффектами
33

» WarCraft 3 / Самый производительный Bullet Hell

PT153, ну волны конечно не собирался использовать, но спасибо за инфу, очень прошу NazarPunk, сделать такую систему на луа
wetalq, Как-то так
Каждый снаряд излучает ауру жара, она же аура соприкосновения с ним, и как только снаряд нанесёт урон, значит врезался, новое событие позволяет отследить этот момент соприкосновения, и можно изменить урон, отследить сам снаряд (уничтожит его или отклонить траекторию полёта)
33

» WarCraft 3 / Самый производительный Bullet Hell

ScopteRectuS, с этого момента по подробней, мб они поэтому и фаталят, потому что какие то лимиты в движке, например связаны с частым тиком урона
33

» WarCraft 3 / Как найти наибольшее из нескольких чисел?

NazarPunk, ну я как бы почти это и предложил, хотя если человека устроил ответ #1, значит достаточно уже тут разводить дискуссии, о том кто на сколько крут в познаниях крутых методов сортировок
33

» XGM Конкурсы / Warcraft 3 Custom Maps Contest 2019

это точно не тема, где обсуждать уровень игры вадима, (но в целом он и в экономику плох и в контроль, что войск, что героя, что в кастомки что в "наразвитие")
33

» WarCraft 3 / Как найти наибольшее из нескольких чисел?

Очень сложные виды сортировок для не программиста, я бы просто пересортировал единожды мультиборд в отдельнных массив игроков где индексом от 0 до Х выступает номер игрока, сортировал бы по принципу нахождения максимального простым логическим сравнением, ну а в дуэли бы дрались игроки по индексу 0 с 1, 2 с 3 и т.д.