Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Здравствуйте уважаемые, если не затруднит поясните мне такую деталь - есть евент который откликается на нажатие определенной кнопки, к примеру RegisterForKey(*anykeycode*) или OnKeyDown(Int KeyCode), очень интересная штука, но вот куда повесить скрипт с этим евентом, чтобы его можно было вызвать игроку всегда и везде?

  • Ответов 840
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
13.04.2017 11:05:49, RobbyWhite сказал(-а):

Здравствуйте уважаемые, если не затруднит поясните мне такую деталь - есть евент который откликается на нажатие определенной кнопки, к примеру RegisterForKey(*anykeycode*) или OnKeyDown(Int KeyCode), очень интересная штука, но вот куда повесить скрипт с этим евентом, чтобы его можно было вызвать игроку всегда и везде?


На элиас игрока в квесте.
Опубликовано

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

Скрипт
Scriptname AAAFAItemsAddingInLVLlist extends Quest

String Property StringMsg Auto
Actor Property PlayerRef Auto
Book Property TestNote Auto

MiscObject property IngotIron auto
MiscObject property IngotSteel auto
MiscObject property IngotCorundum auto
MiscObject property IngotDwarven auto
Leveleditem property AAAFAEditorID_LeveledList1 auto
Leveleditem property AAAFAEditorID_LeveledList2 auto
Leveleditem property AAAFAEditorID_LeveledList3 auto
Leveleditem property AAAFAEditorID_LeveledList4 auto

Event OnInit()
utility.wait(15.0)

AAAFAEditorID_LeveledList1.AddForm(IngotIron, 1, 1)
AAAFAEditorID_LeveledList2.AddForm(IngotSteel, 1, 1)
AAAFAEditorID_LeveledList3.AddForm(IngotCorundum, 1, 1)
AAAFAEditorID_LeveledList4.AddForm(IngotDwarven, 1, 1)
PlayerRef.additem(TestNote, 1, 1)

Debug.Notification(StringMsg)

endEvent

 

Этот скрипт задержавшись на 15 секунд, должен добавить слитки в пустые уровневые листы, а пустые уровневые листы, в свою очередь, уже добавлены в контейнер. Проблема в том, что слитки не появляются в контейнере. Сообщение появляется и добавляется только записка.Сам контейнер расположен в ячейке, в заброшенной тюрьме (EditorID: AbandonedPrison01), то есть в том помещении где начинается Alternate Start. Я не могу понять, что я делаю не так.

Прикладываю esp и скрипт.

TestScript.zip

Опубликовано
14.04.2017 02:15:39, SICreef сказал(-а):

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

Скрипт
Scriptname AAAFAItemsAddingInLVLlist extends Quest

String Property StringMsg Auto
Actor Property PlayerRef Auto
Book Property TestNote Auto

MiscObject property IngotIron auto
MiscObject property IngotSteel auto
MiscObject property IngotCorundum auto
MiscObject property IngotDwarven auto
Leveleditem property AAAFAEditorID_LeveledList1 auto
Leveleditem property AAAFAEditorID_LeveledList2 auto
Leveleditem property AAAFAEditorID_LeveledList3 auto
Leveleditem property AAAFAEditorID_LeveledList4 auto

Event OnInit()
utility.wait(15.0)

AAAFAEditorID_LeveledList1.AddForm(IngotIron, 1, 1)
AAAFAEditorID_LeveledList2.AddForm(IngotSteel, 1, 1)
AAAFAEditorID_LeveledList3.AddForm(IngotCorundum, 1, 1)
AAAFAEditorID_LeveledList4.AddForm(IngotDwarven, 1, 1)
PlayerRef.additem(TestNote, 1, 1)

Debug.Notification(StringMsg)

endEvent

 

Этот скрипт задержавшись на 15 секунд, должен добавить слитки в пустые уровневые листы, а пустые уровневые листы, в свою очередь, уже добавлены в контейнер. Проблема в том, что слитки не появляются в контейнере. Сообщение появляется и добавляется только записка.Сам контейнер расположен в ячейке, в заброшенной тюрьме (EditorID: AbandonedPrison01), то есть в том помещении где начинается Alternate Start. Я не могу понять, что я делаю не так.

Прикладываю esp и скрипт.

attachicon.gifTestScript.zip

 

 

Слушай, а уровневые листы ты настроил правильно? Ошибка многих в том, что когда в уровневом листе они ставят шанс появления прдмета на 100, они не знают, что это не шанс появления, а шанс "не появления". Тоесть, что бы вещь появилась - надо ставить не 100 а к примеру 1.

Опубликовано
Слушай, а уровневые листы ты настроил правильно?

 

Ну в уровневых листах я боле менее разбираюсь. Там у меня 0 стоит. Я пробовал заместо AddForm, AddItem поставить, но Leveleditem не поддерживает функцию эдитем. Мне бы соурс скрипта рабочего посмотреть, который и предметы добавляет в уровневые листы и уровневые листы в другие уровневые листы.

Опубликовано
15.04.2017 13:25:07, SICreef сказал(-а):

Ну в уровневых листах я боле менее разбираюсь. Там у меня 0 стоит. Я пробовал заместо AddForm, AddItem поставить, но Leveleditem не поддерживает функцию эдитем. Мне бы соурс скрипта рабочего посмотреть, который и предметы добавляет в уровневые листы и уровневые листы в другие уровневые листы.

Я щас не могу точно посмотреть - но вроде есть дефолтные скрипты добавления и работы в формлистах. Поищи в них.

  • 5 недель спустя...
Опубликовано (изменено)

Есть ли скрипт на покраснение экрана? Очень надо для моего мода.

 

И ещё вопрос: как проигрывать звуки скриптом? Есть звук NPCHumanVampireFeed, в файлах игры он зовётся иначе - npc_human_vampirefeed_01.wav.

 

Сделал команду NPCHumanVampireFeed.Play(akSpeaker) (ибо звук должен проигрываться в разговоре), но в Properties скрипта нужный звук не находится, такого названия просто нет. Как быть?

 

 

__________

 

Разобрался. Звук был в разделе Sound discriptor, но отсутствовал в разделе Sound marker. Создал новый айди, вписал в него название айди из первого раздела и звук стал доступен в Properties.

 

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

Изменено пользователем bv1112223333
Опубликовано
14.05.2017 17:55:24, bv1112223333 сказал(-а):

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

Это можно сделать с помощью Image Space Modifier-a. Среди ванильных вроде бы даже есть подходящий (absorb red), но и самому просто красный фрейм изготовить не трудно. Вызывается он (ISM) командой ApplyCrossFade(Float time). Это для плавного нарастания эффекта. Ну или просто Apply() для молниеносного.
Опубликовано

Здравствуйте, у меня тут назрел вопрос, можно ли как-то отследить степень заряда зачарования на предмете и как это сделать?

  • 1 месяц спустя...
Опубликовано

При попытке использовать функцию SKSE (конкретно - "GetModByName") компилятор пишет, что это не функция или такой не существует.
Как его заставить признать SKSE? Или, быть может, есть другой способ проверить, установлен ли мод?
-
Вопрос снят, это я дико затупил, забыв, что SKSE ставил инсталлятором, который не вбрасывает SKSE-шные ресурсы. Всё норм.
 
 

20.05.2017 09:19:24, Pactifirus сказал(-а):

Здравствуйте, у меня тут назрел вопрос, можно ли как-то отследить степень заряда зачарования на предмете и как это сделать?

В SKSE имеется такая функция - GetItemCharge, по ссылке и пример есть.

Опубликовано
А теперь реально вопрос, который решить у меня не получается.
В общем, есть МКМ, в котором включается мод, после чего ГГ добавляется спелл, на котором висит скрипт, сканирующий (по идее) оружие и выставляющий его скорость атаки, вычисляемую по формуле. Но дело в том, что скрипт не срабатывает, даже вырезав весь код и прописав одно только уведомление, я это уведомление никак не получаю.

Для проверки переместил это дело в МКМ и вызывал по нажатию на триггер, также этот спелл делал активируемой абилкой - всё работает и меняется, значит, дело в старте самого эффекта.
Потому вопрос таков - как его нормально запустить? Нагугливал всякие OnUpdate, но так и не понял, как оно по-человечески применяется и эта ли функция должна вообще применяться. Если не сложно, объясните, пожалуйста, дубу. Хорошо бы перезапускать его при переэкипировке, но опять же - как?


Есть.
  • Нравится 1
  • 3 недели спустя...
Опубликовано (изменено)

Вопрос: я создаю квест, у которого два пути активации: при прочтении письма в Покоях Архимага или при получении письма (гонец приходит после прохождения квеста "Око Магнуса"), тоесть это взаимоисключающие пункты.
Насчет их взаимоисключения я придумал как сделать:
1) письмо в ПА (Покоях Архимага) удаляется после прохождения квеста
2) гонец приходит, после получения титула архимага и получения ГГ уровня
Вопрос заключается в следующем:
1) как мне проверить, что ГГ - архимаг (знаю, что можно получить его ранг, но какой [по номеру] ранг у архимага - я хз);

2) как мне проверить, получил ли игрок уровень после прохождения квеста? Я знаю, что такая система в квесте "Пробуждение Королевы-Волчицы", но при попытке разобраться, я не понял, что да как там работает. Может кто мне объяснить как это работает?

__________

UPD-решено. Изменил суть - письмо игрок получает от Толфдира, а условия взял с повторяющегося квеста на аномалию ("Отголоски" - MGR30). Таким образом, сам разобрался с проблемой, пока ждал, когда ответят

Изменено пользователем wdsaasdw
  • 2 недели спустя...
Опубликовано (изменено)

Помогите поправить скрипт. Нужно, чтобы по окончании диалога книга (Book1) добавилась в левеллист (Container1). Этот сделан по примеру добавления книг игроку Урагом по окончании квеста  "Библиотечные книги", но не врубаюсь, как заставить его работать с левел листом.

Это оригинал:

Спойлер
;BEGIN FRAGMENT Fragment_0
Function Fragment_0(ObjectReference akSpeakerRef)
Actor akSpeaker = akSpeakerRef as Actor
;BEGIN CODE
Game.GetPlayer().AddItem(FavorRewardGoldLarge)
;END CODE
EndFunction
;END FRAGMENT

;END FRAGMENT CODE - Do not edit anything between this and the begin comment

LeveledItem Property FavorRewardGoldLarge Auto

 

А это то, что я пытался сотворить:

LeveledItem Property FavorRewardGoldLarge Auto[/spoiler]
Book Property Book1 Auto
LeveledItem Property Container1 Auto
Function Fragment_0(ObjectReference akSpeakerRef)
Actor akSpeaker = akSpeakerRef as Actor
Container1.AddItem(Book1)
EndFunction

Изменено пользователем L347z4
Опубликовано (изменено)

ГСПД...

Скажите, есть возможность где-нибудь достать уже готовый скрипт, который позволяет включать какой-то статичный объект, когда любой персонаж (не только игрок) входит в определенную зону (скажем, в пределы триггера), а затем отключать его и включать другой объект, когда персонаж покидает зону триггера? Устал искать, кучу инфы перерыл на английском языке, но ситуация еще усложняется тем, что у меня на компьютере компиляторы отказываются работать.

Если кто-то предложит помощь - буду очень благодарен. Заранее спасибо.

Не актуально.

Изменено пользователем Sirin...
Опубликовано

Уважаемые!

Расскажите, а есть ли какая-то скриптовая схема, которая позволила бы посчитать актеров внутри триггера? Ну то есть записать условие "когда здесь появляется один актер - действие начинается, пока здесь есть хотя бы один актер - действие выполняется, когда нет никого - действие прекращается"? То есть чтобы скрипт не реагировал на актеров, которые входят в поле действия триггера и выходят из него ровно до тех пор, пока не выйдет последний/не войдет первый? Я мастер объяснять, конечно, но... :D

Опубликовано
18.08.2017 12:37:24, YourBunnyWrote сказал(-а):

Считай количество входящих и выходящих при помощи событий OnTriggerEnter и OnTriggerLeave соответственно.

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

Опубликовано

Ниет, чет я тупенький :з

Scriptname SRNewAutoLights extends ObjectReference 

Event OnTrigger(akActionRef)

if GetTriggerObjectCount() == 0
    ObjectReference.disable()
else
    ObjectReference.enable()
endIf

EndEvent

Не пойму, что здесь от меня требуется со словами missing ID at ')'

Опубликовано
18.08.2017 14:11:13, Sirin... сказал(-а):

Не пойму, что здесь от меня требуется со словами missing ID at ')'

Смотря какая строка имеется ввиду. Скорее всего, не указан тип параметра akActionRef.
Вот накидал рабочий скрипт:

Scriptname SRNewAutoLights extends ObjectReference

Int _actrosCountInTriggerZone = 0
Int Property actrosCountInTriggerZone
    Function Set(Int newValue)
        If newValue < 0
            newValue = 0
        EndIf
        If newValue != _actrosCountInTriggerZone
            If newValue == 0 && _actrosCountInTriggerZone != 0
                TriggerActionStop()
            ElseIf newValue != 0 && _actrosCountInTriggerZone == 0
                TriggerActionStart()
            EndIf
            _actrosCountInTriggerZone = newValue
        EndIf
    EndFunction
    Int Function Get()
        Return _actrosCountInTriggerZone
    EndFunction
EndProperty

Event OnTriggerEnter(ObjectReference akActionRef)
    If akActionRef As Actor != None
        actrosCountInTriggerZone = actrosCountInTriggerZone + 1
    EndIf
EndEvent

Event OnTriggerLeave(ObjectReference akActionRef)
    If akActionRef As Actor != None
        actrosCountInTriggerZone = actrosCountInTriggerZone - 1
    EndIf
EndEvent

Function TriggerActionStart()
    Debug.MessageBox("В зону триггера вошли актёры")
EndFunction

Function TriggerActionStop()
    Debug.MessageBox("Зону триггера покинули актёры")
EndFunction
  • Нравится 1

Всё провисло и болтается.

Опубликовано
Решил я короче изучать скрипты,принцып их написания я уже понял и вот у меня возник вопрос к вам "Знающим людям")))Есть ли какой-нибуть список всех функций,событий и т.д?

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...