Где-то в туториалах читал о сриптовой анимации, если кто знает как это делать подскажите, плз.
Нужен скрипт
Сообщений 1 страница 30 из 39
Поделиться22008-10-20 09:47:10
Где-то в туториалах читал о сриптовой анимации, если кто знает как это делать подскажите, плз
Насколько я понимаю имелось ввиду управление анимацией с помощью скриптов. Если ты думал, что есть какая-то особая скриптовая анимация - то такой нету.
Поделиться32008-10-20 13:35:26
Я уже нашёл - ротация объекта (вокруг оси x, y, z) Хочу сделать мост, который крутится и через который можно пройти к 2-ум порталам. Но столкнулся с проблемой: пропадает коллизия, то-есть в центре моста герой соит нормально, а если отойти то мост проходит свозь героя. Получается что герой "привязан" к миру, а надо "привязать" к мосту. Всё это происходит в interiors.
Поделиться42008-10-20 20:48:35
Я уже нашёл - ротация объекта (вокруг оси x, y, z) Хочу сделать мост, который крутится и через который можно пройти к 2-ум порталам
Хм... ну это будет не совсем анимация...
Но столкнулся с проблемой: пропадает коллизия, то-есть в центре моста герой соит нормально, а если отойти то мост проходит свозь героя
С этого момента желательно поподробнеее. И если можно, то пример уже написаного скрипта.
Поделиться52008-10-20 23:57:54
С этого момента желательно поподробнеее. И если можно, то пример уже написаного скрипта.
Вот скрипт: scn aaaRotateSCN
Begin GameMode
Rotate Z 20;поворот на 20% в секунду
End
Вешается на мост, мост перевёл в подраздел Активаторы. То-есть мост уже не Статик, крутится, как юла Коллизия, что интересно, существует вдоль моста так, как он прописан в редакторе. То-есть во время ротации поворачивается не мост, а его изображение! Во, как интересно!
Но в таком случае моя идея,к сожалению не осуществима Хотя... можно,ведь заставить портал крутиться вокруг моста, для этого нужно сместить центр xyz портала на растояние равное 1/2 длинны моста, а я этого пока делать не умею... Может подскажешь, как?
Есть!!! Получилось! Хотя идея, может и не нова, тем неменее её можно использовать.
Тему, я думаю можно закрыть, тем более что желающих ответить было, мягко говоря, не много.
Отредактировано geoan (2008-10-21 19:15:33)
Поделиться62009-06-19 14:55:01
У меня вопрос по скриптам:
1. Как сделать, что бы в контейнер каждый месяц ложился определённый придмет и мне об этом приходило сообщение в верхний левый угол экрана.
2. Как сделать контейнер в который если положить определённую комбинацию предметов, то в следующем открывании контейнера появлялся один, но совершенно другой предмет и так можно было бы делать неограниченное количество раз.
Поделиться72009-06-19 15:57:42
1. возможно нужно использовать глобальную переменную float GameMonth. Для вывода сообщения используется функция Message
Поделиться82009-06-19 16:37:22
Я в скриптах полный 0. Можиш их ниписать?
Поделиться92009-06-19 16:51:26
Я в скриптах полный 0
Тогда советую для начала ознакомится с вот этим учебником:
OSFM v1.2.0 Том 1. Базовый курс скриптинга TES 4 Oblivion
http://modder.ucoz.ru/load/3-1-0-68
Поделиться112010-08-07 18:37:14
Народ! Как сделать ? Нажимаешь на кнопку и появляется существо, которое нападает на игрока, и чтобы так можно много раз (тренировка)?
Или через диалоги ( как в офф плаге Крепость воина)?
Подскажите. Буду благодарен!
Поделиться122010-08-07 19:01:59
IDПредмета.PlaceAtMe IDСущества x, y, z ; Создается копия существа в игровом мире и перемещается к определенному предмету на определенное расстояние по координатам x, y, z
Например,
scn SummonCreature Begin OnActivate player.PlaceAtMe CreatureID 150, 0, 0 End
Хотя хочу предупредить, что функция PlaceAtMe может быть очень глючная. Поэтому лучше создать маркер где-то неподалеку и уже к этому маркеру зазывать существо, например
scn SummonCreature Begin OnActivate MarkerID.PlaceAtMe CreatureID 0, 0, 0 End
То есть, существо (CreatureID) будет создано и телепортировано к маркеру (MarkerID).
Отредактировано Evil (2010-08-07 20:13:41)
Поделиться132010-08-07 20:07:25
Благодарю, будем пробовать.
Нажимаю на кнопку, но ничего не появляется. Обьясните, что не так
Вот скрипт:
ScriptName AAAZamImpTrener short busy ref target ref mySelf Begin OnActivate AAATrenerRef.PlaceAtMe AAAOKLSleletHeroTrener 0, 0, 0 endif if busy == 0 set target to getParentRef set mySelf to getSelf target.activate mySelf 1 playgroup forward 0 set busy to 1 endif If Player.GetInCell SkingradCastleDungeon == 1 AnvilPrisonDoorRef.Lock BravilPrisonDoorRef.Lock BrumaPrisonDoorRef.Lock CheydinhalPrisonDoorRef.Lock ChorrolPrisonDoorRef.Lock ICPrisonDoorRef.Lock LeyawiinPrisonDoorRef.Lock SkingradPrisonDoorRef.Lock EndIf end begin gameMode if isAnimPlaying == 0 && busy == 1 set busy to 0 endif End
Отредактировано Дартаньян (2010-08-07 21:13:17)
Поделиться142010-08-07 21:26:05
Код:Begin OnActivate AAATrenerRef.PlaceAtMe AAAOKLSleletHeroTrener 0, 0, 0 endif
Зачем endif, если нет if? Может из-за этого? Или там все же есть какая-то проверка, а на форум в скрипте Вы её забыли добавить? Наверно именно эта проверка (если есть) неправильная и из-за этого не работает.
Так.
AAATrenerRef.PlaceAtMe AAAOKLSleletHeroTrener 0, 0, 0
Советую на маркер, а не на что-то другое. 0, 0, 0 означает, что скелет появится прямо в кординатах объекта, к которому мы перемещаем скелет. Могу посоветовать прописать координаты не 0, 0, 0, а, например, 1, 256, 0. Это значит, что скелет появится на расстоянии 256 игровых едениц от объекта по оси y. (ну и на расстоянии 1 игровой еденицы по координате x. Ну это так, на всякий случай)
Хочу еще раз подчеркнуть, что команда вредная и глючная.
Подведем итоги: Либо там идет неправильная проверка, либо не к тому объекту перемещаете скелета. Лучше к маркеру. Ну и последнее, попробовать поставить координаты не 0, 0, 0, а 1, 256, 0
Если ни один из выше перечисленных методов не поможет, тогда отпишитесь, подумаю над другим
Отредактировано Evil (2010-08-07 22:16:32)
Поделиться152010-08-07 22:34:06
Все получилось, разве что скелетов полный зал появляется. А так ничего. Благодарю!
Поделиться162010-08-07 22:46:17
разве что скелетов полный зал появляется.
Да ладно? Такое возможно разве что в блоке GameMode. Поправьте если не прав, но ведь если использовать OnActivate, то скрипт будет выполнен только в одном фрейме, следовательно, появится только одно существо?
Но так как команда глючная, можно тогда использовать MessageBox в скрипте. А на кнопочку "Призвать скелета" (или кого там еще) положить строку MarkerID.PlaceAtMe AAAOKLSleletHeroTrener 1, 256, 0
Отредактировано Evil (2010-08-07 22:58:04)
Поделиться172010-08-07 23:56:58
Дартаньян
Можно еще почитать вот эту статью
How to make a Static Object Summon Creatures
http://cs.elderscrolls.com/constwiki/in … _Creatures
на английском правда. Я ее когда-то начинал переводить, да так и лежит недопереведенная
Поделиться182010-08-08 10:09:59
спасибо. Может я и смогу сколько-то перевести.
Поделиться192010-08-21 17:06:51
помогите сделать скрипт, чтобы двери сами закрывались.
Например: открываю дверь, от которой у меня есть ключ и она закрыта на него. Через 5 секунд после открытия она закрылась снова на ключ (обязательно на ключ!).
Поделиться202010-08-21 17:29:29
scn ScriptName float timer short doOnce short activated Begin OnActivate if (doOnce == 0 && activated == 0) set activated to 1 activate elseif (doOnce == 1) activate endif End Begin GameMode if (activated == 1 && doOnce == 0) set timer to timer + getsecondspassed set activated to 2 endif if (timer == 5 && doOnce == 0) lock 100 set timer to 0 set doOnce to 1 endif End
Придется создавать новую дверь и повесить на нее скрипт. Ну и конечно же потом разместить в локации.
По идее должно работать, но не ручаюсь... Я написал скрипт, чтобы он закрывал дверь только один раз. Если нужно, чтобы постоянно, то напиши, я его переделаю чуток.
Отредактировано Evil (2010-08-21 21:14:24)
Поделиться212010-08-21 18:02:18
scn ScriptName
short timer
short doOnceBegin OnActivate
if (doOnce == 0 && timer < 1)
set timer to timer + getsecondspassed
activate
else
activate
EndBegin GameMode
if (timer == 5 && doOnce == 0)
lock 100
set timer to 0
set doOnce to 1
End
Ни из идейных побуждений, ни за деньги работать не будет. Блок begin onactivate срабатывает только одни раз, при активации. Дальше нуля секунд + время одного фрейма счетчик считать не будет. Переменная timer - должна быть float. Команда lock - устанавливает замок (т.е. делает закрытым на ключ). На то, в каком состоянии находится в данный момент дверь - открыта или закрыта, она никак не влияет. Т.е. если дверь открыта, то она так открытой и останется.
Поделиться222010-08-21 18:07:13
Так.. Скрипт исправил, а вот насчет lock - знаю. Но ведь неизвестно, на какую дверь надо положить скрипт. На дверь, которая телепортирует, или которая открывается. В случае с телепортом использование функции lock очень даже уместно.
Поделиться232010-08-21 18:41:53
В случае с телепортом использование функции lock очень даже уместно
Функция lock была заложена в условиях задачи - дверь должна захлопнутся, и ЗАКРЫТЬСЯ НА ЗАМОК. Просто этого для решения задачи недостаточно - нужно еще:
1. проверить открыта ли дверь или закрыта.
2. проверить расстояние до ГГ (чобы хвост не прищемило).
3. закрыть дверь.
Про телепорт автор задачи (Дартаньян) ничего не говорил. При телепортации дверь закрывается автоматически, а на какую именно вешать замок - не имеет значения, все равно без ключа не откроешь.
Лично меня больше интересует вопрос, а зачем она, такая хитрая дверь, вообще нужна, тем более телепорт. Чужие по Вастерланду не ходят, для того, чтобы кто-то попытался войти в твою дверь, нужно создать НПС и сделать ему соответствующий пакет поведения - иначе никак.
Поделиться242010-08-21 21:13:39
Про телепорт автор задачи (Дартаньян) ничего не говорил.
Вот он, ключ. Дартаньян вообще ничего не сказал про телепорт.
после открытия она закрылась снова на ключ (обязательно на ключ!).
Закрыть на ключ - именно это я и привел в скрипте. lock - закрыть дверь на ключ. (То есть, дверь нельзя активировать без ключа)
А если все же нужна дверь без телепорта, которая закрывается-открывается, то
scn ScriptName float timer short doOnce short activated Begin OnActivate if (doOnce == 0 && activated == 0) set activated to 1 activate elseif (doOnce == 1) activate endif End Begin GameMode if (activated == 1 && doOnce == 0) set timer to timer + getsecondspassed endif if (timer >= 5 && doOnce == 0 && GetOpenState == 1 && GetDistance player > 150) SetOpenState 0 lock 100 set timer to 0 set doOnce to 1 set activated to 2 endif End
Отредактировано Evil (2010-08-22 08:29:28)
Поделиться252010-08-22 01:40:47
if (activated == 1 && doOnce == 0)
set timer to timer + getsecondspassed
set activated to 2
endif
Опять счетчик неправильный, считать будет только одни фрейм. Условием начала отсчета является activated == 1, и в этом же фрейме ты ее ставишь в 2.
Вопрос "а нафига?", тем не менее остается открытым.
Что касается проникновения несуществующих в Фаллауте домушников за закрытые двери, то вот самое простое решение:
begin onactivate
if isactionref player == 1
activate
endif
end
Больше в эту дверь никто и никогда кроме ГГ не войдет.
Поделиться262010-08-23 10:06:01
а функция Return может быть возвращает? Позволяет осуществлять скрипт постоянно при активации.
Дверь желательно чтоб закрывалась. И не на телепорт.
(Не могу вспомнить, в каком плаге это было).
Поделиться272010-08-23 12:55:28
функция Return может быть возвращает
Прекращает выполнение скрипта до следующего фрейма. Все что после нее - не читается движком и не выполняется.
Поделиться282010-08-23 13:50:45
а функция Return может быть возвращает? Позволяет осуществлять скрипт постоянно при активации. Дверь желательно чтоб закрывалась. И не на телепорт.
scn ScriptName float timer short activated Begin OnActivate if (activated == 0) set activated to 1 activate endif End Begin GameMode if (activated == 1) set timer to timer + getsecondspassed endif if (timer >= 5 && GetOpenState == 1 && GetDistance player > 150) SetOpenState 0 lock 100 set timer to 0 set activated to 0 endif End
Будет постоянно так закрываться на ключ.
Отредактировано Evil (2010-08-23 22:30:23)
Поделиться292010-08-23 15:15:06
Дверь не открывается.
Может это сделано для двери, которая телепортирует куда-то?
Если даже это так, то сделаю отдельные комнаты, а не все в одном интерьере.
Отредактировано Дартаньян (2010-08-23 15:19:05)
Поделиться302010-08-23 18:03:27
Скрипт изменил. Попробуй. Он на обычные, не телепортирующие двери.
Отредактировано Evil (2010-08-23 22:30:31)