[Ajuda] Double Mensagem
#1

Fiz um sistema de hospital,porйm quando o player morre ele recebe 2x as mensagens:
Код:
Vocк nгo possui um plano de saъde,aguarde 25 segundos.
Vocк recebeu alta do Hospital, e estб completamente recuperado.
public SetPlayerSpawn(playerid)
pawn Код:
if(PlayerInfo[playerid][pHospital] == 1)
        {
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 10);
        TogglePlayerControllable(playerid, 0);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        rand = random(sizeof(HospitalizadoSpawns));
        SetPlayerPos(playerid, HospitalizadoSpawns[rand][0], HospitalizadoSpawns[rand][1], HospitalizadoSpawns[rand][2]);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        if(PlayerInfo[playerid][pPlano] == 3 || PlayerInfo[playerid][pSocio] == 1)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 3 de saъde,aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 2)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 2 de saъde,aguarde 15 segundos.");
        SetTimer("Tirarhospital", 15000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 1 || PlayerInfo[playerid][pVIP] >= 1)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 1 de saъde,aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 0)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк nгo possui um plano de saъde,aguarde 25 segundos.");
        SetTimer("Tirarhospital", 25000, false);
        }
         return true;
      }
pawn Код:
forward Tirarhopsital(playerid);
public Tirarhopsital(playerid)
{
    PlayerInfo[playerid][pHospital] = 0;
    TogglePlayerControllable(playerid, 1);
    ClearAnimations(playerid, 1);
    SetPlayerSpawn(playerid);
    SendClientMessage(playerid, -1, "Vocк recebeu alta do Hospital, e estб completamente recuperado.");
    return 1;
}
O que poderia estar causando isso?
Reply
#2

Ele envia uma mensagem quando vocк morre e depois ele tem que esperar, um tempo para dar respawn, e quando ele da respawn, o server envia a mensagem que estб na callback chamada.
Reply
#3

Quando ele morre nгo envia nenhuma mensagem,apenas й setado Playerinfo[playerid][pHospital] = 1;
Reply
#4

Ele envia, ele verifica qual valor estб setado na variбvel Plano e pVip.
pawn Код:
if(PlayerInfo[playerid][pPlano] == 3 || PlayerInfo[playerid][pSocio] == 1)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 3 de saъde,aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 2)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 2 de saъde,aguarde 15 segundos.");
        SetTimer("Tirarhospital", 15000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 1 || PlayerInfo[playerid][pVIP] >= 1)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 1 de saъde,aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        }
        else if(PlayerInfo[playerid][pPlano] == 0)
        {
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк nгo possui um plano de saъde,aguarde 25 segundos.");
        SetTimer("Tirarhospital", 25000, false);
Mesmo se tiver setado 0 ele vai enviar a mensagem.
Reply
#5

coloca um return no final de cada condiзгo que nao ficara mais a mensagem duplicada.
Reply
#6

@PT
Nгo funcionou colocar return no final de cada condiзгo

@MultiKill
Ainda nгo consegui entender

Fiz umas loucuras e nгo deu ainda.
pawn Код:
if(PlayerInfo[playerid][pHospital] == 1)
        {
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 10);
        TogglePlayerControllable(playerid, 0);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        rand = random(sizeof(HospitalizadoSpawns));
        SetPlayerPos(playerid, HospitalizadoSpawns[rand][0], HospitalizadoSpawns[rand][1], HospitalizadoSpawns[rand][2]);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        if(PlayerInfo[playerid][pSocio] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui o plano SOCIO aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        return true;
        }
        if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pPlano] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui o plano VIP aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 0){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк nгo possui nenhum plano,aguarde 25 segundos.");
        SetTimer("Tirarhospital", 25000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] >= 1){
        PlayerInfo[playerid][pHnumero] -= 1;
        if(PlayerInfo[playerid][pPlano] == 3){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 3 de saъde,aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 2){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 2 de saъde,aguarde 15 segundos.");
        SetTimer("Tirarhospital", 15000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 1 de saъde,aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        return true;
        }
        return true;
       }
         return true;
      }
Reply
#7

Desculpe o double post,mas alguйm pode me ajudar?
Reply
#8

SA:MP possui um bug que faz com que alguns jogadores morram ou sofram spawn 2 ou mais vezes.

Pra corrigir, basta criar uma variбvel booleana e verificar se й a primeira vez que o jogador morreu.
Caso sim, o cуdigo continua. Caso nгo, return.
Reply
#9

Vini tentei mais nгo deu certo,agora ele nгo chama mais o settimer,so envia as mensagens,olha como ficou.
Topo
pawn Код:
new bool:mhospital[MAX_PLAYERS];
public OnPlayerDeath
pawn Код:
mhospital[playerid] = true;
PlayerInfo[playerid][pHospital] = 1;
public SetPlayerSpawn(playerid)
pawn Код:
if(mhospital[playerid]){
        if(PlayerInfo[playerid][pHospital] == 1)
        {
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 10);
        TogglePlayerControllable(playerid, 0);
        rand = random(sizeof(HospitalizadoSpawns));
        SetPlayerPos(playerid, HospitalizadoSpawns[rand][0], HospitalizadoSpawns[rand][1], HospitalizadoSpawns[rand][2]);
        ClearAnimations(playerid);
        ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
        if(PlayerInfo[playerid][pSocio] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui o plano SOCIO aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        return true;
        }
        if(PlayerInfo[playerid][pVIP] >= 1 && PlayerInfo[playerid][pPlano] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui o plano VIP aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 0){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк nгo possui nenhum plano,aguarde 25 segundos.");
        SetTimer("Tirarhospital", 25000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] >= 1){
        PlayerInfo[playerid][pHnumero] -= 1;
        if(PlayerInfo[playerid][pPlano] == 3){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 3 de saъde,aguarde 10 segundos.");
        SetTimer("Tirarhospital", 10000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 2){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 2 de saъde,aguarde 15 segundos.");
        SetTimer("Tirarhospital", 15000, false);
        return true;
        }
        if(PlayerInfo[playerid][pPlano] == 1){
        SendClientMessage(playerid, COLOR_GRAD2, "Vocк possui plano 1 de saъde,aguarde 20 segundos.");
        SetTimer("Tirarhospital", 20000, false);
        return true;
        }
       }
       }
         return true;
      }
Reply
#10

pawn Код:
if(mhospital[playerid] == true){
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)