Вход  ::   Регистрация  ::   Забыли пароль?  ::   Правила
 
ОтветитьСоздать новую темуСоздать новое голосование

> Крикну а в ответ тишина

 
Eldignis
  post 09.03.08 - 20:12   (Ответ #1)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
Мое почтение. Многоуважаемые форумчане. Кто силен в написании скриптов, подскажите решение одной проблемы.

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

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 )
 if GetInCell BravilMagesGuild
  message "Вы уже в Бравиле"
 else
 Player.MoveTo WMGPMarker01
 endif
elseif ( button == 2 )
 If GetStage MG14Plot >= 10
  message "Перемещение в Бруму невозможно"
 else
  Player.MoveTo WMGPMarker02
 endif
elseif ( button == 3 )
 if GetInCell ICArcaneUniversityArchMagesTowerLobby
  message "Вы уже в Имперском городе"
 else
 Player.MoveTo WMGPMarker03
 endif
elseif ( button == 4 )
 if GetInCell ChorrolMagesGuild
  message "Вы уже в Корроле"
 else
 Player.MoveTo WMGPMarker04
 endif
elseif ( button == 5 )
 if GetInCell LeyawiinMagesGuild
  message "Вы уже в Лейавине"
 else
 Player.MoveTo WMGPMarker05
 endif
elseif ( button == 6 )
 if GetInCell SkingradMagesGuild
  message "Вы уже в Скинграде"
 else
 Player.MoveTo WMGPMarker06
 endif
elseif ( button == 7 )
 if GetInCell CheydinhalMagesGuild
  message "Вы уже в Чейдинхоле"
 else
 Player.MoveTo WMGPMarker07
 endif
elseif ( button == 8 )
 return
Endif

End

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

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Иван II
  post 09.03.08 - 21:23   (Ответ #2)
Пользователь offline

-----


aka TJ (O.S.T.)
Группа: Обыватель
Сообщений: 488
Репутация: 91
Нарушений: (0%)
А технически я что-то не понял как организовано? Игрок активатор чтоли активирует?
В моррике порталов не было, телепортация была условной, просто тревел маркеры стояли и путешествие из диалога.
А тут портал. Вообще-то порталы должны быть door, а door'ы должны иметь звуки open close

--
Если все-таки через скрипт, то звук портала нужно проигрывать не в том же фрейме, в котором происходит перемещение, а фреймом раньше. По идее треблов не должно быть =)

Цитата: 
elseif ( button == 0 )
if GetInCell AnvilMagesGuild
  message "Вы уже в Анвиле"
else
  player.playsound sound ID
  Player.MoveTo WMGPMarker00
endif
elseif ( button == 1 )

так что, не работает?

Сообщение отредактировал Иван II - 09.03.08 - 21:32

destroy the Universe later...
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Eldignis
  post 09.03.08 - 21:42   (Ответ #3)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
К сожалению не работает. Для того, чтобы было понятней расскажу подробней. Вот вы заходите в любое отделение Гильдии магов. Там портал. Кликаете на него появляется окошко: "Куда вы хотите отправиться? Туда то, туда то, туда то". Выбираете один из вариантов. Перемещаетесь. И когда происходит перемещение игра выходит из gamemode, так как идет загрузка нужной ячейки, и звук, указанный в блоке gamemode не проигрывается. Как сделать так, чтобы он проигрывался?

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Иван II
  post 10.03.08 - 09:44   (Ответ #4)
Пользователь offline

-----


aka TJ (O.S.T.)
Группа: Обыватель
Сообщений: 488
Репутация: 91
Нарушений: (0%)
Ну тогда нужно отделить
Player.playSound
от
Player.MoveTo WMGPMarker00


Код:


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


по идее железно должно работать =)

Сообщение отредактировал Иван II - 10.03.08 - 12:08

destroy the Universe later...
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Eldignis
  post 13.03.08 - 19:18   (Ответ #5)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
К сожалению и такая комбинация не работает. У меня уже просто руки опустились после того, как эта "задачка по информатике" несколько дней долбит мозг. Я уже столько варантов перепробовал. Не представляю просто как!

Ивану II
При использовании последнего варианта получается интересное дело. Активируем портал --> открывается messagebox--> нажимаем на нужную кнопку--> messagebox закрывается-->проигрывается звук--> при повторном активировании портала происходит перемещение.  Вот ведь как.

Вот может есть какая то возможность вставить в промежуток кода блока Gamemode блок Menumode, в котором будет проигрываться звук?

P.S. В любом случае спасибо за помощь, не ожидал, что кто то отзовется такой подробной помощью.

Сообщение отредактировал Eldignis - 13.03.08 - 19:24

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Иван II
  post 13.03.08 - 20:48   (Ответ #6)
Пользователь offline

-----


aka TJ (O.S.T.)
Группа: Обыватель
Сообщений: 488
Репутация: 91
Нарушений: (0%)
Цитата: (Eldignis @ 13.03.08 - 20:18)
При использовании последнего варианта получается интересное дело. Активируем портал --> открывается messagebox--> нажимаем на нужную кнопку--> messagebox закрывается-->проигрывается звук--> при повторном активировании портала происходит перемещение.  Вот ведь как.

а так правильно, у тебя блок on Activate который срабатывает только при активации объекта.
Та часть, где таймер и перемещение должна стоять за пределами блока.

begin OnActivate

end

в блоке

begin GameMode

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


Сообщение отредактировал Иван II - 13.03.08 - 21:02

destroy the Universe later...
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Eldignis
  post 15.03.08 - 22:15   (Ответ #7)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
Все равно не пашет в блоке OnActivate. Попробуем все сначала. Привожу полностью скрипт, который перемещает вас только в Анвил (для краткости).
Код:

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

И, если я не ошибаюсь, команда player.moveto сразу же является и командой return, тоесть после нее строчки не обрабатываются.

Сообщение отредактировал Eldignis - 15.03.08 - 22:26

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Мехруныч
  post 16.03.08 - 20:38   (Ответ #8)
Пользователь offline

-----


Вассал
Группа: Обыватель
Сообщений: 219
Репутация: 32
Нарушений: (0%)
Код:
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

А вот так попробуй.(я зареторнил телепорты)

Вам не кажется, что playground.ru есть синоним слову ворье?
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Eldignis
  post 16.03.08 - 22:50   (Ответ #9)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
Нет. Не работает. Только проигрывает звук. По-видимому эту задачу невозможно решить. Я уже сдался.

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Иван II
  post 20.03.08 - 17:33   (Ответ #10)
Пользователь offline

-----


aka TJ (O.S.T.)
Группа: Обыватель
Сообщений: 488
Репутация: 91
Нарушений: (0%)
Цитата: (Eldignis @ 16.03.08 - 23:50)
Нет. Не работает. Только проигрывает звук. По-видимому эту задачу невозможно решить. Я уже сдался.

Вылижи esp, я гляну

destroy the Universe later...
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
 
Eldignis
  post 24.03.08 - 00:01   (Ответ #11)
Пользователь offline

-----


Бюргер
Группа: Обыватель
Сообщений: 64
Репутация: 5
Нарушений: (0%)
Ответ был найден вот здесь: rumor. Но хотелось бы все таки решить проблему полностью, а именно: "чтобы звук проигрывался во время загрузки ячейки".

Сообщение отредактировал Eldignis - 24.03.08 - 00:03

"Глупо бы было отрицать опасность мещанства... Только адресовал он эту опасность неправильно. Не для коммунизма, а для всего человечества опасно мещанство." Стругацкие.
ПрофайлОтправить личное сообщениеВернуться к началу страницы
+Цитировать сообщение
ОтветитьСоздать новую тему
 

Цитата не в тему: Ой... а мне сырки глазированные попались с гуаровой камедью... В каждом из нас есть что-то от гуара (с). (Qui-Gon-Jinn)
Упрощённая версия / Версия для печати Сейчас: 16.04.24 - 20:33