The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3


Вопросы по скриптам в Fallout 3

Сообщений 361 страница 390 из 418

361

Попутный вопрос - где мод выложить для тех, кто хочет потестить?

Здесь:  http://www.playground.ru/files/fallout_new_vegas/ или здесь:   http://www.playground.ru/files/fallout_3/   сразу и потестируют,а как решил вопрос,с тем что при приземлении в 70% убивается?Может повесить на кнопку команду удачного приземления или вывести на дисплей информацию-"Эффект "Левитация" через 10 секунд заканчивается": resetFallDamageTimer?
И еще каким образом прикрутить этот эффект к одежде(а не к зелью)?И еще нужна анимация(такая где машут крыльями)
1)Одел одежду(крылья);На дисплее меню:
а)Взлет
б)Ничего не делать.
Взлет-Включилась анимация полета и эффект левитации
2)Нажал на кнопку,к примеру Р и удачно приземлился или снял крылья и удачно приземлился(анимация закончилась-эффект закончился)
Таким образом можно сделать полет приятным и безопасным.
Левитация

0

362

доброго времени суток все! возник такой вопрос... честно говоря немного нубский и примитивный... в общем лазил по инэту в поиске ответов, но все напрасно... как должен выглядеть скрипт на активатор который перемещает на несколько локаций (лифт на 5 этажей). Заранее спасибо.

0

363

user17 Привет!
Вопрос, как вопрос! Просто не много не понятно, в какой сцене это будет использоваться. Понимаешь, что бы написать пример нужно знать, что у тебя за активатор и где он стоит.
Будем считать, что это дверь лифта
Скрипт может быть такой, как у двери в Гоммора (GomorrahElevatorDoorScript если написать в поиске в GECK в главном меню Edit-FindText а нажать ОК и после окончания поиска выбрать вкладку Scripts и кликнуть по нужной строчке)

Код:
scn GomorrahElevatorDoorScript

int Button                        

begin OnActivate
	ref reffer
	set reffer to GetActionRef
	if GetActionRef == player
showmessage GomorraElevatorMessage    ;показать сообщение с выбором [color=red]GomorraElevatorMessage в Filter окна Object Windows вписать и внизу выбрать All потом открыть и сделать своё также[/color]
	else
if reffer.GetPlayerTeammate == 1
	reffer.moveto player
endif
	endif
end

begin GameMode
	set Button to GetButtonPressed
	ref rMarker
	if Button == 1              ; при выборе первой кнопки
player.MoveTo GomorrahLLMarker ; игрок переносится на маркер GomorrahLLMarker [color=red]поставить на нужном этаже свой маркер - дальше то же самое для остальных кнопок[/color]
set rMarker to GomorrahLLMarker
Autosave
	elseif Button == 2
player.MoveTo Gomorrah1stMarker
set rMarker to Gomorrah1stMarker
Autosave
	elseif Button == 3
player.MoveTo Gomorrah3rdMarker
set rMarker to Gomorrah3rdMarker
Autosave
	elseif Button == 4
player.MoveTo GomorrahTopMarker
set rMarker to GomorrahTopMarker
Autosave
	endif
	if (Button == 1 || Button == 2 || Button == 3 || Button == 4)
; [color=red]ниже пошли проверки для компаньонов[/color]-----------------------------------------------------
if (VNPCFollowers.bBooneHired) && (CraigBooneREF.Waiting != 1)
	CraigBooneREF.MoveTo rMarker;
endif
if (VNPCFollowers.bCassHired) && (RoseofSharonCassidyREF.Waiting != 1)
	RoseofSharonCassidyREF.MoveTo rMarker;
endif
if (VNPCFollowers.bVeronicaHired) && (VeronicaREF.Waiting != 1)
	VeronicaREF.MoveTo rMarker;
endif
if (VNPCFollowers.bLilyHired) && (LilyREF.Waiting != 1)
	LilyREF.MoveTo rMarker;
endif
if (VNPCFollowers.RaulHired) && (RaulREF.Waiting != 1)
	RaulREF.MoveTo rMarker;
endif
if (VNPCFollowers.ArcadeHired) && (ArcadeREF.Waiting != 1)
	ArcadeREF.MoveTo rMarker;
endif
if (VNPCFollowers.bEDEHired) && (EDE1REF.Waiting != 1)
	if EDE1Ref.GetDisabled == 0
EDE1Ref.MoveTo rMarker
	elseif EDE2Ref.GetDisabled == 0
EDE2Ref.MoveTo rMarker
	elseif EDE3Ref.GetDisabled == 0
EDE3Ref.MoveTo rMarker
	endif
endif
if (VNPCFollowers.RexHired) && (RexREF.Waiting != 1)
	RexREF.MoveTo rMarker;
endif	
	endif
end

Вот так можно сделать.
Пока.

Отредактировано K.A.I.N. (2011-11-03 01:17:06)

0

364

K.A.I.N.
большое спасибо, вот как раз не мог найти пример, а то в Лакки 38 и Убежище 22 много для меня лишнего...

0

365

user17 Привет!
Я думаю с терминалом был бы самый простой варинат.
Во первых легко назначить сколько нужно кнопок для этажей.
Во вторых команду на перемещение player.MoveTo GomorrahTopMarker легко вписать в Result Script меню терминала.
Недавно где то читал подобное описание, там была проблема с тем, что перенос осуществлялся до того, как было закрыто меню и его приходилось закрывать на новом месте.
Подсказали такое решение - закрыть меню командой ForceTerminalBack
AAATestTerminalRef. ForceTerminalBack
Получается, что в Result Script нужно после команды на телепорт дописать строчку с командой на закрытие меню.
Пока.

0

366

Подскажите плиз, как правильно в Гекке называется так называемая "кукла" НПС в Нью Вегасе, для которой прописывается скрипт. Ну например в третьем фолле называлась CG01DadRef

0

367

Right_Hook Привет!
Я пробовал найти в GECK "серийного убийцу в NV", как его назвал SpalnyVagon, но не нашёл, не смог понять закономерности, а потом прочитав в OSFM, "что таковым может быть любой нейтральный Ref и нужен он для того, что бы игра записывала на него карму и иногда для блока OnDeath" - создал нового непися и теперь он убийца, как отец в Fallout 3.
Если будешь продолжать поиск, и найдёшь черкни пожалуйста здесь, кто это!
Пока.

0

368

Скажите, плиз, как сделать, чтобы квест начинался через, скажем, 10 часов игрового времени? Типа, само по себе вдруг выплыло задание-информация, ни к чему происходящему до этого не привязанная.
Нашел, что есть переменная SetQuestDelay.

SetQuestDelay modifies the processing time delay for a script.
By default, quest scripts process every 5 seconds (this is based on an INI setting). This is to prevent the quest scripts from taking up an excessive amount of processor time. Unless you have a good reason, you should leave the quest script processing every 5 seconds.

И пример синтаксиса:

SetQuestDelay QuestName, DelayTimer

Если я напишу SetQuestDelay MyQuest 36000 будет ли так правильно? Как сделать красиво такую отсрочку квеста? И где это правильно вписать? Если можно, попроще, для нуба.
Спасибо заранее.

0

369

Можно через GetSecondsPassed
http://geck.bethsoft.com/index.php/GetSecondsPassed

0

370

front210 написал(а):

Если я напишу SetQuestDelay MyQuest 36000 будет ли так правильно? Как сделать красиво такую отсрочку квеста? И где это правильно вписать? Если можно, попроще, для нуба.Спасибо заранее

Нет, не правильно и не трогайте это вообще никогда. Или, по крайней мере, пока не поймете что такое частота срабатывани скриптов и в каких случаях может появиться необходимость ее менять с помощью функции SetQuestDelay. В самом квесте поставьте галку на чекбокс Script Processing Delay (Default). Сам квест должнен начинаться Start Game Enable, но игрок узнает о начале квеста только тогда, когда получит первое задание. Для задержки на 10 часов понадобится квестовый скрипт. Функция getsecondspassed для организации таких больших промежутков времени не подходит, т.к. она не выполняется если ГГ ждет или спит. Прежде чем создавать скрипт, нужно выяснить, а действительно ли Вам нужна задержка в 10 часов. Дело в том, что, например, в в Фаллаут-3 все события начинаются 17-го июля в 12 часов. Что там происходит с игровым временем, пока ГГ тренируется, взрослеет и т.д., я не знаю, никогда не интересовался. Поэтому я ниже приведу пример скрипта для игры Фаллаут-3, где делается задержка на 10 часов от начала игры, но не факт, что это именно то, что Вам нужно:

Код:
scn myTimeDelayQuestScript
short doOnce
begin gamemode
if gamehour >= 22 && doOnce == 0 ; gamehour - глобальная переменная, время суток в часах, 12 (время Ч) + 10 = 22
setobjectivedisplayed myTimeDelayQuest 1 ;показать задание номер 1 квеста "myTimeDelayQuest"
set doOnce to 1
endif
end

Вместо gamehour можно использовать другую глобальную переменную - gamedayspassed, с учетом того, что это float, а ее начальная величина 5 дней. а один час равен 1/24 (не знаю для чего, но Беседка сделала так, что с начала игры при ее первом запуске уже вроде как пять дней прошло). С учетом всего этого срочка бует выглядеть так:
if GameDaysPassed >= 5.417
А вот как будет выглядеть простая задержка на 10 часов с учетом стадий квеста:

Код:
scn myTimeDelayQuestScript
short doOnce
float timer
begin gamemode
if getstage myTimeDelayQuest == 10 && doOnce == 0
set timer to gamedayspassed
set doOnce to 1
if doOnce == 1
if gamedayspassed - timer >= 0.417
setstage myTimeDelayQuest 20
set doOnce to 2
endif
endif
end

На русском языке это будет звучать так: если наступила стадия 10, то стадия 20 наступит ровно через десять игровых часов.

Отредактировано SpalnyVagon (2011-12-29 11:49:02)

0

371

SpalnyVagon
Спасибо огромное! Вы - титан! Сохранил страницу полностью, буду делать опыты.

0

372

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

0

373

front210 написал(а):

Как сделать, чтобы предметы в инвентаре у одного отдельно взятого NPC обновлялись каждый день?
Т.е. ходит, скажем туда-сюда какой-нибудь охотник, каждый день с новой добычей.

Можно через скрипт сделать чтоб через какое то время у нпс удалялось всё из инвентаря (или оставалось то что было) и добавлялись нужные предметы.Смотря какой вариант тебе нужен.
Чтоб удалить предметы у НПС надо в том месте де ты даешь предмет в скрипте, вставить RefИмяNPC.RemoveAllItems
Можно ещё поставить проверку жив ли этот НПС

типа так я правда уже сто лет неписал скрипты может и неправильно
Это вариант без очистки инвентаря НПС

scn HunterBaggage
short doOnce
float timer
begin gamemode

if doOnce == 0
set timer to gamedayspassed
set doOnce to 1
endif

if doOnce == 1
if gamedayspassed - timer >= 0.200
RefИмяНПС.additem предмет количество  ; Пример hounterRef.additem caps001 100
set doOnce to 2
endif
endif

if doOnce == 2
if gamedayspassed - timer >= 0.200
RefИмяНПС.additem предмет количество  ; Тут уже указывай другие предметы
set doOnce to 3
endif
endif

if doOnce == 3
if gamedayspassed - timer >= 0.200
RefИмяНПС.additem предмет количество  ; Тут уже указывай другие предметы
set doOnce to 1
endif
endif

end

Отредактировано BloodBear (2012-01-14 03:32:02)

0

374

BloodBear
Спасибо, понятно!
А если нужно, чтобы предметы добавлялись из уровневого списка, на что нужно заменить RefИмяНПС.additem?
И вот это gamedayspassed - timer >= 0.200 - это сколько в реальном времени? Надо 24 часа, например.

0

375

0,5 - 12 часов
1,0 - 24 часа

насчет уровневых списков непомню я и так по памяти пишу так как фолл и гекк неустановлены немогу посмотреть. Надо глянуть сами уровневые списки и торговцев которые берут из него оружие.
Вот читай про уровневые списки

Кликай1

Кликай2

Отредактировано BloodBear (2012-01-14 17:45:05)

+1

376

Привет всем.
А как сделать определённому оружию урон по конечностям, который укажу я? Например голова - урон 200, рука - урон 50 ну и т.д.

0

377

Я точно не помню и ГЕККа под рукой нет. Но может тебе дротикомет поможет? (точнее его настройки или скрипт). Он наносит большой ущерб обеим ногам.

+1

378

Bitnik
Спасибо помог, я сразу не смог ответить так как инет закончился когда я проверял.

0

379

Как мне правильно написать скрипт что бы избавится от проблемы. Я создал MESG но он не вместил в себя всех строк, так как предел 9, тогда я сделал 9 кнопку переходом как бы на следующую страницу (месдж) Но в скрипте что то проворонил и у меня вышло так: когда я выбираю команду на втором месдже, она выполняется, но за ней следом выполняется и команда из первого, причем если я выбираю во втором месдже первую команду, то выполняется и первая команда первого месджа.

0

380

Максим
Посмотреть бы на неработающий скрипт...

0

381

Вот не полный скрипт потому что у остальных кнопок все почти также.
scn Название скрипта
short button
short item1
short item2
short item3
begih onactivate
showmessage MESG1
end
begin gamemode
set button to getbutton piressed
if button == 0

elseif button == 1
if ( player.getitemcount spareparts >= 5 )
player.removeitem spareparts  5
player.additem Ammo10mm 48
elseif  ( player.getitemcount spareparts < 5 )
ret item1 to player.getitemcount spareparts
showmessage MESG2, item1

0

382

Продолжение.
showmessage MESG1
endif
они все так повторяются до 9 кнопки. Как сделать что бы 9 кнопка была переходом на другой MESG. и при этом не выполнялись команды одновременно в обоих при выборе команды из второго MESG.

0

383

ПриветМаксим!
Как сделать переход на другое сообщение (кнопки) я не знаю, наверное кто лучше владеет скриптами могут ввести ещё одну переменную для кнопок из второго сообщения и изменить в нужном месте скрипта, или внести переменные для каждой кнопки
А бы поступил так, как писал Graf и Ещё один человек (где то в темах для Fallout3 или FalloutNV есть пример скрипта), в котором используют Форм листы. Создаются с перечнем всего что нужно для обмена (изъятия), и выдачи (добавления). Потом проверяются условия.
В один Форм лист можно внести содержимое с двух или более кнопок и тем самым обойтись меньшим количеством.
А то и совсем одной! Или совсем без кнопок.
Только активировал - сортировка произведена.
Здесь подробней Ссылка
Пока.

0

384

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

0

385

Максим написал(а):

мне надо что бы робот появлялся на том месте где стоит маркер раз в 2 дня на один день

это можно аи пакетом











Максим написал(а):

потом исчезал совсем если возможно

выставить еще один аи пакет который телепортирует робота в пустую или тестовую локацию.



















создать квест, который стартует с запуском игры и активировать как условие первый аи пакет робота(что бы робот появлялся на том месте где стоит маркер раз в 2 дня)
вторая стадия квеста - игрок че то сделал и робота сливаем в никуда.

если ошибся - джедаи поправьте.  :glasses:

Отредактировано 7755 (2012-12-16 01:41:03)

0

386

:) Так мне надо чтоб он всегда появлялся просто один день после двух дней. А на совсем не надо что бы он исчез. Как скриптом можно это сделать? Или АИ пакетами легче? Просто АИ я уже пытался но не вышло. Потому что не знаю куда робота отправить что бы его в игре ни где найти нельзя было.

Даже наверное можно что бы робот уходил куда нибудь подальше и когда дойдет до точки Х. Умер его труп исчез. Потом через два дня снова вернулся на тоже место на целый день где я его поставил в редакторе. И так что бы все время повторялось. Ну почти как респаун у ПСА который все время возле убежища 101 появляется. Только без ПЕРКА.

А кстати хотел поинтересоваться. Можно ли в Geck создать Переносную допустим (крышкомину) или любую другую бомбу которая срабатывала бы не тогда когда к ней кто то подойдет, а при нажатии на какой нибудь переносной активатор? Подложил бомбу, отошел, нажал на активатор и взрыв. Если можно то как?

0

387

Максим Привет!

Максим написал(а):

Можно ли в Geck создать Переносную допустим (крышкомину) или любую другую бомбу

Да можно!
Например так:
Если есть своя nif модель, созданная в 3D редакторе хорошо. Нет можно взять игровой nif мины (извлечь из Fallout - Meshes.bsa  nif мины) Это в Weapon-1hadminedrop.
Как извлечь можно посмотреть здесь Картотека
Затем расположить nif мины в папке вашего мода, пути к текстурам править не надо (оставить игровые)
В GECK  в Object Window открыть 10-mm патрон, сменить ID имя на своё AAAMaksMine, название Супермина, поставить количество (Clip Raunds) 1. Вес если нужно.
Заменить иконку, отображения в инвентаре.
В инвентаре мина будет находится в боеприпасах.

Поставить выключатель (активатор)
Положить первую мину, присвоить Ref имя AAAMaksimMinRef
Поставь в нужное место (там где будет лежать первая мина) Xmarker, дай ему Ref имя AAAMaksimMintMarkerRef
На выключатель такой скрипт

scn aaaExplosionSCRIPT

Begin OnActivate Player ; при активации игроком
if player.GetItemCount AAAMaksMine == 0 ; если в инвентаре 0 мин (защита от самоподрыва с миной в инвентаре)
Activate ; активировать
AAAMaksimMinRef.PlaceAtMe MediumExplosion 1 ; перенести на мину эффект взрыва
AAAMaksimMinRef.MoveTo AAAMaksimMintMarkerRef ; перенести мину на место (первой мины)
endif
End

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

Понимаю, что не совсем красиво, но всё что могу!
Возможно и у игровой мины можно сделать настройки, что бы она не взрывалась, при приближении, но я не нашёл. Может не там смотрел!
Скрипт можно расширить на несколько мин с одного, или нескольких активаторов, просто повторив,

0

388

Ой!

Максим написал(а):

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

Не внимательно читал и зря писал!
Ну да ладно!
А про переносной активатор даже не знаю. А крышко-мина, как активируется? На картинке она с какой то антенной.

0

389

K.A.I.N. написал(а):

А про переносной активатор даже не знаю.

По идее тоже самое, только скрипт нужно вешать на какой-то предмет (переносной активатор) который игрок может брать и активировать.

0

390

Подскажите пожалуйста. Не могу понять почему в сундук влезает очень много предметов, а когда сундук вешаешь на брамина ( teammate container )то мало. Как можно сделать что бы через брамина можно было добавить больше предметов как и просто в сундук.

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. » Вопросы по скриптам в Fallout 3