Вверх Вниз


Модератор форума: Ipatow, КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Скрипты
a3apbi4  Offline Сообщение №1 написано: 07 Декабря 2010 в 21:01


Странник


11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




VIPerMX  Offline Сообщение №1351 написано: 20 Апреля 2014 в 00:43 | Отредактировано: VIPerMX - Четверг, 01 Мая 2014, 04:09



173
Spalny_Vagon, Попробовал, не сработало. Я к первому оператору ветвления добавил еще else  с set sFlаg чтоб осуществлялся переход на следующий трек, если данного нет. Тогда у меня получился жуткий шум, видимо он пытался что-то запустить каждую секунду. Добавил затем дополнительную проверку на флаги - он стал играть последнюю песню и исключительно в меню игры или в пипбое... бред.

В общем я решил на это дело забить, жаль в Фоле нет как в скайриме Утилити.вейт =(

 [EDIT]А вот еще вопрос, мне надо запустить скрипт в тот момент, когда игрок активирует (на правую кнопку мыши) прицел определенного оружия. Это вообще реально сделать?!

Artem13  Offline Сообщение №1352 написано: 10 Июля 2014 в 11:50 | Отредактировано: Artem13 - Четверг, 10 Июля 2014, 11:50


Mercenaries. Со смертью на ты.


2171
Цитата
[EDIT]А вот еще вопрос, мне надо запустить скрипт в тот момент, когда игрок активирует (на правую кнопку мыши) прицел определенного оружия. Это вообще реально сделать?!

VIPerMX, поздно, но вдруг еще актуално - IsPlayerActionActive


Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
AlexBoy050  Offline Сообщение №1353 написано: 28 Июля 2014 в 11:52


Странник


20
Здравствуйте, помогите пожалуйста написать скрипт с замедлением времени на 10 секунд ( после нажатия активатора).

KAIN48  Offline Сообщение №1354 написано: 29 Июля 2014 в 22:40 | Отредактировано: KAIN48 - Вторник, 29 Июля 2014, 22:53


Шаманистый шаман


1449
AlexBoy050 привет!
Вспомнил, что давно в журнале "Игромания" видел и использовал в игре консольную команду set timescale to х
Сейчас попробовал её в таком скрипте
scn AAATestSCRIPT
short sDoOnce
Begin OnTriggerEnter player
if (sDoOnce == 0)
set timescale to 500
Set sDoOnce to 1
endif
End

И оказалась она работает - время стало идти быстрее.
Проверил здесь Консольные функции в списке такой команды нет!
Проверил здесь Функции - то же нет!
Но в игре эта не существующая команда (функция) работает lol
Выяснилось, что при отрицательном значении set timescale to -500
Время идёт назад! Солнце садится на востоке! А всходить не хочет


Вечная ночь! Неписи не замедляются, не ускоряются и назад бегать не хотят.

Мы вышли из дома, когда во всех... Поздно вышли!
Galko  Offline Сообщение №1355 написано: 30 Июля 2014 в 10:10 | Отредактировано: Galko - Среда, 30 Июля 2014, 10:11


GALAктическая мартышка


1889
Цитата KAIN48 ()
Но в игре эта не существующая команда (функция) работает

Это не функция, timescale - это глобальная переменная.

Ваше счастье, что я не ваше счастье
Artem13  Offline Сообщение №1356 написано: 30 Июля 2014 в 10:39


Mercenaries. Со смертью на ты.


2171
KAIN48, я подозреваю, что автор вопроса хотел как раз таки слоу-моушен :)


Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
emo877  Offline Сообщение №1357 написано: 04 Августа 2014 в 15:01



49
@AlexBoy050, посмотри мод "Bullet Time" (34858 на нексусе), там в скрипте для этого используется команда SGTM (SetGlobalTimeMultiplier).

Вис  Offline Сообщение №1358 написано: 08 Августа 2014 в 00:00



298
Всем привет! Для того чтобы узнать какой предмет находится на слоте быстрой панели, есть команда GetHotkeyItem. А есть ли команда для установки предмета на слот быстрой панели?

rusik  Offline Сообщение №1359 написано: 17 Сентября 2014 в 07:16


Начинающий


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

strchi  Offline Сообщение №1360 написано: 29 Октября 2014 в 16:03



194
rusik, Слушай, интересная система, самому интересно, а если это же самое сделать с 10 солдатами, сделать такой тактически-стратегический момент в игре?

BigBadBoss  Offline Сообщение №1361 написано: 05 Ноября 2014 в 16:38


Добрый


412
Вопрос по триггеру и GameMode. Если я привяжу к триггеру скрипт с GameMode, то он будет активен всё время? Или только тогда активируется, когда игрок войдёт в триггер (т.е. начало с BeginOn TriggerEnter), а выидя из триггера -деактивируется? Хотелось бы уточнить.
Спасибо.

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

© Copyright: Росана, 2009
JupiterJour  Offline Сообщение №1362 написано: 05 Ноября 2014 в 19:53


_


1037
GameMode будет активен всё время, пока триггер в загруженной области.
Ну, может, будет пореже обрабатываться, когда он на краю этой области, то есть далеко от игрока. unsure
Если надо чтобы работало только когда игрок внутри, то для этого есть блок OnTrigger с параметром player.
Ещё можно отслеживать вхождение игрока в блоке OnTriggerEnter, выхождение в блоке OnTriggerLeave, а остальное делать в гейммоде или ещё где-нибудь. Это если получается слишком огромный триггер. Где-то я читал, что большой триггер чересчур жрёт ресурсы, лучше вместо одного большого огородить область несколькими маленькими.

BigBadBoss  Offline Сообщение №1363 написано: 05 Ноября 2014 в 20:02


Добрый


412
Цитата Joopeeter ()
сли надо чтобы работало только когда игрок внутри, то для этого есть блок OnTrigger с параметром player.

Да. Надо чтобы игрок воидя в триггер вызывал взрыв скажем каждые 2 секунды. Это небыло бы проблемой, если спользовать квест, но насколько я знаю, то в квесте надо писать REFы, а триггеров у меня будет таких огромное количевство. В одной клетке 5-10 и в World около сотни. Вот думаю как сделать, чтоб не потребляло много ресурсов.

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

© Copyright: Росана, 2009
q2werty  Offline Сообщение №1364 написано: 15 Ноября 2014 в 15:53



107
Приветствую.
Кто сможет подсказать, как остановить проигрывание музыки ХХХ, которую запустил через скрипт PlayMusic ХХХ. 
Надо чтобы это музыка играла только в определенном месте (интерьере). В свойствах интерьера в разделе тип музыки я выбирал нужное, но воспроизведения так и не было. Пришлось запускать скриптом.. Запустить получилось, но теперь это музло играет везде и всегда. Цикличность нужна, но повторюсь, только чтобы произведение игралось в определенном месте.
Я в тупике. Сможет кто-нибудь что-то подсказать?

KAIN48  Offline Сообщение №1365 написано: 14 Декабря 2014 в 15:58


Шаманистый шаман


1449
Привет всем!
Помогаю одному человеку сделать короткоствольный миниган, как рельсовая винтовка стреляющий костылями.
Переделываем скаченный с Нексуса. Добавили новые стволы и вращение.
И решили сделать баллон на спине связанный с миниганом шлангом.

Баллон это одежда, а миниган это оружие!
Помогите написать скрипт - при взятии в руки минигана, одевается баллон При убирании минигана - баллон снимается.
И как сделать что бы баллон не был виден в инвентаре - вроде снять галку Playable?

Мы вышли из дома, когда во всех... Поздно вышли!
Римайер  Offline Сообщение №1366 написано: 14 Декабря 2014 в 17:34 | Отредактировано: Римайер - Воскресенье, 14 Декабря 2014, 17:45





957
KAIN48, как один из вариантов:
Скрипт квестовый

  scn MinigunInnova
 Begin Gamemode
    if (Player.IsWeaponInList MiniGunN) && (player.isweaponout ==1)
              player.additem BacTancN 1 1
              player.EquipItem BacTancN  1 1
        endif
    if (Player.IsWeaponInList MiniGunN) && (player.isweaponout ==0)
       if player.getequipped BacTancN == 1
       player.removeitem BacTancN 1 1
        endif
       endif
 end

Для работы нужен квест, к которому и будет прицеплен скрипт. Квест стартует с началом игры, среднеоборотистый. Где то 1 сек.
Ещё нужен форм лист MiniGunN, куда мы поместим наш новый миниган.
BacTancN- это баллон.

З.Ы. Если галочку Playable снять, то баллона не только в инвентаре не будет видно, но и в игре. В нашем случае галку снимать не нужно, т.к. баллон удаляется на время когда миниган неэкипирован.

КсюXa  Offline Сообщение №1367 написано: 14 Декабря 2014 в 18:36 | Отредактировано: КсюXa - Воскресенье, 14 Декабря 2014, 18:41


Гид по Мастерской


1142
Цитата KAIN48 ()
Помогите написать скрипт - при взятии в руки минигана, одевается баллон При убирании минигана - баллон снимается.

А не проще добавить баллон в Armor List во вкладке Art and Sound у этого минигана? Насколько понимаю - в данном поле выбирается список (форм-лист) одежды, которая должна показываться в комплекте с данным оружием. Независимо - есть эта одежда у игрока в инвентаре или нет.

Цитата Римайер ()
если галочку Playable снять, то баллона не только в инвентаре не будет видно, но и в игре
а вот и нет (сказала маленькая Никола)... При снятой галочке одежда не отображается в инвентаре, но на неписях её видно.

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
Quazar  Offline Сообщение №1368 написано: 14 Декабря 2014 в 19:07



446
Цитата KAIN48 ()
Баллон это одежда, а миниган это оружие!
 
Цитата КсюXa ()
А не проще добавить баллон в Armor List во вкладке Art and Sound у этого минигана?

У "Шиш-кебаба" вроде перчатка так же работает, через отдельный список.

KAIN48  Offline Сообщение №1369 написано: 16 Декабря 2014 в 06:46


Шаманистый шаман


1449
Привет всем!
Спасибо всем за помощь!

Мы вышли из дома, когда во всех... Поздно вышли!
Ki1burn  Offline Сообщение №1370 написано: 16 Января 2015 в 21:29 | Отредактировано: Ki1burn - Пятница, 16 Января 2015, 21:33


Странник


4
Здрасти!
Все не читал ибо лень (92 страницы!!!)
Поиск тоже не выручил, решил спросить: Хочу скрипт, на воскрешение ГГ, в доме дока Митчела, но полностью ограбленного, кроме квестовых вещей. Порылся на сайтах, учебник почитал (правда для обливиона), в итоге получилось навоять такое... полностью не рабочее чудо))
Тип скрипта я так понимаю, должно быть Quest...
Решил обратиится к знающим, ибо не совсем понимаю как работает таймер, и в целом механика. Со скриптами мало знаком, по Unity.

scn PlayerRessurect

float Timer
int DeadSt1
ref MitchelID

Begin GameMode
if (player.GetDead == 1); Игрок мертв
Set DeadSt1 == 1; переменная DeadSt1 равна 1 и
ShowMessage ID; Показ текста и
Set Timer to 3; Установка таймера на 3?
elseif (player.GetDead == 0); Иначе, если игрок жив то,
DeadSt1 == 0; Переменная DeadSt1 false
if (DeadSt1 == 1); если, переменная DeadSt1 равна 1, то
imod FadeToBlack5sISFX; включение эффекта Темный экран и,
DisablePlayerControls 1 1 1 1 0 1 1; Блокировка управления, и
Set Timer to 4; Установка таймера на 4? и,
set Timer to Timer - GetSecondsPassed; - ??))) 3-4=1? сек?)))
PLayer.GetDead == 0 && Player.resethealth && Player.MoveTo RefID; Воскрешаем и перемещаем игрока
Player.RemoveCaps001 999999; Забираем все крышки
Player.RemoveAllItems; И не квестовые вещи?
ShowMessage ID2; показ текста
EnablePLayerControls
Set Player.GetDead == 0
endif
endif
endif
return; Перезапускаем скрипт, для много разового использования
END

КсюXa  Offline Сообщение №1371 написано: 16 Января 2015 в 21:58 | Отредактировано: КсюXa - Суббота, 17 Января 2015, 12:48


Гид по Мастерской


1142
Цитата Ki1burn ()
Тип скрипта я так понимаю, должно быть Quest.

А сам квест создан? И скрипт "привязан" к нему?

Добавлено (16 Января 2015, 21:50)
---------------------------------------------
Я не ахти какой скриптер, но явные ошибки уже вижу :)

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
Ki1burn  Offline Сообщение №1372 написано: 17 Января 2015 в 01:50 | Отредактировано: Ki1burn - Суббота, 17 Января 2015, 02:22


Странник


4
Буду разбиратся...
Спс, за коментарий unsure
------------------------Компилятор не ругаетсО(
на вторую строчку или я что не так делаю может?!)
Хотя на меня ругается, почти во всем, говорит, мол: "рукожоп, куда ты лезешь?!")))
------------------------
scn PlayerRessurect

float Timer
int DeadSt1
ref MitchelID

Begin GameMode
if (player.GetDead == 1); Игрок мертв
Set DeadSt1 == 1; переменная DeadSt1 равна 1 и
ShowMessage ID; Показ текста и
Set Timer to 3; Установка таймера на 3?
if (DeadSt1 == 1); если, переменная DeadSt1 равна 1, то
imod FadeToBlack5sISFX; включение эффекта Темный экран и,
DisablePlayerControls 1 1 1 1 0 1 1; Блокировка управления, и
Set Timer to 4; Установка таймера на 4? и,
set Timer to Timer - GetSecondsPassed; - ??))) 3-4=1? сек?)))
Player.IsDead == 0
Player.resethealth && Player.MoveTo RefID; Воскрешаем и перемещаем игрока (&& - используется только в условии?)
Player.RemoveCaps001 999999; Забираем все крышки
Player.RemoveAllItems; И не квестовые вещи?
ShowMessage ID2; показ текста
EnablePLayerControls; Снимаем блокировку управления
elseif (player.Getav health > 1); Иначе, если игрок жив то,
DeadSt1 == 0; Переменная DeadSt1 false
endif
endif
endif
return; Перезапускаем скрипт, для много разового использования
END
----------------------------
Не могу найти начальный квест, где игрок просыпается у дока Митчела. Не подскажите как его найти? И будет ли запущен скрип на создание перса?! Этого бы не хотелось. Заранее спс х)

КсюXa  Offline Сообщение №1373 написано: 17 Января 2015 в 09:06 | Отредактировано: КсюXa - Суббота, 17 Января 2015, 16:03


Гид по Мастерской


1142
Цитата Ki1burn ()
Не могу найти начальный квест,

квест VCG00 (Добро пожаловать в Вегас), но там больше половины команд отключено, поскольку весь сценарий разборок на кладбище записали в видео. А вот следующий квест - VCG01 (Удар по голове) как раз организует все действия в доме дока после пробуждения. И в 36 стадии квеста как раз и запускается генератор перса (ShowRaceMenu). С 55 стадии - игрок встает и идет к тестеру. Ну и в 200 стадии квест останавливается и запускается следующий- VMQ01 (Расследование).
И, насколько понимаю - ты хочешь, чтобы после убийства игрока игра начиналась не с последнего автосохранения, а чтобы Курьер оказывался в доме дока? Не знаю, возможно ли это. В игре функция Player.GetDead используется всего один раз и то не в игровом режиме. Поскольку, если игрок мертв - то игра заканчивается, верно?
Может делать не проверку жив-мертв, а проверять уровень здоровья? Когда оно почти в ноль - помутнение в глазах, потеря сознания, темнота, очнулся - гипс...

===========


Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
Ki1burn  Offline Сообщение №1374 написано: 17 Января 2015 в 12:06 | Отредактировано: Ki1burn - Суббота, 17 Января 2015, 12:16


Странник


4
Цитата КсюXa ()
Может делать не проверку жив-мертв, а проверять уровень здоровья? Когда оно почти в ноль - помутнение в глазах, потеря сознания, темнота, очнулся - гипс...
Ну допустим, установить проверку на <=5 хп.
Если у игрока будет 6 хп, а входящий урон будет 7, то выходит, что игрок помрет, и толку ни какого. От этого условия.
У когтя смерти, в редакторе выставлен урон 230, стандартный.
Только если поднимать планку... до <=40-50 хп, а это примерно 1\5 всех ХП.


КсюXa  Offline Сообщение №1375 написано: 17 Января 2015 в 12:21 | Отредактировано: КсюXa - Суббота, 17 Января 2015, 12:54


Гид по Мастерской


1142
Цитата Ki1burn ()
тут как то же реализовано воскрешение?!

Это надо у Дефокса спросить . Я этот мод не смотрела по причине равнодушия к нему (к моду, а не Дефоксу :D )
И вроде там ГГ не воскрешается, нет? Там отключено сохранение во время игры, чтобы усложнить игру и увеличены требования к осторожности, дабы геймер не лез на рожон, а действовал более осмотрительно, чтоб не погибнуть. И воскрешения там, как я поняла, нет вообще.
Цитата
После смерти игрок не воскрешается и придется только загружать сохранение сделанное во время последнего сна
То есть - игра уходит в меню и нужно заново вручную загружать сохранение. Как-то так.

Ну или можно подождать мастера Ипатова, который расскажет, что надо сделать.

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
Quazar  Offline Сообщение №1376 написано: 17 Января 2015 в 14:33 | Отредактировано: Quazar - Суббота, 17 Января 2015, 14:47



446
Цитата Ki1burn ()
Player.IsDead == 0

А что это за функция такая IsDead? Что-то не слышал о такой, и как переменная она в скрипте не объявлена...В любом случае, это выглядит как функция условия, а значит нужно ставить IF перед ней (ну и соответственно ENDIF в конце условия). Кстати, перед DeadSt1 == 0 так же нужно ставить эту пару IF - ENDIF.

Цитата Ki1burn ()
return; Перезапускаем скрипт, для много разового использования
Return не перезапускает скрипт, она блокирует выполнение строчек скрипта после нее. Это полезно если она стоит где-то в середине скрипта, чтобы прекратить выполнение при определенных условиях. В конце скрипта ее использовать бессмысленно..

Цитата
Player.RemoveAllItems; И не квестовые вещи?
 Нет, квестовые останутся.

Цитата
ref MitchelID
Здесь объявлена ref-переменная, но в скрипте она не используется..Тогда ее можно удалить.

КсюXa  Offline Сообщение №1377 написано: 17 Января 2015 в 14:42


Гид по Мастерской


1142
Цитата Quazar ()
А что это за функция такая IsDead?

Цитата Ki1burn
Player.IsDead == 0

Тут, похоже, вот что...
Ki1burn, без обид. Но ты (можно на ты?), похоже, не совсем понимаешь скриптовый язык. Нельзя написать в скрипте по-английски фразу: - иди и сделай то и то. Или фразу: - проверить то и то. Есть набор готовых функций и команд, которые прописаны в движке игры и только эти команды воспринимаются игрой. И в скрипте мы просто оперируем этим, довольно-таки ограниченным, набором. Есть расширитель скриптов FOSE для Фола и NVSE для Вегаса, в которых добавлены дополнительные скриптовые функции и команды, но опять же - ничего другого, что там есть мы не можем "впихнуть" в скрипт.
Список стандартных функций.

Я шаурму в ларьках на улице не покупаю. Делаю дома сама. Получается как настоящая. Даже траванулась пару раз.
Ki1burn  Offline Сообщение №1378 написано: 19 Января 2015 в 08:56


Странник


4
Решил бросить это гиблое дело. Не заточены у меня мозги под воскрешение ГГ.
Какой командой сделать проверку на "выбита конечность\ либо нет"?

Quazar  Offline Сообщение №1379 написано: 19 Января 2015 в 10:57 | Отредактировано: Quazar - Понедельник, 19 Января 2015, 11:10



446
Цитата Ki1burn ()
Какой командой сделать проверку на "выбита конечность\ либо нет"?
В смысле, оторвана или просто не функционирует? Если оторвана, то, если не ошибаюсь, только через функцию IsLimbGone можно проверить (на счет нее точно не уверен, не приходилось работать с ней), а если не функционирует, сделать проверку на "здоровье" конечности через Getav, если значение будет <= 0, то значит что конечность как бы не функционирует.
Например если If player.getav LeftAttackCondition <= 0, значит "если левая рука не функционирует". Название конечностей такие: perceptioncondition, endurancecondition, leftattackcondition, leftmobilitycondition, rightattackcondition, rightmobilitycondition (в соответствии с частями тела).

Galko  Offline Сообщение №1380 написано: 19 Января 2015 в 11:41 | Отредактировано: Galko - Понедельник, 19 Января 2015, 14:41


GALAктическая мартышка


1889
Цитата Ki1burn ()
Если у игрока будет 6 хп, а входящий урон будет 7, то выходит, что игрок помрет, и толку ни какого. От этого условия.


Да, человек смертен, но это было бы еще полбеды. Плохо то, что он иногда внезапно смертен, вот в чем фокус! (С)

Дайте и игроку возможность быть внезапно смертным  ;)
Я так считаю: если раненому до 6 Хп игроку наносят смертельный удар - он и должен умереть. Это - биология, физиология и прочие логии... И правильность происходящего.
И если НЁХ успевает выдернуть  игрока из боя при его 6 Хп до смертельного удара и притащить в дом дока Митчела - это нормально. А если не успела и игрок помер - это тоже нормально. C'est la Vie.

Ваше счастье, что я не ваше счастье
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск: