Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
ITU, дело в том что я делал так, если число четное тогда такой конец, если не четное тогда другой конец, и так же с повышением или понижением стадии. Они могли так же сделать. Просто нет возможности посмотреть.
Команда "Rizys-mod" - разработка плагинов на Fallout.
Изменение репутации для пользователя ITU
ITUOffline
Сообщение №902
написано: 24 января 2013, 14:14
| Отредактировано: ITU - 23 января 2013, 12:09
Добавлено (24.01.2013, 18:14) --------------------------------------------- и еще вопросик, компаньоны все бессмертные не в хард игре как их сделать смертными? попробовал что-то вроде такого
Может кто объяснить как добавлять скриптами вещи, перки и тд. с модов?, прописываю ID потом кол-во но вылазит ошибка и скрипт не сохранятся, проверял, стандартные игровые шмотки спокойно появляются..
Может кто объяснить как добавлять скриптами вещи, перки и тд. с модов?, прописываю ID потом кол-во но вылазит ошибка и скрипт не сохранятся, проверял, стандартные игровые шмотки спокойно появляются..
В Обливионе меня часто спасало введение ID в кавычках. Это работало, если ID начиналось с цифры, например. В фоллаутах у меня все спокойно вводится, скрипты сохраняются, проблемы не было. Правда, я с цифр ничего не называю.
Имею несколько вопросов: 1) Есть функция AddFormToFormList, которая добавляет предмет в форм-лист. Используется вот так: AddFormToFormList AmmoList762x39 RSAmmo76239AP. Есть ли аналогичная функция, но для удаления? Гуглил, нашёл только: ListRemoveForm. Использовал так: ListRemoveForm AmmoListRS76239 RSAmmo76239V. Но после этого произошли - весёлые артефакты. Оружие, использующее такой форм-лист боеприпасов, позволило в пип-бое выбрать для себя любой из имеющихся боеприпасов и даже стреляло этим боеприпасом. 2) Есть ли функция добавления элементов одного форм-листа в другой? 3) Есть ли аналог функции AddItemToLeveledList, но для удаления? Хочу удалить предмет из списка торговца, который был добавлен туда другим скриптом. Скрипт-то можно поменять, но я хочу предусмотреть возможность установки поверх уже прогнанного скрипта.
--------------------------------------------------------------------------------(добавил в 17.47)-------------------------- В общем пока я накатал вот такого жуткого Франкенштейна:
Код
scn QuestAddFLScript
int calibrIdx ref refForm
begin gamemode if (AddFL == 0) Set AddFL to 1 ;----------------------Add_ClaiberX_to_EarJR_(762x39)---------------------- set calibrIdx to 0 set refForm to ListGetNthForm AmmoList762x39 0 ListReplaceForm AmmoListRS76239 refForm RSAmmo76239V set calibrIdx to calibrIdx+1 Label 1 if (((ListGetCount AmmoList762x39) - calibrIdx) >= 0) set refForm to ListGetNthForm AmmoList762x39 calibrIdx ListAddForm AmmoListRS76239 refForm set calibrIdx to calibrIdx+1 GoTo 1 endif ;----------------------Add_EarJR_to_ClaiberX_(762x39)---------------------- ListAddForm AmmoList762x39 RSAmmo76239AP ListAddForm AmmoList762x39 RSAmmo76239T ;--------------------------------------------------------------------------
;----------------------Add_ClaiberX_to_EarJR_(762x54)---------------------- set calibrIdx to 0 set refForm to ListGetNthForm AmmoList762R 0 ListReplaceForm AmmoListRS76254 refForm RSAmmo762x54R set calibrIdx to calibrIdx+1 Label 2 if (((ListGetCount AmmoList762R) - calibrIdx) >= 0) set refForm to ListGetNthForm AmmoList762R calibrIdx ListAddForm AmmoListRS76254 refForm set calibrIdx to calibrIdx+1 GoTo 2 endif ;----------------------Add_EarJR_to_ClaiberX_(762x54)---------------------- ListAddForm AmmoList762R RSAmmo762x54RAP ListAddForm AmmoList762R RSAmmo762x54RT ;--------------------------------------------------------------------------
;----------------------Add_ClaiberX_to_EarJR_(416Bar)---------------------- set calibrIdx to 0 set refForm to ListGetNthForm AmmoList416Barrett 0 ListReplaceForm AmmoListRS416Barret refForm RSAmmo416Barret set calibrIdx to calibrIdx+1 Label 3 if (((ListGetCount AmmoList416Barrett) - calibrIdx) >= 0) set refForm to ListGetNthForm AmmoList416Barrett calibrIdx ListAddForm AmmoListRS416Barret refForm set calibrIdx to calibrIdx+1 GoTo 3 endif ;----------------------Add_EarJR_to_ClaiberX_(416Bar)---------------------- ListAddForm AmmoList416Barrett RSAmmo416BarretArmorPiercing ;--------------------------------------------------------------------------
;----------------------Add_ClaiberX_to_EarJR_(Ammo9x39)-------------------- set calibrIdx to 0 set refForm to ListGetNthForm AmmoList9x39 0 ListReplaceForm AmmoListRS939 refForm RSAmmoSp5 set calibrIdx to calibrIdx+1 set refForm to ListGetNthForm AmmoList9x39 1 ListReplaceForm AmmoListRS939 refForm RSAmmoSp6 set calibrIdx to calibrIdx+1 Label 4 if (((ListGetCount AmmoList9x39) - calibrIdx) >= 0) set refForm to ListGetNthForm AmmoList9x39 calibrIdx ListAddForm AmmoListRS939 refForm set calibrIdx to calibrIdx+1 GoTo 4 endif ;----------------------Add_EarJR_to_ClaiberX_(Ammo9x39)--------------------
В смысле проверять, если уже есть объект в форм листе, то не добавлять? Или что? Я может жутко туплю, но пиши как-то более подробно. "А то моя твоя плохо мысль ловить."
И ещё. Может я криворукий ил как-то так, но если из форм-листа удалить что-то, а не реплейснуть, то артефакт с патронами (описан выше) проявляется 100%. Так что вместо удаления приходится реплейсить на уже имеющийся в листе объект.
(1.11.12) Все мы будем счастливы! Когда-нибудь... (26.08.13) Вот и моя очередь наступила. ;) (19.11.13) А нет... Опять граблями по лбу...
Народ, мне нужен скрипт наподобие: "Если использовать предмет Х, то с вероятностью 3% игроку будет выдан предмет Y и удален предмет X, в противном случае произойдет только удаление того самого предмета X". Что-то наподобие лотерейного билета. Если подскажете, награжу репутацией и наградой. Попробовал расковырять скрипт "Сансет саспариллы", но не получил желаемого результата.
Есть ли аналог CastImmediateOnSelf, который сам воспроизводит соответствующий звук ingestible?
Добавлено (17.03.2013, 03:31) --------------------------------------------- При использовании функций forceAV health и damageAV health временами хп перестает подниматься выше определенного уровня. Лечится ресурректом. Можно как-то обойти?
Ну вполне возможно сия переменная ещё откель устанавливается. Затем проверяется и ещё чего делается.
За сим прощаюсь, Олег.
Мне бы хоть ненадолго, в любое время, кроме 90-х. Чтобы конфета была с ладошку, чтобы, упав с велосипеда, коленку разбить, чтобы на первое свидание сходить...
Допустим у меня на данный момент игры у ГГ параметры СПЕШИАЛ ровно по девять очков. Значит мне будет предложено перераспределить 63 очка. Но ведь максимальное количество очков СПЕШИАЛ - это всего 10. А у меня уже по 9. То есть - я смогу добавить в каждый параметр по одному очку и у меня останется не распределенными еще 56 очков. И поскольку останутся нераспределенные очки - книжка не закроется и я не смогу выйти в игровой режим. Верно или нет?
Если у Вас имеется 63 очка, то именно их Вам и удастся ПЕРЕРАСПРЕДЕЛИТЬ. Т.е., если где-то сделать 10, то где-то придется ставить 8, лишних быть не должно. Вроде так.
====================== Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294 Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №928
написано: 1 апреля 2013, 18:01
| Отредактировано: Joopeeter - 1 апреля 2013, 18:13
Это если у меня все параметры СПЕШИАЛ по нулям. Тогда я распределю. Но ведь у меня параметры уже по 9 очков. Куда я смогу раскидать эти 63?
63 - это будет всего. То есть, например, 7 по 9, или 6 по 10 и последний 3. В Фоллаут 3 в том единственном месте, где используется эта функция, стоит 40 очков (по 5 базовых, которые у игрока в самом-самом начале и 5 на распределение). Сейчас вызвал в третьем Фоллауте с консоли - всё пучком, базовые - те, что имеются на данный момент, на распределение остаётся разность между суммой имеющихся и числом, указанным в качестве параметра функции. Всё работало, не вылетало.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №929
написано: 1 апреля 2013, 18:47
| Отредактировано: Joopeeter - 1 апреля 2013, 19:11
Нет, это я просто зашёл в игру и тупо ввёл с консоли ssbmp 63. Про менюмоды-гейммоды - это всего лишь предположение, просто странно этот MenuMode 1001 выглядит в таком контексте.
Ха! Вылетает при попытке указать после ssbmp число меньшее, чем сумма уже имеющихся очков. Не были ли какие-то параметры SPECIAL временно изменены в момент вызова функции (радиация, бодун, страхолюдный шлем Анклава)?
Если подтвердится, то вместо GetActorValue следует использовать GetBaseActorValue. Да и в любом случае лучше, по-моему.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №930
написано: 1 апреля 2013, 19:43
| Отредактировано: Joopeeter - 1 апреля 2013, 19:49
Ага, значит игре не нравится не только когда меньше, но и любое несоответствие базового значения и фактического. Впрочем, оно и понятно: книжка-то показывается младенцу, который ещё без каких-либо эффектов на нём. Тогда, боюсь, и GetBaseAV может не помочь.
Кстати, после получения суммы базовых значений можно сбросить все SPECIAL до единицы и показать не книжку, а меню AddSPECIALPoints, где указать количество распределяемых очков [сумма - 7].