[Pedido] de ajuda sistema VIP
#1

Estou com um bug no meu sistema vip por dias, й que quando uma pessoa vip entra no server e depois sai, quando outra pessoa que nгo e vip entra mostra como ela fosse vip e tem como usar os comandos vip. sem que ela seja vip.
me ajude ++rep


pawn Код:
new VIP[MAX_PLAYERS];


stock SetPlayerVIP(playerid, days)
{
    if(IsPlayerConnected(playerid))
    {
        new VIPS[128], ACCS[128], STRV[128];

        new year, month, day;
        getdate(year, month, day);

        format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
        if(!DOF2::FileExists(VIPS))
        {
            DOF2::CreateFile(VIPS);
        }
        DOF2::SetInt(VIPS, "Dias", DOF2::GetInt(VIPS, "Dias")+days);
        format(STRV, sizeof(STRV), "%d/%d/%d", day, month, year);
        DOF2::SetString(VIPS, "DataSet", STRV);

        format(ACCS, sizeof(ACCS), PASTA_CONTAS, GetName(playerid));
        DOF2::SetInt(ACCS, "UsouConce", 0);
        DOF2::SetInt(ACCS, "VIP", 1);
        VIP[playerid] = 1;
        DOF2::SaveFile();
    }
    return 1;
}

stock RenameFileVIP(oldfile[], newfile[])
{
    new mndias;
    new mndataset[256];
    new mnusouconce;
    new mnvip;

    mndias = DOF2::GetInt(oldfile, "Dias");
    mndataset = DOF2::GetString(oldfile, "DataSet");
    mnusouconce = DOF2::GetInt(oldfile, "UsouConce");
    mnvip = DOF2::GetInt(oldfile, "VIP");
    DOF2::RemoveFile(oldfile);

    DOF2::CreateFile(newfile);
    DOF2::SetInt(newfile, "Dias", mndias);
    DOF2::SetString(newfile, "DataSet", mndataset);
    DOF2::SetInt(newfile, "UsouConce", mnusouconce);
    DOF2::SetInt(newfile, "VIP", mnvip);
    DOF2::SaveFile();
    return 1;
}

stock UnsetPlayerVIP(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new VIPS[128], ACCS[128];

        format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
        if(DOF2::FileExists(VIPS))
        {
            DOF2::RemoveFile(VIPS);
        }
        format(ACCS, sizeof(ACCS), PASTA_CONTAS, GetName(playerid));
        DOF2::SetInt(ACCS, "VIP", 0);
        VIP[playerid] = 0;
        DOF2::SaveFile();
    }
    return 1;
}

stock CheckPlayerVIP(playerid)
{
    new VIPS[128], ACCS[128], STRV[128];

    new year, month, day;
    getdate(year, month, day);

    format(ACCS, sizeof(ACCS), PASTA_CONTAS, GetName(playerid));
    if(DOF2::FileExists(ACCS))
    {
        format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
        if(DOF2::FileExists(VIPS))
        {
            format(STRV, sizeof(STRV), "%d/%d/%d", day, month, year);
            if(strcmp(DOF2::GetString(VIPS, "DataSet"), STRV, true) != 0)
            {
                DOF2::SetString(VIPS, "DataSet", STRV);
                DOF2::SetInt(VIPS, "Dias", DOF2::GetInt(VIPS, "Dias")-1);
            }
            if(DOF2::GetInt(VIPS, "Dias") > 0)
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, false);
                SetWeaponAllowed(playerid, 38, true);
                SetWeaponAllowed(playerid, 35, true);
                SetWeaponAllowed(playerid, 36, true);
                SetWeaponAllowed(playerid, 37, true);
                SetWeaponAllowed(playerid, 39, true);
                SetWeaponAllowed(playerid, 40, true);
                #endif

                DOF2::SetInt(ACCS, "VIP", 1);
                VIP[playerid] = 1;

                SendClientMessage(playerid, -1, "Vocк й um jogador VIP, aproveite!");
                SendClientMessage(playerid, -1, "Veja os comandos em /comandosvip");
            }
            else
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, true);
                SetWeaponAllowed(playerid, 38, false);
                SetWeaponAllowed(playerid, 35, false);
                SetWeaponAllowed(playerid, 36, false);
                SetWeaponAllowed(playerid, 37, false);
                SetWeaponAllowed(playerid, 39, false);
                SetWeaponAllowed(playerid, 40, false);
                #endif

                UnsetPlayerVIP(playerid);

                SendClientMessage(playerid, -1, "Seus dias de VIP acabaram!");
                SendClientMessage(playerid, -1, "Compre mais e divirta-se.");
            }
        }
        else
        {
            #if defined AntiCheatUser
            CheckSet(0, playerid, true);
            SetWeaponAllowed(playerid, 38, false);
            SetWeaponAllowed(playerid, 35, false);
            SetWeaponAllowed(playerid, 36, false);
            SetWeaponAllowed(playerid, 37, false);
            SetWeaponAllowed(playerid, 39, false);
            SetWeaponAllowed(playerid, 40, false);
            #endif

            DOF2::SetInt(ACCS, "VIP", 0);
            VIP[playerid] = 0;
            DOF2::SaveFile();
        }
    }
    return 1;
}

stock GetVIPDays(playerid)
{
    new VIPS[128];

    format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
    if(DOF2::FileExists(VIPS))
    {
        return DOF2::GetInt(VIPS, "Dias");
    }
    else
    {
        return 0;
    }
}

stock IsPlayerVIP(playerid)
{
    return VIP[playerid];
}
Reply
#2

No OnPlayerConnect:

VIP[playerid] = 0;
Reply
#3

Quote:
Originally Posted by DogeMan
Посмотреть сообщение
No OnPlayerConnect:

VIP[playerid] = 0;
mais na public
pawn Код:
public OnPlayerConnect();
{
     CheckPlayerVIP(playerid);
     return 1;
}
eu uso isso
pawn Код:
stock CheckPlayerVIP(playerid)
{
    new VIPS[128], ACCS[128], STRV[128];

    new year, month, day;
    getdate(year, month, day);

    format(ACCS, sizeof(ACCS), PASTA_CONTAS, GetName(playerid));
    if(DOF2::FileExists(ACCS))
    {
        format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
        if(DOF2::FileExists(VIPS))
        {
            format(STRV, sizeof(STRV), "%d/%d/%d", day, month, year);
            if(strcmp(DOF2::GetString(VIPS, "DataSet"), STRV, true) != 0)
            {
                DOF2::SetString(VIPS, "DataSet", STRV);
                DOF2::SetInt(VIPS, "Dias", DOF2::GetInt(VIPS, "Dias")-1);
            }
            if(DOF2::GetInt(VIPS, "Dias") > 0)
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, false);
                SetWeaponAllowed(playerid, 38, true);
                SetWeaponAllowed(playerid, 35, true);
                SetWeaponAllowed(playerid, 36, true);
                SetWeaponAllowed(playerid, 37, true);
                SetWeaponAllowed(playerid, 39, true);
                SetWeaponAllowed(playerid, 40, true);
                #endif

                DOF2::SetInt(ACCS, "VIP", 1);
                VIP[playerid] = 1;

                SendClientMessage(playerid, -1, "Vocк й um jogador VIP, aproveite!");
                SendClientMessage(playerid, -1, "Veja os comandos em /comandosvip");
            }
            else
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, true);
                SetWeaponAllowed(playerid, 38, false);
                SetWeaponAllowed(playerid, 35, false);
                SetWeaponAllowed(playerid, 36, false);
                SetWeaponAllowed(playerid, 37, false);
                SetWeaponAllowed(playerid, 39, false);
                SetWeaponAllowed(playerid, 40, false);
                #endif

                UnsetPlayerVIP(playerid);

                SendClientMessage(playerid, -1, "Seus dias de VIP acabaram!");
                SendClientMessage(playerid, -1, "Compre mais e divirta-se.");
            }
        }
        else
        {
            #if defined AntiCheatUser
            CheckSet(0, playerid, true);
            SetWeaponAllowed(playerid, 38, false);
            SetWeaponAllowed(playerid, 35, false);
            SetWeaponAllowed(playerid, 36, false);
            SetWeaponAllowed(playerid, 37, false);
            SetWeaponAllowed(playerid, 39, false);
            SetWeaponAllowed(playerid, 40, false);
            #endif

            DOF2::SetInt(ACCS, "VIP", 0);
            VIP[playerid] = 0;
            DOF2::SaveFile();
        }
    }
    return 1;
}
Reply
#4

Quote:
Originally Posted by Marlon307
Посмотреть сообщение
mais na public
pawn Код:
public OnPlayerConnect();
{
     CheckPlayerVIP(playerid);
     return 1;
}
eu uso isso
pawn Код:
stock CheckPlayerVIP(playerid)
{
    new VIPS[128], ACCS[128], STRV[128];

    new year, month, day;
    getdate(year, month, day);

    format(ACCS, sizeof(ACCS), PASTA_CONTAS, GetName(playerid));
    if(DOF2::FileExists(ACCS))
    {
        format(VIPS, sizeof(VIPS), PASTA_VIPS, GetName(playerid));
        if(DOF2::FileExists(VIPS))
        {
            format(STRV, sizeof(STRV), "%d/%d/%d", day, month, year);
            if(strcmp(DOF2::GetString(VIPS, "DataSet"), STRV, true) != 0)
            {
                DOF2::SetString(VIPS, "DataSet", STRV);
                DOF2::SetInt(VIPS, "Dias", DOF2::GetInt(VIPS, "Dias")-1);
            }
            if(DOF2::GetInt(VIPS, "Dias") > 0)
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, false);
                SetWeaponAllowed(playerid, 38, true);
                SetWeaponAllowed(playerid, 35, true);
                SetWeaponAllowed(playerid, 36, true);
                SetWeaponAllowed(playerid, 37, true);
                SetWeaponAllowed(playerid, 39, true);
                SetWeaponAllowed(playerid, 40, true);
                #endif

                DOF2::SetInt(ACCS, "VIP", 1);
                VIP[playerid] = 1;

                SendClientMessage(playerid, -1, "Vocк й um jogador VIP, aproveite!");
                SendClientMessage(playerid, -1, "Veja os comandos em /comandosvip");
            }
            else
            {
                #if defined AntiCheatUser
                CheckSet(0, playerid, true);
                SetWeaponAllowed(playerid, 38, false);
                SetWeaponAllowed(playerid, 35, false);
                SetWeaponAllowed(playerid, 36, false);
                SetWeaponAllowed(playerid, 37, false);
                SetWeaponAllowed(playerid, 39, false);
                SetWeaponAllowed(playerid, 40, false);
                #endif

                UnsetPlayerVIP(playerid);

                SendClientMessage(playerid, -1, "Seus dias de VIP acabaram!");
                SendClientMessage(playerid, -1, "Compre mais e divirta-se.");
            }
        }
        else
        {
            #if defined AntiCheatUser
            CheckSet(0, playerid, true);
            SetWeaponAllowed(playerid, 38, false);
            SetWeaponAllowed(playerid, 35, false);
            SetWeaponAllowed(playerid, 36, false);
            SetWeaponAllowed(playerid, 37, false);
            SetWeaponAllowed(playerid, 39, false);
            SetWeaponAllowed(playerid, 40, false);
            #endif

            DOF2::SetInt(ACCS, "VIP", 0);
            VIP[playerid] = 0;
            DOF2::SaveFile();
        }
    }
    return 1;
}
E daн? Esse problema й porque a variбvel nгo estб zerando. Vocк pode por isso no OnPlayerDisconnect ou no OnPlayerConnect, eu normalmente coloco no OnPlayerConnect como ele sugeriu.
Reply
#5

Quote:
Originally Posted by SalvatoreBR
Посмотреть сообщение
E daн? Esse problema й porque a variбvel nгo estб zerando. Vocк pode por isso no OnPlayerDisconnect ou no OnPlayerConnect, eu normalmente coloco no OnPlayerConnect como ele sugeriu.
Mais funciono agora estou verificando as "stocks" para eu zerar o vip
Reply
#6

Com a stock CheckPlayerVIP a variбvel sу й zerada se o jogador possuir um arquivo. Faзa como o DogeMan disse.
Reply
#7

Quote:
Originally Posted by MultiKill
Посмотреть сообщение
Com a stock CheckPlayerVIP a variбvel sу й zerada se o jogador possuir um arquivo. Faзa como o DogeMan disse.
Sim estou usando como ele recomendou XD_!
Reply
#8

Marlon me ajuda num bug do seu sistema https://sampforum.blast.hk/showthread.php?tid=599133
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)