13

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

Андреич, да не совсем, я сейчас как раз пробую это сделать. Например, так добавляю новую кнопку, при нажатии на которую, происходит то же самое, что и при нажатии на стандартную кнопку атаки.
void fakeAttack()
{
    ForceKey("A");
}

void InitInterface()
{
    trigger trig = CreateTrigger();
    TriggerAddAction(trig, function fakeAttack);

    GUICreateInstance(0, 800, 400, 64, 64);
    GUISetTexture(0, "Textures\\Attack.blp");
    GUISetCallback(0, trig, MB_Left, Key_Release);
}
А миникарту и портрет юнитов можно оставить стандартными, но с возможностью их переместить, изменить размер, либо полностью скрыть.

Скрыть стандартный интерфейс можно средствами d3d, так как, если сделать это функциям варкрафта, то попадет возможность использовать ForceKey(...). Осталось реализовать возможность отключать передачу информации о нажатиях кнопок мыши в варкрафт.
13

» WarCraft 3 / Как выбрать работника, строящего здание

Можно, используй функцию GetOrderedUnit(). При событии "Юнит отдал приказ (цель-объект)", она вернёт юнита, которому отдали приказ на строительство. Нужно будет ещё добавить проверку на id приказа, чтобы понять, что это именно приказ на строительство.
Загруженные файлы
13

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

Андреич, GF RaiseD, намного легче сделать интерфейс с нуля, и такая возможность уже есть. Например, можно полностью скрыть стандартный интерфейс и/или выключить его через EnableInterface(...) и рисовать новый, при этом назначая кнопкам действия, которые были назначены на стандартные. Таким способом можно запросто воссоздать стандартную область с предметами, а также с приказами и способностями, благо существуют jass функции, которые позволяют выполнять те же действия, что и кнопки стандартного GUI.
13

» WarCraft 3 / Поврежденная модель глобального освещения

Bornikkeny:
darkowlom, как я понял, у тебя всё получается? И ребята, как решите проблему, запостите наработку на сайте. Больно интересно выглядит динамическая смена дня и ночи.
Вот наработка и статья с хайва.
13

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

Дело в том, что актуальный билд работает нестабильно: при разворачивании игры из свернутого состояния, игра наглухо зависает, помогает только завершение процесса из диспетчера задач.

darkowlom, нет, это было только в первой версии RenderEdge, её я тоже продолжу развивать, но позже.
13

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

Альфа версия будет содержать только отрисовку интерфейса, а полная - улучшение освещения и пост-эффекты.
13

» WarCraft 3 / "Exprotect"

Если пользуешься JNGP, то в папке, куда ты его распаковал, должна быть папка "backups", где хранятся последние сохраненные карты, посмотри там.
13

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

  • Добавил поддержку .blp;
  • Избавился от функций создания текстур. Теперь за это отвечает улучшенный алгоритм, позволяющий предотвратить повторное создание одних и тех же текстур, заключённый в функциях GUISetTexture(int id, string filename) и GUISetColor(int id, int argb).
Осталось собрать проект с нуля, без графических улучшений и AntTweakBar, и с максимальной оптимизацией.
alexprey, от передачи id текстур я уже отказался, до релиза я ещё обязательно пересмотрю структуру GUI системы, и, возможно, откажусь от передачи id элемента, но, скорее всего - нет. Так как при таком подходе могут возникнуть некоторые проблемы, например, если пользователь забудет приравнять значение, возвращаемое функцией GUICreateInstance(...) к переменной, то в дальнейшем будет невозможно получить доступ к данному элементу GUI.
13

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

Обновил функцию GUICreateTextureFromFile(...): реализовал загрузку текстур, импортированных в карту, и их поиск в стандартных архивах варкрафта (war3.mpq, war3x.mpq). На данный момент поддерживаемые форматы текстур - .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, и .tga. Осталось добавить поддержку .blp, что не составит особого труда.
13

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

GF RaiseD, это была старая версия, её исходники я не сохранил. Обновление я выложу, но позже, когда релизну основную версию.
На данный момент готовы следующие Custom Natives:
Input API
native int GetMouseX()
native int GetMouseY()
native int GetWheelDelta()
native void SetMousePos(int x, int y)
native void TriggerRegisterMouseWheelEvent(trigger trig)
native void TriggerRegisterMouseEvent(trigger trig, int iButton, int state)
native int GetTriggerKey()
native bool IsKeyDown(int iKey)
native void TriggerRegisterKeyEvent(trigger trig, int iKey, int state)
native int GetScreenWidth()
native int GetScreenHeight()
Misc API
native float FPS()
native float DeltaTime()
native int COLOR_ARGB(int a, int r, int g, int b)
native void ShowCursor(bool isShow)
GUI API
native int GUICreateInstance(int id, int left, int top, int width, int height)
native int GUISetText(int id, bool defSize, string text, int argb)
native int GUISetTexture(int instID, int texID)
native void GUISetBounds(int id, int left, int right, int top, int bottom)
native void GUISetCallback(int id, trigger trig, int iButton)

native int GUICreateTextureFromFile(int id, string filename)
native int GUICreateEmptyTexture(int id, int argb)
Осталось добавить ещё несколько функций для работы с GUI и возможность поиска текстур в .mpq, .w3x архивах и в памяти варкрафта:
native void GUIRemove(int id)
native void GUIShow(int id, bool isShow)

Вот пример того, как это будет выглядеть на jass:
#define IMG_TestTexture  = 0
#define GUI_TestButton  = 0

void InitInterface()
{
    trigger test1 = CreateTrigger();
    TriggerAddAction(test1, function GUITest);

    GUICreateTextureFromFile(IMG_TestTexture, "Textures\\human-transport-slot.png");
        
    GUICreateInstance(GUI_TestButton, 500, 500, 64, 64);
    GUISetTexture(GUI_TestButton, IMG_TestTexture);
    GUISetCallback(GUI_TestButton, test1, MB_Left);
}
Или через специальную структуру, написанную на jass:
#define IMG_TestTexture  = 0
#define IMG_Orange         = 1

GUI_Manager array MainGUI

void InitTextures()
{   
    GUICreateTextureFromFile(IMG_TestTexture, "Textures\\human-transport-slot.png")
    GUICreateEmptyTexture(IMG_Orange, 0xffffa500)
}

void InitInterface()
{
    MainGUI[0].AddButton(0.5, 0.5, 0.04, 0.04 * aspectRatio, IMG_TestTexture)
    MainGUI[0].SetCallback(MB_Left, function GUITest0)
    MainGUI[0].SetCallback(MB_Right, function GUITest2)
        
    MainGUI[1].AddButton(0.1, 0.2, 0.04, 0.04 * aspectRatio, IMG_Orange)
    MainGUI[1].SetCallback(MB_Left, function GUITest1)
        
    MainGUI[2].AddLabel(0.6, 0.7, 0.04, 0.04 * aspectRatio, "RenderEdge", 0xff09ff00)
    MainGUI[2].SetCallback(MB_Left, function GUITest2)
}
Вид из игры:
13

» WarCraft 3 / заменить u000 на ugho?

Nickol, а зачем?
А, я не так понял... Изменить равкод юнита нельзя, но можно сделать следующим образом: копируешь юнита с равкодом 'h000' и вставляешь нового с равкодом 'ugho', а старого юнита удаляешь.
В итоге все данные сохранятся.
13

» WarCraft 3 / заменить u000 на ugho?

Nickol, то есть тебе надо скопировать стандартного юнита, но так, чтобы у него был такой равкод, какой ты хочешь? Если да, то выбери юнита, которого нужно дублировать, нажми Ctrl+C, потом Ctrl+V. После этого появится окошко с полем ввода равкода, пиши свой, но только не совпадающий с уже существующим. Это работает только в JNGP.
13

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

alexprey, до завершения основной версии.
Альфа версия будет содержать только отрисовку интерфейса, а полная - улучшение освещения и пост-эффекты.
Андреич, спасибо, очень приятно!
13

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

alexprey, конечно, но я уже писал, что не выложу исходники, до завершения работы над проектом.
А Jass API я делал, опираясь на исходники YDWE.
13

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

Свершилось!
Я буквально только что смог добавить Custom Native! Всё работает идеально!

Но в погоне за красивым и удобным видом рабочего пространства своего проекта, я раскидал весь код по классам. И в итоге проект перестал компилироваться(
Теперь нужно переделать всё так, чтобы не выскакивало ни каких ошибок, и можно будет выкладывать полноценную альфа версию.

И, думаю, что теперь не так обязательно выкладывать первую версию мода (прямо сейчас). Лучше уделить всё время на основную версию RenderEdge, чтобы скорее релизнуть проект.
13

» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)

Судя по всему тот хак на камеру устанавливает хуки на мышь и клавиатуру, а они могут не работать на ХР.
13

» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)

А попробуй на время убрать данный файл из папки с варкрафтом и убрать режим совместимости и права админа у WE. Вдруг, это он все-таки виноват? И можно ли посмотреть скриншот папки с вариком?
13

» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)

Bornikkeny, а у тебя случайно нет в папке с варкрафтом какого-нибудь .mix файла, например, KeyV2.mix (мод Александра)? Я совсем забыл, что именно из-за него начинает вылетать WE.
13

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

darkowlom, о сетевой игре я пока не думал, в основном мод рассчитан на одиночные карты. Запускать карты, где используется объявление кастомных нативок, всё ещё не получится без использования мода, но это происходит из-за особенности самого варкрафта.
А, чтобы играть по сети с новыми интерфейсом, всем участникам сетевой игры придётся запускать карту через специальный лончер. Если в карте не используются функции отрисовки пользовательского интерфейса, никаких проблем не будет.
13

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

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

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

darkowlom, потому, что я решил не выкладывать какие-либо демонстрации до релиза. А релиз состоится, как только я смогу реализовать поддержку custom natives.
13

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

philosoph
вы ещё какую то игру делаете?
Уже 6 лет (но только у себя в голове). Очень давно хотел сделать rpg карту для варкрафта с крутым сюжетом и управлением на стрелочках :) Со временем понял, что всё, что я задумал реализовать невозможно и решил сделать игру на Unity3d, даже забросил варкрафт (правда только на две недели), но
у меня уже столько сделано в варкрафте...
А дальше я наткнулся на мод Nirvana для варкрафта, где автор реализовал Normal Mapping, Shadow Volumes и различные пост процессы. И я решил продолжить его дело.
За эти годы скопилось достаточно идей для хорошей rpg игры, каждую из которых я тщательно продумывал, надеюсь, что получится что-то очень интересное.
Если интересно, то у меня в планах игра по вселенной "Трое из Леса" Юрия Никитина.

я выложу последнюю версию в течение этой недели
Даже не знаю, успею ли доделать, просто вообще времени не хватает, а завтра ещё и в другой город на день уезжаю.
Сразу предупрежу, что я собираюсь выложить не ту версию, за которую я взялся недавно (комментарий 170), а самую первую с PBS и использованием .obj моделей. Она будет не особо интересна тем, кто хочет её как-либо настроить для своего проекта, это просто демонстрация того, на что способен WarCraft.