Problema com Arrays
#1

Dem um Olhado no Scirpt que FIZ
Код:
// This is a comment
// uncomment the line below if you want to write a filterscript

#define FILTERSCRIPT

#include <a_samp>


enum scInfo
{
	scID,
	Float:scEntranceX,
	Float:scEntranceY,
	Float:scEntranceZ,
	Float:scEntranceA,
	scColor1,
	scColor2,
	scRespawn,
};

new SCarInfo[12][scInfo];

//----------------------------------------------
forward LoadCars();
forward split(const strsrc[], strdest[][], delimiter);

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print("Cars AutoSpawn - Script RC1");
	print("--------------------------------------\n");
	print("Carregando Carros....");
	new RLoad;
	RLoad = LoadCars();
	if (RLoad == 1)
	{
	    print("Carros foram Carregados");
	    return 1;
 	}
	else
    print("Problemas ao Carregar Carros");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n--------------------------------------");
	print("Cars AutoSpawn - Script RC1");
	print("By Marcelo - KrySky_ADM");
	print("--------------------------------------\n");
}

#endif
//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
	for(new i = 0; i < sizeof(SCarInfo); i++)
	{
	    new TmpID;
	    new Float:TmpX;
	    new Float:TmpY;
		new Float:TmpZ;
		new Float:TmpA;
		new TmpCor1;
		new TmpCor2;
		new TmpResp;
		new string[128];
		TmpID = SCarInfo[i][scID];
		TmpX = SCarInfo[i][scEntranceX];
		TmpY = SCarInfo[i][scEntranceY];
		TmpZ = SCarInfo[i][scEntranceZ];
		TmpA = SCarInfo[i][scEntranceA];
		TmpCor1 = SCarInfo[i][scColor1];
		TmpCor2 = SCarInfo[i][scColor2];
		TmpResp = SCarInfo[i][scRespawn];
		new resultCreate;
		resultCreate = CreateVehicle(TmpID,TmpX,TmpY,TmpZ,TmpA,TmpCor1,TmpCor2,TmpResp);
		if(resultCreate == 0)
		{
		   	format(string, sizeof(string), "Carro: %i Obteve Erro ao Ser Criado!", i);
			print(string);
		}
		format(string, sizeof(string), "Carro: %i Foi Criado com ID: %i ", i, resultCreate);
		print(string);
	}
}
///-----------------------------------------------------------------------------
public LoadCars()
{
	new arrCoords[16][64];
	new strFromFile2[256];
	new File: file = fopen("vehicles/spawns.cfg", io_read);
	if (file)
	{
		new idx;
		new idx2;
		idx2 = sizeof(SCarInfo);
		while (idx < idx2)
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			SCarInfo[idx][scID] = strval(arrCoords[0]);
			SCarInfo[idx][scEntranceX] = floatstr(arrCoords[1]);
			SCarInfo[idx][scEntranceY] = floatstr(arrCoords[2]);
			SCarInfo[idx][scEntranceZ] = floatstr(arrCoords[3]);
			SCarInfo[idx][scEntranceA] = floatstr(arrCoords[4]);
			SCarInfo[idx][scColor1] = strval(arrCoords[5]);
			SCarInfo[idx][scColor2] = strval(arrCoords[6]);
			SCarInfo[idx][scRespawn] = strval(arrCoords[7]);
			idx++;
		}
		fclose(file);
		new string[128];
		format(string, sizeof(string), "Foram Carregados: %i", sizeof(SCarInfo));
		print(string);
		return 1;
	}
	return 0;
}

//------------------------------------------------------------------------------
public split(const strsrc[], strdest[][], delimiter)
{
	new i, li;
	new aNum;
	new len;
	while(i <= strlen(strsrc)){
	    if(strsrc[i]==delimiter || i==strlen(strsrc)){
	        len = strmid(strdest[aNum], strsrc, li, i, 128);
	        strdest[aNum][len] = 0;
	        li = i+1;
	        aNum++;
		}
		i++;
	}
	return 1;
}
A Idйia e de que ele va no arquivo spawns.cfg. e peguei os carros listados lб e crie eles no jogo, assim fica mais facil ao invйs de add por CУDIGO num FS ou no GM, mas nгo funciona ele preenche errado a array,e acaba dizendo que tem 11 carros carregados e lб verdade й somente 1. e nem carrega esse se eu pesso para exibe a variavel TmpX por exemplo ela volta como 0 e esta errado jб revisei o que tem de errado ai.

Arquivo SPAWNS.cfg
Код:
475|-1929.5627|185.5200|26.0797|176.6911|119|1
A Idйia й minha por favor nгo copiar sem pedir ok??
Reply
#2

se isso n й copiado meu nome й barack obama
Reply
#3

Eu Crei do 0, n й copiado e q estou criando, BARACK OBAMA
Reply
#4

kkkkkkkkkkkkkkkkkk, boa sorte poorq so nuub e num intendo desses cmd dificil '_-_
Reply
#5

Na verdade preciso de alguem que me ajuda a consertar e fazer o q й planejado na rotina
Reply
#6

@mafelis, nгo percebi nenhum erro do cуdigo que possa interferir no carregamento dos dados do arquivo, mas aqui estб ele, fiz algumas alteraзхes.

pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript

#define FILTERSCRIPT

#include <a_samp>


enum scInfo
{
    scID,
    Float:scEntranceX,
    Float:scEntranceY,
    Float:scEntranceZ,
    Float:scEntranceA,
    scColor1,
    scColor2,
    scRespawn,
};

new SCarInfo[12][scInfo];
new RLoad;// Variбvel Global

//----------------------------------------------
forward LoadCars();
forward split(const strsrc[], strdest[][], delimiter);

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print("Cars AutoSpawn - Script RC1");
    print("--------------------------------------\n");
    print("Carregando Carros....");
    /*new RLoad;
    RLoad = LoadCars();*/

    LoadCars(); //Cheque o que eu coloquei no final dessa public.
    if (RLoad == 1)
    {
        print("Carros foram Carregados");
        return 1;
    }
    else
    {
        print("Problemas ao Carregar Carros");
    }
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

#else

main()
{
    print("\n--------------------------------------");
    print("Cars AutoSpawn - Script RC1");
    print("By Marcelo - KrySky_ADM");
    print("--------------------------------------\n");
}

#endif
//------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)
{
    for(new i = 0; i < sizeof(SCarInfo); i++)
    {
        new TmpID;
        new Float:TmpX;
        new Float:TmpY;
        new Float:TmpZ;
        new Float:TmpA;
        new TmpCor1;
        new TmpCor2;
        new TmpResp;
        new string[128];
        TmpID = SCarInfo[i][scID];
        TmpX = SCarInfo[i][scEntranceX];
        TmpY = SCarInfo[i][scEntranceY];
        TmpZ = SCarInfo[i][scEntranceZ];
        TmpA = SCarInfo[i][scEntranceA];
        TmpCor1 = SCarInfo[i][scColor1];
        TmpCor2 = SCarInfo[i][scColor2];
        TmpResp = SCarInfo[i][scRespawn];
        new resultCreate;
        resultCreate = CreateVehicle(TmpID,TmpX,TmpY,TmpZ,TmpA,TmpCor1,TmpCor2,TmpResp);
        if(resultCreate == 0)
        {
            format(string, sizeof(string), "Carro: %i Obteve Erro ao Ser Criado!", i);
            print(string);
        }
        format(string, sizeof(string), "Carro: %i Foi Criado com ID: %i ", i, resultCreate);
        print(string);
    }
}
///-----------------------------------------------------------------------------
public LoadCars()
{
    new arrCoords[8][64];
    new strFromFile2[256];
    new File: file = fopen("vehicles/spawns.cfg", io_read);
    if (file)
    {
        new idx;
        new idx2;
        idx2 = sizeof(SCarInfo);
        while (idx < idx2)
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, '|');
            SCarInfo[idx][scID] = strval(arrCoords[0]);
            SCarInfo[idx][scEntranceX] = floatstr(arrCoords[1]);
            SCarInfo[idx][scEntranceY] = floatstr(arrCoords[2]);
            SCarInfo[idx][scEntranceZ] = floatstr(arrCoords[3]);
            SCarInfo[idx][scEntranceA] = floatstr(arrCoords[4]);
            SCarInfo[idx][scColor1] = strval(arrCoords[5]);
            SCarInfo[idx][scColor2] = strval(arrCoords[6]);
            SCarInfo[idx][scRespawn] = strval(arrCoords[7]);
            idx++;
        }
        fclose(file);
        new string[128];
        format(string, sizeof(string), "Foram Carregados: %i", sizeof(SCarInfo));
        print(string);
        RLoad = 1; //Aqui =D =D =D
        return 1;
    }
    return 0;
}

//------------------------------------------------------------------------------
public split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc)){
        if(strsrc[i]==delimiter || i==strlen(strsrc)){
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}


Mas, esse arquivo que vocк postou foi criado pelo sistema de salvamento desse FS ?


Se nгo, vocк deve salvar os dados no arquivo usando um cуdigo de salvamento e depois tentar usar o carregamento.


Se ocorrer Bugs apуs isso, poste seu cуdigo de salvamento para que possamos analisб-lo.


Espero ter ajudado
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)