Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)

Вопросы по скриптам Papyrus
sansuli  Offline  Сообщение №1 написано: 31 августа 2012, 13:29 | Отредактировано: Multigone - 23 апреля 2020, 14:24


The Red Sun


193
Уроки по скриптованию на языке Papyrus
Прежде чем задать вопрос просмотрите вышеуказанные уроки.
ok


Тема регламентирована.


• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней.
• Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней.
• При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС.
• При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "
+" полезного сообщения.

Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
LordVadim  Offline  Сообщение №571 написано: 28 ноября 2013, 12:52 | Отредактировано: LordVadim - 28 ноября 2013, 12:53



139
Цитата AleksTirex

Можно вместо Activate дать пакет Sit


Это сработало, при загрузке модель сидит. А для разных моделей придется штук 30 алиасов запихать в квест и написать скрипт для управления/назначения/очистки. Похоже, что это единственное решение.

Kepper  Offline  Сообщение №572 написано: 29 ноября 2013, 07:15



860
Я потихоньку перевожу описание функций папируса. Но мне на нравится текущий способ представления информации.
Поэтому ищу более удобный.
http://www.creationkit.com/Game_Script
К столбцу Description претензий нет
Столбец Function нужен. Берешь указанную там строку и полностью копируешь к себе в скрипт.
Но из за слишком большого количества информации трудно понять что это за функция.

Я выделил тип возвращаемого значения и наименование функции в отдельные столбцы.
Game Script
http://yadi.sk/d/gaA4nGoLDViXG
Удобнее ли работать с информацией представленной таким образом или достаточно виделения жирным шрифтом и курсивом, как на исходной странице?
Может у кого-то появятся идеи более удобных вариантов.

Пока это всё в забито в эксель. Да и перевод фрагментарен и не точен.

LordVadim  Offline  Сообщение №573 написано: 29 ноября 2013, 08:27 | Отредактировано: LordVadim - 29 ноября 2013, 08:29



139
Цитата Kepper

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


Тут на всех не угодишь. Мнения субъективны. Мое мнение:
В первом варианте не сразу видно имя функции, неудобно искать. Во втором варианте дублируется информация в четвертом столбце из первого и второго и выглядит не слишком читабельно.
На мой взгляд удобнее было бы организовать информацию в три столбца: Возвращаемый тип / Имя функции (с синтаксисом) / Описание функции.

В любом случае: Спасибо за создание перевода!!!

Artem13  Offline  Сообщение №574 написано: 29 ноября 2013, 09:43 | Отредактировано: Artem13 - 3 декабря 2013, 07:55


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


LordVadimKepper, есть еще вариант оформить это дело в chm-файл. Пример могу вечером скинуть - я, в своё время, начинал делать справочник по моддингу KB:The Legend

PS Ну, собственно, вот

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



860
Цитата Artem13

PS Ну, собственно, вот


222 КБ - маловато будет

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

А теперь о грусном.
Код
Scriptname LB_NoNude extends activemagiceffect   

Keyword Property KeywordTopItem Auto  
Keyword Property KeywordBottomItem Auto  
FormList Property ListTopItem Auto
FormList Property ListBottomItem Auto

Actor SrcActor

Int NumSeta = -1

auto state DefaultState  
  Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
     gotoState("waitState")
     Utility.Wait(0.1)
   Bool TopEquipped = Self.GetTargetActor().WornHasKeyword(KeywordTopItem)
   Bool BottomEquipped = Self.GetTargetActor().WornHasKeyword(KeywordBottomItem)
   Bool FullSetEquipped = False
   ;Debug.Notification("TopEquipped = "+TopEquipped + " BottomEquipped = " + BottomEquipped)

   If !(TopEquipped && BottomEquipped)
    ;Debug.Notification("И прошло")
    
    If NumSeta == -1
     ;If (TopEquipped || BottomEquipped)
     ;    NumSeta = GetEquipedSetNum(Self.GetTargetActor(), TopEquipped, BottomEquipped)
     ;EndIf
     ;Debug.Notification("GetEquipedSetNum ="+NumSeta+" FullSetEquipped "+FullSetEquipped )
     If NumSeta == -1
      ;Debug.Notification(" ListTopItem.GetSize ="+ ListTopItem.GetSize())
      NumSeta = Utility.RandomInt(0, ListTopItem.GetSize() - 1)  
     EndIf
    Else
     FullSetEquipped = True
    EndIf
    ;Debug.Notification("NumSeta ="+NumSeta+" FullSetEquipped "+FullSetEquipped)
    EquipSet(NumSeta, TopEquipped, BottomEquipped, Self.GetTargetActor())
   EndIf
   If !FullSetEquipped
    gotoState("defaultState")
   EndIf
  EndEvent  
EndState

state waitState
;
endState

Int Function GetEquipedSetNum(Actor TargetActor, Bool TopEquipped, Bool BottomEquipped)
  ;Debug.Notification("CheckEquipedSet")
  Int SetNum = ListTopItem.GetSize()
  If TopEquipped
   While (SetNum >0)
    If TargetActor.IsEquipped(ListTopItem.GetAt(SetNum ))
     Return SetNum
    EndIf
    SetNum -= 1
   EndWhile
  EndIf

  If BottomEquipped
   While SetNum >0
    If TargetActor.IsEquipped(ListBottomItem.GetAt(SetNum ))
     Return SetNum
    EndIf
    SetNum -= 1
   EndWhile
  EndIf
  Return -1
EndFunction

Function EquipSet(Int SetNum, Bool TopEquipped, Bool BottomEquipped, Actor TargetActor)
  If !TopEquipped
   TargetActor.EquipItem(ListTopItem.GetAt(SetNum))
  EndIf
  If !BottomEquipped
   TargetActor.EquipItem(ListBottomItem.GetAt(SetNum))
  EndIf  
EndFunction

Этот скрипт висит на расовой способности. Одевает нижнее бельё если снять с НПС одежду. То есть этот маг эффект висит на всех моих НПС.
Иногда после раздевания НПС(тестил на мёртвых) и выхода из меню обмена мой ГГ начинает не переставая наносить силовые удары.
Их можно прекратить, если самому приказать нанести силовой удар.
Почему это случается не пойму.

AleksTirex  Offline  Сообщение №576 написано: 2 декабря 2013, 20:03 | Отредактировано: AleksTirex - 2 декабря 2013, 20:17


Архимаг


371
Kepper, сперва ошибки скрипта:

Int SetNum = ListTopItem.GetSize()
If TopEquipped
 While (SetNum >0)
SetNum -= 1
  If TargetActor.IsEquipped(ListTopItem.GetAt(SetNum ))
   Return SetNum
  EndIf
SetNum -= 1
EndWhile

В списках нумерация начинается с нуля "0", поэтому длина списка всегда больше на 1, чем последний номер списка.
В твоём варианте проверяется несуществующий номер списка, а вот первый нулевой предмет вообще не проверяется.
Поэтому SetNum -= 1 надо ставить перед командой GetAt().

Немного не понятно, зачем делать проверки "Если одето...", когда можно гораздо проще сделать - сразу одевать трусы при снятии юбки. Если я правильно понял, то надо вместо снятой шмотки с №кейвордом одеть другую шмотку? Тогда так:

Scriptname LB_NoNude extends activemagiceffect

Keyword Property KeywordTopItem Auto
Keyword Property KeywordBottomItem Auto
FormList Property ListTopItem Auto
FormList Property ListBottomItem Auto
Bool TopEquipped
Bool BottomEquipped

auto state DefaultState
Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer)
Actor TargetActor = Self.GetTargetActor()
 if akBaseItem as Armor
  if akBaseItem.HasKeyword(KeywordTopItem)
   TargetActor.EquipItem(ListTopItem.GetAt(Utility.RandomInt(0, ListTopItem.GetSize() - 1)) as armor, true)
   TopEquipped = true
  endif
  if akBaseItem.HasKeyword(KeywordBottomItem)
   TargetActor.EquipItem(ListBottomItem.GetAt(Utility.RandomInt(0, ListBottomItem.GetSize() - 1)) as armor, true)
   BottomEquipped = true
  endif
 endif
 if TopEquipped && BottomEquipped
  gotoState("DoneState")
 endif
EndEvent
EndState

state DoneState
;
endState

*****************

Но и... а не проще ли было сделать свой "одетый" скин для НПС, ведь они все твои и твоей расы, и скрипт тогда вообще не нужен.

*****************
*****************
Вместо события удаления лучше использовать событие снятия - OnObjectUnequipped(), это будет корректнее работать.

LordVadim  Offline  Сообщение №577 написано: 3 декабря 2013, 19:15 | Отредактировано: LordVadim - 3 декабря 2013, 19:23



139
Всем, привет!

Добавляю в Magic Effect источник света, но при касте почему то игнорируется Flicker Effect. Если просто разместить источник света через СК в мир, он мерцает, а при касте нет.
Я что то не правильно делаю или это особенность движка?

Insomniac  Offline  Сообщение №578 написано: 4 декабря 2013, 10:53 | Отредактировано: Insomniac - 4 декабря 2013, 10:54



70
Пытаюсь написать скрипт что бы при использовании определенного спела скрипт кастовал еще один (просто в один спелл не залазят разные маг эффекты) и он не работает  unsure

Код
Scriptname VampireDetectScript extends Actor

Spell property VampDetectLife auto   

Event OnActivate(ObjectReference akActionRef)
(!Game.GetPlayer().HasSpell(VampDetectLife))   
Game.GetPlayer().addSpell(VampDetectLife)   
Game.GetPlayer().CastSpell(VampDetectLife)   

EndEvent


Компилятор почему то ругается на "CastSpell"

И еще, обязательно ли в скрипте добавлять данный спелл игроку?

Код
Game.GetPlayer().addSpell(VampDetectLife)

Kepper  Offline  Сообщение №579 написано: 4 декабря 2013, 15:26



860


Я думал что событие OnObjectUnequipped() вызывается только для скриптов висящих на актёрах.
А у меня скрипт висит на магэффекте. Поэтому и не использовал.
Но оно сработало. Теперь мне не понятно какие события в каких скриптах вызываются.

AleksTirex  Offline  Сообщение №580 написано: 4 декабря 2013, 17:14


Архимаг


371
Цитата Insomniac

Компилятор почему то ругается на "CastSpell"



И не удивительно, такой команды нет. Есть команда Cast.
akSpell.Cast(akCaster, akTarget)
 
akCaster - кто кастует
akTarget - на кого кастуют (цель)
akSpell - заклинание

При этой команде добавлять заклинание не обязательно, оно добавится само автоматически.
 
(!Game.GetPlayer().HasSpell(VampDetectLife)) - это проверка наличия данного заклинания у игрока (если нужна проверка на "воздейстие заклинания на ГГ", то команда должна быть другой).
Все проверки делаются через If/elseIf/endIf
if !Game.GetPlayer().HasSpell(VampDetectLife)
  VampDetectLife.Cast(Game.GetPlayer(), Game.GetPlayer())
endif

LordVadim  Offline  Сообщение №581 написано: 4 декабря 2013, 18:03



139
AleksTirex, не сталкивался с таким вопросом: Если добавить в Magic Effect источник света, при касте почему то игнорируется Flicker Effect?

AleksTirex  Offline  Сообщение №582 написано: 4 декабря 2013, 21:09


Архимаг


371
Цитата LordVadim

AleksTirex, не сталкивался с таким вопросом: Если добавить в Magic Effect источник света, при касте почему то игнорируется Flicker Effect?



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

Myprism  Offline  Сообщение №583 написано: 5 декабря 2013, 04:27


Физик


Цитата AleksTirex

а как бы мерцают

Да, это и есть Flicker-эффект. Там даже настраивается амплитуда эффекта.

LordVadim  Offline  Сообщение №584 написано: 5 декабря 2013, 08:42 | Отредактировано: LordVadim - 5 декабря 2013, 08:42



139
Цитата Myprism

Да, это и есть Flicker-эффект. Там даже настраивается амплитуда эффекта.


В том то и дело, что все настраивается и на источниках света, установленных через СК, нормально работает. А вот в заклинаниях не работает. Тот же "Свет свечи" - не мерцает, мельтешит перед глазами летающий шарик, а сам свет светит ровно, без мерцания и никак не реагирует на параметры раздела Flicker Effect. Что бы это проверить достаточно подойти к стене и понаблюдать за светом.

Insomniac  Offline  Сообщение №585 написано: 5 декабря 2013, 10:00



70
AleksTirex, спасибо)

VALKNUT  Offline  Сообщение №586 написано: 5 декабря 2013, 10:19



Странное дело.. когда уже в тупике и не знаешь что предпринять... собираешься попросить помощи на форуме...
Садишься, открываешь форму ответа, начинаешь описывать проблему так, чтоб всем стало понятно о чем идет речь... ЧИК... и ответ на свой вопрос уже оказывается как на ладони...

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

Лирика блин... всем чОтким модостроителям - чОтких вопросов! :)

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
DarkVetal  Сообщение №587 написано: 5 декабря 2013, 18:42 | Отредактировано: DarkVetal - 5 декабря 2013, 18:42

AleksTirex, вот ты давал мне скрипт на появление\исчезание статики:
Scriptname AllActivator extends ObjectReference
Event OnActivate(ObjectReference akActionRef)
if GetLinkedRef().IsDisabled()
GetLinkedRef().Enable()
else
GetLinkedRef().Disable()
endif
endEvent

В связи с этим возникло несколько вопросов:
1. Не привязывается больше одного статика, а хотелось бы привязывать бесконечное количество - (на печке стоит казан (нерабочий), включаю газ, и вместе с ним, взамен нерабочего казана появляется рабочий, то есть с включением огня я могу готовить пищу, - то есть огонь и рабочий казан помечены галочкой InitiallyDisable, а нерабочий казан нет, при нажатии на кнопку все меняется наоборот)
2. Можно ли прикрутить к скрипту таймер автоматического отключения статики (нажимаю на слив унитаза, появляется модель воды, делает свое дело и секунды через 3-4 исчезает)
3. Можно ли вместо ручки сделать активацию по времени (кроме зажигания фонарей можно например сделать например блокировку ворот на ночь маркером коллизии, включение охранных систем, да и просто появление парочки дуболомов с мечами для охраны дома)
P.S.  Извиняюсь за наглость, но очень уж нужна твоя помощь, хотя бы по-первому вопросу. Очень большущее спасибо!

LordVadim  Offline  Сообщение №588 написано: 5 декабря 2013, 20:32 | Отредактировано: LordVadim - 5 декабря 2013, 20:42



139
Цитата DarkVetal

1. Не привязывается больше одного статика, а хотелось бы привязывать бесконечное количество - (на печке стоит казан (нерабочий), включаю газ, и вместе с ним, взамен нерабочего казана появляется рабочий, то есть с включением огня я могу готовить пищу, - то есть огонь и рабочий казан помечены галочкой InitiallyDisable, а нерабочий казан нет, при нажатии на кнопку все меняется наоборот)
2. Можно ли прикрутить к скрипту таймер автоматического отключения статики (нажимаю на слив унитаза, появляется модель воды, делает свое дело и секунды через 3-4 исчезает)
3. Можно ли вместо ручки сделать активацию по времени (кроме зажигания фонарей можно например сделать например блокировку ворот на ночь маркером коллизии, включение охранных систем, да и просто появление парочки дуболомов с мечами для охраны дома).


1. Привязывается. Алгоритм такой: связываешь по цепочке: Кнопка - Котел1 - Огонь - Кран - Котел2 - ... - Кнопка. Цепочку обязательно замкнуть. Далее в скрипте делаешь цикл:

Scriptname AllActivator extends ObjectReference

Event OnActivate(ObjectReference akActionRef)

    ObjectReference akTecItem = GetLinkedRef()

    While akTecItem != Self

        if akTecItem.IsDisabled()
            akTecItem.Enable()
        else
            akTecItem.Disable()
        endif

        akTecItem = akTecItem.GetLinkedRef()

    EndWhile

endEvent

2. Можно. Используй функцию RegisterForSingleUpdate( время ) - время задается в секундах. И через заданное время сработает событие:

Event OnUpdate()

    Выполняешь необходимые операции...

endEvent

3. Можно. Используй функцию RegisterForUpdate( время ) событие OnUpdate() будет срабатывать с заданным интервалом. Пока не вызовешь функцию: UnregisterForUpdate()

VALKNUT  Offline  Сообщение №589 написано: 5 декабря 2013, 21:14



AleksTirex, и я еще с вопросом :)

Делаю в своем моде квест без стадий, добавляю диалоги, в диалоге добавляю следующее(в других диалогах добавляю почти тож самое, только с другими индексами):

ActorBase Property NalBase Auto
FormList Property NalCombat Auto
FormList Property NalPerk Auto

NalBase.SetCombatStyle(NalCombat.GetAt(0) as CombatStyle)
akSpeaker.AddPerk(NalPerk.GetAt(0) as Perk)
akSpeaker.AddPerk(NalPerk.GetAt(1) as Perk)
akSpeaker.AddPerk(NalPerk.GetAt(2) as Perk)


Как ты уже наверняка понял, таким образом я хочу дать игроку возможность настроить стиль боя спутника(в конкретном случае, это Нал, девушка из моего мода). Я сделал(пока) 4 FormList, в первом три разных CombatStyle, в трех других перки, которые я хочу выдать НПС применительно к выбранному стилю боя.

И вроде бы все гладко и СК не ругается, но спутник вне зависимости от выбранного мной для него стиля, ведет бой так, как ему нравится. То есть, если я выбираю стиль "Магия", она у меня запросто может ломануться в бой с двуручником или отстреливать цель из лука. У самого НПС, в настройках актера, на вкладке "AI Data", в поле "Combat Style" установлен стиль такой же, как и нулевой индекс листа и по идее, если код не верный, то магия имеет приоритет перед остальными вариантами боя.. но упс и ах..  НПС сражается как ему хочется, а не как мне...

Да, я понимаю, что это SKSE и кагбэ не против его использовать... но как заставить ЭТО работать?
Заранее благодарю всех, кто откликнется на вопрос.

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
toozikoos  Offline  Сообщение №590 написано: 5 декабря 2013, 23:37



21
VALKNUT
мне кажется надо навыки изменить.

AleksTirex  Offline  Сообщение №591 написано: 6 декабря 2013, 01:10


Архимаг


371
Цитата VALKNUT

Да, я понимаю, что это SKSE и кагбэ не против его использовать... но как заставить ЭТО работать?


 
Кстати, стиль боя можно менять и без SKSE - пакетами. Даёшь своему алиасу три одинаковых пакета, но с разными условиями и у каждого пакета назначаешь свой стиль боя. А дальше уже понятно, что делать.

VALKNUT  Offline  Сообщение №592 написано: 6 декабря 2013, 03:51 | Отредактировано: VALKNUT - 6 декабря 2013, 11:01



Цитата AleksTirex

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

Одинаковые пакеты?
Не совсем понял... если пакеты будут одинаковые, откуда НПС узнает о другом стиле боя?

Может ты имел ввиду три одинаковых Альяса с разными пакетами?
Объясни пожалуйста, что-то не ухватил суть..

Еще вопрос... а можно как-то рекурсивно добавить весь FormList и так же рекурсивно его удалить?
А то разростается код сильно(отрывок):
akSpeaker.RemoveSpell(myRemoveSpell.GetAt(0) as Spell)
akSpeaker.RemoveSpell(myRemoveSpell.GetAt(1) as Spell)
akSpeaker.RemoveSpell(myRemoveSpell.GetAt(2) as Spell)
akSpeaker.RemoveSpell(myRemoveSpell.GetAt(3) as Spell)


akSpeaker.RemovePerk(myRemovePerk.GetAt(0) as Perk)
akSpeaker.RemovePerk(myRemovePerk.GetAt(1) as Perk)
akSpeaker.RemovePerk(myRemovePerk.GetAt(2) as Perk)
akSpeaker.RemovePerk(myRemovePerk.GetAt(3) as Perk)
akSpeaker.RemovePerk(myRemovePerk.GetAt(4) as Perk)

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Myprism  Offline  Сообщение №593 написано: 6 декабря 2013, 13:23


Физик


Подскажите скрипт, чтобы одним триггером запускать другой. Смысл вот в чём: Есть старый Беседкин мод на падение космического артефакта. Он срабатывает по сигналу триггера. На триггере висит скрипт, исходников на который нет. Этот триггер явно срабатывает на всё подряд, кроме игрока. В оригинале это не важно, а мне надо поставить условие срабатывания только на главного героя. Тот оригинальный триггер можно сделать маленьким и поставить в таком месте, где его никто не побеспокоит, а запускать его надо своим триггером, чувствительным только к главному герою.

VALKNUT  Offline  Сообщение №594 написано: 6 декабря 2013, 13:41



Цитата Myprism

Этот триггер явно срабатывает на всё подряд, кроме игрока.

Это условие прописано в скрипте, который "На триггере висит скрипт, исходников на который нет." Вот и получается замкнутый круг...

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Myprism  Offline  Сообщение №595 написано: 6 декабря 2013, 13:49


Физик


VALKNUT, как раз там НЕ ПРОПИСАНО условие срабатывание только на игрока, как нужно мне. Он срабатывает на всё, что движется. А точнее, запускается, как только игрок видит триггер. Мне же нужно наложить ограничение. Это можно сделать другим триггером, который будет запускать этот "чёрный ящик". Никакого замкнутого круга, только недостаточное знание скриптов.

VALKNUT  Offline  Сообщение №596 написано: 6 декабря 2013, 14:05



Цитата Myprism

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

Видит или входит в него?
Установи XMarker, его будешь включать своим триггером, а к нему привяжи тот, другой..
Триггер можно никуда не убирать и оставить как есть.
Что получится: если в ТВОЙ триггер заходит кто-то кроме ГГ(надо прописать в твоем триггере), то XMarker остается в выключенном состоянии и соответственно тот, нужный тебе триггер тоже останется выключенным.
Нужному триггеру нужно указать, что он загружается выключенным.
Собственно еще вопрос.. а тот артефакт падает при каждом входе в триггер или единожды?

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Myprism  Offline  Сообщение №597 написано: 6 декабря 2013, 14:15


Физик


Цитата VALKNUT

Видит или входит в него?

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

VALKNUT  Offline  Сообщение №598 написано: 6 декабря 2013, 14:46



Цитата Myprism

но может быть возможно и прямое включение одного триггера другим?


Нет, так не выйдет... т.к. ЧТО-ТО при помощи триггера должно изменить состояние с Disable() на Enable()...
Или же.. можешь попробовать выключить СВОЙ триггер через код самого триггера. Но тут уж я не подскажу, я привык использовать XMarker'ы...

Кто к нам с чем и за чем, тот от того и того... ʘ_ʘ
<a class="link" href="http://modgames.net/load/0-0-200451-0-17" rel="nofollow" target="_blank"> border="0" alt=""/</a>
nine-dragon-art  Offline  Сообщение №599 написано: 6 декабря 2013, 15:23



341
Я не знаю куда писать и поэтому решил написать сюда. Чем отличается SCSE от ScriptDragon ? Я так понял они расширяют возможности для моддеров. Мне интересно, конфликтуют ли они друг с другом, что делают и что лучше ?

border="0" alt=""/
DarkVetal  Сообщение №600 написано: 6 декабря 2013, 17:39 | Отредактировано: DarkVetal - 6 декабря 2013, 17:47

LordVadimAleksTirex, спасибо вам огромное за помощь, пойду разбираться.

Добавлено (06 Декабря 2013, 21:39)
---------------------------------------------
LordVadim,
3. Можно. Используй функцию RegisterForUpdate( время ) событие OnUpdate() будет срабатывать с заданным интервалом. Пока не вызовешь функцию:UnregisterForUpdate()
Куда ее прикрутить, ведь это функция действия на время, а не выключателем. К нужному предмету? Как должен выглядеть полный скрипт?
Две функции RegisterForUpdate(08.00) и OnUpdate(12) выдают ошибку. Я так понял первая включает предмет в заданное время, а вторая поддерживает указанное количество часов? Первая функция прописалась в скрипте без проблем, но не работает.

Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Поиск:





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