Settimer Bugando tudo - jose3212 - 01/03/2024
E ai galerinha do fórum beleza?? Estou criando um sisteminha aqui de o jogador quando tomar um tiro ou morrer de alguma maneira ele ficar caido no uns 5 minutos! Só que até que tá funcionando, mas o settimer ta bugado e bugando tudo, já joguei ele na onplayerdeath e onplayerspaw e deu na mesma, e não foi essa primeira vez que isso buga, uma vez fui criar um sistema de o policial matar o jogador procurado ele ir preso automaticamente, funcionou, só que o tempo ficou bugado passando rapido sabe e bugando tudo que tem settimer.
olha o codigo na onplayerdeath
Código: if (killerid != INVALID_PLAYER_ID)
{
new
zone[MAX_ZONE_NAME],
Float:pX,
Float:pY,
Float:pZ,
str[120]
;
GetPlayer2DZone(playerid, zone, MAX_ZONE_NAME);
GetPlayerPos(playerid, pX, pY, pZ);
SetPVarFloat(playerid, "LocalX", pX);
SetPVarFloat(playerid, "LocalY", pY);
SetPVarFloat(playerid, "LocalZ", pZ);
ShowPlayerProgressBar(playerid, Bar_Morto[playerid][0]);
SetPlayerProgressBarValue(playerid, Bar_Morto[playerid][0], S[playerid]);
foreach(Player,i)
{
if(pInfo[i][Prof] == MEDICO)
{
format(str,sizeof(str), "| COPOM | Um(a) jogador(a) está ferido nas localidades de %s! Use /localizar %s(%d)", zone, PlayerName(playerid), playerid);
SendClientMessage(i, COR_MEDICO, str);
}
}
pmorto[playerid] = true;
}
Olha o código da onplayerspawn
Código: if(pmorto[playerid] == true)
{
SetPlayerPos(playerid, GetPVarFloat(playerid, "LocalX"), GetPVarFloat(playerid, "LocalY"), GetPVarFloat(playerid, "LocalZ"));
SetPlayerCameraPos(playerid, GetPVarFloat(playerid, "LocalX"), GetPVarFloat(playerid, "LocalY"), GetPVarFloat(playerid, "LocalZ")-5);
SendClientMessage(playerid, -1, "| MEDICO | Você foi ferido, os paramedicos foram informados deve aguardar o resgate");
GameTextForPlayer(playerid, "Você está ferido", 5000, 6);
ApplyAnimation(playerid, "CRACK", "crckidle2", 4.1, true, true, true, true, 1, 1);
TogglePlayerControllable(playerid, 0);
}
E a public do contador que ta bugando tudo
Código: public ContarMortoTempo(playerid)
{
if(pInfo[playerid][Logado] == true)
{
new str[100];
if(pmorto[playerid] == true)
{
if(S[playerid] < 100)
{
TempoM[playerid] = SetTimerEx("ContarMortoTempo", 1000, false, "d", playerid);
S[playerid]++;
if(S[playerid] >= 100)
{
SendClientMessage(playerid, -1, "| SE FU | Vixi! O resgate não veio te ajudar.");
KillTimer(TempoM[playerid]);
PlayerTextDrawHide(playerid, ContarMorto[playerid][0]);
ClearAnimations(playerid);
S[playerid] = 0;
}
}
PlayerTextDrawShow(playerid, ContarMorto[playerid][0]);
format(str,sizeof(str), "Aguardando resgate %02d%", S[playerid]);
PlayerTextDrawSetString(playerid, ContarMorto[playerid][0], str);
ShowPlayerProgressBar(playerid, Bar_Morto[playerid][0]);
SetPlayerProgressBarMaxValue(playerid, Bar_Morto[playerid][0], S[playerid]);
ApplyAnimation(playerid, "CRACK", "crckidle2", 4.1, true, true, true, true, 1, 1);
}
}
return 1;
}
Tá fd galera.
RE: Settimer Bugando tudo - strelo - 04/03/2024
Aqui está um exemplo de como você pode ajustar o código:
Código: // Na sua função onPlayerDeath, inicie o timer uma vez, se necessário.
if (killerid != INVALID_PLAYER_ID) {
// Seu código existente aqui...
// Certifique-se de que o timer só seja iniciado se ainda não estiver rodando.
if (TempoM[playerid] == 0) {
TempoM[playerid] = SetTimerEx("ContarMortoTempo", 1000, true, "d", playerid); // true para repetir
}
}
// Modifique a função ContarMortoTempo para não reiniciar o timer
public ContarMortoTempo(playerid) {
if (pInfo[playerid][Logado] == true && pmorto[playerid] == true) {
S[playerid]++;
if (S[playerid] >= 100) {
// Seu código para tratar o jogador após o tempo terminar...
KillTimer(TempoM[playerid]);
TempoM[playerid] = 0; // Resetar o timer para indicar que não está mais ativo.
pmorto[playerid] = false; // Resetar o estado de morte.
} else {
// Atualize a UI do jogador aqui...
}
}
return 1;
}
// Na sua função onPlayerSpawn, certifique-se de cancelar o timer se ele estiver ativo.
if (pmorto[playerid] == true) {
if (TempoM[playerid] != 0) {
KillTimer(TempoM[playerid]);
TempoM[playerid] = 0;
}
// Seu código existente aqui...
}
RE: Settimer Bugando tudo - jose3212 - 09/03/2024
Valeu manin!
|