13

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

Обновление v0.0.2b

Скачать RenderEdge.
Скачать тестовую карту.
  • Исправлена проблема, при которой не получалось запустить мод с первого раза;
  • Улучшен debug log.
13

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

Обновление v0.0.2a (без изменения версии)

Скачать RenderEdge.dll
  • Добавлена новая native функция CtrlSetAngle.
native void CtrlSetAngle(int id, float fAngle) // устанавливает угол поворота элемента GUI (в радианах).
13

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

Кет, на данный момент использую bitmap font (название шрифта не знаю), так как чтение из него намного легче реализовать, чем писать целую систему для загрузки .ttf.
FistBlooD, да, у данного метода полно недостатков, и ситуация никак не изменится, пока я не реализую поддержку .ttf. Появилась идея использовать стандартные функции отрисовки текста, завтра буду пробовать реализовать вывод текста данным способом.

Кстати, полезна ли будет функция вращения элементов GUI? Просто я уже давно сделал такую возможность, осталось только добавить соответствующую нативку. И на данный момент контролы вращаются только относительно левой верхней вершины, надо будет исправить.

Кажется, я нашёл способ чтения русских символов из jass String, завтра проверю.
13

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

FistBlooD, можете скинуть карту? Всё должно корректно работать, а может и нет... На данный момент текстом крайне неудобно пользоваться: нельзя изменить размер шрифта, нельзя писать на русском (хотя сам GUI поддерживает русский язык, вся проблема в преобразовании jass string в char*), нет поддержки форматирования строки.

Обновление v0.0.2a

Скачать RenderEdge.
Скачать тестовую карту.
  • Исправлена ошибка с загрузкой RenderEdge.mpq (теперь мод можно без проблем размещать в любой папке);
  • Исправлен баг в функции CtrlSetText, при котором все элементы GUI, использующие текстуру шрифта, имели одинаковый текст;
  • Изменена функция CtrlSetText - убран аргумент "argb", отвечающий за цвет создаваемого текста, вместо этого используйте функцию CtrlSetColor (текст по умолчанию белый);
  • Изменена функция CtrlSetDepth - тип аргумента "depth" изменён на real.
native void CtrlSetText(int id, bool autoResize, string text) // autoResize: если true, то элемент GUI подгоняется под введённую строку текста, иначе текст растягивается по размеру элемента GUI.
native void CtrlSetDepth(int id, float fDepth) // Определяет порядок поиска элементов GUI функцией CtrlGetFromMousePoint. Чем значение fDepth меньше, тем элемент расположен ближе к экрану (1.0 по умолчанию).
13

» WarCraft 3 / Убрать отображение здоровья

Не должен, часы вообще поверх всего рендерятся, кроме курсора.
Ещё один вариант (для мазохистов) - с помощью ретурн бага вызвать код, меняющий цвет нужной строки, предварительно найденной в game.dll при помощи IDA, либо OllyDbg (хотя, если нужно изменить только цвет, то и Cheat Engine подойдет).
13

» WarCraft 3 / Убрать отображение здоровья

Как вариант, можно сделать заглушку чёрного цвета, модифицировав модель индикатора времени суток.
Или покопаться в .fdf файлах, сдвинув строку здоровья за границу экрана (я пробовал менять цвет шрифта, но никаких изменений не видел, хотя и это может не сработать).
13

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

Может отображение текста требует каких либо редистрибутивов?
Нет, текст рендерится точно так же, как и картинки. Скорее всего я где-то накосячил, и теперь мод не может найти и загрузить RenderEdge.mpq, в котором и лежит текстура шрифта. Решить проблему может перемещение всех файлов из папки RenderEdge в папку с варкрафтом.
FistBlooD:
GetMouseTerrainX() и его аналоги не обновляются если курсор находится над кастомным UI
Это я сделал специально для того, чтобы при нажатии на элементы кастомного гуи не выделялись юниты под ними. Чтобы это отключить, нужно найти в методах OnMouseMove, OnMouseDown и OnMouseUp функцию BlockMouse и закомментировать её.
native BlockMouse(bool bBlock) - блокирует входные сообщения от мыши (перемещение, нажатия), передаваемые в игру. Например, при наведении на иконки стандартного интерфейса, не будет появляться их описание.
13

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

FistBlooD, а у меня текст создаётся:
GUI.Text(0.5, 0.5, 0.12, 0.04 * aspectRatio, "Test", 0xffffffff);
А с функцией IsMouseOverUI() действительно какая-то проблема. Хотя, если использовать её в библиотеке RenderEdge.dll, а не из игры, то всё работает правильно. И вообще что-то странное творится:
bool jNATIVE jIsMouseOverUI()
{
	return bIsMouseOverUI;
}
Что бы я не подставлял вместо bIsMouseOverUI, всегда возвращается true (даже если пишу false).
13

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

IceFog, сам не понимаю, но, кажется, я понял: до внедрения библиотеки нужно снимать ограничения на доступ. Это также должно решить проблему с запуском со второго раза. Сейчас не смогу проверить, через недельку посмотрю.
13

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

IceFog, не надо запускать от админа, если поставить соответствующую галочку в свойствах war3.exe, то при запуске RenderEdge.exe будет вылетать ошибка.
13

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

  1. Да
  2. Да
  3. Нарисовать свой поверх старого - запросто, а со скрытием стандартного - не помню точно, вроде бы, если скрыть его функцией EnableInterface, то и новый не будет рендерится, но лучше проверить (просто я сам не могу посмотреть - в поезде, на неделю в Питер еду).
13

» WarCraft 3 / Невидимые платформы.

Как сделать чтобы при перемещении декораций их высота не обнулялась?
В данной версии JNGP, при перемещении декораций высота сохраняется.
13

» Game Dev / Релиз новой версии Unreal Engine 4.12

Поддержка материалов использующие 2 normal map для создания более реалистичных теней
На сайте же, вроде, написано про улучшенную Clear Coat модель освещения с поддержкой двух карт нормалей, а это немного другое. Или я что-то не увидел?
13

» WarCraft 3 / Экспорт в WarCraft3 из blender3d

А если лень качать 3dsMax, то можно скачать маленький GMAX, NeoDex работает и с ним.
Главное помнить об этом:
раскрыть
GMAX README!
Feutures NOT supported by GMAX:
-Animated Textures
-Multi Layered Materials.
-SuperSpray (Particle Emitters 1)
GMAX has an extra step when exporting, compared to 3dsmax. When you hit export, the model will be printed to the listener. After that you must use an export grabber. I suggest using YAGG: yagg.doubleshadow.wz.cz
The method is simple: click "Export" and once it's finished, run YAGG and click GRAB, then save it as <Your model's name>.mdl Afterwards just open it with magos or guesst's mdl->mdx converter. I strongly recommend you use Guesst's MDLX Convertor Version 1.04 [look at the link below]
If you are downloading 2.65, get the Scene Manager.ms. It's a NeoDex Extra Tool, it will help you browse if your scene easierly. Specialy, in GMAX
13

» WarCraft 3 / Увеличение размера карты

C101Nine, вот код снятия ограничения на размер карты, используемый в grimoire:
раскрыть
char *MapSizeLimitAddress;
char MapSizeLimitBackup[sizeof(MapSizeLimitPatch)] = {0x8B};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		//memcpy(MapSizeLimitBackup,MapSizeLimitAddress,sizeof(MapSizeLimitPatch));
		patchbytes(MapSizeLimitAddress,MapSizeLimitPatch,sizeof(MapSizeLimitPatch));
	} else {
		patchbytes(MapSizeLimitAddress,MapSizeLimitBackup,sizeof(MapSizeLimitPatch));
	}
}*/

char *MapSizeLimitAddress;
char MapSizeLimitBackup1[sizeof(MapSizeLimitPatch1)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
char MapSizeLimitBackup2[sizeof(MapSizeLimitPatch2)] = {0xC3,0x90,0x90,0x90,0x90,0x90};
void hack_MapSizeLimit(int enable)
{
	if(enable) {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitPatch1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitPatch2,sizeof(MapSizeLimitPatch2));
	} else {
		patchbytes(MapSizeLimitAddress+0x21,MapSizeLimitBackup1,sizeof(MapSizeLimitPatch1));
		patchbytes(MapSizeLimitAddress+0x41,MapSizeLimitBackup2,sizeof(MapSizeLimitPatch2));
	}
}

char *MapCellsLimitAddress;
char MapCellsLimitBackup[sizeof(MapCellsLimitPatch)] = {0xC0,0x00,0x00,0x00,0x7C,0x05,0xB8,0x00,0x01,0x00,0x00};
void hack_MapCellsLimit(int enable)
{
	if (enable) {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitPatch,sizeof(MapCellsLimitPatch));
	} else {
		patchbytes(MapCellsLimitAddress+0x10,MapCellsLimitBackup,sizeof(MapCellsLimitPatch));	
	}
}
А вот ссылка на его исходники: svn.code.sf.net/p/w3grimoire/code/source/wehack.cpp
Если не сделали фикс на большее увеличения размера карты, значит на то есть какая-то причина. Позже попробую самостоятельно увеличить размер, но, думаю, ничего получится.
13

» WarCraft 3 / //!textmacro

Закинь его копию в папку с варкрафтом, он у меня там лежит.
13

» WarCraft 3 / 3DS MAX .DAE to MDL? Встречайте: xlDataConverter (alpha)

Андреич, да, совсем забыл об отвязке костей при применении модификатора Edit Mesh, в этом и была вторая проблема с которой я сталкивался, приходилось вручную прикреплять их обратно (но позднее я, вроде бы, начал делать по-другому, но всё-равно были какие-то проблемы).
Андреич:
добавив в modifier list "mesh select" смог экспортнуть модельку с анимками и привязанными костями...
Эх, если бы раньше узнал, столько времени бы сэкономило...
Андреич:
пока что удалось экспортировать только такую "неполную анимацию..."
Да, у меня раньше так же получалось, потом решил просто добавлять Edit Mesh и прикреплять кости самостоятельно.
Хотя нет, это происходило тогда, когда я поворачивал меш с закрепленным костями на 180 градусов.
13

» WarCraft 3 / Освещение не влияет на траву

Кристофер, это происходит из-за того, что в материале травы стоит галочка "Незатуманенный" (в переводе ошибка, следовательно, нужно читать "Незатеннёный"). Просто сними галочку и всё заработает.
Загруженные файлы
13

» WarCraft 3 / 3DS MAX .DAE to MDL? Встречайте: xlDataConverter (alpha)

Андреич, у меня всё нормально было, когда я конвертировал .smd модели из Mount&Blade, анимации корректно извлекались (проблема была лишь в том, что все анимации были в своих файлах, приходилось в максе собирать их и прибавлять значение для старого таймкода каждой анимации). Скинь свой .fbx файл, точно не помню как я раньше делал, посмотрю - вспомню.
13

» WarCraft 3 / Интерфейс черный

Yury13, это не чёрный интерфейс, он просто скрыт командой EnableInterface(false, 0), либо, как написал quq_CCCP, Сimatic mode'ом.
13

» WarCraft 3 / 3DS MAX .DAE to MDL? Встречайте: xlDataConverter (alpha)

Андреич, давно уже с этим не работал, но помню, что там геометрию нужно конвертировать в editable mesh, без этого не выходе получается пустая модель. По настройке анимаций есть две статьи на хайве, но при конвертации модели, в которой все анимации в одном файле, ни каких проблем не должно возникнуть.
13

» WarCraft 3 / 3DS MAX .DAE to MDL? Встречайте: xlDataConverter (alpha)

Андреич, а зачем конвертировать в .dae, если можно сразу из макса в .mdx конвертнуть, даже с анимациями? Вот NeoDex.
13

» WarCraft 3 / Отлов клавиш

Alexander12, круто! То есть её нужно импортировать в карту? Как делал, через SFileReadFile?
А, хотя нет, так всё-равно бы понадобилась библиотека в папке с варкрафтом, либо запуск игры через специальный лончер.