scn GrupGECKScript
Begin WorkModMode
    if E==ASA
     G.E.C.K. Enable
    endif
end
перевод со "скриптового"
Начало блока
Если E равно ASA
группа GECK активна
конец проверки
конец блока

CASPER


Живу на даче.
Солнце, речка,
 лес,цветы,
клубника и вишня.
И никакого Интернета
Красота!
Galko

         G                         E                         C                        K                                                                                                                  

Главная | Мой профиль | Выход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Graf  
Форум » ИНФОРМАЦИОННЫЙ СЕКТОР » СТАТЬИ, УРОКИ, ИНСТРУКЦИИ И ТП. » Готовые скрипты для Fallout 3, Fallout NV (Скрипты для использования в различных ситуациях)
Готовые скрипты для Fallout 3, Fallout NV
KAINДата: Понедельник, 03.10.2011, 02:28 | Сообщение # 11
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт на закрывание двери на ключ, в зависимости от времени суток

scn AAASOStritDoorEnterScript

Begin OnActivate
If GetCurrentTime >= 22.00 || GetCurrentTime <= 8.00
AAAShopStritDoorEnterRef.Lock 225
else
GetCurrentTime >= 8.00 || GetCurrentTime <= 22.00
AAAShopStritDoorEnterRef.Unlock
endif
end


Можно использовать на магазинах например. Рабочий день закончился - магазин закрылся до утра.
 
KAINДата: Понедельник, 03.10.2011, 02:35 | Сообщение # 12
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт установки стадии квеста, при достижении NPC определённого места.

scn AAASORatHouseScript

short saDoOnce
begin GameMode
if (saDoOnce == 0 && GetDistance AAASORatRef02 <=64)
SetStage AAASORatQuest 40
ShowMessage AAASORatHouseMessage
Set saDoOnce to 1
endif
End


Этот скрипт срабатывает один раз, как только расстояние до тарелки AAASORatRef02 становится меньше 64 единицы.
Устанавливается стадия квеста AAASORatQuest в 40 и выводится сообщение AAASORatHouseMessage
"Мышь на месте..."
 
KAINДата: Понедельник, 03.10.2011, 02:57 | Сообщение # 13
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт начала атаки ГГ если он не выполнить приказ и не уберёт оружие в течении 5 секунд...

scn AAASOProtectionSckript

short sFlag
float fTimer

BEGIN GameMode
if sFlag == 0 && player.IsWeaponOut == 1 && GetDistance player <= 512
ShowMessage AAASOAttackMessage ; сообщение "Убрать оружие"
Set sFlag to 1
Set fTimer to 5
endif
if (fTimer > 0) && (sFlag == 1)
Set fTimer to (fTimer - GetSecondsPassed)
elseif (sFlag == 1)
SetEnemy AAASOFaction PlayerFaction ; установить фракцию враждебной
StartCombat player ; начать атаку
Set sFlag to 2
elseif (sFlag == 2) && player.IsWeaponOut == 0 && GetDistance player <= 512
player.StopCombatAlarmOnActor
AAASONPCAbakanRef.StopCombat player
AAASONPCAlisherKZRef.StopCombat player
SetAlly AAASOFaction PlayerFaction
ShowMessage AAASOStopAttackMessage
SetAlly AAASOFaction PlayerFaction
Set sFlag to 0
endif
endif
End


Если в руках игрока оружие и расстояние до него меньше 512, выводится сообщение "Убрать оружие", по истечении 5 секунд фракция NPC устанавливается враждебной, к фракции игрока и NPC на котором "висит" скрипт начинает атаку.
Если игрок убирает оружие, атаки останавливаются AAASONPCAbakanRef.StopCombat player выводится сообщение "Спасибо за сотрудничество" и фракция устанавливается дружественной игроку.
В скрипте нужно останавливать StopCombat player атаку для всех NPC этой фракции находящихся в локации.
AAASONPCAbakanRef.StopCombat player
AAASONPCAlisherKZRef.StopCombat player

..... и так далее.
Kазалось бы фракция установлена в дружественную, зачем останавливать атаку каждого NPC по имённо. По различным причинам, если хотя бы один NPC продолжит атаковать, то вся фракции вновь нападёт на игрока.
Поэтому останавливают атаку всех.
 
KAINДата: Четверг, 03.11.2011, 15:45 | Сообщение # 14
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт включения радиостанции (первого включения до этого момента её не было в Пип-бое)

Помог Sergey_Ros с сайта ModTec (см. баннер на главной)
Как решить проблему
Раз станция неактивна до определенного момента, значит игре не обязательно ее обрабатывать. Делаем следующее:
- Открываем окно Ref-копии объекта, исполняющего роль радиостанции.
- Устанавливаем флажок напротив поля "Initially Disabled".
- Изменяем скрипт следующим образом:
scn AAAKainRadioScript

Short Stage
Short Button

Begin OnActivate
if (Stage == 0)
ShowMessage AAARadioOffisMessage
Set Stage to 1
endif
End

Begin GameMode
if (Stage == 1)
Set Button to GetButtonPressed
if (Button > -1)
if (Button == 0)
AAARadioOffisTARef.Enable
if (AAARadioOffisTARef.GetDisabled != 1)
AAARadioOffisTARef.SetBroadcastState 1
Set Stage to 2
endif
elseif (Button == 1)
Set Stage to 2
endif
endif
endif
End


Как изменился скрипт
Раз мы отключили объект, значит, в будущем мы его планируем включить. Что и делаем командой "AAARadioOffisTARef.Enable". Также я добавил проверку на включение объекта "if (AAARadioOffisTARef.GetDisabled != 1)". Это может быть важно, т.к. скрипт может сработать быстрее, чем загрузится объект. То есть команда "AAARadioOffisTARef.SetBroadcastState 1" не сработает, потому что в этот момент объект "AAARadioOffisTARef" не был полностью загружен.
 
KAINДата: Четверг, 03.11.2011, 15:56 | Сообщение # 15
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт для смены стадии квеста при наличии предмета.

Часто бывает нужно сменить стадию квеста при нахождении предмета, это можно сделать так:

scn aaaModTecItemCounterSCRIPT

short DoOnce

Begin GameMode
if (DoOnce == 0)
if (Player.GetItemCount ИмяПредмета >= 10)
SetStage ИмяКвеста СтадияКвеста
set DoOnce to 1
endif
endif
End


if (Player.GetItemCount ИмяПредмета >= 10) это проверка наличия предмета в инвентаре игрока - больше или равно 10 ( 10 количество предметов)
short DoOnce - это переменная, при помощи которой мы ограничиваем работу скрипта до 1 раза
if (DoOnce == 0) - если DoOnce == 0 скрипт срабатывает
set DoOnce to 1 - установили переменную в 1, и скрипт больше не сработает, так как это условие не выполняется if (DoOnce == 0)
SetStage ИмяКвеста СтадияКвеста - команда на установку стадии.
 
GrafДата: Воскресенье, 20.11.2011, 05:12 | Сообщение # 16
Маршал
Группа: Модераторы
Сообщений: 106
Статус: Offline
Вопрос: Как сделать что бы нужно было положить определённый объект, на определённое место (через "Z") и при этом стадия квеста переходила на следующую?

Ответ: Для этого нужно создать три объекта, и дать им Ref ссылки:
Я взял пример со своей арены, берём первую фишку (раздел world objects -> static), ложим туда, где нужно чтобы наша фишка появилялась (и даём ей Ref ссылку, у меня "aaaArenaModYPOBEHb2ChipKey3Ref") и не забываем нажать Disable (что бы наша фишка не появилась раньше времени).После этого берём Xmarker (раздел world objects -> static) даём ему Ref ссылку, у меня "aaaArenaModYPOBEHb2ChipKey1Marker1Ref", и ставим туда же, где и стоит наша фишка:



Далее создаём третью фишку (раздел world objects -> movable static), подписуем её (как угодно), и даём ей Ref ссылку, у меня "aaaArenaModYPOBEHb2ChipKey1Ref". Теперь создаем квест, и вешаем на него скрипт:
Code

Short CodeKey1

Begin GameMode

if ( CodeKey1 == 0 )
if ( aaaArenaModYPOBEHb2ChipKey1Ref.GetDistance, aaaArenaModYPOBEHb2ChipKey1Marker1Ref <= 5 )
      "aaaArenaModYPOBEHb2ChipKey3Ref".Enable
      "aaaArenaModYPOBEHb2ChipKey1Ref".Disable
      SetStage Idquest 20
      PlaySound "DRSPlaypenOpenA"
      Set CodeKey1 to 1
endif
endif
End


Небольшое объяснение:
if ( aaaArenaModYPOBEHb2ChipKey1Ref.GetDistance, aaaArenaModYPOBEHb2ChipKey1Marker1Ref <= 5 )
Если aaaArenaModYPOBEHb2ChipKey1Ref (обычная фишка) будит на дистандии меньше или 5, от макера (aaaArenaModYPOBEHb2ChipKey1Marker1Ref). Тогда:

"aaaArenaModYPOBEHb2ChipKey3Ref".Enable ;нужная фишка появится
"aaaArenaModYPOBEHb2ChipKey1Ref".Disable ;ту которую ложили, ищезнет
PlaySound "DRSPlaypenOpenA" ;проигрывается звук
SetStage Idquest 20 - квест Idquest переходит на стадию 20

Надеюсь понятно объяснил, пока!


Сообщение отредактировал Graf - Воскресенье, 20.11.2011, 05:14
 
KAINДата: Четверг, 26.01.2012, 21:03 | Сообщение # 17
Генералисимус
Группа: Администраторы
Сообщений: 442
Статус: Offline
Скрипт запрета одеть шлем, если не одета спец. броня

scn HelmetScript

Begin onEquip player
if player.getequipped AAAKainArmor == 0
player.unequipitem AAAKainHelmet 0 1
showmessage AAAKainHelmetNO ;Внешние разъёмы не обнаружены - Отказ подключения.
elseif player.getequipped AAAKainArmor == 1
showmessage AAAKainHelmetON ;Внешние разъёмы задействованы - Питание подключено.
endif
end
Begin OnUnequip Player
if player.getequipped AAAKainArmor == 1
showmessage AAAKainHelmetOFF ;Разрыв цепи - Питание отключено. Переход в стандартный режим.
endif
end


В этом скрипте перед одеванием шлема - проверяется одета ли броня, и если нет то выводится сообщение - Отказ...
А при снимании делается проверка одета ли броня, если да то выводится сообщение - Разрыв цепи....
*
Можно использовать для какой нибудь примочки к броне, например одели на броню специальный блок питания и у брони повысилось сопротивление урону, износу и тп. Сняли - броня вернулась к стандартным значениям.
Скрипт "вещается" на шлем (блок питания и тп. - на то что будет одеваться "поверх" брони)
А вот на саму броню назначить скрипт для изменения её характеристик, в котором делать проверку на то одет шлем (блок питания и тп.) или нет.
 
GrafДата: Суббота, 24.03.2012, 12:28 | Сообщение # 18
Маршал
Группа: Модераторы
Сообщений: 106
Статус: Offline
Скрипт бесконечного движения вправо влело

Устанавливаем светильник и даём ему Ref aaaTestLightRef, слева ложем Xmarker и даем Ref ссылку aaaTestMarker1Ref, и справа ложем Xmarker и даём ему Ref ссылку aaaTestMarker2Ref вот что получилось у меня (скрин с Geck):


Движение объекта светильника aaaTestLightRef будет происходить, от маркера aaaTestMarker1Ref, к маркеру aaaTestMarker2Ref, каждый раз приближаясь к маркеру меняя движение в другую сторону (к другому маркеру). Следовательно, движение будет от маркера к маркеру бесконечным, вот скрипт на светильник:
Code

Float YPos
Float YAchse

Short State

Begin GameMode

if ( aaaTestLightRef.GetDistance, aaaTestMarker1Ref <= 20 ) ;движение вправо
    Set State to 0
endif

    if ( State == 0 )
     Set YPos to GetPos X
     Set YAchse to YPos +1
     SetPos X Yachse
    endif

if ( aaaTestLightRef.GetDistance, aaaTestMarker2Ref  <= 20 ) ; движение влево
    Set State to 1
endif

    if ( State == 1 )
     Set YPos to GetPos X
     Set YAchse to YPos -1
     SetPos X Yachse
    endif

End

============
Объяснение
============
; Если до левого маркера осталась дистанция меньше 20, тогда устанавливаем State 0 и устанавливаем движение в другую сторону

; Если до правого маркера осталась дистанция меньше 20, тогда устанавливаем State 1 и устанавливаем движение в другую сторону

;-1 и +1 это установленная скорость движения объекта (шаги гг, не бег)

;Следовательно, движение будет от маркера к маркеру бесконечным.


Сообщение отредактировал Graf - Воскресенье, 25.03.2012, 22:36
 
zxczxcДата: Четверг, 20.03.2014, 20:57 | Сообщение # 19
Капитан
Группа: Пользователи
Сообщений: 1
Статус: Offline
Graf, Граф ты нам нужен.
 
GrafДата: Понедельник, 26.05.2014, 01:01 | Сообщение # 20
Маршал
Группа: Модераторы
Сообщений: 106
Статус: Offline
zxczxc, для чего?
 
Форум » ИНФОРМАЦИОННЫЙ СЕКТОР » СТАТЬИ, УРОКИ, ИНСТРУКЦИИ И ТП. » Готовые скрипты для Fallout 3, Fallout NV (Скрипты для использования в различных ситуациях)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:


Copyright MyCorp © 2024
Бесплатный хостинг uCoz