Андреич, да не совсем, я сейчас как раз пробую это сделать. Например, так добавляю новую кнопку, при нажатии на которую, происходит то же самое, что и при нажатии на стандартную кнопку атаки.
А миникарту и портрет юнитов можно оставить стандартными, но с возможностью их переместить, изменить размер, либо полностью скрыть.
Скрыть стандартный интерфейс можно средствами d3d, так как, если сделать это функциям варкрафта, то попадет возможность использовать ForceKey(...). Осталось реализовать возможность отключать передачу информации о нажатиях кнопок мыши в варкрафт.
Можно, используй функцию GetOrderedUnit(). При событии "Юнит отдал приказ (цель-объект)", она вернёт юнита, которому отдали приказ на строительство. Нужно будет ещё добавить проверку на id приказа, чтобы понять, что это именно приказ на строительство.
Андреич, GF RaiseD, намного легче сделать интерфейс с нуля, и такая возможность уже есть. Например, можно полностью скрыть стандартный интерфейс и/или выключить его через EnableInterface(...) и рисовать новый, при этом назначая кнопкам действия, которые были назначены на стандартные. Таким способом можно запросто воссоздать стандартную область с предметами, а также с приказами и способностями, благо существуют jass функции, которые позволяют выполнять те же действия, что и кнопки стандартного GUI.
darkowlom, как я понял, у тебя всё получается? И ребята, как решите проблему, запостите наработку на сайте. Больно интересно выглядит динамическая смена дня и ночи.
Дело в том, что актуальный билд работает нестабильно: при разворачивании игры из свернутого состояния, игра наглухо зависает, помогает только завершение процесса из диспетчера задач.
darkowlom, нет, это было только в первой версии RenderEdge, её я тоже продолжу развивать, но позже.
Избавился от функций создания текстур. Теперь за это отвечает улучшенный алгоритм, позволяющий предотвратить повторное создание одних и тех же текстур, заключённый в функциях GUISetTexture(int id, string filename) и GUISetColor(int id, int argb).
Осталось собрать проект с нуля, без графических улучшений и AntTweakBar, и с максимальной оптимизацией.
alexprey, от передачи id текстур я уже отказался, до релиза я ещё обязательно пересмотрю структуру GUI системы, и, возможно, откажусь от передачи id элемента, но, скорее всего - нет. Так как при таком подходе могут возникнуть некоторые проблемы, например, если пользователь забудет приравнять значение, возвращаемое функцией GUICreateInstance(...) к переменной, то в дальнейшем будет невозможно получить доступ к данному элементу GUI.
Обновил функцию GUICreateTextureFromFile(...): реализовал загрузку текстур, импортированных в карту, и их поиск в стандартных архивах варкрафта (war3.mpq, war3x.mpq). На данный момент поддерживаемые форматы текстур - .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, и .tga. Осталось добавить поддержку .blp, что не составит особого труда.
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 архивах и в памяти варкрафта:
Nickol, а зачем?
А, я не так понял... Изменить равкод юнита нельзя, но можно сделать следующим образом: копируешь юнита с равкодом 'h000' и вставляешь нового с равкодом 'ugho', а старого юнита удаляешь.
В итоге все данные сохранятся.
Nickol, то есть тебе надо скопировать стандартного юнита, но так, чтобы у него был такой равкод, какой ты хочешь? Если да, то выбери юнита, которого нужно дублировать, нажми Ctrl+C, потом Ctrl+V. После этого появится окошко с полем ввода равкода, пиши свой, но только не совпадающий с уже существующим. Это работает только в JNGP.
alexprey, до завершения основной версии.
Альфа версия будет содержать только отрисовку интерфейса, а полная - улучшение освещения и пост-эффекты. Андреич, спасибо, очень приятно!
Свершилось! Я буквально только что смог добавить Custom Native! Всё работает идеально!
Но в погоне за красивым и удобным видом рабочего пространства своего проекта, я раскидал весь код по классам. И в итоге проект перестал компилироваться(
Теперь нужно переделать всё так, чтобы не выскакивало ни каких ошибок, и можно будет выкладывать полноценную альфа версию.
И, думаю, что теперь не так обязательно выкладывать первую версию мода (прямо сейчас). Лучше уделить всё время на основную версию RenderEdge, чтобы скорее релизнуть проект.
А попробуй на время убрать данный файл из папки с варкрафтом и убрать режим совместимости и права админа у WE. Вдруг, это он все-таки виноват? И можно ли посмотреть скриншот папки с вариком?
Bornikkeny, а у тебя случайно нет в папке с варкрафтом какого-нибудь .mix файла, например, KeyV2.mix (мод Александра)? Я совсем забыл, что именно из-за него начинает вылетать WE.
darkowlom, о сетевой игре я пока не думал, в основном мод рассчитан на одиночные карты. Запускать карты, где используется объявление кастомных нативок, всё ещё не получится без использования мода, но это происходит из-за особенности самого варкрафта.
А, чтобы играть по сети с новыми интерфейсом, всем участникам сетевой игры придётся запускать карту через специальный лончер. Если в карте не используются функции отрисовки пользовательского интерфейса, никаких проблем не будет.
darkowlom, нет, без кастомных нативок никак не обойтись при работе с интерфейсом. Можно, конечно, но, думаю, что не многие решатся писать плагины для моего мода на c++, да и саму систему плагинов как-то не хочется писать, к тому же я не хочу, чтобы мод состоял из большого количества файлов.
darkowlom, потому, что я решил не выкладывать какие-либо демонстрации до релиза. А релиз состоится, как только я смогу реализовать поддержку custom natives.
Уже 6 лет (но только у себя в голове). Очень давно хотел сделать rpg карту для варкрафта с крутым сюжетом и управлением на стрелочках :) Со временем понял, что всё, что я задумал реализовать невозможно и решил сделать игру на Unity3d, даже забросил варкрафт (правда только на две недели), но
у меня уже столько сделано в варкрафте...
А дальше я наткнулся на мод Nirvana для варкрафта, где автор реализовал Normal Mapping, Shadow Volumes и различные пост процессы. И я решил продолжить его дело.
За эти годы скопилось достаточно идей для хорошей rpg игры, каждую из которых я тщательно продумывал, надеюсь, что получится что-то очень интересное.
Если интересно, то у меня в планах игра по вселенной "Трое из Леса" Юрия Никитина.
Даже не знаю, успею ли доделать, просто вообще времени не хватает, а завтра ещё и в другой город на день уезжаю.
Сразу предупрежу, что я собираюсь выложить не ту версию, за которую я взялся недавно (комментарий 170), а самую первую с PBS и использованием .obj моделей. Она будет не особо интересна тем, кто хочет её как-либо настроить для своего проекта, это просто демонстрация того, на что способен WarCraft.
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» WarCraft 3 / Как выбрать работника, строящего здание
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» WarCraft 3 / Поврежденная модель глобального освещения
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
» WarCraft 3 / "Exprotect"
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
На данный момент готовы следующие Custom Natives:
Ред. ENAleksey
» WarCraft 3 / заменить u000 на ugho?
А, я не так понял... Изменить равкод юнита нельзя, но можно сделать следующим образом: копируешь юнита с равкодом 'h000' и вставляешь нового с равкодом 'ugho', а старого юнита удаляешь.
В итоге все данные сохранятся.
» WarCraft 3 / заменить u000 на ugho?
» RenderEdge / [RenderEdge] Экспериментальная версия
Альфа версия будет содержать только отрисовку интерфейса, а полная - улучшение освещения и пост-эффекты.
Андреич, спасибо, очень приятно!
» RenderEdge / [RenderEdge] Экспериментальная версия
А Jass API я делал, опираясь на исходники YDWE.
» RenderEdge / [RenderEdge] Экспериментальная версия
Я буквально только что смог добавить Custom Native! Всё работает идеально!
Теперь нужно переделать всё так, чтобы не выскакивало ни каких ошибок, и можно будет выкладывать полноценную альфа версию.
» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)
» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)
» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
А, чтобы играть по сети с новыми интерфейсом, всем участникам сетевой игры придётся запускать карту через специальный лончер. Если в карте не используются функции отрисовки пользовательского интерфейса, никаких проблем не будет.
Ред. ENAleksey
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
» RenderEdge / [RenderEdge] Экспериментальная версия
ENAleksey:
Сразу предупрежу, что я собираюсь выложить не ту версию, за которую я взялся недавно (комментарий 170), а самую первую с PBS и использованием .obj моделей. Она будет не особо интересна тем, кто хочет её как-либо настроить для своего проекта, это просто демонстрация того, на что способен WarCraft.
» WarCraft 3 / Как изменить модель рельефа?
» WarCraft 3 / Прекращена работа программы worldedit121.exe (JNGP)
Только это на ум приходит.