SA-MP Forums Archive
[AJUDA] Tempo para ocorrer funcao - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [AJUDA] Tempo para ocorrer funcao (/showthread.php?tid=286700)



[AJUDA] Tempo para ocorrer funcao - Mattos - 30.09.2011

Pessoal eu tenho a seguinte coisa:

pawn Код:
public OnPlayerMarkMap(playerid, MarkID, Float:X, Float:Y, Float:Z)
{

    SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
    CreateExplosion(X, Y, Z, 7, 10.0);
    return 1;
}
Sу que eu queria que a explosao fosse criada apуs 5 segundos...

Ae eu fiz...

pawn Код:
public OnPlayerMarkMap(playerid, MarkID, Float:X, Float:Y, Float:Z)
{

    SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
     SetTimer("TimeToExplosion", 5000, 0);
    return 1;
}

forward TimeToExplosion();
public TimeToExplosion()
{
CreateExplosion(X, Y, Z, 7, 10.0);
}
Porem ele da erro no public TimeToExplosion pq o X Y e Z nao estao definidos... Eles tao definidos no public OnPlayerMarkMap... Entao o que eu faзo? Teria uma forma pra usar GetTickCount para realizar a explosao?


Re: [AJUDA] Tempo para ocorrer funcao - Pharrel - 30.09.2011

pawn Код:
new Float:mapNewX[MAXPLAYERS], Float:mapNewY[MAXPLAYERS], Float:mapNewZ[MAXPLAYERS];
public OnPlayerMarkMap(playerid, MarkID, Float:X, Float:Y, Float:Z)
{
    mapNewX[playerid] = X, mapNewY[playerid] = Y, mapNewZ[playerid] = Z;
    SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
    SetTimerEx("TimeToExplosion", 5000, false, "i", playerid);
    return 1;
}

forward TimeToExplosion(playerid);
public TimeToExplosion(playerid)
{
    CreateExplosion(mapNewX[playerid],mapNewY[playerid],mapNewZ[playerid], 7, 10.0);
    return 1;
}
Editado pq tinha erro antes.


Re: [AJUDA] Tempo para ocorrer funcao - Mattos - 30.09.2011

Vocк mudou a minha funcao pharrel... a explosao й pra ocorrer em X, Y, Z


Re: [AJUDA] Tempo para ocorrer funcao - Pharrel - 30.09.2011

Й pra funcionar do jeito q ta agora... editei pq tinha erro antes.


Re: [AJUDA] Tempo para ocorrer funcao - Mattos - 30.09.2011

Outra coisa nao pode ser

SetTimerEx("TimeToExplosion", 5000, false, "i", playerid);

se nao vai explodir sу pra quele player... nao posso usar simplesmente

SetTimer("TimeToExplosion", 5000, 0); ?


Re: [AJUDA] Tempo para ocorrer funcao - Pharrel - 30.09.2011

nгo, o settimerex й sу pra public receber o ID do player e checar o newMap?[playerid], a explosao vai ocorrer pra todos


Re: [AJUDA] Tempo para ocorrer funcao - Mattos - 30.09.2011

eu testei com SetTimer("TimeToExplosion", 5000, 0); e deu certo...

Agora posso lhe perguntar outra coisa...

Como eu faria para que em um Range tal do ponto X Y Z (onde ocorre a explosao), durante esses 5 segundos toque o som PlayerPlaySound(playerid,1057,0.0,0.0,0.0); a cada meio segundo (ou seja ele tocara 10 vezes) para as pessoas que estivessem dentro desse range?


Re: [AJUDA] Tempo para ocorrer funcao - Pharrel - 30.09.2011

SetTimer("TimeToExplosion", 5000, 0); desse jeito vai explodir na coordenada q o player id 0 clicou no mapa por ultimo, se o player id 2 clicar no mapa n vai explodir onde ele colocou, vc tem q por como eu deixei no codigo pra funcionar...

pawn Код:
new TimerBombRange[MAXPLAYERS]//com suas news
TimerBombRange[playerid] = SetTimerEx("CheckBombRange", 500, true, "i", playerid);//em baixo do SetTimerEx da funзгo q clica no mapa
KillTimer(TimerBombRange[playerid]);//na funзгo que cria a explosгo.

forward CheckBombRange(playerid);
public CheckBombRange(playerid)
{
    for(new i=0; i<MAXPLAYERS; i++)
    {
        if(IsPlayerInRangeOfPoint(i, DISTANCIA DO PONTO, newMapX[playerid], newMapY[playerid], newMapZ[playerid]))
        {
            PlayerPlaySound(i,1057,0.0,0.0,0.0);
        }
    }
    return 1;
}



Re: [AJUDA] Tempo para ocorrer funcao - Shadoww5 - 30.09.2011

Quote:
Originally Posted by Mateuscm
Посмотреть сообщение
Pessoal eu tenho a seguinte coisa:

pawn Код:
public OnPlayerMarkMap(playerid, MarkID, Float:X, Float:Y, Float:Z)
{

    SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
    CreateExplosion(X, Y, Z, 7, 10.0);
    return 1;
}
Sу que eu queria que a explosao fosse criada apуs 5 segundos...

Ae eu fiz...

pawn Код:
public OnPlayerMarkMap(playerid, MarkID, Float:X, Float:Y, Float:Z)
{

    SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
     SetTimer("TimeToExplosion", 5000, 0);
    return 1;
}

forward TimeToExplosion();
public TimeToExplosion()
{
CreateExplosion(X, Y, Z, 7, 10.0);
}
Porem ele da erro no public TimeToExplosion pq o X Y e Z nao estao definidos... Eles tao definidos no public OnPlayerMarkMap... Entao o que eu faзo? Teria uma forma pra usar GetTickCount para realizar a explosao?
PHP код:
public OnPlayerMarkMap(playeridMarkIDFloat:XFloat:YFloat:Z)
{
    
SetPlayerPos(playerid,mapLastX[playerid],mapLastY[playerid],mapLastZ[playerid]);
    
SetTimerEx("TimeToExplosion"50000"fff"XYZ);
    return 
1;
}
forward TimeToExplosion(Float:XFloat:YFloat:Z);
public 
TimeToExplosion(Float:XFloat:YFloat:Z) return CreateExplosion(XYZ710.0); 
Quote:
Originally Posted by Mateuscm
Посмотреть сообщение
eu testei com SetTimer("TimeToExplosion", 5000, 0); e deu certo...

Agora posso lhe perguntar outra coisa...

Como eu faria para que em um Range tal do ponto X Y Z (onde ocorre a explosao), durante esses 5 segundos toque o som PlayerPlaySound(playerid,1057,0.0,0.0,0.0); a cada meio segundo (ou seja ele tocara 10 vezes) para as pessoas que estivessem dentro desse range?
1 - Qual o ID do som ?

2 - Ele deverб ser tocado na ponto X, Y, Z ou mapLastX[playerid], mapLastY[playerid], mapLastZ[playerid] ?


Re: [AJUDA] Tempo para ocorrer funcao - Mattos - 30.09.2011

1052... e deverб ser colocado no X Y Z (que onde vai explodir)... ae ele deve tocar a cada meio segundo a cada 5 segundos (que й o tempo que a "bomba" demorarб a explodir...)... Ou seja, quem tiver no range desse ponto (nao sei qual range... mais algo em torno do tamanho de uma piscina...) deverб escutar esses 10 bips antes da bomba chegar, para saber que ta vindo uma bomba... igual quando vc ta em um aviao e um hydra atira em vc...