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!