[Pedido] Converter salvamento nativo do samp para dof2
#1

Queria que alguйm de bom coraзгo convertesse esse salvamento nativo para dof2 eu jб tentei varias e varias vezes sу que nгo consegui );

Код:
LoadRaceList()
{
	new File:f;
	new line[256];
	if(fexist("racenames.txt"))
	{
		f = fopen("racenames.txt", io_read);
		while(fread(f,line,sizeof(line),false))
		{
     		new iidx;
			gRaceNames[gRaces] = strtok(line,iidx);
			new msg[256];
			format(msg,256,"%s.race",gRaceNames[gRaces]);
            if(fexist(msg))
			{
			} else {
				printf("Linha%d - 404 %s",gRaces,gRaceNames[gRaces]);
			}
			gRaces++;
		}
		fclose(f);
	}
}

SaveRace(playerid)
{
	new msg[256];
	new trackname2[256];
	format(trackname2,256,"%s.txt",xRaceName[playerid]);
	new File:f2;
	f2 = fopen(trackname2, io_write);
	fclose(f2);

	new File:f3;
	f3 = fopen("buildlog.txt", io_append);
	new hour,mins,year,month,day;
	gettime(hour,mins);
	getdate(year,month,day);
	format(msg,256, "%d/%d/%d %d:%d - %s by %s\n",day,month,year,hour,mins,xRaceName[playerid],xCreatorName[playerid]);
	fwrite(f3,msg);
	fclose(f3);
	new trackname[256];
	format(trackname,256,"%s.race",xRaceName[playerid]);
	new File:f;
	f = fopen(trackname, io_write);
	format(msg,256, "15 %d %d %d %d %d %s\n",xTrackTime[playerid],xWorldTime[playerid],xWeatherID[playerid],xRaceType[playerid],xColisao[playerid],xCreatorName[playerid]);
	fwrite(f,msg);
	if (xCarIds[playerid][0]<300)xCarIds[playerid][0]=565;
	format(msg,256, "%d\n",xCarIds[playerid][0]);
	fwrite(f,msg);
	format(msg,256, "%f %f %f %f\n",xRaceCheckpoints[playerid][0][0],xRaceCheckpoints[playerid][0][1],xRaceCheckpoints[playerid][0][2], xFacing[playerid]);
	fwrite(f,msg);
	format(msg,256, "%f %f %f %f\n",xRaceCheckpoints[playerid][1][0],xRaceCheckpoints[playerid][1][1],xRaceCheckpoints[playerid][1][2], xFacing[playerid]);
	fwrite(f,msg);
	new i=2;
	while (xRaceCheckpoints[playerid][i][2]>0)
	{
	    new msg2[256];
		format(msg2,256, "%f %f %f\n",xRaceCheckpoints[playerid][i][0],xRaceCheckpoints[playerid][i][1],xRaceCheckpoints[playerid][i][2]);
	    fwrite(f,msg2);
		i++;
	}

	fclose(f);
	new msgx[256];
	format(msgx,256,"Sucesso! %s Criada. Digite /carregarcorrida para alterar para %s",xRaceName[playerid], xRaceName[playerid]);
	SendClientMessage(playerid,COLOR_TEMP,msgx);
	printf("SAVED %s",xRaceName[playerid]);
	return 1;
}


LoadRace(racename[],playerid)
{
	printf("Carregando a corrida%s",racename);
	new trackname[256];
	format (trackname,256,"%s.race",racename);
	if(!fexist(trackname))
	{
	    printf("| ERRO | A corrida %s nгo existe",trackname);
	    LoadRace(gRaceNames[random(gRaces)],playerid);
	    return 0;
	}
	format (gTrackName,256,"%s",racename);

	for(new i;i<MAX_RACECHECKPOINTS;i++)
	{
		RaceCheckpoints[i][0]=0.0;
		RaceCheckpoints[i][1]=0.0;
		RaceCheckpoints[i][2]=0.0;
		RaceCheckpoints[i][3]=0.0;
	}
	gMaxCheckpoints=0;
	new File:f;
	new line[256];
	f = fopen(trackname, io_read);
	fread(f,line,sizeof(line),false);
	new idx;
	gCountdown = strval(strtok(line,idx));
	gTrackTime = strval(strtok(line,idx));
	gWorldTime = strval(strtok(line,idx));
	gWeather = strval(strtok(line,idx));
	gRaceType = strval(strtok(line,idx));
	xColisao[playerid] = strval(strtok(line,idx));
	gRaceMaker = strtok(line,idx);

	fread(f,line,sizeof(line),false);
	new iiddxx;
	new gCars[5],j;
	gCars[0]=strval(strtok(line,iiddxx));
	gCars[1]=strval(strtok(line,iiddxx));
	gCars[2]=strval(strtok(line,iiddxx));
	gCars[3]=strval(strtok(line,iiddxx));
	gCars[4]=strval(strtok(line,iiddxx));

	for(new i=0;i<5;i++)
	{
	    if(gCars[i])
		{
			j=i;
		}
	}
	new rand;
	if (j) rand = random(j);
	else rand = j;
	gCarModelID=gCars[rand];

	fread(f,line,sizeof(line),false);
	iiddxx=0;
	gGrid[0]=floatstr(strtok(line,iiddxx));
	gGrid[1]=floatstr(strtok(line,iiddxx));
	gGrid[2]=floatstr(strtok(line,iiddxx));
	gGrid[3]=floatstr(strtok(line,iiddxx));
	gGrid2[0]=gGrid[0];
	gGrid2[1]=gGrid[1];
	gGrid2[2]=gGrid[2];
	gGrid2[3]=gGrid[3];

	fread(f,line,sizeof(line),false);
	iiddxx=0;
	gGrid[4]=floatstr(strtok(line,iiddxx));
	gGrid[5]=floatstr(strtok(line,iiddxx));
	gGrid[6]=floatstr(strtok(line,iiddxx));
	gGrid[7]=floatstr(strtok(line,iiddxx));
	gGrid2[4]=gGrid[4];
	gGrid2[5]=gGrid[5];
	gGrid2[6]=gGrid[6];

	while(fread(f,line,sizeof(line),false))
	{
		new idxx;
		RaceCheckpoints[gMaxCheckpoints][0] = floatstr(strtok(line,idxx));
		RaceCheckpoints[gMaxCheckpoints][1] = floatstr(strtok(line,idxx));
		RaceCheckpoints[gMaxCheckpoints][2] = floatstr(strtok(line,idxx));
		gMaxCheckpoints++;
	}
	fclose(f);

	for(new i;i<MAX_PLAYERS;i++)
	{
		gPlayerProgress[i]=0;
		PlaySoundForPlayer(i, 1186);
		if (i<100)RaceCheckpoints[i][3]=0;
		new Menu:Current;
		if (IsPlayerConnected(i) && GetPlayerMenu(i) == Current)
		{
			HideMenuForPlayer(voteMenu,i);
		}
	}
	gFinishOrder=0;
	gGridCount=0;
	gGrid2Count=0;
	KillTimer(gCountdowntimer);
	gCountdowntimer = SetTimer("Countdowntimer",1000,1);
	SetWorldTime(gWorldTime);
	SetWeather(gWeather);
	foreach(Player, i)
	{
	DisableRemoteVehicleCollisions(i, xColisao[i]);
 	}
	gRaceStart=0;
	gRaceStarted=0;
	gFinished=0;
	createVote();
 	new tempTime[256];
	tempTime = HighScore(0);
	format(gBestTime,sizeof(gBestTime),"| CORRIDA | %s por %s | %s\n",gTrackName,gRaceMaker, tempTime);
	SendClientMessageToAll(Azul,gBestTime);

	return 1;
}
Reply
#2

o dof2 usa o salvamento nativo do sa-mp. na verdade, ele nem vai ser mais rбpido do que esse seu cуdigo.
Reply
#3

Disso eu nгo sabia, porйm queria dof2 para adicionar alguns salvamento
Reply
#4

queria salvar algumas coisas na mesma pasta tudo certinho sу que n consigo jб tentei salvar com a nativa, mas nao conseguir
Reply
#5

Pelo jeito deve ser difнcil demais, eu acho que os unicos que podem conseguir sao os membro antigo
Reply
#6

Isso eu sei eu queria tudo em dof2
Reply
#7

jб fiz isso
Reply
#8

Use de base
PHP код:
// Salvar
new str[30];
DOF2_CreateFile(/* Nome Ex: Corridas/Corrida1.txt */);
for(new 
iMAX_RACECHECKPOINTS; ++i) {
    if(
xRaceCheckpoints[playerid][i][2] > 0) {
        
format(strsizeof(str), "CP%dX"i);
        
DOF2_SetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */strxRaceCheckpoints[playerid][i][0]);
        
format(strsizeof(str), "CP%dY"i);
        
DOF2_SetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */strxRaceCheckpoints[playerid][i][1]);
        
format(strsizeof(str), "CP%dZ"i);
        
DOF2_SetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */strxRaceCheckpoints[playerid][i][2]);
    }
}
DOF2_SaveFile();
// Carregar
new str[30];
for(new 
iMAX_RACECHECKPOINTS; ++i) {
    
format(strsizeof(str), "CP%dX"i);
    
RaceCheckpoints[gMaxCheckpoints][0] = DOF_GetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */str);
    
format(strsizeof(str), "CP%dY"i);
    
RaceCheckpoints[gMaxCheckpoints][1] = DOF_GetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */str);
    
format(strsizeof(str), "CP%dZ"i);
    
RaceCheckpoints[gMaxCheckpoints][2] = DOF_GetFloat(/* Nome do arquivo. Ex: Corridas/Corrida1.txt */str);

Antes vou lhe explicar uma coisa. DOF2 nгo й de nenhuma forma mais rбpido que as file functions. DOF2 й como uma ORM, ela sу vai evitar que vocк tenha mais trabalho com manutenзгo e escrita de cуdigo.
Reply
#9

Muito obrigado vou tentar
Reply
#10

PHP код:
SaveRace(playerid)
{
    new 
trackname2[256];
    new 
str[30];
    
format(trackname2,256,"%s.txt",xRaceName[playerid]);
    
DOF2_CreateFile(str,trackname2);
    
/*new File:f2;
    DOF2::SetString(f2,trackname2, inputtext);
    f2 = fopen(trackname2, io_write);
    fclose(f2);
    */
    //DOF2_CreateFile(str,trackname2);
    //new File:f3;
    //f3 = fopen("buildlog.txt", io_append);
    
new hora2,min2,ano2,mes2,dia2;
    
gettime(hora2,min2);
    
getdate(ano2,mes2,dia2);
    
    
DOF2_SetInt("buildlog.txt","dia",hora2);
    
DOF2_SetInt("buildlog.txt","dia",min2);
    
DOF2_SetInt("buildlog.txt","dia",ano2);
    
DOF2_SetInt("buildlog.txt","dia",mes2);
    
DOF2_SetInt("buildlog.txt","dia",dia2);
    
DOF2_SetString("buildlog.txt""Race"xRaceName[playerid]);
    
DOF2_SetString("buildlog.txt""Criado"xCreatorName[playerid]);
    
    
//format(msg,256, "%d/%d/%d %d:%d - %s by %s\n",day,month,year,hour,mins,xRaceName[playerid],xCreatorName[playerid]);
    
new stringer[256];
     new 
trackname[256];
     
    
format(trackname,256,"%s.race",xRaceName[playerid]);
    
DOF2_CreateFile(trackname,stringer);
    
    
DOF2_SetInt(stringer,"Tempo da corrida",xTrackTime[playerid]);
    
DOF2_SetInt(stringer,"Hora do mundo",xWorldTime[playerid]);
    
DOF2_SetInt(stringer,"Clima",xWeatherID[playerid]);
    
DOF2_SetInt(stringer,"Tipo da corrida",xRaceType[playerid]);
    
DOF2_SetInt(stringer,"Colisao",xColisao[playerid]);
    
DOF2_SetString(stringer,"Criador",xCreatorName[playerid]);
    
DOF2_SetInt(stringer,"Carro ID",xCarIds[playerid][0]);
    
    if (
xCarIds[playerid][0]<300)xCarIds[playerid][0]=565;
    
//format(msg,256, "15 %d %d %d %d %d %s\n",xTrackTime[playerid],xWorldTime[playerid],xWeatherID[playerid],xRaceType[playerid],xColisao[playerid],xCreatorName[playerid]);
    //fwrite(f,msg);
    /*
    new stre[30];
    format(stre, sizeof(stre), "CP%dX", playerid);
    DOF2_SetFloat(stringer, stre, xRaceCheckpoints[playerid][playerid][0]);
        
    format(stre, sizeof(stre), "CP%dY", playerid);
    DOF2_SetFloat(stringer, stre, xRaceCheckpoints[playerid][playerid][1]);
        
    format(stre, sizeof(stre), "CP%dZ", playerid);
    DOF2_SetFloat(stringer, stre, xRaceCheckpoints[playerid][playerid][2]);
        
    format(stre, sizeof(stre), "CP%dF", playerid);
    DOF2_SetFloat(stringer, stre, xFacing[playerid]);
    
    }
    format(msg,256, "%f %f %f %f\n",xRaceCheckpoints[playerid][0][0],xRaceCheckpoints[playerid][0][1],xRaceCheckpoints[playerid][0][2], xFacing[playerid]);
    fwrite(f,msg);
    format(msg,256, "%f %f %f %f\n",xRaceCheckpoints[playerid][1][0],xRaceCheckpoints[playerid][1][1],xRaceCheckpoints[playerid][1][2], xFacing[playerid]);
    fwrite(f,msg);
     */
     
    
for(new iMAX_RACECHECKPOINTS; ++i)
     {
    if(
xRaceCheckpoints[playerid][i][2] > 0)
    {
        
format(strsizeof(str), "CP%dX"i);
        
DOF2_SetFloat(stringerstrxRaceCheckpoints[playerid][i][0]);
        
        
format(strsizeof(str), "CP%dY"i);
        
DOF2_SetFloat(stringerstrxRaceCheckpoints[playerid][i][1]);
        
        
format(strsizeof(str), "CP%dZ"i);
        
DOF2_SetFloat(stringerstrxRaceCheckpoints[playerid][i][2]);
        
        
format(strsizeof(str), "CP%dF"i);
        
DOF2_SetFloat(stringerstrxFacing[i]);
    }
    }
    new 
msgx[256];
    
format(msgx,256,"Sucesso! %s Criada. Digite /carregarcorrida para alterar para %s",xRaceName[playerid], xRaceName[playerid]);
    
SendClientMessage(playerid,COLOR_TEMP,msgx);
    
printf("SAVED %s",xRaceName[playerid]);
    return 
1;

Fiz tudo certinho compilou sem erros e avisos, sу que na hora de salvar a corrida o cmd do server fecha
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)