[AJUDA] Tempo para ocorrer funcao
#1

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?
Reply
#2

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.
Reply
#3

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

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

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); ?
Reply
#6

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

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?
Reply
#8

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;
}
Reply
#9

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] ?
Reply
#10

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...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)