[FilterScript] Sistema de VIP com linhas explicadas!
#1

Bom, to a uns tempos pensando em fazer algo mas to sem criatividade, entгo resolvi fazer esse simples sistema de VIP com todas linhas explicadas .
Fiz ele em SII, zcmd e sscanf.
Ele tem 3 nнveis de VIP.
- Vip Normal
- Super Vip
- Sуcio

Comandos de admins
/darvip [id] [meses]
/darsvip [id] [meses]
/darsocio [id] [meses]
/tirarvip [id] [meses]

Sу tem 3 comandos dos vips de exemplo
/ajudavip
/equiparvip
/chatvip

Comando dos players
/vips
/socios

Outras coisas do FS
Ele salva os Vips na pasta Vips no seu scriptfile, e dentro do arquivo seta o numero de que o player й.
1 - Vip
2 - S-VIP
3 - Sуcio.

Crie a pasta Vips no seu scriptfile!

Quando o player loga, se ele for Vip+ manda a mensagem pra todos que o Player VIP/SVIP/SOCIO estб online.
E ele tem todas linhas explicadas!

Download abaixo
pawn Код:
/* Sistema de VIP feito por Bruno Pereira, favor nгo retire os crйditos, isso й crime!
Pode modificalo de qualquer maneira, mas deixe pelo menos os crйditos :)!
Contato: brunopereiraa-@hotmail.com
Skype: grt.figa
Й nois !!! */


// ====== INCLUDES =======//
#include <a_samp>
#include <foreach>
#include <SII>
#include <zcmd>
#include <sscanf2>
// ===== OTIMIZAЗГOZINHA kk ====== //
#if defined MAX_PLAYERS
    #undef MAX_PLAYERS
#endif
#define SLOTS 20

// ===== CORES ===== //
#define COR_VIP         0xFFBEFFE2
#define COR_AZULZINHO   0x00A5FFFF
#define COR_AMARELO2    0xFFFF00AA
#define COR_VERDE       0x00FF00FF
#define COR_AZULZAO     0x005FFFFF
// ======= NEWS ========= //
new
      PlayerVip[SLOTS],// Variavel pra ver se o player й vip e o nivel vip dele
      _sStr[128],// Uma string global!
      iddele,// Variavel que vamos usar em comandos tipo: /ban [id]! o  ID й a variavel iddele :)
      meses// Variavel dos meses que serгo dado aos players vips!
;

//======= PUBLICS ======= //
public OnFilterScriptInit()
{
    print("\n--------------------------------------------------");
    print(" Carregando Sistema de Vip...");
    print(" Sistema de Vip carregado com sucesso!");
    print(" Sistema de Vip criado por Bruno Pereira ••");
    print("--------------------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    foreach(Player, i)// Loop em foreach!
    {
        SalvarVip(i);// Salva as contas!
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    CarregarVip(playerid);// Carrega a conta vip do player!
    if(PlayerVip[playerid] == 1)// Se ele for VIP 1 manda essa mensagem pra todos online \/!
    {
        format(_sStr, 40, "O VIP %s estб OnLine", pNome(playerid));
        SendClientMessageToAll(COR_VIP, _sStr);
    }
    else if(PlayerVip[playerid] == 2)
    {
        format(_sStr, 50, "O SUPER-VIP %s estб OnLine", pNome(playerid));
        SendClientMessageToAll(COR_AZULZINHO, _sStr);
    }
    else if(PlayerVip[playerid] == 3)
    {
        format(_sStr, 50, "O SOCIO %s estб OnLine", pNome(playerid));
        SendClientMessageToAll(COR_VERDE, _sStr);
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    SalvarVip(playerid);// Salva a conta do player!
    return 1;
}
// ======== COMANDOS ========== //
CMD:ajudavip(playerid, params[])
{
    if(PlayerVip[playerid] >= 1)// Se ele for VIP maior ou igual a um manda essa mensagem abaixo \/
    {
        SendClientMessage(playerid, -1, "/vips /socios /equiparvip");
    }
    if(IsPlayerAdmin(playerid))// Se ele for admin, manda essa tambem \/
    {
        SendClientMessage(playerid, -1, "/darvip /darsvip /darsocio /tirarvip");
    }
    return 1;
}
CMD:vips(playerid, params[])
{
    SendClientMessage(playerid, -1 , "VIPs e Super-Vips onlines:");// Mensagem
    foreach(Player, i)// Loop
    {
        if(IsPlayerConnected(i))// Verifica os players vips conectados!
        {
             if(PlayerVip[playerid] == 1)// Se os players vips forem igual a 1 (vip normal) manda isso abaixo \/!
             {
                  format(_sStr, 40, "VIP: %s", pNome(i));// formata a mensagem
                  SendClientMessage(playerid, COR_VIP, _sStr);// envia a mensagem
             }
             else if(PlayerVip[playerid] == 2)
             {
                  format(_sStr, 40, "SUPER-VIP: %s", pNome(i));
                  SendClientMessage(playerid, COR_AZULZINHO, _sStr);
             }
        }
    }
    return 1;
}
CMD:socios(playerid, params[])
{
    SendClientMessage(playerid, -1 , "Socios Onlines:");
    foreach(Player, i)
    {
        if(IsPlayerConnected(i))
        {
             if(PlayerVip[playerid] == 3)
             {
                  format(_sStr, 40, "SOCIO: %s", pNome(i));
                  SendClientMessage(playerid, COR_VERDE, _sStr);
             }
        }
    }
    return 1;
}

CMD:darvip(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))// Se o cara NAO for admin (!) manda a mensagem!
        return SendClientMessage(playerid, -1, "Vocк nгo estб autorizado a usar esse comando !");
    if(sscanf(params, "ud", iddele, meses))// Sscanf! * Se ele nгo preencher todos os campos manda a mensagem \/! *
        return SendClientMessage(playerid, -1, "Correto: /darvip [id] [meses]");// manda mensagem
    if(!IsPlayerConnected(iddele))// Se o "iddele" nao estiver conectado manda a mensagem!
        return SendClientMessage(playerid, -1, "Esse jogador nгo estб online");// mensagem
    PlayerVip[iddele] = 1;// Seta o vip do cara pra 1
    SetPlayerScore(iddele, GetPlayerScore(iddele) + meses*2);// Verifica o level do player e seta o numero que o admin digitou no "meses" veses 2!
    GivePlayerMoney(iddele, meses*10000);// Da a quantidade grana pro player. A quantidade й o numero que o admin digitou no meses VESES 10 Mil!
    format(_sStr, 100, "Atenзгo o admin %s te deu %d meses VIP com %d Nнveis e R$ %d.", pNome(playerid), meses, meses*2, meses*10000);// Formata a mensagem!
    SendClientMessage(iddele, COR_AZULZAO, _sStr);// Manda a mensagem!
    format(_sStr, 100, "Vocк deu %d meses de VIP para o %s", meses, pNome(iddele));
    SendClientMessage(playerid, COR_AZULZAO, _sStr);
    return 1;
}
CMD:darsvip(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo estб autorizado a usar esse comando !");
    if(sscanf(params, "ud", iddele, meses))
        return SendClientMessage(playerid, -1, "Correto: /darsvip [id] [meses]");
    if(!IsPlayerConnected(iddele))
        return SendClientMessage(playerid, -1, "Esse jogador nгo estб online");
    PlayerVip[iddele] = 2;
    SetPlayerScore(iddele, GetPlayerScore(iddele) + meses*3);
    GivePlayerMoney(iddele, meses*20000);
    format(_sStr, 100, "Atenзгo o admin %s te deu %d meses SUPER-VIP com %d Nнveis e R$ %d.", pNome(playerid), meses, meses*3, meses*20000);
    SendClientMessage(iddele, COR_AZULZAO, _sStr);
    format(_sStr, 100, "Vocк deu %d meses de SUPER-VIP para o %s", meses, pNome(iddele));
    SendClientMessage(playerid, COR_AZULZAO, _sStr);
    return 1;
}
CMD:darsocio(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo estб autorizado a usar esse comando !");
    if(sscanf(params, "ud", iddele, meses))
        return SendClientMessage(playerid, -1, "Correto: /darsocio [id] [meses]");
    if(!IsPlayerConnected(iddele))
        return SendClientMessage(playerid, -1, "Esse jogador nгo estб online");
    PlayerVip[iddele] = 3;
    SetPlayerScore(iddele, GetPlayerScore(iddele) + meses*4);
    GivePlayerMoney(iddele, meses*30000);
    format(_sStr, 100, "Atenзгo o admin %s te deu %d meses de Sуcio com %d Nнveis e R$ %d.", pNome(playerid), meses, meses*4, meses*30000);
    SendClientMessage(iddele, COR_AZULZAO, _sStr);
    format(_sStr, 100, "Vocк deu %d meses de Sуcio para o %s", meses, pNome(iddele));
    SendClientMessage(playerid, COR_AZULZAO, _sStr);
    return 1;
}
CMD:tirarvip(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo estб autorizado a usar esse comando !");
    if(sscanf(params, "u", iddele))
        return SendClientMessage(playerid, -1, "Correto: /tirarvip [id]");
    if(!IsPlayerConnected(iddele))
        return SendClientMessage(playerid, -1, "Esse jogador nгo estб online");
    if(PlayerVip[iddele] == 0)
        return SendClientMessage(playerid, -1, "Esse jogador nгo й VIP/S-VIP/SOCIO");
    PlayerVip[iddele] = 0;// Seta o nivel vip do cara pra 0!
    format(_sStr, 80, "O administrador %s tirou seu VIP/S-VIP/SOCIO!", pNome(playerid));
    SendClientMessage(iddele, COR_AZULZAO, _sStr);
    format(_sStr, 80, "Vocк tirou o VIP/S-VIP/SOCIO do %s", pNome(iddele));
    SendClientMessage(playerid, COR_AZULZAO, _sStr);
    format(_sStr, 35, "Vips/%s.ini", pNome(playerid));// Formata o local da Pasta!
    if(fexist(_sStr))// Se a o arquivo existir, remove ele \/
    {
        INI_Remove(_sStr);// Remove o arquivo!
    }
    return 1;
}
CMD:equiparvip(playerid, params[])
{
    if(PlayerVip[playerid] == 1)// Se ele for VIP vai dar essas armas:
    {
        GivePlayerWeapon(playerid, 24, 999);
        GivePlayerWeapon(playerid, 31, 999);// Da a armas 31 com 999 balas ao player!
        SendClientMessage(playerid, COR_AZULZINHO, "Vocк pegou seus equipamentos VIP!");
    }
    else if(PlayerVip[playerid] == 2)// Se ele for SuperVip vai dar essas armas:
    {
        SetPlayerHealth(playerid, 100);
        GivePlayerWeapon(playerid, 24, 999);
        GivePlayerWeapon(playerid, 31, 999);
        GivePlayerWeapon(playerid, 4, 999);
        GivePlayerWeapon(playerid, 29, 999);
        SendClientMessage(playerid, COR_AZULZINHO, "Vocк pegou seus equipamentos SUPER VIP!");
    }
    else if(PlayerVip[playerid] == 3)// Se ele for Sуcio vai dar essas armas:
    {
        SetPlayerHealth(playerid, 100);
        SetPlayerArmour(playerid, 100);
        GivePlayerWeapon(playerid, 24, 999);
        GivePlayerWeapon(playerid, 31, 999);
        GivePlayerWeapon(playerid, 4, 999);
        GivePlayerWeapon(playerid, 29, 999);
        GivePlayerWeapon(playerid, 38, 999);
        GivePlayerWeapon(playerid, 46, 999);
        SendClientMessage(playerid, COR_AZULZINHO, "Vocк pegou seus equipamentos de SУCIO!");
    }
    else if(PlayerVip[playerid] == 0)// Se ele nao for VIP, vai mandar essa mensagem :)
        return SendClientMessage(playerid, -1, "Vocк nгo й vip!");
    return 1;
}
CMD:salvarvips(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Vocк nгo estб autorizado a usar esse comando !");
    foreach(Player, i)// Loop
    {
        SalvarVip(i); // Salva as contas!
    }
    SendClientMessage(playerid, -1, "Todos os Vips/Super-Vips/Socios onlines foram salvos com sucesso!");
    return 1;
}
CMD:chatvip(playerid, params[])
{
    new String[128];// String!
    if(PlayerVip[playerid] == 0)// Se o player nгo for VIP manda amensagem abaixo!
        return SendClientMessage(playerid, -1, "Vocк nгo й Vip/Super-Vip/Sуcio");
    if(sscanf(params, "s[100]", _sStr))//Sscanf!
        return SendClientMessage(playerid, -1, "Correto: /chatvip [chat]");
    if(PlayerVip[playerid] == 1)// Se o cara for VIP nivel 1...
    {
        format(String, 128, "VIP %s: %s", pNome(playerid), _sStr);
        MensagemVips(COR_AMARELO2, String);
    }
    else if(PlayerVip[playerid] == 2)// Se for vip nivel 2
    {
        format(String, 128, "SUPER-VIP %s: %s", pNome(playerid), _sStr);
        MensagemVips(COR_AMARELO2, String);
    }
    else if(PlayerVip[playerid] == 3)// se for vip nivel 3
    {
        format(String, 128, "* SOCIO %s: %s", pNome(playerid), _sStr);
        MensagemVips(COR_AMARELO2, String);
    }
    return 1;
}

forward MensagemVips(cor, string[]);
public MensagemVips(cor, string[])// Funзгo que envia mensagem pros VIPS!!
{
    foreach(Player, i)// Loop!
    {
        if(IsPlayerConnected(i))// Players vips conectados!
        {
            if(PlayerVip[i] >= 1)// Se o vip for maior que 1
            {
                SendClientMessage(i, cor, string);// manda a mensagem!
            }
        }
    }
}
// ========= STOCKS ========= //
stock pNome(playerid)// Stock de getar o nome :)
{
    new nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nome, sizeof(nome));
    return nome;
}
stock SalvarVip(playerid)// Stock de salvar VIP!
{
    if(PlayerVip[playerid] >= 1)// Se o cara for maior ou igual a 1
    {
        format(_sStr, 35, "Vips/%s.ini", pNome(playerid));// Formata o local do arquivo!
        if(INI_Open(_sStr))// Abre o arquivo!
        {
            INI_WriteInt("NivelVip", PlayerVip[playerid]);// Seta o NivelVip = NIVEL DO VIP DO PLAYER!
            INI_Save();// Salva
            INI_Close();// Fecha o arquivo!
        }
    }
    return 1;
}
stock CarregarVip(playerid)
{
    format(_sStr, 35, "Vips/%s.ini", pNome(playerid));// Formata...
    if(INI_Open(_sStr))// Abre o arquivo!
    {
        PlayerVip[playerid] = INI_ReadInt("NivelVip");// Seta o PlayerVip[playerid] para o numero que estiver no NivelVip...
        INI_Close();// Fecha o arquivo!
    }
    return 1;
}
/* Sistema de VIP feito por Bruno Pereira, favor nгo retire os crйditos, isso й crime!
Pode modificalo de qualquer maneira, mas deixe pelo menos os crйditos :)!
Contato: brunopereiraa-@hotmail.com
Skype: grt.figa
Й nois !!! */
Crйditos:
Bruno Pereira - Criador
Zeex - ZCMD
Y Less - Sscanf e Foreach
Slick - SII
Reply
#2

bom , gostei de voc explica agora vo olha o salvamento pra min ve como funciona
Reply
#3

Quote:
Originally Posted by histire
Посмотреть сообщение
bom , gostei de voc explica agora vo olha o salvamento pra min ve como funciona
Vlw!

Й simples:
Na hora que o cara desconectar se ele for VIP e nгo tiver a conta na pasta Vips, ai cria ela . O mesmo se o admin der /salvarvips ou se o gm fechar.
E na hora que o player loga, ele abre o arquivo e le oqque ta escrito em NivelVip e seta o PlayerVip.
Reply
#4

kkk facil pra tigo mais isso ai foi a coisa mais dificil i que to com dificuldade antes de eu para com samp eu tava fasendo sistema de admin mais chego na salvaзao desisti ;/
vo ve se consigo aprender salvaзao se eu consegui..
Reply
#5

Eu aprendi olhando isso:

https://sampforum.blast.hk/showthread.php?tid=267808

E tambem isso:

http://forum.sa-mp.com/showthread.ph...Login+registro

!
Reply
#6

prefiro olha o seu ki tah explicado kkkk pq й tenso
Reply
#7

Ficou legal,so achei meio "Tenso" uma parte:
pawn Код:
#if defined MAX_PLAYERS
    #undef MAX_PLAYERS
#endif
#define SLOTS 20
Voce Undefine MAX_PLAYERS e Define Slots,nao seria Melhor definir MAX_PLAYERS 20 ?porque como voce colocou ai,a parte de MAX_PLAYERS fica Inutil...e apenas uma dica/correзгo..Mas alem de tudo,ficou legal.
Reply
#8

Massa UpUp aki
Reply
#9

Quote:
Originally Posted by Gustavo_Araujo
Посмотреть сообщение
Ficou legal,so achei meio "Tenso" uma parte:
pawn Код:
#if defined MAX_PLAYERS
    #undef MAX_PLAYERS
#endif
#define SLOTS 20
Voce Undefine MAX_PLAYERS e Define Slots,nao seria Melhor definir MAX_PLAYERS 20 ?porque como voce colocou ai,a parte de MAX_PLAYERS fica Inutil...e apenas uma dica/correзгo..Mas alem de tudo,ficou legal.
Pra isso mesmo, MAX_PLAYER tem que ficar inutil, nгo vou ficar gastando mais processamento.
Eu undefini ela e defini o SLOTS pra 20. Bem mais otimizado.
Reply
#10

Na verdade isso que vocк fez ali й inъtil, jб que as macros inutilizadas nгo sгo passadas para o amx
Reply
#11

Tem certeza que esse 'vip meses' funciona? rs
Reply
#12

Muito BOm
Reply
#13

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Tem certeza que esse 'vip meses' funciona? rs
Tipo, tгo pensando que o VIP espira depois de por exemplo 1 mes dado? Lol nem й isso kkk.
Й que tipo, tem player que compra por exemplo 3 meses vip.
Ai pro admin nгo ficar digitando o comando 3x, sу ele colocar 3 meses .

Vlw!
Reply
#14

esse sistema nao funfa ja testei!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)