Форум » Записи участника [Dsion]

Результаты поиска
Dsion  Offline  Сообщение №391 | Тема: Вопросы по Creation Kit. Старая тема написано: 9 января 2015, 15:58



Можно создать новых NPC и добавить им пакет с указанием "лазить по локации". Или создать квест, в нем алиасы на существующих NPC, а на алиасы, опять же, пакет с указанием "лазить там-то" и какими-то условиями.

Dsion  Offline  Сообщение №392 | Тема: Вопросы по Creation Kit. Старая тема написано: 9 января 2015, 17:42



Да я умею...

Dsion  Offline  Сообщение №393 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2015, 12:51 | Отредактировано: Dsion - 10 января 2015, 12:54



Цитата Hecktor

sansuli, да я, собственно, разобрался. Написал такой скрипт:


Ммм... Ты серьезно ошибся... Смотри внимательно. Функция PlaceAtMe создает новый ObjectReference (новый объект в мире). Она НЕ телепортирует что-то к игроку. То есть, у тебя каждый раз создается новый объект и не удаляется. (Ну если ты не повесил на лабораторию удаляющий скрипт).

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


Код
ObjectReference Property ArcadiasWorkbench Auto

Event OnEquipped(Actor akActor)   
     If (!akActor.IsInCombat() && !akActor.IsOnMount())   
       ArcadiasWorkbench.Activate(akActor)   
     EndIf   
EndEvent

Dsion  Offline  Сообщение №394 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2015, 13:18



Может, тот мод работает не совсем так...

Наверное, он создает лабораторию командой PlaceAtMe только один первый раз. А потом уже перемещает к игроку. Но если создавать новую каждый раз, её надо же обязательно удалять (Disable, Delete).

Может, там что-то такого типа?

Код
Actor Property PlayerRef Auto
Furniture Property CraftingAlchemyWorkbench Auto
ObjectReference MyBench

Event OnInit()
     MyBench = PlayerRef.PlaceAtMe(CraftingAlchemyWorkbench)
EndEvent

Event OnEquipped(Actor akActor)
     MyBench.MoveTo(akActor)
     MyBench.Activate(akActor)
EndEvent

Dsion  Offline  Сообщение №395 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2015, 14:03



Ну сам смотри, удачи...
PlaceAtMe - это создание нового объекта в мире (нужно удалять).
MoveTo - это перемещение объекта. Но лабораторию нельзя будет перемещать, если она создана в CK. Нужно создавать через PlaceAtMe.

Лично у меня нету проблем и с активацией лаборатории из другой локации... Но у меня и SkyUI нету.

Dsion  Offline  Сообщение №396 | Тема: Вопросы по скриптам Papyrus написано: 10 января 2015, 15:29 | Отредактировано: Dsion - 10 января 2015, 15:33



Наверное, много вариантов...
Можно, например, попробовать вот так:

Код
Actor Property PlayerRef Auto
Bool Property Teleport Auto

Function ...
      ...
      Teleport = True
      RequestAutoSave()
      Utility.Wait(1.0)
      If (Teleport == True)
        PlayerRef.MoveTo(...)
      EndIf
      ...
EndFunction

---------------------------------------------------------
А это на игрока:
---------------------------------------------------------

ОсновнойСкрипт Property Основной Auto

Event OnPlayerLoadGame()
      Основной.Teleport = False
EndEvent

По идее, если игрок загрузит игру, флаг Teleport сбросится и телепортация не произойдет. Теоретически :)


Или попробовать использовать часы реального времени:

Код
Function ...
      ...
      Float Time1 = GetCurrentRealTime()
      RequestAutoSave()
      Float Time2 = GetCurrentRealTime()
      If (Math.Abs(Time2 - Time1) < 1.0)
          PlayerRef.MoveTo(...)
      EndIf
      ...
EndFunction

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


Если честно, я оба варианта не проверял :) Но суть в том, что нужно найти что-то, что не откатывается после загрузки сэйва.

Dsion  Offline  Сообщение №397 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 января 2015, 15:09




Dsion  Offline  Сообщение №398 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 января 2015, 15:58



Тебе нужно само дерево перков менять? Удалять или добавлять новые?
Или изменить существующий?

Dsion  Offline  Сообщение №399 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 января 2015, 19:42



coc whiterunbanneredmare

И ничего, да? Даже ничего не пишет?

Dsion  Offline  Сообщение №400 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 января 2015, 22:39



У меня дерево перков нормально открывается, без ошибок. Хотя я бы все-равно туда не лез...

Dsion  Offline  Сообщение №401 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 января 2015, 23:10



А еще интереснее было бы добавить игроку третью полоску "Энергия Чи", которая восстанавливалась бы во время медитаций и которую можно было бы использовать для временного повышения скорости безоружных атак :)

Dsion  Offline  Сообщение №402 | Тема: Вопросы по Creation Kit. Старая тема написано: 12 января 2015, 00:00



elenucia1981,  на триггере скрипт, наверное. А у скрипта два ивента: Event OnTriggerEnter(ObjectReference akActionRef) и Event OnTriggerLeave(ObjectReference akActionRef). Выполняюся когда что-то попадает в него (Enter) или вылезает ез него (Leave).

В Enter, наверное, функция, которая проверяет, NPC ли это, и раздевает, если не игрок.

А в Leave нужно добавить одевалку. Вот только её не так просто сделать. Функции, чтоб надеть на NPC его стандартную одежду, нету... (skse не считается).
Можно сохранять для каждого список снятой одежны. Но это криво...
В общем, лично я только один способ знаю. Если с NPC всё снять. Потом надеть на него какой-то предмет. А потом удалить у него этот предмет, то он надевает обратно всю стандартную одежду... Можно функцию написать. Я такую делал для одного мода.

Dsion  Offline  Сообщение №403 | Тема: Вопросы по скриптам Papyrus написано: 13 января 2015, 14:42



Цитата TheTrickster

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


После Stop(), конечно.

Dsion  Offline  Сообщение №404 | Тема: Вопросы по Creation Kit. Старая тема написано: 13 января 2015, 14:44



Цитата Ivan_Rozhkov

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


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

Dsion  Offline  Сообщение №405 | Тема: Вопросы по Creation Kit. Старая тема написано: 13 января 2015, 16:29



Да там описывать особо и ничего.
Вот тут всё:
http://www.uesp.net/wiki/Skyrim:Leveling

Необходимое XP для поднятия уровня ПЕРСОНАЖА: XP = (fXPLevelUpBase)+(Current_Char._Level * fXPLevelUpMult)
fXPLevelUpBase и fXPLevelUpMult можно изменить через Game Settings.
Это ко второму варианту.

А к первому.
XP необоходимое для поднятия уровня одного НАВЫКА: Skill Improve Mult * skill level1.95 + Skill Improve Offset
1.95 - это fSkillUseCurve. Если поставить, скажем, 2.2, то поначалу скилы будут качаться почти с той же скоростью, но чем дальше, тем медленее. И до 100 прокачать будет офигенно сложнее, чем с 1.95 (ванильным)

Ну и еще третий вариант: можно посмотреть, как работает камень-хранитель, который изменяет скорость прокачки навыков.

Добавлено (13 Января 2015, 19:29)
---------------------------------------------
Лично я для себя вообще отключил изменение уровня персонажа. Персонаж с самого начала и до конца остается 90 уровнем.
Только навыки качаются.
И монстры вокруг все максимальной силы с самого начала игры :)


Dsion  Offline  Сообщение №406 | Тема: Вопросы по скриптам Papyrus написано: 13 января 2015, 20:39



У ванильных тех, что я посмотрел, у всего Stop() в последней стадии.

Dsion  Offline  Сообщение №407 | Тема: Вопросы по скриптам Papyrus написано: 14 января 2015, 18:56



Лично у меня вообще никаких идей...
Чтоб не слетали всякие улучшения, нужно работать только со существующим референсом. То есть, никакого создания новых референсов.

Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer)

Вот этот ивент, по идее, должен выдавать не только базовый объект (Form), а и конкретный референс. Но нифига. Если игрок что-то берет, то akItemReference = None и ничего с ним не сделать. Возможно, это потому, что у предметов в инвентаре и нету собственного Id... Если они не квестовые или что-то такое.

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

Добавлено (14 Января 2015, 21:56)
---------------------------------------------
Варианты есть, конечно, но они кривые и абсолютно не юзаемые...


Dsion  Offline  Сообщение №408 | Тема: Вопросы по Creation Kit. Старая тема написано: 15 января 2015, 20:30



Цитата elenucia1981

А может кто-нить объяснить на пальцах вышенаписанное?


ЕЩЕ БОЛЕЕ "на пальцах", чем объяснил я?

Dsion  Offline  Сообщение №409 | Тема: Вопросы по Creation Kit. Старая тема написано: 15 января 2015, 21:19



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

Dsion  Offline  Сообщение №410 | Тема: Вопросы по Creation Kit. Старая тема написано: 21 января 2015, 15:16



А ты до сих пор не разобрался что-ли, как обустройство работает? День же уже прошел.
Есть, скажем, 3 маркера в состоянии Disabled: кухня, кладовая, столовая. К каждому маркеру прилинкованы другие объекты, чтоб включались (Enable) вместе с ним. А в диалоге скрипт который включает маркер.

Dsion  Offline  Сообщение №411 | Тема: Вопросы по скриптам Papyrus написано: 23 января 2015, 09:21 | Отредактировано: Dsion - 23 января 2015, 09:36



Если просто отслеживать загрузку игры, то на алиас игрока можно добавить Event OnPlayerLoadGame() и он будет срабатывать при загрузке игры.

Но, возможно, лучше отслеживать ивент OnLoad() на самом NPC. Потому что в момент загрузки модельки они часто надевают свой стандартный Outfit. Это от разных факторов зависит, которые я все так и не понял. А OnLoad() - это ивент загрузки модели конкретного объекта.

Можно, к примеру, снять всю одежду с кого-то на площади Вайтрана, надеть что-то другое. А потом просто перезайти в Вайтран и NPC снова окажется в стандартном Outfit.

Еще можно переодевать NPC командой SetOutfit(), но у этого способа столько недостатков, что аж описывать страшно.

Dsion  Offline  Сообщение №412 | Тема: Вопросы по скриптам Papyrus написано: 23 января 2015, 12:28



Цитата Myprism

Но в команде OnLoad() мне нужен актёр


Если переодевать через SetOutfit(), то не должно быть никаких проблем после загрузки игры... Тогда не знаю.
А если переодевать вручную, то, наверное, нужны Алиасы, в которых будут все владельцы колец. Но тогда количество колец будет ограничено.

Dsion  Offline  Сообщение №413 | Тема: Вопросы по скриптам Papyrus написано: 24 января 2015, 09:47 | Отредактировано: Dsion - 24 января 2015, 09:45



Попробуй добавить к этому же скрипту такое:


Код
Event OnEffectFinish(Actor akTarget, Actor akCaster)
     akTarget.AllowPCDialogue(false)
EndEvent

OnEffectStart срабатывает, когда эффект на кого-то накладывается и устанавливает для NPC
AllowPCDialogue - Да

А OnEffectFinish срабатывает, когда эффект заканчивает действие и устанавливает
AllowPCDialogue - Нет

Добавлено (24 Января 2015, 12:47)
---------------------------------------------
If (akTarget)
EndIf

Там не нужно, я думаю. Если эффект наложился, то только на какого-то Actor. Значит, в akTarget всегда кто-то есть.


Dsion  Offline  Сообщение №414 | Тема: Вопросы по скриптам Papyrus написано: 24 января 2015, 11:23 | Отредактировано: Dsion - 24 января 2015, 11:23



Цитата Holtof55

Когда должен сработать финишь эффекта?


Это уж тебе точно виднее :)
Если это заклинание (Spell), то будет висеть столько, сколько длительность действия заклинания. Если зачарование, то эффект пропадет, когда предмет снимется итп.

Можно, конечно:

Код
Event OnEffectStart(Actor akTarget, Actor akCaster)   
     akTarget.AllowPCDialogue(true)
     Utility.Wait(60)
     akTarget.AllowPCDialogue(false)
EndEvent

Но это не круто...

Dsion  Offline  Сообщение №415 | Тема: Вопросы по Creation Kit. Старая тема написано: 24 января 2015, 13:41



Не пробовал добавить Combat Override пакет и прописать там тоже висение?

Dsion  Offline  Сообщение №416 | Тема: Вопросы по Creation Kit. Старая тема написано: 24 января 2015, 13:52



Не.. Там NPC можно добавлять обычные пакеты. Но если он вступает в бой, обычные пакеты прерываются и включаются (если есть) Combat Override пакеты. Я бы попробовал добавить Combat Override пакет.
Хотя это я так... Не проверял...

Dsion  Offline  Сообщение №417 | Тема: Вопросы по Creation Kit. Старая тема написано: 26 января 2015, 21:59



Цитата teron_b2

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


Я почти уверен, что он еще и кривой...
Может, попробуй оптимизировать?

Dsion  Offline  Сообщение №418 | Тема: Вопросы по скриптам Papyrus написано: 27 января 2015, 13:15



Сам скрипт должен обновляться. Ивенты и функции должны срабатывать уже новые. Но вот OnInit(), если изменен, заново уже не вызовется. А с чего бы ему вызываться? И значение уже заполненных Property не изменится.
Можно было с самого-самого начала проектировать мод с учетом возможности обновления...

Dsion  Offline  Сообщение №419 | Тема: Вопросы по Creation Kit. Старая тема написано: 27 января 2015, 13:21



Зато можно поменять дверь, ведущую в ванильную локацию...

Dsion  Offline  Сообщение №420 | Тема: Вопросы по скриптам Papyrus написано: 27 января 2015, 13:43



Я когда-то таки придумал систему, позволяющую (теоретически) избежать проблем при обновлении. Но тогда уже особо не делал моды и так её и не проверил.
Там смысл в полном отсутствии OnInit() где-либо и отсутствии Property в том виде, в котором мы к ним привыкли.

Форум » Записи участника [Dsion]
Поиск:





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