Brasil SA-MP

Bem-vindo !
Então, por que você não é um membro? Junte-se agora! Esta mensagem aparecere apenas para convidados, será removida juntamente com os anúncios se logar-se.

Você não está conectado. Conecte-se ou registre-se

[PEDIDO]Sistema Moedas Verdes

Ver o tópico anterior Ver o tópico seguinte Ir para baixo Mensagem [Página 1 de 1]

#1
Scripter/Geral

Scripter/Geral


Por Favor



Última edição por Scripter/Geral em 11/7/2015, 22:47, editado 1 vez(es)

#2
Black_Tiger

Black_Tiger


Cade o código?

#3
Scripter/Geral

Scripter/Geral


eu qr q faça

#4
Black_Tiger

Black_Tiger


Requisitos:
- É necessario ter o plugin sscanf.inc dentro da pasta plugins no diretorio do seu servidor.
- Ter a linha "plugins sscanf" ao seu server.cfg.
- Ter a pasta moedas criada dentro da pasta scriptfiles do diretorio do seu servirdor. (SEUSERVIDOR/scriptfiles/moedas).

/* Sistema de Moedas Verdes

Versão 1.0
- Salvamento de moedas para cada usuario em DOF2.
- Primeiro comando de compra com mv's criados para seguirem o exemplo.
- Comando /moedasv criado para ver todos os comandos do FS
- Verifica se o usuario tem ou não mv's suficientes para efetuar a compra.

Versão 2.0
- Consertado bugs e agora funcionando na maioria dos GM'S
- Adicionada função de ver moedas.
- No caso de contas novas, não é preciso relogar para ativar as mv's.
- Adicionada mensagem de retorno em todas as ações. (ex. quando der moedas a um jogador, retorna a mensagem dizendo quantas moedas voce deu e quantas o player tem agora)

Versão 2.1
- Adicionado comando de transferir moedas entre players.


Requisitos:
- É necessario ter o plugin sscanf.inc dentro da pasta plugins no diretorio do seu servidor.
- Ter a linha "plugins sscanf" ao seu server.cfg.
- Ter a pasta moedas criada dentro da pasta scriptfiles do diretorio do seu servirdor. (SEUSERVIDOR/scriptfiles/moedas).
*/

#include
#include
#include
#include

//Defines
#define amarelo 0xFFFF00FF
#define azul 0x058AFFFF
#define rosa 0xFF05CDFF
#define verde 0x33AA33AA
#define vermelho 0xFFFFFFAA
#define branco 0xFFFFFFFF
#define preto 0x000000FF
#define cinza 0x878787FF
#define azulclaro 0x03F2FFFF
#define verdeclaro 0x03FF35FF
#define roxo 0x7D03FFFF
#define roxoclaro 0x9A03FFFF
#define laranja 0xFF7403FF

Código:
//enum's
enum MoedasInfo
{
  moedas,
}
// News
new PlayerMoedasInfo[MAX_PLAYERS][MoedasInfo];
new MoedasV[MAX_PLAYERS];
new Text:Moedas;

// Forwards
forward MoedasVerdes(playerid);

//Publics
public OnFilterScriptInit()
{
  print("\n--------------------------------------");
  print("Sistema de Moedas Verdes - by BrinqueDo");
  print("--------------------------------------\n");
  SetTimer("MoedasVerdes",1000, 1); // Fica atualizando o numero de moedas
  return 1;
}

main (){}
public OnPlayerConnect(playerid)
{
  new nome[MAX_PLAYER_NAME];
    new arquivo[40];
    GetPlayerName(playerid, nome, 32);
    format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
    if(DOF2_FileExists(arquivo))
    {
        CarregarMoedas(playerid);
    }
    else
    {
        CriarMoedas(playerid);
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
  TextDrawShowForPlayer(playerid, Moedas);
}

public MoedasVerdes(playerid)
{
    TextDrawDestroy(Moedas);
    new str[128];
    format(str, 256, "~g~MV~r~:~w~%d", PlayerMoedasInfo[playerid][moedas]);
    Moedas = TextDrawCreate(496.000000, 122.000000,str);
    TextDrawBackgroundColor(Moedas, 255);
    TextDrawFont(Moedas, 2);
    TextDrawLetterSize(Moedas, 0.509999, 2.100000);
    TextDrawColor(Moedas, -1);
    TextDrawSetOutline(Moedas, 1);
    TextDrawSetProportional(Moedas, 0);

    for(new i; i < MAX_PLAYERS; i ++)
    {
        if(IsPlayerConnected(i))
        {
            TextDrawHideForPlayer(i, Moedas);
            TextDrawShowForPlayer(i, Moedas);
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SalvarMoedas(playerid);
  return 1;
}

public OnFilterScriptExit()
{
    TextDrawHideForAll(Moedas);
    TextDrawDestroy(Moedas);
  DOF2_Exit();
  return 1;
}


CMD:moedasverdes(playerid)
{
  SendClientMessage(playerid, azul, "Comandos Player: /comprardinheiro /comprarscore /transferirmoedasv");
  SendClientMessage(playerid, azul, "Ajuda: Você ganha moedas verdes em eventos.");
  return 1;
}

CMD:moedasvadmin(playerid)
{
    SendClientMessage(playerid, azul, "Comandos Admin: /darmoedasv - /darmoedasvtodos - /setarmoedasv - /setarmoedasvtodos - /resetarmoedasv - /vermoedas");
    SendClientMessage(playerid, azul, "Ajuda: Você precisa estar logado na rcon. (/rcon login [senha])");
  return 1;
}
// Comandos Admin

CMD:darmoedasv(playerid,params[])
{
    new ID, MOEDAS;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "ud", ID, MOEDAS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /darmoedasv [ID][QUANTIDADE]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] ID invalido");
    PlayerMoedasInfo[ID][moedas] = PlayerMoedasInfo[ID][moedas] + MOEDAS;
    new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você deu %d moedas para %s.", MOEDAS, GetName(ID));
    SendClientMessage(playerid, verdeclaro, msgadm);
    new msgplayer[200];
    format(msgplayer, sizeof(msgplayer),"[MOEDAS] Você ganhou %d moedas do admin %s.", MOEDAS, GetName(playerid));
    SendClientMessage(playerid, verdeclaro, msgplayer);
  return 1;
}

CMD:darmoedasvtodos(playerid,params[])
{
    new MOEDAS;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "d", MOEDAS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /darmoedasvtodos [QUANTIDADE]");
    for(new i = 0; i < MAX_PLAYERS; i++)
  {
      if(IsPlayerConnected(i))
      {
        PlayerMoedasInfo[i][moedas] = PlayerMoedasInfo[i][moedas] + MOEDAS;
      }
  }
  new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você deu %d moedas para todos.", MOEDAS);
    SendClientMessage(playerid, verdeclaro, msgadm);
    new msgplayer[200];
      format(msgplayer, sizeof(msgplayer),"[MOEDAS] Você ganhou %d moedas do admin %s.", MOEDAS, GetName(playerid));
    SendClientMessage(playerid, verdeclaro, msgplayer);

  return 1;
 
}

CMD:setarmoedasvtodos(playerid,params[])
{
    new MOEDAS;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "d", MOEDAS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /setarmoedasvtodos [QUANTIDADE]");
    for(new i = 0; i < MAX_PLAYERS; i++)
  {
      if(IsPlayerConnected(i))
      {
        PlayerMoedasInfo[i][moedas] = MOEDAS;
      }
  }
  new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você setou as moedas de todos para %d.", MOEDAS);
    SendClientMessageToAll(verdeclaro, msgadm);
    new msgplayer[200];
    format(msgplayer, sizeof(msgplayer),"[MOEDAS] Suas moedas foram setadas para %d pelo admin %s.", MOEDAS, GetName(playerid));
    SendClientMessage(playerid, verdeclaro, msgplayer);

  return 1;
}

CMD:setarmoedasv(playerid,params[])
{
  new ID, MOEDAS;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "ud", ID, MOEDAS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /setarmoedasv [ID][QUANTIDADE]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Erro: ID invalido");
    PlayerMoedasInfo[ID][moedas] = MOEDAS;
    new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você setou as moedas de %s para %d.", GetName(ID), MOEDAS);
    SendClientMessage(playerid, verdeclaro, msgadm);
    new msgplayer[200];
    format(msgplayer, sizeof(msgplayer),"[MOEDAS] Suas moedas foram setadas para %d pelo admin %s.", MOEDAS, GetName(playerid));
    SendClientMessage(playerid, verdeclaro, msgplayer);
    return 1;
}

CMD:resetarmoedasv(playerid,params[])
{
    new ID;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "u", ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /resetarmoedasv [ID]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Erro: ID invalido");
    PlayerMoedasInfo[ID][moedas] = 0;
    new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você resetou as moedas de %s.", GetName(ID));
    SendClientMessage(playerid, verdeclaro, msgadm);
    new msgplayer[200];
    format(msgplayer, sizeof(msgplayer),"[MOEDAS] Suas moedas foram resetadas pelo admin %s.", GetName(playerid));
    SendClientMessage(playerid, verdeclaro, msgplayer);
    return 1;
}

CMD:vermoedasv(playerid,params[])
{
    new ID;
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "[MOEDAS] Você não é administrador !");
    if(sscanf(params, "u", ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /vermoedasv [ID]");
    new vermoedasv[200];
    format(vermoedasv, sizeof(vermoedasv),"[MOEDAS] %s tem %d moedas verdes.",GetName(ID), GetPlayerMoedasV(ID));
    SendClientMessage(playerid, verdeclaro, vermoedasv);
    return 1;
}

CMD:transferirmoedasv(playerid,params[])
{
    new ID, MOEDAS;
    if(sscanf(params, "ud", ID, MOEDAS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /transferirmoedasv [ID][QUANTIDADE]");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] ID invalido");
    if(MOEDAS >= PlayerMoedasInfo[playerid][moedas]) return SendClientMessage(playerid, vermelho,"[MOEDAS] Você não tem Moedas Verdes suficientes.");
    PlayerMoedasInfo[playerid][moedas] = PlayerMoedasInfo[playerid][moedas] - MOEDAS;
    PlayerMoedasInfo[ID][moedas] = PlayerMoedasInfo[ID][moedas] + MOEDAS;
    new msgadm[200];
    format(msgadm, sizeof(msgadm),"[MOEDAS] Você transferiu %d moedas para %s.", MOEDAS, GetName(ID));
    SendClientMessage(playerid, verdeclaro, msgadm);
    new msgplayer[200];
    format(msgplayer, sizeof(msgplayer),"[MOEDAS] %s transferiu %d moedas para você.", GetName(playerid), MOEDAS);
    SendClientMessage(playerid, verdeclaro, msgplayer);
  return 1;
}

// Comandos Player

CMD:comprardinheiro(playerid,params[])
{
  new qtd;
    if(sscanf(params, "d", qtd)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /comprardinheiro [QUANTIDADE] - 10000 Reais = 10 MV");
    if(qtd < 10000 || qtd > 500000) return SendClientMessage(playerid, vermelho,"[MOEDAS] Valor mínimo: 10000 Reais - Valor Máximo: 500000 Reais");
    if(qtd/1000 >= PlayerMoedasInfo[playerid][moedas]) return SendClientMessage(playerid, vermelho,"[MOEDAS] Você não tem Moedas Verdes suficientes.");
    PlayerMoedasInfo[playerid][moedas] = PlayerMoedasInfo[playerid][moedas] - qtd/1000;
    GivePlayerMoney(playerid, qtd);
    return 1;
}

CMD:comprarscore(playerid,params[])
{
  new qtd;
    if(sscanf(params, "d", qtd)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /comprarscore [QUANTIDADE] - 1000 Score = 10 MV");
    if(qtd < 1000 || qtd > 50000) return SendClientMessage(playerid, vermelho,"[MOEDAS] Valor mínimo: 1000 Score - Valor Máximo: 50000 Score por compra.");
    if(qtd/100 >= PlayerMoedasInfo[playerid][moedas]) return SendClientMessage(playerid, vermelho,"[MOEDAS] Você não tem Moedas Verdes suficientes.");
    PlayerMoedasInfo[playerid][moedas] = PlayerMoedasInfo[playerid][moedas] - qtd/100;
    SetPlayerScore(playerid,GetPlayerScore(playerid) +qtd);
    return 1;
}


// Stocks

stock GetName(playerid)
{
  new name[24];
  GetPlayerName(playerid,name,24);
  return name;
}

stock CriarMoedas(playerid)
{
    new arquivo[36];
  format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
    DOF2_CreateFile(arquivo);
    DOF2_SetInt(arquivo, "moedas", 0);
    DOF2_SaveFile();
    PlayerMoedasInfo[playerid][moedas] = 0;
}

stock CarregarMoedas(playerid)
{
    new arquivo[36];
  format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
  PlayerMoedasInfo[playerid][moedas] = 0;
  PlayerMoedasInfo[playerid][moedas] = DOF2_GetInt(arquivo, "moedas");


}

stock SalvarMoedas(playerid)
{
  new arquivo[36];
  format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
    DOF2_SetInt(arquivo, "moedas", PlayerMoedasInfo[playerid][moedas]);
    DOF2_SaveFile();
}

stock GetPlayerMoedasV(playerid)
{
  return MoedasV[playerid];
}

Código:
CMD:comprarnivel(playerid,params[])
{
    if(sscanf(params, "d", qtd)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /comprarnivel 1 Nivel = 10 MV");
    if(PlayerMoedasInfo[playerid][moedas] >= 10) return SendClientMessage(playerid, vermelho,"[MOEDAS] Você não tem Moedas Verdes suficientes.");
    PlayerMoedasInfo[playerid][moedas] = PlayerMoedasInfo[playerid][moedas] - 10;
    PlayerMoedasInfo[playerid][nivel] = PlayerMoedasInfo[playerid][nivel] + 1;
    return 1;
}

PlayerMoedasInfo[playerid][nivel] você substitui pelas informações do seu server rpg e é claro adicione as news e enum's que você for usar ao fs.

#5
Conteúdo patrocinado



Ver o tópico anterior Ver o tópico seguinte Ir para o topo Mensagem [Página 1 de 1]


Permissões neste sub-fórum
Não podes responder a tópicos