17

» WarCraft 3 / Помогите c триггером :c

UrsaBoss, Т.е. мы делаем EVENT_PLAYER_UNIT_SPELL_EFFECT, оно срабатывает несколько раз(36), и после этого выключается
UrsaBoss, Кажется я понял...
Озарениеееее....
17

» Администрация XGM / Не могу удалить прикреплённый файл

Также есть баг - Если закинуть новый файл (удалив старый) с тем же именем что и старый, то при нажатии на ссылку нового будет открываться старый.
17

» WarCraft 3 / Помогите c триггером :c

UrsaBoss,
Нет, в FilterUnit должны попадать те, кто попадёт в область взгляда кастера.
Дополнение: не учёл множество юнитов:
раскрыть
...
function W2 takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local real degrees = LoadReal(udg_GHT,h,0)
local unit c = LoadUnitHandle(udg_GHT,h,1)
call BJDebugMsg(R2S(degrees))
if degrees <=360 then
call SetUnitFacing(c,degrees)
call SaveReal(udg_GHT,h,0,degrees-10)
local real x1 = GetUnitX(c) //координаты кастера, будет одной из точек треугольника
local real y1 = GetUnitY(c)
local real from = 1000//точнее отклонение от позиции кастера, нужна для точки взгляда.

local real a = degrees //угол поворота юнита
local real width = 10 // угол обзора героя будет равен width градусам. Примерно расставляем какой угол будет в градусах
local real angle = width/2 //Половина ширины обзора, от середины, точнее от угла поворота героя. 

//диапазон обзора героя от Amin до Amax
local real Amin = a - angle
local real Amax = a + angle

//определяем две оставшиеся крайние точки тругольника
local real x2 = x1 + from * Cos(Amin * bj_DEGTORAD) 
local real y2 = y1 + from * Sin(Amin * bj_DEGTORAD)
local real x3 = x1 + from * Cos(Amax * bj_DEGTORAD) 
local real y3 = y1 + from * Sin(Amax * bj_DEGTORAD)
call SetRect(rt,x1,t1,x2,y2)
// тут создаётся группа, и перебираются юниты, что попали в зону видимости
...
17

» WarCraft 3 / Помогите c триггером :c

UrsaBoss, Переодический таймер будет смещать взгляд юнита на 10, и выделять попавшие туда цели.
То - исходник, откуда брал это всё
раскрыть
function TriS takes real x1, real y1, real x2, real y2, real x3, real y3 returns real
    return RAbsBJ(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2
endfunction

function IsCoordsInTriangle takes real x, real y, real x1, real y1, real x2, real y2, real x3, real y3 returns boolean
    return R2I(TriS(x1, y1, x2, y2, x3, y3))==R2I(TriS(x1, y1, x2, y2, x, y)+TriS(x2, y2, x3, y3, x, y)+TriS(x1, y1, x3, y3, x, y))
endfunction

function W2 takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer h = GetHandleId(t)
local real degrees = LoadReal(udg_GHT,h,0)
local unit c = LoadUnitHandle(udg_GHT,h,1)
call BJDebugMsg(R2S(degrees))
if degrees <=360 then
call SetUnitFacing(c,degrees)
call SaveReal(udg_GHT,h,0,degrees-10)
local real x1 = GetUnitX(c) //координаты кастера, будет одной из точек треугольника
local real y1 = GetUnitY(c)
local real from = 1000//точнее отклонение от позиции кастера, нужна для точки взгляда.

local real a = degrees //угол поворота юнита
local real width = 10 // угол обзора героя будет равен width градусам. Примерно расставляем какой угол будет в градусах
local real angle = width/2 //Половина ширины обзора, от середины, точнее от угла поворота героя. 

//диапазон обзора героя от Amin до Amax
local real Amin = a - angle
local real Amax = a + angle

//определяем две оставшиеся крайние точки тругольника
local real x2 = x1 + from * Cos(Amin * bj_DEGTORAD) 
local real y2 = y1 + from * Sin(Amin * bj_DEGTORAD)
local real x3 = x1 + from * Cos(Amax * bj_DEGTORAD) 
local real y3 = y1 + from * Sin(Amax * bj_DEGTORAD)
call SetRect(rt,x1,t1,x2,y2)
local real x = GetUnitX(GetFilterUnit()) //координаты выбранного юнита
local real y = GetUnitY(GetFilterUnit())
call BJDebugMsg(GetUnitName(GetFilterUnit()))

//это молнии нужны для видимости границ треугольника, типа попала ли в треугольник. Так они вообще не нужны
set bj_lastCreatedLightning = AddLightningEx("CLPB", true, x1, y1, 0., x2, y2, 0.)
call DL(bj_lastCreatedLightning, 0.09)
set bj_lastCreatedLightning = AddLightningEx("CLPB", true, x1, y1, 0., x3, y3, 0.)
call DL(bj_lastCreatedLightning, 0.09)


if IsCoordsInTriangle(x,y,x1,y1,x2,y2,x3,y3) and c!= GetFilterUnit() then
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\Unsummon\\UnsummonTarget.mdl",GetFilterUnit(),"origin"))
call BJDebugMsg(GetUnitName(GetFilterUnit()))
endif

endif

if degrees >=361 then
call FlushChildHashtable(udg_GHT,h)
call DestroyTimer(t)
set t = null
call PauseUnit(c,false)
set c = null
endfunction

function W1 takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit c = LoadUnitHandle(udg_GHT,h,1)
    call SaveReal(udg_GHT,h,0,360)
    call TimerStart(t,0.1,true,function W2)
    call PauseUnit(c,true)
    set t = null
    set c = null
endfunction
17

» WarCraft 3 / Помогите c триггером :c

Появилась одна идея, пойду попробую реализовать
upd:Однако неполучилось, попытался переделать в 2 функции, передавая integer таймера напрямую в функцию.
17

» WarCraft 3 / Как изменить звуки отзывов юнитов не заменяя стандартные?

PT153:
А вот так тоже будет этот баг?
Да, я так и делал, и в итоге звуки заменились во всей игре, включая и другие карты =(
Можете попробовать с любой темой, или курсором.
Если подкинуть тему например на нежить, и после этого (можно сразу после загрузки карты) зайти в любую другую карту за нежить , то она будет применена.
Насчёт курсора - не уверен, ибо иногда при выходе в главное меню переподгружает исходники из мпк.
Также в теории можно заменить кнопки атаки и тд, используя путь варика, например в мпк путь:
War3\war3.mpq\ReplaceableTextures\CommandButtons\BTNAttack.blp
Можно подкинуть без мпк:
War3\ReplaceableTextures\CommandButtons\BTNAttack.blp
И опять же, в теории, оно будет работать.
сек, проверю
Да, всё работает (тестил на 1.28)
upd: Работает, если карта не подкидывает свою версию по этому пути.
Запуск вара -> прокидывается наша иконка -> запуск карты -> прокидывается иконка из карты -> после выхода в меню заменяется нашей (чаще всего)
17

» WarCraft 3 / Как изменить звуки отзывов юнитов не заменяя стандартные?

В другие карты = подгружает в вар и использует эти звуки, пока вар не будет перезапущен.
17

» WarCraft 3 / Меню паузы в 1.29

+Курсор не совпадает с координатами на экране (сложно по мультиборду ткнуть иногда)
+после двойного alt+enter иногда портреты смещаются и увеличиваются, цифры статов улетают вправо, и так далее, но обычно после этого вар крашится в течении минут 10
+У меня на моём 1024х768 в полноэкранке по стандарту видно только основную часть, но боковые как бы есть, но как бы и не отображатся (багается чат, мультаборды, таймеры и тд)
Посоветую играть в окне, это меньшее что можешь сделать
Главный плюс 1.29 = настакивание предметов в один пиксель 1!1!1111!!адын!
17

» WarCraft 3 / Покупка wc3

а где же коронное "живо только из-за комьюнити"
wetalq:
раньше ценник дешевле был, а сейчас по 500р сделали
Надо же собрать прибыль перед багаными "обновлениями", да и кушац то разрабам тоже нужно xD
17

» WarCraft 3 / триггер

Оп-па, а физике то нас и не учили :d
Ну тогда спавнить за капом горения (ну или "реген" повысить, чтоб быстрее тушилось)
17

» WarCraft 3 / Глючный AddUnitToStock

Плюсую за хотябы документацию
И невозможное возможно (с) МемХак 1!1!1!11
17

» WarCraft 3 / триггер

если муляж то используй созданное здание -> проиграть анимацию "birth"
также
увеличивай текущие хп здания по формуле
(Макс хп - Начальные хп)/время строительства.
т.е. в 1ю секунду будет 100 хп,во 2ю - 120, и т.д.
если не муляж - тогда через даммика
17

» WarCraft 3 / Декорации и вариации

быть может Идентификатор Текстур или как оно там не того номера = заменяет не те текстуры
Пробовал взять коррозию земли 2х2 в виде декорации, заменить её модельку на портал.
В итоге что-то ломается, получается невыделяемая и неубирающаяся с карты декорация.
Клятый вар !1!11!!адын!
17

» WarCraft 3 / Battle.net для Варика 3 работает?

Всё прекрасно работает....
Скачай Установщик варика, а не готовый патч.
Загруженные файлы
17

» WarCraft 3 / Перенос данных между обычными картами

Насколько помню, перенос по кампаниям по сети невозможен.
Решение - делать каждую главу как отдельную мапу, и переносить данные мира через сейв код.
Например - 1й игрок (сам игрок) - получает сейв код мира
а 2й игрок (зрителъ) - получает сейв код первого игрока
17

» WarCraft 3 / Deprotect(Помощь)

WEX - сведения о войсках отсутствуют или неверны
JNPG - то же самое.
Лечите(ломайте) карту через w3map restorer
По ссылочке xgm.guru/p/wc3/197230 довольно дельная информация написана
17

» WarCraft 3 / 2 условия одной функции

nvc123:
PyCCKuu_4eJl, CV это инт
т.е. максимальное значение как у инта
2 в 31 степени
юзай баг с предметами чтобы управлять характеристиками героя
так тебе понадобится лишь несколько предметов которые будут увеличивать ту или иную характеристику
и если надо например дать + 20 силы то даёшь герою 20 предметов с бонусом + 1 силы и всё
Разве есть книжки, добавляющие зелёные статы? Или я не уловил вашу мысль xD
Fakov:
Не всегда cv это инт. Он может принять значение с плавающей запятой и создать багу//
В CV наврядли можно запихать всё - будет либо багаться, либо я не осилю это, с шифрованием внутри варика я пока слаб.
22+(0.25*22)= 33
© Fakov
17

» WarCraft 3 / 2 условия одной функции

Хэш довольно гибок и настраиваем, хоть и довольно сложно всё настроить.
SetStats('I000',str,agi,int,dmg,arm,allstats,skilldamage,evasion,critchance,critmultiplayer,maxhp,maxmp)
А насчёт CV - какое максимально значение может быть у кастом валуе?
17

» WarCraft 3 / I2R

Сомневаюсь что округляться будет в нужную сторону, да и легче сразу real сравнивать.
17

» WarCraft 3 / 2 условия одной функции

Смысл в том, чтобы сделать шмот-пустышки и триггерно добавлять статы.
Записывая в либы параметры шмота(пока их 12), триггерно добавлять их юниту (на основе абилок 1+двойка в разных степенях)
Также это уберёт лимит в 4 абилки на предмет и избавит от возни создания кучи предметных абилок со статами.
17

» WarCraft 3 / Scope и глобалки

Это сжатый вариант, с минимальными данными, на синтаксис можете не смотреть.
Моя версия - хэндл в тестах идёт в виде 23763, так что пока думаю как это решить (математика!!!)
Гы.
Решил проблему, добавив
set ch = ModuloInteger(ch,8189)
Гы.