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

Требуется помощь со скриптами


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

1 смотря с какой координаты z в какую нужно спускать.

Скорость это 512. Уменьшить ее.

2

Можно попробовать либо удалить этот блок, либо удалить return

if ( PCSkipEquip == 1 )

set PCSkipEquip to 0

set OnPCEquip to 0

set pickedup to 1

return

endif

 

3 удалить вторую строку set timer to ... Которая после elseif state == 1

 

Поменять в соответствующем месте:

If ( timer > 2 )

Fadein 1.5

Set state to 2

Endif

1. Уменьшить скорость оказалось достаточно, спасибо. :thumbsup:

2. Вообще ни на что не повлияло. Мб есть еще какие способы? Не то чтобы это прямо критично, просто было бы удобнее иметь возможность поднять книгу без активации, как и все другие.

3. Теперь темнота вообще не рассеивается, а звук кастуемого спелла проигрывается бесконечно.

Begin _skooma_smoke

float timer
short state
short doOnce

if ( timer < 5 )
Set timer to ( timer + GetSecondsPassed )
endif
if ( timer >= 5 )
disable
setdelete 1	
return
endif

if ( state == 0 ) ; play smoke sound, fade out, make player fall
	Playsound, "Blackoutin"
	FadeOut 3
	Set state to 1
elseif ( state == 1 ) ; smoking in progress
	if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once
		if ( doOnce == 0 )
		Cast, "wh_skooma_smoke_effect", Player
		Set doOnce to 1
     return
     endif
	endif
	if ( timer > 5 ) ; fade in, make player stand up
		FadeIn 1.5
		Set state to 2
	endif
else ; get rid of this object
	if ( timer == 0 )
	disable	
endif
endif
	
End
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 117
  • Создана
  • Последний ответ

Топ авторов темы

1. Уменьшить скорость оказалось достаточно, спасибо. :thumbsup:

2. Вообще ни на что не повлияло. Мб есть еще какие способы? Не то чтобы это прямо критично, просто было бы удобнее иметь возможность поднять книгу без активации, как и все другие.

3. Теперь темнота вообще не рассеивается, а звук кастуемого спелла проигрывается бесконечно.

 

Begin _skooma_smoke

float timer
short state
short doOnce

if ( timer < 5 )
Set timer to ( timer + GetSecondsPassed )
endif
if ( timer >= 5 )
disable
setdelete 1	
return
endif

if ( state == 0 ) ; play smoke sound, fade out, make player fall
	Playsound, "Blackoutin"
	FadeOut 3
	Set state to 1
elseif ( state == 1 ) ; smoking in progress
	if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once
		if ( doOnce == 0 )
		Cast, "wh_skooma_smoke_effect", Player
		Set doOnce to 1
     return
     endif
	endif
	if ( timer > 5 ) ; fade in, make player stand up
		FadeIn 1.5
		Set state to 2
	endif
else ; get rid of this object
	if ( timer == 0 )
	disable	
endif
endif
	
End

 

3 FadeIn 1.5 переместить в блок if timer >= 5

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

Добавьте после этой строки

Set doOnce to 1

Эту

FadeIn 1.5

Не повлияло. Вообще ничего не помогает, и никак не могу понять что вообще провоцирует это зацикливание. То ли дело в скрипте активатора, кастующего спелл, то ли в скриптах самих трубок где-то закрался косяк. Сделала по-другому, без стадий, зацикливание звука теперь начинается сразу, после первого же применения. До этого было после нескольких, где-то после 5-6. И, что характерно, звук каста идет, но действия эффекта нет.

Begin _skooma_smoke_2

short doonce
float TimePassed

set TimePassed to (TimePassed + GetSecondsPassed)

if ( doonce == 0 )
     Playsound, "Blackoutin"
	FadeOut 3
Cast, "wh_skooma_smoke_effect", player
set doonce to 1
endif

if ( TimePassed >= 3 )
FadeIn 1.5
set TimePassed to 0
disable
setDelete, 1
endif

end

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

Begin _skooma_pipe

short button
short pickup
short status

if ( pickup == 1 )
	Set pickup to 0
	activate
	return
endif

if ( OnActivate == 1 ) 
if ( MenuMode == 0 )
		MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Взять"
		Set status to 1
	else 
		Set pickup to 1
		return
	endif
endif
endif

If ( status == 1 ) 
	set button to GetButtonPressed
	if ( button == -1 ) 
		return
	elseif ( button == 0 ) 
	if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
	player->RemoveItem, "ingred_moon_sugar_01", 1
     PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0
     Set status to 0
return
else
MessageBox "Для этого нужен лунный сахар"
Set status to 0
return
endif
	elseif ( button == 1 )
     Set status to 0
	Set pickup to 1
endif
endif

End


begin Skooma_pipe_act

short button
short status

if ( OnActivate == 1 ) 
if ( MenuMode == 0 )
		MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Ничего"
		Set status to 1
	else 
Set status to 0
		return
	endif
endif

If ( status == 1 ) 
	set button to GetButtonPressed
	if ( button == -1 ) 
		return
	elseif ( button == 0 ) 
	if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
     player->RemoveItem, "ingred_moon_sugar_01", 1
     PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0
	Set status to 0
return
else
MessageBox "Для этого нужен лунный сахар"
Set status to 0
return
endif
	elseif ( button == 1 )
		Set status to 0
		return
	endif
endif
endif

End


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

Как понять зацикливание звука? Экран темнеет? Со спеллом все правильно?

Добавьте в блок к этой строчке

set doonce to 1

Это

Messagebox "cast"

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

После того как активатор кастанул спелл, звук каста не прекращается, а воспроизводится снова и снова, в ускоренном темпе. Экран темнеет, потом светлеет, тут все в порядке. Спелл срабатывает, но эффекта нет, что тоже не норма - в дефолтном варианте с этим проблем не было. Сам спелл с тех пор не менялся, только скрипты. Месседжбокс добавила, хоть и не совсем понимаю как это должно было помочь. Не помогло.
Ссылка на комментарий
Поделиться на другие сайты

После того как активатор кастанул спелл, звук каста не прекращается, а воспроизводится снова и снова, в ускоренном темпе. Экран темнеет, потом светлеет, тут все в порядке. Спелл срабатывает, но эффекта нет, что тоже не норма - в дефолтном варианте с этим проблем не было. Сам спелл с тех пор не менялся, только скрипты. Месседжбокс добавила, хоть и не совсем понимаю как это должно было помочь. Не помогло.

А мессадж выводится один раз или спамит? Приведите дефолтную версию.

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

А мессадж выводится один раз или спамит? Приведите дефолтную версию.

Один раз. Дефолтная вот, это еще вообще до начала каких-либо изменений:

Begin _skooma_smoke

float timer
short state
short doOnce

if ( state == 0 ) ; play smoke sound, fade out, make player fall
	Playsound, "Blackoutin"
	FadeOut 2
	Player->ModCurrentFatigue -999
	Set state to 1
elseif ( state == 1 ) ; smoking in progress
	Set timer to ( timer + GetSecondsPassed )
	if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once
		if ( doOnce == 0 )
			Set doOnce to 1
			Cast, "wh_skooma_smoke_effect", Player
		endif
	endif
	if ( timer > 2 ) ; fade in, make player stand up
		FadeIn 1.5
		Player->ModCurrentFatigue 999
		Set timer to 0
		Set state to 2
	endif
else ; get rid of this object
	if ( timer == 0 )
		disable ; disabling object
	endif
	if ( timer < 5 )
		Set timer to ( timer + GetSecondsPassed )
	endif
	if ( timer >= 5 )
		setdelete 1 ; deleting object
	endif
	return
endif

End

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

 

Begin _skooma_smoke

Begin _skooma_smoke

float timer
short state

if ( timer >= 10 )
    disable
    setdelete 1 ; deleting object
elseif ( state == 0 ) ; play smoke sound, fade out, make player fall
    Playsound, "Blackoutin"
    FadeOut 2
    Player->ModCurrentFatigue -999
    Set state to 1
elseif ( state == 1 ) ; smoking in progress
    Set timer to ( timer + GetSecondsPassed )    
    if ( timer > 2 )
        Set state to 2
    endif
elseif ( state == 2 )
    Set state to 3
    Cast, "wh_skooma_smoke_effect", Player        
    FadeIn 1.5
    Player->ModCurrentFatigue 999
elseif ( state == 3 )
    Set timer to ( timer + GetSecondsPassed )
    if ( timer >= 5 )
        if ( getdisabled == 0 )
        disable ; disabling object
        endif
    endif    
endif

End

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

И все равно звук зависает, теперь не сразу, но после 4-5 применений. Провела эксперимент, заспавнив несколько раз перед собой просто активатор - вроде бы по части звука все в порядке. Похоже дело все же в скрипте самой трубки, а не активатора со спеллом. Вроде бы там все просто - появился активатор, кастанул спелл, пропал. Но хоть убей не пойму что именно вызывает такой эффект. Может быть такое что скрипт реагирует на наличие в инвентаре лунного сахара не один раз, а зацикливает результат? Вот в этом фрагменте:

	elseif ( button == 0 ) 
	if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
	player->RemoveItem, "ingred_moon_sugar_01", 1
     PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0
     Set status to 0
return
else
MessageBox "Для этого нужен лунный сахар"
Set status to 0
return
endif
Ссылка на комментарий
Поделиться на другие сайты

И все равно звук зависает, теперь не сразу, но после 4-5 применений. Провела эксперимент, заспавнив несколько раз перед собой просто активатор - вроде бы по части звука все в порядке. Похоже дело все же в скрипте самой трубки, а не активатора со спеллом. Вроде бы там все просто - появился активатор, кастанул спелл, пропал. Но хоть убей не пойму что именно вызывает такой эффект. Может быть такое что скрипт реагирует на наличие в инвентаре лунного сахара не один раз, а зацикливает результат? Вот в этом фрагменте:

 

elseif ( button == 0 ) 
	if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
	player->RemoveItem, "ingred_moon_sugar_01", 1
     PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0
     Set status to 0
return
else
MessageBox "Для этого нужен лунный сахар"
Set status to 0
return
endif
Тут все правильно.

 

Playsound, "Blackoutin"

Messagebox "spam"

 

Тестите и ск6адите если будет спамить.

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

Да, но тут какая-то непонятная аномалия. Причем в других похожих скриптах все со звуком в порядке, так что даже OpenMW обвинить не получится. Видимо, придется пойти другим путем, добавляя игроку эффекты скриптом, а не заклинанием.
Ссылка на комментарий
Поделиться на другие сайты

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

Begin _skooma_pipe

short button
short state
short pickup
float TimePassed

if ( pickup == 1 )
Set pickup to 0
activate
return
endif

if ( OnActivate == 1 ) 
if ( MenuMode == 0 )
if ( state == 0 )
MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Взять"
set state to 1
else 
Set pickup to 1
return
endif
endif

if ( state == 1 )
set button to GetButtonPressed
if ( button == -1 ) 
return
elseif ( button == 0 ) 
if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
player->RemoveItem, "ingred_moon_sugar_01", 1
Playsound, "Blackoutin"
FadeOut 2
Cast "wh_skooma_smoke_effect" player
set state to 0
return
else
MessageBox "Для этого нужен лунный сахар"
set state to 0
return
elseif ( button == 1 )
Set pickup to 1
endif
endif
endif
endif

set TimePassed to (TimePassed + GetSecondsPassed)
if ( TimePassed >= 2 )
FadeIn 1.5
set TimePassed to 0
endif

End


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

endif

endif

 

if ( state

Сюда еще endif.

 

Сюда это куда? Сразу после if ( state) что ли? Пробовала ставить в разные места блока, не сработало.

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

Заработало, спасибо. Со звуком тоже все норм. Но обнаружилась еще проблема: нет реакции на выбор "Взять". А после новой попытки активации меню выбора уже нет, только сразу подбирается. И еще момент: хотелось бы чтобы сначала затемнялся экран, а после этого через пару секунд кастовался спелл, чтобы этого не было видно. Полагаю, рядом с Cast "wh_skooma_smoke_effect" player надо воткнуть еще один таймер. Но вот как именно это оформить чтобы не запороть опять весь скрипт?

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

Заработало, спасибо. Со звуком тоже все норм. Но обнаружилась еще проблема: нет реакции на выбор "Взять". А после новой попытки активации меню выбора уже нет, только сразу подбирается. И еще момент: хотелось бы чтобы сначала затемнялся экран, а после этого через пару секунд кастовался спелл, чтобы этого не было видно. Полагаю, рядом с Cast "wh_skooma_smoke_effect" player надо воткнуть еще один таймер. Но вот как именно это оформить чтобы не запороть опять весь скрипт?

 

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

Скрипт приведите.

Begin _skooma_pipe

short button
short state
short pickup
float TimePassed

if ( pickup == 1 )
Set pickup to 0
activate
return
endif

if ( OnActivate == 1 ) 
if ( MenuMode == 0 )
if ( state == 0 )
MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Взять"
set state to 1
else 
Set pickup to 1
return
endif
endif
endif

if ( state == 1 )
set button to GetButtonPressed
if ( button == -1 ) 
return
elseif ( button == 0 ) 
if ( player->GetItemCount, ingred_moon_sugar_01 > 0 )
player->RemoveItem, "ingred_moon_sugar_01", 1
Playsound, "Blackoutin"
FadeOut 2
Cast "wh_skooma_smoke_effect" player
set state to 0
return
else
MessageBox "Для этого нужен лунный сахар"
set state to 0
return
elseif ( button == 1 )
Set state to 0
Set pickup to 1
endif
endif
endif

set TimePassed to (TimePassed + GetSecondsPassed)
if ( TimePassed >= 3 )
FadeIn 1.5
set TimePassed to 0
endif

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

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

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

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

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

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

Войти

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

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

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