The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » Скрипты » Нужен скрипт


Нужен скрипт

Сообщений 1 страница 30 из 39

1

Где-то в туториалах читал о сриптовой анимации, если кто знает как это делать подскажите, плз.

0

2

geoan написал(а):

Где-то в туториалах читал о сриптовой анимации, если кто знает как это делать подскажите, плз

Насколько я понимаю имелось ввиду управление анимацией с помощью скриптов. Если ты думал, что есть какая-то особая скриптовая анимация - то такой нету.

0

3

Я уже нашёл - ротация объекта (вокруг оси x, y, z) Хочу сделать мост, который крутится и через который можно пройти к 2-ум порталам. Но столкнулся с проблемой: пропадает коллизия, то-есть в центре моста герой соит нормально, а если отойти то мост проходит свозь героя. Получается что герой "привязан" к миру, а надо "привязать" к мосту. Всё это происходит в interiors.

0

4

geoan написал(а):

Я уже нашёл - ротация объекта (вокруг оси x, y, z) Хочу сделать мост, который крутится и через который можно пройти к 2-ум порталам

Хм... ну это будет не совсем анимация...

geoan написал(а):

Но столкнулся с проблемой: пропадает коллизия, то-есть в центре моста герой соит нормально, а если отойти то мост проходит свозь героя

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

0

5

Igor_Ra написал(а):

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

Вот скрипт: scn aaaRotateSCN

                  Begin GameMode

                  Rotate Z 20;поворот на 20% в секунду

                  End

Вешается на мост, мост перевёл в подраздел Активаторы. То-есть мост уже не Статик, крутится, как юла :D Коллизия, что интересно, существует вдоль моста так, как он прописан в редакторе. То-есть во время ротации поворачивается не мост, а его изображение! Во, как интересно!
Но в таком случае моя идея,к сожалению не осуществима :(  Хотя... можно,ведь заставить портал крутиться вокруг моста, для этого нужно сместить центр xyz портала на растояние равное 1/2 длинны моста, а я этого пока делать не умею... Может подскажешь, как?

Есть!!! Получилось! Хотя идея, может и не нова, тем неменее её можно использовать.

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

Отредактировано geoan (2008-10-21 19:15:33)

0

6

У меня вопрос по скриптам:
1. Как сделать, что бы в контейнер каждый месяц ложился определённый придмет и мне об этом приходило сообщение в верхний левый угол экрана.
2. Как сделать контейнер в который если положить определённую комбинацию предметов, то в следующем открывании контейнера появлялся один, но совершенно другой предмет и так можно было бы делать неограниченное количество раз.

0

7

1. возможно нужно использовать глобальную переменную float GameMonth. Для вывода сообщения используется функция Message

0

8

Я в скриптах полный 0. Можиш их ниписать?

0

9

Zveraboy написал(а):

Я в скриптах полный 0

Тогда советую для начала ознакомится с вот этим учебником:
OSFM v1.2.0 Том 1. Базовый курс скриптинга TES 4 Oblivion
http://modder.ucoz.ru/load/3-1-0-68

0

10

спс

0

11

Народ! Как сделать ? Нажимаешь на кнопку и появляется существо, которое нападает на игрока, и чтобы так можно много раз (тренировка)?
Или через диалоги ( как в офф плаге Крепость воина)?
Подскажите. Буду благодарен!

0

12

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)

0

13

Благодарю, будем пробовать.

Нажимаю на кнопку, но ничего не появляется. Обьясните, что не так
Вот скрипт:

Код:
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)

0

14

Код:
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)

+1

15

Все получилось, разве что скелетов полный зал появляется. А так ничего. Благодарю!

0

16

Дартаньян написал(а):

разве что скелетов полный зал появляется.

Да ладно? Такое возможно разве что в блоке GameMode. Поправьте если не прав, но ведь если использовать OnActivate, то скрипт будет выполнен только в одном фрейме, следовательно, появится только одно существо?

Но так как команда глючная, можно тогда использовать MessageBox в скрипте. А на кнопочку "Призвать скелета" (или кого там еще) положить строку MarkerID.PlaceAtMe AAAOKLSleletHeroTrener 1, 256, 0

Отредактировано Evil (2010-08-07 22:58:04)

0

17

Дартаньян
Можно еще почитать вот эту статью
How to make a Static Object Summon Creatures
http://cs.elderscrolls.com/constwiki/in … _Creatures
на английском правда. Я ее когда-то начинал переводить, да так и лежит недопереведенная :(

0

18

спасибо. Может я и смогу сколько-то перевести.

0

19

помогите сделать скрипт, чтобы двери сами закрывались.
Например: открываю дверь, от которой у меня есть ключ и она закрыта на него. Через 5 секунд после открытия она закрылась снова на ключ (обязательно на ключ!).

0

20

Код:
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)

0

21

Evil написал(а):

scn ScriptName
short timer
short doOnce

Begin OnActivate
if (doOnce == 0 && timer < 1)
     set timer to timer + getsecondspassed
     activate
else
     activate
End

Begin GameMode
if (timer == 5 && doOnce == 0)
     lock 100
     set timer to 0
     set doOnce to 1
End

Ни из идейных побуждений, ни за деньги работать не будет. Блок begin onactivate срабатывает только одни раз, при активации. Дальше нуля секунд + время одного фрейма счетчик считать не будет. Переменная timer - должна быть float. Команда lock - устанавливает замок (т.е. делает закрытым на ключ). На то, в каком состоянии находится в данный момент дверь - открыта или закрыта, она никак не влияет. Т.е. если дверь открыта, то она так открытой и останется.

0

22

Так.. Скрипт исправил, а вот насчет lock - знаю. Но ведь неизвестно, на какую дверь надо положить скрипт. На дверь, которая телепортирует, или которая открывается. В случае с телепортом использование функции lock очень даже уместно.

0

23

Evil написал(а):

В случае с телепортом использование функции lock очень даже уместно

Функция lock была заложена в условиях задачи - дверь должна захлопнутся, и ЗАКРЫТЬСЯ НА ЗАМОК. Просто этого для решения задачи недостаточно - нужно еще:
1. проверить открыта ли дверь или закрыта.
2. проверить расстояние до ГГ (чобы хвост не прищемило).
3. закрыть дверь.
Про телепорт автор задачи (Дартаньян) ничего не говорил. При телепортации дверь закрывается автоматически, а на какую именно вешать замок - не имеет значения, все равно без ключа не откроешь.
Лично меня больше интересует вопрос, а зачем она, такая хитрая дверь, вообще нужна, тем более телепорт. Чужие по Вастерланду не ходят, для того, чтобы кто-то попытался войти в твою дверь, нужно создать НПС и сделать ему соответствующий пакет поведения - иначе никак.

0

24

SpalnyVagon написал(а):

Про телепорт автор задачи (Дартаньян) ничего не говорил.

Вот он, ключ. Дартаньян вообще ничего не сказал про телепорт.

Дартаньян написал(а):

после открытия она закрылась снова на ключ (обязательно на ключ!).

Закрыть на ключ - именно это я и привел в скрипте. 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)

0

25

Evil написал(а):

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
Больше в эту дверь никто и никогда кроме ГГ не войдет.

0

26

а функция Return может быть возвращает? Позволяет осуществлять скрипт постоянно при активации.
Дверь желательно чтоб закрывалась. И не на телепорт.
(Не могу вспомнить, в каком плаге это было).

0

27

Дартаньян написал(а):

функция Return может быть возвращает

Прекращает выполнение скрипта до следующего фрейма. Все что после нее - не читается движком и не выполняется.

0

28

Дартаньян написал(а):

а функция 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)

+1

29

Дверь не открывается.
Может это сделано для двери, которая телепортирует куда-то?
Если даже это так, то сделаю отдельные комнаты, а не все в одном интерьере.

Отредактировано Дартаньян (2010-08-23 15:19:05)

0

30

Скрипт изменил. Попробуй. Он на обычные, не телепортирующие двери.

Отредактировано Evil (2010-08-23 22:30:31)

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » Скрипты » Нужен скрипт