Насчёт приказа
OrderId("attributemodskill") = 852576
может быть, а как быть с остальными компонентами меню, которые мешают управлять юнитом. Я делаю квикасты:
Во-первых, это ложь, во-вторых, вы реально достали свой багоюзающий костыль сувать направо и налево. Серьёзно.
По первому вопросу два варианта:
Сделать разрушаемую декорацию с моделью эффекта и поставить ей "видно в тумане войны - да". Главный минус метода в том, что она не будет анимирована (то есть игрок будет видеть только первый кадр анимации эффекта до тех пор, пока декорация не окажется в его поле зрения, тогда анимация проиграется целиком), а второй минус в том, что таким образом не получится создавать произвольный эффект.
Создать полностью прозрачного юнита с 'Aloc' или вообще без модели, у которого очень небольшой радиус обзора, а затем создать его подконтрольным игроку в позиции эффекта, а то и создавать эффект аттачем к этому юниту. Минус в том, что юниты с низким радиусом обзора могут выбегать из своего же поля зрения, так что метод не подойдёт для подсвечивания движущегося эффекта.
попробуй ловить по приказу "skillmenu" (вроде так называется).
По сути совет правильный, но приказ указан неверно:
OrderId("attributemodskill") = 852576
в моей ситуации неподвижный эффект, в тумане войны, анимированный. 1 кадр не катит. Если я создам дамми юнита с видимостью, то он может увидеть лишнее. У меня эффект появляется просто по нажатию клавиши, так игрок просто прощёкает всю территорию и увидит, что а туманом войны => не вариант JackFastGame:
Создать для игрока юнита с включенным полем "Расширенный угол обзора" и поставить радиус обзора на 0. Сам юнит обзора давать не будет, но он будет виден. Для других игроков его можно локально прозрачным сделать.
У красного плюсика есть какой-то айди приказа, как и у способности "Строить".
да, в принципе можно вместо эффекта создавать юнита, это как выход, но использую это в крайнем случае. В мем хаке видел функции дающие Visible для определённого игрока
Lenivex, Сам memory hack это I2C и Сломманый массив, все.
Остальное это реализация API тех функций которые есть в варкравте а так же новые, которые будут релизованы по средстам импорта библиотек.
Что конкретно вам нужно? Опишие.~Doc:
разве нельзя !nocjass заюзать?
Увы не помогает, cjass что то не то делает с мемхаком, да у меня вовсе с ним были одни проблемы, поэтому memhack == no cjass, уже лень было разбиратся что к чему, если у вас есть желания найти и исправить все конфликты пожалуйста, остальные пусть пишут на jass\vjass там все работает исправно, без вылетов на ровном месте (кое как разобрались)...
Ах да, совсем забыл -pjass.exe прикреплен не просто так в теме с мемхаком, с прочими версиями будут баги или карта вовсе не запустится, не забываем про это плз.
На данный момент, нужно хотя бы чтобы работала функция, предложенная DracoL1ch'ем. У меня просто из игры выкидывает, если использовать в коде функцию I2Unit() DracoL1ch:
а, я думал, ты хочешь узнать тип объекта по его адресу. конвертировать в джасс сложно, не минуту доставать, позже
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
function setInt2Unit takes integer i returns nothing
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
function ConvertUnitAddressToHandleID takes integer address returns integer
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
function Typecast4 takes nothing returns nothing
local unit l__Int2Unit
endfunction
# +nosemanticerror
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
не забудь уточнить, что ВСЕ используемые здесь адреса НЕ делены на 4, или умножай их сам, если делились. GameState вроде был разделен в паблике.
Выкидывает из игры при использовании I2Unit() в коде. Если я убираю эту функцию (всмысле не использую) то карту компилирует
Просто многие функции требуют доработок и внимания, в той теме что я скинул к примеру поправлен кд чаннелингов и кое чего другого.
Мемхак везде один, не тупите - разный только набор функций, вот и ищите нужные вам функции. Все что нужно сломанный масиив и ретурнбаг все остальное это функции для чего либо, увы у всех авторов свои представления об API мемхака и своя реализация тех или иных вещей, все и сразу вам никто не даст. Lenivex, Что конкретно вас интересует и что не работает в тему о РБ задавайте вопросы.
Ну и самое главное не ко всем функциям есть комментарии касательно их ограничений, разобраны только самые популярные.
говорю не только об Utils'ах, но и о самом Memory Hack, скорее всего большинство его функций тоже обновили. Сложно находить функции, да так чтобы они работали. Видел какие то новые с картами, но они включают в себя также новые функции. Так что найти новую (не говоря уже о том что даже не все на гидхабе работают) нужно найти все включающие её компоненты.
Мемхак один, новые могут только оформленные функции, с cjass н еработает, дело в пасере, есть спец тема для этого так что все там.
xgm.guru/p/wc3/179535 вот тема на мемхак, готовый для импорта а функции лежать на хайве, самые новые ну или пишутся конкретными людьми и выкладываются в паблик.
Я знаю, что с cjass он не ладит. DracoL1ch писал, что перешёл от деления на 4, теперь использует другое. Также роясь по hive'ву набрёл на инструкцию к Memory Hack:
большинство функций отсутствует на гитхабе или же вообще не работают. Так вот та информация уже устарела как я понимаю. Поэтому и спрашиваю про последнюю версию, т.к. сам никак другую найти не могу
а, я думал, ты хочешь узнать тип объекта по его адресу. конвертировать в джасс сложно, не минуту доставать, позже
globals
integer l__Int2Unit
integer pGetHandleIDStackCounter=GameDLL+0x3A8060//26
integer pConvertAddressToHandleId=GameDLL+0x430C80//26
endglobals
function setInt2Unit takes integer i returns nothing
set l__Int2Unit=i
return Prevents JassHelper from inlining this function
endfunction
function ConvertUnitAddressToHandleID takes integer address returns integer
local integer a=CallThisCallWith1Args(pGetHandleIDStackCounter,RMem(GameState))
return CallThisCallWith3Args(pConvertAddressToHandleId,a,address,0)
endfunction
function Typecast4 takes nothing returns nothing
local unit l__Int2Unit
endfunction
# +nosemanticerror
function I2Unit takes integer i returns unit
call setInt2Unit(ConvertUnitAddressToHandleID(i))
return l__Int2Unit
endfunction
не забудь уточнить, что ВСЕ используемые здесь адреса НЕ делены на 4, или умножай их сам, если делились. GameState вроде был разделен в паблике.
1)Выкидывает из игры. При включенном cJass говорит проблема в выводе l__Int2Unit - функция должна возвращать юнита пишет он.
2)Где можно скачать последнюю версию Memory Hack'а?
function GetAgentType takes handle h returns integer returns code of the handle's type +w3u for unit, +tmr for timer, +trg for trigger, +arg for region, etc check the type you may need yourself, Im not gonna write down all of those
local integer func = RMem(RMem(ConvertHandle(h))+0x1C)
return RMem(func)/0x100+RMem(func+4)*0x1000000
endfunction
конвертация адреса в хендл, который затем конвертируется в объект - сложнее
есть в публичном же, SetAbilityButtonX/Y
1)Чёт сложно, что возвращает предложенная функция? Она возвращает число - тип? Как я это смогу использовать чтобы получить тип (получить как тип данных зная только адрес)
2)У меня только SetAbilityButtonX и она что то не работает (большинство функций не работает), где можно скачать последнюю версию Memory Hack?
у тебя старая версия мб? у меня всё без деления на 4, если в ReadMemory деления нет - то сам дели перед продолжением. И проверяй везде на то, что в адресе >0
function RMem takes integer addr returns integer
if addr<0x500 or addr>0x7FFFFFFF then
return 0
endif
return Memory[addr/4]
endfunction
ну есть такая возможность
в [[gameClass2]+0x1B4]+0x14 хранится адрес виджета под мышкой. естественно, деревья не в счет, может, только у рабочих они учитываются
RMem(RMem(RMem(gameClass2)+0x1B4)+0x14)==address
Кажется я опять что то перепутал. Как нужно функцию построить? Я просто возвращаю адрес (оба пробовал). Выдаёт Фатал
quq_CCCP, можно настроить так, чтобы дерево выделялось)) если ты не знал. ладно
во 1 я сказал к примеру. Во вторых я хочу сделать - квикасты. Т.е. - нажал горячую кнопку и после этого юнит юзает спелл в точку курсора если это возможно
Эмм, выделяются тока разрушаемые объекты да и то не все, деревья не выделяются игроком...
Если не секрет зачем вам знать над каким разрушаемым объектом сейчас курсор игрока?
так ведь widget может быть и юнит? Мне это даст полную информацию о курсоре. Таким образом смогу квикасты сделать. (а что если захочу горячей клавишей мгновенно съесть дерево, где находится курсор?)
DracoL1ch, мб имеет в виде выделен игроком? вот определить типа как с юнитами, там можно вычислить выделен юнит игроком или нет. А тут то widget (объект). Вроде итем и декорации, и все, есть что еще выделить можно в игре?
имею ввиду не выделен. Просто навёл мышкой - указывает мышкой на объект. Нужно его возвратить или хотя бы его адрес
То есть, тебе нужно отловить нажатие клавиши мыши? Насколько я знаю, нельзя поменять горячие клавиши исп. способностей без сторонних программ, исключение memory hack - с его помощью можно отловить нужную тебе клавишу на клавиатуре. если я правильно понял вопрос откликнись
Ред. Lenivex
» WarCraft 3 / +2 Вопроса (effect, интерфейс игрока)
OrderId("attributemodskill") = 852576
может быть, а как быть с остальными компонентами меню, которые мешают управлять юнитом. Я делаю квикасты:
Только в видосе не показал, что не видно анимаций в тумане войны
» WarCraft 3 / +2 Вопроса (effect, интерфейс игрока)
JackFastGame: да, в принципе можно вместо эффекта создавать юнита, это как выход, но использую это в крайнем случае. В мем хаке видел функции дающие Visible для определённого игрока
» WarCraft 3 / (Memory Hack) 2 вопроса
DracoL1ch: Выкидывает из игры при использовании I2Unit() в коде. Если я убираю эту функцию (всмысле не использую) то карту компилирует
» WarCraft 3 / (Memory Hack) 2 вопроса
» WarCraft 3 / (Memory Hack) 2 вопроса
» WarCraft 3 / (Memory Hack) 2 вопроса
» WarCraft 3 / (Memory Hack) 2 вопроса
2)Где можно скачать последнюю версию Memory Hack'а?
Ред. Lenivex
» WarCraft 3 / (Memory Hack) 2 вопроса
2)У меня только SetAbilityButtonX и она что то не работает (большинство функций не работает), где можно скачать последнюю версию Memory Hack?
Ред. Lenivex
» WarCraft 3 / Нужно отловить widget (memory hack)
» WarCraft 3 / Нужно отловить widget (memory hack)
его инициалицировать нужно? Я его в initizlizer добавил. Тоже самое
» WarCraft 3 / Нужно отловить widget (memory hack)
Ред. Lenivex
» WarCraft 3 / Нужно отловить widget (memory hack)
Ред. Lenivex
» WarCraft 3 / Нужно отловить widget (memory hack)
» WarCraft 3 / Нужно отловить widget (memory hack)
» WarCraft 3 / Нужно отловить widget (memory hack)
» WarCraft 3 / Нужно отловить widget (memory hack)
» WarCraft 3 / Причуды JNGP
» WarCraft 3 / Горячая клавиша предмету