Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
Изменение репутации для пользователя VIPerMX
VIPerMXOffline
Сообщение №1351
написано: 19 апреля 2014, 20:43
| Отредактировано: VIPerMX - 1 мая 2014, 00:09
Spalny_Vagon, Попробовал, не сработало. Я к первому оператору ветвления добавил еще else с set sFlаg чтоб осуществлялся переход на следующий трек, если данного нет. Тогда у меня получился жуткий шум, видимо он пытался что-то запустить каждую секунду. Добавил затем дополнительную проверку на флаги - он стал играть последнюю песню и исключительно в меню игры или в пипбое... бред.
В общем я решил на это дело забить, жаль в Фоле нет как в скайриме Утилити.вейт =(
[EDIT]А вот еще вопрос, мне надо запустить скрипт в тот момент, когда игрок активирует (на правую кнопку мыши) прицел определенного оружия. Это вообще реально сделать?!
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №1352
написано: 10 июля 2014, 07:50
| Отредактировано: Artem13 - 10 июля 2014, 07:50
[EDIT]А вот еще вопрос, мне надо запустить скрипт в тот момент, когда игрок активирует (на правую кнопку мыши) прицел определенного оружия. Это вообще реально сделать?!
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
AlexBoy050 привет! Вспомнил, что давно в журнале "Игромания" видел и использовал в игре консольную команду set timescale to х Сейчас попробовал её в таком скрипте scn AAATestSCRIPT short sDoOnce Begin OnTriggerEnter player if (sDoOnce == 0) set timescale to 500 Set sDoOnce to 1 endif End
И оказалась она работает - время стало идти быстрее. Проверил здесь Консольные функции в списке такой команды нет! Проверил здесь Функции - то же нет! Но в игре эта не существующая команда (функция) работает Выяснилось, что при отрицательном значении set timescale to -500 Время идёт назад! Солнце садится на востоке! А всходить не хочет
Вечная ночь! Неписи не замедляются, не ускоряются и назад бегать не хотят.
Мы вышли из дома, когда во всех... Поздно вышли!
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1355
написано: 30 июля 2014, 06:10
| Отредактировано: Galko - 30 июля 2014, 06:11
KAIN48, я подозреваю, что автор вопроса хотел как раз таки слоу-моушен
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Всем привет! Для того чтобы узнать какой предмет находится на слоте быстрой панели, есть команда GetHotkeyItem. А есть ли команда для установки предмета на слот быстрой панели?
Приветствую.В пипбое правым кликом ставится маркер на глобальной карте.Вопрос заключается в том,как заставить НПС напарника ,двигаться к этому маркеру на тактической карте-местности.Телепорт не интересует,так же как и система заранее установленных на местности маячков-маркеров тоже.Если был такой скрипт-напомните код,если встречалось в каком то моде-пришлите ссылку на мод.Заранее благодарен.В случае если будут нужны более подробное изложение условий-то это же в моих интересах,так что при наличии идей спрашивайте.
rusik, Слушай, интересная система, самому интересно, а если это же самое сделать с 10 солдатами, сделать такой тактически-стратегический момент в игре?
Вопрос по триггеру и GameMode. Если я привяжу к триггеру скрипт с GameMode, то он будет активен всё время? Или только тогда активируется, когда игрок войдёт в триггер (т.е. начало с BeginOn TriggerEnter), а выидя из триггера -деактивируется? Хотелось бы уточнить. Спасибо.
Вдохни… взгляни вокруг, поверь в спасенье, Ведь между злом - песчинки доброты… И вспомни, прочитай в безбрежном небе, Что кто-то дышит, пока дышишь ты...
GameMode будет активен всё время, пока триггер в загруженной области. Ну, может, будет пореже обрабатываться, когда он на краю этой области, то есть далеко от игрока. Если надо чтобы работало только когда игрок внутри, то для этого есть блок OnTrigger с параметром player. Ещё можно отслеживать вхождение игрока в блоке OnTriggerEnter, выхождение в блоке OnTriggerLeave, а остальное делать в гейммоде или ещё где-нибудь. Это если получается слишком огромный триггер. Где-то я читал, что большой триггер чересчур жрёт ресурсы, лучше вместо одного большого огородить область несколькими маленькими.
сли надо чтобы работало только когда игрок внутри, то для этого есть блок OnTrigger с параметром player.
Да. Надо чтобы игрок воидя в триггер вызывал взрыв скажем каждые 2 секунды. Это небыло бы проблемой, если спользовать квест, но насколько я знаю, то в квесте надо писать REFы, а триггеров у меня будет таких огромное количевство. В одной клетке 5-10 и в World около сотни. Вот думаю как сделать, чтоб не потребляло много ресурсов.
Вдохни… взгляни вокруг, поверь в спасенье, Ведь между злом - песчинки доброты… И вспомни, прочитай в безбрежном небе, Что кто-то дышит, пока дышишь ты...
Приветствую. Кто сможет подсказать, как остановить проигрывание музыки ХХХ, которую запустил через скрипт PlayMusic ХХХ. Надо чтобы это музыка играла только в определенном месте (интерьере). В свойствах интерьера в разделе тип музыки я выбирал нужное, но воспроизведения так и не было. Пришлось запускать скриптом.. Запустить получилось, но теперь это музло играет везде и всегда. Цикличность нужна, но повторюсь, только чтобы произведение игралось в определенном месте. Я в тупике. Сможет кто-нибудь что-то подсказать?
Привет всем! Помогаю одному человеку сделать короткоствольный миниган, как рельсовая винтовка стреляющий костылями. Переделываем скаченный с Нексуса. Добавили новые стволы и вращение. И решили сделать баллон на спине связанный с миниганом шлангом. Баллон это одежда, а миниган это оружие! Помогите написать скрипт - при взятии в руки минигана, одевается баллон При убирании минигана - баллон снимается. И как сделать что бы баллон не был виден в инвентаре - вроде снять галку Playable?
Мы вышли из дома, когда во всех... Поздно вышли!
Изменение репутации для пользователя Римайер
РимайерOffline
Сообщение №1366
написано: 14 декабря 2014, 14:34
| Отредактировано: Римайер - 14 декабря 2014, 14:45
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
КсюXaOffline
Сообщение №1367
написано: 14 декабря 2014, 15:36
| Отредактировано: КсюXa - 14 декабря 2014, 15:41
Здрасти! Все не читал ибо лень (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
КсюXaOffline
Сообщение №1371
написано: 16 января 2015, 18:58
| Отредактировано: КсюXa - 17 января 2015, 09:48
Хочу скрипт, на воскрешение ГГ, в доме дока Митчела, но полностью ограбленного, кроме квестовых вещей
Так понимаю - ограбленного не в начале игры, а по ходу? В принципе - можно сделать по аналогии со стартовым квестом. Там игрока "грабють и убивають" и очухивается он у дока М. Рассмотри этот квест, обращая внимание на результ-скрипты стадий квеста и результ-скрипты диалогов.
Ой, всё...
Изменение репутации для пользователя Ki1burn
Ki1burnOffline
Сообщение №1372
написано: 16 января 2015, 22:50
| Отредактировано: Ki1burn - 16 января 2015, 23:22
Буду разбиратся... Спс, за коментарий ------------------------Компилятор не ругаетсО( на вторую строчку или я что не так делаю может?!) Хотя на меня ругается, почти во всем, говорит, мол: "рукожоп, куда ты лезешь?!"))) ------------------------ 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
КсюXaOffline
Сообщение №1373
написано: 17 января 2015, 06:06
| Отредактировано: КсюXa - 17 января 2015, 13:03
резет здоровья - команда переместить к - тоже команда Команды нельзя ставить с соединительным союзом И (&&) и с разделительным союзом ИЛИ (||). Команды не могут выполнятся одноврменно (И) и не могут выполнятся по выбору (ИЛИ). Команда выполняется, как в армии: получил одну команду - выполнил. После этого получил вторую - выполнил Но никак не одновременно (В атаку! Отступаем!) или по желанию. В скриптах чтение строчек идет сверху вниз. Считывается одна, проверяются условия выполнения. если условия позволяют - выполняются действия. Если на данный момент игры какое-то условие не истинно - строчка пропускается и считывается следующая.
Ой, всё...
Изменение репутации для пользователя Ki1burn
Ki1burnOffline
Сообщение №1374
написано: 17 января 2015, 09:06
| Отредактировано: Ki1burn - 17 января 2015, 09:16
Может делать не проверку жив-мертв, а проверять уровень здоровья? Когда оно почти в ноль - помутнение в глазах, потеря сознания, темнота, очнулся - гипс...
Ну допустим, установить проверку на <=5 хп. Если у игрока будет 6 хп, а входящий урон будет 7, то выходит, что игрок помрет, и толку ни какого. От этого условия. У когтя смерти, в редакторе выставлен урон 230, стандартный. Только если поднимать планку... до <=40-50 хп, а это примерно 1\5 всех ХП.
https://modgames.net/load/fallout3/gejmplej/project_survival/17-1-0-18436, тут как то же реализовано воскрешение?!
Замечания по скрипту принял. Буду думать. Но походу сам не допетрю, может кто знающий напишет сразу плагином?))) за спасибо)
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1375
написано: 17 января 2015, 09:21
| Отредактировано: КсюXa - 17 января 2015, 09:54
Тут, похоже, вот что... Ki1burn, без обид. Но ты (можно на ты?), похоже, не совсем понимаешь скриптовый язык. Нельзя написать в скрипте по-английски фразу: - иди и сделай то и то. Или фразу: - проверить то и то. Есть набор готовых функций и команд, которые прописаны в движке игры и только эти команды воспринимаются игрой. И в скрипте мы просто оперируем этим, довольно-таки ограниченным, набором. Есть расширитель скриптов FOSE для Фола и NVSE для Вегаса, в которых добавлены дополнительные скриптовые функции и команды, но опять же - ничего другого, что там есть мы не можем "впихнуть" в скрипт. Список стандартных функций.
Какой командой сделать проверку на "выбита конечность\ либо нет"?
В смысле, оторвана или просто не функционирует? Если оторвана, то, если не ошибаюсь, только через функцию IsLimbGone можно проверить (на счет нее точно не уверен, не приходилось работать с ней), а если не функционирует, сделать проверку на "здоровье" конечности через Getav, если значение будет <= 0, то значит что конечность как бы не функционирует. Например если If player.getav LeftAttackCondition <= 0, значит "если левая рука не функционирует". Название конечностей такие: perceptioncondition, endurancecondition, leftattackcondition, leftmobilitycondition, rightattackcondition, rightmobilitycondition (в соответствии с частями тела).
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1380
написано: 19 января 2015, 08:41
| Отредактировано: Galko - 19 января 2015, 11:41
Если у игрока будет 6 хп, а входящий урон будет 7, то выходит, что игрок помрет, и толку ни какого. От этого условия.
Да, человек смертен, но это было бы еще полбеды. Плохо то, что он иногда внезапно смертен, вот в чем фокус! (С)
Дайте и игроку возможность быть внезапно смертным Я так считаю: если раненому до 6 Хп игроку наносят смертельный удар - он и должен умереть. Это - биология, физиология и прочие логии... И правильность происходящего. И если НЁХ успевает выдернуть игрока из боя при его 6 Хп до смертельного удара и притащить в дом дока Митчела - это нормально. А если не успела и игрок помер - это тоже нормально. C'est la Vie.