Portal SAMP
[Ajuda] Divergência em 'DOF2_CreateFile' - 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] Divergência em 'DOF2_CreateFile' (/showthread.php?tid=3519)



Divergência em 'DOF2_CreateFile' - KruCz - 13/04/2023

Oi gente, bom dia! Tudo bem com vocês?

Estou enfrentando um problema em relação a arquivos, onde eu crio uma 'gangue', e o diretório dos proprietários são repetidos.
Na pasta das gangues criadas, ocorre tudo bem. Porém, na pasta dos proprietários ele não prossegue com os arquivos, pois todos estão sendo criados com o mesmo nome, "Ninguem.ini", e não sei como posso fazer para resolver a situação, de forma que os arquivos fiquem únicos para cada gangue.

Criando a gangue:
Código PHP:
stock CriarGang(Float:xPlayerFloat:yPlayerFloat:zPlayerNMembrosNomeGangG[50], NomeLiderG[24], M1[24])
{
new 
UltimaGangstrGang[50];
for(new 
1;MAX_GANGSi++)
{
    format(strGangsizeof(strGang), "/Gangs/Gang %i.ini"i);
    if(!DOF2_FileExists(strGang))
    {
        UltimaGang i;
        DOF2_CreateFile(strGang);
        break;
    }
    format(strGangsizeof(formato), "/Gangs/Gang %i.ini"UltimaGang); // Criado corretamente, Gang+IdGang
    DOF2_SetInt(strGang"IdGang"UltimaGang);

    DOF2_CreateFile("/Gangs/Membros/Ninguem.ini"); // Todas as gangues que crio ingame, era para criar um deste. Porém, como está com o mesmo nome, ele sempre vai sobrepor.



A questão de nomear como "Ninguem.ini", é justamente por conta da propriedade não ter um proprietário. Alguém poderia me ajudar em como posso estar resolvendo esse problema?
Fico grato desde já.


RE: Divergência em 'DOF2_CreateFile' - White_Blue - 13/04/2023

Se entendi bem seu problema, os arquivos estão sendo criados com o mesmo nome correto?

Para resolver isso é relativamente simples, crie um loop que percorra o número máximo de membros e coloque coloque o número correspodnente na frente.
 

Código PHP:
#define MAX_CLAN_MEMBROS 30 // Se já tiver um número definido, ignore essa linha.

static string[60];
for(new 
0MAX_CLAN_MEMBROSi++) {
format(stringsizeof(string"/Gangs/Membros/Ninguem%d.ini"i));
if(!
DOF2_FileExists(string)) continue; // Para evitar que os arquivos sejam criados sem necessidade e acabe causando problemas
DOF2_CreateFile(string);




RE: Divergência em 'DOF2_CreateFile' - KruCz - 13/04/2023

(13/04/2023 12:25)White_Blue Escreveu: Se entendi bem seu problema, os arquivos estão sendo criados com o mesmo nome correto?

Para resolver isso é relativamente simples, crie um loop que percorra o número máximo de membros e coloque coloque o número correspodnente na frente.
 

Código PHP:
#define MAX_CLAN_MEMBROS 30 // Se já tiver um número definido, ignore essa linha.

static string[60];
for(new 
0MAX_CLAN_MEMBROSi++) {
format(stringsizeof(string"/Gangs/Membros/Ninguem%d.ini"i));
if(!
DOF2_FileExists(string)) continue; // Para evitar que os arquivos sejam criados sem necessidade e acabe causando problemas
DOF2_CreateFile(string);


Oi White_Blue, tudo bem?
O problema em si é somente quando a gangue está sem um proprietário, ou seja, quando elas estão "livres". Quando eu crio uma gangue com status "livre", o arquivo do dono na pasta 'membros' "Ninguem.ini", é criado.
Se eu criar 2 gangues, por exemplo, só terá 1 arquivo "Ninguem.ini" (o que causará um conflito).

Quando um jogador adquire essa propriedade, esse arquivo é renomeado no comando.
Código PHP:
format(strGsizeof(strG), "/Gangs/Membros/%s.ini"InfoGang[Gang][NomeLider]);
format(strGsizeof(strG), "/Gangs/Membros/%s.ini"NomeP(playerid));
DOF2_RenameFile(formatostrG); 



RE: Divergência em 'DOF2_CreateFile' - White_Blue - 13/04/2023

(13/04/2023 12:33)KruCz Escreveu:
(13/04/2023 12:25)White_Blue Escreveu: Se entendi bem seu problema, os arquivos estão sendo criados com o mesmo nome correto?

Para resolver isso é relativamente simples, crie um loop que percorra o número máximo de membros e coloque coloque o número correspodnente na frente.
 

Código PHP:
#define MAX_CLAN_MEMBROS 30 // Se já tiver um número definido, ignore essa linha.

static string[60];
for(new 
0MAX_CLAN_MEMBROSi++) {
format(stringsizeof(string"/Gangs/Membros/Ninguem%d.ini"i));
if(!
DOF2_FileExists(string)) continue; // Para evitar que os arquivos sejam criados sem necessidade e acabe causando problemas
DOF2_CreateFile(string);


Oi White_Blue, tudo bem?
O problema em si é somente quando a gangue está sem um proprietário, ou seja, quando elas estão "livres". Quando eu crio uma gangue com status "livre", o arquivo do dono na pasta 'membros' "Ninguem.ini", é criado.
Se eu criar 2 gangues, por exemplo, só terá 1 arquivo "Ninguem.ini" (o que causará um conflito).

Quando um jogador adquire essa propriedade, esse arquivo é renomeado no comando.
Código PHP:
format(strGsizeof(strG), "/Gangs/Membros/%s.ini"InfoGang[Gang][NomeLider]);
format(strGsizeof(strG), "/Gangs/Membros/%s.ini"NomeP(playerid));
DOF2_RenameFile(formatostrG); 

Creio que entendi, mas a questão é que seu sistema de gangs então teria que mudar praticamente toda a infraestrutura, pois pelo que vi você está armazenando as informações de maneira errônea, nesse caso você teria que criar o arquivo da gang com seu respectivo ID e guardar as informações lá dentro.

No caso o que eu estou propondo é criar uma pasta "/Gangs" e guardar lá dentro um único arquivo para cada gang "Gang/gang5.ini" e assim respectivamente, e guarda lá dentro as informações(Líder, membros e etc) em forma de string dentro do arquivo, assim fica mil vezes mais fácil de manipular e também você não terá mais problemas com "diretório duplicado".