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> на свой код
19

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

Скинь свой неработающий код. Без него я не пойму где ты ошибся.
19

» WarCraft 3 / Умножение типов real

Sergarr, достаточно не злоупотреблять количеством цифр после запятой.
19

» WarCraft 3 / Умножение типов real

При трансляции jass скрипта в байт-код с float'ами происходит беда:
спойлер
В скрипте В байт-коде
0.1 0.1000000089
0.11 0.1100000069
0.111 0.1110000014
0.1111 0.1111000031
0.11111 0.1111100167
0.111111 0.1111110076
0.1111111 0.1111111119
0.11111111 0.1111111119
0.111111111 0.1111111119
0.1111111111 0.7879855037
0.11111111111 -1.459007144
0.111111111111 0.7671899199
0.1111111111111 -0.9766618013
0.11111111111111 0.1111111343
0.111111111111111 -0.2006956041
0.1111111111111111 -0.6524714231
0.11111111111111111 0.4152027667
0.111111111111111111 1.395148873
0.1111111111111111111 -0.3706153929
0.11111111111111111111 -0.750297904
3.1415926535897932384626433832795 2.621956825
19

» WarCraft 3 / Полноценный Антимапхак.

16GB, эта система требует экспериментальную версию pjass, которая позволяет отключить проверку синтаксиса для отдельных функций.
19

» WarCraft 3 / Непонятки с globals/endglobals

Принятый ответ
В файле "war3map.j" блок globals встречается два раза.
19

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

У меня стояла галочка "запустить в режиме совместимости", которая и требовала права админа.
Убрал её и начало работать, но нестабильно. За 12 запусков успешно лишь 7.
Почему при запуске RenderEdge.exe или war3.exe с правами админа мод не работает?
19

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

Мод не работает.
Запускаю с правами администратора, InstallPath содержит путь к игре,
но сколько раз не перезапускай, тестовая карта не открывается.
19

» WarCraft 3 / Двойной клик предмета и сети...

Попробуй использовать нативку SetUnitPropWindow
Обездвижить:
SetUnitPropWindow(unit, 0.0)
Вернуть как было:
SetUnitPropWindow(unit, GetUnitDefaultPropWindow(unit))
Не забудь триггерно запретить использовать предметы, которые позволяют телепортироваться (под сеткой они ведь запрещены?).
19

» WarCraft 3 / Закрыть/Спрятать окно портрета

Для скрытия портретов достаточно выполнить след. код:
call ShowInterface( false, 0. )
call ShowInterface( true, -1. )
Демонстрация:
до
после
Загруженные файлы