0
4
2 года назад
0

» WarCraft 3 / Помоги найти карту детства

Похоже на Война Городов
2
4
3 года назад
Отредактирован DazzleFirst
2

» WarCraft 3 / Суммирующиеся ауры


7.11.2021 Upd: спасибо за помощь. Всё таки добрался до своего старенького ноутбука Asus f5rl под Windows XP...
Разгадка оказалось очень проста - удалить статус (Buff) со способности ауры ('A000'). Правда есть пару нюансов:
  1. Всё же высвечивается статус (Buff) на рядом стоящих. Мой ноутбук не вывозит большое количество эффектов и пришлось удалить с Buff все эффекты
  2. Получаемый бонус удваивается. То бишь прописано в способности +1 к броне, но в игре даёт +2 к броне.
  3. Скачут показатели бонуса.
И все эти радости без Jass, vJass, cJass кодов.
Всё можно испробовать на приложенной карте и посмотреть на скриншотах.

0
4
3 года назад
0

» WarCraft 3 / Суммирующиеся ауры

rsfghd, спасибо, но подобная система перебора уже имеется.
Разные суммируются, однако я подразумевал(аю) только от одной ауры и одного и того же типа боевой единицы.
Если не затруднит могли бы попробовать играться с Buff или с самой способностью(ями)? На данный момент не имею доступа к редактору в ближайшую неделю.
0
4
6 лет назад
0

» WarCraft 3 / Заклинания на заказ

NilasAran_39, ledoed, для боевых единиц (не героев) не составит труда реализовать через GUI, ибо 30 прибавок это еще мало, однако для героев - это дикая проблема.
Первый момент, который придётся учесть - это изначальное* кол-во: здоровья, брони, урона, регенерации маны и здоровья (далее характеристик) героя. Исходя из значений последних добавлять некий процент.
Второй момент - броню основную (белую) не выйдет добавлять, а только дополнительную (зелёную). Предметов, что добавляют основную броню - нет, исходя из той информации, которой обладаю.
Регенерацию можно реализовать через таймер и увеличивать её до предела переменной real.
Если здоровье является основным параметром, что нужно добавить, а остальные не важны и возможно их убрать из наработки, то реализация данной способности проста. Используем работу GF RaiseD. Смотрим тут.
*Примечание: под изначальным принимается значение характеристик героя исключая добавленное с помощью наработки. В ином случае герой будет непобедимым безумцем, с каждым убитым, увеличивая не только процент характеристик, но и самого процента.
0
4
6 лет назад
0

» WarCraft 3 / Смертельный удар игнорирует броню?

исходящий урон
200% даю, что работает. По поводу полученного урона - не особо ручаюсь, ибо не тестировал.
0
4
6 лет назад
Отредактирован DazzleFirst
0

» WarCraft 3 / Смертельный удар игнорирует броню?

Alexey103
А так-же можно ли убрать эту цифру и какой урон наносит смертельный удар.
Можно попробовать использовать способность "Укрыться за щитом". На сколько мне известно подобная способность позволяет помножить как входящий, так и исходящий урон, но необходимо задействовать способность. Так же позволительно и обратное - уменьшать.
Alexey103
Можно ли использовать его как аналог способности бронебойность?
Насколько мне известно - нет. Только кодом наносить урон или установкой здоровья.
4
4
6 лет назад
4

» WarCraft 3 / В чём ошибка с локальными переменными?

Впервой вижу, чтоб так издевались над плавающем текстом...
Как пишет г-н Maniac_91, нет нужды в сохранении texttag, ибо при строчке
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 0.50 )
или (вариант получше)
call SetTextTagLifespan(GetLastCreatedTextTag(), 0.50)
Ваш texttag, как умненький мальчик, сам уберется, когда он сделал своё дело ;)
Правда есть один нюанс... Если Вы добавили строчку
call SetTextTagPermanent(GetLastCreatedTextTag(),true)
то этот мальчик будет стоять подле Вас до конца сабантуя и ждать команды на уничтожение ;)
0
4
6 лет назад
0

» WarCraft 3 / Fervor, Critical, Evade (способности)

Добрый день. Благодарю за комментарий.
quq_CCCP:
будет баговать с абилками типа "Жар приесподней"
Дополню - баги сто пудов будут с орб эффектами и любыми способностями (эффектами) с ежесекундным уроном. Поэтому любой урон приходится делать кодом. Мне подобная "фича" известна.
За упоминание отдельное спасибо. В самой карте никак не проинформировал. Мой косяк...
ну и для дальнего боя приказы не применимы, в среднем 0.25-0.40 сек. задержка между замахом и вылетом снаряда.
Никогда не любил дальний бой за его успешное извивание от отлова урона ;)
Очень муторно искать решение проблемы и я не утруждал себя поиском решений. Думаю, в ближайшее время этим не буду заниматься.
Есть готовое решение отлова урона, которое обладает GUI помощью от автора Bribe. Он "ошивается" на сайте, да простят меня модераторы, hiveworkshop. Как раз у него отлов срабатывает через способность рунных браслетов. Признаться честно, я использовал его работу уже в своих работах давно, но, что не своё, то не радует глаз, поэтому решился и на свои наработки.
Сия карту можно использовать как для начала кодирования на vJass и Jass в целом... Хоть подобных ресурсов море, но лишним не будет подобная информация.
0
4
8 лет назад
0

» WarCraft 3 / Мгновенный стан

Вот тебе моя системка на JASS для пользования нужен JNGP. Не нравится - ищи, иначе - пользуйся.
Stun System - JASS
// Stun System v2.0

globals
constant integer StunSystem_DummyID='u000'		//боевая единица пустышка
constant integer StunSystem_DummyAbility='A000'	//способность на основе Громовой поступи
constant integer StunSystem_Buff='BSTN'		//смотрим какой бафф добавили способности и суда вписываем
constant integer StunSystem_OrderID=852127	//OrderId("stomp")
constant real StunSystem_X=-3035.0		//координата Х безопасной точки для использования Громовой поступи
constant real StunSystem_Y=2762.		//координата Y безопасной точки для использования Громовой поступи
unit StunSystem_Dummy=null

real StunSystem_TIME=.0
unit StunSystem_TARGET=null
endglobals

function StunSystem takes nothing returns boolean
local real x=GetUnitX(StunSystem_TARGET)
local real y=GetUnitY(StunSystem_TARGET)
if GetUnitAbilityLevel(StunSystem_TARGET, StunSystem_Buff)==0 then
    if GetUnitX(StunSystem_Dummy)!=StunSystem_X and GetUnitY(StunSystem_Dummy)!=StunSystem_Y then
        call SetUnitPosition(StunSystem_Dummy,StunSystem_X,StunSystem_Y)
    endif
    call SetUnitX(StunSystem_TARGET,StunSystem_X)
    call SetUnitY(StunSystem_TARGET,StunSystem_Y)
    call IssueImmediateOrderById(StunSystem_Dummy, StunSystem_OrderID)
    call SetUnitX(StunSystem_TARGET,x)
    call SetUnitY(StunSystem_TARGET,y)
endif
set BuffSystem_TARGET=StunSystem_TARGET
set BuffSystem_ID_Buff=StunSystem_Buff
set BuffSystem_TIME=StunSystem_TIME
call TriggerEvaluate(gg_trg_BuffSystem)		//вызов бафф системы
set StunSystem_TIME=.0
set StunSystem_TARGET=null
return true
endfunction

function StunSystem_Func_Init takes nothing returns nothing
set gg_trg_StunSystem=CreateTrigger()
set StunSystem_Dummy=CreateUnit(Player(15),StunSystem_DummyID,StunSystem_X,StunSystem_Y,0)
call UnitAddAbility(StunSystem_Dummy,StunSystem_DummyAbility)
call UnitAddAbility(StunSystem_Dummy,'Aloc')
call ShowUnit(StunSystem_Dummy,false)
call TriggerAddCondition(gg_trg_StunSystem, Condition(function StunSystem))
endfunction
BuffSystem - JASS
// Bufff System v1.1

globals
constant real BuffSystem_Interval=.03125

timer BuffSystem_Timer=CreateTimer()
integer BuffSystem_MAX=0
unit array BuffSystem_Unit
integer array BuffSystem_AbilId
integer array BuffSystem_BuffId
real array BuffSystem_Time

unit BuffSystem_TARGET=null
real BuffSystem_TIME=.0
integer BuffSystem_ID_Ability=0
integer BuffSystem_ID_Buff=0
endglobals

function BuffSystem_Periodic takes nothing returns nothing
local integer i = 0
    loop
        exitwhen i == BuffSystem_MAX
        if BuffSystem_Time[i]>0.0 and BuffSystem_Unit[i]!=null and (not IsUnitType(BuffSystem_Unit[i],UNIT_TYPE_DEAD)) then
            set BuffSystem_Time[i]=BuffSystem_Time[i]-BuffSystem_Interval
        else
            if BuffSystem_AbilId[i]!=0 then
                call UnitMakeAbilityPermanent(BuffSystem_Unit[i],false,BuffSystem_AbilId[i])
                call UnitRemoveAbility(BuffSystem_Unit[i],BuffSystem_AbilId[i])
            endif
            call UnitRemoveAbility(BuffSystem_Unit[i],BuffSystem_BuffId[i])
            
            set BuffSystem_MAX=BuffSystem_MAX-1
            set BuffSystem_Unit[i]=BuffSystem_Unit[BuffSystem_MAX]
            set BuffSystem_Time[i]=BuffSystem_Time[BuffSystem_MAX]
            set BuffSystem_AbilId[i]=BuffSystem_AbilId[BuffSystem_MAX]
            set BuffSystem_BuffId[i]=BuffSystem_BuffId[BuffSystem_MAX]
            
            set BuffSystem_Unit[BuffSystem_MAX]=null
            set BuffSystem_Time[BuffSystem_MAX]=0.
            set BuffSystem_AbilId[BuffSystem_MAX]=0
            set BuffSystem_BuffId[BuffSystem_MAX]=0
            
            set i = i - 1
            if (0 == BuffSystem_MAX) then
                call PauseTimer(BuffSystem_Timer)
            endif
        endif
        set i = i + 1
    endloop
endfunction

function BuffSystem_Checker takes nothing returns boolean
local integer i=0
loop
    exitwhen i==BuffSystem_MAX
    if BuffSystem_TARGET==BuffSystem_Unit[i] and BuffSystem_ID_Ability==BuffSystem_AbilId[i] and BuffSystem_ID_Buff==BuffSystem_BuffId[i] then
        if BuffSystem_TIME>BuffSystem_Time[i] then
            set BuffSystem_Time[i]=BuffSystem_TIME
        endif
        return false
    endif
    set i=i+1
endloop
return true
endfunction

function BuffSystem takes nothing returns boolean
if BuffSystem_Checker() then
    if BuffSystem_MAX==0 then
        call TimerStart(BuffSystem_Timer,BuffSystem_Interval, true, function BuffSystem_Periodic)
    endif
    if BuffSystem_ID_Ability!=0 then
        call UnitAddAbility(BuffSystem_TARGET, BuffSystem_ID_Ability)
        call UnitMakeAbilityPermanent(BuffSystem_TARGET,true,BuffSystem_ID_Ability)
    endif
    set BuffSystem_Unit[BuffSystem_MAX]=BuffSystem_TARGET
    set BuffSystem_Time[BuffSystem_MAX]=BuffSystem_TIME
    set BuffSystem_AbilId[BuffSystem_MAX]=BuffSystem_ID_Ability
    set BuffSystem_BuffId[BuffSystem_MAX]=BuffSystem_ID_Buff
    set BuffSystem_MAX=BuffSystem_MAX+1
endif

set BuffSystem_TARGET=null
set BuffSystem_TIME=.0
set BuffSystem_ID_Ability=0
set BuffSystem_ID_Buff=0
return false
endfunction

function BuffSystem_Func_Init takes nothing returns nothing
set gg_trg_BuffSystem=CreateTrigger()
call TriggerAddCondition(gg_trg_BuffSystem, Condition(function BuffSystem))
endfunction
0
4
9 лет назад
0

» WarCraft 3 / Какой триггер нагружает карту глобальный или локальный?

nvc123, DazzleFirst, экзекьют?
call ExecuteFunc("my_func")
0
4
9 лет назад
0

» WarCraft 3 / Какой триггер нагружает карту глобальный или локальный?

достаточно 1 триггера на карту для отлова всех триггерных кастов а потом просто через экзекьют нужные функции вызываем(имя функции берём из хэша/массива по равкоду спела)
тоже верно, ибо за каждое использование сразу варчик пытается запустить N-ое количество триггеров с сия отловом. От чего происходят лаги на старых машинах или\и какой триггер может не запуститься.
nvc123, я лично делаю только тестовые карты способностей, поэтому разницы не вижу. Однако играл как-то раз в карту The Blood Way, использовав любую способность на основе "Громовая поступь" у меня происходили лаги (от 0.5 до 4 сек.) на моей старой машинке 2001 года. А на основе сия способности очень много других способностей, в силу этого я очень долго плакал, когда какой Маг или Паладин использует такие способности.
К чему это я... у меня нет желания прям до 0 оптимизировать способности, ибо скачавшие мною воплощенную идею должны что-нибудь додумывать сами, те же дебаги. Иначе когда же они научаться хоть чему-то?
0
4
9 лет назад
0

» WarCraft 3 / Рациональный триггер

Я скорее всего обобщу ранее описанное...
naxim:
Типы юнитов, которым необходимо "Ограничить подготовку", занести в массив
что бы занести типы юнитов необходим же отдельный триггер:
а1 = товер1
а2 = товер2
и т.д.
Да, так и есть. Так потом легче будет удалять\добавлять ограничения боевых единиц у игроков.
В твоем триггере игрокам (1-9) устанавливаются ограничения как 0, ибо ты ставишь значение переменной после действий. Нужно поменять порядок. О чем толково пояснил товарищ SomeFire и снова повторил ранее написанное. как минимум уже двое за такой способ.
ssbbssc:
занести группу игроков в переменную и работать с ней
В дальнейшем, может быть, пригодится, если это группа будет использоваться помимо сия триггера.
В данном триггере (если порядок поменять) в массиве целочисленной не вижу смысла, ибо всем игрокам (1-9) дается ограничение одно и тоже равное четырем. Можно было просто вместо массива целочисленной вписать 4 и радоваться оптимизации. Тоже самое касается целочисленной i_Towers, в ней тоже мы не нуждаемся, ибо можно было вместо
Игрок(i_Towers+1)
Игрок(Число В)
Тот же результат (даже более правильный и оптимизированный). Так еще ты берешь игрока (i_Towers+1) то есть 1+1=2 >>> Игрок(2) = синий игрок, а ты явно хотел красного игрока. В мною предложенном способе такой оплошности нет.
Тебе нужно сделать триггер инициализацию где содержится:
  1. массив типов юнитов - боевая единица которую хотим ограничить игрокам
  2. массив целочисленной - кол-во этой боевой единицы
  3. целочисленная - порядковый номер
Далее здесь же добавляем цикл.
Цикл начинаем с 0 до порядкового номера.
Сюда добавляем действия с группой игроков.
Ограничить подготовку (Массив Типа Юнита[Число B]) до (Массив Количества[Число В]) для (GetEnumPlayer())
GetEnumPlayer() - Взятый Игрок из группы игроков. Ибо не знаю как наши товарищи русские перевели сия функцию пишу ее на английском.
И усё.
0
4
9 лет назад
0

» WarCraft 3 / Разные снаряды при атаки!

Да, кстати в Доте у Троля через морф меняется атака с дальней на ближнюю и у медведя (Не помню как он называется) так же.
Способность ночных эльфов - "Превращение в медведя". Так же выполнен морф и у Xin.
0
4
9 лет назад
0

» WarCraft 3 / Какой триггер нагружает карту глобальный или локальный?

Zeuz:
DazzleFirst, возможно ли как то создать локальный триггер при применении способности и уничтожить обратно?
ведь обычно локальные триггеры как правило при применении способности создаются в инициализации карты...
нет нужды выделять еще один триггер (помимо отлова) на заклинание, если оно не слишком громоздкое в плане исполнения.
Как сообщает товарищ nvc123:
Zeuz, лучше не использовать много триггеров
вообще нету такой ситуации в которой надо много триггеров
стоит обратить на это внимание.
Везде и всюду есть свои нюансы которые нужно учитывать. Если не выполнить задуманное с помощью одного триггера, то делаем два.
0
4
9 лет назад
0

» WarCraft 3 / Какой триггер нагружает карту глобальный или локальный?

Локальные триггеры хороши тем, что их можно будет бескорыстия и совести удалить, а потом если нужно создать по новой. Тем самым уменьшить нагрузку на варчик в определенных условиях.
0
4
9 лет назад
0

» WarCraft 3 / Заклинания на заказ

Icebow, способ исполнения нужно писать, а так же MUI да\нет. И узнать бы более подробно про выключение. Сделать наподобие "Жар Преисподней" или давать способность отключения давая возможность удерживать более одного портала на одного мага (при условии что MUI имеется).
0
4
9 лет назад
0

» WarCraft 3 / Заклинания на заказ

TAHK90, вот, играйся.
Да и другим дадим поиграться.
Загруженные файлы
0
4
9 лет назад
0

» WarCraft 3 / Почему появляется два тексттага?

Было бы неплохо перед показом кода расставить все отступы, ибо порой читать сложновато.
Однако я быстренько глянул и могу сказать, что код должен работать адекватно.
Но хочу придраться к самому созданию всплывающего текста. При каждом поднятии любого предмета будет создаваться этот текст (без записей и т.д.) и будет тупо висеть всю игру. Не проверял, действительно ли так, так что могу ошибаться.
NekoriDes:
но показывает оба тексттага с варнингом.
А чего пишет то? Случаем не "Доступно с 0 уровня"?
0
4
9 лет назад
0

» WarCraft 3 / Просьба

facepalm... я имел ввиду глянь там, но какого черта написал "оставляем просьбу тут" - сам в шоке...
0
4
9 лет назад
0

» WarCraft 3 / Просьба

Оставляем свою просьбу тут ТЫК
0
4
9 лет назад
0

» WarCraft 3 / Не хочет в отряд

такое же действие только на 7,14 и 21 уровнях
Событие - Герой изучил способность
Условия - Изученная способность == нашей, И ( ее уровень == 7 или 14 или 21)
Действия - данные действия в этом вопросе.
ssbbssc, умничка, правильно пишет. Zhan10, тебе обязательно нужно делать расчеты в реальной, а потом переводить ее в целочисленную. Ибо с десятичными числами характеристики не желают работать.
И насчет бонуса... сия бонус добавляет % даже от предметов. И при каждом действии не учитывается прошлый бонус. К тому же если таких героев 3 или более они же тоже могут изучить сия способность и тут выйдет баг. Ибо каждый добавленный в группу прибавит процент к характеристикам. А это на 7 уровне у последнего изучившего способность героя будет 45% добавки к характеристикам.
Делай выводы и исправляй.
2
4
9 лет назад
2

» WarCraft 3 / Не хочет в отряд

Факт в том, что в группу добавляется тобою созданный, однако действия с доб. хар-к не работают как ты хочешь.
0
4
9 лет назад
0

» WarCraft 3 / Заклинания на заказ

Tobi123, позволю повториться...
не нравится - сам сделай
0
4
9 лет назад
0

» WarCraft 3 / Заклинания на заказ

Tobi123, друг любезный, не нравится - сам сделай. В чем проблема?