Если вы считаете себя фанатом Neverwinter Nights и имеете навыки работы с NWN Toolset, то мы приглашаем вас к участию в разработке нашего проекта. Заявки отправляйте по адресу: admin@NWNights.ru
Можно ли как - нибудь добавить миниган в аммунацию? Что нужно прописывать в main.scm. Если кто знает, растолкуйте всё по порядку, какая строка отвечает за вкладку (гранаты, винтовки и т.д.).
А так собирать не судьба? В игре три постоянных места спавна пулемета, еще одно появляется после прохождения заданий Торино и одно внутри военной базы, в которую можно попасть только по заданию. Насобирать много патронов за пол часа легко. К чему эти махинации? Ох уже это поколение. Совсем обленились все.
Дело в том, что я хочу научиться прописывать оружие в магазин, для того, чтобы потом прописывать новое оружие в магазин. А добавление минигана может быть отличным примером.
Dyabda
Видал на каком-то видосе миниган в аммунации стоимостью 10 К. Добавить миниган в аммунацию без вылетов, наверно, не получится, а попробовать заменить строчку с другим оружием на строчку с миниганом может сработать. По идее, все доступное для покупки оружие находится в файле shopping.dat, в нем хранятся цены оружия, количество покупаемых патронов; тут могут быть строчки с тяжелым оружием, в том числе и с миниганом, но они не используются в игре. Главное сделай копию этого файла, в случае, если будешь пытаться заменить какую-нибудь пушку на миниган. Насчет результата не знаю, я не пробовал заменять строчки, пробовал только менять количество патронов.
GeimeR1000000000X
1. Дайте пожалуйста ссылку на видео.
2. Вылеты будут наврятли, я играл уже на сборке, в которой добавляется миниган, он прописан там в main.scm, но ковырять его - это слишком муторно и в 100 раз лучше попросить помощи, ибо в том main.scm очень и очень много модов напихали.
3. В файле shopping.dat указываются цены и патроны, в main.scm прописывается оружие для покупки в аммунации, но там надо использовать код, который я как раз и ищу.
4. Насчёт замены, опять надо ковыряться в main.scm, проблема в том что я не знаю нужного кода, который надо заменять.
Ссылку и название видео не знаю, наткнулся по случайности пару лет назад, когда не шарил в интернете. В main.scm не лазил, поэтому не представляю, как там все закодировано. Но если так хочется добавить, то придется потрудиться, инструкции, похоже, мало кто знает.
К счастью, мне уже дали код, правда я не пойму, что там за что отвечает. Вот ссылка кому интересно: pastebin.com/zjVNzqcn
Чтобы код работал, нужно создать текстовый документ, вставить в него весь код, а после скомпилировать. После этого у нас получится Main.scm и script.img, их перенести в папку Data\Script.
Итак, пришло время расширить ассортимент Aмму-Hации. Скрипт я нашёл на gtaforums.com, спасибо ZAZ, он переделал оригинал в более удобоваримый вид под очищенный main.scm + я кое-что улучшил сам. К сожалению, тут есть запрещённые слова: CA5INO, поэтому вот ссылка.
Разберём основные моменты.
:AMUNAT
…
thread 'AMUNAT'
Объявляем-обнуляем все требуемые переменные, загружаем модель продавца.
Записываем нужные значения в переменные, которые отвечают за положение маркера, продавца, игрока и углы их поворота (всего пять разных магазинов).
$AMMU_SELLER = Actor.Create
…
060B: set_actor
Создаём продавца.
Сразу после этого, вплоть до :AMUNAT_2226, условия для постепенного открытия новых пушек по мере прохождения сюжета.
В метке AMUNAT_2282 прописана анимация для продавца, как он стоит за прилавком.
:AMUNAT_2395
…
jump @AMUNAT_2789
Здесь прописано поведение торгаша, если его атакует игрок.
:AMUNAT_3056
…
:AMUNAT_3336
Тут прописано, что будет, если встать на маркер: отключается радар, камера встаёт на прилавок.
Теперь самое интересное.
:AMUNAT_4525
…
:AMUNAT_4850
Здесь мы получаем (или задаём сами) в зависимости от выбранной строчки информацию об оружии: название (s$AMMU_WEAPON_NAME), цена ($AMMU_WEAPON_COST), группа ($AMMU_SELECTED_WEAPON_WEAPON_GROUP) – нужна для того, чтобы предупредить игрока о замене, и ID модели ($AMMU_SELECTED_WEAPON_MODEL).
Инфу скрипт получает из shopping.dat, если там оружие не прописано, тогда оно будет выдаваться бесплатно. Поэтому есть два пути: либо прописать там, либо тут. Вот пример последнего:
if
04A3: $AMMU_SELECTED_WEAPON == 38 // номер оружия (не путать с ID модели)
jf @AMUNAT_4785
05A9: s$AMMU_WEAPON_NAME = 'MINIGU' // ссылка на запись в gxt (название)
$AMMU_WEAPON_COST = 2200 // цена
$AMMU_SELECTED_WEAPON_WEAPON_GROUP = 8 // группа
$AMMU_SELECTED_WEAPON_MODEL = 362 // ID модели
jump @AMUNAT_4850
:AMUNAT_4882
…
:AMUNAT_5097
Здесь задаётся анимация, типа продавец лезет под прилавок за товаром.
Далее загружаем модель из полученного ранее ID, создаём её и цепляем к рукам продавца.
В метке AMUNAT_5623 прописано как раз то самое предупреждение о замене.
Потом анимация, типа продавец достаёт из-под прилавка товар.
:AMUNAT_6655
…
:AMUNAT_7223
Тут куча проверок: сколько патронов, денег и брони – дабы не превысить лимит.
Дальше идёт создание меню торговли.
:AMUNAT_9050
…
:AMUNAT_9840
Здесь для каждого оружия задаётся своя анимация, как его продавец достаёт и держит потом.
:AMUNAT_9842
…
:AMUNAT_10284
Ну а здесь задаётся анимация, как его продавец убирает обратно.
Эти две анимации можно не задавать, игра у меня не вылетела, но был такой глюк:
С метки AMUNAT_10286 по сути начинается заполнение меню торговли. И я честно пытался добавить в уже имеющуюся категорию новый пункт, но ничего не вышло. Возможно, это даже невозможно, вот так.
И где-то после последней категории ('GUN8') можно добавить свою:
:AMUNAT_11210
$9661 = 35 // номер нового оружия
$9662 = 36 // номер нового оружия
$9663 = 37 // номер нового оружия
$9664 = 38 // номер нового оружия
$9606 = 3
05A9: $2450($9616,12s) = 'GYM1_1' // название категории – запись в gxt
$9616 += 1
$9615 = 1
$9597 += 1
0084: $2515 = $9616
:AMUNAT_11366
…
:AMUNAT_11766
Здесь выводится помощь и заголовок меню, видимо для каждой точки сбыта задумывалось своё уникальное имя.
:AMUNAT_11768
…
:AMUNAT_13162
Последняя часть – заполнение категорий.
:AMUNAT_12461 // начало оригинального куска
if
05AD: s$9549 == 'GUN8'
jf @AMUNAT_12559 // тут прыжок на нашу новую категорию
:AMUNAT_12559 // новая категория
if
05AD: s$9549 == 'GYM1_1' // проверка, что игрок выбрал её
jf @AMUNAT_12682
05A9: s$2450[0] = 'ROCKET' // название оружия
05A9: s$2450[1] = 'ROCKHS' // название оружия
05A9: s$2450[2] = 'FLAMET' // название оружия
05A9: s$2450[3] = 'MINIGU' // название оружия
$9633[0] = 35 // номер оружия
$9633[1] = 36 // номер оружия
$9633[2] = 37 // номер оружия
$9633[3] = 38 // номер оружия
$9661 = 4 // количество пунктов, очевидно
jump @AMUNAT_12682
:AMUNAT_12682
0084: $2515 = $9661
Названия оружия, которого нет в продаже и в shopping.dat, из оригинального gxt:
'BASEBAT' — 6eиc6oльнaя 6итa
'CHAINSA' — 6eн3oпилa
'DESERT7' — парашут (хоть это и название миссии, но что мешает использовать его в своих целях?)
'KATANA' — кaтaнa
'KNIFE' — нoж
При компилировании вашего документа в Main.scm, Script.img не создаётся.
Потому что это не Main.scm, а его часть. Вам нужно открыть оригинальный Main.scm (или его исходник), найти в нём скрипт Амму-нации и заменить его целиком.
Вот на всякий случай Script.img, но всё равно нужен Main.scm.
Опытные скриптеры, прошу вашей помощи.
Решил добавить 2-е новые пушки в новый раздел (Там где миниган, огнемёт и т.д.)
С первой пушкой всё хорошо, но со второй проблемы, вместо неё торговец достаёт мне биту, хотя я прописал балончик, в чём заключается проблема?
Исходник брал отсюда: pastebin.com/zjVNzqcn Добавленный код
Заменил строку у минигана
с else_jump @AMUNAT_5025 на else_jump @AMUNAT_4901
Во-первых, группа балончика 10, т.е. $AMMU_SELECTED_WEAPON_WEAPON_GROUP = 10
Во-вторых, он не прописан в своей категории. Наверно, должно быть как-то так: if
05AD: s$9549 == 'GYM1_1' // новая категория
jf @AMUNAT_12682
05A9: s$2450[0] = 'ROCKET'
05A9: s$2450[1] = 'ROCKHS'
05A9: s$2450[2] = 'FLAMET'
05A9: s$2450[3] = 'MINIGU'
05A9: s$2450[4] = 'RUGER'
05A9: s$2450[5] = 'SPRAY'
$9633[0] = 35
$9633[1] = 36
$9633[2] = 37
$9633[3] = 38
$9633[4] = 70
$9638[5]= 41
$9661 = 6
На будущее: лучше выкладывать весь скрипт Амму-нации, а то, как мы видим, номера меток сбиваются, и не совсем понятно, что где.
ILdar07
Спасибо, но к сожалению ничего не изменилось. Если вы хотите сами протестировать, просто добавьте 2 новых любых (Кроме биты) оружия. Мне кажется, тут что-то не так с переходом с метки RUGER`а на метку балончика.
jf @AMUNAT_4725
И ещё, не до конца понял как работают эти группы, я думал что они работают так:
Но в новой категории не предупреждают о замене несмотря на то, что они в одной группе:
Итак, мы научились добавлять в уже имеющиеся категории новое оружие. Точнее, мы не добавляем, а переписываем вручную все пункты. Но обо всём по порядку. Dyabda писал:
в новой категории не предупреждают о замене
Я понял, почему. И убрал из скрипта много лишнего (например, информацию об оружии, которая на самом деле задаётся в других файлах). Всё-таки оружие нужно прописывать в shopping.dat для того, чтобы оно не доставалось игроку бесплатно.
Далее. Интересный момент с шестым пунктом в любой категории. То есть пятый и седьмой (и так далее, я больше восьми не проверял) работают нормально, а вот вместо шестого торгаш упорно суёт нам бейсбольную биту. Чудеса! Может, опять какие-то чёртовы лимиты, не знаю. Я схитрил немножечко, поставил биту в категорию ручного оружия, и этот глюк по сути там незаметен. www.mediafire.com/?s22m22bruyeeu7p
В архиве:
• текстовый fxt для названий нового оружия (по-моему, новый текст в игру добавлять проще через cleo; папку CLEO_TEXT кидать в CLEO)
• исходный main, из которого можно получить main.scm и script.img
• shopping.dat; что с ним делать, думаю понятно.
ILdar07
Ещё раз спасибо за ответ.
Я обнаружил один неприятный баг. Как только я выбираю новое оружие в списке Амму-нации, продавец начинает спускаться к прилавку, после чего он зависает, то есть он не производит следующую анимацию и остаётся в таком положении (См. скриншот).
Нашёл причину проблемы: Вы не прописали для каждого нового оружия следующее -
04A3: $AMMU_SELECTED_WEAPON_MODEL == *ID модели оружия* // == constant
Ещё не понятно, почему торговец достаёт парашют не так как бронежилет, они ведь расположены в одном блоке
04A3: $AMMU_SELECTED_WEAPON_MODEL == 373 // == constant
04A3: $AMMU_SELECTED_WEAPON_MODEL == 371 // == constant
Узнать бы ещё, что там за лимиты и как их взломать, в FLA я ничего подобного найти не смог, а хочется в одну категорию добавить 10 пушек без биты.. Я уже видел мод, в котором каким - то чудом взломали этот лимит и там в одной категории до 6 пушек без биты. Но main.scm данного мода к сожалению защищён.
Так же обнаружил лимит на количество пушек в одной секции - 12, если добавить больше, их просто не будет видно. Можно ли увеличить данный лимит?
Ещё хотелось бы узнать, как правильно добавлять новое оружие в старые категории, просто не совсем понятно что тут:
05A9: s$2450[0] = 'BRASSKN' // s$
05A9: s$2450[1] = 'GOLFCLB' // s$
05A9: s$2450[2] = 'POOLCUE' // s$
05A9: s$2450[3] = 'SHOVEL' // s$
05A9: s$2450[4] = 'CHAINSA' // s$ // e¤œo£¡a
05A9: s$2450[5] = 'BASEBAT' // s$ // ežc˜o¡¬¤a® ˜ta
05A9: s$2450[6] = 'KATANA' // s$ // Kata¤a
05A9: s$2450[7] = 'KNIFE' // s$ // o›
$9633[0] = 1
$9633[1] = 2
$9633[2] = 7
$9633[3] = 6
$9637 = 9
$9638 = 5
$9639 = 8
$9640 = 4
$9661 = 8
Непонятно именно то, почему у одного оружия есть номер [0] [1] [2] и т.д., а у другого нету, и почему цифры разные: 9638, 9639, 9640 и т.д.?
Можно конечно же и самому попробовать, но будет лучше спросить у вас, т.к. у вас уже есть опыт в этом.
И ещё вопрос по поводу Shopping.dat. Для оружий там так же имеются вкладки с припиской "item".
Например: item m4, item ak47 И т.д.
Что это значит и для чего это нужно?
И ещё, можно ли добавить новую категорию в магазин?
почему у одного оружия есть номер [0] [1] [2] и т.д., а у другого нету
Всё просто. Мы указываем по порядку номер оружия в каждом пункте. Первому пункту соответствует переменная $9633, второму – $9634, третьему – $9635 и так далее. Как видим, цифра в скобках просто суммируется к «цифре» самой переменной. И $9637 это то же самое, что и $9633[4], $9638 – это $9633[5]. Просто компилятор меняет некоторые вещи на своё усмотрение. Но самое главное, в игре всё нормально.
почему цифры разные
Это не цифры, а переменные. У каждого пункта в категории должна быть своя переменная со своим оружием, логично?
Что это значит и для чего это нужно?
Возможно, для каждого магазина хотели сделать свой уникальный ассортимент.
У меня создана категория Melee, можете взять её за пример. Во-первых, метка создания: 05A9: $2450($9616,12s) = 'MELEE'
$9616 += 1
$9597 += 1
05A9: $2450($9616,12s) = 'GYM1_1' // для новой категории
$9616 += 1 // для новой категории
$9597 += 1 // для новой категории
0084: $2515 = $9616
Во-вторых, метка заполнения: if
05AD: s$9549 == 'MELEE'
else_jump @AMUNAT_12509 // здесь нужен прыжок на новую категорию
…
:AMUNAT_12509
if
05AD: s$9549 == 'GYM1_1' // проверка, что игрок выбрал эту категорию
else_jump @AMUNAT_12616 // тут прыжок на метку чуть ниже с опкодом 0084: $2515 = $9661, если номер метки отличается, исправьте
05A9: s$2450[0] = 'BRASSKN' // название оружия
$9633[0] = 1 // номер оружия
$9661 = 1 // количество товаров
ILdar07
Спасибо за помощь, но у меня возникла трудность.
В Амму-нации пропал весь текст, просто чёрное меню. Делал всё по примеру.
Название новой категории 'HV_1'
Вот код скрипта www.mediafire.com/file/mwew6u408vh6q84/Script.tx..
ILdar07
Спасибо, всё успешно работает.
Появился вопрос: Как можно создать свою Амму-Нацию, для того чтобы там торговали лишь оружием, прописанным в shooping.dat (item *оружие*). К примеру можно таким образом создать магазин холодного оружия.
Так же, там должны быть лишь новые категории. Если вы знаете как это сделать, пожалуйста напишите.
Заранее благодарен.
Нечто подобное уже реализовывали, мне удалось вскрыть их main.scm и взять оттуда код скрипта Амму-нации.
Но ничего не понятно, они как-то по другому это реализовали. Так же в самом моде я не заметил бага с битой. Если вы сможете разобраться в этом, то ниже будет ссылка на этот код. www.mediafire.com/file/7pgoa358a41mshk/AMUNAT.tx.. www.mediafire.com/file/5ankxa4qwtlraoe/HWARE.txt www.mediafire.com/file/sv0tajxsxdg63u4/shopping...
Первая ссылка - на код Амму-нации
Вторая ссылка - на код, который разработчики модификации прописали для нового магазина холодного оружия (Он действует как и амму-нация, но в нём свои категории)
Третья ссылка - на Shopping.dat от данного мода.
И ещё, за что отвечает данная строка?
08D6: set_panel $2419 column 0 alignment 1
08DB: set_panel $2419 column 0 header 'DUMMY' data s$2450[0] s$2450[1] s$2450[2] s$2450[3] s$2450[4] s$2450[5] s$2450[6] s$2450[7] s$2450[8] s$2450[9] s$2450[10] s$2450[11]
$2420 = 1
ILdar07
Нашёл ещё 1 скрипт Амму-нации уже от другого мода. В нём автор мода добавил в стандартные секции новое оружие, но строки выглядят не так, как у скрипта, который вы писали. Так же в shopping.dat с припиской "item" он добавил каждое добавленное оружие. Данный код чем-то напоминает код выше. www.mediafire.com/?dxnugpj6h6ag1ur
В архиве:
AMUNAT.txt - код скрипта Амму-нации
Shopping.dat
ILdar07
Спасибо, появился ещё вопрос: (Простите за мою любопытность) как можно добавить оружие во вкладку SMG, вы её вроде не переписывали. Пробовал сделать так же как и с другими вкладками, но появились проблемы с меню. Как правильно добавить в эту вкладку новое оружие?
И ещё, пожалуйста разберитесь со скриптами выше, мне там ничего не понятно, а у вас есть опыт и знания. Наверное всем будет интересно узнать, как можно ещё добавлять новое оружие без бага с битой да и вообще создавать свою Амму-Нацию.
Заранее спасибо.
ILdar07
Похоже, вы оказались правы, никому кроме меня не интересно это в данном топике (((.
Жаль что вы не хотите продолжить помощь.
Но всё же, большое спасибо вам за помощь, оказанную ранее.
Спустя столь долгое время я успел изучить скриптинг и я нашёл способ добавить новое оружие в Амму-Нацию, использовав оригинальный код. Если кому-нибудь всё ещё интересна эта тема, то я не против объяснить, как это сделать.
Можно ли как - нибудь добавить миниган в аммунацию? Что нужно прописывать в main.scm. Если кто знает, растолкуйте всё по порядку, какая строка отвечает за вкладку (гранаты, винтовки и т.д.).