[Pedido] Suplemento no ANTI-AFK
#1

Olб, estou aqui pois percebi em meu servidor que quando o player fica em modo ausente ( AFK ) ele continua a ganhar salбrio...
E eu queria saber como arrumar isso.

SetTimer do salбrio
pawn Код:
SetTimer("Salario", 2400000, 1);
quando ganha o salбrio
pawn Код:
...if(Profissao[i] == PROF_DESEMPREGADO)
                {
                    quantia = dini_Int(banco, "Saldo");
                    SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
                    SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Vocк recebeu o seu seguro desemprego, R$110");
                    dini_IntSet(banco, "Saldo", quantia + 110);
                }
                else if(Profissao[i] == PROF_CAMINHONEIRO)
                {
                    quantia = dini_Int(banco, "Saldo");
                    format(str, sizeof(str), "(Salбrio) Vocк recebeu seu salбrio de R$520");
                    SendClientMessage(i, 0xFFD39BAA, str);
                    SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
                    SendClientMessage(i, 0xFFD39BAA, "(Salбrio) O seu salбrio foi depositado automбticamente em sua conta bancбria!");
                    dini_IntSet(banco, "Saldo", quantia + 520);
                }
Oque devo por no if do AFK para bloquear que o player ausente ganhe salario?
E quando ele digitar o comando /online, que funзгo utilizar para que o settimer volte a contar?
Para por uma else com a mensagem "Vocк estб ausente, por tanto nгo recebeu seu salбrio."

Alguem ajuda?
Reply
#2

pawn Код:
if(AFK[i] == 0)
{
    if(Profissao[i] == PROF_DESEMPREGADO)
    {
        quantia = dini_Int(banco, "Saldo");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Vocк recebeu o seu seguro desemprego, R$110");
        dini_IntSet(banco, "Saldo", quantia + 110);
    }
    else if(Profissao[i] == PROF_CAMINHONEIRO)
    {
        quantia = dini_Int(banco, "Saldo");
        format(str, sizeof(str), "(Salбrio) Vocк recebeu seu salбrio de R$520");
        SendClientMessage(i, 0xFFD39BAA, str);
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) O seu salбrio foi depositado automбticamente em sua conta bancбria!");
        dini_IntSet(banco, "Saldo", quantia + 520);
    }
}
else
{
    SendClientMessage(i, 0xFFD39BAA, "Vocк estб ausente e foi bloqueado de receber salario!");
    return 1;
}


Mano Ponhe assim Pois e ++ Seguro e se o cara voltar antes de receber o salario ele receberб normalmente manin pode usar esse tipo aki que й 10x melhor
Reply
#3

ai й so vc por o resto das profissхes ai na lista e colocar o else como o Sky disse no fim das profissгo que nem mostra no exemplo do Sky
Reply
#4

Ta... Mas eu queria quebrar o settimer do salario para playerid, quando essa public for chamada...

pawn Код:
public AntiAfk()
{
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        GetPlayerPos(i, PlayerCurrentPos[0], PlayerCurrentPos[1], PlayerCurrentPos[2]);
        if(!floatcmp(PlayerCurrentPos[0], PlayerLastPos[i][LastX]) && !floatcmp(PlayerCurrentPos[1], PlayerLastPos[i][LastY]))
        {
            PlayerAfkTicks[i] ++;
        }
        else
        {
            PlayerAfkTicks[i] = 0;
        }
        PlayerLastPos[i][LastX] = PlayerCurrentPos[0];
        PlayerLastPos[i][LastY] = PlayerCurrentPos[1];
        PlayerLastPos[i][LastZ] = PlayerCurrentPos[2];

        if(PlayerAfkTicks[i] == MAX_TIME_AFK * 60)
        {
            if(IsPlayerConnected(i))
            {
                if(!IsPlayerNPC(i))
                {
                    AFK[i] = 1;
                    new string[128];
                    format(string, sizeof(string), "{1E90FF}( AFK ){FFFFFF} %s foi bloqueado de evoluir, por ficar ausente muito tempo.", nome(i));
                    SendClientMessageToAll(0xFFFFFFAA, string);
                    SetPlayerVirtualWorld(i, 1);
                    SetCameraBehindPlayer(i);
                    TogglePlayerControllable(i, 0);
                    TextDrawShowForPlayer(i, afk1[i]);
                    TextDrawShowForPlayer(i, afk2[i]);
                }
            }
        }
    }
    return 1;
}
E voltasse o settimer do salario nessa funзгo
pawn Код:
if(strcmp(cmd, "/online", true) == 0)
    {
        if(AFK[playerid] == 1)
        {
            new str[128];
            AFK[playerid] = 0;
            format(str, sizeof(str), "{1E90FF}( AFK ){FFFFFF} %s foi desbloqueado de upar, agora ele estб online!", nome(playerid));
            SendClientMessageToAll(0xFFFFFFAA, str);
            SetPlayerVirtualWorld(playerid, 0);
            TogglePlayerControllable(playerid, 1);
            TextDrawHideForPlayer(playerid, afk1[playerid]);
            TextDrawHideForPlayer(playerid, afk2[playerid]);
        }
        else
        {
            SendClientMessage(playerid, -1, "{FF0000}( ERRO ){FFFFFF} Vocк nгo estб AFK.");
        }
        return 1;
    }
Help?
Reply
#5

UP...
Reply
#6

pawn Код:
KillTimer(Salario[playerid]);
Isso desligaria o timer do salario..

Mais quando dar /on nгo tem uma funзгo que vai fazer voltar o Settimer do salario a nгo ser que ele tenha que esperar o tempo tudo novamente e melhor fazer o que eu disse antes ;....

Creio que seja isso mano *-* teste
Reply
#7

Mas quando eu coloco KillTimer(Salario[playerid]); da erros...
Jб tentei por [i] mas os erros percistem.

pawn Код:
error 028: invalid subscript (not an array or too many subscripts): "Salario"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
Reply
#8

pawn Код:
if(AFK[i] == 0)
{
    if(Profissao[i] == PROF_DESEMPREGADO)
    {
        quantia = dini_Int(banco, "Saldo");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Vocк recebeu o seu seguro desemprego, R$110");
        dini_IntSet(banco, "Saldo", quantia + 110);
    }
    else if(Profissao[i] == PROF_CAMINHONEIRO)
    {
        quantia = dini_Int(banco, "Saldo");
        format(str, sizeof(str), "(Salбrio) Vocк recebeu seu salбrio de R$520");
        SendClientMessage(i, 0xFFD39BAA, str);
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) O seu salбrio foi depositado automбticamente em sua conta bancбria!");
        dini_IntSet(banco, "Saldo", quantia + 520);
    }
}
else
{
    SendClientMessage(i, 0xFFD39BAA, "Vocк estб ausente e foi bloqueado de receber salario!");
    return 1;
}


Mano Ponhe assim Pois e ++ Seguro e se o cara voltar antes de receber o salario ele receberб normalmente manin pode usar esse tipo aki que й 10x melhor e Outra se n fosse melhor vc por assim os Scripters mais antigos que viu esse topico iriam me corrigir *-*
Reply
#9

Quote:
Originally Posted by Sky_.
Посмотреть сообщение
pawn Код:
if(AFK[i] == 0)
{
    if(Profissao[i] == PROF_DESEMPREGADO)
    {
        quantia = dini_Int(banco, "Saldo");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Vocк recebeu o seu seguro desemprego, R$110");
        dini_IntSet(banco, "Saldo", quantia + 110);
    }
    else if(Profissao[i] == PROF_CAMINHONEIRO)
    {
        quantia = dini_Int(banco, "Saldo");
        format(str, sizeof(str), "(Salбrio) Vocк recebeu seu salбrio de R$520");
        SendClientMessage(i, 0xFFD39BAA, str);
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) Seu salбrio foi pago de acordo com sua profissгo.");
        SendClientMessage(i, 0xFFD39BAA, "(Salбrio) O seu salбrio foi depositado automбticamente em sua conta bancбria!");
        dini_IntSet(banco, "Saldo", quantia + 520);
    }
}
else
{
    SendClientMessage(i, 0xFFD39BAA, "Vocк estб ausente e foi bloqueado de receber salario!");
    return 1;
}



Mano Ponhe assim Pois e ++ Seguro e se o cara voltar antes de receber o salario ele receberб normalmente manin pode usar esse tipo aki que й 10x melhor e Outra se n fosse melhor vc por assim os Scripters mais antigos que viu esse topico iriam me corrigir *-*





Vixi mano essa e o unica geito de faze que ira fica sem bugs veio
]
Reply
#10

SUPLEMENTO KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKKKKKKKKKKK
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)