13

» RenderEdge / [RenderEdge] Экспериментальная версия

Melissa, привет, я уже писал, что проблема в SharpCraft'е, и её единственное решение здесь, в 133 комментарии.
Мод начнёт запускаться у всех без проблем, когда я избавлюсь от шарпкрафта в пользу мода Александра, который на данный момент имеет небольшую проблему, из-за которой я пока и не могу отказать от SharpCraft. Но, всё же, это произойдет и довольно скоро (а может и нет...)
13

» RenderEdge / [RenderEdge] Экспериментальная версия

К сожалению, не всё так просто с интерфейсом. При таком подходе, что я продемонстрировал, место клика курсора будет не совпадать с его истинными координатами. Кроме этого, даже если получится переместить кнопки, их кликабельная область останется на старом месте.
Остаётся вариант полностью отключить стандартный интерфейс и рисовать поверх новый.
В версии, которая должна работать в стандартных картах, будет сохранён стандартный интерфейс с возможностью его полного скрытия и отрисовки изображений, текста и кнопок поверх старого. А чтобы добиться наилучшего результата, нужно настраивать полную версию мода для конкретной карты, полностью представляя, что вам нужно.
  • Интеграция AntTweakBar и редактирование игрового источника света

И кажется я понял, как приспособить разрешение в игре для широкоформатных мониторов! Хотя и нельзя делать поспешные выводы, но если всё получится, то я уже совсем скоро смогу выпустить небольшой патч, исправляющий проблему с современными мониторами!
13

» WarCraft 3 / Как сделать общение игрока с компьютером через чат?

после "такое сообщение"
Нужно оставить пустую строку, и тогда всё будет работать. И не забудь в условиях поставить ограничение на вводимое число.
13

» WarCraft 3 / Нормальный конвертер моделей для варкрафт 3

Есть плагин для 3dsMax и Gmax - NeoDex. Он позволяет импортировать и экспортировать .mdx. Если нет макса - качай Gmax, маленький и бесплатный.
Здесь уроки по использованию данного плагина:
Basic Animation Tutorial!
Happy Animating with IK!
Сколько раз я уже это писал... Может кто-нибудь новую статью напишет о конвертации моделей для варкрафта?
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Пока здесь задействован только графический мод. Он не вызовет дессинка, но может быть засчитан как чит в гарене.
13

» RenderEdge / [RenderEdge] Экспериментальная версия

Да, все скриншоты, которые можно увидеть выше, сделаны с использованием ShowInterface(false,0).
13

» WarCraft 3 / Модель исчезает на границе экрана

Попробуй в mdlvis'е увеличить модель в 10 раз, сохрани, открой в war3 me, рассчитай границы, сохрани, опять зайди в mdlvis и уменьши модель в 10 раз.
Может помочь, а может и нет. Другого способа пока нет.
13

» WarCraft 3 / Полоса загрузки

Ну, а если импортировать эту модель в карту и изменить путь к ней на тот, который указан в архиве или установить эту модель в игровом интерфейсе?
13

» WarCraft 3 / Полоса загрузки

Но есть модель полосы загрузки в архиве игры. Что если попробовать отредактировать эту модель, изменив координаты полосы, либо вообще её удалив?
13

» WarCraft 3 / Вызов функций вк 3, через mix (dll)

Получилось!
Передаю строку текста, введённого в чат, в библиотеку, где её перехватываю, обрабатываю и вывожу на экран поверх игры с помощью d3d хука:
output << "GAME CHAT INPUT: " << HOOK::ConvertToChar(HOOK::LoadStr(HT, -3, 3)) << std::endl;
Jass код передачи данных в библиотеку:
function Test takes nothing returns nothing
    call SaveStr(HT, -3, 3, GetEventPlayerChatString())
endfunction

function InitTrig_Test takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterPlayerChatEvent(trig, Player(0), "", false)
    call TriggerAddAction(trig, function Test)
endfunction
Уже можно выводить текст, изображения и создавать меши, вызывая нужные jass функции из игры, но пока только в RenderEdge.
Теперь я помогу Александру добавить хук Direct3D в его библиотеку и постараюсь сделать это так, чтобы не требовалось использовать дополнительный launcher, придерживаясь идеи использовать только один .mix файл.
13

» WarCraft 3 / Вызов функций вк 3, через mix (dll)

Alexander12, в нирване используется тот же метод, только для отлова RenderState'а:
раскрыть
#include "GameHook.h"

namespace HOOK {
	static DWORD next_line;
	volatile DWORD g_GameBase;
	volatile DWORD g_CurrentRenderTarget;
	volatile RENDER_TYPE g_CurrentRenderType;
	volatile DWORD currentRenderCall;
	DWORD address_render_state_sequence;
	DWORD address_render_target_switch;
	DWORD address_render_target_switch_default_case;
	DWORD address_render_mesh;
	DWORD address_render_mesh_real_func;
	DWORD address_render_particle;
	DWORD address_render_particle_real_func;

	//
	// Trampoline functions
	//
	#pragma warning(push)
	#pragma warning(disable : 4740)
	__declspec (naked) void render_state_sequence()
	{
		__asm
		{
			mov edx, [eax+0x30];
			mov ecx, edi;
			pushad;
			mov [currentRenderCall], edx;
		}

		next_line = address_render_state_sequence + 5;

		__asm
		{
			popad;
			jmp [next_line];
		}
	}
	__declspec (naked) void render_target_switch()
	{
		// Save all registers
		__asm 
		{
			pushad;
			mov [g_CurrentRenderTarget], eax;
		}

		next_line = address_render_target_switch + 9; // 9 bytes after the original address

		// Restore the original code
		__asm
		{
			popad;
			cmp eax, 0x15
			ja default_case;
			jmp [next_line];
		default_case:
			jmp [address_render_target_switch_default_case];
		}
	}
	__declspec (naked) void render_mesh()
	{
		__asm pushad;

		g_CurrentRenderType = D3D_MESH;
		next_line = address_render_mesh + 5;

		__asm
		{
			popad;
			call address_render_mesh_real_func;
			jmp next_line;
		}
	}
	__declspec (naked) void render_particle()
	{
		__asm pushad;

		g_CurrentRenderType = D3D_PARTICLE;
		next_line = address_render_particle + 5;

		__asm
		{
			popad;
			call [address_render_particle_real_func];
			jmp next_line;
		}
	}
	#pragma warning(pop)

	void deployHooks()
	{
		// Initialize offests
		g_GameBase = (DWORD)GetModuleHandle("Nirvana.dll");
		address_render_state_sequence = g_GameBase + RENDER_STATE_SEQUENCE;
		address_render_target_switch = g_GameBase + RENDER_TARGET_SWITCH;
		address_render_target_switch_default_case = g_GameBase + RENDER_TARGET_SWITCH_DEFAULT_CASE;
		address_render_mesh = g_GameBase + CALL_TO_RENDER_MESH;
		address_render_particle = g_GameBase + CALL_TO_RENDER_PARTICLE;

		// Hook
		address_render_mesh_real_func = getFuncPtr(address_render_mesh+1);
		address_render_particle_real_func = getFuncPtr(address_render_particle+1);

		JmpPatch(render_state_sequence, (void*)address_render_state_sequence);
		JmpPatch(render_target_switch, (void*)address_render_target_switch, 4);
		JmpPatch(render_mesh, (void*)address_render_mesh);
		JmpPatch(render_particle, (void*)address_render_particle);
	}

	RENDER_STATE getCurrentRenderState()
	{
		int offest = currentRenderCall - g_GameBase;
		switch (offest)
		{
		case RENDER_UNIT_AND_EFFECT_FUNC:
			return STATE_UNIT_AND_EFFECT;
			break;
		case RENDER_UNKNOWN_1_FUNC:
			return STATE_PORTRAIT;
			break;
		case RENDER_MAYJOR_UI_FUNC:
			return STATE_MAYJOR_UI;
			break;
		case RENDER_MINOR_UI_FUNC:
			return STATE_MINOR_UI;
			break;
		case RENDER_MINI_MAP_FUNC:
			return STATE_MINI_MAP;
			break;
		default:
			break;
		}
		return STATE_NULL;
	}
}
Так что вполне реально сделать то, что ты задумал - отрисовка дополнительного интерфейса поверх стандартного.
Ну, попробую поэкспериментировать.
Только напиши, как вызывать функции библиотеки из игры на jass (можешь пока в лс).
13

» WarCraft 3 / Некоторые нативки.

Alexander12, эти функции объявлены в "common.ai":
native DisplayText          takes integer p, string str                 returns nothing
native DisplayTextI         takes integer p, string str, integer val    returns nothing
native DisplayTextII        takes integer p, string str, integer v1, integer v2 returns nothing
native DisplayTextIII       takes integer p, string str, integer v1, integer v2, integer v3 returns nothing
И, похоже, они работают только в debug mode.
13

» WarCraft 3 / Цвет выбора

Может я и ошибся, но, вроде бы, я видел, что в редакторе интерфейса можно изменить модель круга выбора. Посмотрю завтра.
13

» WarCraft 3 / Цвет выбора

Nosferoh, у кольца выбора своя модель с тимколор текстурой.
Eureka 7, находишь в архивах игры данную модель (должно быть название типа SelectionCircle.mdx), редактируешь как хочешь, импортируешь в карту, в редакторе интерфейса находишь и заменяешь Selection Circle модель на свою.
13

» WarCraft 3 / Как убрать отображение ников игроков

Можно выключить подсвечивание юнитов при наведении курсора:
call EnablePreSelect(false,false)
Имена игроков пропадут, но вместе с ними исченут имена самих юнитов и круги выделения под ними.
13

» WarCraft 3 / А я сопротивлялась, товарищ полковник

если удалить один файл текстуры, а потом импортировать другой через эту прогу, то второй встаёт на место первого
Не встаёт. Нужно самостоятельно изменить текстуру в материалах.
13

» WarCraft 3 / Замена юнита за ману.

Не используй событие "каждые n сек". Я уже написал, как нужно делать.
Чтобы заменять только нужный тип юнитов, в действиях пиши первую строку из того, что я написал, а дальше условие "если тип юнита u равно id (равкод) нужного тебе юнита, то",в теле этого условия пиши всё, что после первой строки.
13

» WarCraft 3 / Замена юнита за ману.

А тебе как надо?
В данном случае любой, но можно поставить фильтр в условии.
Или в действиях:
Проверяешь тип юнита u и в зависимости от этого меняешь на нужного юнита.
13

» WarCraft 3 / Замена юнита за ману.

Условие:
Мана боевой единицы равно 100
Действие:
Local unit u = GetTriggerUnit()
Local real x = GetUnitX(u)
Local real y = GetUnitY(u)
Создать юнита в координатах (x, y)
Удалить и очистить u
13

» WarCraft 3 / Kloader (варкрафт в 2 окна) помогите, не работает

Попробуй использовать SharpCraft для запуска нескольких окон. Я точно не помню, но, вроде бы, с его помощью это можно сделать, или нужен RtC?