Sistema de Pagamento -
Raayzeck - 12.09.2018
Olб pessoal.
Bom, a cada dia que passa adquirimos novos membros no fуrum sa-mp e com a simples intenзгo de criar um servidor RP/G, e bom, para evitarmos que fiquem simplesmente pegando um gamemode postado aqui, faзa uma simples ediзгo e lance o mesmo, eu estou criando alguns tutoriais bem simples porйm que pode ajudar alguns novatos.
O que й
Bom, o sistema de "pagamento" tambйm conhecido como sistema de "payday" й o salбrio que toda a hora exata (11:00, 12:00, 13:00, e assim sucessivamente) ele faz um pagamento do salбrio para o jogador.
O que й necessбrio
Bom, pode ser feito de vбrias maneiras, porйm, nesse tutorial estarei utilizando a include
Foreach e a include
ZCMD, ambas sгo fбceis de serem utilizadas.
Vamos comeзar entгo, primeiramente adicione no
topo de seu gamemode
PHP код:
#include zcmd
#include foreach
Agora vamos comeзar o sistema de verdade.
Na public
OnGameModeInit()
vamos adicionar o timer
PHP код:
SetTimer("Pagamento", 1000, true); // Pagamento й a callback que serб chamada
Agora, em um lugar junto com as suas outras publics vamos criar a public do pagamento.
PHP код:
forward Pagamento(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public Pagamento()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
new Hour, Minute, Second; // Cria a variavel das horas
gettime(Hour, Minute, Second); // Pega o tempo
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
if(Minute == 0 && Second == 0) // Verifica se o minuto estб em 00 e o segundo tambйm
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(i, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(i, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
}
return 1; // Retorna ao valor
}
Agora vamos criar um pagamento manual, para os administradores poderem aplicar a hora que quiser. Vamos lб, iremos criar uma nova public agora, porйm, nгo teremos mais a funзгo das horas.
PHP код:
forward PagamentoManual(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public PagamentoManual()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1750
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
format(string, sizeof(string), "ATENЗГO: OCORREU UM PAGAMENTO ESPECIAL!");
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(i, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(i, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
return 1; // Retorna ao valor
}
Agora o comando
PHP код:
CMD:pagamentomanual(playerid, params[])
{
if (IsPlayerAdmin(playerid)) //Verifica se o jogador й um administrador logado na rcon
{
PagamentoManual(); // Chama a public PagamentoManual(), fazendo com que ela seja ativa de imediato
SendClientMessageToAll( -1, "Um administrador vez um PaydayManual");
}
else // verifica se o player nгo й administrador
{
SendClientMessage(playerid, -1, "Vocк nгo pode usar este comando!"); // retorna a mensagem para o player se ele nгo estб logado na rcon
}
return true; // retorna ao valor
}
Bom, o tutorial й basicamente isso, eu nгo sei explicar muito bem porйm tentei deixar bem dinвmico e fбcil de entender, entгo й isso, atй a prуxima pessoal.
Re: Sistema de Pagamento -
HelderPT - 12.09.2018
Estб muito bom, bom progresso continue sempre estudando um dia vocк chegarб longe
Re: Sistema de Pagamento -
Raayzeck - 12.09.2018
Quote:
Originally Posted by HelderPT
Estб muito bom, bom progresso continue sempre estudando um dia vocк chegarб longe
|
Muito obrigado, estou sempre tentando melhorar e o que eu jб aprendi estou tentando deixar de livre acesso para todos poderem estudar
Re: Sistema de Pagamento -
ipsLuan - 12.09.2018
Bacana. Dб pra otimizar mais aн, mas estб bacana.
Re: Sistema de Pagamento -
Malandrin - 12.09.2018
Bom tutorial, poderia usar bem menas linhas, enfim ajudarб muitos novatos.
Re: Sistema de Pagamento -
Raayzeck - 12.09.2018
Quote:
Originally Posted by ipsLuan
Bacana. Dб pra otimizar mais aн, mas estб bacana.
|
Como eu poderia deixar o cуdigo mais otimizado? nessa questгo de otimizaзгo eu ainda estou boiando.
Quote:
Originally Posted by Malandrin
Bom tutorial, poderia usar bem menas linhas, enfim ajudarб muitos novatos.
|
Sim, eu poderia ter economizado algumas linhas realmente, porйm, para explicar preferi deixar assim e sobre a otimizaзгo eu jб nгo sei muito bem.
Re: Sistema de Pagamento -
zF3lKy3 - 12.09.2018
Quote:
Originally Posted by Raayzeck
Olб pessoal.
Bom, a cada dia que passa adquirimos novos membros no fуrum sa-mp e com a simples intenзгo de criar um servidor RP/G, e bom, para evitarmos que fiquem simplesmente pegando um gamemode postado aqui, faзa uma simples ediзгo e lance o mesmo, eu estou criando alguns tutoriais bem simples porйm que pode ajudar alguns novatos.
O que й
Bom, o sistema de "pagamento" tambйm conhecido como sistema de "payday" й o salбrio que toda a hora exata (11:00, 12:00, 13:00, e assim sucessivamente) ele faz um pagamento do salбrio para o jogador.
O que й necessбrio
Bom, pode ser feito de vбrias maneiras, porйm, nesse tutorial estarei utilizando a include Foreach e a include ZCMD, ambas sгo fбceis de serem utilizadas.
Vamos comeзar entгo, primeiramente adicione no topo de seu gamemode
PHP код:
#include zcmd
#include foreach
Agora vamos comeзar o sistema de verdade.
Na public OnGameModeInit()
vamos adicionar o timer
PHP код:
SetTimer("Pagamento", 1000, true); // Pagamento й a callback que serб chamada
Agora, em um lugar junto com as suas outras publics vamos criar a public do pagamento.
PHP код:
forward Pagamento(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public Pagamento()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
new Hour, Minute, Second; // Cria a variavel das horas
gettime(Hour, Minute, Second); // Pega o tempo
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
if(Minute == 0 && Second == 0) // Verifica se o minuto estб em 00 e o segundo tambйm
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
}
return 1; // Retorna ao valor
}
Agora vamos criar um pagamento manual, para os administradores poderem aplicar a hora que quiser. Vamos lб, iremos criar uma nova public agora, porйm, nгo teremos mais a funзгo das horas.
PHP код:
forward PagamentoManual(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public PagamentoManual()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
return 1; // Retorna ao valor
}
Agora o comando
PHP код:
CMD:pagamentomanual(playerid, params[])
{
if (IsPlayerAdmin(playerid)) //Verifica se o jogador й um administrador logado na rcon
{
PagamentoManual(playerid); // Chama a public PagamentoManual(), fazendo com que ela seja ativa de imediato
SendClientMessageToAll(playerid, -1, "Um administrador vez um PaydayManual");
}
else // verifica se o player nгo й administrador
{
SendClientMessage(playerid, -1, "Vocк nгo pode usar este comando!"); // retorna a mensagem para o player se ele nгo estб logado na rcon
}
return true; // retorna ao valor
}
Bom, o tutorial й basicamente isso, eu nгo sei explicar muito bem porйm tentei deixar bem dinвmico e fбcil de entender, entгo й isso, atй a prуxima pessoal.
|
Posso estб enganado, mas porque vocк colocou if (IsPlayerConnected (i)), se o foreach jб percorre os players conectados ? (Posso estб enganado) porйm, bom trabalho, irб ajudar vбrios.
Re: Sistema de Pagamento -
ipsLuan - 12.09.2018
Algo mais ou menos assim:
PHP код:
#define horas(%0) (1000 * %0 * 60 * 60)
new payday;
public OnGameModeInit() {
payday = SetTimer("Pagamento", 1000, true);
return 1;
}
forward Pagamento();
public Pagamento() {
new Time[3];
gettime(Time[0], Time[1], Time[2]);
if(Time[0] == 0 && Time[1] == 0) {
KillTimer(payday);
new string[128];
new salario = 750 + random(1000);
foreach(Player, i) {
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Time[0]);
SendClientMessage(i, -1, string);
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|");
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal);
SendClientMessage(i, -1, string);
format(string, sizeof(string), "Plano de saъde: -R$250");
SendClientMessage(i, -1, string);
GivePlayerMoney(i, salarionormal - 300);
}
SetTimer("Pagamento", horas(1), true);
}
return 1;
}
forward PagamentoManual();
public PagamentoManual() {
new Time[3];
gettime(Time[0], Time[1], Time[2]);
foreach(Player, i) {
new string[128];
new salario = 750 + random(1000);
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Time[0]);
SendClientMessage(i, -1, string);
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|");
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal);
SendClientMessage(i, -1, string);
format(string, sizeof(string), "Plano de saъde: -R$250");
SendClientMessage(i, -1, string);
GivePlayerMoney(playerid, salarionormal - 300);
}
return 1;
}
CMD:pagamentomanual(playerid, params[]) {
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo pode usar este comando!");
PagamentoManual(playerid);
SendClientMessageToAll(playerid, -1, "Um administrador fez um PaydayManual");
return 1;
}
Perceba que eu uso
KillTimer para parar o loop apуs encontrar o horбrio certo do payday e depois uso
SetTimer para ele voltar realizar a funзгo depois de 01 hora.
Re: Sistema de Pagamento -
humildadeforever - 13.09.2018
Quote:
Originally Posted by Raayzeck
Olб pessoal.
Bom, a cada dia que passa adquirimos novos membros no fуrum sa-mp e com a simples intenзгo de criar um servidor RP/G, e bom, para evitarmos que fiquem simplesmente pegando um gamemode postado aqui, faзa uma simples ediзгo e lance o mesmo, eu estou criando alguns tutoriais bem simples porйm que pode ajudar alguns novatos.
O que й
Bom, o sistema de "pagamento" tambйm conhecido como sistema de "payday" й o salбrio que toda a hora exata (11:00, 12:00, 13:00, e assim sucessivamente) ele faz um pagamento do salбrio para o jogador.
O que й necessбrio
Bom, pode ser feito de vбrias maneiras, porйm, nesse tutorial estarei utilizando a include Foreach e a include ZCMD, ambas sгo fбceis de serem utilizadas.
Vamos comeзar entгo, primeiramente adicione no topo de seu gamemode
PHP код:
#include zcmd
#include foreach
Agora vamos comeзar o sistema de verdade.
Na public OnGameModeInit()
vamos adicionar o timer
PHP код:
SetTimer("Pagamento", 1000, true); // Pagamento й a callback que serб chamada
Agora, em um lugar junto com as suas outras publics vamos criar a public do pagamento.
PHP код:
forward Pagamento(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public Pagamento()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
new Hour, Minute, Second; // Cria a variavel das horas
gettime(Hour, Minute, Second); // Pega o tempo
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
if(Minute == 0 && Second == 0) // Verifica se o minuto estб em 00 e o segundo tambйm
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
}
return 1; // Retorna ao valor
}
Agora vamos criar um pagamento manual, para os administradores poderem aplicar a hora que quiser. Vamos lб, iremos criar uma nova public agora, porйm, nгo teremos mais a funзгo das horas.
PHP код:
forward PagamentoManual(); // Criarmos uma funзгo com public & forward й mais vantajoso, alem de poder ser chamada com CallRemote(Local)Function & SetTimer(Ex), tambйm й rбpida.
public PagamentoManual()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
SendClientMessage(i, -1, string); // Formataзгo
SendClientMessage(i,-1, "|_____ PAGAMENTO _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
format(string, sizeof(string), "Salario: R$%d Imposto: -R$50", salarionormal); // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
SendClientMessage(i, -1, string); // Formataзгo
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
}
}
return 1; // Retorna ao valor
}
Agora o comando
PHP код:
CMD:pagamentomanual(playerid, params[])
{
if (IsPlayerAdmin(playerid)) //Verifica se o jogador й um administrador logado na rcon
{
PagamentoManual(playerid); // Chama a public PagamentoManual(), fazendo com que ela seja ativa de imediato
SendClientMessageToAll(playerid, -1, "Um administrador vez um PaydayManual");
}
else // verifica se o player nгo й administrador
{
SendClientMessage(playerid, -1, "Vocк nгo pode usar este comando!"); // retorna a mensagem para o player se ele nгo estб logado na rcon
}
return true; // retorna ao valor
}
Bom, o tutorial й basicamente isso, eu nгo sei explicar muito bem porйm tentei deixar bem dinвmico e fбcil de entender, entгo й isso, atй a prуxima pessoal.
|
Vocк nem tentou compilar isso, nй?
Alguns erros e algumas dicas:
1. Como existe apenas um comando, que й bem simples, vocк poderia ensinar a fazк-lo em strcmp tambйm, visto que tem muita gente que ainda usa.
2. Aqui:
PHP код:
SetTimer("Pagamento", 1000, true);
Vocк nгo explicou o que й o
1000 e o que й o
true. Tem gente que nгo sabe.
3. Aqui:
PHP код:
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
O mбximo й 1750 e nгo 1000.
4. Nesta parte:
PHP код:
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
Quem й playerid? Nгo seria "i"?
5.
PHP код:
CMD:pagamentomanual(playerid, params[])
O comando nгo tem parвmetro, logo, nгo precisa de
params[]
6.
PHP код:
SendClientMessageToAll(playerid, -1, "Um administrador vez um PaydayManual");
Vocк jб viu "SendClientMessageToAll" usar "playerid"?
7.
Como vocк definiu:
PHP код:
forward PagamentoManual();
public PagamentoManual()
Como vocк chamou:
PHP код:
PagamentoManual(playerid);
8.
Atente-se a essa parte:
PHP код:
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
new Hour, Minute, Second; // Cria a variavel das horas
gettime(Hour, Minute, Second); // Pega o tempo
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
if(Minute == 0 && Second == 0) // Verifica se o minuto estб em 00 e o segundo tambйm
{
Viu que vocк cria o loop e depois checa se й a hora de dar o PayDay?
A verificaзгo do minuto e do segundo deveria estar antes de tudo.
9. No pagamento manual:
PHP код:
public PagamentoManual()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
Onde estб a variбvel Hour?
Se o admin pode dar /pagamentomanual qualquer hora, por que a mensagem garante que o minuto й "00"?
10.
PHP код:
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
Qual a necessidade de usar formataзгo nessa mensagem?
11. Nгo tinha necessidade de vocк criar duas callbacks para dar payday. Bastava vocк criar uma bool, setar ela como true no comando, verificar se ela й true na callback de Pagamento por Timer, executar o cуdigo de payday e, no fim, setar a variбvel como false de novo para nгo ficar dando payday de 1 em 1s.
Nгo me leve a mal... Mas й necessбrio aprender primeiro antes de querer ensinar, moзo.
Siga as dicas, refaзa o tutorial e tente compilar o cуdigo antes de postar!
Re: Sistema de Pagamento -
zF3lKy3 - 13.09.2018
Quote:
Originally Posted by humildadeforever
Vocк nem tentou compilar isso, nй?
Alguns erros e algumas dicas:
1. Como existe apenas um comando, que й bem simples, vocк poderia ensinar a fazк-lo em strcmp tambйm, visto que tem muita gente que ainda usa.
2. Aqui:
PHP код:
SetTimer("Pagamento", 1000, true);
Vocк nгo explicou o que й o 1000 e o que й o true. Tem gente que nгo sabe.
3. Aqui:
PHP код:
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
O mбximo й 1750 e nгo 1000.
4. Nesta parte:
PHP код:
GivePlayerMoney(playerid, salarionormal); // Adiciona o salбrio randomico que o jogador ganhou
GivePlayerMoney(playerid, -300); // Retira o valor do imposto + plano de saъde do jogador, 250+50 = 300
Quem й playerid? Nгo seria "i"?
5.
PHP код:
CMD:pagamentomanual(playerid, params[])
O comando nгo tem parвmetro, logo, nгo precisa de params[]
6.
PHP код:
SendClientMessageToAll(playerid, -1, "Um administrador vez um PaydayManual");
Vocк jб viu "SendClientMessageToAll" usar "playerid"?
7.
Como vocк definiu:
PHP код:
forward PagamentoManual();
public PagamentoManual()
Como vocк chamou:
PHP код:
PagamentoManual(playerid);
8.
Atente-se a essa parte:
PHP код:
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
new Hour, Minute, Second; // Cria a variavel das horas
gettime(Hour, Minute, Second); // Pega o tempo
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
if(Minute == 0 && Second == 0) // Verifica se o minuto estб em 00 e o segundo tambйm
{
Viu que vocк cria o loop e depois checa se й a hora de dar o PayDay?
A verificaзгo do minuto e do segundo deveria estar antes de tudo.
9. No pagamento manual:
PHP код:
public PagamentoManual()
{
foreach(Player, i) // loop do foreach
{
new string[128]; // Vai formatar o "SendClientMessage"
new salario = 750 + random(1000); // Valor random do salбrio, minimo de 750 e mбximo de 1000
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
{
format(string, sizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!", Hour); // Diz que horas sгo com a variavel "Hour"
Onde estб a variбvel Hour?
Se o admin pode dar /pagamentomanual qualquer hora, por que a mensagem garante que o minuto й "00"?
10.
PHP код:
format(string, sizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
SendClientMessage(i, -1, string); // Formataзгo
Qual a necessidade de usar formataзгo nessa mensagem?
11. Nгo tinha necessidade de vocк criar duas callbacks para dar payday. Bastava vocк criar uma bool, setar ela como true no comando, verificar se ela й true na callback de Pagamento por Timer, executar o cуdigo de payday e, no fim, setar a variбvel como false de novo para nгo ficar dando payday de 1 em 1s.
Nгo me leve a mal... Mas й necessбrio aprender primeiro antes de querer ensinar, moзo.
Siga as dicas, refaзa o tutorial e tente compilar o cуdigo antes de postar!
|
Boa!