[Ayuda] PlayerPlaySound
#1

Buenas , bien el problema que tengo es que cuando asigno un PlayerPlaySound a un timer, o al pickup suena repetidas veces, lo que yo quiero saber es como hacer para que no suene repetidas veces. Lo que he intentando hacer es hacer el PlayerPlaySound independiente de lo otro, un ejemplo claro seria que al asignar un rango con IsPlayerInRangeOfPoint o PlayerToPoint si una persona entrara a ese rango el sonido no sonara repetitivas veces, nada mas la vez que entro, el sonido es el ID 1139, que por cierto es como un pitido corto que no dura mas de 1 segundo, como el sonido del slap, que cuando entre suene una vez, y no vuelva a sonar hasta que salga del rango y vuelva a entrar, algo como esto:

pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 0.4, 1529.6,-1691.2,13.3)) // Esta seria la posiciуn en donde quiero que suene.
{
    PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0); // El sonido
    return 1;
}
Lo que harнa es que cuando una persona se mete al rango sonarнa el PlayerPlaySound en las posiciones que yo coloque, sin que el sonido se repita porque para detener el sonido tendrнa que alejarme, xD!, eso es lo que no quiero que me sucede, el problema es que no se como colocarlo, ni donde para que funcione como yo digo xd...

Gracias de antemano seсores/as, saludos
Reply
#2

fijate asi:
pawn Код:
new EnPos[MAX_PLAYERS];//debajo de los includes.
if(IsPlayerInRangeOfPoint(playerid, 0.4, 1529.6,-1691.2,13.3) && !EnPos[playerid])
{
    PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0); // El sonido
    EnPos[playerid] = 1;
}else EnPos[playerid] = 0;
Reply
#3

Si funciona y todo bien, pero cuando lo introduzco al timer para activar la funciуn del sonido suena repetidas veces , si podrнas explicarme donde colocarlo u otra forma de colocarlo para que no necesite de un timer y que de esa forma suene sin repetirse, te lo agradecerнa inmensamente

Gracias por ayudarme, Saludos.
Reply
#4

estas poniendo la declaracion de la variable dentro del timer
Reply
#5

Uhm, que raro estimado lo intente y se repite, no entiendo bien, їpodrнas colocar un ejemplo de como seria?, gracias de antemano y disculpa las molestias, gracias por tu ayuda.

Saludos.
Reply
#6

pawn Код:
new EnPos[MAX_PLAYERS];

forward Timer(playerid);
public Timer(playerid)
{
    if(IsPlayerInRangeOfPoint(playerid, 0.4, 1529.6,-1691.2,13.3) && !EnPos[playerid])
    {
        PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0); // El sonido
        EnPos[playerid] = 1;
    }else EnPos[playerid] = 0;
}
Reply
#7

Se repite de igual forma, :S lo coloco con SetTimerEx("Timer", 1000, false, "i",playerid); o SetTimerEx("Timer", 1000, true, "i",playerid); y se repite de igual forma, al igual que le cambio los ms pero tambiйn, no entiendo que sucede, lo mismo sucede con el textdraw que coloco adentro del timer, aparece, desaparece, aparece, desaparece constantemente, xd, no estoy usando los pickup normal, si no uno como que dinбmico que dice PickupGametexts(); en el timer global esta este el SetTimer("PickupGametexts", 1000, 1); y es en ese timer que introdusco lo que son los pickup en donde quiero que suenen y aparezcan los textdraw, el sonido se repite y el textdraw como que aparece y desaparece a cada rato, xd

Saludos
Reply
#8

pawn Код:
new EnPos[MAX_PLAYERS];

forward Timer(playerid);
public Timer(playerid)
{
    if(EnPos[playerid] == 0)
    {
        if(IsPlayerInRangeOfPoint(playerid, 0.4, 1529.6,-1691.2,13.3))
        {
            PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0); // El sonido
            EnPos[playerid] = 1;
        } else EnPos[playerid] = 0;
    }
}
Asi no se repite.. Saludos!
Reply
#9

Muchisimas gracias a los dos me sirvieron de mucha ayuda, gracias en serio, con respecto al problema con ayuda de ustedes lo solucione, me dieron la idea de hacer un bool, y sirvio xd, gracias!

Saludos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)