Новые сообщения Участники Правила форума Поиск RSS |
|
Форум Unknown Игры Проклятые Земли AddAnyTexturedUnitToServer |
AddAnyTexturedUnitToServer |
Дата: Воскресенье, 13 Сентября 2020, 04:08 | Сообщение # 1
Всем, кто когда-то пытался добавить моба на карту, наверняка известно, что добавить его можно 3-мя способами:<br>
1. Почистить прогресс через функции GSS*<br> 2. Через функцию AddMob("*"), которая добавит моб с некоторым количеством новых юнитов. К тому же, многократное использование одного и того же моба решается дополнительными пробелами.<br> 3. Через функцию AddUnitToServer. Никто так и не использовал её...<br> <br> На самом деле, добавление юнитов функцией AddUnitToServer - очень интересно и гибко.<br> Людей и орков добавлять можно полноценно, и для массовых баталий около крепостей AddUnitToServer подходит больше всего. Например, чтобы по несколько штук выпускать из зданий воинов или создавать длинные нашествия и осады. Mob-файл мог бы вырости до мегабайта от такого количества юнитов, всех их нужно было бы держать под землёй и поднимать по одному.<br> Это ещё не страшно, но что если мобы должны добавляться постоянно, например, в сингле? А игрок захочет бить только мобов одного типа... Так и диска не хватит <br> <br> AddUnitToServer добавляет текстурированными на карту юнитов с расой типа 50. Такую имеют люди и орки.<br> Затем стоит сбросить поведение юнита с помощью UMClear и установить нужное с помощью команд UM*.<br> Навыки (атака, защита...) даются юниту командой GiveSkill, размеры прописываются в database.res (databaselmp.res для мульти)<br> <br> Команда ResetTarget на добавленного юнита вешает игру.<br> <br> Чтобы текстура могла отобразиться на добавленном юните, необходимо пересохранить её в формате ARGB (уже не помню какой точно, но суть в том, что игра не использует сжатые форматы из textures.res для добавляемых на карту юнитов, а лишь ARGB текстуры из redress.res). Это такой же формат, как для оружия, персов, доспехов... То есть, это и есть текстуры персов, только немного другой расы.<br> <br> Новым текстурам можно дать для удобства имя, например, аналогичное человеческим - unmotoskin_00, unanwitiskin_01...<br> <br> Номер текстуры добавляемого на карту юнита задаётся в базе, аналогично сингловым главным героям и мультиплеерным персам.<br> <br> Соответственно в database.res вместо старых названий нужно проставить новые без имени модели<br> Для тигра:<br> Модель - unanwiti, Текстура - unanwitiskin_00, unanwitiskin_01, в базу вписать Skin_00, Skin_01 вместо Tiger00, Tiger01<br> <br> Аналогично можно подменить свою партию в игре и нагибать текстурированным монстром<br> <br> Единственный минус такого способа - небольшая несовместимость в анимациях у типов рас. Юниты, добавленные скриптом AddUnitToServer могут ходить на месте когда останавливаются, а при первом добавлении могут вообще не воспроизводить анимации. Этот недостаток распространяется только (!) на анимацию отдыха. Вечно ходящийвоюющий юнит не будет уличён в забагованности.<br> <br> Возможно, патчится исправлением имён в *.anm и *.adb...<br> <br> Чтобы AddUnitToServer на карту добавляла юнитов с русскоязычным именем, стоит имя юнита из database.res записать как NPC в texts.res, и там дать ему нужное имя.<br> То есть, можно добавить на карту 3 WolfTutor с именами Wolf01, Wolf02, Wolf03, и если в texts.res будут файлы Wolf01, Wolf02, Wolf03, с текстом внутри, то он будет отображаться в инфоокне волчат (кстати, Wolf01, Wolf02, Wolf03 - те самые имена, используемые функцией GetObjectByName - именно так стоит обращаться к добавленным юнитам).<br> <br> Вызов AddUnitToServer - из консоли как пример @AddUnitToServer("NPCNotNPC00001", "WolfTutor", "", GetX(GetLeader()), GetY(GetLeader()), 0)<br> <br> Чтобы юниты друг друга не заменяли, стоит каждый раз давать новое имя новому юниту. Насчёт 1 способа - в сингле такое применяется, только потом проблематично зайти на зоны - их как бы уже нет (хотя точно не помню).<br> Насчёт 3 способа - если кто-то всё же использовал, было бы интересно посмотреть на конкретную реализацию...<br> После UMClear можно попробовать UMStandard, а затем команды, например, для патруля или защиты точки. UMClear + UMStandard - юнит не будет тупить, будет сражаться, защищать союзников и т. д...<br> С добавленного через AddUnitToServer юнита будет сыпаться весь одетый на него шмот (точно как с убитого напарника ака наёмника). Добавлять людей и орков можно совершенно спокойно<br> Денежный баланс можно отрегулировать, если на них одевать дешёвые версии доспехов и оружия<br> <br> Не орков и не людей можно добавлять спокойно, если они смертники - то есть появляются - идут в бой - умирают, тогда их баг не будет замечен<br> В любом случае юнит без текстуры выглядит куда хуже, чем шагающий на месте моб<br> <br> Вообще обидно, что многие части базы совсем не используются...<br> А некоторые просто висят "константами", из-за того что другой функционал был не до конца доработан разработчиками... Ещё есть неудобный способ добавлять орков и людей с оружием и доспехами, с которых они не будут падать<br> Для этого нужно распаковать *.anm, *.bon, *.mod файлы и переименовать файлы моделей оружия и доспехов сменив их групу<br> <br> В *.fig файлах, составляющих *.mod файл, прописана група по смещению 36 байт. Група эта обозначает, какую текстуру на самом деле использовать. Видимо, тогда разработчики ещё не ввели расширений к моделям, или решили их использовать строго для экипировки (есть ещё невидимые куски модели, не тело и не экипировка, которые не имеют расширения).<br> <br> Группа 1 - первичные модели, используют текстуру перса<br> Группа 2 - вторичные модели, используют свою текстуру<br> <br> В ПЗ если создать 2-х мобов:<br> <br> Ящер имеет внутри *.mod rh3.trident - вилы, и на всего-всего ящера одна текстура<br> Человек имеет внутри кучу оружия и доспехов, например, rh3.pike00 - копьё<br> <br> Копьё не создастся вместе с персом лишь потому что у его *.fig 2-я группа. Таким образом модель по умолчанию будет с оружием и доспехами, но этот вариант не рабочий по визуалке - перс будет с натянутой самой своей текстурой на доспехи... В результате вышло пройтись троллем от развалин до Посёлка, ура!!!!! |
| |||
| |||