Portal SAMP
[Ajuda] Completar IDs de casas quando criar uma nova - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Completar IDs de casas quando criar uma nova (/showthread.php?tid=3291)



Completar IDs de casas quando criar uma nova - AllanSG - 05/02/2023

Bom dia/tarde/noite guys

Estou querendo criar um funçao que complete os IDs em uma sequencia caso haja furo ou crie um mais alto que os ja existentes, mas na sequencia. Mas nao faço a minima ideia de como.

exemplo: criei 10 casas, todas tem os ids da ordem de criaçao, precisei deletar a casa 5, agora sao 9 casas com id de 1 a 10 mas faltando a id 5, quero que a proxima a ser criada complete esse furo entende?

e tambem gostaria de saber como q eu altero o ids de todas as casas quando acontece um furo (ex: apaguei a casa 5 e quero q a 10 se torne id 5, ai sao 9 casas sem furo de id)

Uso zcmd e dof2 (nao sei se é util essa informacao)

** a anos atras eu ja vi um topico falando sobre isso, mas todos os topicos que eu conhecia e tinha salvo sumiram da internet (???)


RE: Completar IDs de casas quando criar uma nova - White_Blue - 05/02/2023

Algo assim?




Código PHP:
stock GetNextID() {
 new 
F[64];
 for(new 
0HOUSE_LENGTHi++) /* Em HOUSE_LENGTH coloque o seu máximo de casas definido no gamemode. Se não tiver basta definir com #define MAX_HOUSES numero_maximo no topo da sua gamemode.*/ {
 
format(Fsizeof(F), HOUSE_PATHi); /* Em HOUSE_PATH coloque o caminho para a sua pasta onde você armazena o arquivo das casas.*/
 
if(== 0) continue;
  if(!
DOF2_FileExists(F)) return i;
 }
 return 
HOUSE_LENGTH;




RE: Completar IDs de casas quando criar uma nova - AllanSG - 05/02/2023

Não tenho como mostrar o codigo pq to pelo celular, mas esse codigo que você passou da esse erro:

Citar:error 076: syntax error in thenexpression, or invalid function call

usei ele nas variaveis de setar e getar valores do arquivo das casas como Casa[GetNextIdCasa][PosX], por exemplo. Usei tambem na verificaçao se o id for igual ao maximo de casas ele retorna dizendo que o numero maximo de casas foi atingido:

Citar:if(GetNextIdCasa >= MAX_CASAS) return SendClientMessage(playerid, vermelho, "O numero maximo de casas foi atingido.");

obs: ele nao da erro nas linhas da stock, mas sim nas partes do comando que eu uso o GetNextIdCasa


RE: Completar IDs de casas quando criar uma nova - White_Blue - 05/02/2023

(05/02/2023 21:41)AllanSG Escreveu: Não tenho como mostrar o codigo pq to pelo celular, mas esse codigo que você passou da esse erro:

Citar:error 076: syntax error in thenexpression, or invalid function call

usei ele nas variaveis de setar e getar valores do arquivo das casas como Casa[GetNextIdCasa][PosX], por exemplo. Usei tambem na verificaçao se o id for igual ao maximo de casas ele retorna dizendo que o numero maximo de casas foi atingido:

Citar:if(GetNextIdCasa >= MAX_CASAS) return SendClientMessage(playerid, vermelho, "O numero maximo de casas foi atingido.");

obs: ele nao da erro nas linhas da stock, mas sim nas partes do comando que eu uso o GetNextIdCasa

Se usa na variável de ID da casa. E além disso, você esqueceu dos parênteses na função, por isso que deu esse erro.

Código PHP:
new casaid GetNextID(); 

Correção do seu código:
Código PHP:
new casaid GetNextID();
if(
casaid >= MAX_CASAS) return SendClientMessage(playeridvermelho"O número máximo de casas foi atingido."); 



RE: Completar IDs de casas quando criar uma nova - AllanSG - 06/02/2023

(05/02/2023 21:54)White_Blue Escreveu:
(05/02/2023 21:41)AllanSG Escreveu: Não tenho como mostrar o codigo pq to pelo celular, mas esse codigo que você passou da esse erro:

Citar:error 076: syntax error in thenexpression, or invalid function call

usei ele nas variaveis de setar e getar valores do arquivo das casas como Casa[GetNextIdCasa][PosX], por exemplo. Usei tambem na verificaçao se o id for igual ao maximo de casas ele retorna dizendo que o numero maximo de casas foi atingido:

Citar:if(GetNextIdCasa >= MAX_CASAS) return SendClientMessage(playerid, vermelho, "O numero maximo de casas foi atingido.");

obs: ele nao da erro nas linhas da stock, mas sim nas partes do comando que eu uso o GetNextIdCasa

Se usa na variável de ID da casa. E além disso, você esqueceu dos parênteses na função, por isso que deu esse erro.

Código PHP:
new casaid GetNextID(); 

Correção do seu código:
Código PHP:
new casaid GetNextID();
if(
casaid >= MAX_CASAS) return SendClientMessage(playeridvermelho"O número máximo de casas foi atingido."); 

Deu certo, muito obrigado!