Bom, atendendo a pedidos codei esse sistema de moeda secundária bem mais completo... o que nao se acha por ai pra download, pelo menos não de graça rs
Vou deixar desde ja explicado que esse codigo, assim como todos de minha autoria não vem mastigadinho pra voce por no seu server. Eu apenas crio tudo que voce precisa para entender como fazer ele funcionar e depois voce adapta ele ao seu servidor. " A mas como assim brinquedo ?" por exemplo as linhas que geram dinheiro no comando /comprardinheiro tem que ser com as infos do seu server para ele salvar o dinheiro comprado na pasta certa e tudo mais... conto com o bom senso de todos.
Eu particularmente odeio filterscripts, gosto de adptar todos eles ao meu gm para evitar bugs, então fiz esse fs pensando nisso, até pq o gm que eu testei ele é zerado, n tem nada, justamente para testar filterscripts. então sintam-se a vontade e façam o que quiserem.
Creditos: BrinqueDo
Vou deixar desde ja explicado que esse codigo, assim como todos de minha autoria não vem mastigadinho pra voce por no seu server. Eu apenas crio tudo que voce precisa para entender como fazer ele funcionar e depois voce adapta ele ao seu servidor. " A mas como assim brinquedo ?" por exemplo as linhas que geram dinheiro no comando /comprardinheiro tem que ser com as infos do seu server para ele salvar o dinheiro comprado na pasta certa e tudo mais... conto com o bom senso de todos.
Eu particularmente odeio filterscripts, gosto de adptar todos eles ao meu gm para evitar bugs, então fiz esse fs pensando nisso, até pq o gm que eu testei ele é zerado, n tem nada, justamente para testar filterscripts. então sintam-se a vontade e façam o que quiserem.
- Código:
/* Sistema de Moedas Verdes v1.0 - by BrinqueDo
Primeira versão do sistema de moeda secundária (Moedas Verdes)
- Salvamento de moedas para cada usuario em DOF2.
- Primeiro comando de compra com mv's criados para seguirem o exemplo.
- Comandos Admin: /darmoedasv - /darmoedasvtodos - /setarmoedasv - /setarmoedasvtodos - /resetarmoedasv logado em rcon
- Sisteminha simples adicionado na compra para verificar se o usuario tem ou não mv's suficientes para efetuar a compra
e pode ser usado como exemplo para a criação dos outros comandos.
Créditos: A idéia de moeda secundária n faço a minima ideia de quem inventou, só atendi a pedidos e criei esse sisteminha mais completo.
O nome Moedas Verdes foi criado pelo BPF.
O code aqui contido foi criado do zero inteiramente por mim. Eu autorizo a cópia e alteração dos codes porém com os devidos créditos originais.
Obs. é necessario ter o plugin sscanf.inc dentro da pasta plugins no diretorio do seu servidor, e adicione tambem a linha "plugins sscanf" ao seu server.cfg
*/
#include <a_samp>
#include <DOF2>
#include <zcmd>
#include <sscanf2>
//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
//enum's
enum info
{
moedas,
}
// News
new PlayerInfo[MAX_PLAYERS][info];
new MoedasV[MAX_PLAYERS];
new ID;
new PONTOS;
new Text:Moedas;
// Forwards
forward Dinheiro(playerid);
//Publics
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("Sistema de Moedas Verdes - by BrinqueDo");
print("--------------------------------------\n");
SetTimer("Dinheiro",1000, 1); // Fica atualizando o numero de moedas
return 1;
}
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))
{
CarregarConta(playerid);
}
else
{
CriarConta(playerid);
}
return 1;
}
public OnPlayerSpawn(playerid)
{
TextDrawShowForPlayer(playerid, Moedas);
}
public Dinheiro(playerid)
{
TextDrawDestroy(Moedas);
new str[128];
format(str, 256, "~g~MV~r~:~w~%d", PlayerInfo[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 OnPlayerRequestClass(playerid, classid)
{
SpawnPlayer(playerid); // E depois disso, ele 'Spawnará'
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarConta(playerid);
return 1;
}
public OnFilterScriptExit()
{
TextDrawHideForAll(Moedas);
TextDrawDestroy(Moedas);
DOF2_Exit();
return 1;
}
CMD:moedasv(playerid)
{
SendClientMessage(playerid, azul, "Comandos Admin: /darmoedasv - /darmoedasvtodos - /setarmoedasv - /setarmoedasvtodos - /resetarmoedasv");
SendClientMessage(playerid, azul, "Comandos Player: /comprardinheiro");
return 1;
}
// Comandos Admin
CMD:darmoedasv(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "Você não é administrador !");
if(sscanf(params, "ud", ID, PONTOS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /darmoedasv [ID][QUANTIDADE]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[ERRO] ID invalido");
PlayerInfo[ID][moedas] = PlayerInfo[ID][moedas] + PONTOS;
return 1;
}
CMD:darmoedasvtodos(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "Você não é administrador !");
if(sscanf(params, "d", PONTOS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /darmoedasvtodos [QUANTIDADE]");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerInfo[i][moedas] = PlayerInfo[i][moedas] + PONTOS;
}
}
return 1;
}
CMD:setarmoedasvtodos(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "Você não é administrador !");
if(sscanf(params, "d", PONTOS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /setarmoedasvtodos [QUANTIDADE]");
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
PlayerInfo[i][moedas] = PONTOS;
}
}
return 1;
}
CMD:setarmoedasv(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "Você não é administrador !");
if(sscanf(params, "ud", ID, PONTOS)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /setarmoedasv [ID][QUANTIDADE]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[ERRO] ID invalido");
PlayerInfo[ID][moedas] = PONTOS;
return 1;
}
CMD:resetarmoedasv(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, cinza, "Você não é administrador !");
if(sscanf(params, "u", ID)) return SendClientMessage(playerid, vermelho, "[MOEDAS] Use /resetarmoedasv [ID]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, vermelho, "[ERRO] ID invalido");
PlayerInfo[ID][moedas] = 0;
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,"Valor mínimo: 10000 Reais - Valor Máximo: 500000 Reais");
if(qtd/1000 >= PlayerInfo[playerid][moedas]) return SendClientMessage(playerid, vermelho,"Você não tem Moedas Verdes suficientes.");
PlayerInfo[playerid][moedas] = PlayerInfo[playerid][moedas] - qtd/1000;
GivePlayerMoney(playerid, qtd);
return 1;
}
// Stocks
stock GetName(playerid)
{
new name[24];
GetPlayerName(playerid,name,24);
return name;
}
stock CriarConta(playerid)
{
new arquivo[36];
format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
DOF2_CreateFile(arquivo);
DOF2_SetInt(arquivo, "moedas", 0);
DOF2_SaveFile();
}
stock CarregarConta(playerid)
{
new arquivo[36];
format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
PlayerInfo[playerid][moedas] = 0;
PlayerInfo[playerid][moedas] = DOF2_GetInt(arquivo, "moedas");
}
stock SalvarConta(playerid)
{
new arquivo[36];
format(arquivo,sizeof arquivo,"/moedas/%s.txt",GetName(playerid));
DOF2_SetInt(arquivo, "moedas", PlayerInfo[playerid][moedas]);
DOF2_SaveFile();
}
stock GetPlayerMoedasV(playerid)
{
return MoedasV[playerid];
}
Creditos: BrinqueDo