Я пытаюсь запустить мемхак, пробовал вот эти:
Пробовал каждый по очереди, брал просто JNPG последний самый для 1.26a я так понимаю, заменил pjass.exe в папке jasshelper на экспериментальный и оно ругается дурацкой ошибкой на какой-то массив, типа этого: Index missing for array variable
Всё что я сделал это скачал карту и пересохранил её в редакторе без изменений. По замыслу должно быть 0 ошибок и успешное сохранение, ну алло, там же говорилось что экспериментальный pjass.exe игнорирует подобные ошибки, а он еще как не игнорирует.
Единственное что у меня получилось - запустить мемхак из RenderEdge на нём, вот он сохраняется без ошибок и работает, только в отличие от первых трех возможностей и утилит в нем мало, а копипасто одного в другое не выйдет, т.к. мемхаки несовместимы друг с другом и вообще верхние не работают.
Почему?

Принятый ответ

ох =)
расскажу, что если прочитать все 500 комментариев про мемхак, то там есть 1 нормальный ответ про то как его включить
Мне потребовалось 3 раза прочитать чтобы врубиться в это, все 500 комментов
Так вот он правильный ответ:
Для запуска мемхака нужно отказать от Cjass сняв галочку EnableAdicParser а во вкладке vJass поставить DisableScriptOpt
Советую запустить сначала карту по отлову урона на мемхаке проверить на сохраняемость, если всё получается, тогда уже переносить мемхак в свою карту
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
19
5 лет назад
2
Похожие вопросы:

ответ
ClotPh, Герой беру с проверкой тип героя. Но возврашает 0 даже расчет бонус атака от статы тоже фаталит 0_о
Извиняюсь это моя ошибка то что я его не сохранил unit в структуру а то получал пустой юнит...
ответ
RMem/WMem - вторая версия, есть еще третья и, скорее всего, последняя
function SetAbilityStringParam2 takes integer id, integer off, string newVal, integer lvl returns boolean
	local integer k=GetAbilityUIDefCaching(id)
	if k < 1 then
		return false
	endif
	set k=k+off
	set k=RMem(k)
	if k>0 then
		set k=k+lvl*4-4
		call AddNewOffsetToRestoreFast(k)
		call WMem(k,GetStringAddress(newVal))
		return true
	endif
	return false
endfunction
по аналогии легко сделать
ответ
SimvolMira, знает, но в паблик велено не выкладывать.

0
10
5 лет назад
0
оптимизатор выключен? у меня из-за него были ошибки xgm.guru/p/wc3/mhdamage
0
32
5 лет назад
Отредактирован Берги
0
ох =)
расскажу, что если прочитать все 500 комментариев про мемхак, то там есть 1 нормальный ответ про то как его включить
Мне потребовалось 3 раза прочитать чтобы врубиться в это, все 500 комментов
Так вот он правильный ответ:
Для запуска мемхака нужно отказать от Cjass сняв галочку EnableAdicParser а во вкладке vJass поставить DisableScriptOpt
Советую запустить сначала карту по отлову урона на мемхаке проверить на сохраняемость, если всё получается, тогда уже переносить мемхак в свою карту
Принятый ответ
0
28
5 лет назад
0
во вкладке vJass поставить DisableScriptOpt
Или включить дебаг. Он также отключает оптимизацию.
0
26
5 лет назад
0
или использовать блоки nocjass
0
32
5 лет назад
0
Hate, ноу, где это у нас в мемхаке блоки но сjass? я 3 темы создавал спрашивал, как запустить мемхак 2 версии, на Сjass вот тот что в рендедж вшит да, запускается всё, но не нормальный мемхак. Мне явно дали понять что его нельзя запустить с cjass'ом, чем докажете?
0
16
5 лет назад
0
Cпасибо за ответы.
Черт, а с cJass прям никак не будет работать?
Пусть мемхак на обычном джассе написан, это означает что и в остальном коде мне от cJass отказаться придется?
У меня на нем буквально десятки тысяч строчек кода, переписать на обычный jass будет нереально.
Да и обычный jass выглядит вырвиглазно и неудобен со своим синтаксисом из кучи длинных слов, словами вместо скобок и символов, и лишними словами call, local и set
Неужели придется отказаться от cJass полностью?
0
26
5 лет назад
0
Drulia_san:
Cпасибо за ответы.
Черт, а с cJass прям никак не будет работать?
Пусть мемхак на обычном джассе написан, это означает что и в остальном коде мне от cJass отказаться придется?
У меня на нем буквально десятки тысяч строчек кода, переписать на обычный jass будет нереально.
Да и обычный jass выглядит вырвиглазно и неудобен со своим синтаксисом из кучи длинных слов, словами вместо скобок и символов, и лишними словами call, local и set
Неужели придется отказаться от cJass полностью?
чукча не читатель?
0
28
5 лет назад
0
Да и обычный jass выглядит вырвиглазно и неудобен со своим синтаксисом из кучи длинных слов, словами вместо скобок и символов, и лишними словами call, local и set
Ну кому как, мне оба нравятся.
0
32
5 лет назад
0
Hate, развей миф, вот карта xgm.guru/p/wc3/mhdamage/download - карта с детектом урона, сделай так чтобы карта стала работать на cJass, расставь эти nocjass и приложи сюда,
0
16
5 лет назад
0
nocjass
кек, я просто не сразу понял что под nocjass имелись в виду блоки кода которые отключают cjass для карты. Не знал об их существовании, думал полностью выключить.
Bergi_Bear:
Hate, развей миф, вот карта xgm.guru/p/wc3/mhdamage/download - карта с детектом урона, сделай так чтобы карта стала работать на cJass, расставь эти nocjass и приложи сюда,
Да, это мне и нужно было, спасибо
3
26
5 лет назад
Отредактирован Hate
3
Bergi_Bear:
Hate, развей миф, вот карта xgm.guru/p/wc3/mhdamage/download - карта с детектом урона, сделай так чтобы карта стала работать на cJass, расставь эти nocjass и приложи сюда,
на, в vjass нужно включить Disable script optimization
а разговоров то было...
Загруженные файлы
0
32
5 лет назад
0
Hate, а где вы раньше были когда я эту тему поднимал, почему мне каждый второй на форуме говорил что не работает мемхак и cjass, работает же !
я правда так и не понял куда вы что поставили, но карта сохраняется =) спасибо большое =)
0
28
5 лет назад
0
я правда так и не понял куда вы что поставили
vJass -> Disable script optimization. Также можно дебаг включить, он тоже отключает.
0
32
5 лет назад
0
нее кароче, всё фигня, карта то работает с галочкой, но сиджасс не пашет, удалил 1 call и сразу ошибки пишет.... не.... это лажа какая-то
0
26
5 лет назад
Отредактирован Hate
0
Где удалили, внутри мемхаковских функций?
Ну или вы сам сижасс выключили
0
32
5 лет назад
0
нет, конвертанул триггер создания трёх пехотинцев, и убрал первый call перед createunit....
0
28
5 лет назад
0
нет, конвертанул триггер создания трёх пехотинцев, и убрал первый call перед createunit....
Отключи оптимизатор cJass, а его самого включи.
Hate:
Где удалили, внутри мемхаковских функций?
Было бы неплохо, если бы ты кинул свои настройки cJass.
0
32
5 лет назад
0
Вроде расставлял!no cjass но оно у меня так стабильно и не заработало, я забил и написал что несовместимо в текущем виде с Cjass
Кстати лич подкинул более надежный хук на выход для восстановления памяти,
Код от DracoL1ch
unction InitExtrasPageDisplayOnExit takes integer pTriggerHandle returns nothing
local integer oldprotection = ChangeOffsetProtectionNoRestore(GameDLL+0x5C4120,8,0x40)
local integer address=GameDLL+0x5C4120
set FinalTableHookRealValue1=RMem(GameDLL+0x5C4120)
set FinalTableHookRealValue2=RMem(GameDLL+0x5C4120+4)

call WMem(address, 0xE9E9E9E9)

call WMem(address + 1, pFinalTableHook - (address + 1) - 4)

call WMem(pFinalTableHook + 0, 0x68609090 )
call WMem(pFinalTableHook + 4, pTriggerHandle )
call WMem(pFinalTableHook + 8, 0xB890C08B )
call WMem(pFinalTableHook + 12, pTriggerExecute )
call WMem(pFinalTableHook + 16, 0xC483D0FF )
call WMem(pFinalTableHook + 20, 0xE9906104 )
call WMem(pFinalTableHook + 24, GameDLL+0x5C4120 - (pFinalTableHook + 24) - 4 )

call ChangeOffsetProtectionNoRestore(GameDLL+0x5C4120,8,oldprotection)
endfunction

function DisplayExtrasPageDisplayOnExit takes nothing returns nothing
local integer oldprotection = ChangeOffsetProtectionNoRestore(GameDLL+0x5C4120,8,0x40)
call WMem(GameDLL+0x5C4120,FinalTableHookRealValue1)
call WMem(GameDLL+0x5C4120+4,FinalTableHookRealValue2)
call ChangeOffsetProtectionNoRestore(GameDLL+0x5C4120,8,oldprotection)
//your code on exit here
endfunction


activation:
set pFinalTableHook = AllocateExecutableMemory(60*4)
set t=CreateTrigger()
call TriggerAddAction(t,function DisplayExtrasPageDisplayOnExit)
call InitExtrasPageDisplayOnExit(GetHandleId(t))
Не спешим бездумно копипастить, я сделаю карту с новым детектом урона, зарядами и функциями активации абилок без приказа, когда-нибудь...
0
28
5 лет назад
0
unction
f пропустил.
0
32
5 лет назад
0
PT153, эт из скайпа как есть, выдрано из карты лича, ептить - я для кого написал не копипастить, не тестировалось.
0
32
5 лет назад
0
call Просто как я понял, расставление !no cjass позволит работать в карте со включенной галочкой про cjass, но при это его самого нельзя будет использовать,
set Вывод: в это нет никого смысла
set Вывод =null
quq_CCCP, а старое восстановление памяти как-то не так так работает?
Загруженные файлы
0
28
5 лет назад
Отредактирован PT153
0
!no cjass
Нужно обернуть места с использованием мемхака //! nocjass и //! endnocjass, я так думаю. И саму либу тоже.
0
32
5 лет назад
0
Bergi_Bear, ну лич сказал что может не срабатывать, я ловил фаталы когда игроки ливали в реплее, в игре все было норм.
Пока сделал у себя в карте, привел в понятный вид и проверил, ну работает...
0
32
5 лет назад
0
PT153, сейчас вся карта, весь мемхак обёрнуты но сджасем, как сделал кет, а вот простейший триггер не обернут, и разумеется сразу ругается как я показал на скрине выше
Чтобы оставить комментарий, пожалуйста, войдите на сайт.