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

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



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




Artem13  Offline  Сообщение №1321 написано: 28 марта 2014, 12:40


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


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

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



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

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


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


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

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



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

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



42
Цитата LonelyTraveler

ГГ должен прилечь спать на матрас, но когда просыпается он оказывается в другом месте

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

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



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

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

q2werty  Offline  Сообщение №1326 написано: 30 марта 2014, 09:01



107
Цитата tundruck73

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


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

tundruck73  Offline  Сообщение №1327 написано: 30 марта 2014, 09:12



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

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



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

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



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

q2werty  Offline  Сообщение №1330 написано: 30 марта 2014, 17:43



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

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

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


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


Цитата q2werty

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


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

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



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

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



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

ValLео  Offline  Сообщение №1333 написано: 9 апреля 2014, 11:51 | Отредактировано: ValLео - 9 апреля 2014, 16: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 написано: 9 апреля 2014, 11:56 | Отредактировано: Tyddyner - 9 апреля 2014, 12:06



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

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

Цитата ValLео

player.EquipItem WeapRailwayRifle 1 0


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

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


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


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

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



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


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

Artem13  Offline  Сообщение №1337 написано: 9 апреля 2014, 13:21


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


Цитата Tyddyner

при этом старая винтовка становится неснимаемой


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

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



106
Цитата Artem13

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


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

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


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


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

Цитата Tyddyner

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


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

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

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

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



106
Цитата Artem13


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


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

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



42
Цитата Artem13

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


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

Tyddyner  Offline  Сообщение №1342 написано: 9 апреля 2014, 16:36



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

Artem13  Offline  Сообщение №1343 написано: 9 апреля 2014, 16:47 | Отредактировано: Artem13 - 10 апреля 2014, 07:14


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


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

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



173
Цитата q2werty

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


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

NVcesium137  Offline  Сообщение №1345 написано: 18 апреля 2014, 20:59



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

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


Мастер


Цитата 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

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
NVcesium137  Offline  Сообщение №1347 написано: 19 апреля 2014, 08:24 | Отредактировано: NVcesium137 - 19 апреля 2014, 08: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, 09:32


Мастер


Цитата NVcesium137

скорректировал с айди, но убрал свечение, можно так? Я верно понял что если дистанция меньше 10ед то он автоматом сразу же дает вещь из листа

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

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
VIPerMX  Offline  Сообщение №1349 написано: 19 апреля 2014, 09:35 | Отредактировано: VIPerMX - 19 апреля 2014, 12: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, 15:52


Мастер


Цитата 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

======================
Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294
Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





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