• Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум » Записи участника [LordVadim]

Результаты поиска
LordVadim  Offline  Сообщение №91 | Тема: Вопросы по скриптам Papyrus написано: 24 марта 2014, 19:37



139
Цитата Alliria

Однако эффекта не вижу. Похоже, спеллы просто не назначаются.


1) Ошибки возникают из за того, что функция FindRandomActorFromRef возвращает None (никого не найдено), а скрипт пытается добавить Spell.
2) На ком это должно срабатывать? В таком виде скрипт даже кроликам будет пытаться добавлять Spell. Можно сделать проверку GetRace() и FormList HeadPartsAllRacesMinusBeast.
3) Код скрипта не эффективен. Если хотите могу подправить, но напишите подробно условия срабатывания.

LordVadim  Offline  Сообщение №92 | Тема: Вопросы по скриптам Papyrus написано: 25 марта 2014, 17:35 | Отредактировано: LordVadim - 25 марта 2014, 18:21



139
Цитата Alliria

LordVadim, так проблема в том, почему возвращается none или temp13 в ячейках, заполненных актерами.


Не стал разбираться почему не срабатывает скрипт. Приведу свой вариант:

В скрипт не включил проверки на ком срабатывать, я так понял, что они прописаны в условиях спеллов. Кстати, если спеллы не срабатывают - проверь правильность написания этих условий.

LordVadim  Offline  Сообщение №93 | Тема: Вопросы по скриптам Papyrus написано: 25 марта 2014, 19:27 | Отредактировано: LordVadim - 25 марта 2014, 20:06



139
Цитата DarkVetal

Уважаемые скриптеры, срочно нужна ваша помощь! Проблема вот в чём: у меня деревья не ЛОДятся. Я хочу вручную расставить ЛОД-модели деревьев внутри обычных, отметить галочкой IsFullLod. Нужен скрипт, который делает так, чтобы на близких расстояниях этих  ЛОД-деревьев не было видно, а на расстоянии появления лодов они включались. Если возможно, учитываться должен параметр UGridsToLoad (подгружаемые ячейки), так как некоторые игроки могут изменить этот параметр, и лоды деревьев могут перемежаться с обычными деревьями. Варианты типа пересоздай ЛОДы не прокатят. Я уже сделал всё что мог с лодами, остался только этот параметр. Большое спасибо всем, кто откликнеться.


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

ScriptName LodTreeOnOffSCRIPT extends ObjectReference ;- Скрипт на статическом объекте

Event OnInit()
    RegisterForUpdate(5)
 ;- Включаем процедуру обновления 1 раз в 5 секунд
EndEvent

Event OnUpdate()
 ;- Процедура обновления
    if GetLinkedRef().GetDistance(Game.GetPlayer()) > 30000 ;- Если расстояние до ГГ > 30000 (значение подобрать опытным путём)
        GetLinkedRef().Enable() ;- Показываем дерево
    else
        GetLinkedRef().Disable()
 ;- Скрываем дерево
    EndIf
EndEvent


Скрипт на любой статический объект рядом с деревом. Дерево привязать к объекту через LinkedRef в СК.
Если надо скрывать/отображать несколько стоящих рядом деревьев, то остальные привязываются к главному дереву, через Enable Parent в СК.

LordVadim  Offline  Сообщение №94 | Тема: Вопросы по скриптам Papyrus написано: 25 марта 2014, 20:06



139
Цитата DarkVetal

LordVadim, при компиляции выдает такую ошибку: required (...)+ loop did not match anything at input ') Случайно не знаеш,  в чём может быть проблема?


Моя ошибка - лишняя скобка после 30000.

LordVadim  Offline  Сообщение №95 | Тема: Вопросы по скриптам Papyrus написано: 26 марта 2014, 06:31



139
Цитата Temka_T_34

Какой нужет скрипт чтобы изменять внешность????? Бесплатно в доме


Открываешь консоль, пишешь showracemenu и меняешь внешность как тебе захочется.  :D

LordVadim  Offline  Сообщение №96 | Тема: Вопросы по скриптам Papyrus написано: 26 марта 2014, 11:51



139
Цитата Alliria

Может еще что-то надо дописать?


Сейчас времени нет. Вечером себе в СК скрипт запихну и посмотрю в чем проблема...

LordVadim  Offline  Сообщение №97 | Тема: Вопросы по скриптам Papyrus написано: 27 марта 2014, 12:28 | Отредактировано: LordVadim - 27 марта 2014, 12:39



139
Цитата Alliria

LordVadim, ну мне не к спеху.


Пришлось кое что переделать, но у меня заработало. Подробности под спойлером:



LordVadim  Offline  Сообщение №98 | Тема: Вопросы по скриптам Papyrus написано: 27 марта 2014, 16:20



139
Цитата MemoriaVetusta

Нужно оптимизировать скрипт, убрав событие "EVENT OnEffectStart":

А что конкретно вы хотите от скрипта? Опишите подробнее какой результат должен быть и на ком это будет работать.

LordVadim  Offline  Сообщение №99 | Тема: Вопросы по скриптам Papyrus написано: 27 марта 2014, 17:09 | Отредактировано: LordVadim - 27 марта 2014, 17:13



139
Цитата MemoriaVetusta

LordVadim,  EVENT onDying - основное событие. При смерти актера, к которому будет применен магический эффект (Constant Self) с этим скриптом, происходит взрыв в точке местонахождения актера. Скрипт УЖЕ работает, но остался огрызок EVENT OnEffectStart от первоначального скрипта (этот скрипт используется в Ability огненного атронаха для создания огненного шлейфа и взрыва при гибели). Вот этот огрызок и надо удалить, чтобы скрипт оставался работоспособным. Также надо изменить условия активации события EVENT onDying, поскольку в текущий момент, если актер убит добивающим ударом ближнего боя (киллмуви), то событие гарантированно не срабатывает (взрыва не происходит). Может, надо убрать проверку по величине здоровья? Если просто удалить EVENT OnEffectStart, то скрипт не компилируется (или не работает, не помню сейчас), похоже, ему нужно вот это: selfRef = caster. Как-то так.


Событие OnEffectStart удалить не получится, так как именно в нем определяется к кому будет применен эффект, то есть задается значение переменной selfRef.
Что бы скрипт срабатывал всегда можно событие onDying() заменить на OnDeath()
Тогда скрипт будет выглядеть так:

Scriptname _MVADeathSCRIPT extends ActiveMagicEffect

import utility
import form

Actor selfRef


EffectShader Property FireFXShader Auto
explosion property _MVADeathEXPL auto


int Health

float property Delay1 = 0.5 auto
float property Delay2 = 0.5 auto
float property Delay3 = 0.5 auto

EVENT OnEffectStart(Actor Target, Actor Caster)
    selfRef = caster
ENDEVENT

EVENT OnDeath(Actor akKiller)
    wait(Delay1)
    FireFXShader.Play(selfRef)
    wait(Delay2)
    selfRef.placeAtMe(_MVADeathEXPL)
    wait(Delay3)
    FireFXShader.Stop(selfRef)

ENDEVENT

LordVadim  Offline  Сообщение №100 | Тема: Вопросы по скриптам Papyrus написано: 27 марта 2014, 17:25



139
Цитата MemoriaVetusta

Интернет, блин, медленный (у меня).


Это у меня сегодня что то спойлеры глючат. Хотел скрипт под спойлер убрать, а не получилось.

LordVadim  Offline  Сообщение №101 | Тема: Вопросы по скриптам Papyrus написано: 28 марта 2014, 06:51 | Отредактировано: LordVadim - 28 марта 2014, 06:59



139
Цитата Alliria

LordVadim, да, теперь работает! Тестовую абилку сделала идентичную твоей (огненный плащ), радиус увеличила до 15000. Если при первой загрузке игры скрипт быстро раздает всем актерам в локации абилку, то после перехода в новую локацию довольно часто бывает ситуация, когда некоторым ближайшим к игроку актерам абилка дается в последнюю очередь. Примерно, 1-2 из 5 актеров в радиусе примерно 500 юнитов получают абилку с большой задержкой, уже когда и самые дальние актеры загорелись. Соответственно, вопрос. Можно ли в в одном цикле сделать несколько этапов проверки FindRandomActorFromRef? Например, 4 этапа: до 500, потом до 2500, потом до 7500, потом до 15000, или для этого лучше сделать 4 цикла и соответственно 4 форм. листа, или вообще каждый цикл в отдельном скрипте?


Новый вариант под спойлером, но все равно могут оставаться пропущенные персонажи, FindRandomActorFromRef - рандомная функция, может одного и того же найти 10 раз, а другой не попадется ни разу.
Самое поганое, что FindRandomActorFromRef и ГГ находит постоянно, причем чаще чем всех остальных вместе взятых.  :D В связи с этим я убрал else из проверки.


LordVadim  Offline  Сообщение №102 | Тема: Вопросы по скриптам Papyrus написано: 30 марта 2014, 10:20



139
Цитата Alliria

LordVadim, все хорошо работает. Пропущенных персонажей немного, саммоны тоже оперативно подхватываются. Огромнейшее спасибо за скрипт!


Alliria, а при выходе из локации и обратном входе в нее нормально работает?

LordVadim  Offline  Сообщение №103 | Тема: Вопросы по скриптам Papyrus написано: 30 марта 2014, 19:28



139
Цитата nepewka

Всем привет, у меня 2 вопроса по скрипту, отвечающему за расовую способность Орков - берсерк.


Не силен в заклинаниях и талантах, но в приведенном скрипте нет ничего кроме визуализации. Так что назначение эффектов и способностей происходит где то в другом месте.

LordVadim  Offline  Сообщение №104 | Тема: Вопросы по скриптам Papyrus написано: 31 марта 2014, 05:49



139
Цитата Alliria

Вылетова стало меньше, но все равно часто вылетает. Причем, общи принцип такой: где-то полчаса - час работает стабильно. Потом появляются одиночные вылеты. А потом начинает вылетать примерно раз в 5-10 минут.

Alliria, Это похоже на засорение памяти скайрима. При больших количествах визуальных эффектов может происходить.
В этом случае скрипт не причем, вернее как ты его не переделывай все равно будет вылетать.
У меня была такая же история когда я делал "Звёзды небесного края".
Помогла установка SSME + SMC. Скайрим стал грузиться чуть дольше, но вылеты практически исчезли.

LordVadim  Offline  Сообщение №105 | Тема: Вопросы по скриптам Papyrus написано: 1 апреля 2014, 08:15



139
Цитата nepewka

Подскажите как правильно использовать функцию GetRandomPercent? хочу сделать, чтобы при срабатывании рандома, допустим в 20% цели наносился дополнительный урон надо как то использовать if и GetRandomPercent, но как правильно?


if Utility.RandomInt(0, 99) <= 19
    ;- Ваши действия
endif

LordVadim  Offline  Сообщение №106 | Тема: Вопросы по скриптам Papyrus написано: 1 апреля 2014, 08:23



139
Цитата nepewka

Не подскажешь эвенты связанные с анимацией каста?

Извини, в этом не силён.

LordVadim  Offline  Сообщение №107 | Тема: Вопросы по скриптам Papyrus написано: 1 апреля 2014, 09:46



139
Цитата nepewka

LordVadim, можешь скачать один скрипт .pex декомпилировать и выложить мне назад? если не трудно

Лови: cccMagicRainScript10.psc

LordVadim  Offline  Сообщение №108 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 04:32



139
Цитата nepewka

Хочу решить добавлением в эвент команды, которая бы после 2 секунд времени работы эвента, неизбежно закрывала его. Что нужно написать?


Покажи скрипт.

LordVadim  Offline  Сообщение №109 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 05:46



139
Цитата Aksyonov

Господа и дамы есть такой вопрос, может это делается и не при помощи скриптов но как сделать так что бы напарник компаньон лечил вас когда запас вашего здоровья падает до определенной отметки? буду счастлив любому пояснению а если это сделать можно только при помощи скрипта - добрые скриптеры напишите пожалуйста этот сценарий для меня.

 
Именно через скрипт. Свойству HealOther в СК не забыть присвоить значение.

Scriptname CompanionHealthSCRIPT extends Actor ;- Скрипт на компаньоне

Spell Property HealOther Auto ;- Лечение

Event OnInit()
    RegisterForUpdate(3)
 ;- Включаем процедуру обновления 1 раз в 3 секунды
EndEvent

Event OnUpdate()
 ;- Процедура обновления
    if Game.GetPlayer().GetAV("Health") < 50 ;- Если здоровье ГГ < 50
        HealOther.Cast(Self, Game.GetPlayer()) ;- Лечим
    EndIf
EndEvent

LordVadim  Offline  Сообщение №110 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 07:11 | Отредактировано: LordVadim - 2 апреля 2014, 07:14



139
Цитата nepewka

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


Попробуй такой вариант:

Scriptname newscript extends activemagiceffect

Spell property Fireball auto
Int ivCounter = 0

Event OnEffectStart(Actor akTarget, Actor akCaster)
    Fireball.cast(selfRef)
    ivCounter += 1

    if ivCounter > 2 ;- Скрипт сработает 3 раза потом выключится и перезагрузится
        ivCounter = 0
        GoToState("DoNotWork") ;- Переводим скрипт в состояние ничего не делать
        Utility.Wait(2) ;- Задержка 2 сек.
        GoToState("") ;- Возвращаем скрипт в нормальное состояние
    EndIf
EndEvent

State DoNotWork
 ;- Скрипт в состоянии: "Ничего не делать"
    Event OnEffectStart(Actor akTarget, Actor akCaster)
    EndEvent
EndState

LordVadim  Offline  Сообщение №111 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 09:54



139
Цитата nepewka

LordVadim, вообще проверил ещё раз оба скрипта.. К сожалению, никакого эффекта от них замечено небыло. Даже не знаю, вот просто никакого...


Значит причина, скорей всего, в этом: Fireball.cast(selfRef)
Замени на :  Fireball.Cast(akCaster, akTarget)

LordVadim  Offline  Сообщение №112 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 10:19 | Отредактировано: LordVadim - 2 апреля 2014, 10:22



139
Цитата nepewka

Fireball.cast в скобочках надо указывать от кого идет каст, в нашем случае akCaster мб у меня с игрой что не так? в CK вики пишут что скрипты со спеллами  экстендить через Form, я же через  activemagiceffect делаю extend. Как сильно это может повлиять?


У Cast() в скобках два параметра: первый - источник заклинания (кто это заклинание произносит), второй - цель (на кого это заклинание направлено).
Какой скрипт дополнять activemagiceffect или Form зависит от того, куда ты вешаешь скрипт (на актера, на предмет или на заклинание).
Список функций Papyrus

LordVadim  Offline  Сообщение №113 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 13:41



139
Цитата nepewka

Кажется просек в чем проблема с работой скриптов с 1 раза. Лоад ордер в лаунчере. Щас опять у меня спелл не работал раз 5-6, изменил новый мод, поставив его на 1 строчку - заработало. Все моды же всегда на последнем слоте появляются после создания



Последняя строка в лаунчере - это так сказать наивысший приоритет. Потому, что моды в последней строке перекрывают (при совпадении) данные предыдущих модов.
В твоем случае перемещение на 1 сточку, по идее, никак не должно было влиять на работу скрипта.

LordVadim  Offline  Сообщение №114 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 20:30



139
Цитата AleksTirex

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



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

LordVadim  Offline  Сообщение №115 | Тема: Вопросы по скриптам Papyrus написано: 2 апреля 2014, 21:05



139
Цитата nepewka

Вопрос куда добавляем сей скрипт, чтобы игра его приняла? Добавление в magiceffect результата не принесло. И от чего тут надо расширяться?


Можно повесить на алиас игрока, тогда расширять надо ReferenceAlias

LordVadim  Offline  Сообщение №116 | Тема: Вопросы по скриптам Papyrus написано: 3 апреля 2014, 08:47



139
Цитата VALKNUT

Что-то у меня это не сработало... Буду признателен, если объяснишь, что еще необходимо выполнить. Заранее благодарю!



Проверю у себя в СК, потом отпишусь.

LordVadim  Offline  Сообщение №117 | Тема: Вопросы по скриптам Papyrus написано: 3 апреля 2014, 15:11 | Отредактировано: LordVadim - 3 апреля 2014, 15:55



139
Цитата VALKNUT

Что-то у меня это не сработало... Буду признателен, если объяснишь, что еще необходимо выполнить. Заранее благодарю!


Проверил скрипт, у меня работает. Но лучше отслеживать не числовое, а процентное состояние здоровья:

Scriptname aaTestCastSCRIPT extends Actor ;- Скрипт на компаньоне

Spell Property HealOther Auto ;- Лечение

Event OnInit()
    While !IsDead()
        if Game.GetPlayer().GetAVPercentage("Health") < 0.5
 ;- Если здоровье ГГ < 50%
            While Game.GetPlayer().GetAVPercentage("Health") < 1
                HealOther.Cast(Self, Game.GetPlayer())
 ;- Лечим
                Utility.Wait(0.5)
            EndWhile
        EndIf
        Utility.Wait(3)
 ;- Задержка перед очередной проверкой
    EndWhile
EndEvent

LordVadim  Offline  Сообщение №118 | Тема: Вопросы по скриптам Papyrus написано: 3 апреля 2014, 15:40



139
Цитата AleksTirex

Циклы и постоянное обновление вместе делать нельзя. В данном случае это не критично, но всё же не стоит (народ привыкнет так делать и... результат предсказуем )

А так всегда на собственные грабли...  :D
Сейчас подправлю.

LordVadim  Offline  Сообщение №119 | Тема: Вопросы по скриптам Papyrus написано: 3 апреля 2014, 17:04



139
AleksTirex, ты случайно не знаешь как просмотреть созданный загрузочный экран (LoadScreen) ?

LordVadim  Offline  Сообщение №120 | Тема: Вопросы по скриптам Papyrus написано: 3 апреля 2014, 21:06 | Отредактировано: LordVadim - 3 апреля 2014, 21:07



139
Цитата сергей007788

Подскажите, повесил на дракона камеру и послал далеко. ГГ остался на месте, в итоге локация не подгружается и с дракона видно только лоды. Есть ли команда которая подгружала бы локацию там где находится камера а не гг?


Попробуй так:

На месте ГГ создаешь Xmarker, чтобы потом его вернуть обратно.
ГГ делаешь невидимым: Game.GetPlayer().SetAlpha(0)
Отключаешь коллизию: Debug.ToggleCollisions()
Цепляешь камеру, отправляешь дракона
Регистрируешь OnUpdate()
И периодически отправляешь ГГ к Дракону:  Game.GetPlayer().TranslateToRef(akDragon, 100000)
...
Потом возвращаешь все обратно:
Отключаешь OnUpdate(), возвращаешь ГГ к Xmarker, включаешь коллизию и видимость игрока.

Форум » Записи участника [LordVadim]
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:





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