if (IsKeyPressed(368)=1 StopMusic ();

Started by Candle, Fri 23/04/2004 01:38:17

Previous topic - Next topic

Candle

I want to have F10 key when pressed all music will stop . I put in this .
Quote// script for room: Player enters screen (after fadein)
if (IsKeyPressed(368)=1 StopMusic ();
 
}
But got this and not sure what it means ?
QuoteCompile Error
---------------------------
There was an error compiling your script. The problem was:

In: 'Main script'

Error (line 10): end of input reached in middle of expression

What do I have wrong ?

strazer

if (IsKeyPressed(368)==1) StopMusic ();

The conditional must always be enclosed by brackets.
And you have to use two == when doing a comparison.
You use one = to assign a value.

Candle

#2
Thank you , man there is so much to learn  and i can't retain most of it .

EDIT
well no errors but it didn't stop the music ?

strazer


Gilbert

#4
I see that you put it in the player enters screen after fade-in, that way it will ONLY work if the key is kept pressed during the room change. If you want it to effect whenever the player pressed the key, put it into the repeatedly execute function.

Alternatively (not many people know this), you can actually create a function in the room:
function on_key_press(int keycode) {
  if (keycode==368) StopMusic();
}

Right, it's the same function name as the one in the global script, in that way, if a key is pressed, the engine will parse the room function first, followed by the global one.

Candle

Yes i put it // script for room: Player enters screen (after fadein) so all change it .. lol
Thanks guys .
I know  a lot of people like to be able to turn the music off so thats why I want to do this .

Candle

Can this be done in the main global script file so they just have to do it  one time and no music ?

strazer

Yes, just put this in your global on_key_press function:

if (keycode == 368) StopMusic();

Candle

Where would I add it in all that code . I put it in the end and had a } at he end of it but it didn't like that . lol

strazer

Assuming you started off the default game, your on_key_press function should look something like

function on_key_press(int keycode) {
 // called when a key is pressed. keycode holds the key's ASCII code
 if (IsGamePaused() == 1) keycode=0;  // game paused, so don't react to keypresses
 if (keycode==17)  QuitGame(1);   // Ctrl-Q
 if (keycode==363) SaveGameDialog();   // F5
 if (keycode==365) RestoreGameDialog();  // F7
 if (keycode==367) RestartGame();  // F9
 if (keycode == 368) StopMusic();  // F10
 if (keycode==434) SaveScreenShot("scrnshot.bmp");  // F12
 if (keycode==9)   show_inventory_window();  // Tab, show inventory

 if (keycode==19)  Debug(0,0);  // Ctrl-S, give all inventory
 if (keycode==22)  Debug(1,0);  // Ctrl-V, version
 if (keycode==1)   Debug(2,0);  // Ctrl-A, show walkable areas
 if (keycode==24)  Debug(3,0);  // Ctrl-X, teleport to room
}

Put the line where I marked it red.

Candle

Thank you strazer , thats what i needed to know . it works .
Thanks again . now I have to write it down or all forget it . lol

JohnnieGeeee

Hi I see the above works very well. Can I impose on yhis topic and ask how one would resume the music.

I can only assume that I may well get a RTFM (Read the Friggin Manual) response and in which case I will I promise  ;D

Johnnie

strazer

#12
Hm, I would probably do it this way (for MP3/OGG music files):
Global script

int oldmusictrack=1; // stores number of current music track
int oldmusicpos=0; // stores position in current music track

Global on_key_press (see above)

  if (keycode == 368) { // F10
   if (IsMusicPlaying()) { // music is on
      oldmusictrack = GetCurrentMusic(); // save number of current music track
      oldmusicpos = GetMP3PosMillis(); // save current position in music track
      StopMusic(); // stop current music track
   else { // music is off
      PlayMusic(oldmusictrack); // re-play previous music track
      SeekMP3PosMillis(oldmusicpos); // jump to position where it left off
   }
  }

EDIT: Changed int oldmusictrack=0 to int oldmusictrack=1 so that when the game starts without music playing and the user presses F10, the first music track starts playing.

P.S.: Glad I could help. :)

JohnnieGeeee

:o - Now that's a quick response.

Much appreciation strazer. I will sure give it a go l8r on.

Wow this board is a welcome site!!!!!   ;D

SMF spam blocked by CleanTalk