• Добро пожаловать, Гость. Войдите или зарегистрируйтесь.

Автор Тема: Крикну а в ответ тишина  (Прочитано 3302 раз)

Описание:

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Крикну а в ответ тишина
« : 19 Март, 2008, 11:33:53 »
0
Мое почтение. Многоуважаемые форумчане. Кто силен в написании скриптов, подскажите решение одной проблемы.

Есть скрипт, который отчасти повторяет систему порталов Гильдии магов Морроувинда. Тоесть в каждом отделении Гильдии магов есть портал, через который можно переместиться в любое другое отделение Гильдии. При активации портала появляется MessageBox, выбираешь нужную гильдию и перемещаешься. Все в общем то просто. Вот кусок кода:
Scriptname WMGPScript

Short button

Begin OnActivate
  MessageBox "Куда вы хотите отправиться?", "Анвил", "Отмена"
  Activate
End

Begin Gamemode
  set button to GetButtonPressed
  If ( button == -1 )
     Return
  elseif ( button == 0 )
     if GetInCell AnvilMagesGuild
        message "Вы уже в Анвиле"
     else
        Player.MoveTo WMGPMarker00
     endif
  elseif ( button == 1 )
     return
  Endif

End
Так как это портал, то очень хотелось бы, чтобы при перемещении звучал звук портала SPLAlterationCast. Однако в блоке Gamemode команда playsound не срабатывает, так как загружается ячейка, а загрузка - это, как вы понимаете уже не gamemode. Так вот вопрос: Как реализовать проигрывание звука?

Оффлайн Poison Angel

  • Супермодератор форума
  • *
  • Сообщений: 662
  • Репутация: 4.7
  • Пол: Мужской
    • ICQ клиент - 282758820
    • Просмотр профиля
Re: Крикну а в ответ тишина
« Ответ #1 : 19 Март, 2008, 17:35:03 »
0
Я правильно понимаю, что отправка игрока осуществляется строкой
Player.MoveTo WMGPMarker00?
Звук, вставленный перед этой строкой тоже не успевает проиграть?
Написано : 19 Марта, 2008, 20:26:22

На всякий случай, если не успевает... Тогда, вместо отправки игрока проигрывай звук, устанавливай какой-то новый флаг в 1, и пропиши ветку "если", где по этому флагу будет выполняться уже отправка. :)



Чем больше я узнаю людей, тем больше люблю собак.
Награды За огромный вклад в развитие Румора Активным модераторам публичных разделов форума, проработавшим более года

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Крикну а в ответ тишина
« Ответ #2 : 19 Март, 2008, 23:17:30 »
0
При таком варианте команда playsound почему то обрывает выполнение дальнейшего кода. Messagebox закрывается, звук проигрывается и дальнейшие действия скрипта не выполняются. Я пытался найти решение этого вопроса в http://www.elderscrolls.net/conference/index.php?showtopic=3152&pid=134289&st=0&#entry134289 но решение так и не нашли.

Оффлайн Poison Angel

  • Супермодератор форума
  • *
  • Сообщений: 662
  • Репутация: 4.7
  • Пол: Мужской
    • ICQ клиент - 282758820
    • Просмотр профиля
Re: Крикну а в ответ тишина
« Ответ #3 : 19 Март, 2008, 23:23:05 »
0
При котором из двух, предложенных выше?



Чем больше я узнаю людей, тем больше люблю собак.
Награды За огромный вклад в развитие Румора Активным модераторам публичных разделов форума, проработавшим более года

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Крикну а в ответ тишина
« Ответ #4 : 19 Март, 2008, 23:31:12 »
0
И при таком:
elseif ( button == 0 )
if GetInCell AnvilMagesGuild
  message "Вы уже в Анвиле"
else
  player.playsound sound ID
  Player.MoveTo WMGPMarker00
endif
elseif ( button == 1 )

И при таком:
float timer
short teleport

...

elseif ( button == 0 )
if GetInCell AnvilMagesGuild
 message "Вы уже в Анвиле"
else
 player.playsound sound ID
set timer to timer + getsecondspassed
set teleport to 1
endif
elseif ( button == 1 )
if GetInCell BravilMagesGuild
 message "Вы уже в Бравиле"
else
player.playsound sound ID
set timer to timer + getsecondspassed
set teleport to 2
endif
elseif ( button == 2 )

...

if timer > 3;(длинна звука, который нужно проиграть)
    if teleport == 1
       Player.MoveTo WMGPMarker00
    elseif teleport == 2
        Player.MoveTo WMGPMarker01
    endif
set timer to 0
set teleport to 0
endif
И при таком:
float timer
short teleport
short startTimer

...




begin OnActivate


elseif ( button == 0 )
if GetInCell AnvilMagesGuild
message "Вы уже в Анвиле"
else
player.playsound sound ID
set startTimer to 1
set teleport to 1
endif
elseif ( button == 1 )
if GetInCell BravilMagesGuild
message "Вы уже в Бравиле"
else
player.playsound sound ID
set startTimer to 1
set teleport to 2
endif
elseif ( button == 2 )

...

end

begin Gamemode

if ( startTimer == 1 )
set timer to timer + getsecondspassed

if timer > 3;(длинна звука, который нужно проиграть)
   if teleport == 1
      Player.MoveTo WMGPMarker00
   elseif teleport == 2
       Player.MoveTo WMGPMarker01
   endif
set timer to 0
set teleport to 0
set startTimer to 0

endif

endif

end
И при таком:
float timer
short teleport

...

elseif ( button == 0 )
if GetInCell AnvilMagesGuild
message "Вы уже в Анвиле"
else
player.playsound sound ID
set timer to timer + getsecondspassed
set teleport to 1
return
endif
elseif ( button == 1 )
if GetInCell BravilMagesGuild
message "Вы уже в Бравиле"
else
player.playsound sound ID
set timer to timer + getsecondspassed
set teleport to 2
return
endif
elseif ( button == 2 )

...

if timer > 3;(длинна звука, который нужно проиграть)
   if teleport == 1
      Player.MoveTo WMGPMarker00
   elseif teleport == 2
       Player.MoveTo WMGPMarker01
   endif
set timer to 0
set teleport to 0
endif

Оффлайн Poison Angel

  • Супермодератор форума
  • *
  • Сообщений: 662
  • Репутация: 4.7
  • Пол: Мужской
    • ICQ клиент - 282758820
    • Просмотр профиля
Re: Крикну а в ответ тишина
« Ответ #5 : 19 Март, 2008, 23:55:04 »
0
Н-да. Прям-таки неловко и предлагать попробовать такой вариант:
Scriptname WMGPScript

Short button
short flag

Begin OnActivate
set flag to -1 ;Будем управлять событиями
End

Begin Gamemode

if flag == 0 ;Уже всё или еще не надо
return
elseif flag == -1 ;Вопрос после активации
MessageBox "Куда вы хотите отправиться?", "Анвил", "Отмена"
set flag to 1 ;будем обрабатывать выбор
elseif flag == 1 ;Вопрос был задан, ждем ответ
set button to GetButtonPressed
If ( button == -1 ) ;пока ничего, емнип
Return
elseif ( button == 0 ) ;Выбор 1
if GetInCell AnvilMagesGuild
message "Вы уже в Анвиле"
set flag to 0 ;все, наигрались
return
else
playsound
set flag to 2 ; нужно отправлять
endif
elseif ( button == 1 )
set flag to 0
return
endif
elseif flag == 2 ;Отправляем
Player.MoveTo WMGPMarker00
set flag to 0 ;и все, конец
endif

End
:)



Чем больше я узнаю людей, тем больше люблю собак.
Награды За огромный вклад в развитие Румора Активным модераторам публичных разделов форума, проработавшим более года

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Крикну а в ответ тишина
« Ответ #6 : 20 Март, 2008, 10:47:30 »
0
Перемещение работает, однако загрузка ячейки все равно обрывает проигрывание звука (буквально на доли секунды слышно, что звук срабатывает)

Оффлайн Poison Angel

  • Супермодератор форума
  • *
  • Сообщений: 662
  • Репутация: 4.7
  • Пол: Мужской
    • ICQ клиент - 282758820
    • Просмотр профиля
Re: Крикну а в ответ тишина
« Ответ #7 : 20 Март, 2008, 11:25:22 »
0
О! Тогда нужно пробовать таймер. (я не буду с синтаксисом возиться  :blush2:)
    Scriptname WMGPScript

    Short button
    short flag
    short timer

    ...
        elseif flag == 2 ;Запускаем таймер
            set timer to timer + 1
            if timer == 10 ;Значение подбирать надо
                set flag to 3
            endif
        elseif flag == 3 ;Теперь отправляем
            Player.MoveTo WMGPMarker00
            set flag to 0 ;и все, конец
        endif
    End



Чем больше я узнаю людей, тем больше люблю собак.
Награды За огромный вклад в развитие Румора Активным модераторам публичных разделов форума, проработавшим более года

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Крикну а в ответ тишина
« Ответ #8 : 20 Март, 2008, 11:37:37 »
0
Сейчас систему переустановлю и опробую. Спасибо за помощь.

Оффлайн Eldignis

  • *
  • Сообщений: 6
  • Репутация: 0
    • Просмотр профиля
    • Email
Re: Крикну а в ответ тишина
« Ответ #9 : 20 Март, 2008, 20:04:54 »
0
Ну что сказать... Талант не пропьешь, как впрочем и не проешь. Респект тебе, Poison Angel. Вот бы еще намутить, чтобы звук проигрывался во время загрузки ячейки, но это уже буржуизмъ!

Теги:
 

Поиск

 
Top
SimplePortal 2.3.5 © 2008-2012, SimplePortal