Firstly, you will need to create a script, called like on_p2p (If you already have a p2p script, ignore this.)
Next, you will go to your GMS object's create event, and under gms_settings(), put the p2p script setting line. It should look something like this:
gms_init(GMS);
gms_settings(true, 1, objPlayer, objOtherPlayer);
gms_script_set_p2p(on_p2p);
So, that script is set. Now you will need to actually set up this p2p script.
Here was my approach:
///on_p2p(id, sender, list);
var ID = argument0;
var sender = argument1;
var dslist = argument2;
switch(ID) {
case P2P_SOUND: // This could be any number between 0-255, or a macro.
var sound = ds_list_find_value(dslist, 0); // The sound
audio_play_sound(sound, 0, false);
break;
}
Lastly, you just send the p2p message anywhere you want to either a certain player ID, or all playerIDs
gms_p2p_send(P2P_SOUND, player_id, sound to play);
Replies (3)
Last message on 13 Dec 2017
Size43
(Administrator)
on
12 Dec 2017, 12:20:16
The variable might be changing back to -1 too quickly, so your code never picks it up.
A better approach might be using the P2P messages. They allow you to send a few values to another player. P2P messages are guaranteed to arrive, so the sound will always play.
For example:
// p2p_play_sound is a macro/constant defined with a value between 0-255
gms_p2p_send(p2p_play_sound, some_player_id, sound_you_want_to_play)
// scr_p2p_received
// set this script using gms_script_set_p2p(scr_p2p_received) after gms_settings
var p2p_id = argument0, sender = argument1, values = argument2;
if p2p_id == p2p_play_sound
{
audio_play_sound(ds_list_find_value(values, 0), 0, false)
}
Ytsim
(Topicstarter)
on
12 Dec 2017, 13:38:11
Haha, yeah I just recently got into the p2p messaging system like yesterday, this was before I knew about that. Really neat system in all honesty.
Size43
(Administrator)
on
13 Dec 2017, 11:34:19
Thanks!