Добавлен Берги,
опубликован
Визуализация квестов
Создаём простейший квест с маркером, и показываем игроку прямой путь куда идти, по прибытию в указанную точку завершаем квест.
Таким образом мы оказуаливаем сами квесты, что позволяет больше сосредоточиться на других аспектах геймплея.
Таким образом мы оказуаливаем сами квесты, что позволяет больше сосредоточиться на других аспектах геймплея.
Просто код
---
function AddQuest(hero, qx, qy,message)
local x, y = GetUnitX(hero), GetUnitY(hero)
local model = "AneuCaster"
local player = GetOwningPlayer(hero)
local isEnd = false
if GetLocalPlayer() ~= player then
model = ""
else
--print("звук созданного квеста")
StartSound(bj_questSecretSound)
end
local QuestPointer = AddSpecialEffect(model, x, y)
BlzSetSpecialEffectPitch(QuestPointer, math.rad(-90))--/bj_DEGTORAD
print(message)
TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
local z = BlzGetLocalUnitZ(hero)
local xc, yc = GetUnitX(hero), GetUnitY(hero)
local angle = AngleBetweenXY(xc, yc, qx, qy)
BlzSetSpecialEffectPosition(QuestPointer, MoveX(xc, 130, angle / bj_DEGTORAD), MoveY(yc, 130, angle / bj_DEGTORAD), z + 10)
BlzSetSpecialEffectYaw(QuestPointer, angle)
if IsUnitInRangeXY(hero, qx, qy, 200) then
isEnd = true
end
if isEnd then
if GetLocalPlayer() == player then
StartSound(bj_questCompletedSound)
end
DestroyTimer(GetExpiredTimer())
DestroyEffect(QuestPointer)
print("квест №" .. "1" .. " выполнен, даём награду")
end
end)
TimerStart(CreateTimer(), 10, true, function()
if isEnd then
DestroyTimer(GetExpiredTimer())
--print("Выключаем мигалку")
else
PingMinimapForPlayer(player, qx, qy, 3)
end
end)
end
Небольшой вспомогательный код, часто встречается в моих картах
TIMER_PERIOD = 0.03125
function AngleBetweenXY(xa, ya, xb, yb)
return math.atan(yb - ya, xb - xa)
end
function MoveX(x, distance, angle)
return x + distance * math.cos(angle * bj_DEGTORAD)
end
function MoveY(y, distance, angle)
return y + distance * math.sin(angle * bj_DEGTORAD)
end
Просто гифка
Модифицированная модель стрелочки, которую можно наклонить кодом
Карта пример
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Можно ли было пунктирными линиями на мини-карте показать (старик 2)? располагается ли варик таким функционалом?