pedido : Sistema de gold
Comentбrios : com os comandos todos desbugados por favor e q de para trocar em dinheiro e score e cada 5 minutos ganha gold e q tenha uma textdraw marcando a quantidade de golds *-* |
#include a_samp
#include DOF2
#include zcmd
#include sscanf2
#define DIALOG_MENU 125
#define Salvos "Gold\%s.ini"// LOCAL QUE SALVA A CONTA COM O GOLD
new Gold[MAX_PLAYERS],// VARIAVEL DO GOLD
Text:GoldText[MAX_PLAYERS],
DName[MAX_PLAYER_NAME],
Don[100],
ID,
Quantia;
public OnFilterScriptInit()
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, DName, sizeof(DName));
format(Don, sizeof(Don), Salvos, DName);
if(DOF2_FileExists(Don))
{
Gold[playerid] = DOF2_GetInt(Don, "Gold");
}
else
{
DOF2_CreateFile(Don);
DOF2_SetInt(Don, "Gold", 0);
DOF2_SaveFile();
DOF2_Exit();
}
format(Don,sizeof(Don),"-!- Vocк possui %d Gold.", DOF2_GetInt(Don, "Gold"));
SendClientMessage(playerid, -1, Don);
SSetTimerEx("Atualizar", 1000, true, "i", playerid);
SetTimerEx("Ganha", 1000*60*5, true, "i", playerid);
GoldText[playerid] = TextDrawCreate(58.000000, 307.000000, "");
TextDrawBackgroundColor(GoldText[playerid], 255);
TextDrawFont(GoldText[playerid], 2);
TextDrawLetterSize(GoldText[playerid], 0.300000, 1.900000);
TextDrawColor(GoldText[playerid], -1);
TextDrawSetOutline(GoldText[playerid], 0);
TextDrawSetProportional(GoldText[playerid], 1);
TextDrawSetShadow(GoldText[playerid], 1);
TextDrawSetSelectable(GoldText[playerid], 0);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
GetPlayerName(playerid, DName, sizeof(DName));
format(Don, sizeof(Don), Salvos, DName);
DOF2_SetInt(Don, "Gold", Gold[playerid]);
DOF2_Save();
DOF2_Exit();
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_MENU:
{
if(!response)return true;
switch(listitem)
{
case 0:
{
if(Gold[playerid] < 20)return SendClientMessage(playerid,-1,"-!- Vocк nгo tem todo o score necesario.");
GivePlayerMoney(playerid, 1000);// OU FAZER SETAR COM A FUNЗAO DE SEU GAMEMODE
Gold[playerid] -= 20;
SendClientMessage(playerid, -1,"-!- Compra efetuada com sucesso!");
}
case 1:
{
if(Gold[playerid] < 40)return SendClientMessage(playerid,-1,"-!- Vocк nгo tem todo o score necesario.");
GivePlayerMoney(playerid, 2000);// OU FAZER SETAR COM A FUNЗAO DE SEU GAMEMODE
Gold[playerid] -= 40;
SendClientMessage(playerid, -1,"-!- Compra efetuada com sucesso!");
}
case 2:
{
if(Gold[playerid] < 10)return SendClientMessage(playerid,-1,"-!- Vocк nгo tem todo o score necesario.");
SetPlayerScore(playerid, 5);// OU FAZER SETAR COM A FUNЗAO DE SEU GAMEMODE
Gold[playerid] -= 10;
SendClientMessage(playerid, -1,"-!- Compra efetuada com sucesso!");
}
case 3:
{
if(Gold[playerid] < 20)return SendClientMessage(playerid,-1,"-!- Vocк nгo tem todo o score necesario.");
SetPlayerScore(playerid, 10);// OU FAZER SETAR COM A FUNЗAO DE SEU GAMEMODE
Gold[playerid] -= 20;
SendClientMessage(playerid, -1,"-!- Compra efetuada com sucesso!");
}
}
}
}
return 1;
}
forward Ganha(playerid);
public Ganha(playerid)
{
Gold[playerid] += 1;
return true;
}
forward Atualizar(playerid);
public Atualizar(playerid)
{
format(Don,sizeof(Don),"Gold %d", Gold[playerid]);
TextDrawSetString(GoldText[playerid], Don);
TextDrawShowForPlayer(playerid, GoldText[playerid]);
return 1;
}
command(dargold,playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"-!- Vocк nгo esta logado na RCON!");
if(sscanf(params, "ud", ID, Quantia))return SendClientMessage(playerid, -1,"-!- Uso /dargold [ID] [Quantia]");
if(!IsPlayerConnected(ID))return SendClientMessage(playerid,-1,"-!- PlayerOff!");
Gold[ID] += Quantia;
format(Don,sizeof(Don),"-!- Vocк ganhou %d de gold , e possui %d Goldґs.", Quantia, Gold[ID]);
SendClientMessage(ID,-1,Don);
format(Don,sizeof(Don),"-!- Vocк deu %d para o ID %d, agora ele possui %d Goldґs.", Quantia , ID, Gold[ID]);
SendClientMessage(playerid,-1,Don);
return true;
}
command(tirargold,playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"-!- Vocк nгo esta logado na RCON!");
if(sscanf(params, "ud", ID, Quantia))return SendClientMessage(playerid, -1,"-!- Uso /tirargold [ID] [Quantia]");
if(!IsPlayerConnected(ID))return SendClientMessage(playerid,-1,"-!- PlayerOff!");
Gold[ID] -= Quantia;
format(Don,sizeof(Don),"-!- Vocк perdeu %d de gold , e possui %d Goldґs.", Quantia, Gold[ID]);
SendClientMessage(ID,-1,Don);
format(Don,sizeof(Don),"-!- Vocк tirou %d do ID %d, agora ele possui %d Goldґs.", Quantia , ID, Gold[ID]);
SendClientMessage(playerid,-1,Don);
return true;
}
command(resetargold,playerid,params[])
{
if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,-1,"-!- Vocк nгo esta logado na RCON!");
if(sscanf(params, "u", ID))return SendClientMessage(playerid, -1,"-!- Uso /resetargold [ID]");
if(!IsPlayerConnected(ID))return SendClientMessage(playerid,-1,"-!- PlayerOff!");
Gold[ID] -= Quantia;
format(Don,sizeof(Don),"-!- Vocк teve o gold resetado pelo id %d,", playerid);
SendClientMessage(ID,-1,Don);
format(Don,sizeof(Don),"-!- Vocк resetou o gold do id %d.",ID);
SendClientMessage(playerid,-1,Don);
return true;
}
command(menu,playerid,params[])
{
ShowPlayerDialog(playerid, DIALOG_MENU, DIALOG_STYLE_LIST, "Menu", "20 Gold = 1K\n 40 Gold 2k\n10Gold = 5 Score\n20Gold = 10 Score", "Continuar", "Cancelar");
return 1;
}
public OnPlayerSpawn(playerid)
{
SetTimer("Atualizar", 1000, true);
return 1;
}
pawn Код:
|
nгo й a primeira vez que ele erra no uso de Timers k acho que ele tem algum problema com o SettimerEx
bacana Don daria para usar como compra de coisas especiais Jetpack e tudo mais ! |
Tudo fail esses timers ae campeгo, ambos sу vгo funcionar para o ID 0.
|
SetTimer("Ganha", 1000*60*5, true);SetTimer("Atualizar", 1000, true);
public OnPlayerSpawn(playerid)
{
SetTimerEx("Atualizar", 1000, true, "i", playerid);//Correto pois sinal que chamarб a public para este player!
return 1;
}
//no outro caso!
SetTimerEx("Ganha", 1000*60*5, true, "i", playerid);
i Representa um parвmetro inteiro.
d Exatamente o mesmo que eu.
A passa de uma matriz, o prуximo parвmetro deve ser um inteiro ("i") com tamanho da matriz. [ATUALMENTE UNUSABLE]
S representa um parвmetro de cadeia. [ATUALMENTE UNUSABLE]
f representa um parвmetro float.
b representa um parвmetro booleano.
translate !
vou tentar da uma Explicadinha!
o settimer normal seta um Tempo para chamar uma Public Global sem parametros. agora se for chamar uma Public para um player й preciso que se use TimerEx para ser setado para um player corretamente! caso ao contrario pode atй chamar a public corretamente mais sу par ao ID 0 ali no seu caso! pawn Код:
https://sampwiki.blast.hk/wiki/SetTimerEx gostei da ideia do FS parabens! |