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

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



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




ITU  Offline  Сообщение №751 написано: 9 июля 2012, 05:20 | Отредактировано: ITU - 9 июля 2012, 05:21



995
KAIN48,
http://geck.bethsoft.com/index.php/GetWeaponHealthPerc
http://geck.bethsoft.com/index.php/SetWeaponHealthPerc
они на одетое оружие только вроде работают

как-то вот так... но это одетое
Code
OnFire

if player.GetWeaponHealthPerc < 50
player.SetWeaponHealthPerc 100
endif

end


по картинке, сюда по полоске, оружие 100%
Попробуй у ремотника смотреть состояние...

у NVSE еще есть GetHealth, SetHealth - определяет базовое здоровье какой-то вещи

Добавлено (09.07.2012, 09:20)
---------------------------------------------
ой, мну опередили

KAIN48  Offline  Сообщение №752 написано: 9 июля 2012, 09:48


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


Spalny_Vagon, ITU, Привет!
Спасибо за скрипты.
Получается, что лечится будет любое оружие взятое игроком и выделить одно не получится стандартными (без расширителя) средствами.
А нельзя сделать, из двух блоков OnEquip и OnEquip - с какой нибудь переменной, "взят"
Если в блоке OnEquip "взят" то в блоке OnUnequip - лечится. (Наверное полный бред!)
Цитата ITU

Попробуй у ремотника смотреть состояние...


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

Мы вышли из дома, когда во всех... Поздно вышли!
Artem13  Offline  Сообщение №753 написано: 9 июля 2012, 10:46 | Отредактировано: Artem13 - 9 июля 2012, 10:50


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


KAIN48
Цитата KAIN48

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


Немного не так. Если код авторемонта находится не в секции (блоке) GameMode или MenuMode, а в тех блоках, что работают, что называется, на активацию (например OnFire, как советовали выше), то если скрипт "авторемонта" повешен на конкретный ствол, то лечиться будет только этот ствол.

Если скрипт будет глобальным (квестовым), то возможны варианты - если авторемонт нужен для пары-тройки стволов, можно использовать функцию GetEquipped

Code
if (player.GetEquipped Weapon1) || (player.GetEquipped Weapon2)
     //код авторемонта
endif

Если стволов много тоже можно проверять, но код будет громоздким.

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


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


Artem13, Привет!
Цитата Artem13

если скрипт "авторемонта" повешен на конкретный ствол, то лечиться будет только этот ствол.


Спасибо за разьяснение. ITU, как раз про это и писал, только я не понял!
Спасибо всем. Пока.

Мы вышли из дома, когда во всех... Поздно вышли!
Римайер  Offline  Сообщение №755 написано: 22 июля 2012, 18:00


хоМяк


957
Есть скрипт такого вида:



Скрипт квестовый, квест-пустышка запускается с началом игры. Мне интересно, что будет с игрой, если таких квестов будет крутится сотня- другая?

JupiterJour  Offline  Сообщение №756 написано: 22 июля 2012, 21:24 | Отредактировано: Joopeeter - 22 июля 2012, 21:55


_


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

Мне интересно, что будет с игрой, если таких квестов будет крутится сотня- другая?


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

Далее. Если во многих из этих сотен скриптов проверяются одни и те же условия (что неизбежно, так как клавиш можно задействовать гораздо меньше двухсот), то можно скомпоновать их по этому признаку, опять же, в каждом проверяя условия по очереди, то есть отбрасывая уже на ранних этапах большие куски, не подходящие под наиболее общие условия.
Думаю, таким образом можно избежать полной остановки игры и превратить её в интересное слайд-шоу. :)
Ещё. Я так понял, что один квест приходится на одну пару оружий, так? Тогда почему бы не запускать только один единственный из этих квестов в блоке OnEquip на оружии?

А в квестовый скрипт вставить проверку на экипированность соответствующего оружия и остановку квеста если блок UnEquip не сработал по каким-то причинам или ошибочно сработал OnEquip. Типа такого:

Римайер  Offline  Сообщение №757 написано: 23 июля 2012, 07:50


хоМяк


957
Joopeeter, благодарю!

ReaperYura  Offline  Сообщение №758 написано: 28 июля 2012, 10:41



21
Народ,подскажите скрипт на доктора (лечение ран и избавление от радиации) я то прописал,что было в оригинале у Митчела,но мой НПС только деньги забирает,а эффекта 0 =)

Spalny_Vagon  Offline  Сообщение №759 написано: 28 июля 2012, 11:12


Мастер


Цитата ReaperYura

Народ,подскажите скрипт на доктора (лечение ран и избавление от радиации) я то прописал,что было в оригинале у Митчела,но мой НПС только деньги забирает,а эффекта 0 =)


В Вегасе доктора "работают точно также, как и в Фоле. DoctorTemplateSCRIPT - стандартный докторский скрипт.

======================
Мод "Нью-Йорк" на русском: 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
tundruck73  Offline  Сообщение №760 написано: 28 июля 2012, 11:12 | Отредактировано: tundruck73 - 28 июля 2012, 11:15



ReaperYura, для докторов есть квест Vdoctors, лично я бы на твоем месте добавил этого твоего непися туда (написав ему, соответственно, свои реплики - можно скопировать, к примеру, реплики Ады Штраус, там условия подходящие). Ну, и повесить на непися скрипт - scn DoctorTemplateSCRIPT.

Мосье, же не манж па сис жур...
Умер 23.04.2019
ReaperYura  Offline  Сообщение №761 написано: 28 июля 2012, 12:45



21
Цитата tundruck73

ReaperYura, для докторов есть квест Vdoctors, лично я бы на твоем месте добавил этого твоего непися туда (написав ему, соответственно, свои реплики - можно скопировать, к примеру, реплики Ады Штраус, там условия подходящие). Ну, и повесить на непися скрипт - scn DoctorTemplateSCRIPT.


Да-да,спасибо.Тоже вот только нашел =)

Добавлено (28.07.2012, 16:45)
---------------------------------------------
Кстать,не подскажите,что нужно делать,чтобы при излечении у доктора, затухал экран как в оригинале игры?


tundruck73  Offline  Сообщение №762 написано: 28 июля 2012, 12:51 | Отредактировано: tundruck73 - 28 июля 2012, 12:52



ReaperYura, скрипт DoctorTemplateSCRIPT как раз и включает "затемнялку" (FadeToBlackISFX) при излечении.

Мосье, же не манж па сис жур...
Умер 23.04.2019
ReaperYura  Offline  Сообщение №763 написано: 28 июля 2012, 20:15



21
короче кое-как разобрался.Правда решил создавать сам все с нуля =))Теперь хоть какой-то опыт есть =))Спасибо за подсказки=)

rizys-mod  Offline  Сообщение №764 написано: 9 августа 2012, 22:48


Команда "Rizys-Mod"


250
Как активировать анимацию из фурнитуры (стульев, дивана, кровати) при активации активатора? При этом желательно выбрать место где будет проигрываться анимация (координаты места бы поставить там, где мне нужно). То есть гг должен проиграть анимацию без запрета на управление, и в том месте где мне нужно (на объекте), но это место (объект) может каждый раз менятся, так как объект тоже будет перемещаться\двигаться.
Я пробовал через PlayIdle, почему то не сработало. Поставил анимацию на Actor Effect, и добавлял игроку как спелл эффект, но тоже не сработало. На еффекте скрипт вида:
Code
Begin ScriptEffectUpdate
player.PlayIdle SitAnim ;моя анимация SitAnim называется по другому, но этоже для примера
End

Какие предложение вы можете мне предложить о том, как проделать нужные мне действия?

Команда "Rizys-mod" - разработка плагинов на Fallout.
Vi[RUS]  Offline  Сообщение №765 написано: 10 августа 2012, 00:13 | Отредактировано: Vi[RUS] - 10 августа 2012, 11:48



275
Прикрепил к триггеру скрипт на смену погоды

Code
Scn PlayerRanchWeatherScript

Begin OnTriggerEnter Player

SetWeather PlayerRanchWeather

End


При попадании в триггер погода меняется, но очень медленно (примерно 30сек), как это ускорить?

Spalny_Vagon  Offline  Сообщение №766 написано: 10 августа 2012, 04:51


Мастер


Цитата rizys-mod

Я пробовал через PlayIdle, почему то не сработало. Поставил анимацию на Actor Effect, и добавлял игроку как спелл эффект, но тоже не сработало. На еффекте скрипт вида:
Begin ScriptEffectUpdate
player.PlayIdle SitAnim ;моя анимация SitAnim называется по другому, но этоже для примера
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
rizys-mod  Offline  Сообщение №767 написано: 10 августа 2012, 06:11


Команда "Rizys-Mod"


250
Spalny_Vagon, а почему же тогда не работает этот "раз"? Раньше я так делал в другом своем моде и работало, но плагин был на Fallout3. В чем здесь разница я понять не могу.

Команда "Rizys-mod" - разработка плагинов на Fallout.
Spalny_Vagon  Offline  Сообщение №768 написано: 10 августа 2012, 07:50


Мастер


Цитата rizys-mod

В чем здесь разница я понять не могу.


Певрое, что приходит в голову - отстутсвтие в Вегасе этой анимации.

======================
Мод "Нью-Йорк" на русском: 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
rizys-mod  Offline  Сообщение №769 написано: 10 августа 2012, 08:45


Команда "Rizys-Mod"


250
Spalny_Vagon, я создавал новую анимационную группу, я даже пробовал стандартную использовать... Брал ту анимацию которую использовал в Fallout3. И что самое интересное, все тоже самое делал в Фоле3 и работало, но здесь нет...

Добавлено (10.08.2012, 12:45)
---------------------------------------------
Spalny_Vagon, почитал на форуме бетезды, почему то функция PlayIdle не у кого не работает. Что же делать...


Команда "Rizys-mod" - разработка плагинов на Fallout.
Spalny_Vagon  Offline  Сообщение №770 написано: 10 августа 2012, 10:41


Мастер


Попробуйте через ai-пакет. Может там оно работает.

======================
Мод "Нью-Йорк" на русском: 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
rizys-mod  Offline  Сообщение №771 написано: 10 августа 2012, 12:28


Команда "Rizys-Mod"


250
Spalny_Vagon, через аи пакет работает, но:
Цитата rizys-mod

То есть гг должен проиграть анимацию без запрета на управление


А при использовании аи пакета, управление уходит в запрет, я уже пробовал сделать так "FurnitureRef.Activate player 1" но по неизвестным причинам в моем варианте скрипта не сработало.

Команда "Rizys-mod" - разработка плагинов на Fallout.
Spalny_Vagon  Offline  Сообщение №772 написано: 10 августа 2012, 14:09


Мастер


Цитата rizys-mod

А при использовании аи пакета, управление уходит в запрет


Оно же не с концами уходит, можно отсечку по времени сделать. А какая там у Вас сверхзадача поставлена, если не секрет?

======================
Мод "Нью-Йорк" на русском: 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
rizys-mod  Offline  Сообщение №773 написано: 14 августа 2012, 18:13 | Отредактировано: rizys-mod - 12 августа 2012, 20:38


Команда "Rizys-Mod"


250
Spalny_Vagon, да нет некакого секрета, нужно просто задейчтвовать анимацию "сесть", "сидеть (dynamicchair)", и "встать". Единственные условие. осталось уже одно - это использовать эти анимации на гг без блокировки управления.
Итак я нашел способ, вот скрипт:

Но естественно вопрос о анимации с фурнитуры остался. Но хоть какой то выход уже есть.

И такой вопрос, как сделать что бы гг мог поворачиваться только на 90 градусов вправо и влево? Естественно дисабле контроль присутствует. Не имеет значения функции ли НВСЕ или стандартные, мне важен ответ.

Добавлено (14.08.2012, 22:13)
---------------------------------------------

Цитата rizys-mod

И такой вопрос, как сделать что бы гг мог поворачиваться только на 90 градусов вправо и влево? Естественно дисабле контроль присутствует. Не имеет значения функции ли НВСЕ или стандартные, мне важен ответ.


Вроде бы нашёл ответ, нужно сделать блок NiStringPalette, и в нем указать кости только до туповища.

Команда "Rizys-mod" - разработка плагинов на Fallout.
ITU  Offline  Сообщение №774 написано: 18 августа 2012, 11:28 | Отредактировано: ITU - 18 августа 2012, 11:59



995
уже неделю мучаюсь
Есть непись с отключенным АИ, манекен
У него есть activate ref на маркере, с теме же кординатами что и у непися
на неписе вот такой скрип (часть)

Code
ref MoveToPos

float    iPosZ;
float    iPosX;
float    iPosY;

short    bDoOnce;
short  bResetOk;

Begin GameMode

if MoveToPos == 0
    Set MoveToPos to GetLinkedRef
endif

    if (bDoOnce != 1)
     Set iPosZ to MoveToPos.GetPos Z
     Set iPosX to MoveToPos.GetPos X
     Set iPosY to MoveToPos.GetPos Y
     Set bDoOnce to 1
    endIf

if (bResetOk == 1)

    if GetPos Z !=  iPosZ || GetPos X !=  iPosX || GetPos Y !=  iPosY
     Moveto MoveToPos
    endif
     Set bResetOk to 0
    endif
end

begin OnActivate
Set bResetOk to 1
end


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

rizys-mod  Offline  Сообщение №775 написано: 18 августа 2012, 11:48 | Отредактировано: rizys-mod - 18 августа 2012, 11:50


Команда "Rizys-Mod"


250
ITU, а каким образом отключал Аи пакеты? В скрипте ошибка три End и два begin.

Команда "Rizys-mod" - разработка плагинов на Fallout.
ITU  Offline  Сообщение №776 написано: 18 августа 2012, 11:59 | Отредактировано: ITU - 18 августа 2012, 12:02



995
ну я часть копировал, полный скрипт

Code
scn AAAITUHMannequinStaticScript

short Activated
short PlayerHasEnteredCell

float Timer
ref MoveToPos

; Starting Postion
float    iPosZ;
float    iPosX;
float    iPosY;

short    bDoOnce;
short  bResetOk;

Begin OnLoad

if Activated == 0
SetActorsAI 1
AddScriptPackage 0ITUHMannequinWeaponReadyStatic
EvaluatePackage 0ITUHMannequinWeaponReadyStatic
set Activated to 1
else
SetActorsAI 0
endif

   Set Timer to .1
   ;SetGhost 1
     
END

Begin GameMode

if MoveToPos == 0
   Set MoveToPos to GetLinkedRef
endif

   if (bDoOnce != 1)
    AddItem 0ITUMannequinAmmoList 1
    Set iPosZ to MoveToPos.GetPos Z
    Set iPosX to MoveToPos.GetPos X
    Set iPosY to MoveToPos.GetPos Y
    Set bDoOnce to 1
   endIf

if (bResetOk == 1)

   if  GetPos X !=  iPosX || GetPos Y !=  iPosY
    Moveto MoveToPos
    SetActorsAI 1
    Set Timer to .5
   endif

    Set bResetOk to 0
   endif

if GetInSameCell player
   set PlayerHasEnteredCell to 1
else
   if PlayerHasEnteredCell == 1
      
    Set bResetOk to 1
    set PlayerHasEnteredCell to 0
   endif
endif

if Timer > 0
   set Timer to Timer - GetSecondsPassed
   Moveto MoveToPos
   SetActorsAI 0
endif

END

begin OnActivate

ShowMessage 0ITUHMannequinStaticMessage
set Activated to 0
Set bResetOk to 1

end


rizys-mod  Offline  Сообщение №777 написано: 18 августа 2012, 12:08 | Отредактировано: rizys-mod - 18 августа 2012, 12:09


Команда "Rizys-Mod"


250
ITU, добавь в строчку
Code
if  GetPos X !=  iPosX || GetPos Y !=  iPosY[i] || GetPos Z != iPosZ[/i]


И НАПОМИНАЮ, ОБЪЕКТЫ С ЦИФРАМИ НЕ КОМПИЛИРУЮТСЯ.

Команда "Rizys-mod" - разработка плагинов на Fallout.
ITU  Offline  Сообщение №778 написано: 18 августа 2012, 12:30



995
Цитата rizys-mod

добавь в строчку


без толку...

Vdova  Offline  Сообщение №779 написано: 18 августа 2012, 12:40



13
Я решил создать разговор 2 NPC
в ходе которого должны появится предметы, которые изначально выключены
и после произношение очередной фразы они появились

rizys-mod  Offline  Сообщение №780 написано: 18 августа 2012, 12:59


Команда "Rizys-Mod"


250
ITU, а полную задумку можешь сказать? Может как-то по другому получится сделать...

Vdova, Круто :D

Команда "Rizys-mod" - разработка плагинов на Fallout.
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





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