Мой внутренний экстрасенс думает, что герой попадает в группу "даммиков (которые всё равно удаляются таймерами)".
У меня удаление даммиков происходит индивидуально для каждого, а не каким-то общим чистильщиком. Создался даммик - специально под него и таймер для удаления.
А еще я недавно встроил в проверку IsUnitDummy - не герой ли юнит, и если это герой и он в группе даммиков то его оттуда удаляют.
Странно что тебе никто не дал правильный ответ на вопрос, в айсикаповской доте в файле war3map.j ничего нет, весь скрипт карты в виде байт-кода зашит в dll библиотеку, которую можно разве что дизассемблировать. Она есть внутри карты, но это совсем другая история как дизассемблировать компилированный байткод.
Тебе наверное интересно почему так? Потому что админы айсикапа - нехорошие люди, которые видите ли не хотят чтоб их доту кто-то изучал, искал баги в коде.
Как они это сделали?
В версии 1.26а есть баг позволяющий читать и писать память процесса, в том числе внедрять в него DLL библиотеки со своим кодом, а если такая возможность есть - с игрой можно делать вообще всё что угодно, даже с файлами и процессами за пределы игры на твоем компьютере.
Не придумывайте извращения, есть специальный файл с пустой моделькой и origin аттач поинтом.
К нему можно приаттачивать эффекты и менять масштаб, цвет.
Файл прикрепил.
Drulia_san, Интересен готовый продукт, что такое и что делает.
Делаю расширенный мемхак для себя и, собираюсь добавлять туда различный функционал который мне будет необходим по мере продвижения в работе, который можно встраивать в карту. Еще параллельно делаю небольшое sdk к варику, Некоторые вещи взял из RenderEdge, работать с графикой мне не надо, потому исключил всё что было с ней связано как и связи с d3d, сделал sdk (.lib файл с небольшим колвом инклудов) с набором необходимого, которое можно включить в проект (в данном случае моя dll) не пересобирая по 100 раз одно и то же и чтобы работало прямо из карты без заранее скачанного софта.
Может на гитхаб однажды выложу.
вот в едином стиле, все результаты делятся на 4, восстанови и получишь формулу
Так-то оно так, но я заметил очень странную вещь, выводил в варике значения которые читаются по адресу и сами адреса, и проверял их в cheat engine (как и в программе C++ соответственно), эти значения кардинально различаются. Такое ощущение что у него какая-то своя вселенная откуда он читает.
К примеру вывожу вариком значение GetJassContext(1) и значение памяти по адресуGetJassContext(1)/4 + 2589 , перепечатываю адрес, перевожу в hex, смотрю значение в cheat engine с соответствующим оффсетом (2589 оно же 0xA1D) и читаю. То что читает варик и то что читает другой софт по тем же адресам вообще отличается радикально.
а что пишешь на с++. решил весь код карты перевести на dll?
Не, у меня для других целей.
Я решил пока так: Передаю в либу результат выражения ReadUnrealMemory( ReadUnrealMemory( GetJassContext( 1 ) / 4 + 2589 ) / 4 + 2 )
Назовём его условно ptr.
Потом читаю ptr = *(ptr + stringHandle * 4 + 2), потом читаю ptr = *(ptr + 7)
И на моменте чтения адреса где прибавляется 7 уже Access violation.
По идее деление делает адрес "нереальным", а умножение реальным, раз string handle умножается в функции мемхака GetStringAddress на 4, то его и в С++ надо умножить на 4
Но почему-то на чтении ptr + 7 ошибка..
Насколько помню деление и умножение на 4 это проверки корректности, так же везде где можно во второй версии перешли на целые адресса, для надежности.
Когда я пытаюсь читать по этим адресам из DLL библиотеки (там же не надо делить умножать на 4, полноценный язык все таки) ругается на memory access violation. По сути я пытаюсь делать так же как и в скрипте для доступа к игровым объектам, но без деления на 4.
ReadRealMemory(addr) это же то же самое что и *addr
Мне кажется я что-то упускаю и просто убрать деление и умножение недостаточно...
кек, я просто не сразу понял что под nocjass имелись в виду блоки кода которые отключают cjass для карты. Не знал об их существовании, думал полностью выключить. Bergi_Bear:
Hate, развей миф, вот карта xgm.guru/p/wc3/mhdamage/download - карта с детектом урона, сделай так чтобы карта стала работать на cJass, расставь эти nocjass и приложи сюда,
Cпасибо за ответы.
Черт, а с cJass прям никак не будет работать?
Пусть мемхак на обычном джассе написан, это означает что и в остальном коде мне от cJass отказаться придется?
У меня на нем буквально десятки тысяч строчек кода, переписать на обычный jass будет нереально.
Да и обычный jass выглядит вырвиглазно и неудобен со своим синтаксисом из кучи длинных слов, словами вместо скобок и символов, и лишними словами call, local и set
Неужели придется отказаться от cJass полностью?
Понятия не имею, но вар подгружает .mix и .dll файлы, что находятся в его папке. Так сделан RenderEdge, хак на лимит карт и много чего ещё.
mixtape это внешние dll, а здесь либа запакована прям внутрь карты, ты только представь степень опасности в том как просто человек может скачать карту в игре, запустилась игра, а там уже в ход пошла DLL, вредоносный код уже свободно может исполняться
делай дебаг, и следи, проверяй везде где есть ремув
Ремув есть практически везде, потому что используются дамми. Как правило ремувается очень большое количество дамми и умершие крипы спустя определленное время. На всё дебаг поставить это будет ну очень много лишнего кода. Да и потом, я так и не смог воссоздать ситуацию чтоб баг повторился.
Можно как-то посмотреть какой код выполнялся в реплее в тот момент?
Складывается только благословение элуны или дефенд - фактор урона от магии - 1 это 100% урона, 0.70 это 70% урона , т.е из 100 прошло только 70 урона, 30 заблокировалось.
разве не предметные абилки складываются?
или это уже от самой абилки зависит?
Просто у меня откуда то этот стереотип, типа не предметые абилки не суммируются, а только лишь работает самая сильная и т.д
Ну в доте ж есть такое, что ты покупаешь худ например пуджу и оно суммируется с его пассивкой. То есть она уменьшила скажем 200 урона до 170 и худ эти 170 еще на 30% уменьшает, вроде так. Это 100% стандартная механика варкрафта, так что мне нужно было просто узнать что это благословение элуны. Осталось просто в предмет его запихнуть.
Хорошо, а настройки проблемных способностей (что на основе канала и берсерка)?
Сама абилка вот, всё что ниже - описание кд и мана (остальное по нулям), всё что выше - графика где всё тоже по нулям, кроме иконки.
Берсерк нет смысла кидать, он работает нормально, да и без него баг сам по себе остается.
...
Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика JASS хуже женской логики.
Главный критерий: Отключение обрабатываемой способности ДО выдачи дамми итема не будет работать.
Ну оно вообще кастится в течение какого-то времени, всё таки эта абилка сбивает приказ. Но разве это должно влиять на это... Эта абилка же не приказ дает скрыть способность, она вообще не на юнитов, а на игрока влияет, чтобы у всех юнитов подконтрольных игроку скрылась такая-то абилка.
...
Так. Всё работает до тех пор, пока игроку не даётся дамми-итем, который собсна и призывает иллюзию. Попробую проверить дальше что там. Хотя триггер обрабатывающий призыв иллюзии вообще ничего не скрывает\показывает.
Поставь дебаг на отображение abId и p. Также вопрос про то, какое событие ловит каст, в силе.
EVENT_PLAYER_UNIT_SPELL_EFFECT
Я только что вручную прописал скрыть id этой абилки - не скрывается.
Хотя при выборе героя она должна быть скрытой и скрывается, странно.
Еще попробовал просто так скрыть эту абилку вообще другой абилкой - всё скрывается.
Ничего не противоречу, просто никому из вопросов и ответов карты не нужны, но этот угарный страх выложить в открытый доступ)))
Всё просто, ты выкладываешь обе карты и говоришь, что в этой работает, а в этой то же самое не работает. Кто хочет, смотрит, кто не хочет, не смотрит. Но здесь же экстрасенсы все, видят корень проблемы астральным третьим глазом.
Но вообще доля правды в твоих словах есть. Очень мало кто здесь скачивает карты и разбирается в них, в основном выдвигают теории, основанные на имеющемся опыте. Но мне просто так влом получать карту в ЛС, получается какую-то ответственность на себя беру, что внимательно рассмотрю проблему, а на самом деле хочу мельком глянуть, что сразу в глаза попадётся. Да и тем более у тебя скорее всего jass-триггеры, в них у меня вообще нет желания глубоко залазить. А была бы выложена, молча бы скачал, посмотрел, если не разобрался бы, то ничего бы и не сказал. Просто и удобно.
Короче я забил на это всё и сделал проще, учитывая что у моего героя морф и с техникой улучшение не вышло, а апать книгу нормально по уровням не выходит, я сделал так: У героя есть уже спеллбук со всеми абилками и он скрывается при выборе персонажа. И абилки внутри тоже скрываются. И все абилки внутри скрываются. Есть отличная абилка "Улучшение характеристик", которая имеет иконку в меню прокачки и таки прокачивает уровень, но не имеет иконки на панельке абилок. Герой прокачивает её, а триггеры разблокируют спеллбук и по очереди все спеллы внутри него. В итоге получается полностью рабочий спеллбук с общим кд. Единственный недостаток - описание спеллбука не поменять. Да, можно использовать Blz функции которые напрямую меняют описание абилки и тогда вообще не отличить от полноценной прокачки, но т.к. идет упор на максимальную совместимость - я этого делать не стал.
Если есть возможность помочь - напиши в лс, скину.)
Вот с чего вы берёте, что мне персонально интересно заниматься вашей проблемой? Ещё понимаю, если ребёнок в ЛС обращается, но ты-то вроде взрослый человек(
Я не обращаюсь в лс с просьбой решить проблему, ты просто сказал выложил бы карты, я бы не хотел выкладывать во всеобщий доступ, но если появилось желание посмотреть - я бы скинул в лс. Ты сам себе противоречишь. Раз посмотрел бы, то не важно откуда брать саму карту, отсюда или лс. Я не прошу делать за меня карту, я лишь спрашиваю у комьюнити о конкретной проблеме на борьбу с которой потратил почти двое суток, я устал топтаться на месте и готов принимать любую помощь.
Никогда не любил спеллбуки, кроме тех случаев, когда там одни пассивки .
Можно попробовать пошаманить с абилкой "техника", мб поможет Хотя костыли со стандартными спеллами та ещё муть - в джазе ты хоть примерно знаешь как весь твой код работать должен...
С техникой провал полный, добавлял технику в еще одном скрытом спеллбуке, сначала просто поднимал ей уровень при прокачке основной способности, но спеллбук больше 2 уровня не улучшается техникой. Пробовал добавлять 4 разные техники которые по очереди улучшают абилку при прокачке и это работает, но у моего героя есть морф и что бы я не делал, что бы я перманентно там не назначал, там все сбивается и превращается в кашу. Короче это извращение сразу отбрасываю
» WarCraft 3 / Удаляется герой рандомно, баг
А еще я недавно встроил в проверку IsUnitDummy - не герой ли юнит, и если это герой и он в группе даммиков то его оттуда удаляют.
Ред. Maniac_91
» WarCraft 3 / Ответе пожалуйста на несколько моих вопросов...
В версии 1.26а есть баг позволяющий читать и писать память процесса, в том числе внедрять в него DLL библиотеки со своим кодом, а если такая возможность есть - с игрой можно делать вообще всё что угодно, даже с файлами и процессами за пределы игры на твоем компьютере.
» WarCraft 3 / На основе какого юнита, лучше всего делать даммика ?
» WarCraft 3 / На основе какого юнита, лучше всего делать даммика ?
К нему можно приаттачивать эффекты и менять масштаб, цвет.
Файл прикрепил.
Ред. Drulia_san
» WarCraft 3 / Вопрос по устройству мемхака
Может на гитхаб однажды выложу.
Ред. Drulia_san
» WarCraft 3 / Вопрос по устройству мемхака
Ред. Drulia_san
» WarCraft 3 / Вопрос по устройству мемхака
К примеру вывожу вариком значение GetJassContext(1) и значение памяти по адресуGetJassContext(1)/4 + 2589 , перепечатываю адрес, перевожу в hex, смотрю значение в cheat engine с соответствующим оффсетом (2589 оно же 0xA1D) и читаю.
То что читает варик и то что читает другой софт по тем же адресам вообще отличается радикально.
Ред. Drulia_san
» WarCraft 3 / Вопрос по устройству мемхака
Я решил пока так: Передаю в либу результат выражения ReadUnrealMemory( ReadUnrealMemory( GetJassContext( 1 ) / 4 + 2589 ) / 4 + 2 )
Назовём его условно ptr.
Потом читаю ptr = *(ptr + stringHandle * 4 + 2), потом читаю ptr = *(ptr + 7)
И на моменте чтения адреса где прибавляется 7 уже Access violation.
По идее деление делает адрес "нереальным", а умножение реальным, раз string handle умножается в функции мемхака GetStringAddress на 4, то его и в С++ надо умножить на 4
Но почему-то на чтении ptr + 7 ошибка..
Ред. Drulia_san
» WarCraft 3 / Вопрос по устройству мемхака
ReadRealMemory(addr) это же то же самое что и *addr
Мне кажется я что-то упускаю и просто убрать деление и умножение недостаточно...
» WarCraft 3 / Не работает мемхак
Bergi_Bear: Да, это мне и нужно было, спасибо
» WarCraft 3 / Не работает мемхак
Черт, а с cJass прям никак не будет работать?
Пусть мемхак на обычном джассе написан, это означает что и в остальном коде мне от cJass отказаться придется?
У меня на нем буквально десятки тысяч строчек кода, переписать на обычный jass будет нереально.
Да и обычный jass выглядит вырвиглазно и неудобен со своим синтаксисом из кучи длинных слов, словами вместо скобок и символов, и лишними словами call, local и set
Неужели придется отказаться от cJass полностью?
Ред. Drulia_san
» WarCraft 3 / Очень странный архив карты
» WarCraft 3 / Очень странный архив карты
Ред. Drulia_san
» WarCraft 3 / Очень странный баг
Можно как-то посмотреть какой код выполнялся в реплее в тот момент?
» WarCraft 3 / Что лучше для сопротивления магии
» WarCraft 3 / Не скрывается абилка
Берсерк нет смысла кидать, он работает нормально, да и без него баг сам по себе остается.
» WarCraft 3 / Не скрывается абилка
Ред. Drulia_san
» WarCraft 3 / Не скрывается абилка
Мне удалось решить проблему, но я не понимаю почему оно так работает.
Когда игроку дается дамми итем, не важно включена ли обработка призыва иллюзий или нет, просто когда он дается - не срабатывает отключение способности которая была закастована только что. Другие - можно отключить, эту - нет.
Но только если она отключалась до выдачи дамми-итема. Если всучить дамми-итем, а потом уже отключить абилку - она отключается. Логика JASS хуже женской логики.
» WarCraft 3 / Не скрывается абилка
...
Так. Всё работает до тех пор, пока игроку не даётся дамми-итем, который собсна и призывает иллюзию. Попробую проверить дальше что там. Хотя триггер обрабатывающий призыв иллюзии вообще ничего не скрывает\показывает.
Ред. Drulia_san
» WarCraft 3 / Не скрывается абилка
Я только что вручную прописал скрыть id этой абилки - не скрывается.
Хотя при выборе героя она должна быть скрытой и скрывается, странно.
Еще попробовал просто так скрыть эту абилку вообще другой абилкой - всё скрывается.
» WarCraft 3 / Не скрывается абилка
» WarCraft 3 / Про способности не сбивающие приказ
Вот пошло у абилки КД, а её еще раз прожать можно чтоб "отменить".
Ред. Drulia_san
» WarCraft 3 / Снова спеллбук... Не работает общее кд
Ред. Drulia_san
» WarCraft 3 / Снова спеллбук... Не работает общее кд
» WarCraft 3 / Снова спеллбук... Не работает общее кд