Nelloy #101 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Предметы(memhach)

Diaboliko, "Если приказ у всех одинаковый - используются все одновременно."
Nelloy #102 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Как триггерно поменять модель юнита

Pergin, через мемхак пока нельзя поменять модель "на лету". Можно изменить модель у типа юнита, но применяется это тольно к новым. То есть меняешь это поле у типа юнитов и все те кто появится после этого будут с другой моделькой
Nelloy #103 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Предметы(memhach)

quq_CCCP, не нашел такой функции( Нужно это для следующего:
Есть системка (через структуры), которая контролирует параметры каждого отдельного юнита(атаку, макс хп, криты, резист, скейлы навыков и т.д.). Инвентарь 2х6 (надетое и рюкзак), генератор случайных предметов(основанный на вышеупомянутой системе). Чтобы при использовании предмета, он одевался, на нем должна быть способность. Если приказ у всех одинаковый - используются все одновременно. Таким образом, необходимо сделать стэк незанятых "каналов" и выдавать их предмету в процессе генерации. Так как у разных игроков id приказа может быть один и тот же, нужно всего 12 абилок и 12 стэков для реализации. 12 стэков по 12 так как планируется рпг
Nelloy #104 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / MemHack

ENAleksey, read-only не интересно
Nelloy #105 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / MemHack

quq_CCCP, мне бы то что есть, хочу уже до ума довести систему свою наработку (генерация предметов со случайными параметрами), сейчас завис на выводе списка статов в инвентаре. Не подскажешь, где инфу по смещениям у юнитов(как было выяснено предмет - юнит) накопать?
Да и на моем примитивном уровне большая часть функций не нужны)
Nelloy #106 - 3 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / MemHack

quq_CCCP, то есть ждать апи для редактирования ВСЕХ полей абилок и юнитов пока рано? Может есть у кого информация что на каком смещении у них лежит?
Nelloy #107 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Проблема с аое ДоТ-ой

по мне так структурой было бы намного проще
Nelloy #108 - 3 years ago 0
Голосов: +0 / -0
Nelloy #109 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Clamp, чтобы не привязываться к какому бы то ни было ресурсу, требующему отдельной установки
Как вариант выгружать библиотеку средствами мемхака, а нативки вызывать неявно через ExecuteFunc.
Второй вариант: собранную библиотеку внедрять в карту побайтно, сделав асемблерную вставку, должно работать, но надо знать куда втыкать
по идее есть 2 исхода для первого варианта, на первом запуске карты народ будет ловить десинк или же все сразу заведется
Так что думаю вполне реально сделать отрисовку кастомного UI таким образом
Nelloy #110 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Имел ввиду переписать нативки через мемхак, есть хотя бы теоретическая возможность?
Nelloy #111 - 3 years ago (изм. ) 0
Голосов: +0 / -0

» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III

Возможно ли встроить весь GUI API внутрь карты? То есть без отдельной библиотеки или с распаковкой из самой карты
Nelloy #112 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / [Мемхак] прошу простую готовую функцию

DracoL1ch, я правильно понимаю, что можно сделать 1 ауру (self) на основе торнадо и меняя ее поле через мемхак, добавлять нужный баф?
Поковыряюсь на досуге, должно сильно ускорить прелоад моей системки бафов на основе торнадо. Не знаешь, в поле абилки хранится ссылка на список бафов или сложнее?
Nelloy #113 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / [Мемхак] прошу простую готовую функцию

А если потом захочется сделать не 4сек а 5?
Как-то нагляднее код становится на мой взгляд, и балансить удобнее если все параметры сразу вынести из функций
а по поводу нескольких уровней, все равно нужно несколько, хотя и намного меньше
Предположим игрок использовал этот навык, в способность пишется число, но через 1 сек другой персонаж тоже использовал ту же способность, при одном лвле получим что у всех юнитов попавших под первое применение будет замедление по цифрам как у 2го
Nelloy #114 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / [Мемхак] прошу простую готовую функцию

Я бы сделал так если для рпг:
Аура 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
DataA - off=0, DataB - off=1 etc.
Nelloy #115 - 4 years ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 Reforged / Канал

Как проверю функции - залью сюда
У меня с многоуровневым каналом работает
» Area
function GetAbilityArea takes integer id, integer lvl returns real
local integer k = RMem(GetAbilityDataDefById(id) + 4*21)
return mI2R(RMem(k + 4*26*(lvl-1) + 4*6))
endfunction
function SetAbilityArea takes real NewValue, integer id, integer lvl returns nothing
local integer k = RMem(GetAbilityDataDefById(id) + 4*21)
call WMem(k + 4*26*(lvl-1) + 4*6, cleanInt(realToIndex(NewValue)))
endfunction
» Range
function GetAbilityRange takes integer id, integer lvl returns real
local integer k = RMem(GetAbilityDataDefById(id) + 4*21)
return mI2R(RMem(k + 4*26*(lvl-1) + 4*7))
endfunction
function SetAbilityRange takes real NewValue, integer id, integer lvl returns nothing
local integer k = RMem(GetAbilityDataDefById(id) + 4*21)
call WMem(k + 4*26*(lvl-1) + 4*7, cleanInt(realToIndex(NewValue)))
endfunction
PS: thx lich
Nelloy #116 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

до 0x700 не нашел, кроме первого десятка адресов - одни нули
» искал так
set j = GetAbilityDataDefById('A006')
set i = 0
loop
exitwhen i>=400
call BJDebugMsg(R2S(cleanReal(mI2R(RMem(j+4*i))))+" "+I2S(i))
set i = i+1
endloop
» function GetAbilityDataDefById takes integer id returns integer
local integer a=CallThisCallWith1Args(pGetAbilityDataDefAddr,id)
if a>0 then
return a
endif
return 0
endfunction
может имеет значение кол-во лвлов?
Складывается впечатление что там нужна многоуровневая ссылка, если у канала отличная от осальных абилок структура
Да, однозначно идет перемещение данных. При 1 уровне все нормально работало (0x6c - 0x88 примерно)
Попробовал поискать по ссылкам, ничего дельного не нашел
Nelloy #117 - 4 years ago 0
Голосов: +2 / -2

» WarCraft 3 Reforged / StartAbilityCD (MemHack)

Возможно "канал" так же имеет отличную от остальных абилок структуру
» Рабочий вариант
function StartAbilityCD takes unit whichUnit, integer abilityId returns boolean
local integer pAbility = 0
local real cd = GetAbilityCD(abilityId, GetPlayerId(GetOwningPlayer(whichUnit))+1)
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif

set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if RMem(pAbility+0x134)==-1 and RMem(pAbility+0x138)==-1 then
call WMem(pAbility+0x134,0)
call WMem(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction
Nelloy #118 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Text File (Memhack)

Хм... видимо начитался старых постов про то что они по дефолту выключены...
Nelloy #119 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Text File (Memhack)

Без локальных файлов, в плане не трогая regedit
чтобы все работало в стандартом комплекте
Nelloy #120 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Text File (Memhack)

А без локальных файлов будет работать?
Nelloy #121 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Формирование пакетов с мемхаком

Допустим уговорили не придумывать велосипед. Как определить, что синхрон корректно завершился?
Nelloy #122 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Формирование пакетов с мемхаком

Вот для сокращения времени синхронизации и спрашиваю, нужно передавать массив в примерно 30integer + 200 real
От КАЖДОГО игрока
И это если брать по минимуму
Статью читал
Nelloy #123 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Формирование пакетов с мемхаком

И что если у каждого игрока вытащатся данные из preload а потом я на основе этих данных начну делать юнитов для игроков не будет десинка?
Nelloy #124 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Формирование пакетов с мемхаком

Clamp:
Идея в отправке локально сохраненного сейва пакетом всем игрокам для избежания рассинхрона
При каждой синхронизации будет лаг не меньше половины секунды. Сейв сетевой игры помнит имена и позиции игроков, это может привести к неопределённому поведению игры при его загрузке. Ты учитывал эти моменты?
Имел ввиду сейв код в текстовом файле, пролаг - не проблема
Чтобы в орпг при загрузке карты загружать героя без участия игрока
Nelloy #125 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Смена атаки через Мемхак

И лучше брать хак из последнего коммента в той теме. без деления на 4 который
Nelloy #126 - 4 years ago (изм. ) 2
Голосов: +2 / -0

» WarCraft 3 Reforged / Баловство с мемхаком

Ага, спасибо, вот рабочий вариант:
» Code
function SetUnitUIIcon takes integer id, string s returns nothing
local integer a=GetUnitUIDefByIdCaching(id)
if a>0 then
set a=RMem(a+0x248)
if a>0 then
call WMem(a,GetStringAddress(s))
endif
endif
endfunction
Nelloy #127 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

круто, круто, спасибо
Nelloy #128 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Есть какие идеи по полям "Name" и "Description"?
Это то описание что отображается вне инвентаря, не критично, но хотелось бы)
Nelloy #129 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Менять параметры способностей, например, DataA
Проверил деление на 4, сделал через WMem/RMem - заработало как надо, хотел шанс уворота задавать
UnitUbertip и UnitTip так же работает, теперь бы с полями "Description" и "Name" разобраться
Nelloy #130 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Ага инициализацию пофиксил
Вернулся к этой проблеме xgm.guru/p/100/189998
Как это сделать адекватно? SetAbilityRealParam не дает эффекта
» Вот
function SetAbilityReal 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
set Memory[ Memory[Memory[k/4+0x54/4]/4+0x54/4]/4 + (lvl-1)*26 + 8 + off] = cleanInt(realToIndex(newVal))
endif
endfunction
function GetAbilityReal takes unit u, integer id, integer off, integer lvl returns real
local integer k=GetUnitAbility(u,id)
if Memory[k/4+0x54/4]>0 then
return cleanReal(indexToReal( Memory[ Memory[Memory[k/4+0x54/4]/4+0x54/4]/4 + (lvl-1)*26 + 8+off] ))
endif
return .0
endfunction
Set нормально работает с Evasion, а Get выдает фатал
Только Set высталяет что-то не то
Nelloy #131 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Да, сижу, обновляю версию
Потом отпишусь о результатах
Как ни странно, перестал работать всё. Даже базовый урон на атаках не могу сменить
Скопировал все из карты, добавил нужные функции и ничего, теперь где-то в зкромах мемхака поток прерывается
Nelloy #132 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Это нашел, вот пытаюсь впихнуть нужные функции в NewGen
GetUnitUbertip - фатал
на юнита тоже...
Nelloy #133 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Смотрел по темам на хайве
Nelloy #134 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Попробуемс)
Переписал GetAbilityStringParam, заменив GetAbilityUIDefAddr на GetUnitUIDefAddr, получил фатал
GetUnitUIDefAddr дает не 0
Перебором выяснит что некоторые оффсеты дают фатал, пробую искать дальше
Nelloy #135 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

SetAbilityUbertip('I000',1,"Test") ничего не изменил
А на счет оффсетов, где их глянуть можно?
GetAbilityStringParam2('I000',0x158,1) выдает null, при том что в полях записаны значения
Для цикла от 0 до 4000 (по +4) так же всегда null
PS: для абилок нормально выдает
Ах да, не пояснил, 'I000' - итем
GetAbilityUIDefAddr('I000') дает 0
PPS: предмет был создан на карте
Nelloy #136 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Для меня "глянуть" это выводить все офсеты поочереди и смотреть где выдаст текст)
Nelloy #137 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

Вечером попробую, отпишусь. Думал итем ближе к юниту, а не к абилке
А, да. У итемов же 2 описания... Надеюсь получится менять оба
Nelloy #138 - 4 years ago 2
Голосов: +2 / -0

» WarCraft 3 Reforged / Memory Hack

ClotPh:
Nelloy, ну тебе даже 1000 лвлов бы не хватило? У меня пассивка со 1000 уровнями спокойно прелоадится, очень тупо, значимо влияет на время загрузки карты, но очень легкореализуемо. А вообще при фантазии 100-200 лвлов хватить должно, если прям ппц предельной точности не должно быть.
Ну, офк, если через мемхак разберешься, будет лучше, это так, просто как альтернатива.
Допустим множитель точность 0.01 и шанс с точностью до 1%, 100 лвлов на каждый вариант множителя, от 1.0 до 3.0 нужно 20000 лвлов способности
Так что нет, спасибо
Вот именно предложенную тобой альтернативу решил переделать))
Стоит выложить наработку по генерации рельефа с помощью шумов Перлина?
Ничего особо примечательного там нет, и не подготовлена как наработка.
Спасибо велосипеду, разобрался. xgm.guru/p/wc3/181566
Прикрепленные файлы
Nelloy #139 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

С критами и вовсе практически нереализуемо для критов, создать абилки с лвлас под все вариации шанс-множитель просто не реально.
В хаке есть замечательные функции
function SetAbilityRealParam takes integer id, integer off, real newVal returns boolean
function GetAbilityRealParam takes integer id, integer off returns real
И их аналоги для других типов, но, увы, никакой инфы по тому как ими пользоваться нет в природе... Ладно, id - понятно. off - предполагаю смещение в массиве полей абилки, буду вечером тестить, выводя все подряд и искать нужные поля
А отлавливать источник урона (атака или абилка) - не хочу, слишком много гемора
Nelloy #140 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Memory Hack

В перспективе много всего, для начала для каждого игрока сделать по способности на уклонения и во время игры динамически менять показатель шанса
Аналогично с критами, чтобы в процессе игры менять шанс и множитель
Думаю разобравшись с этими 1-2 примерами дальше смогу делать сам
В отсутствие примеров не могу понять как с vjass'ом динамически редактировать поля способностей
Nelloy #141 - 4 years ago (изм. ) 0
Голосов: +0 / -0

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

Решено, использовал перевод в Jass отсюда xgm.guru/p/wc3/dooandw3etojass, но там в базу пишутся радианы. PS: затея использовать динамический ланд пока жива
Nelloy #142 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Долгим, но верным путем, огромное спасибо))
Nelloy #143 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Удаление из выбора безусловно поможет, но корябает эстетическое) Можно подробнее с мгновенным кастом?
Nelloy #144 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Не чудеса)) даже на твоем видео видно, после выбора области, вокруг кнопки навыка появляется зеленая рамочка, вот именно пока она горит, случайно кликнув можно сорвать приказ на применение
Nelloy #145 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

если с клавиши прожимать, там есть где-то 0.1-0.3 сек (пока горит зеленая рамочка вокруг кнопки)
Nelloy #146 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Все равно срывается, даже в этом примере
Nelloy #147 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Способность с юнитом не имеет отношения к проблеме (ее срывание допустимо), добавил время, не помогло
Nelloy #148 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Да, про "время подготовки заклинания".
Nelloy #149 - 4 years ago (изм. ) 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Ммм... Догадываюсь что не должен, но реагирует (Да, на простые клики ПКМ)
Суть в том что канал прерывается на этапе подготовки, а не применения ( подготовка заклинания стоит 0.00)
Nelloy #150 - 4 years ago 0
Голосов: +0 / -0

» WarCraft 3 Reforged / Канал

Да, но движением прерывается