Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



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




VIPerMX  Offline  Сообщение №1351 написано: 19 апреля 2014, 20:43 | Отредактировано: VIPerMX - 1 мая 2014, 00:09



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

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

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

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


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


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

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

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
AlexBoy050  Offline  Сообщение №1353 написано: 28 июля 2014, 07:52



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

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


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


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, 06:10 | Отредактировано: Galko - 30 июля 2014, 06:11


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


Цитата KAIN48

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


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

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


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


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

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
emo877  Offline  Сообщение №1357 написано: 4 августа 2014, 11:01



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

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



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

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



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

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



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

BigBadBoss  Offline  Сообщение №1361 написано: 5 ноября 2014, 13:38


Добрый


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

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

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


_


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

BigBadBoss  Offline  Сообщение №1363 написано: 5 ноября 2014, 17:02


Добрый


412
Цитата Joopeeter

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


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

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

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



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

KAIN48  Offline  Сообщение №1365 написано: 14 декабря 2014, 12:58


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


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

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

Мы вышли из дома, когда во всех... Поздно вышли!
Римайер  Offline  Сообщение №1366 написано: 14 декабря 2014, 14:34 | Отредактировано: Римайер - 14 декабря 2014, 14: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, 15:36 | Отредактировано: КсюXa - 14 декабря 2014, 15:41


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


Цитата Римайер

если галочку Playable снять, то баллона не только в инвентаре не будет видно, но и в игре

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

Ой, всё...
Quazar  Offline  Сообщение №1368 написано: 14 декабря 2014, 16:07



446
Цитата КсюXa

А не проще добавить баллон в Armor List во вкладке Art and Sound у этого минигана?


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

KAIN48  Offline  Сообщение №1369 написано: 16 декабря 2014, 03:46


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


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

Мы вышли из дома, когда во всех... Поздно вышли!
Ki1burn  Offline  Сообщение №1370 написано: 16 января 2015, 18:29 | Отредактировано: Ki1burn - 16 января 2015, 18: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, 18:58 | Отредактировано: КсюXa - 17 января 2015, 09:48


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


Цитата Ki1burn

Хочу скрипт, на воскрешение ГГ, в доме дока Митчела, но полностью ограбленного, кроме квестовых вещей

Так понимаю - ограбленного не в начале игры, а по ходу? В принципе - можно сделать по аналогии со стартовым квестом. Там игрока "грабють и убивають" и очухивается он у дока М. Рассмотри этот квест, обращая внимание на результ-скрипты стадий квеста и результ-скрипты диалогов.

Ой, всё...
Ki1burn  Offline  Сообщение №1372 написано: 16 января 2015, 22:50 | Отредактировано: Ki1burn - 16 января 2015, 23: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, 06:06 | Отредактировано: КсюXa - 17 января 2015, 13:03


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


Цитата Ki1burn

Player.resethealth && Player.MoveTo RefID

резет здоровья - команда
переместить к - тоже команда
Команды нельзя ставить с соединительным союзом И (&&) и с разделительным союзом ИЛИ (||). Команды не могут выполнятся одноврменно (И) и не могут выполнятся по выбору (ИЛИ).
Команда выполняется, как в армии: получил одну команду - выполнил. После этого получил вторую - выполнил :) Но никак не одновременно (В атаку! Отступаем!) или по желанию.
В скриптах чтение строчек идет сверху вниз.
Считывается одна, проверяются условия выполнения. если условия позволяют - выполняются действия. Если на данный момент игры какое-то условие не истинно - строчка пропускается и считывается следующая.

Ой, всё...
Ki1burn  Offline  Сообщение №1374 написано: 17 января 2015, 09:06 | Отредактировано: Ki1burn - 17 января 2015, 09:16



4
Цитата КсюXa

Может делать не проверку жив-мертв, а проверять уровень здоровья? Когда оно почти в ноль - помутнение в глазах, потеря сознания, темнота, очнулся - гипс...

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


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


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


Цитата Ki1burn

После смерти игрок не воскрешается и придется только загружать сохранение сделанное во время последнего сна

То есть - игра уходит в меню и нужно заново вручную загружать сохранение. Как-то так.

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

Ой, всё...
Quazar  Offline  Сообщение №1376 написано: 17 января 2015, 11:33 | Отредактировано: Quazar - 17 января 2015, 11:47



446
Цитата Ki1burn

ref MitchelID

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

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


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


Цитата Ki1burn

Player.IsDead == 0


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

Ой, всё...
Ki1burn  Offline  Сообщение №1378 написано: 19 января 2015, 05:56



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

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



446
Цитата Ki1burn

Какой командой сделать проверку на "выбита конечность\ либо нет"?

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

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


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


Цитата Ki1burn

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



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

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

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





Ответ на жалобу смотрите в разделе жалоб