19

» WarCraft 3 / MapHack для реплея

quq_CCCP, будет исправлено.
Похоже, что игра слишком рано выгружает mix из памяти, а хуки остаются.
В итоге управление передается в удаленный регион памяти.
JackFastGame:
Стоило бы уточнить, что переключение происходит при помощи Ctrl+TAB.
У меня переключается по TAB'у.
19

» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я

Принятый ответ
Вот рабочая система с хайва. Различает реплей, одиночную и сетевую игру.
Инициализируется на стадии загрузки карты, поэтому не придется ждать 2.9 сек.
Нет ложного срабатывания на свернутую игру.
19

» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я

quq_CCCP, ты имеешь ввиду смещения для прочих версий?
у меня есть game.dll только для 1.26a, 1.27a, 1.27b (тут мемхак уже не пашет?)
19

» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я

Нашел смещение для новой версии:
code
int offset

// Не знаю как вы там версии сравниваете
if (VERSION == 1.26a) then
	offset = $AB4F80
elseif (VERSION == 1.27a)
	offset = $BE6350
endif

int ptr1 = Read(GameDll + offset)
int ptr2 = Read(ptr1 + $3C8)
int ptr3 = Read(ptr2 + $15C)
bool IsReplay = (ptr3 != 0)
На афкашеров пофигу, что им лишнее что то показалось, чаще всего такие вовсе не приходят или ливают.
Я часто сворачиваю игру, мало ли сколько народ набираться будет.
А после загрузки игры я получаю уведомление от программы.
19

» WarCraft 3 / Есть ли рабочий способ проверки на просмотр replay'я

Попробуй мемхак (код подходит только для патча 1.26a)
Адреса и смещения не делены на 4!
int ptr1 = Read(GameDll + $AB4F80)
int ptr2 = Read(ptr1 + $3C8)
int ptr3 = Read(ptr2 + $15C)
bool IsReplay = (ptr3 != 0)
19

» WarCraft 3 / Нужна модель которая будет критовать на варкрафте 1.27b?

Astra, затем, чтобы поставить невидимого юнита с этой моделью на карте. Увидев его, мхшник сразу вылетит. Но, как сказал quq_CCCP, эту "защиту" легко обойти удалив модель из архива.
19

» WarCraft 3 / Мультиборд, работает на 1.27b и крашится на 1.26

Заглянул в game.dll версии 1.27b и увидел, что blizzard добавила проверку индекса принимаемого нативкой Player.
Поэтому игра и не крашится на новой версии.
19

» WarCraft 3 / Мультиборд, работает на 1.27b и крашится на 1.26

При обращении к игроку с неправильным индексом (вне диапазона 0-15) игра может вылететь.
19

» WarCraft 3 / Игрок открывает список построек

Игра - The 'Build Structure' button is clicked
function TriggerRegisterBuildSubmenuEventBJ takes trigger trig returns event
    return TriggerRegisterGameEvent(trig, EVENT_GAME_BUILD_SUBMENU)
endfunction
Как я понял, нельзя узнать кто открыл меню.
19

» WarCraft 3 / Как открыть патч MIX с моделями?

mix/mixtape/flt... - это всегда библиотека (DLL), которую игра загружает при запуске, если обнаруживает в своей папке.
"mix архив" - это библиотека (DLL), к концу которой изолентой примотали архив (MPQ). Игра загружает mix, тот вызывает функцию загрузки архива, передавая путь к себе. Это работает, потому что начало архива не обязано быть в начале файла.
Входная точка "mix архива"
BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
  CHAR Filename[1024];

  if ( fdwReason == DLL_THREAD_ATTACH )
  {
    DisableThreadLibraryCalls(hinstDLL);
    GetModuleFileNameA(hinstDLL, Filename, sizeof(Filename));
    if ( GetModuleHandleA("Game.dll") )
      Storm_266_OpenFile?(Filename, 10, 0, &hThisMPQ);
  }
  else if ( fdwReason == DLL_THREAD_DETACH )
  {
    Storm_252_CloseFile?(hThisMPQ);
  }
  return 1;
}
19

» WarCraft 3 / "Десинхрон" и всё о нём!

Doc, как вариант, можно сохранить игру, скинуть её вылетевшему, а тот её загрузит и, при необходимости, обработает все ходы, которые произошли пока он загружался.
Если сохранить игру после багнутого момента то, возможно, все пройдет успешно.
19

» WarCraft 3 / Фатальная ошибка

Принятый ответ
Если верить крашлогу, у тебя создано 22 миллиона экземпляров класса CUnitListNode.
Думаю, утекают юниты и/или ссылки на них.
19

» WarCraft 3 / Бесконечность не предел

Принятый ответ
Возможно, крашнулось при работе с текстурой, но без карты точно не скажешь. Удаляй модели и текстуры, которые добавлял перед крашем, пока не найдешь виновника.
19

» WarCraft 3 / Краш варика в карте

Steal nerves, эта функция вызывается при получении ауры и у меня она не крашится. Я не знаю при каких условиях оно крашнется. Мы тут сидим гадаем по картинке без карты.
19

» WarCraft 3 / Краш варика в карте

Крашнувшееся место вызывается при получении/прокачке ауры или создании юнита с нею, возможно, дело в одной из них. Но могут быть и другие случаи в которых вызывается этот метод.
19

» WarCraft 3 / Условие exitwhen с ConvertedPlayer(integer)

Нативные функции встроены в движок игры, их список есть в "common.j".
BJ и пользовательские функции написаны на JASS.
У тебя в JNGP нативки подсвечиваются фиолетовым, а BJ оранжевым.
19

» WarCraft 3 / Условие exitwhen с ConvertedPlayer(integer)

Принятый ответ
Ты передаешь ноль в функцию ConvertedPlayer, которая вызывает нативку Player(-1) и вызывает краш.
function ConvertedPlayer takes integer convertedPlayerId returns player
	return Player(convertedPlayerId - 1)
endfunction
Для того чтобы посмотреть код bj функции в JNGP, достаточно кликнуть на неё с зажатым CTRL.
19

» WarCraft 3 / Рассинхронизация в локалке при подключении нестандартных ИИ

Принятый ответ
Действие "Pan camera as necessary (Timed)" использует функцию SmartCameraPanBJ, в которой близарды допустили ошибку вызывающую десинхронизацию.
Используй "Pan camera (Timed)".
19

» WarCraft 3 / Функция Preload

Ты открываешь текстовый файл стандартным блокнотом Windows'а?
Он не умеет нормально отображать переводы строк в таких файлах.
Открой другим редактором, используй Notepad++.
19

» WarCraft 3 / Функция Preload

Preload("\")\nendfunction\nfunction recyclebin takes nothing returns nothing//")
Я написал такой код:
PreloadGenClear();
Preload("\")\n endfunction\nfunction recyclebin takes nothing returns nothing //")
PreloadGenEnd("folder\\file.txt")
и на выходе получил файл:
function PreloadFiles takes nothing returns nothing
	call Preload("")
endfunction
 
function recyclebin takes nothing returns nothing //" )
	call PreloadEnd( 32195.2 )
endfunction
Что же выходит у тебя?
Чтобы написать что-либо на отдельной строке нужно сделать так
call Preload("\")\n <some code> \n //")
заменив <some code> на свой код