SA-MP Forums Archive
[Ajuda] Sу aparece pro ID 0 - 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] Sу aparece pro ID 0 (/showthread.php?tid=547423)



Sу aparece pro ID 0 - PetterAdriano - 22.11.2014

Bom pessoal fiz um contador de segundos em textdraw, exemplo: Quando o jogador for preso irб aparecer o tempo em textdraw na tela dele, mais o problema й que o tempo em textdraw sу aparece se o jogador for id 0, se o jogador for o ID 1 ou acima de 1, o tempo em textdraw nгo aparece, sу aparece pro id 0 olhem.

pawn Код:
// incio do GM
new TimerCadeia;

// Ongamemodeinit
TimerCadeia = SetTimer("Terminou_Cadeia", 1000, 1);

//Calback
forward Terminou_Cadeia(playerid);
public Terminou_Cadeia(playerid)
{
    DadosJogador[playerid][TEMPO_PRESO]--;
    if(DadosJogador[playerid][JOGADOR_PRESO] == 1 )
    {
            TextDrawShowForPlayer(playerid, Tempo_Hora_Roubo[playerid]);
            format(String, sizeof(String), "~g~~h~~h~Tempo: ~r~~h~~h~%i",DadosJogador[playerid][TEMPO_PRESO]);
            TextDrawSetString(Tempo_Hora_Roubo[playerid], String);
    }
    else
    {
        TextDrawHideForPlayer(playerid, Tempo_Hora_Roubo[playerid]);
    }
       
    if(DadosJogador[playerid][JOGADOR_PRESO] == 1 && DadosJogador[playerid][LOCAL_PRESO] == 1 && DadosJogador[playerid][TEMPO_PRESO] == 0)
    {
        TextDrawHideForPlayer(playerid, Tempo_Hora_Roubo[playerid]);
        SetPlayerInterior(playerid, 0);
        SetPlayerPos(playerid, 1546.2529, -1675.5369, 13.5620);
        SetPlayerFacingAngle(playerid, 88.3610);
        DadosJogador[playerid][JOGADOR_PRESO] = 0;
        DadosJogador[playerid][LOCAL_PRESO] = 0;
        DadosJogador[playerid][TEMPO_PRESO] = 0;
        SkinsJogadores(playerid);
        GameTextForPlayer(playerid, "Liberdade canto !!!", 2500, 3);
    }
    return true;
}



Re: Sу aparece pro ID 0 - n0minal - 22.11.2014

Quote:

//no topo do gamemode:

new TimerCadeia[MAX_PLAYERS];

//Na public OnPlayerConnect

TimerCadeia[playerid] = SetTimerEx("Terminou_Cadeia", 1000, true, "i", playerid);

//Na public OnPlayerDisconnect

KillTimer(TimerCadeia[playerid] );
Precisa ser SetTimerEx, e precisa estar em OnPlayerConnect como eu fiz no exemplo acima. Vocк nгo pode usar um timer que vai ser processado para cada player numa funзгo onde nгo й chamada por um player, ou seja, vocк nгo pode usar isso na OnGameModeInit. O SetTimerEx serve para dar uma identidade particular ao timer, para nгo ser confundido com outras variбveis externas.


Re: Sу aparece pro ID 0 - PetterAdriano - 22.11.2014

Quote:
Originally Posted by n0minal
Посмотреть сообщение
Precisa ser SetTimerEx("Terminou_Cadeia", 1000, true, "i", playerid);

Precisa estar em OnPlayerConnect tambйm.
pq precisa estar em onplayerconnect ?


Re: Sу aparece pro ID 0 - ipsLuan - 22.11.2014

Tenta isto:

pawn Код:
TimerCadeia = SetTimerEx("Terminou_Cadeia", 1000, 1, "i", playerid);
Nгo й preciso estб em OnPlayerConnect mas й sempre melhor, pois logo quando o jogador entra vai ser executada a callback.


Re: Sу aparece pro ID 0 - [BOPE]Seu._.Madruga - 23.11.2014

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Tenta isto:

pawn Код:
TimerCadeia = SetTimerEx("Terminou_Cadeia", 1000, 1, "i", playerid);
Nгo й preciso estб em OnPlayerConnect mas й sempre melhor, pois logo quando o jogador entra vai ser executada a callback.
Meu conselho jб й diferente, prefiro no OnPlayerSpawn, pois se estiver no OnPlayerConnect esse o player obter um sistema de login. Sу do player estar conectado sem se logar jб irб estar funcionando a callback ou seja. Jб irб estar descontando o tempo preso.

Usa o sistema do n0minal e coloca no OnPlayerSpawn


Re: Sу aparece pro ID 0 - zSuYaNw - 23.11.2014

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Meu conselho jб й diferente, prefiro no OnPlayerSpawn, pois se estiver no OnPlayerConnect esse o player obter um sistema de login. Sу do player estar conectado sem se logar jб irб estar funcionando a callback ou seja. Jб irб estar descontando o tempo preso.

Usa o sistema do n0minal e coloca no OnPlayerSpawn
Sim, correto seria colocar no login.
Pois no OnPlayerSpawn serб chamado mais de uma vez e irб criar vбrios timers.. ou reformular a callback.


OU
vocк pode deixar o SetTimer no OnGameModeInit e trocar a callback..


pawn Код:
forward Terminou_Cadeia(); public Terminou_Cadeia()
{

    for(new i, e = GetMaxPlayers(); i != e; ++i){
   
       
        if(DadosJogador[i][JOGADOR_PRESO] == 1 )
        {
                DadosJogador[i][TEMPO_PRESO]--;
                TextDrawShowForPlayer(i, Tempo_Hora_Roubo[i]);
                format(String, sizeof(String), "~g~~h~~h~Tempo: ~r~~h~~h~%i",DadosJogador[i][TEMPO_PRESO]);
                TextDrawSetString(Tempo_Hora_Roubo[i], String);
        }
        else
        {
            TextDrawHideForPlayer(i, Tempo_Hora_Roubo[i]);
        }

        if(DadosJogador[i][JOGADOR_PRESO] == 1 && DadosJogador[i][LOCAL_PRESO] == 1 && DadosJogador[i][TEMPO_PRESO] == 0)
        {
            TextDrawHideForPlayer(i, Tempo_Hora_Roubo[i]);
            SetPlayerInterior(i, 0);
            SetPlayerPos(i, 1546.2529, -1675.5369, 13.5620);
            SetPlayerFacingAngle(i, 88.3610);
            DadosJogador[i][JOGADOR_PRESO] = 0;
            DadosJogador[i][LOCAL_PRESO] = 0;
            DadosJogador[i][TEMPO_PRESO] = 0;
            SkinsJogadores(i);
            GameTextForPlayer(i, "Liberdade canto !!!", 2500, 3);
        }
    }
    return true;
}



Re: Sу aparece pro ID 0 - PetterAdriano - 23.11.2014

Quote:
Originally Posted by zSuYaNw
Посмотреть сообщение
Sim, correto seria colocar no login.
Pois no OnPlayerSpawn serб chamado mais de uma vez e irб criar vбrios timers.. ou reformular a callback.


OU
vocк pode deixar o SetTimer no OnGameModeInit e trocar a callback..


pawn Код:
forward Terminou_Cadeia(); public Terminou_Cadeia()
{

    for(new i, e = GetMaxPlayers(); i != e; ++i){
   
       
        if(DadosJogador[i][JOGADOR_PRESO] == 1 )
        {
                DadosJogador[i][TEMPO_PRESO]--;
                TextDrawShowForPlayer(i, Tempo_Hora_Roubo[i]);
                format(String, sizeof(String), "~g~~h~~h~Tempo: ~r~~h~~h~%i",DadosJogador[i][TEMPO_PRESO]);
                TextDrawSetString(Tempo_Hora_Roubo[i], String);
        }
        else
        {
            TextDrawHideForPlayer(i, Tempo_Hora_Roubo[i]);
        }

        if(DadosJogador[i][JOGADOR_PRESO] == 1 && DadosJogador[i][LOCAL_PRESO] == 1 && DadosJogador[i][TEMPO_PRESO] == 0)
        {
            TextDrawHideForPlayer(i, Tempo_Hora_Roubo[i]);
            SetPlayerInterior(i, 0);
            SetPlayerPos(i, 1546.2529, -1675.5369, 13.5620);
            SetPlayerFacingAngle(i, 88.3610);
            DadosJogador[i][JOGADOR_PRESO] = 0;
            DadosJogador[i][LOCAL_PRESO] = 0;
            DadosJogador[i][TEMPO_PRESO] = 0;
            SkinsJogadores(i);
            GameTextForPlayer(i, "Liberdade canto !!!", 2500, 3);
        }
    }
    return true;
}
Isso que eu pensei, jб tinha deixado no onplayerlogin !!!, vlw pessoal.


Re: Sу aparece pro ID 0 - zSuYaNw - 23.11.2014

Quote:
Originally Posted by PetterAdriano
Посмотреть сообщение
Isso que eu pensei, jб tinha deixado no onplayerlogin !!!, vlw pessoal.
Sim, colocou corretamente.. mas presta atenзгo aonde coloca os settimers!