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. (New Vegas Edition) » Вопросы по скриптам в Fallout NV


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

Сообщений 31 страница 60 из 82

31

Wulf, Ну а как ? Какой скрипт ? У меня просто нет времени написать и проверить самому.

K.A.I.N., Ну на триггер я ставил такой:

scn aaaTriggerScript
Begin OnTriggerEnter
   aaaRef.enable
   disable
End

При достижении триггера скрипт делал нужный мне объект enable мне так и надо было, а вот как сделать объект enable или desable после квеста незнаю, нет времени эксперементировать.

Отредактировано speed_sn1er (2011-04-17 00:42:00)

0

32

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

При достижении триггера скрипт делал нужный мне объект enable мне так и надо было, а вот как сделать объект enable или desable после квеста незнаю, нет времени эксперементировать.

Что значит "после квеста"? Если ты закрываешь квест, значит у тебя где-то стоит команда:
StopQuest [QuestID].
Вот перед ней и поставь enable или disable.

Отредактировано SpalnyVagon (2011-04-17 09:05:38)

0

33

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

Что значит "после квеста"?

Я имел ввиду после завершения квеста. Ну мне нужен скрипт на активатор, если тут недадут скрипт то буду подругому выпутыватся.

0

34

speed_sn1er
Привет! Понимаешь, как правило пишется основной квест, в котором создают сколько нужно стадий. Например 10, 20,30,40... Четыре стадии. Почему так, а не 1,2,3,4? А для возможности "манёвра", что бы в любой момент добавить, если возникла необходимость дополнительные стадии - 11, 12, 13...и так далее.
Стадии квеста по мере его прохождения выполняются. Например после разговора с таким то NPC и получения нового задания, заканчивают стадию 10 и начинают стадию 20 и ГГ идёт к следующему NPC, говорит, убивает, приносит, находит и т.п. И снова закрывают 20 стадию и начинают 30 и так далее.
И в итоге к концу квеста - после выполнения основного задания - заканчивают квест закрывая последнюю стадию и весь квест.
Стадию и квест можно завершить, как угодно. В разговоре с NPC, найдя предмет, убив кого то, вылечив кого то, войдя в триггер, включив активатор и тп.
Вот мы и пытаемся понять, как у тебя заканчивается квест. Каким действием?
А лучше посмотри урок Wulf Создание полноценного компаньона часть 2 и Igor Ra создание квеста Старого Грега и всё поймешь сам, там есть все эти моменты, как и где завершить или начать стадию. И при взятии предмета, при взятии задания, при возвращении предмета и т.п.

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

Ну мне нужен скрипт на активатор, если тут недадут скрипт то буду подругому выпутыватся

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

Отредактировано K.A.I.N. (2011-04-17 14:35:11)

0

35

K.A.I.N., Квест заканчивается убийством НПЦ.

0

36

speed_sn1er
Привет!
Вот так сделай, если у тебя нет основного квеста. Просто убив NPC ты уберёшь объект.
Вот NPC и объект ДВЕРЬ
http://savepic.net/1011344.jpg
Вот труп и нет двери
http://savepic.net/1008272.jpg
А вот скрипт.
scn AAAKainWanderMenDeadScript
begin onDeath
if AAAKainWanderMenREF.GetDead == 1
AAAKanBarracksDoorRef.disable
endif
end
Если есть квест который нужно завершить с убийством NPC  добавь в скрипт строку

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

StopQuest [QuestID].

Если нужно сообщение выводимое на экран - создай его и добавь в скрипт строку

OZOZ-13 написал(а):

ShowMessage DMDownloadMessage

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

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

Код:

if ActorID.GetDead
ActorID.disable
endif

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

0

37

K.A.I.N., Спасибо, хорошо и внятно разъяснили. Но думаю попробую по другому варианту так как объектов у меня около 15-ти я сделаю немного подругому.

0

38

Здраствуйте, а возможно ли сделать так чтобы при попадании в нпц (с одной пули) у него востанавливались жизни а если отнять при ударе сразу все жизни то нпц умер ?

0

39

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

Здраствуйте, а возможно ли сделать так чтобы при попадании в нпц (с одной пули) у него востанавливались жизни а если отнять при ударе сразу все жизни то нпц умер ?

Есть такой блок begin onHit. Он срабатывает один раз, при попадании в актера. Ну, а внутрь этого блока можно замунуть все, что желаете привязать именно к событию hit (попадание), в том числе и смерть от оного попадания (kill), или наоборот. восстановление здоровья (resetHealth). Примерно так:
begin onHit
kilactor ;убить
end
_____________
begin onHit
resethealth  ;вылечить
end
_____________
begin onHit
disable    ;исчезнуть
end
______________

0

40

SpalnyVagon, Спасибо за информацию, мне вот интересно за это:

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

begin onHit
disable    ;исчезнуть
end

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

Отредактировано speed_sn1er (2011-04-23 16:47:15)

0

41

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

А можно ли при попадании в противника с огнестрельного оружия противник пропадал и появлялся например 2 метра ливее

Можно. Даже если слева стенка, в которой он потом застрянет. А вот сделать так, чтобы он исчезал и появлялся не слева в 2-х метрах, а там, где  нет препятствий - гораздо сложнее.

0

42

SpalnyVagon, А если чтобы появлялся сзади player ?

0

43

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

А если чтобы появлялся сзади player ?

Функция имеет четыре параметра. Указываешь, что тебе надо, и указанный объект спавнится в указанном месте.
placeatme [объект] [количество] [расстояние] [направление]
Прмер: player.placeatme ZloyNinzia 2 256 1 (в 2-х метрах позади игрока спавнится 2 нинзя)
Направление: 0 спереди, 1 сзади, 2, 3 - сбоку, кажется так.
Кстати, оказывается, если место занято, то объект спавнится там, где свободно. Обращаю внимание на то, что можно задавать количество. Т.е. можно сделать как в сказке про Змея Горыныча - вместо одного убитого врага появляется два новых (или три...).

+1

44

Прива народ!!!! У меня такой вопрос, можно ли сделать в Нью Вегасе так что бы при удачном нажатии кнопки игрок уворачивался от пуль как примерно в матрице и с такими же движениями?

0

45

Скажите пожайлуста есть ли команда для скрипта способная вывести ГГ (главного героя) из режима боя (убрать оружие). То есть вывести ГГ из боевой стойки и перевести его в стандарное состояние ожидания (без применения кнопки R).

0

46

Вот такое наблюдение:

В инвентаре игрока есть вещь-маркер, к которой прицеплен скрипт

;==============================================
Begin OnEquip Player

Set ActorREF to Player
     ActorREF.UnEquipItem OutfitWastelandHat05 ; команда раз
PrintToConsole "Unequiping done"
     ... тело скрипта
     ActorREF.EquipItem OutfitWastelandHat05 ; команда два
PrintToConsole "Equiping done"
     ... тело скрипта

End
;===============================================

Если зайти в инвентарь и экипировать вещь-маркер, то скрипт сработает как надо - бандана сначала снимется и тут же наденется.

Но, если присвоить вещи-маркеру горячую клавишу, например "3", то в режиме игры (не меню) при нажатии на эту клавишу бандана снимется командой раз, но не будет надета командой два. Хотя в консоли и будет два сообщения Unequiping done и Equiping done, игровых сообщений (левый верхний угол) будет только одно - о том, что бандана снята.

Такое поведение этих функций нигде не задокументировано, ни на geck.bethsoft.com, ни на cs.elderscrolls.com. Там описываются похожие, но другие "особенности". Также не нашел упоминаний об этом на известных мне форумах.

Вывод: в GameMode  из последовательности команд UnEquipItem.rMyItem и EquipItem.rMyItem будет выполнена только первая.
             Возможно, они ведут себя так только в пределах одного фрейма, и если вторая команда будет вызвана в следующем фрейме, то все сработает как надо. Но я не вижу способа заставить работать блок OnEqiup два фрейма подряд и поэтому не могу проверить.
             В MenuMode последовательность команд  работает так, как ожидается, не смотря на то, что обе команды выполняются в одном и том же фрейме.

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

Собственно, вопрос: это только у меня так? А если вы тоже встречались с таким поведением этих функций, то как решали проблему?

Отредактировано evp (2011-10-23 22:28:42)

0

47

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

Скажите пожайлуста есть ли команда для скрипта способная вывести ГГ (главного героя) из режима боя (убрать оружие). То есть вывести ГГ из боевой стойки и перевести его в стандарное состояние ожидания (без применения кнопки R).

Может вот эта функция подойдет:
StopCombat

0

48

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

Может вот эта функция подойдет:StopCombat

Вряд ли. Вот эта подойдет точно: disableplayercontrols 0 0 1

0

49

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

Вот такое наблюдение:

Эм. Кажись в OSMF было описано, что в одном блоке нельзя одеть и снять предмет за один фрейм. А ты в OnEquip её одевай, ставь флаг и снимай в GameMode.
Или попробуй как Вот тут описано. Снимай командой RemoveItem, затем в конце скрипта AddItem и EquipItem. Вдруг получится.

Но это мои мысли. Могу ошибаться... :)

0

50

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

Кажись в OSMF было описано, что в одном блоке нельзя одеть и снять предмет за один фрейм.

Заглянул в OSFM (жаль, что не догадался посмотреть раньше, думал, что там просто тупой перевод из Construction Set Wiki):

OSFM  v1.2.0 написал(а):

Примечания (Visman):
1. Нельзя в одном и том же фрейме снять и одеть один и тот же зачарованный предмет (проверено на щитах в плагине "Щит на спине") - он будет только снят. (Возможно, обратная ситуация также не пройдет, т.е. одеть и снять, но это не проверялось).

Здесь, как мне кажется допущена неточность. А именно - не сказано, что эта особенность проявляется в GameMode, в то время как в MenuMode эта последовательность прекрасно срабатывает даже в одном фрейме. К тому же, там говорится о зачарованных вещах.

Что касается RemoveItem - AddItem - EquipItem, то у этой последовательности есть один существенный недостаток: теряется текущее состояние брони. Придется запоминать при помощи GetEquippedCurrentHealth (функция NVSE), что влечет за собой еще и определение слота, в который одета вещь (видимо, для этого нужно будет организовать цикл Label -  GetEquipped - GoTo Label). И только после этого добавлять вещь, но не при помощи AddItem, а при помощи AddItemHealthPercent. В общем, морока. Лучше уж заранее узнать, не придется ли эту вещь впоследствии одеть и тогда не снимать ее вообще. :) Но, если заранее узнать невозможно, то это единственный выход?

Что же касается того, чтобы в OnEquip одевать, а в GameMode снимать, то меня наверное не так поняли. Чтобы было понятнее, расскажу. В инвентарь игрока добавляется маркер. При "одевании" маркера вся одежда с персонажа снимается, а взамен надевается заранее подготовленный набор другой брони/одежды. Изначально предполагается, что скрипт срабатывает при активации маркера-брони в MenuMode (из Пип-боя). В таком случае все работает как и задумывалось. Но игрок может "повесить" этот маркер на горячую клавишу. Вот тогда и всплывает эта баго-фича. Скрипт в таком случае работает в GameMode. Вообще, я эту проблемку решил проверкой на наличие вещи в списке для надевания и, если она там есть, то я ее просто не снимаю.

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

Кстати, пользуясь случаем, спрошу: как можно узнать, что ГГ сейчас плывет? Функция IsSwimming работает только на NPC. Отслеживать координату Z в Вегасе бессмысленно. Может кто-нибудь знает, как игра определяет, что игрок плывет и проигрывает соответствующую анимацию? Или, если это неизвестно никому, то как можно отследить, что началась анимация плавания?

Отредактировано evp (2011-10-24 20:25:32)

0

51

Вряд ли. Вот эта подойдет точно: disableplayercontrols 0 0 1

Спасибо за совет.

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

Возникает вопрос почему так происходит ? Почему скрипт срабатывает 2 раза ? использовал блок Begin GameMode и вот в нём такие приколы. Хотя явно видно что скрипт не два раза прогоняется а скорее стартует одновременно 2 раза но выполняется с разной скоростью при этом никакие переключатели в виде условий не помогают вообще внутри скрипта. Правда если мне память не изменяет использование блока OnEquip такого косяка не давало.

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

0

52

Shinshila

Или я тебя плохо понял, или ты не умеешь готовить таймеры :)

Вот к примеру:

- Я взял первую попавшуюся броню ArmorCombat, скопировал ее как evpTestArmorCombat;
- Сваял на быструю руку квест evpTestArmorCombatQuestDoOnce с единственной галочкой Start Game Enabled;
- Приготовил сообщение evpTestAlarmMessage (Message Box, окошко с кнопочкой);
- Написал два скрипта
=================================================
ScriptName evpTestArmorCombatQuestDoOnceScript

Begin GameMode

Player.PlaceAtMe evpTestArmorCombat
StopQuest evpTestArmorCombatQuestDoOnce

End
================================================
ScriptName evpTestArmorCombatScript

float timer
short count

Begin GameMode

Set timer to (timer + GetSecondsPassed)
If (timer > 120) && (count != 1)
   Set count to 1
   ShowMessage evpTestAlarmMessage   ; Я вся такая из себя броня, лежу тут уже целых 2 минуты, а ты меня почему-то еще не подобрал.
EndIf

End
===============================================

Первый скрипт сделал квестовым и прилепил его к квесту evpTestArmorCombatQuestDoOnce, второй сделал объектным и прилепил его к evpTestArmorCombat. Все.

Сохранил плагин, подключил, загрузил игру и существующее сохранение.

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

Наверное, я все-таки тебя неправильно понял. Покажи свой скрипт.

Отредактировано evp (2011-10-26 03:59:06)

0

53

Shinshila

Или я тебя плохо понял, или ты не умеешь готовить таймеры :)

Вот к примеру:

- Я взял первую попавшуюся броню ArmorCombat, скопировал ее как evpTestArmorCombat;
- Сваял на быструю руку квест evpTestArmorCombatQuestDoOnce с единственной галочкой Start Game Enabled;
- Приготовил сообщение evpTestAlarmMessage (Message Box, окошко с кнопочкой);
- Написал два скрипта
=================================================
ScriptName evpTestArmorCombatQuestDoOnceScript

Begin GameMode

Player.PlaceAtMe evpTestArmorCombat
StopQuest evpTestArmorCombatQuestDoOnce

End
================================================
ScriptName evpTestArmorCombatScript

float timer
short count

Begin GameMode

Set timer to (timer + GetSecondsPassed)
If (timer > 120) && (count != 1)
   Set count to 1
   ShowMessage evpTestAlarmMessage   ; Я вся такая из себя броня, лежу тут уже целых 2 минуты, а ты меня почему-то еще не подобрал.
EndIf

End
===============================================

Первый скрипт сделал квестовым и прилепил его к квесту evpTestArmorCombatQuestDoOnce, второй сделал объектным и прилепил его к evpTestArmorCombat. Все.

Сохранил плагин, подключил, загрузил игру и существующее сохранение.

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

Наверное, я все-таки тебя неправильно понял. Покажи свой скрипт.

Отредактировано evp (Сегодня 03:59:06)

Да нет ты меня походу правельно понял, скрипт должен вывести сообщение 1 раз и всё, а выходит на практике что он выводит его 2 раза, в этом и прикол. Лень конечно втыкать мой скрипт учитывая что там пара косяков и от не короткий ну да ладно, выкладываю...

Script Name

int equip
float timer
ref target
int key
int tap

Begin GameMode

if IsKeyPressed 6
set tap to 1
endif

if IsKeyPressed 9
set tap to 2
endif

if (tap == 1) && (player.GetEquipped итем)
if IsKeyPressed 6 && key == 0
    set timer to 25
    set target to player.GetCombatTarget
    set key to 1
    if target == 0
;    цель не установлена
    set key to 0
    set timer to 0
    return
    endif
    if target.GetDead
;    цель мертва
    set key to 0
    set timer to 0
    set target to 0
    return
    endif
    if (target.GetIsSex male != 1) && (target.GetIsSex female != 1)
;    обьект не подлежит лечению
    set key to 0
    set timer to 0
    set target to 0
    return
    endif
elseif IsKeyPressed 6 && key == 1
    return
endif

if timer > 0
    set timer to timer - GetSecondsPassed
    return
elseif timer <= 0 && key == 1
;    вывод сообщения+переменных
    set key to 0
    set target to 0
endif
endif

if (tap == 2) && (player.GetEquipped итем)
if IsKeyPressed 9 && key == 0
    set target to player.GetCombatTarget
    set key to 1
    if target == 0
;    обьект не обнаружен или расстояние слишком велико
    set key to 0
    return
    endif
    if target.GetDead
;    цель мертва
    set key to 0
    set target to 0
    return
    endif
    if (target.GetIsSex male != 1) && (target.GetIsSex female != 1)
;    не удалось установить форму жизни
    set key to 0
    set target to 0
    return
    endif
endif
if IsKeyPressed 9 && key == 1
    return
endif
if (key == 1) && ((target.GetIsSex male == 1) || (target.GetIsSex female ==

1))
;    цикл удаления болезней+сообщение (в дальнейшем проверка на уровень

медицины)
    set key to 0
    set target to 0
endif

endif

End

Могу только добавить что у меня вот такой скрипт повешенный на оружие выдаёт 2 сообщения то есть нада 2 раза закрывать окно (если убрать таймер из тела скрипта). А вот если скажем передать переменные в квестовый скрипт и оттуда инициировать вызов сообщения (при том что сам скрипт опять же использует структуру GameMode) то сообщение появится 1 раз как и положено. То есть любой скрипт даже из твоего примера, повешенный на оружие в моём случае выдаст 2 сообщения а не 1.

Отредактировано Shinshila (2011-10-26 09:17:34)

0

54

Хм. Вроде бы не должно 2 раза выскакивать сообщение. За исключением одного момента.

Попробуем разобрать логику скрипта с самого начала.
Предположим, что игрок нажал на клавишу 5. Тогда, согласно стр. 12 (if IsKeyPressed 6), переменная tap примет значение 1. Кстати, это значение она менять не будет никогда, пока игрок не нажмет клавишу 8. Далее, при проверках на строках 20 и 21

20 if (tap == 1) && (player.GetEquipped итем)
21 if IsKeyPressed 6 && key == 0

(предположим, что итем оборудован и игрок еще не успел отжать клавишу 5), переменная timer примет значение 25, а key станет равно 1. Опять предположим, что есть какая-то цель у игрока, она жива и это человек, тогда переменная target не примет нулевое значение. После этого игра доберется до строки

49 if timer > 0

не изменит значения timer и прекратит выполнение скрипта в этом фрейме.

В следующем фрейме если игрок еще не отжал клавишу 5, завалится проверка в строке 21, но пройдется проверка в строке 45 и скрипт опять будет завершен строкой 46 до следующего фрейма. И только когда игрок отпустит клавишу 5 завалятся проверки в строках 21 и 45
21 if IsKeyPressed 6 && key == 0
45 elseif IsKeyPressed 6 && key == 1

Игра опять получит возможность продолжить выполнение скрипта в строке

49 if timer > 0

Проверка пройдена, выполняется

50    set timer to timer - GetSecondsPassed
51    return

Опять следующий фрейм, и опять строки 49, 50, 51. И так до тех пор, пока timer не станет отрицательным (прошло более 25 секунд).
Когда это случится, пройдется проверка

52  elseif timer <= 0 && key == 1

И будет выдано необходимое сообщение, обнулятся key и target, а timer так и останется отрицательным.
Совокупность этих новых значений вкупе с предыдущими проверками воспрепятствует повторному показу сообщения.

Вроде бы все в порядке, но тут игрок нажимает клавишу 8, переменная tap устанавливается в значение 2. Предыдущие проверки игнорируются, а key при определенных условиях устанавливается в 1. При этом вспомним, что timer остается все еще отрицательным. Вот тут-то, при проходе скрипта в следующем фрейме, положительно пройдется проверка

52  elseif timer <= 0 && key == 1

и будет показано сообщение еще один раз. При этом key и target будут принудительно обнулены, что, возможно не предусматривается логикой блока if (tap == 2) и приведет к непредсказуемым последствиям (точнее, вполне предсказуемым, но я не хочу углубляться в логику этого блока потому, что цель, вроде бы достигнута и объяснено повторное получение сообщения).

Решение, если я прав во всем, что написал выше и угадал проблему, то решение тут вполне тривиально - не допустить срабатывания блока с таймером вне блока if (tap == 1)

Возможно вот так:

if (tap == 1) && (player.GetEquipped итем)
   if IsKeyPressed 6 && key == 0
      set timer to 25
      set target to player.GetCombatTarget
      set key to 1
      ... бла-бла-бла...
   elseif IsKeyPressed 6 && key == 1
      return
   endif

   if timer > 0
      set timer to timer - GetSecondsPassed
      return
   elseif timer <= 0 && key == 1
      ;    вывод сообщения+переменных
      set key to 0
      set target to 0
   endif
endif
elseif (tap == 2) && (player.GetEquipped итем)
   if IsKeyPressed 9 && key == 0
       set target to player.GetCombatTarget
       set key to 1
   endif
   ... бла-бла-бла...
endif

Отредактировано evp (2011-10-27 00:45:23)

0

55

Кстати, заметил у тебя вот такие строчки:

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

if (target.GetIsSex male != 1) && (target.GetIsSex female != 1)   ;обьект не подлежит лечению
if (target.GetIsSex male != 1) && (target.GetIsSex female != 1)   ;не удалось установить форму жизни

Мне кажется, что вместо
if (target.GetIsSex male != 1) && (target.GetIsSex female != 1)
вполне можно использовать
if (target.GetIsCreature)

И, если это интересно, то можно углубить проверку и после
if (target.GetIsCreature)   ;не удалось установить форму жизни
детализировать при помощи
target.GetIsCreatureType

The Garden of Eden Creation Kit написал(а):

0 - Animal
1 - Mutated Animal
2 - Mutated Insect
3 - Abomination
4 - Supermutant
5 - Feral Ghoul
6 - Robot
7 - Giant

И если нужна еще более глубокая детализация, то сделать это можно при помощи
target.GetInFaction

Например:
if target.GetInFaction CentaurFaction
if target.GetInFaction DeathClawFaction
if target.GetInFaction DogFaction
if target.GetInFaction VCrCoyoteFaction
if target.GetInFaction SporePlantFaction

и т.д.

Отредактировано evp (2011-10-27 00:28:36)

0

56

В общем спасибо за совет. А теперь ПРИКОЛ в студию :) Оказывается та сборка игры которую я использовал где то тупит и выводит вот этот баг с двойными срабатываниями. Слил сборку попроще где чистая игра+ДЛЦ и больше ничего, и там всё норм работает по этой же схеме, срабатывает 1 раз. В общем вопрос закрытый по сути, проблема где то в модах или их конфликтах :)

P.S. вот уж не думал что моды могут так покоробить работу простейших команд.

Отредактировано Shinshila (2011-10-27 00:30:12)

0

57

Помогите пожалуйста, уже и моск и гугел сломал. Как запретить неписю компаньону подбирать оружие с земли\трупа, т.е. независимо, есть у него оружие или нету. Спасибо.

0

58

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

Помогите пожалуйста, уже и моск и гугел сломал. Как запретить неписю компаньону подбирать оружие с земли\трупа, т.е. независимо, есть у него оружие или нету. Спасибо.

На сколько я понял, ты хочешь запретить, во время боя, поднимать оружие. Правильно? Я так думаю, что нужно на время боя, через скрипт, командой EquipItemс параметрами, насильно вооружать определённой пушкой.

Встречный вопрос ко всем.

Как определить состояние одетой брони? Или экипируемой брони? Стандартными средствами возможно или только FOSE - NVSE?

0

59

А почему ГЕК Нью Вегаса не указывает на ошибки в скриптах, как это в ТЕС КС Обливиона?
Заметил ,что когда что-то не то сделаю в скрипте, нажимаю кнопку Сохранить, он молчит, а потом закрываю окно скриптов - и тогда он навязчиво переспрашивает - сохранить ли текущий скрипт? - нажимаю Да, он не закрывает окно.

А вчера написал простецкий квестовый скрипт -

scn MyQuestscript

Begin GameMode

if (Getstage MyQuest == 0) && (player.Getincell MyCell01 == 1)
setstage MyQuest 1
endif

end
Скрипт спокойно сохранился.

Потом добавил появление следующей стадии:

scn MyQuestscript

Begin GameMode

if (Getstage MyQuest == 0) && (player.Getincell MyCell01 == 1)
setstage MyQuest 1
endif

if (Getstage MyQuest == 1) && (player.Getincell MyCell02 == 1)
setstage MyQuest 2
endif

end

Фактически это был копипаст прежнего блока с правкой стадий и названия ячейки. И СКРИПТ НЕ ХОЧЕТ СОХРАНЯТЬСЯ!!!!!!

В чем дело - не пойму.

0

60

MyQuest 2
и
MyCell02
существуют????????????

0


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