The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3


Вопросы по скриптам в Fallout 3

Сообщений 61 страница 90 из 418

61

Wulf написал(а):

* ScriptEffectStart - этот блок запускается один раз во время начала кастования заклинания.
    * ScriptEffectUpdate - этот блок будет проигрываться в каждом игровом фрейме в течение действия заклинания.
    * ScriptEffectFinish - этот блок запускается один раз по окончании действия заклинания.

С теорией я полностью ознакомился, и всё это уже знаю. Мне примеров не хватает, чтобы понимать как и где это можно использовать.
Например та же команда для эффекта ScriptEffectUpdate, почему таймер в ней останавливает после выполнения первой функции? По идее то функции в этом блоке должны выполнятся, пока время эффекта  не закончится. Я время поставил на 10 секунд(в Object Effect), а блок почему то заканчивается через 4(см. мой скрипт выше).

Igor_Ra написал(а):

А почему он должен работать, если у тебя скрипт висит на бите?

А где должен? :rolleyes: Бита - это же объект? Я добавляю эту команду для объекта, чтобы она действовала в одном фрейме при соприкосновении с чем нибудь. Или я что то не понимаю?)
Репелент посмотрел, что то там всё замудрёно. Есть какие то то ли переменные, то ли функции, которых в словаре нету.
Например, что это за переменная MS03.MS03b1HitID? Откуда она взялась, если выше её не назначали? И что это за функция: setAv Confidence 4?
Не проще ли было для репелента сделать скрипт, чтобы при соприкосновении у кротокрыса голова взрывалось? Тогда б всё понятно было.

0

62

deepNoise написал(а):

И что это за функция: setAv Confidence 4?

setAv - сокращение от SetActorValue

deepNoise написал(а):

Например, что это за переменная MS03.MS03b1HitID? Откуда она взялась, если выше её не назначали?

Возможно глобальная переменная.

deepNoise написал(а):

Бита - это же объект?

Объект, а не триггер.

0

63

Igor_Ra написал(а):

setAv - сокращение от SetActorValue

Igor_Ra написал(а):

Возможно глобальная переменная.

Я примерно так и предпологал.

Igor_Ra написал(а):

Объект, а не триггер.

Извеняюсь, совсем запутался. Триггер - это ведь метка области мира. Я думал комада при соприкосновении с объектом.

Так что всё таки не так с моим скриптом?

scn MLbitaGrabitelyaEffectScript

float timer     ;переменная таймера
short sof
short kof
ref jertva       ;переменная указывает на кого используется эффект

begin ScriptEffectStart
set timer to 8    ;поставить таймер на 8
disablePlayerControls 0 1 1 0 0 0 0
end

begin ScriptEffectUpdate

        if timer < 5 && kof==0 
;когда пройдет 3 секунды, убить жертву           
          jertva.killactor
          disablePlayerControls 0 1 1 0 0 0 0
          set kof to 1
          showMessage MLtext1
        endif

        if timer < 2 && sof==0
;когда пройдет 6 секунд, оживить
          enablePlayerControls
          jertva.resurrect 1
          set sof to 1
          showMessage MLtext2
        endif

set timer to timer - getSecondsPassed     ;отнять от таймера 1 секунду
showMessage MLtimer timer

end

Скрипт репелента как пример не подходит, так как в нём нет таймера(всё происходить в одном фрейме), а в моём есть.
И ещё, можете подсказать, где можно посмотреть значение флагов для базовых эффектов Base Effect? Желательно на русском. Или так, на словах объясните, их там не так уж много.

Отредактировано deepNoise (2010-04-30 19:23:06)

0

64

deepNoise написал(а):

Репелент посмотрел, что то там всё замудрёно. Есть какие то то ли переменные, то ли функции, которых в словаре нету.

Например, что это за переменная MS03.MS03b1HitID? Откуда она взялась, если выше её не назначали? И что это за функция: setAv Confidence 4?
Не проще ли было для репелента сделать скрипт, чтобы при соприкосновении у кротокрыса голова взрывалось? Тогда б всё понятно было

MS03 - имя квеста (Пособие по выживанию на пустошах Мойры Браун). MS03b1HitID - квестовая переменная. Этот блок тебе вообще не нужен, это подсчет убитых короткрысов для зачета заднания. Тебя должно интересовать вот это:
set HitTarget to GetSelf ;назначается цель,
if (HitTarget.getdead == 0) ;проверяется, живая ли цель.
set MS03.MS03b1Target to GetSelf ; не нужно, это для квеста
startCombat player ;цель атакует игрока, если жива
if (HitTarget.GetInFaction MoleRatFaction == 1 && MS03.MS03b1Target != MS03.MS03b1HitID) ;проверяется, является ли цель кротокрысом,
; и не били ли ее уже репеллентом.
Set MS03.MS03b1HitID to GetSelf ; если еще раньше не били, то отметить, что уже таки били.
Set Explode to 1 ;назначить переменную на будущее, для того, чтобы выполнить блок самого эффекта
setAv Confidence 4 ; установить актор валью (грубо говоря смелость на 0)
scaonactor ;сокращение, Stops all combat and alarms against calling actor по-русски: прекратить бой и тревогу против вызывающего актреа.
А дальше уже собственно сам эффект:
BEGIN ScriptEffectFinish
if (HitTarget.GetInFaction MoleRatFaction == 1 && Explode == 1) ; если кротокрыс, и его ударили
kill player 1, 6 ;убить, убийца - игрок, 1 - часть тела которая отвалится (в данном случае голова), 6 - причина смерти (яд)
endif
END

Отредактировано SpalnyVagon (2010-04-30 19:31:07)

0

65

deepNoise написал(а):

Так что всё таки не так с моим скриптом?

Ну для начала нет содержания для переменной
ref jertva       ;переменная указывает на кого используется эффект
то есть она не объявлена и нет того, на ком будет действовать эффект :)

0

66

Igor_Ra написал(а):

Ну для начала нет содержания для переменной
ref jertva       ;переменная указывает на кого используется эффект
то есть она не объявлена и нет того, на ком будет действовать эффект

Вот, сделал попроще:

scn MLbitaGrabitelyaEffectScript

float timer     ;переменная таймера
short startTimer
short sof
short kof
ref jertva       ;переменная указывает на кого используется эффект

begin ScriptEffectStart
  set timer to 8    ;поставить таймер на 8
  disablePlayerControls 0 1 1 0 0 0 0
  showMessage MLtext3
end

begin ScriptEffectUpdate

        if timer < 5 && kof==0 
;когда пройдет 3 секунды, убить жертву     
          killactor
          set kof to 1
          showMessage MLtext1
        endif

        if timer < 2 && sof==0
;когда пройдет 6 секунд, оживить
          resurrect 1
          enablePlayerControls
          set sof to 1
          showMessage MLtext2
        endif

         set timer to timer - getSecondsPassed     ;отнять от таймера 1 секунду
         showMessage MLtimer jertva timer

end

Здесь не нужно в принципе указывать переменную на актера, так как все функции сами собой выполняются по отношению к актеру, на которого использовано оружие. Скрипт работает до метки 5 секунд. Т.е. актер умирает. А вот до второй метки таймера почему то не доходит, второе условие не выполняется.
Вот сам патч:
http://narod.ru/disk/20285649000/MLweapons.rar.html
Там ещё есть несколько моих эксперементальных оружий:
"Нейропаралич" - выглядет как пистолет с глушителем, стреляет дротиками, работает на батарейках. Сбивает с ног и парализует на 1 минуту.
"Электрошоковая дубинка" - при ударе сбивает актера с ног.
"Болтомет" - как железнодорожная винтовка, только с большой отдачей. Хотел сделать, чтобы тела можно было пригвоздевывать к стенам, но чего то не получилось.

И вот оружие над которым сейчас работаю:
"Грабитель" - при ударе должен оглушать противника, чтобы можно было у него украсть вещи, доступные только после смерти. На самом деле он конечно будет не оглушать, а убивать, а потом через некоторое время восскрешать. Чтобы игроку не вздумалось стрелять в "оглушенного" актера, я сделал так, чтобы из упралвения было доступно только передвижение и взаимодействие с вещами(disablePlayerControls 0 1 1 0 0 0 0).
Но почему то эффект пока действует так: скрипт работает до метки 5 секунд. Т.е. актер умирает. А вот до второй метки таймера почему то не доходит, второе условие не выполняется. Вот я и спрашиваю, почему) Возможно дело во флагах в базовых эффектах(я там выбрал только Self, Touch и Target). Действие эффекта поставил на 10 секунд.

0

67

Возможно, что при команде killactor действие заклинания на этом актере прекращается.
Можно попробовать передавать ссылку на актера с этим заклинанием в глобальный скрипт (висящий на квесте) и уже глобальный скрипт пусть оживляет этого актера через 3 секунды.

0

68

deepNoise написал(а):

Скрипт репелента как пример не подходит, так как в нём нет таймера(всё происходить в одном фрейме), а в моём есть.

Если мне не изменяет память, то у эффекта есть длительность, которая устанавливается в форме эффекта. Поэтому тебе достаточно иметь два блока - ScriptEffectStart (в нём грохаем непися) и ScriptEffectFinish (в нём возрождаем непися). В общем то и всё. И таймер не нужно ставить. Разберись получше с созданием эффекта. И реппелент вполне подходит.

ЗЫ: Я могу ошибаться, так как глубоко ещё не копал, просмотрел бегло... :)

Отредактировано Wulf (2010-04-30 21:54:21)

0

69

Igor_Ra написал(а):

Можно попробовать передавать ссылку на актера с этим заклинанием в глобальный скрипт (висящий на квесте) и уже глобальный скрипт пусть оживляет этого актера через 3 секунды.

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

Wulf написал(а):

Поэтому тебе достаточно иметь два блока - ScriptEffectStart (в нём грохаем непися) и ScriptEffectFinish (в нём возрождаем непися). В общем то и всё. И таймер не нужно ставить. Разберись получше с созданием эффекта.

Так тоже пробовал. В ScriptEffectStart ставил убить актёра, в ScriptEffectFinish оживить. Результат был тем же. Похоже когда убиваешь актера, на которого использован эффект, то скрипт эффекта автоматически прекращается.

Отредактировано deepNoise (2010-05-01 08:08:31)

0

70

deepNoise написал(а):

Так тоже пробовал. В ScriptEffectStart ставил убить актёра, в ScriptEffectFinish оживить. Результат был тем же. Похоже когда убиваешь актера, на которого использован эффект, то скрипт эффекта автоматически прекращается

Оживлять тоже надо уметь правильно. Дело в том, что убиение и оживление сопровождаются анимацией, и процес реинкарнации нужно делать с учетом того, что для проигрывания анимации нужно время.
У меня другой вопрос, не совсем в тему: а зачем она вообще тебе нужна эта чудо-убивалка? Мертвые НПС - источник лута. Тебе нужны оживающие НПС - источник бесконечного лута, и, как результат тотальный дисбалланс игры?
А с ключами торговцев будет другая история - если игрок каким либо образом завладеет ключом торговца и воспользуется им хотябы для того, чтобы посмотреть, а что там в кубышке у торгаша, то торговец больше торговать уже не будет - ему нечем и не за что будет торговать. Все его товары из мерчант-контейнера (контейнер, в котором происходит респавн лута и денег, и который находится в интерьере VendorChestsCell) перейдут в обычный контейнер под названием "товары купца Пузотрясова", который находится где-нибудь в Ривет-Сити или Кентербери.
И, наконец, третий аспект. В DeaehItems могут находиться квестовые предметы. Если игрок завладеет квестовым предметом, а носитель DeathItems останется жив - кто даст гарантию, что не появятся дубликаты, нестыковки и глюки?

0

71

SpalnyVagon написал(а):

Оживлять тоже надо уметь правильно.

Я это и так понимаю) Согласен, с одной стороны это конечно может выльется в жуткий дисбаланс и глюки. Просто хотелось сделать более гуманый способ полностью овладевать имуществом торговцев, нежели смертоубийство)
Скрипт пока в стадии разработки, возможно в процессе придумаю, как его получше приспособить к механике игры и избежать последствий.
Например тех, кого обокрали таким способом, можно заставить носить лохмотья и говорить что нибудь вроде "Я разарён, меня ограбили". Т.е. превратить в бомжей) Или ещё можно сделать, чтобы они просили у игрока кредит, чтобы снова "встать на ноги" и начать торговать. Ну или что нибудь в этом роде.

Сейчас я разобрался с квестовыми скриптами и глобальными переменными, и теперь мой "Грабитель" работает :cool: Вот только при восскрешении появляется типичный баг - актер проваливается под землю. Подскажите, пожалуйсто, кто знает, как обойти этот баг?

0

72

deepNoise написал(а):

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

В Обливионе при воскрешении НПС тоже происходил глюк с анимацией, возможно это никак не исправить.

0

73

deepNoise написал(а):

Просто хотелось сделать более гуманый способ полностью овладевать имуществом торговцев, нежели смертоубийство)

Полностью не овладеешь. Там механизм такой: весь лут из мерчант-контейнера переносится в контейнер "товары Пупкина", который изначально пустой. Потом из него изымается рандомным способом часть аптечек и патронов, и только потом "добро" становится доступным игроку. А в интерьер VendorChests можно попасть только с помощью консоли.

0

74

Подскажите, как запретить игроку входить в вид от 1-го лица? Нужно, чтоб при проигрывании анимации на игроке, он не мог войти в вид от 1-го лица.

Как сделать, чтобы при использовании функции activate на массив вещей(несколько вещей в одной), брались все эти вещи, а не одна.
Например: массив из 10 Ядер Кол в одной. При использовании activate player берётся только одна бутылка, а 9 других проподают. Как сделать, чтоб брались все?

Как задать условие, что игрок сидит в кресле за столом или на стуле за стойкой? Может есть какая нибудь функция, определяющая соприкосновение игрока с анимационными маркерами НПС?

0

75

deepNoise написал(а):

Подскажите, как запретить игроку входить в вид от 1-го лица? Нужно, чтоб при проигрывании анимации на игроке, он не мог войти в вид от 1-го лица.
Как сделать, чтобы при использовании функции activate на массив вещей(несколько вещей в одной), брались все эти вещи, а не одна.
Например: массив из 10 Ядер Кол в одной. При использовании activate player берётся только одна бутылка, а 9 других проподают. Как сделать, чтоб брались все?
Как задать условие, что игрок сидит в кресле за столом или на стуле за стойкой? Может есть какая нибудь функция, определяющая соприкосновение игрока с анимационными маркерами НПС?

1. Не знаю, знаю как наоборот, disableplayercontrols 1 1 1 0 1 1 1 - запрет переходить в вид от 3-го лица
2. Ничего не понял, честно говоря.
3. фурнитураID.activate player. Или создать пакет для игрока тревел, а в качестве конечной цели - маркер фурнитуры. Если анимация у фурнитуры сложная, состоит из нескольких - возможны глюки и зависания.

0

76

SpalnyVagon написал(а):

1. Не знаю, знаю как наоборот, disableplayercontrols 1 1 1 0 1 1 1 - запрет переходить в вид от 3-го лица

Это я знаю) В том то и дело, что нужно наоборот. Например, как в перке "Песочный человек" (Mister Sandman). Правда там для этого перка отдельная вшитая функция.

SpalnyVagon написал(а):

2. Ничего не понял, честно говоря.

Ставим на NukaCola скрипт:

begin OnActivate
  activate player
;просто берётся в инвентарь
end

Заходим в игру, нажимаем на Ядер Колу, она берётся в инвентарь. Но если из инвентаря выкинуть сразу несколько Ядер Кол в одной(когда выбираешь сколько именно нужно скинуть бутылок), то если взять эту бутылку "несколько в одной", то в инвентаре появится только одна бутылка. Как сделать, чтоб брались все бутылки?

SpalnyVagon написал(а):

3. фурнитураID.activate player.

Можно поподробнее? Какой именно скрипт нужно создать с этой функцией? Что такое фурнитура и в каком разделе в Геке находится её ID?

SpalnyVagon написал(а):

Или создать пакет для игрока тревел, а в качестве конечной цели - маркер фурнитуры.

А разве пакеты действуют на игрока? Я как то раз попробовал создать пакет слип, и прицепил его на Player в Actors. Однако в назначеное время ничего не произошло.

SpalnyVagon написал(а):

Если анимация у фурнитуры сложная, состоит из нескольких - возможны глюки и зависания.

Анимации не сложные, как раз для определённого места сидения предназначено. Это анимации SitStoolEat/Drink и SitTableDrink/Eat(анимации приёма пищи для стула за стойкой и за столом).

0

77

3. фурнитураID.activate player.

Насчёт фурнитуры уже не нужно объяснять, нашёл и разобрался. Только там столько стульев в зависимости от положения от них игрока в разных вариациях, что если я буду к каждой скрипт прикреплять, это займёт много времени. Да ещё огромный скрипт нужно будет написать с ID каждого варианта фурнитуры.
Давайте разберём второй вариант - создания пакета для игрока. Как именно он будет выглядеть и действовать? Или помогите написать условие с соприкосновением маркеров. Фурнитур то много, а маркеров всего штуки три.

Отредактировано deepNoise (2010-05-05 09:09:19)

0

78

deepNoise написал(а):

Заходим в игру, нажимаем на Ядер Колу, она берётся в инвентарь. Но если из инвентаря выкинуть сразу несколько Ядер Кол в одной(когда выбираешь сколько именно нужно скинуть бутылок), то если взять эту бутылку "несколько в одной", то в инвентаре появится только одна бутылка. Как сделать, чтоб брались все бутылки?

В чем заключается сверх-задача? Что еще должно происходить, кроме взятия-выбрасывания? Если больше ничего, то зачем вообще этот блок begin onactivate, ведь бутылки и без него берутся в инвентарь. Выброси этот блок и они будут вести себя как обычный итемс.

deepNoise написал(а):

Только там столько стульев в зависимости от положения от них игрока в разных вариациях, что если я буду к каждой скрипт прикреплять, это займёт много времени. Да ещё огромный скрипт нужно будет написать с ID каждого варианта фурнитуры.
Давайте разберём второй вариант - создания пакета для игрока. Как именно он будет выглядеть и действовать? Или помогите написать условие с соприкосновением маркеров. Фурнитур то много, а маркеров всего штуки три.

С маркерами фурнитуры тебе все равно придется разбираться, стульев много, на оних ГГ будет у тебя есть, на других пить, на третьих изображать работу с терминалом.
Пакет самый обыкновенный. Я использовал travel (наверное можно и patrol, и useitem). В нем указываешь в качестве цели маркер фурнитуры (он должен быть persistent ref, разумеется). А добавляется пакет игроку где-нибудь в резалт-скрипте, или в любом другом скрипте командой addScriptPackage, точно так же, как и любому НПС. Для того, чтобы игрок не дергался, не давил кнопки и не мешал проигрыванию анимации, на время действия пакета, как правило, дается команда disableplayercontrols. В нужное время пакет изымается командой-антиподом removeScriptPackage, а управление ГГ возвращается игроку (enableplayerscontrols). Я не сильно глубоко копал в этом направлении, поэтому не могу сказать наверняка, нужно ли принудительно заканчивать пакет, или он сам закончится, если установлен флаг must complit. Могу лишь добавить, что время проигрывания анимации у некоторых маркеров достаточно большое, а увидеть весть репертуар у тех маркеров, где анимаций несколько, мне не удалось.

0

79

SpalnyVagon написал(а):

В чем заключается сверх-задача? Что еще должно происходить, кроме взятия-выбрасывания? Если больше ничего, то зачем вообще этот блок begin onactivate, ведь бутылки и без него берутся в инвентарь. Выброси этот блок и они будут вести себя как обычный итемс.

Вот так выглядет мой скрипт, прикреплённый к Ядер Коле:

begin OnActivate Player

if player.IsWeaponOut==0 && player.GetSitting==0 && player.IsPC1stPerson==0
;если игрок не с оружием в руках, не сидит на чём нибудь и не в виде от 1-го лица
  activate player
  player.playIdle SodaDrinkingStanding
  startQuest MLdrinkEatPlayerMode
  showMessage MLDrinkNukaColaYes1
elseif player.IsWeaponOut!=0 && player.IsPC1stPerson==0
;если игрок с оружием и в виде от 3-го лица
  showMessage MLDrinkEatNo1
elseif player.GetSitting!=0
;если игрок сидит на чём нибудь
  showMessage MLDrinkEatNo2
  activate player
elseif player.IsPC1stPerson!=0
;если игрок в виде от 1-го лица
  activate player
endif

end

Вот поэтому и нельзя обойтись без OnActivate 8-) Нужно чтоб просто все бутылки брало, если их много в одной.

SpalnyVagon написал(а):

Пакет самый обыкновенный. Я использовал travel (наверное можно и patrol, и useitem). В нем указываешь в качестве цели маркер фурнитуры (он должен быть persistent ref, разумеется).

А как именно действует этот пакет? :huh: Неужели при его вызове и отключении управления игрок сам пойдет что-то там делать?)

0

80

deepNoise написал(а):

Неужели при его вызове и отключении управления игрок сам пойдет что-то там делать?)

Пойдет и при невыключенном управлении, просто управление будет двойное - и движком и игроком, а это уже лажа, АI-пакет при вмешательстве с клавиатуры прервется.
А сверх-задачи я так и не понял. Сделать скриптом то, что движок умеет делать сам, причем - лучше и без скриптов? Ради анимации пить только стоя и без оружия в руках? Ради чего городится весь этот огород?

0

81

SpalnyVagon написал(а):

Пойдет и при невыключенном управлении, просто управление будет двойное - и движком и игроком, а это уже лажа, АI-пакет при вмешательстве с клавиатуры прервется.

Наверно тогда всё таки скрипт для фурнитуры напишу. У меня ведь должна проигрываться определённая анимация при активации определённой еды. А здесь будет случайная проигрываться.

SpalnyVagon написал(а):

А сверх-задачи я так и не понял. Сделать скриптом то, что движок умеет делать сам, причем - лучше и без скриптов? Ради анимации пить только стоя и без оружия в руках? Ради чего городится весь этот огород?

Я делаю мод с анимированым приёмом пищи для игрока. Задумка такая, что если съедобную вещь активировать, будучи находясь в виде от 3-го лица и без оружия, то на игроке проиграется анимация приёма пищи как у НПС. Тоже самое хочу сделать и для сидячего положения. Мод такой будет с уклоном на адвенчуру) При анимированом "тщательном" приёме пищи будут даваться бонусы: здоровье полностью восстановится, но и радиации от пищи получишь в десять раз больше.
Вот как выглядет скрипт, который вызывается из вышерасположенного скрипта(квест):

scn MLdrinkEatPlayerModeScript

float MLidle1

begin GameMode

  set MLidle1 to player.IsIdlePlaying
  if MLidle1 == 0
    player.additem NukaColaBottle 1 1
    player.drop NukaColaBottle 1
    player.removeItem NukaCola 1
    player.resetHealth
    player.castImmediateOnSelf DrinkNukaColaRadiation
    player.AddItem Caps001 1
    stopQuest MLdrinkEatPlayerMode
  endif

END

В случае с Ядер Колой я сделал, чтобы в конце анимации из игрока падала пустая бутылка. Всё просто)
Ещё хотел сделать анимированый приём химии, но нашёл только анимацию с приёмом стимпака.
Непонимаю почему это такая уж сверх-задача. Наверняка ведь есть какая нибудь функция, которая отслеживает количетво вещей в массиве. Просто нужно подсказать её название, если такая есть, а дальше я бы сам из справочника по скриптам разобрался:)

0

82

Подскажите, пожалуйсто, как показать ref и float переменные в сообщениях? Я знаю, что для чисел нужно использовать знак %N.0f(где N - кол-во цифр в числе), но это действует только с short переменными.
И ещё, как можно выбрать другую иконку для сообщения? У меня почему то какую бы иконку не выбирал, всегда только улыбающийся пупс отображается.

0

83

Выводить ref переменную не пробовал, а вот выводить значение переменной я думаю можно. Там после точки, кажись, указывается количеством знаков после запятой.
А иконка вроде и не выбирается, всегда одна и та же. И ещё, если тебе эти переменные нужны для отладки, то в конфиге переменная была для вывода в лог. Где то читал... Но могу ошибаться. :)

Отредактировано Wulf (2010-05-08 20:42:56)

0

84

Wulf написал(а):

Выводить ref переменную не пробовал, а вот выводить значение переменной я думаю можно. Там после точки, кажись, указывается количеством знаков после запятой.

Зачем говорить что я и так знаю?:) Чтобы вывести значение переменной в сообщении, нужно просто написать эту переменную в функции.

Например:
showMessage ZnacheniePeremennoy X Y Z
;вывести значения переменных X, Y и Z в сообщении ZnacheniePeremennoy
Сообщение ZnacheniePeremennoy должно быть таким:
Значение X = %0.f
Значение Y = %0.f
Значение Z = %0.f

Но это действует только если переменная short, т.е. числовая. А вот если переменная магическая(float) или указывающая на ID(ref), то этот способ вывода переменной не действует.
То, что после запятой вместо нуля можно указать количество цифр, это я и так знаю)

Wulf написал(а):

А иконка вроде и не выбирается, всегда одна и та же.

Там, когда message пишешь, есть открывающийся список с названиями иконок. Только почему то какую бы не выберал, всегда одну и ту же показывает. А иконки разные бывают, это точно. Вспомнить, например, когда получешь отравление или привыкание, появляется сообщение с грустной рожей)

Wulf написал(а):

И ещё, если тебе эти переменные нужны для отладки, то в конфиге переменная была для вывода в лог.

А вот этого я действительно не знал. Где находится этот "конфиг", и как выводить переменные в "лог"?

0

85

Хм, странно. Раз можно выводить числа после запятой, то, по идее, и число с плавающей запятой (float) можно выводить. А точно, посмотрел описание команды, там правда только целые числа можно вывести. Значит и ref не получится. Конфиг у меня тут находится C:\Users\Wulf\Documents\My Games\Fallout3, название флага не помню, просто читал что можно вывести в лог. Посмотри вот эту iFileLogging=0, может это она.

Отредактировано Wulf (2010-05-09 15:46:28)

0

86

Я вот создал оружие "Ножик", ружье которое стреляет ножами. Вот как сделать чтоб эти ножы действительно вылетали из ружья, отрывали конечности и их можно было бы потом подобрать? Через Form List можно только сделать предмет типом патронов, а стрелять он будет так же.

0

87

FOGONEZ написал(а):

Я вот создал оружие "Ножик", ружье которое стреляет ножами. Вот как сделать чтоб эти ножы действительно вылетали из ружья, отрывали конечности и их можно было бы потом подобрать? Через Form List можно только сделать предмет типом патронов, а стрелять он будет так же.

Посмотри, как сделана "ракетка". Может найдешь там что-то подходящее и для твоего случая.

0

88

Ладно разберусь.
Тогда несколько вопросов:
1.Как заставить при диалоге НПС двигаться, достать и выставить на меня пушку? И даже стрелять?
2.Как при диалоге переключить его с 1 НПС на 2 НПС?
3.Как сделать враждебного к ГГ НПС дружественным к ГГ или наоборот.

0

89

FOGONEZ написал(а):

3.Как сделать враждебного к ГГ НПС дружественным к ГГ или наоборот.

Нужно в скрипте сделать так шоб фракция ГГ стала враждебной тому с кем он говорит и если нужно сделать обратно то наоборот сделать дружественной.Посмори скрипт в Фолле который висит на маске гуля там есть скрипт.

0

90

Помогите со скриптом плиз! Решил отредактировать мод (Gorier Explosions),который меняет эффект от взрыва таким образом,что от взрывного оружия(граната,мина, ракетомёт,Толстяк) кроме рук ног и головы взрывается ещё и торс. Но проблема в том,что там недоработка или баг - после взрыва взрывается только торс, и в это время руки,ноги и голова NPC просто исчезают! А когда подходишь чтобы снять одежду и снимаешь её - эти самые руки ноги и голова появляются)))  Получается лежит тот же мёртвый NPC, только на месте туловища ничего нет - дырка!
Соответственно вопрос как написать скрипт так, чтоб  этого не было и чтоб остальные части тела тоже разлетались к чертям и при этом ТОЛЬКО от гранат,мин,"толстяка" и гранатомётов!  В самом моде скрипт прописан так:

SCN ExplodeSCRIPT

BEGIN ScriptEffectStart

     if GetDead
             Kill CG01DadREF 0;explode body!

     endif

END

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3