Please login or register.

Login with username, password and session length
Advanced search  

News:

Forum rules - please read before posting, it can save you a lot of time.

Author Topic: Jak docílit toho, aby se zvuk neopakoval?  (Read 3695 times)

0 Members and 1 Guest are viewing this topic.

Nikolas.B

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 38
    • View Profile
Jak docílit toho, aby se zvuk neopakoval?
« on: March 12, 2010, 05:19:52 PM »

Zdravim mam scénu, do které když vejdete tak se spustí dabing (komentář k ponurému místu)..
Chci ale aby se dabing přáhrál jen jednou a né znova při další návštěvě téhle scény..
Snad jsem to popsal dostatačně srozumitelně  :) ::beer
Logged

Andrej (Blue Arc)

  • Occasional poster
  • **
  • Karma: 1
  • Offline Offline
  • Gender: Male
  • Posts: 73
    • View Profile
Re: Jak docílit toho, aby se zvuk neopakoval?
« Reply #1 on: March 13, 2010, 01:52:55 PM »

Zdravim mam scénu, do které když vejdete tak se spustí dabing (komentář k ponurému místu)..
Chci ale aby se dabing přáhrál jen jednou a né znova při další návštěvě téhle scény..
Snad jsem to popsal dostatačně srozumitelně  :) ::beer

Keď si pozrieš WME demo, je tam presne to, čo potrebuješ. Samozrejme, ide to vyriešiť aj logicky :)

scene_init.script Tvojej scény:

Code: [Select]
#include "scripts\base.inc"

// here comes the stuff which initializes the scene

actor.SkipTo(400, 400);
actor.Direction = DI_DOWN;
actor.Active = true;


////////////////////////////////////////////////////////////////////////////////
// scene state
global Stateroom;


// default values
if(Stateroom==null)
{
  Stateroom.Visited = false;
  // add scene states here
}



////////////////////////////////////////////////////////////////////////////////
// setup scene according to state variables



////////////////////////////////////////////////////////////////////////////////
if(!Stateroom.Visited)
{
  Stateroom.Visited = true;

  // this is our first visit in this scene...
 // tuto si napíšeš príkaz, ktorý Ti spustí dabing
}


if(!Stateroom.Visited)
{
  Stateroom.Visited = true;

  // this is our first visit in this scene...
 // tuto si napíšeš príkaz, ktorý Ti spustí dabing
}

Keď prvýkrát prídeš do scény, vykoná sa Ti tento kód. Pri ďalšej návšteve scény sa tento kód už nevykoná. Funguje to preto, lebo používaš globálnu premennú, ktorá si aj po opustení scény, resp. vypnutí skriptu, v ktorej sa nachádza, zachová hodnotu, ktorú uchováva. Takto program vie, že už si tu bol.
Logged

Nikolas.B

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 38
    • View Profile
Re: Jak docílit toho, aby se zvuk neopakoval?
« Reply #2 on: March 15, 2010, 12:56:33 AM »

Funguje to, díky moc  :)

Edit: Ještě by mě zajímala jedna věc.. Jak je to u entit..
Např kliknu na dveře spustí se dabing..

Takže to mam nascriptovaný takto:

on "LeftClick"
Game.PlaySound("sounds\dabing\tamnejdu.wav");

Jak docílot toho, aby se zvuk přehrál jen jednou i u tohodle?
To asi do scene scriptu vkládat nebudu ne?

Nebo by mě zajímalo jak udělat, když na ty dveře kliknu tak aby se přehrávalo víc zvuků po sobě.. Kliž kliknu po druhé další zvuk,po třetí další zvuk atd.. Mít prostě víc hlášek o těch dveřích.. (tam nejdu.., je to stejně zamčené.., nepotřebuji tam chodit atd..)
Snad jsem to popsal srozumitelně  ::beer
« Last Edit: March 15, 2010, 01:35:55 AM by Nikolas.B »
Logged

Andrej (Blue Arc)

  • Occasional poster
  • **
  • Karma: 1
  • Offline Offline
  • Gender: Male
  • Posts: 73
    • View Profile
Re: Jak docílit toho, aby se zvuk neopakoval?
« Reply #3 on: March 15, 2010, 04:43:25 PM »

Ještě by mě zajímala jedna věc.. Jak je to u entit..

Každý objekt vo WME ma svoj vlastný skript. Pokiaľ máš vo scéne entitu, priraď tejto entite skript. Keď chceš, aby sa zvuk prehral iba raz, musíš to vyriešiť cez podmienku. Alebo potom je možnosť spraviť to bez podmienky a to tak, že tomuto objektu odoberieš skript. To by som volil v prípade, že v tom skripte už nebude napísané nič iné, len príkaz na prehratie zvuku. Ďalšia možnosť je vypnúť interaktivitu kurzoru s dverami. Vtedy nemusíš dávať žiadnu podmienku, záleží len na Tebe, ako to potrebuješ ;).

Skript s podmienkou bude vyzerať takto:

#include "scripts\base.inc"

global dvere = true;

on "LeftClick"
{
  if(dvere)
  {
    this.PlaySound("SoundName);
    dvere = false;
}

Globálná premenná je použitá preto, ak by si opustil scénu a znova by si sa do nej vrátil, aby keď si už raz klikol na tie dvere, aby sa ten dabing už nikdy neprehral. V opačnom prípade nahradíš global za var.

Quote
Nebo by mě zajímalo jak udělat, když na ty dveře kliknu tak aby se přehrávalo víc zvuků po sobě.. Kliž kliknu po druhé další zvuk,po třetí další zvuk atd.. Mít prostě víc hlášek o těch dveřích.. (tam nejdu.., je to stejně zamčené.., nepotřebuji tam chodit atd..)

// skript, ktorý priradiš dverám
#include "scripts\base.inc"

on "LeftClick"
{
  this.PlayRandomSound();
}

method PlayRandomSound()
{
  Game.Interactive = false;
  var rand = Random(1,5);
  switch(rand)
  {
    case "1":
     this.PlaySound("tam nejdu.waw");
     break;
   case "2":
     this.PlaySound("je to stejně zamčene.wav");
     break;
   case "3":
     this.PlaySound("nepotřebuji tam chodit atd.wav");
     break;
   }
   Game.Interactive = true;
}
Logged

Nikolas.B

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 38
    • View Profile
Re: Jak docílit toho, aby se zvuk neopakoval?
« Reply #4 on: March 15, 2010, 06:07:08 PM »

To je ono, díky moc příteli  ;)
Logged
 

Page created in 0.102 seconds with 20 queries.