Перейти к содержанию

Заклинание вызова объекта (по типу Хаскилла)


Рекомендуемые сообщения

Доброго всем времени суток, я не разбираюсь в скриптинге и язык учебника OSFM для меня немного тяжеловат, поэтому прошу помощи у Вас. На основе заклинания "Вызов Хаскилла" я захотел сделать заклинание, призывающее трон Шеогората к игроку. Создал 2 маркера (SheoThroneSummonMarker и SheoThroneSummonReturnMarker), присвоил трону новый скрипт (1), создал квест вызова трона, привязал измененный скрипт (2) к нему, создал заклинание и на основе вызова камердинера сделал третий скрипт (3) и привязал к спеллу. В итоге, трон призывается, но есть несколько НО:

 

1) Трон не перемещается обратно, то есть остается навсегда

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

 

Помогите начинающему, пожалуйста :)

 

Скрипт 1

 

 

 

scn SheoThroneScript

 

short introWho

short introWhat

short introDoor

short introWant

short introPeople

short greetVAR

 

short leaveVAR

float timer

short doOnce

float fadetimer

float HaskillAlpha

short fadeOnce

short resetAlpha

short summoned

float summontimer

short summonblocker

 

 

Begin GameMode

 

;this chunk fades him out after summon

if ( fadeOnce == 4 )

Set HaskillAlpha to 0.9

Set FadeTimer to 4

SetActorAlpha HaskillAlpha

set fadeOnce to 5

endif

 

if ( FadeOnce == 5 )

if ( FadeTimer > 0 )

Set FadeTimer to ( FadeTimer - GetSecondsPassed )

Set HaskillAlpha to ( HaskillAlpha - .01 )

SetActorAlpha HaskillAlpha

elseif ( FadeTimer <= 0 )

Set HaskillAlpha to 0

Set FadeOnce to 2

Set FadeTimer to 0

MoveTo SheoThroneSummonReturnMarker

set resetAlpha to 1

set summoned to 0

set summontimer to 0

set summonblocker to 0

endif

endif

 

if ( resetAlpha == 1 )

setActorAlpha 1

set resetAlpha to 0

endif

 

if ( summoned == 1 )

set summontimer to ( summontimer + GetSecondsPassed )

if ( summontimer >= 5 )

if ( summonblocker == 0 )

SESheogorathThroneREF.pme STRP

set SESheogorathThroneREF.FadeOnce to 4

set summonblocker to 1

endif

endif

endif

 

End

 

 

Скрипт 2

 

 

scn SheoThroneSummonQuestScript

 

;this script keeps the player from breaking the Haskill summon by summoning and quickly fast travelling. With this, resetVAR is set

;in the SESummonHaskillSpellScript on ScriptEffectFinish if the player isn't in the same cell. This script then resets all of Haskill's variable

;as they would be if the player remained in the cell with him and Haskills script were still updating every frame

 

short resetVAR

 

Begin GameMode

 

if ( resetVAR == 1 )

Set SESheogorathThroneREF.HaskillAlpha to 0

Set SESheogorathThroneREF.FadeOnce to 2

Set SESheogorathThroneREF.FadeTimer to 0

SESheogorathThroneREF.MoveTo SheoThroneSummonReturnMarker

set SESheogorathThroneREF.resetAlpha to 1

set SESheogorathThroneREF.summoned to 0

set SESheogorathThroneREF.summontimer to 0

set SESheogorathThroneREF.summonblocker to 0

set resetVAR to 0

endif

 

End

 

Скрипт 3

 

scn SheoThroneSummonSpellSCRIPT

 

float timer

short returnEffect ; set to 1 when played

float x

float y

float z

float angle

 

begin ScriptEffectStart

if ( SESheogorathThroneREF.summoned == 0 )

set SESheogorathThroneREF.summoned to 1

SheoThroneSummonReturnMarker.moveto SESheogorathThroneREF

SheoThroneSummonMarker.moveto player

set angle to SESheogorathThroneREF.getangle z + SESheogorathThroneREF.GetHeadingAngle player

SESheogorathThroneREF.setangle z angle

 

SESheogorathThroneREF.moveto player -100 y 130

SESheogorathThroneREF.pme STRP

else

Message "Haskill has been summoned too recently."

endif

 

end

 

begin ScriptEffectUpdate

set timer to timer + ScriptEffectElapsedSeconds

if returnEffect == 0 && timer > 4.5

SESheogorathThroneREF.pme STRP

set returnEffect to 1

endif

end

 

begin ScriptEffectFinish

if ( SESheogorathThroneREF.GetInSameCell Player == 0 ) && ( SESheogorathThroneREF.summoned == 1 )

set SheoThroneSummonQuest.resetVAR to 1

endif

; send Haskill back where he came from

;SESheogorathThroneREF.pme STRP

;SESheogorathThroneREF.removescriptpackage

;SESheogorathThroneREF.stoplook

;SESheogorathThroneREF.moveto SheoThroneSummonReturnMarker

;set SESheogorathThroneREF.FadeOnce to 4

;set SESheogorathThroneREF.greetVAR to 0

end

Изменено пользователем DaemoniaC
Ссылка на комментарий
Поделиться на другие сайты

для первого нужно сделать обьект с моделью null,а потом "тронID.moveto пустойобьектID 0,0,0" ,притом обьект должен находиться точно там куда должен вернуться трон

 

а для второго можно сделать через такой же обьект,только придется поиграться с координатами(нули после ID команды moveto и второго ID)

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...