[Problema]AFK&BACK.
#1

Hola gente!
Tengo un problema aca...

Agregue a mi TDM los comandos /afk y /back, les dejo el cуdigo...
Ah, mi problema es que me salen los mensajes cruzados, y el /back lo puedo usar 10 millones de veces si quiero xD.

pawn Код:
if(strcmp("/afk", cmdtext, true) == 0)
        {
            if(AFK[playerid] == 1)
                {
                    return SendClientMessage(playerid, COLOR_YELLOW, "Debes esperar 5 minutos para usar nuevamente /AFK!");
                }
            else if(AFK2[playerid] == 1)
                {
                    return SendClientMessage(playerid, COLOR_YELLOW, "Ya estбs AFK.");
                }
            else
                {
                    new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME];
                GetPlayerName(playerid, pname, sizeof(pname));
                format(string, sizeof(string), "%s esta /AFK", pname);
                SendClientMessageToAll(COLOR_YELLOW, string);
                    IsPlayerConnected(playerid);
                    SetPlayerVirtualWorld(playerid, 15);
                    TogglePlayerControllable(playerid, 0);
                    AFK[playerid] = 1;
                    AFK2[playerid] = 1;
                }
            return 1;
        }

pawn Код:
if(strcmp("/back", cmdtext, true) == 0)
      {
        AFK2[playerid] = 0;
        if(AFK[playerid] == 0)
            {
                SendClientMessage(playerid, COLOR_YELLOW, "No estas /AFK!");
                return 1;
            }
        else
            {
                    new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME];
                    GetPlayerName(playerid, pname, sizeof(pname));
                    format(string, sizeof(string), "%s esta de vuelta (/back)", pname);
                SendClientMessageToAll(COLOR_YELLOW, string);
                IsPlayerConnected(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("AFK1", 300000, false, "i", playerid);
            }
        return 1;
        }
Acб el Timer...
pawn Код:
public AFK1(playerid)
{
    AFK[playerid]=0;
    SendClientMessage(playerid, COLOR_YELLOW, "Ya puedas usar nuevamente el comando /afk!");
    return 1;
}
Desde ya, Gracias!
Reply
#2

mmm...por lo que veo has confundido en el comando /back esto:

pawn Код:
AFK2[playerid] = 0;
        if(AFK[playerid] == 0)
Ya que veo que AFK, es el timer que ve cuanto ahi que esperar para volver a ponerlo y AFK2 mira si estas AFK o no.

Cambia tu codigo de /back por este:

pawn Код:
if(strcmp("/back", cmdtext, true) == 0)
      {
        AFK[playerid] = 0;
        if(AFK2[playerid] == 0)
            {
                SendClientMessage(playerid, COLOR_YELLOW, "No estas /AFK!");
                return 1;
            }
        else
            {
                    new pname[MAX_PLAYER_NAME], string[22 + MAX_PLAYER_NAME];
                    GetPlayerName(playerid, pname, sizeof(pname));
                    format(string, sizeof(string), "%s esta de vuelta (/back)", pname);
                SendClientMessageToAll(COLOR_YELLOW, string);
                IsPlayerConnected(playerid);
                SetPlayerVirtualWorld(playerid, 0);
                TogglePlayerControllable(playerid, 1);
                SetTimerEx("AFK1", 300000, false, "i", playerid);
            }
        return 1;
        }
Dime si te funciono
Reply
#3

Si, funciono bien, gracias !

Ahopra ntengo otro problema aca...

pawn Код:
public OnPlayerSpawn(playerid)
{
        if(DEAD[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 0);
                TextDrawShowForPlayer(playerid, lbt);
                TextDrawShowForPlayer(playerid, lbb);
                SendClientMessage(playerid, COLOR_GREEN, "Te podras mover en 5 Segundos!");
                SetTimer("Muerto", 5000, true);
            }
return 1;
}
Timer:
pawn Код:
forward Muerto(playerid);
public Muerto(playerid)
{
    DEAD[playerid] = 0;
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid, 1);
    TextDrawHideForPlayer(playerid, lbt);
    TextDrawHideForPlayer(playerid, lbb);
    KillTimer(Muerto(playerid));
    return 1;
}
Algunas veces se buguea y no me spawnea mas, alguna idea de porque?
Reply
#4

Quote:
Originally Posted by Leaan(L)
Si, funciono bien, gracias !

Ahopra ntengo otro problema aca...

pawn Код:
public OnPlayerSpawn(playerid)
{
        if(DEAD[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 0);
                TextDrawShowForPlayer(playerid, lbt);
                TextDrawShowForPlayer(playerid, lbb);
                SendClientMessage(playerid, COLOR_GREEN, "Te podras mover en 5 Segundos!");
                SetTimer("Muerto", 5000, true);
            }
return 1;
}
Timer:
pawn Код:
forward Muerto(playerid);
public Muerto(playerid)
{
    DEAD[playerid] = 0;
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid, 1);
    TextDrawHideForPlayer(playerid, lbt);
    TextDrawHideForPlayer(playerid, lbb);
    KillTimer(Muerto(playerid));
    return 1;
}
Algunas veces se buguea y no me spawnea mas, alguna idea de porque?
No se si este bien, prueba con esto:

pawn Код:
new muerto;

public OnPlayerSpawn(playerid)
{
        if(DEAD[playerid] == 1)
            {
                TogglePlayerControllable(playerid, 0);
                TextDrawShowForPlayer(playerid, lbt);
                TextDrawShowForPlayer(playerid, lbb);
                SendClientMessage(playerid, COLOR_GREEN, "Te podras mover en 5 Segundos!");
                muerto = SetTimerEx("Muerto", 5000, true);
            }
return 1;
}
Timer:
pawn Код:
forward Muerto(playerid);

public Muerto(playerid)
{
    DEAD[playerid] = 0;
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid, 1);
    TextDrawHideForPlayer(playerid, lbt);
    TextDrawHideForPlayer(playerid, lbb);
    KillTimer(muerto);
    return 1;
}
Reply
#5

El fallo esta rn rl public Muerto, si tu pones: KillTimer(muerto); lo que hace es eliminar el timer entonces si otro muere al na haber timer, no respawnea, asique ellimina esto KillTimer(muerto);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)