SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 10/07/2019, 01:45 AM   #1
Ryuzaki07
Huge Clucker
 
Ryuzaki07's Avatar
 
Join Date: Mar 2017
Posts: 238
Reputation: 0
Question Sistema de casa com imposto quase pronto

Boa noite pessoal, acabei de finalizar meu sistema de casa. e gostaria de aplicar imposto nele. o sistema de imposto ta feito e pronto, e funcionando. porem está com um bug, o bug é o seguinte.

Toda vez que eu digitar um comando, chama a função de imposto, faz a vereficação de todas as casas existentes do servidor, e aplica o imposto, o problema é que se tem 10 casas, e dessas 10, 3 casas estão compradas, o imposto não cai +1 cai 3 imposto de uma vez só.

E minha intenção é fazer cair 1 imposto em cada casa comprada. e quando bater 5 imposto, ela vai ser liberada ( já ta funcionando a liberação dela ) e vai achar o proprietario dela no registro e mudar o valor de TemCasa para 0 para que ele possa comprar uma outra casa futuramente.

Tudo ta em DOF2 alguém pode ajudar nessa ultima etapa por favor?

Código abaixo ...

PHP Code:
forward Teste();
public 
Teste()
{
  for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
  {
    if (
HOUSE_INFO[c][DONO] == 1)
    {
      
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
      
HOUSE_INFO[c][Imposto] += 1;

      if (
HOUSE_INFO[c][Imposto] > 5)
      {
        
HOUSE_INFO[c][DONO] = 0;
        
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
        
HOUSE_INFO[c][Imposto] = 0;
        
SalvarCasa(c);
      }
      
RefreshCasa(c);
      
    }
  }
  return 
1;

Ryuzaki07 is offline   Reply With Quote
Old 10/07/2019, 02:14 AM   #2
GuiKommander
Gangsta
 
GuiKommander's Avatar
 
Join Date: Dec 2016
Posts: 811
Reputation: 25
Default Re: Sistema de casa com imposto quase pronto

O primeiro bug que você relatou, eu acho que seria porque você está usando o SetTimer com intervalo (true) ou seja, repetindo o timer mais de uma vez. Eu recomendo que se você estiver repetindo o timer, faça dessa maneira:

PHP Code:
public OnGameModeInit()
{
    
SetTimer("Teste"5000false); // Timer de 5 segundos - Exemplo
    
return 1;
}

forward Teste();
public 
Teste()
{
    
SetTimer("Teste"5000false); // Você chama denovo a call back 'Teste'

Código:

PHP Code:
forward Teste();
public 
Teste()
{
    for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
      {
        if (
HOUSE_INFO[c][DONO] == 1)
        {
              
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
              
HOUSE_INFO[c][Imposto] ++;

              if (
HOUSE_INFO[c][Imposto] > 5)
              {
                  
// Zerando a casa na conta
              
                  
new file[40];
                  
                  
format(file40"/Contas/%s.ini"HOUSE_INFO[c][PROPRIETARIO]);
                  
DOF2_SetInt(file"CasaID"INVALID_HOUSE_ID);
                  
DOF2_SaveFile();
              
                  
// Zerando as váriaveis da casa
                  
                  
HOUSE_INFO[c][DONO] = 0;
                    
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
                  
HOUSE_INFO[c][Imposto] = 0;
                  
SalvarCasa(c);
            }
        
             
RefreshCasa(c);

        }
    }
    return 
1;

__________________
Programador SA-MP Disponível

Discord:
PhysicaL#0181

Wpp
Whatsapp
GuiKommander is offline   Reply With Quote
Old 10/07/2019, 03:09 AM   #3
Ryuzaki07
Huge Clucker
 
Ryuzaki07's Avatar
 
Join Date: Mar 2017
Posts: 238
Reputation: 0
Default Re: Sistema de casa com imposto quase pronto

Quote:
Originally Posted by GuiKommander View Post
O primeiro bug que você relatou, eu acho que seria porque você está usando o SetTimer com intervalo (true) ou seja, repetindo o timer mais de uma vez. Eu recomendo que se você estiver repetindo o timer, faça dessa maneira:

PHP Code:
public OnGameModeInit()
{
    
SetTimer("Teste"5000false); // Timer de 5 segundos - Exemplo
    
return 1;
}

forward Teste();
public 
Teste()
{
    
SetTimer("Teste"5000false); // Você chama denovo a call back 'Teste'

Código:

PHP Code:
forward Teste();
public 
Teste()
{
    for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
      {
        if (
HOUSE_INFO[c][DONO] == 1)
        {
              
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
              
HOUSE_INFO[c][Imposto] ++;

              if (
HOUSE_INFO[c][Imposto] > 5)
              {
                  
// Zerando a casa na conta
              
                  
new file[40];
                  
                  
format(file40"/Contas/%s.ini"HOUSE_INFO[c][PROPRIETARIO]);
                  
DOF2_SetInt(file"CasaID"INVALID_HOUSE_ID);
                  
DOF2_SaveFile();
              
                  
// Zerando as váriaveis da casa
                  
                  
HOUSE_INFO[c][DONO] = 0;
                    
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
                  
HOUSE_INFO[c][Imposto] = 0;
                  
SalvarCasa(c);
            }
        
             
RefreshCasa(c);

        }
    }
    return 
1;


PHP Code:
forward Teste();
public 
Teste()
{
    for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
      {
        if (
HOUSE_INFO[c][DONO] == 1)
        {
              
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
              
HOUSE_INFO[c][Imposto] ++;

              if (
HOUSE_INFO[c][Imposto] > 5)
              {
                  
// Zerando a casa na conta

                  
new file[40];

                  
format(file40"/Contas/%s.ini"PlayerInfo[playerid][TemCasa]);
                  
DOF2_SetInt(file"TemCasa"PlayerInfo[playerid][TemCasa] = 0);
                  
DOF2_SaveFile();

                  
// Zerando as váriaveis da casa

                  
HOUSE_INFO[c][DONO] = 0;
                  
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
                  
HOUSE_INFO[c][Imposto] = 0;
                  
SalvarCasa(c);
            }

             
RefreshCasa(c);

        }
    }
    return 
1;

Arrumei deste jeito, porem não da para compilar devido ao playerid, mais nessa forward() não poderia colocar playerid lá pra funcionar a opção, tente com new mas não deu muito certo. O que posso fazer?
Ryuzaki07 is offline   Reply With Quote
Old 10/07/2019, 03:18 AM   #4
GuiKommander
Gangsta
 
GuiKommander's Avatar
 
Join Date: Dec 2016
Posts: 811
Reputation: 25
Default Re: Sistema de casa com imposto quase pronto

Quote:
Originally Posted by Ryuzaki07 View Post
PHP Code:
forward Teste();
public 
Teste()
{
    for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
      {
        if (
HOUSE_INFO[c][DONO] == 1)
        {
              
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
              
HOUSE_INFO[c][Imposto] ++;

              if (
HOUSE_INFO[c][Imposto] > 5)
              {
                  
// Zerando a casa na conta

                  
new file[40];

                  
format(file40"/Contas/%s.ini"PlayerInfo[playerid][TemCasa]);
                  
DOF2_SetInt(file"TemCasa"PlayerInfo[playerid][TemCasa] = 0);
                  
DOF2_SaveFile();

                  
// Zerando as váriaveis da casa

                  
HOUSE_INFO[c][DONO] = 0;
                  
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
                  
HOUSE_INFO[c][Imposto] = 0;
                  
SalvarCasa(c);
            }

             
RefreshCasa(c);

        }
    }
    return 
1;

Arrumei deste jeito, porem não da para compilar devido ao playerid, mais nessa forward() não poderia colocar playerid lá pra funcionar a opção, tente com new mas não deu muito certo. O que posso fazer?
Use o meu código que eu disponibilizei.
O INVALID_HOUSE_ID é -1, ou seja, da próxima vez que o player logar, ele já não vai ter a casa, porque está -1.
__________________
Programador SA-MP Disponível

Discord:
PhysicaL#0181

Wpp
Whatsapp
GuiKommander is offline   Reply With Quote
Old 10/07/2019, 08:47 AM   #5
PT
Godfather
 
PT's Avatar
 
Join Date: Nov 2012
Location: Europe
Posts: 7,168
Reputation: 802
Default Re: Sistema de casa com imposto quase pronto

Coloca um break; no final do loop
PT is offline   Reply With Quote
Old 10/07/2019, 06:39 PM   #6
Ryuzaki07
Huge Clucker
 
Ryuzaki07's Avatar
 
Join Date: Mar 2017
Posts: 238
Reputation: 0
Default Re: Sistema de casa com imposto quase pronto

Quote:
Originally Posted by PT View Post
Coloca um break; no final do loop
PHP Code:
forward Teste();
public 
Teste()
{
    for (new 
1!= MAX_DYNAMIC_HOUSES; ++c)
      {
        if (
HOUSE_INFO[c][DONO] == 1)
        {
              
SendClientMessageToAll(-1"| INFO - SERVER | vc chamou ala");
              
HOUSE_INFO[c][Imposto] +=1;

              if (
HOUSE_INFO[c][Imposto] > 5)
              {
                  
// Zerando a casa na conta

                  //new file[40];

                  //format(file, 40, "/Contas/%s.ini", HOUSE_INFO[c][PROPRIETARIO]);
                 // DOF2_SetInt(file, "CasaID", INVALID_HOUSE_ID);
                  //DOF2_SaveFile();

                  // Zerando as váriaveis da casa

                  
HOUSE_INFO[c][DONO] = 0;
                  
format(HOUSE_INFO[c][PROPRIETARIO], 24"Ninguem");
                  
HOUSE_INFO[c][Imposto] = 0;
                  
SalvarCasa(c);
            }

             
RefreshCasa(c);
            break;
        }
    }
    return 
0;


Ta pegando a quantidade de casa que existe criada, que é 4, e ta colocando 4 imposto em cada casa ....
Ryuzaki07 is offline   Reply With Quote
Old 10/07/2019, 10:10 PM   #7
PT
Godfather
 
PT's Avatar
 
Join Date: Nov 2012
Location: Europe
Posts: 7,168
Reputation: 802
Default Re: Sistema de casa com imposto quase pronto

Me mostra o settimer que vc esta setando pf
PT is offline   Reply With Quote
Old 10/07/2019, 10:20 PM   #8
Ryuzaki07
Huge Clucker
 
Ryuzaki07's Avatar
 
Join Date: Mar 2017
Posts: 238
Reputation: 0
Default Re: Sistema de casa com imposto quase pronto

Quote:
Originally Posted by PT View Post
Me mostra o settimer que vc esta setando pf
CMD:ala(playerid)
{
SetTimer("Teste", 1000, false);
return 1;
}

Esse é o settimer
Ryuzaki07 is offline   Reply With Quote
Old 10/07/2019, 10:26 PM   #9
Augustoo
Little Clucker
 
Augustoo's Avatar
 
Join Date: Dec 2018
Location: Planeta Terra
Posts: 40
Reputation: 5
Default Re: Sistema de casa com imposto quase pronto

Vou fazer alguns testes.

PHP Code:
// Mude

HOUSE_INFO[c][Imposto] += 1;

// Para

HOUSE_INFO[c][Imposto]++; 
É a mesma coisa mas tenta ae.
__________________
Curioso
Augustoo is offline   Reply With Quote
Old 10/07/2019, 10:34 PM   #10
Ryuzaki07
Huge Clucker
 
Ryuzaki07's Avatar
 
Join Date: Mar 2017
Posts: 238
Reputation: 0
Default Re: Sistema de casa com imposto quase pronto

pessoal, depois de alguns teste e algumas horas fazendo consegui chegar a esse resultado.

Quote:
forward Teste();
public Teste()
{
for(new c = 1; c != MAX_DYNAMIC_HOUSES; ++c)
{
SendClientMessageToAll(-1,"| INFO - SERVER | Salve cambadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
if(HOUSE_INFO[c][DONO] == 1)
{
HOUSE_INFO[c][Imposto] ++;
SalvarCasa(c);
if(HOUSE_INFO[c][Imposto] > 5) return Liberacao();

}
}
return 1;
}

forward Liberacao();
public Liberacao()
{
for(new c = 1; c != MAX_DYNAMIC_HOUSES; ++c)
{
if(HOUSE_INFO[c][Imposto] >= 5)
{
HOUSE_INFO[c][DONO] = 0;
format(HOUSE_INFO[c][PROPRIETARIO], 24, "Ninguem");
HOUSE_INFO[c][Imposto] = 0;
SalvarCasa(c);
RefreshCasa(c);
}
}
return 1;
}
O unico problema é a mensagem que repete varias vezes no chat, tipo, umas 9 vezes, mas isso não é problema, irei remover as mensagem. O sistema de imposto esta funcionando. Agora eu queria saber como faço para que quando as casas são liberadas o sistema procurar no Registro o nome do jogador que perdeu a casa, e alterar o valor de TemCasa = 1 para TemCasa = 0 uso um sistema DOF2

Um membro do forum GuiKommander disponibilizou o código de como deveria ser neste tópico, e eu alterei para funcionar de acordo como meu sistema da seguinte maneira ...

Quote:
new file[40];

format(file, 40, "/Contas/%s.ini", PlayerInfo[playerid][TemCasa]);
DOF2_SetInt(file, "TemCasa", PlayerInfo[playerid][TemCasa] = 0);
DOF2_SaveFile();
Porem a forward que estou usando, não tem playerid, se eu adicionar playerid, pode dar conflito em alguma coisa? OBS: se eu adicionar forward teste(playerid);
Ryuzaki07 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] /menucasa - quase pronto Ryuzaki07 Português/Portuguese 15 10/05/2019 09:47 PM
[Ajuda] sistema de radar quase pronto Eiffel Português/Portuguese 11 04/02/2017 04:12 PM
[Ajuda] sistema de som automotivo quase pronto ajuda willian Franco Português/Portuguese 1 30/12/2014 12:23 AM
[Ajuda] Comando quase pronto,help caoraivoso3 Português/Portuguese 5 26/07/2013 12:41 PM
[DUV] Finalmente Sistema MySql Quase Pronto [mGo]Ajax Português/Portuguese 19 21/04/2010 11:27 PM


All times are GMT. The time now is 12:23 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.