Форум «Лабортории Mod-Tec»

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

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


Вы здесь » Форум «Лабортории Mod-Tec» » G.E.C.K. Community » Помощь по скриптам Fallout 3 и Fallout: New Vegas


Помощь по скриптам Fallout 3 и Fallout: New Vegas

Сообщений 301 страница 330 из 350

301

Серёга написал(а):

Теперь при нажатии на вервый button выбивает ошибку в игре.

Дело в том, что блок onEquip не срабатывает, если броня одета через скрипт. Поэтому нужно искать обходной путь. Ошибка скорее всего в этом блоке:

Код:
if (Myself == 0)
    set Myself to GetSelf
    if (Player.GetEquipped Myself == 1) && (Driving != 1)
    set Driving to 1
    set ModSpeed to 100
    DisablePlayerControls 0 0 1 0 0 1 1
    endif
endif

0

302

Sergey_Ros, Значит прийдется одевать броню самостоятельно в любом случае ? Жаль, очень жаль. Ну тогда сделаю броню 200 фунтов веса а при её недавнии + 200 фунтов веса. Наверно самый более менее нормальный вариант.

Отредактировано Серёга (01.08.11 14:59:20)

0

303

Серёга написал(а):

Значит прийдется одевать броню самостоятельно в любом случае

Я предложил поискать альтернативный вариант, но дело ваше.

0

304

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

Я предложил поискать альтернативный вариант, но дело ваше.

Послушал вас, нашол другой вариант, правда немного кривоватый но сгодиться.

Вот теперь такая проблема:

Скрипт|Скрипт

REF Target

begin ScriptEffectStart

if GetDead == 0
    if Target.GetIsRace Ghoul == 1 ;гуль
    disable
    placeAtMe aaaWeaponMagicGoul 1
endif
endif
if GetDead == 0
    if Target.GetIsSex Male == 1 || Target.GetIsSex Female == 1 ;нпц превращаются в гулей
    disable
    placeAtMe aaaWeaponMagicFMGoul 1
endif
endif

if GetDead == 0
    if Target.GetInFaction SuperMutantFaction == 1 ;супер-мутант
    disable
    placeAtMe aaaWeaponMagicSuperMutant 1
endif
endif

if GetDead == 0
    if Target.GetInFaction FeralGhoulFaction == 1 ;дикий гуль
    disable
    placeAtMe aaaWeaponMagicFeralGhoul 1
endif
endif

if GetDead == 0
    if Target.GetInFaction CreatureHitDeathClaw == 1 ;коготь смерти
    disable
    placeAtMe aaaWeaponMagicDeathClaw 1

endif
endif
End

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

0

305

Серёга, скорее всего ошибка в этом условии:

Код:
 if Target.GetIsSex Male == 1 || Target.GetIsSex Female == 1

Вы стреляли в какого гуля? Который еще не стал диким? В отличие от диких гулей, у них есть разделение на мужчин и женщин. Именно поэтому в скрипте срабатывают два блока (появляется НПЦ и гуль), а не один.

0

306

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

скорее всего ошибка в этом условии:

Ясно тогда оставлю только несколько фракций.

Вот тут назрел другой вопрос, я тут сделал возможность "вселятся в Когтя Смерти" сделал чтобы можно было бегать им но не получилось сделать чтобы он мог атаковать, вот собственно скрипт:

Скрипт|Скрипт

ref myCentaur
ref myMapMarker
float zangle
float Pzangle
short mygroup
float playerhealth
float isRiding

float pos
float ang

float myxxx
float myyyy
float myzzz
short dunce
short doonce

short run

begin onactivate

if GetDead == 0
if IsInInterior == 0
    if dunce == 0
    set mycentaur to getself
    con_SetGameSetting fOverShoulderOffsetPointZoomingY 0
    con_SetGameSetting fOverShoulderOffsetPointZoomingX 0
    con_SetGameSetting fOverShoulderOffsetPointX 0
    con_SetGameSetting fOverShoulderRotMult 0
    con_SetGameSetting fOverShoulderPosX 0
    set myxxx to mycentaur.getpos x
    set myyyy to mycentaur.getpos y
    set myzzz to mycentaur.getpos z +10
    set myzzz to myzzz + 100
    player.setpos x myxxx
    player.setpos y myyyy
    player.setpos z myzzz
    set dunce to 1
    set IsRiding to 1
    DisablePlayerControls 1 0 1 0 0 1 1
    player.setactoralpha 0
    EnableKey 256
    EnableKey 257
    player.setscale 0.3
    mycentaur.SetRestrained 1
    set playerhealth to player.GetHealthPercentage
    set doonce to 1
    endif
endif
elseif GetDead == 1
activate
endif
endif
endif
end

begin gamemode

if player.gethealthpercentage < playerhealth
player.resethealth
endif

if IsControlPressed 9 == 1
set run to 0
elseif iscontrolpressed 9 == 0
set run to 1
endif

if dunce == 1
player.playgroup idle 1
set mycentaur to getself
set myxxx to mycentaur.getpos x
set myyyy to mycentaur.getpos y
set myzzz to mycentaur.getpos z
if pc1st == 0
    set myzzz to myzzz + 20
endif
set myzzz to myzzz + 200
player.setpos x myxxx
player.setpos y myyyy
player.setpos z myzzz
myMapMarker.setpos x myxxx
myMapMarker.setpos y myyyy
myMapMarker.setpos z myzzz

if IsControlPressed 12 == 1 && doonce == 1
EnablePlayerControls 1 0 1 0 0 1 1
player.setactoralpha 100
set IsRiding to 0
set dunce to 0
set doonce to 0
player.setscale 1
con_SetGameSetting fOverShoulderOffsetPointZoomingY 10000
con_SetGameSetting fOverShoulderOffsetPointZoomingX 0
con_SetGameSetting fOverShoulderOffsetPointX 98.400002
con_SetGameSetting fOverShoulderRotMult 0.6
con_SetGameSetting fOverShoulderPosX 40
endif

if IsControlPressed 0 == 1 && mygroup == 0 && run == 0
mycentaur.playgroup fastforward 1
set mygroup to 1

elseif run == 1 && IsControlPressed 0 == 1 && mygroup == 0
mycentaur.playgroup fastforward 1
set mygroup to 1

elseif IsControlPressed 0 == 0 && mygroup == 1
mycentaur.playgroup idle 1
set mygroup to 0

elseif iscontrolpressed  1 == 1 && mygroup == 0 && run == 0 && IsControlPressed 0 == 0
mycentaur.playgroup fastbackward 1
set mygroup to 2

elseif IsControlPressed 1 == 0 && mygroup == 2
mycentaur.playgroup idle 1
set mygroup to 0

elseif run == 1 && IsControlPressed 1== 1 && mygroup ==0  && IsControlPressed 0 == 0
mycentaur.playgroup fastbackward 1
set mygroup to 2

elseif iscontrolpressed  2 == 1
set zangle to mycentaur.getangle z -2
mycentaur.setangle z zangle
set pzangle to player.getangle z -1
player.setangle z pzangle

if mygroup != 3 &&  IsControlPressed 0 == 0
mycentaur.playgroup turnleft 1
set mygroup to 3
endif

elseif IsControlPressed 2 == 0 && mygroup == 3
mycentaur.playgroup idle 1
set mygroup to 0

elseif iscontrolpressed  3 == 1
set zangle to mycentaur.getangle z +2
set pzangle to player.getangle z +1
player.setangle z pzangle
mycentaur.setangle z zangle
if mygroup != 4 && IsControlPressed 0 == 0
    mycentaur.playgroup turnright 1
    set mygroup to 4
endif

elseif IsControlPressed 3 == 0 && mygroup == 4
mycentaur.playgroup idle 1
set mygroup to 0
endif

elseif isriding == 0
mycentaur.playgroup idle 1
endif
end

begin onDeath
EnablePlayerControls 1 0 1 0 0 1 1
player.setactoralpha 100
set IsRiding to 0
set dunce to 0
set doonce to 0
player.setscale 1
con_SetGameSetting fOverShoulderOffsetPointZoomingY 10000
con_SetGameSetting fOverShoulderOffsetPointZoomingX 0
con_SetGameSetting fOverShoulderOffsetPointX 98.400002
con_SetGameSetting fOverShoulderRotMult 0.6
con_SetGameSetting fOverShoulderPosX 40
end

Я пробывал много разных способов добавить в скрипт возможность атаковать, но не получилось, возможно вы сможете что нибудь подсказать мне.

0

307

Здравствуйте! вопрос касательно Fallout 3 (Золотое издание). В игре присутствуют моменты "бездействия", например, как в разговоре Ли со старейшиной в цитадели. Можно управлять только обзором. Скажите, пожалуйста, какой скрипт позволяет выйти из этого состояния, ибо оно как раз и заклинивает...
PS. В одном из заданий, там, где проникаешь на базу Анклава через президентскую ветку метро (причем, как активный квест он не высвечивается), вызываешь арт-обстрел на платформу (самоуничтожение). После сбегаешь на винтокрыле с Лайонс (промежуточно порадовавшись виду разрушаемого строения), попадаешь на базу "цитадель". Лайонс уходит, а гг остается стоять и бездействовать...
Заранее благодарю.

0

308

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

Здравствуйте! вопрос касательно Fallout 3 (Золотое издание). В игре присутствуют моменты "бездействия", например, как в разговоре Ли со старейшиной в цитадели. Можно управлять только обзором. Скажите, пожалуйста, какой скрипт позволяет выйти из этого состояния, ибо оно как раз и заклинивает...
PS. В одном из заданий, там, где проникаешь на базу Анклава через президентскую ветку метро (причем, как активный квест он не высвечивается), вызываешь арт-обстрел на платформу (самоуничтожение). После сбегаешь на винтокрыле с Лайонс (промежуточно порадовавшись виду разрушаемого строения), попадаешь на базу "цитадель". Лайонс уходит, а гг остается стоять и бездействовать...
Заранее благодарю.

Привет, возможно просто поможет загрузить более ранее сохранение. Если не поможет то можно попробовать когда все диалоги закончатся открыть консоль (Ё) и ввести следующее: EnablePlayerControls
Надеюсь что помог.

Отредактировано Musstafar (15.08.11 10:45:28)

0

309

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

открыть консоль (Ё) и ввести следующее: EnablePlayerControls
Надеюсь что помог.

Помогли, благодарю!) Проблема решена в корне.

0

310

Привет всем!
Мне нужно решить такую задачу.
Сейчас в терминале при выборе 3 кнопки - на маркер выносится крыса и это делается постоянно и при следующих нажатиях.
А мне нужно, что бы при втором выборе этой 3 кнопки - на маркере появлялась "Рука Смерти"
сейчас на кнопке такой Result скрипт
ref myLink
set myLink to getLinkedRef
myLink.SetOpenState 1
AAASOAtackMarkerRef.PlaceAtMe AAASORat.
У меня самого есть только такой вариант - этот терминал Disable, а такой же, но с другим скриптом на третьей кнопке Enable.
Может можно по другому сделать? Просто вписать в скрипт 3 кнопки переменную и проверки.
Если такое возможно - Подскажите как это сделать.
Пока.

0

311

K.A.I.N.48, попробуйте такой код:

Код:
short State
ref myLink

set myLink to getLinkedRef
myLink.SetOpenState 1
if (State == 0)
   AAASOAtackMarkerRef.PlaceAtMe AAASORat
   set State to 1
else
   AAASOAtackMarkerRef.PlaceAtMe РукаСмерти
endif

Если не будет работать, следует сделать дубликат кнопки и повесить на обе условия (на проверку переменных квестового скрипта или НПЦ). Тем самым при первом нажатии появится крыса (будет показана первая кнопка), а при втором нажатии - Рука Смерти (вторая кнопка).

0

312

Привет всем!
Sergey_Ros спасибо за совет- я всё сделал! По второму способу - создал квест и стадии, а терминале добавил копию кнопку и проверку на текущую стадию.
Вариант в виде скрипта - не стал работать, хотя должен! Я видел в результирующих скриптах квестов  скрипты с проверками и else и elseif а вот на переменные там и их установку не обращал внимания.
Но второй вариант с квестом, то же хорошо. Теперь есть свободный квест - для дополнительных условий.
Спасибо!
Пока.

0

313

Привет всем!
Помогите мне пожалуйста решить такую задачу.
У меня у стены здания стоит NPC
http://savepic.net/1923517.jpg
А мимо ( с левой стороны) пробегает другой - вот до того Триггера у входа в здание (с права)
Мне нужно что бы стоящий - убил пробегающего
Я уже у так и так - всё перепробовал.
У бегущего NPC пакет Travel
На триггере (с левой стороны - его не видно) я уже и фракцию на враждебную ставил
Если пробегающему ставлю агрессивность выше то он нападает на стоящего, а тот не стреляет, пока его не начинают бить. Если ставлю низкую - NPC начинает бегать кругами (видимо боится!) а выполнять пакет надо.
Решил не менять фракцию а заморозить непися у входа и потом поменять, что бы не убегал.
Сделал так

Код:
scn AAASONPCSmitSetRestrainedTriggerSCRIPT

short sDoOnce
Begin OnTriggerEnter AAASONPCSmittRef
if (sDoOnce == 0)
SetRestrained 1
Setenemy AAASOFaction  AAASONPCSmittFaction    
AAASONPCMorfiusBosRef.StartCombat AAASONPCSmittRef
Set sDoOnce to 1
endif
End

Бегающий NPC -не замораживается, а сбегает в дверь телепорт, потом правда выскакивает обратно. И его убивают.
А мне надо, что бы пробегающий был убит, либо не добежав до здания, либо, как только добежит.
Игра вроде боевая, а прямой команды убить нет! Без всяких фракций, уровня агрессии, пакетов.
Что бы убить одного NPC приходится городить такой огород!
Может плохо то, что NPC стоит на маркере и иму нужно время - сойти с него?
Одним словом - пол дня возни, а результат смешной. На самом деле смешной!
AAASONPCMorfiusBosRef.StartCombat AAASONPCSmittRef а вот эта команда StartCombat - работает одинаково - вне зависимости, какой NPC написан до неё, а какой после.
Пробегающий - всегда нападает.
Помогите убить "поганца" и быстро.
Пока.

Отредактировано K.A.I.N.48 (20.08.11 21:40:43)

0

314

Я так думаю, что тут с пакетами фиг сыграешь. Могу предложить сделать так. Как только непись вбегает в триггер, на стоящем у стены проигрываем анимацию атаки, а бегущего грохаем командой KillActor.

+1

315

Привет всем!
Wulf спасибо! Я попробовал - нормально. Отодвинул немного дальше триггер с которого начинается эта сцена. Игрок ещё далеко и не особо заметно куда направлен пистолет. Только я не анимацию сделал а SetAlert 1 - команда заставляет непися занять боевое положение - достать оружие. Поставлю ещё аудио маркер и звук выстрела. И будет хорошо!
А StartCombat позже домучаю - должен он работать, в игре кругом в скриптах используется - в основном против игрока.
Пока.

0

316

Ну дык начать заскриптованную засаду это одно, а в твоём случае это короткую сценку проиграть. Тут с пакетами фиг сыграешь. Кстати перед командой  SetAlert разворачивай непися в нужную сторону и всё (Rotate).

0

317

Такой вопрос:

Как с помощью скрипта повесить камеру на определенный объект. Хочу сделать катсцену .  Сделал в максе анимацию камеры, экспортировал как камеру, и теперь, как скриптом переключится на эту анимированную кость камеры?

0

318

можно спросить я просто новечёк :suspicious:  как скрипты делать

0

319

подскажите плиз! моды хочится делать  :)

Отредактировано sas (25.08.11 16:19:55)

0

320

да согласен я нуб  :suspicious: помогите плиззззззззззззззззззззззззззз

0

321

sas, Привет!
Скрипты, это такой предмет, которому в двух словах не научишь. И помочь тут тебе не чем. Как говорится - помоги себе сам! Скачай вот этот урок
Задачник по скриптам, скачай вот этот урок Скрипты - первые шаги., скачай справочник по скриптам OSFM v 1.2.0. Посмотри и почитай всё это. И после этого не пропадёт желание - начинай писать сам, для начала взяв за образец скрипты из игры и меняя их под свои цели.
Так все начинают - сначала смотрят, потом изменяют и дополняют.
А потом начинают писать свои короткие и простые, а что не получается - спрашивают.
Так что пиши скрипт и если не будет работать приходи за ответами.
А флудилка у нас тут Комната Флуда!. На всякий случай - вдруг ещё сильнее на себя наговаривать начнёшь, после того, как заглянешь в OSFM!
Пока.

Отредактировано K.A.I.N.48 (25.08.11 23:30:09)

0

322

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

подскажите плиз! моды хочится делать

Чтобы моды делать, не обезательно знать скрипты.

0

323

Привет всем!

Код:
scn AAASODoorHollSCRIPT

Begin OnActivate
if (AAASOHollDoorRef.GetLocked == 225) 
SetStage AAASOHollDoorQuest 10
AAASONPCShenRef.startconversation player HELLO
else
Activate
endif
end

Помогите разобраться почему это не работает.
В Conversation квеста топик HELLO создан и в Condition GetStage AAASOHollDoorQuest == 10 установлено
Стадии квеста AAASOHollDoorQuest то же есть.
И ещё, как в этот скрипт ввести ещё такие проверки
if (AAASOHollDoorRef.GetLocked == 225) && (GetStage SetStage AAASOHollDoorQuest == 10)
SetStage AAASOHollDoorQuest 20
AAASONPCShenRef.startconversation player Alarm01
и
if (AAASOHollDoorRef.GetLocked == 225) && (GetStage SetStage AAASOHollDoorQuest == 20)
SetStage AAASOHollDoorQuest 30
AAASONPCShenRef.startconversation player Alarm02
Как это сделать - elseif первая (Alarm01) , затем elseif вторая (Alarm02)
Мне не понятно где закрывать проверки endif сразу под каждой или под всеми внизу
if........................
endif
elseif..................
endif
elseif..................
endif
else
Activate
end
Или так
if........................
elseif..................
elseif..................
else
Activate
endif
endif
endif
end
Мне нужно, что бы при закрытой двери, если ГГ пытается выйти NPC говорил по очереди 3 реплики из Conversation
Ну а при 4 попытке ГГ выйти (открыть дверь) StartCombat player (неписи атаковали ГГ).
Мне уже объяснял один человек (Hedge) про сравнение
"ну смотри пишешь

if а==в
делать то
else
делать это
endif
соответственно игра проверяет если а==в, то она делает то, а ИНАЧЕ, если а не равно в - она делает это"
С этим я разобрался, а вот с самим построение скрипта - в чём разница между первым вариантом, когда проверка "закрывается" сразу и вторым (когда закрываются все внизу блока) не понял.
Он (Hedge) объяснял про "вложенные" проверки, а я скопировал куда то объяснение и потерял - там наверное про это как раз и было.
Пока.

Отредактировано K.A.I.N.48 (04.09.11 11:49:43)

0

324

По поводу блоков if:
if - открывает блок, обязательно указывается условие (если [условие]).
elseif - эта строчка практически полный аналог if. Отличия 2: она не может быть первой (первая обязательно if), в блоке её можно указывать любое количество раз (иначе если [условие]).
else - то же самое что if, без условия. В скрипте упоминается только один раз, в конце (иначе).
endif - закрытие блока. На один if приходится один endif (закрытие блока).

Вот несколько примеров с проверкой некой переменной AAA:
1) if (AAA == 1)
       ...
    else
       ...
    endif

2) if (AAA == 1)
       ...
    elseif (AAA == 2)
       ...
    elseif (AAA == 3)
       ...
    endif

3) if (AAA == 1)
       ...
    elseif (AAA == 2)
       ...
    elseif (AAA == 3)
       ...
    else
       ...
    endif

4) if (AAA == 1)
       if (XXX == 1)
          ...
       elseif (XXX == 2)
          ...
       endif
    else
       ...
    endif

0

325

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

На один if приходится один endif

А на один elseif ? В примерах MuxauJl, выше на только для if есть  endif, а для elseif они не нужны?
Я понимаю, что в таком варианте
1) if (AAA == 1)
    диалог
    else
    дверь открывается
    endif
Здесь есть if и endif для него
А вот в таком
2) if (AAA == 1)
      диалог первый
    elseif (AAA == 2)
      диалог второй
    else
      дверь открывается
    endif
Здесь есть if и endif  для него, а для elseif видимо не нужно.
А вот в таком примере
if (AAA == 1)
...
Endif
If (BBB == 1)
...
Endif
if (CCC == 1)
...
endif
Как скрипт работает - проверяется первое условие и если совпало, то скрипт останавливается после endif
А если не совпало проверяется следующее и снова останавливается если совпало. И так далее.
А в таком
if (AAA == 1)
...
If (BBB == 1)
...
if (CCC == 1)
...
endif
endif
endif
Даже если совпало первое условие скрипт будет читаться до конца - до своего endif
Видимо для этого и сделан elseif - что бы не было списка из endif в конце блока.
Как сказал бы Spdlny Vagon про меня: - "Товарищ! Хватит гадать на кофейной гуще - читайте...". И он наверное прав!
Видимо мне по примерам не научится.
Не знаете, а на какой язык программирования походит этот из Обливион - Fallout, я похоже не преодолею этот барьер, после которого открывается "второе дыхание" и приходит понимание - без изучения основ.
Пока.

0

326

K.A.I.N.48 написал(а):

а для elseif они не нужны?

Некоторые пишут, некоторые нет, скрипт будет сохранятся. Но писать не обизательно.

0

327

K.A.I.N.48, на самом деле любой язык программирования куда сложнее чем скриптовый язык обливион, ф3, вегаса. Поэтому для того чтобы его изучить и понять, не нужно разбираться в программировании. Правда нужно понимать что в скриптах используется не привычная нам, человеческая логика, а машинная. Т.е. что "сказано", то и будет сделано. Малейшая ошибка, неточность - скрипт не работоспособен или функционирует неправильно.
На самом деле if...endif - это один единый блок, как, например, begin...end. Только необходим он для задания условия, при котором выполнится команда внутри блока. Команды elseif и else - это дополнительные пристройки, "живущие" внутри блока и расширяющие его функциональность. Они не требуют окончания в виде endif, т.к. оно есть у самого блока.
По своей сути, блок:

Код:
if (AAA == 1)
...
elseIf (BBB == 1)
...
elseif (CCC == 1)
...
endif

аналогичен блоку:

Код:
if (AAA == 1)
...
Endif
If (BBB == 1)
...
Endif
if (CCC == 1)
...
endif

Т.е. функционируют они практически одинаково. Разница лишь в написании. Само собой первый вариант более грамотный и, соответственно, предпочтительный. Да и со временем он становится родным и понятным.

K.A.I.N.48 написал(а):

Как скрипт работает - проверяется первое условие и если совпало, то скрипт останавливается после endif
А если не совпало проверяется следующее и снова останавливается если совпало. И так далее.

Вот таким же образом функционирует и первый вариант. Только проверка скрипта в обоих случаях не прекращается, а начинается сначала. Но все строчки ниже (т.е. второй и третий вариант) не будут срабатывать, пока совпадает первое условие.
P.S. Сейчас вот подумал... во втором варианте все равно будут проверяться все блоки, так что, не совсем они одинаковые, но на деле чаще всего будут срабатывать аналогичным образом.
Вот пример:

Свернутый текст
Код:
if (AAA == 1)
...
elseIf (BBB == 1)
...
elseif (CCC == 1)
...
endif

1) Допустим, AAA = 1, BBB = 1 и CCC = 1. Начинается проверка AAA. Совпадение, выполнение условия записанного под AAA и скрипт начинает проверяться игрой сначала. Т.е. какими бы ни были значения BBB и CCC, их подблоки не сработают.
2) Допустим, AAA = 2, BBB = 1 и CCC = 1. Начинается проверка AAA. Не совпало, проверка BBB. Совпадение, выполнение условия записанного под BBB и скрипт начинает проверяться игрой сначала.

Со следующим блоком ситуация другая:

Код:
if (AAA == 1)
...
If (BBB == 1)
...
if (CCC == 1)
...
endif
endif
endif

В данном случае условие CCC выполнится только если все значения совпадут. Т.е. как двери в какое-то хранилище: пока не откроется предыдущая, не будет возможности открыть следующую.
Чтобы было проще для восприятия, подобные блоки записывают так:
if (AAA == 1)
   ...
   If (BBB == 1)
      ...
      if (CCC == 1)
         ...
      endif
    endif
endif
Теперь видно какой if к какому endif относится и как вообще эта "матрёшка" устроена.

+1

328

K.A.I.N.48 написал(а):

SetStage AAASOHollDoorQuest 10

Тут же вроде переход на стадию 10.

K.A.I.N.48 написал(а):

и в Condition GetStage AAASOHollDoorQuest == 10 установлено

А тут если стадия уже равна 10, но стадия ещё не выполнена, и не может быть ровна 10.

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

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

Сложнее да, но не учтено то, что по этим языкам много уроков, а вот язык Фо3 или Облы нужно изучать самому.

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

Отредактировано Graf (04.09.11 18:50:03)

+1

329

MuxauJl, Спасибо за объяснения.
Теперь попробую понять на практике - для начало например на этом скрипте.
Begin GameMode
If GetCurrentTime >= 22.00 || GetCurrentTime <= 8.00
AAADoorRef.SetOpenState 0
elseif player.IsWeaponOut == 1
BBBDoorRef.SetOpenState 0
elseif player.GetEquipped  Костюм без галстука
BBBDoorRef.SetOpenState 0
else
GetCurrentTime >= 8.00 || GetCurrentTime <= 22.00
AAADoorRef.SetOpenState 1
endif
end
Если я правильно понял должно читаться так
Если ночь
Дверь закрыта
Иначе если (ещё) у игрока в руках оружие
Дверь закрыта
Иначе если - не тот костюм
Дверь закрыта
Иначе
Днём дверь открыта.
Я понимаю, что этот скрипт можно написать для этих условий по разному, здесь как бы основное - это время суток, а оружие и одежда - дополнительные условия, при которых основное не будет выполнено.
И видимо в этом примере нет большой разницы от житейской логики.
- Как бы сказал человек - днём дверь открыта всегда если  нет оружия и одежда подходящая.
Но мог сказать и так - Дверь закрыта всегда ночью и если в руках есть оружие и одежда не та - тебе не откроют!
Пойду проверю, что получится - будет работать или нет.
Ещё раз спасибо! Пока.

0

330

Graf, Привет спасибо!
Я проверю это место, и попробую устанавливать стадию до этого диалога, в другом.
А ведь точно! В скрипте только ставиться 10 стадия, а в диалоге в нужном топике она стоит. Из - за этого непись и не говорит - просто нечего говорить.
Спасибо!
Пока.

0


Вы здесь » Форум «Лабортории Mod-Tec» » G.E.C.K. Community » Помощь по скриптам Fallout 3 и Fallout: New Vegas