ApEJI, ресет хранит только последнее изменение.
Рандомный ландшафт сделать играбельным в большем масштабе намного сложнее, а еще сложнее сделать его интересным, многообразным и логичным. Честно говоря, не увидел чего-то необычного в наработке. Тем более на гуи... Фу-фу-фу, простите...
Стоит ввести возможность работать с графическим конвеером, при должной реализации со стороны близардов это может породить кучу универсальных и не очень библиотек.
Делал подобное с его помощью, достаточно геморно. Создавал отдельную карту с которой надо скопировать, там все выставлял кастомными декорациями. Потом прогонял программу и в карте куда хочу записать этот ландшафт нужно создать такие же разрушаемые объекты как декорации в первой с теми же id. Работало замечательно
avuremybe, через EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER удалось получить предмет-цель, но не предмет-кастер
Все получилось
EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER
цель:
GetOrderTargetItem()
слот в котором использованный:
slot = GetIssuedOrderId() - 852008
Pergin, через мемхак пока нельзя поменять модель "на лету". Можно изменить модель у типа юнита, но применяется это тольно к новым. То есть меняешь это поле у типа юнитов и все те кто появится после этого будут с другой моделькой
quq_CCCP, не нашел такой функции( Нужно это для следующего:
Есть системка (через структуры), которая контролирует параметры каждого отдельного юнита(атаку, макс хп, криты, резист, скейлы навыков и т.д.). Инвентарь 2х6 (надетое и рюкзак), генератор случайных предметов(основанный на вышеупомянутой системе). Чтобы при использовании предмета, он одевался, на нем должна быть способность. Если приказ у всех одинаковый - используются все одновременно. Таким образом, необходимо сделать стэк незанятых "каналов" и выдавать их предмету в процессе генерации. Так как у разных игроков id приказа может быть один и тот же, нужно всего 12 абилок и 12 стэков для реализации. 12 стэков по 12 так как планируется рпг
quq_CCCP, мне бы то что есть, хочу уже до ума довести систему свою наработку (генерация предметов со случайными параметрами), сейчас завис на выводе списка статов в инвентаре. Не подскажешь, где инфу по смещениям у юнитов(как было выяснено предмет - юнит) накопать?
Да и на моем примитивном уровне большая часть функций не нужны)
Clamp, чтобы не привязываться к какому бы то ни было ресурсу, требующему отдельной установки
Как вариант выгружать библиотеку средствами мемхака, а нативки вызывать неявно через ExecuteFunc.
Второй вариант: собранную библиотеку внедрять в карту побайтно, сделав асемблерную вставку, должно работать, но надо знать куда втыкать
по идее есть 2 исхода для первого варианта, на первом запуске карты народ будет ловить десинк или же все сразу заведется
Так что думаю вполне реально сделать отрисовку кастомного UI таким образом
DracoL1ch, я правильно понимаю, что можно сделать 1 ауру (self) на основе торнадо и меняя ее поле через мемхак, добавлять нужный баф?
Поковыряюсь на досуге, должно сильно ускорить прелоад моей системки бафов на основе торнадо. Не знаешь, в поле абилки хранится ссылка на список бафов или сложнее?
А если потом захочется сделать не 4сек а 5?
Как-то нагляднее код становится на мой взгляд, и балансить удобнее если все параметры сразу вынести из функций
а по поводу нескольких уровней, все равно нужно несколько, хотя и намного меньше
Предположим игрок использовал этот навык, в способность пишется число, но через 1 сек другой персонаж тоже использовал ту же способность, при одном лвле получим что у всех юнитов попавших под первое применение будет замедление по цифрам как у 2го
Я бы сделал так если для рпг:
Аура 16 уровней, цель - self
Выбираем всех юнитов в группу, считаю коэф-т замедления от брони использовавшего, раздал всей группе ауру с лвлом равным номеру использовавшего способность игрока, через фунцию мемхака редактирую соответствующее (по уровню) поле ауры, по прошествию таймера (TimerEx) с группы записанной в структуру удается аура и ее эффект (так удаление иконки баффа мгновенно)
Есть фукции на редактирование полей абилок, но сейчас не смогу выложить
Here
function SetAbilityRealParam takes unit u, integer id, integer off, real newVal, integer lvl returns nothing
local integer k=GetUnitAbility(u,id)
if Memory[k/4+0x54/4]>0 then
call WMem(RMem(RMem(k+0x54)+0x54)+(lvl-1)*26*4+(8+off)*4,cleanInt(realToIndex(newVal)))
endif
endfunction
function GetAbilityRealParam takes unit u, integer id, integer off, integer lvl returns real
local integer k=GetUnitAbility(u,id)
if RMem(k+0x54)>0 then
return cleanReal(mI2R(RMem(RMem(RMem(k+0x54)+0x54)+(lvl-1)*26*4 + (8+off)*4)))
endif
return .0
endfunction
» WarCraft 3 / Динамическое создание ландшафта (Wurst)
Рандомный ландшафт сделать играбельным в большем масштабе намного сложнее, а еще сложнее сделать его интересным, многообразным и логичным. Честно говоря, не увидел чего-то необычного в наработке. Тем более на гуи... Фу-фу-фу, простите...
» WarCraft 3 / Как добавить наработку на сайт?
Отредактирован Nelloy
» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)
Расширение возможностей code
Wurst-подобный язык и другой синтаксический сахар
» Мир безумного / WarCraft III Reforged - WE (что хотите увидеть?)
» WarCraft 3 / Как копировать данные ландшфат?
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» WarCraft 3 / Как сделать что бы мобы бегали за тобой и юзали спелы
» WarCraft 3 / Игровой интерфейс
Отредактирован Nelloy
» WarCraft 3 / Использование предмета на предмет
Все получилось
EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER
GetOrderTargetItem()
слот в котором использованный:
slot = GetIssuedOrderId() - 852008
Отредактирован Nelloy
» WarCraft 3 / Предметы(memhach)
set gg_trg_UseItem = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_UseItem, EVENT_PLAYER_UNIT_ISSUED_ORDER )
call TriggerAddAction( gg_trg_UseItem, function Trig_UseItem_Actions )
endfunction
function Trig_UseItem_Actions не вызывается при использовании предмета
А, разобрался
» WarCraft 3 / Предметы(memhach)
» WarCraft 3 / Предметы(memhach)
» WarCraft 3 / Как триггерно поменять модель юнита
Отредактирован Nelloy
» WarCraft 3 / Предметы(memhach)
Есть системка (через структуры), которая контролирует параметры каждого отдельного юнита(атаку, макс хп, криты, резист, скейлы навыков и т.д.). Инвентарь 2х6 (надетое и рюкзак), генератор случайных предметов(основанный на вышеупомянутой системе). Чтобы при использовании предмета, он одевался, на нем должна быть способность. Если приказ у всех одинаковый - используются все одновременно. Таким образом, необходимо сделать стэк незанятых "каналов" и выдавать их предмету в процессе генерации. Так как у разных игроков id приказа может быть один и тот же, нужно всего 12 абилок и 12 стэков для реализации. 12 стэков по 12 так как планируется рпг
» WarCraft 3 / MemHack
» WarCraft 3 / MemHack
Да и на моем примитивном уровне большая часть функций не нужны)
» WarCraft 3 / MemHack
Отредактирован Nelloy
» WarCraft 3 / Проблема с аое ДоТ-ой
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Отредактирован Nelloy
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Как вариант выгружать библиотеку средствами мемхака, а нативки вызывать неявно через ExecuteFunc.
Второй вариант: собранную библиотеку внедрять в карту побайтно, сделав асемблерную вставку, должно работать, но надо знать куда втыкать
по идее есть 2 исхода для первого варианта, на первом запуске карты народ будет ловить десинк или же все сразу заведется
Так что думаю вполне реально сделать отрисовку кастомного UI таким образом
Отредактирован Nelloy
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Отредактирован Nelloy
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Отредактирован Nelloy
» WarCraft 3 / [Мемхак] прошу простую готовую функцию
Поковыряюсь на досуге, должно сильно ускорить прелоад моей системки бафов на основе торнадо. Не знаешь, в поле абилки хранится ссылка на список бафов или сложнее?
Отредактирован Nelloy
» WarCraft 3 / [Мемхак] прошу простую готовую функцию
Как-то нагляднее код становится на мой взгляд, и балансить удобнее если все параметры сразу вынести из функций
а по поводу нескольких уровней, все равно нужно несколько, хотя и намного меньше
Предположим игрок использовал этот навык, в способность пишется число, но через 1 сек другой персонаж тоже использовал ту же способность, при одном лвле получим что у всех юнитов попавших под первое применение будет замедление по цифрам как у 2го
Отредактирован Nelloy
» WarCraft 3 / [Мемхак] прошу простую готовую функцию
Аура 16 уровней, цель - self
Выбираем всех юнитов в группу, считаю коэф-т замедления от брони использовавшего, раздал всей группе ауру с лвлом равным номеру использовавшего способность игрока, через фунцию мемхака редактирую соответствующее (по уровню) поле ауры, по прошествию таймера (TimerEx) с группы записанной в структуру удается аура и ее эффект (так удаление иконки баффа мгновенно)
Есть фукции на редактирование полей абилок, но сейчас не смогу выложить
local integer k=GetUnitAbility(u,id)
if Memory[k/4+0x54/4]>0 then
call WMem(RMem(RMem(k+0x54)+0x54)+(lvl-1)*26*4+(8+off)*4,cleanInt(realToIndex(newVal)))
endif
endfunction
local integer k=GetUnitAbility(u,id)
if RMem(k+0x54)>0 then
return cleanReal(mI2R(RMem(RMem(RMem(k+0x54)+0x54)+(lvl-1)*26*4 + (8+off)*4)))
endif
return .0
endfunction