Вверх Вниз


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


Странник


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




Artem13  Offline Сообщение №1321 написано: 28 Марта 2014 в 16:40


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


2171
q2werty, няп, стандартными способами невозможно. Попытайтесь покурить НВСЕ, но я сильно сомневаюсь.


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


Мастер


1178
Можно поковырять мод с Эми Вонг (для третьей части)- там прическа меняется, если попросить домашнего робота над ней "поработать". В диалоге можно эту прическу выбрать.

Мосье, же не манж па сис жур...
Умер 23.04.2019
Artem13  Offline Сообщение №1323 написано: 28 Марта 2014 в 20:57


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


2171
tundruck73, дак там, наверное, стандартный вызов чаргена использован. В Ф3 можно было практически каждый шаг по отдельности вызывать, вроде.


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


Мастер


1178
Artem13, все может быть. Сам я этот мод не потрошил, поэтому сложно сказать что-то определенное.

Мосье, же не манж па сис жур...
Умер 23.04.2019
ValLео  Offline Сообщение №1325 написано: 30 Марта 2014 в 07:32 | Отредактировано: ValLео - Воскресенье, 30 Марта 2014, 16:28


Начинающий


42
Цитата LonelyTraveler ()
ГГ должен прилечь спать на матрас, но когда просыпается он оказывается в другом месте
Тут хотелось бы уточнить ситуацию - где и как ГГ ложится спать. Может быть четыре варианта:
а) ГГ ложится спать в одном интерьере - просыпается в другом интерьере
b) ГГ ложится спать в интерьере - просыпается на Пустоши (внешняя ячейка)
с) ГГ ложится спать на Пустоши - просыпается в интерьере
d) ГГ ложится спать в одном месте на Пустоши - просыпается в другом месте Пустоши

Первые два варианта можно решить "инженерно-строительным способом".



Конечно оба плагина созданы на скорую руку, чтобы только проверить в работе сам принцип. Есть еще нюансы по отработке ситуаций, к примеру - если вдруг игрок зашел в хижину, но не стал ложиться спать и снова вышел, а "псевдоинтерьер уже "материализовался" и на него можно наткнуться по ходу игры ну и т.д. и т.п. Но это уже по ходу работы решается.
Насчет двух последних вариантов - тут сложнее. Пока не придумал ничего :)

Добавлено (30 Марта 2014, 07:32)
---------------------------------------------
Что-то я затормозил :)
Вариант С аналогичен варианту В, только делается наоборот: в нужном месте Пустоши размещаешь заскриптованный матрас, строишь вокруг него изначально отключенный "псевдоинтерьер", а телепорт двери из интерьера выводишь в ту местность, куда должен выйти ГГ после пробуждения. В итоге игрок натыкается на матрас, ложится спать, во время сна появляются стены якобы комнаты или пещеры. Проснувшись, игрок выходит из этой, якобы пещеры, а дверь телепорт переносит туда, где нужно тебе, чтоб он появился.

q2werty  Offline Сообщение №1326 написано: 30 Марта 2014 в 13:01



107
Цитата tundruck73 ()
Можно поковырять мод с Эми Вонг (для третьей части)- там прическа меняется, если попросить домашнего робота над ней "поработать". В диалоге можно эту прическу выбрать.

Не знаком с этой работой. Можно ссылочку?

tundruck73  Offline Сообщение №1327 написано: 30 Марта 2014 в 13:12


Мастер


1178
Разумеется, можно. Тут или тут (англоязычный оригинал).

Мосье, же не манж па сис жур...
Умер 23.04.2019
q2werty  Offline Сообщение №1328 написано: 30 Марта 2014 в 13:43



107
tundruck73, Это третий Fallout.. он у меня не установлен. И вряд ли получится вскрыть его, закинув в Вегас?

ValLео  Offline Сообщение №1329 написано: 30 Марта 2014 в 16:32 | Отредактировано: ValLео - Воскресенье, 30 Марта 2014, 16:58


Начинающий


42
q2werty, в этом моде аж целых 70 (семьдесят!) с хвостиком Эми Вонгов facepalm При выборе прически в диалоге скрипт "подсовывает" новую Эми с нужным хайером.

q2werty  Offline Сообщение №1330 написано: 30 Марта 2014 в 21:43



107
ValLео, значит то-же самое! Общая подмена! 
Жаль!
Но по сути же, не должно это быть так сложно! Всего лишь отображение..
tundruck73, спасибо!

Ладно, понятно! Спасибо за помощь!

Artem13  Offline Сообщение №1331 написано: 31 Марта 2014 в 13:09


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


2171
Цитата q2werty ()
Но по сути же, не должно это быть так сложно! Всего лишь отображение..

Нет. Там нужно менять именно модель. Т.е. модель одной причёски заменяется другой. По сути - одна часть тела заменяется другой. Беседка нам такого инструмента не дала. Авторы НВСЕ - не знаю, не курил.


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



106
Доброго времени суток. Пытался заняться скриптами (захотел сделать три типа боеприпасов ж/д винтовке - дротики, мусор и костыли) покурил мануалы, почитал чужие скрипты и запилил свой. При попытке сохранения ошибка:

Орфографию проверил, но возможно, недоглядел. Вот сам скрипт:



Строчку 18 выделил голубым.

ValLео  Offline Сообщение №1333 написано: 09 Апреля 2014 в 15:51 | Отредактировано: ValLео - Среда, 09 Апреля 2014, 20:05


Начинающий


42
Tyddyner,
ifMenuMode - пишется раздельно if MenuMode
а также в остальных строчках тоже есть слияния (если текст скрипта приведен вточности)
Попробуй так
begin OnEquip player
if MenuMode 1002
ShowMessage a13RailwayAmmoChoice
endif
end

begin MenuMode 1002
set A13Key to GetButtonPressed
if A13Key < 1
return
elseif A13Key == 1
set A13WeaponCond to player.GetWeaponHealthPerc
player.AddItem WeapRailwayRifle 1 1
player.EquipItem WeapRailwayRifle 1 0
player.SetWeaponHealthPerc A13WeaponCond
removeme
elseif A13Key == 2
set A13WeaponCond to player.GetWeaponHealthPerc
player.AddItem WeapRailwayRifleDart 1 1
player.EquipItemWeap RailwayRifleDart 1 0
player.SetWeaponHealthPerc A13WeaponCond
removeme
elseif A13Key == 3
set A13WeaponCond to player.GetWeaponHealthPerc
player.AddItem WeapRailwayRifleTrash 1 1
player.EquipItem WeapRailwayRifleTrash 1 0
player.SetWeaponHealthPerc A13WeaponCond
removeme
endif
end
=============================
ну или еще: -
попробуй убрать последнюю единичку
player.EquipItemWeap RailwayRifleDart 1 0 1

насколько понимаю - у equipitem два параметра, а не три

Tyddyner  Offline Сообщение №1334 написано: 09 Апреля 2014 в 15:56 | Отредактировано: Tyddyner - Среда, 09 Апреля 2014, 16:06



106
Странно, что тут куда-то делись пробелы. Нет, в окошке скрипта всё нормально, пробелы стоят:

Даже скопировал вашу строчку и заменил свою - ошибка та же.

Цитата ValLео ()
player.EquipItem WeapRailwayRifle 1 0

Да, огромное спасибо - оказывается, сохранению скрипта мешала последняя единица, хотя брал мануал о мультирежимном оружии с этого сайта, и там она стояла.

Artem13  Offline Сообщение №1335 написано: 09 Апреля 2014 в 16:39 | Отредактировано: Artem13 - Среда, 09 Апреля 2014, 16:42


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


2171
Tyddyner, дико извиняюсь, это моя ошибка - писал тогда мануал по памяти и неточно воспроизвёл аргументы этой функции blushValLео правильно подсказал. Надо будет поправить.
ЗЫ Там в комментариях, кстати, эту ошибку уже находили :)


Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Tyddyner  Offline Сообщение №1336 написано: 09 Апреля 2014 в 17:10 | Отредактировано: Tyddyner - Среда, 09 Апреля 2014, 17:11



106
Так, при использовании скрипта выявились две ошибки:
  • Если я выбираю стандартные костыли, ко мне в инвентарь добавляется ещё одна, с состоянием 100%, ж/д винтовка, при этом старая винтовка становится неснимаемой и стрелять можно только из неё. Если тыкнуть на добавленную винтовку, то вновь появляется меню выбора и можно выбрать новые винтовки, при этом они добавляются в инвентарь, но экипировать их нельзя, так как старая винтовка неснимаемая. И да, при выборе типа боеприпасов другие винтовки не удаляются, а множатся в инвентаре (но выкинуть их можно).
  • Если я выбираю любой другой тип боеприпасов, то новая стандартная винтовка не добавляется, всё нормально заменяется на другую, но при этом новая винтовка становится неснимаемой и клавиш выбора нет (скрипт не запускается).


Возможно, это связано с тем, что винтовка изначально у меня в инвентаре?

Artem13  Offline Сообщение №1337 написано: 09 Апреля 2014 в 17:21


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


2171
Цитата Tyddyner ()
Возможно, это связано с тем, что винтовка изначально у меня в инвентаре?

Теоретически. Каковы условия в сообщении выбора? a13RailwayAmmoChoice которое.

Цитата Tyddyner ()
при этом старая винтовка становится неснимаемой

Это как? Другим, стандартным, оружием нельзя заменить чтоли?


Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Tyddyner  Offline Сообщение №1338 написано: 09 Апреля 2014 в 17:37 | Отредактировано: Tyddyner - Среда, 09 Апреля 2014, 17:37



106
Цитата Artem13 ()
Теоретически. Каковы условия в сообщении выбора? a13RailwayAmmoChoice которое.

Оу, вот про это я не знал - в мануале не было написано:



Цитата Artem13 ()
Это как? Другим, стандартным, оружием нельзя заменить чтоли?

Да, так и получается. И ещё сообщения высвечиваются в левом верхнем углу - "вы не можете бросить изношенное оружие" и "вы не можете снять этот предмет".

Artem13  Offline Сообщение №1339 написано: 09 Апреля 2014 в 19:20 | Отредактировано: Artem13 - Среда, 09 Апреля 2014, 19:27


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


2171
Tyddyner, кстати, а зачем такие сложности? Почему нельзя использовать встроенный механизм смены типа боеприпаса? Или он работает только для типа Ammo?

Цитата Tyddyner ()
Оу, вот про это я не знал - в мануале не было написано

Да по сути не обязательно, просто чтобы исключить возможность замены на совпадающий тип.

Сейчас с ходу не подскажу, покопаться надо. Если хочешь посмотреть как делали другие - скачай и распотроши мод Когтебойки за авторством Римайера.

А, нашёл ошибку - в функции EquipItem последние аргументы должны быть 0 1, а не 1 0. Потому что первый аргумент как раз и отвечает за неснимаемость (1 - неснимаемый). Второй - за вывод сообщения об экипировке (0 - не выводится). Т.е. лишняя там не последняя единица была, а первая :)


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



106
Цитата Artem13 ()

Tyddyner, кстати, а зачем такие сложности? Почему нельзя использовать встроенный механизм смены типа боеприпаса? Или он работает только для типа Ammo?

Потому что используется либо 8 штырей и обычная винтовка, либо 30 дротиков (и винтовка становится автоматической, отстреливает по 2 дротика за выстрел), либо механизм перезарядки "Ракетки" (гаечные ключи, карандаши, губные гармошки, вилки, ножи, шприцы - в общем, подходящие по размеру вещи). Поэтому стандартный механизм смены боеприпасов не подходит. Да и хотелось бы, чтобы и в трёшке работало.
Цитата Artem13 ()

А, нашёл ошибку - в функции EquipItem последние аргументы должны быть 0 1, а не 1 0. Потому что первый аргумент как раз и отвечает за неснимаемость (1 - неснимаемый). Второй - за вывод сообщения об экипировке (0 - не выводится). Т.е. лишняя там не последняя единица была, а первая

Спасибо. Сейчас попробую, отпишусь.

ValLео  Offline Сообщение №1341 написано: 09 Апреля 2014 в 20:07 | Отредактировано: ValLео - Среда, 09 Апреля 2014, 20:25


Начинающий


42
Цитата Artem13 ()
в функции EquipItem последние аргументы должны быть 0 1

Точно. Я, честно говоря, не вчитывался в описание на Беседке, поелику мне сие зело не важно было по причине равнодушия в силу личной незаинтересованности :)

Tyddyner  Offline Сообщение №1342 написано: 09 Апреля 2014 в 20:36



106
Так, теперь всё работает, но не без огрехов - в общем, выбираю я, предположим, обычную винтовку, стреляю костылями. Если я захожу в пип-бой, тыкаю на винтовку и вновь выбираю костыли, винтовка не экипируется, приходится выбирать любой другой тип боеприпасов, получать другую винтовку и уже через неё вновь экипировать костыльную.

Artem13  Offline Сообщение №1343 написано: 09 Апреля 2014 в 20:47 | Отредактировано: Artem13 - Четверг, 10 Апреля 2014, 11:14


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


2171
Tyddyner, просто используй кнопку Отмена - она оменяет не экипировку, а выбор. А чтобы вариант с костылями не появлялся вообще, в сообщении на эту строчку поставь условие - игрок ей не экипирован (выделяешь строку с кнопкой "Ж/д костыли", в нижнем поле тыкаешь ПКМ и создаешь новое условие. В условии выбираешь - по порядку следования полей - player IsEqupped WeapRailwayRifle != 1). Это если я правильно помню функцию - сам там посмотри по смыслу, у меня нет ГЕККа под рукой. Или распотроши указанный ранее мод, там это всё есть.


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



173
Цитата q2werty ()
Может сможет кто-нибудь подсказать: как в скриптом изменить прическу ГГ или НПС?

У непися - можно попробовать потупому, сделать из прически шапку, тогда нпц её оденет если она в инвентарь упадет. На счет ГГ, была такая фишка в Point Lookout, после того как игроку лаботомию делают, появляется шрам и прическа слетает на остриженую. Посмотрите там, может поможет.

NVcesium137  Offline Сообщение №1345 написано: 19 Апреля 2014 в 00:59


Странник


7
Здравствуйте! Мне вспомнились сладкие времена поиска артефактов в сталкере и я подумал сделать мод по их поиску. Техническая суть мода вот в чем: хочу сделать лутлист из артефактов с маленьким шансом дропа, около 1 процента, а лут поместить в "контейнер" и разбросать их по мохаве (много, учитывая что шанс найти мал) Но вся соль в том, что поиск заметного "контейнера" и его открытие - это примитив, поэтому ставлю еле заметные контейнеры в виде камня, кучки и т.п. Как тогда найти "контейнер"? Вот тут то, с чем я не могу справиться - мне нужен скрипт, позволяющий находить контейнер детектором (типа детонатора С4), нужно чтобы скрипт распознавал контейнеры в радиусе метров 10 и если контейнер не пуст - начинал пищать как детонатор адепта. Все скрипты VMS15 по квесту адепта обшарил, не вижу нужных комманд. Хелп, а, братишки? Скину мод на МГ, будет что поискать)

Spalny_Vagon  Offline Сообщение №1346 написано: 19 Апреля 2014 в 10:11 | Отредактировано: Spalny_Vagon - Суббота, 19 Апреля 2014, 10:18





989
Цитата NVcesium137 ()
нужно чтобы скрипт распознавал контейнеры в радиусе метров 10 и если контейнер не пуст - начинал пищать
Мне кажется, проще на каждый контейнер повесить скрипт, который бы заставлял сам контейнер реагировать на сканер - подавать сигнал об обнаружении и светиться. Ну, что-нибудь вроде этого:

Код
short doOnce
begin gamemode
if player.getequipped  (detectorID)
  if getdistance plaer < 10 && doOnce == 0 && getitemcount (artefactList)     
    pms  [shaderID]; контейнер начинает светиться
    playsound    [soundID];звук обнаружения
    set doOnce to 1
   elseif getdistance player > 15 && doOnce == 1
    sms    [shaderID];удалить шейдер если игрок вышел из зоны
    set doOnce to 0
   elseif getitemcount  [artefactFormListID]== 0 && doOnce == 1
    sms    [shaderID];удалить шейдер после изъятия артефакта
    set doOnce to 0
   endif
endif
end

Мод "Нью-Йорк" на русском:
Мод "Нью-Йорк" на английском:
NVcesium137  Offline Сообщение №1347 написано: 19 Апреля 2014 в 12:24 | Отредактировано: NVcesium137 - Суббота, 19 Апреля 2014, 12:58


Странник


7
Spalny_Vagon спасибо!

Добавлено (19 Апреля 2014, 12:24)
---------------------------------------------
Вот я скорректировал с айди, но убрал свечение, можно так? Я верно понял что если дистанция меньше 10ед то он автоматом сразу же дает вещь из листа? ЗЫ корень зандера - для теста

scn zArctsScript

short doOnce
begin gamemode 
if player.getequipped  zdetonatordetector 
  if getdistance player < 10 && doOnce == 0 && getitemcount zlootarts     
    playsound   WPNMineTick;
    set doOnce to 1 
   elseif getdistance player > 15 && doOnce == 1 
    sms    [111]
    set doOnce to 0 
   elseif getitemcount  XanderRoot== 0 && doOnce == 1 
    sms    [222];
    set doOnce to 0 
   endif 
endif 
end

Spalny_Vagon  Offline Сообщение №1348 написано: 19 Апреля 2014 в 13:32





989
Цитата NVcesium137 ()
скорректировал с айди, но убрал свечение, можно так? Я верно понял что если дистанция меньше 10ед то он автоматом сразу же дает вещь из листа
Никто ничего не дает. Если в контейнере есть любой артефакт из списка, то он реагирует свечением и звуком на приближение грока с детектором в руке. Если игрок после этого удаляется от контейнера, свечение пропадает. Если же никаких артефактов в контейнере нет, то он никак не реагирует на игрока. Если же или игрок все забрал, то свечение так же пропадает. Там нужно еще добавитть блок на тот случай, если игрок убрал детектор в карман.
pms - команда на добавление шейдера (PlayMagicShaderVisuals)
sms - команда на удаление шейдера (StopMagicShaderVisuals)
Поэтому если без шейдеров, просто убрать все, что к ним относится.

Мод "Нью-Йорк" на русском:
Мод "Нью-Йорк" на английском:
VIPerMX  Offline Сообщение №1349 написано: 19 Апреля 2014 в 13:35 | Отредактировано: VIPerMX - Суббота, 19 Апреля 2014, 16:35



173
Ребят, такой вопрос. можно как-нибудь (рассмотрю даже варианты с NVSE) заставить скрипт выполнить строчку через заданное ко-во секунд. Я пробовал варианты со счетчиками, но у меня ничего не выходит.

Вот как делал я...
Код
Float   fTimer01
Float   fTimer02
. . .

short sFlag

BEGIN OnActivate Player

       set sFlag to 1
       set fTimer01 to 182
       set fTimer02 to 114

. . .

       activate

END

BEGIN GameMode

    If (sFlag == 1)
;-----------------------------------------------------------------------
           If  ( sFlag == 1 ) && (rRecord01.getDisabled == 0)
                  If ( fTimer01 > 0 )
                         Set fTimer01 to ( fTimer01 - GetSecondsPassed );
                         playmusic VIPERMXxMQTrack01
                  ElseIf ( sFlag == 1 )
                         set sFlag to 2
                  EndIf
           Else
                  set sFlag to 2
           EndIf
;--------------------------------------------------------------------------
           If  ( sFlag == 2 ) && (rRecord02.getDisabled == 0)
                  If ( fTimer02 > 0 )
                         Set fTimer02 to ( fTimer02 - GetSecondsPassed );
                         playmusic VIPERMXxMQTrack02
                  ElseIf ( sFlag == 2 )
                         set sFlag to 3
                  EndIf
           Else
                  set sFlag to 3
           EndIf

     ...

     EndIf

END


Проблема в том, что скрипт активирует первую доступную песню а вторую нет, где ошибка?! Или как сделать мою задумку?!

Spalny_Vagon  Offline Сообщение №1350 написано: 19 Апреля 2014 в 19:52





989
Цитата VIPerMX ()
Проблема в том, что скрипт активирует первую доступную песню а вторую нет
Код
Float   fTimer01  
Float   fTimer02  
short sFlag  

BEGIN OnActivate Player  
        set sFlag to 1  
        set fTimer01 to 182  
        set fTimer02 to 114  
        activate  
END  

BEGIN GameMode  
If rRecord01.getDisabled == 0  
If sFlag == 1
    playmusic VIPERMXxMQTrack01
    set sFlag to 2
elseif sFlag == 2
    If fTimer01 >= 0
       Set fTimer01 to fTimer01 - GetSecondsPassed  
     else
       set sFlag to 3
    EndIf
endif
endif

if rRecord02.getDisabled == 0
If sFlag == 3
    playmusic VIPERMXxMQTrack02  
    set sFlag to 4
elseif sFlag == 4
    If fTimer02 >= 0
       Set fTimer02 to fTimer02 - GetSecondsPassed  
    Else  
       set sFlag to 5
    EndIf
EndIf  
endif
END

Мод "Нью-Йорк" на русском:
Мод "Нью-Йорк" на английском:
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск: