IPB

Здравствуйте Гость ( Вход | Регистрация )

 
Reply to this topicStart new topicStart Poll

Каскадный · [ Стандартный ] · Линейный

> Функция AddUnitToServer, Которая AddNotOnlyHumanOrOrcOnServer

VeryGoodGirl
post Среда, 05 Февраля 2020, 18:38
Отправлено #1


Infantry
Group Icon

Группа: Members
Сообщений: 38
Регистрация: 4-Фев-20
Пользователь №: 6,587



Всем, кто когда-то пытался добавить моба на карту, наверняка известно, что добавить его можно 3-мя способами:
1. Почистить прогресс через функции GSS*
2. Через функцию AddMob("*"), которая добавит моб с некоторым количеством новых юнитов. К тому же, многократное использование одного и того же моба решается дополнительными пробелами.
3. Через функцию AddUnitToServer. Никто так и не использовал её...

На самом деле, добавление юнитов функцией AddUnitToServer - очень интересно и гибко.
Людей и орков добавлять можно полноценно, и для массовых баталий около крепостей AddUnitToServer подходит больше всего. Например, чтобы по несколько штук выпускать из зданий воинов или создавать длинные нашествия и осады. Mob-файл мог бы вырости до мегабайта от такого количества юнитов, всех их нужно было бы держать под землёй и поднимать по одному.
Это ещё не страшно, но что если мобы должны добавляться постоянно, например, в сингле? А игрок захочет бить только мобов одного типа... Так и диска не хватит biggrin.gif

AddUnitToServer добавляет текстурированными на карту юнитов с расой типа 50. Такую имеют люди и орки.
Затем стоит сбросить поведение юнита с помощью UMClear и установить нужное с помощью команд UM*.
Навыки (атака, защита...) даются юниту командой GiveSkill, размеры прописываются в database.res (databaselmp.res для мульти)

Команда ResetTarget на добавленного юнита вешает игру.

Чтобы текстура могла отобразиться на добавленном юните, необходимо пересохранить её в формате ARGB (уже не помню какой точно, но суть в том, что игра не использует сжатые форматы из textures.res для добавляемых на карту юнитов, а лишь ARGB текстуры из redress.res). Это такой же формат, как для оружия, персов, доспехов... То есть, это и есть текстуры персов, только немного другой расы.

Новым текстурам можно дать для удобства имя, например, аналогичное человеческим - unmotoskin_00, unanwitiskin_01...

Номер текстуры добавляемого на карту юнита задаётся в базе, аналогично сингловым главным героям и мультиплеерным персам.

Соответственно в database.res вместо старых названий нужно проставить новые без имени модели
Для тигра:
Модель - unanwiti, Текстура - unanwitiskin_00, unanwitiskin_01, в базу вписать Skin_00, Skin_01 вместо Tiger00, Tiger01

Аналогично можно подменить свою партию в игре и нагибать текстурированным монстром

Единственный минус такого способа - небольшая несовместимость в анимациях у типов рас. Юниты, добавленные скриптом AddUnitToServer могут ходить на месте когда останавливаются, а при первом добавлении могут вообще не воспроизводить анимации. Этот недостаток распространяется только (!) на анимацию отдыха. Вечно ходящий\воюющий юнит не будет уличён в забагованности.

Возможно, патчится исправлением имён в *.anm и *.adb...

Чтобы AddUnitToServer на карту добавляла юнитов с русскоязычным именем, стоит имя юнита из database.res записать как NPC в texts.res, и там дать ему нужное имя.
То есть, можно добавить на карту 3 WolfTutor с именами Wolf01, Wolf02, Wolf03, и если в texts.res будут файлы Wolf01, Wolf02, Wolf03, с текстом внутри, то он будет отображаться в инфоокне волчат (кстати, Wolf01, Wolf02, Wolf03 - те самые имена, используемые функцией GetObjectByName - именно так стоит обращаться к добавленным юнитам).

Вызов AddUnitToServer - из консоли как пример @AddUnitToServer("NPCNotNPC00001", "WolfTutor", "", GetX(GetLeader()), GetY(GetLeader()), 0)

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

Сообщение отредактировал VeryGoodGirl - Среда, 05 Февраля 2020, 22:36
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VeryGoodGirl
post Среда, 05 Февраля 2020, 23:08
Отправлено #2


Infantry
Group Icon

Группа: Members
Сообщений: 38
Регистрация: 4-Фев-20
Пользователь №: 6,587



Насчёт 1 способа - в сингле такое применяется, только потом проблематично зайти на зоны - их как бы уже нет (хотя точно не помню).
Насчёт 3 способа - если кто-то всё же использовал, было бы интересно посмотреть на конкретную реализацию...

Добавил: VeryGoodGirl
Для 2-го:
Вместо UMClear можно попробовать UMStandard, а затем команды, например, для патруля или защиты точки. UMClear/UMStandard - юнит не будет тупить, будет сражаться, защищать союзников и т. д...
С добавленного через AddUnitToServer юнита будет сыпаться весь одетый на него шмот (точно как с убитого напарника ака наёмника).

Сообщение отредактировал VeryGoodGirl - Среда, 05 Февраля 2020, 22:53
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VeryGoodGirl
post Среда, 05 Февраля 2020, 23:50
Отправлено #3


Infantry
Group Icon

Группа: Members
Сообщений: 38
Регистрация: 4-Фев-20
Пользователь №: 6,587



Добавлять людей и орков можно совершенно спокойно
Денежный баланс можно отрегулировать, если на них одевать дешёвые версии доспехов и оружия

Не орков и не людей можно добавлять спокойно, если они смертники - то есть появляются - идут в бой - умирают, тогда их баг не будет замечен
В любом случае юнит без текстуры выглядит куда хуже, чем шагающий на месте моб

Вообще обидно, что многие части базы совсем не используются...
А некоторые просто висят "константами", из-за того что другой функционал был не до конца доработан разработчиками...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VeryGoodGirl
post Четверг, 06 Февраля 2020, 19:07
Отправлено #4


Infantry
Group Icon

Группа: Members
Сообщений: 38
Регистрация: 4-Фев-20
Пользователь №: 6,587



Ещё есть неудобный способ добавлять орков и людей с оружием и доспехами, с которых они не будут падать
Для этого нужно распаковать *.anm, *.bon, *.mod файлы и переименовать файлы моделей оружия и доспехов сменив их групу

В *.fig файлах, составляющих *.mod файл, прописана група по смещению 36 байт. Група эта обозначает, какую текстуру на самом деле использовать. Видимо, тогда разработчики ещё не ввели расширений к моделям, или решили их использовать строго для экипировки (есть ещё невидимые куски модели, не тело и не экипировка, которые не имеют расширения).

Группа 1 - первичные модели, используют текстуру перса
Группа 2 - вторичные модели, используют свою текстуру

В ПЗ если создать 2-х мобов:

Ящер имеет внутри *.mod rh3.trident - вилы, и на всего-всего ящера одна текстура
Человек имеет внутри кучу оружия и доспехов, например, rh3.pike00 - копьё

Копьё не создастся вместе с персом лишь потому что у его *.fig 2-я группа.

Сообщение отредактировал VeryGoodGirl - Четверг, 06 Февраля 2020, 22:33
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
VeryGoodGirl
post Пятница, 07 Февраля 2020, 19:45
Отправлено #5


Infantry
Group Icon

Группа: Members
Сообщений: 38
Регистрация: 4-Фев-20
Пользователь №: 6,587



Epic Win

Сообщение отредактировал VeryGoodGirl - Пятница, 07 Февраля 2020, 19:45

Присоединённые эскизы
Присоединённое изображение Присоединённое изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
AstraZak
post Пятница, 07 Февраля 2020, 22:13
Отправлено #6


Knight
Group Icon

Группа: Members
Сообщений: 108
Регистрация: 13-Янв-08
Пользователь №: 5,165



Секси пузяка.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicTopic OptionsStart new topic
2 чел. читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: 26 Февраля 2020 - 10:38