[Tutorial] Sistema de Pagamento
#1

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"1000true); // 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(
Playeri// 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 HourMinuteSecond// Cria a variavel das horas
        
gettime(HourMinuteSecond); // Pega o tempo
        
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
        
{
            if(
Minute == && Second == 0// Verifica se o minuto estб em 00 e o segundo tambйm
            
{
                
format(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Hour); // Diz que horas sгo com a variavel "Hour"
                
SendClientMessage(i, -1string); // Formataзгo
                
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
                
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
GivePlayerMoney(isalarionormal); // 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(
Playeri// 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(stringsizeof(string), "ATENЗГO: OCORREU UM PAGAMENTO ESPECIAL!"); 
            
SendClientMessage(i, -1string); // Formataзгo
            
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
            
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
GivePlayerMoney(isalarionormal); // 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(playeridparams[])
{
    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.
Reply
#2

Estб muito bom, bom progresso continue sempre estudando um dia vocк chegarб longe
Reply
#3

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
Reply
#4

Bacana. Dб pra otimizar mais aн, mas estб bacana.
Reply
#5

Bom tutorial, poderia usar bem menas linhas, enfim ajudarб muitos novatos.
Reply
#6

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.
Reply
#7

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"1000true); // 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(
Playeri// 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 HourMinuteSecond// Cria a variavel das horas
        
gettime(HourMinuteSecond); // Pega o tempo
        
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
        
{
            if(
Minute == && Second == 0// Verifica se o minuto estб em 00 e o segundo tambйm
            
{
                
format(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Hour); // Diz que horas sгo com a variavel "Hour"
                
SendClientMessage(i, -1string); // Formataзгo
                
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
                
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
GivePlayerMoney(playeridsalarionormal); // 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(
Playeri// 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(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Hour); // Diz que horas sгo com a variavel "Hour"
            
SendClientMessage(i, -1string); // Formataзгo
            
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
            
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
GivePlayerMoney(playeridsalarionormal); // 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(playeridparams[])
{
    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.
Reply
#8

Algo mais ou menos assim:

PHP код:
#define horas(%0) (1000 * %0 * 60 * 60)
new payday;
public 
OnGameModeInit() {
    
payday SetTimer("Pagamento"1000true);
    return 
1;
}
forward Pagamento();
public 
Pagamento() {
    new 
Time[3];
    
gettime(Time[0], Time[1], Time[2]);
    if(
Time[0] == && Time[1] == 0) {
        
KillTimer(payday);
        new 
string[128];
        new 
salario 750 random(1000);
        foreach(
Playeri) {
            
format(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Time[0]);
            
SendClientMessage(i, -1string);
            
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|");
            
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);
            
SendClientMessage(i, -1string);
            
format(stringsizeof(string), "Plano de saъde: -R$250");
            
SendClientMessage(i, -1string);
            
GivePlayerMoney(isalarionormal 300);
        }
        
SetTimer("Pagamento"horas(1), true);
    }
    return 
1;
}  
forward PagamentoManual();
public 
PagamentoManual() {
    new 
Time[3];
    
gettime(Time[0], Time[1], Time[2]);
    foreach(
Playeri) {
        new 
string[128];
        new 
salario 750 random(1000);
        
format(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Time[0]);
        
SendClientMessage(i, -1string);
        
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|");
        
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);
        
SendClientMessage(i, -1string);
        
format(stringsizeof(string), "Plano de saъde: -R$250");
        
SendClientMessage(i, -1string);
        
GivePlayerMoney(playeridsalarionormal 300);
    }
    return 
1;
}  
CMD:pagamentomanual(playeridparams[]) {
    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.
Reply
#9

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"1000true); // 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(
Playeri// 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 HourMinuteSecond// Cria a variavel das horas
        
gettime(HourMinuteSecond); // Pega o tempo
        
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
        
{
            if(
Minute == && Second == 0// Verifica se o minuto estб em 00 e o segundo tambйm
            
{
                
format(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Hour); // Diz que horas sгo com a variavel "Hour"
                
SendClientMessage(i, -1string); // Formataзгo
                
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
                
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
                
SendClientMessage(i, -1string); // Formataзгo
                
GivePlayerMoney(playeridsalarionormal); // 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(
Playeri// 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(stringsizeof(string), "ATENЗГO: AGORA SГO %d:00 HORAS!"Hour); // Diz que horas sгo com a variavel "Hour"
            
SendClientMessage(i, -1string); // Formataзгo
            
SendClientMessage(i,-1"|_____  PAGAMENTO  _____|"); // SCM dizendo que й o pagamento, (caso queira mudar as cores, mude o "-1")
            
format(stringsizeof(string), "Salario: R$%d   Imposto: -R$50"salarionormal);  // Diz quanto o jogador ganhou do salбrio e diz o valor do imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
format(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto.
            
SendClientMessage(i, -1string); // Formataзгo
            
GivePlayerMoney(playeridsalarionormal); // 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(playeridparams[])
{
    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"1000true); 
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(playeridsalarionormal); // 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(playeridparams[]) 
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(Playeri// 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 HourMinuteSecond// Cria a variavel das horas
        
gettime(HourMinuteSecond); // Pega o tempo
        
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
        
{
            if(
Minute == && 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(
Playeri// 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(stringsizeof(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(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto. 
                
SendClientMessage(i, -1string); // 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!
Reply
#10

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"1000true); 
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(playeridsalarionormal); // 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(playeridparams[]) 
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(Playeri// 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 HourMinuteSecond// Cria a variavel das horas
        
gettime(HourMinuteSecond); // Pega o tempo
        
if(IsPlayerConnected(i)) // Verifica se o player estб conectado
        
{
            if(
Minute == && 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(
Playeri// 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(stringsizeof(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(stringsizeof(string), "Plano de saъde: -R$250"); // SCM dizendo valor do plano, sem funзгo, apenas diz o valor, igual ao imposto. 
                
SendClientMessage(i, -1string); // 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!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)