Portal SAMP
[Ajuda] Problema chato com Float - 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] Problema chato com Float (/showthread.php?tid=3308)



Problema chato com Float - fearsa - 09/02/2023

boa tarde. preciso de ajuda com um problema chato....

eu deixo assim:

Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][18] = {
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071},
{
-324.8012,1316.9939,52.8978},
{
-370.5130,1462.3467,62.6581},
{
-308.6009,1395.1691,72.2705},
{
-301.6882,1501.4779,75.5935}
};

Funciona. 

quando eu removo as quatro ultima coordenada e coloco assim: 

Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][18] = {
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

da esse erro: 
error 052: multi-dimensional arrays must be fully initialized

Não consigo resolver...


RE: Problema chato com Float - White_Blue - 09/02/2023

Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 



RE: Problema chato com Float - fearsa - 09/02/2023

(09/02/2023 15:34)White_Blue Escreveu: Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 

fiz assim:
Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][] =
{
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

Porém no sublimetext ficou [Finished in 2.0s]
Não compila o gamemode direito..


RE: Problema chato com Float - White_Blue - 09/02/2023

(09/02/2023 15:55)fearsa Escreveu:
(09/02/2023 15:34)White_Blue Escreveu: Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 

fiz assim:
Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][] =
{
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

Porém no sublimetext ficou [Finished in 2.0s]
Não compila o gamemode direito..

Retire o macro MAX_RACE_POINTS da array.

Você apenas deve usar o macro se quiser que a array tenha tamanho definido. Caso contrário, não faz sentido usar o macro na array.

Assim deve resolver:
Código PHP:
new Float:corridacheckpoint[][] = 
{
{
2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
}; 



RE: Problema chato com Float - fearsa - 09/02/2023

(09/02/2023 16:24)White_Blue Escreveu:
(09/02/2023 15:55)fearsa Escreveu:
(09/02/2023 15:34)White_Blue Escreveu: Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 

fiz assim:
Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][] =
{
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

Porém no sublimetext ficou [Finished in 2.0s]
Não compila o gamemode direito..

Retire o macro MAX_RACE_POINTS da array.

Você apenas deve usar o macro se quiser que a array tenha tamanho definido. Caso contrário, não faz sentido usar o macro na array.

Assim deve resolver:
Código PHP:
new Float:corridacheckpoint[][] = 
{
{
2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
}; 
Esse sistema usa o MAX_POINT para atualizar os checkpoint.. se eu remover teria que remover isso:

ele tipo starta o checkpoint

Código:
new Float:checkpoints[MAX_POINTS][23] = {
{1984.8774,-1896.1720,13.2096,223.5686}
};

E ISSO:

Código:
new checkpointType[MAX_POINTS] = {
TT_START
};

Código:
public OnPlayerEnterRaceCheckpoint(playerid)
{
new sec = Mototime[playerid]%60;
new mins = (Mototime[playerid]/60)%60;

if(MotoGP[playerid] == 1)
{
MotoGate[playerid]++;
new one = MAX_RACE_POINTS-1;
new two = MAX_RACE_POINTS;
if(MotoGate[playerid] < one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,0,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[MotoGate[playerid]+1][0],corridacheckpoint[MotoGate[playerid]+1][1],corridacheckpoint[MotoGate[playerid]+1][2],10);

}
if(MotoGate[playerid] == one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,1,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[0][0],corridacheckpoint[0][1],corridacheckpoint[0][2],10);
}
if(MotoGate[playerid] == two)
{
new TimeRec;
new Timestr[200];
new driver[24];
GetPlayerName(playerid,driver,sizeof(driver));
format(Timestr,sizeof(Timestr),"%s {FFFFFF}Acabou a corrida ilegal [{FFF68F}%d {FFFFFF} Minutos, {FFF68F}%d {FFFFFF} Segundos] e ganhou {FFF68F}$2,000 {FFF68F}+5 Score",driver,mins,sec);
SendClientMessageToAll(0x375FFFFF,Timestr);
GivePlayerMoney(playerid,2000);
SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
SendClientMessage(playerid,Amarelo,"Você pode ver {FFF68F} 5 melhores tempos {FFFFFF}Digitando: {FFF68F}/Crank {FFFFFF}.");
printf(Timestr);
TimeRec=Mototime[playerid];
MotoGP[playerid] = 0;
MotoGate[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
Mototime[playerid]=0;
UpdateList(playerid,TimeRec);
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
KillTimer(relogiotime[playerid]);
nacorrida[playerid]=0;
}
}
return 1;
}

Se eu remover MAX_POINT vai dar merda no resto do sistema??


RE: Problema chato com Float - White_Blue - 09/02/2023

(09/02/2023 16:35)fearsa Escreveu:
(09/02/2023 16:24)White_Blue Escreveu:
(09/02/2023 15:55)fearsa Escreveu:
(09/02/2023 15:34)White_Blue Escreveu: Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 

fiz assim:
Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][] =
{
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

Porém no sublimetext ficou [Finished in 2.0s]
Não compila o gamemode direito..

Retire o macro MAX_RACE_POINTS da array.

Você apenas deve usar o macro se quiser que a array tenha tamanho definido. Caso contrário, não faz sentido usar o macro na array.

Assim deve resolver:
Código PHP:
new Float:corridacheckpoint[][] = 
{
{
2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
}; 
Esse sistema usa o MAX_POINT para atualizar os checkpoint.. se eu remover teria que remover isso:

ele tipo starta o checkpoint

Código:
new Float:checkpoints[MAX_POINTS][23] = {
{1984.8774,-1896.1720,13.2096,223.5686}
};

E ISSO:

Código:
new checkpointType[MAX_POINTS] = {
TT_START
};

Código:
public OnPlayerEnterRaceCheckpoint(playerid)
{
new sec = Mototime[playerid]%60;
new mins = (Mototime[playerid]/60)%60;

if(MotoGP[playerid] == 1)
{
MotoGate[playerid]++;
new one = MAX_RACE_POINTS-1;
new two = MAX_RACE_POINTS;
if(MotoGate[playerid] < one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,0,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[MotoGate[playerid]+1][0],corridacheckpoint[MotoGate[playerid]+1][1],corridacheckpoint[MotoGate[playerid]+1][2],10);

}
if(MotoGate[playerid] == one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,1,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[0][0],corridacheckpoint[0][1],corridacheckpoint[0][2],10);
}
if(MotoGate[playerid] == two)
{
new TimeRec;
new Timestr[200];
new driver[24];
GetPlayerName(playerid,driver,sizeof(driver));
format(Timestr,sizeof(Timestr),"%s {FFFFFF}Acabou a corrida ilegal [{FFF68F}%d {FFFFFF} Minutos, {FFF68F}%d {FFFFFF} Segundos] e ganhou {FFF68F}$2,000 {FFF68F}+5 Score",driver,mins,sec);
SendClientMessageToAll(0x375FFFFF,Timestr);
GivePlayerMoney(playerid,2000);
SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
SendClientMessage(playerid,Amarelo,"Você pode ver {FFF68F} 5 melhores tempos {FFFFFF}Digitando: {FFF68F}/Crank {FFFFFF}.");
printf(Timestr);
TimeRec=Mototime[playerid];
MotoGP[playerid] = 0;
MotoGate[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
Mototime[playerid]=0;
UpdateList(playerid,TimeRec);
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
KillTimer(relogiotime[playerid]);
nacorrida[playerid]=0;
}
}
return 1;
}

Se eu remover MAX_POINT vai dar merda no resto do sistema??

Em primeiro lugar, é uma array apenas para armazenar as coordenadas. Em segundo lugar, não sei se você está confundindo array com enumerador, mas são duas coisas distintas, enquanto array é um vetor que serve para armazenar uma sequência de dados um enumerador serve para armazenar um conjunto de dados constantes pré-definidos. Então se você quiser utilizar um enumerador, você pode utilizar o MAX_POINTS na array que dá acesso aos dados previamente definidos no enumerador.


RE: Problema chato com Float - fearsa - 09/02/2023

Tava estudando oque você falou.. isso mesmo.. obrigado pela ajuda e por tirar a dúvida que eu tinha em relação a isso. vlw mano


RE: Problema chato com Float - fearsa - 10/02/2023

(09/02/2023 17:06)White_Blue Escreveu:
(09/02/2023 16:35)fearsa Escreveu:
(09/02/2023 16:24)White_Blue Escreveu:
(09/02/2023 15:55)fearsa Escreveu:
(09/02/2023 15:34)White_Blue Escreveu: Você não precisa definir o tamanho da array, assim fica mais prático, você não precisa se preocupar com as células da array.

Teste assim e veja se funciona:
Código PHP:
new Float:corridacheckpoint[MAX_RACE_POINTS][] = {
{
// Suas coordenadas aqui
}; 

fiz assim:
Código:
new Float:corridacheckpoint[MAX_RACE_POINTS][] =
{
{2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
};

Porém no sublimetext ficou [Finished in 2.0s]
Não compila o gamemode direito..

Retire o macro MAX_RACE_POINTS da array.

Você apenas deve usar o macro se quiser que a array tenha tamanho definido. Caso contrário, não faz sentido usar o macro na array.

Assim deve resolver:
Código PHP:
new Float:corridacheckpoint[][] = 
{
{
2141.4910,-1944.1877,13.2044,269.4679},
{
2268.5332,-1732.6592,13.0400,244.4372},
{
2393.3335,-1659.2001,13.0402,270.9162},
{
2483.0596,-1788.7537,13.2108,274.0847},
{
2457.1860,-1658.2914,12.9620,91.1243},
{
2369.7346,-1524.1077,23.4853,264.1595},
{
2392.4204,-1424.9104,23.4892,0.3905},
{
2344.9822,-1300.7600,23.6593,89.3894},
{
2197.8601,-1641.4114,14.9699,170.0614},
{
2079.7043,-1809.4922,13.0409,120.9189},
{
1912.9556,-1753.5867,13.0402,107.3336},
{
1820.0884,-1867.4813,13.0746,180.9134},
{
1946.3507,-1957.8975,13.2043,268.7086},
{
1990.6389,-1901.0647,13.2097,225.8071}
}; 
Esse sistema usa o MAX_POINT para atualizar os checkpoint.. se eu remover teria que remover isso:

ele tipo starta o checkpoint

Código:
new Float:checkpoints[MAX_POINTS][23] = {
{1984.8774,-1896.1720,13.2096,223.5686}
};

E ISSO:

Código:
new checkpointType[MAX_POINTS] = {
TT_START
};

Código:
public OnPlayerEnterRaceCheckpoint(playerid)
{
new sec = Mototime[playerid]%60;
new mins = (Mototime[playerid]/60)%60;

if(MotoGP[playerid] == 1)
{
MotoGate[playerid]++;
new one = MAX_RACE_POINTS-1;
new two = MAX_RACE_POINTS;
if(MotoGate[playerid] < one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,0,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[MotoGate[playerid]+1][0],corridacheckpoint[MotoGate[playerid]+1][1],corridacheckpoint[MotoGate[playerid]+1][2],10);

}
if(MotoGate[playerid] == one)
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,1,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[0][0],corridacheckpoint[0][1],corridacheckpoint[0][2],10);
}
if(MotoGate[playerid] == two)
{
new TimeRec;
new Timestr[200];
new driver[24];
GetPlayerName(playerid,driver,sizeof(driver));
format(Timestr,sizeof(Timestr),"%s {FFFFFF}Acabou a corrida ilegal [{FFF68F}%d {FFFFFF} Minutos, {FFF68F}%d {FFFFFF} Segundos] e ganhou {FFF68F}$2,000 {FFF68F}+5 Score",driver,mins,sec);
SendClientMessageToAll(0x375FFFFF,Timestr);
GivePlayerMoney(playerid,2000);
SetPlayerScore(playerid, GetPlayerScore(playerid) + 5);
SendClientMessage(playerid,Amarelo,"Você pode ver {FFF68F} 5 melhores tempos {FFFFFF}Digitando: {FFF68F}/Crank {FFFFFF}.");
printf(Timestr);
TimeRec=Mototime[playerid];
MotoGP[playerid] = 0;
MotoGate[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
Mototime[playerid]=0;
UpdateList(playerid,TimeRec);
SetPlayerVirtualWorld(playerid, 0);
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
KillTimer(relogiotime[playerid]);
nacorrida[playerid]=0;
}
}
return 1;
}

Se eu remover MAX_POINT vai dar merda no resto do sistema??

Em primeiro lugar, é uma array apenas para armazenar as coordenadas. Em segundo lugar, não sei se você está confundindo array com enumerador, mas são duas coisas distintas, enquanto array é um vetor que serve para armazenar uma sequência de dados um enumerador serve para armazenar um conjunto de dados constantes pré-definidos. Então se você quiser utilizar um enumerador, você pode utilizar o MAX_POINTS na array que dá acesso aos dados previamente definidos no enumerador.

Mano ta ocorrendo um novo problema.. eu to fazendo a corrida.. porém os dois ultimos check não aparecem e ele finaliza no penultimo check.. parece que não ta entrando o chekckpoint final a ultima coordenada que encerra a corrida mesmo... ta encerrando no penultimo checkpoiint..


esta assim:

Código:
new Float:checkpoints[MAX_POINTS][23] = {
{1984.8774,-1896.1720,13.2096,223.5686}
};

new Float:corridacheckpoint[][] =
{
{2144.1396,-1944.2888,13.2079,269.3969},
{
2207.8079,-1800.2291,12.8963,340.9183},
{
2339.9895,-1734.2500,13.0402,269.3392},
{
2393.3594,-1659.2104,13.0394,269.7389},
{
2413.4099,-1756.1412,13.0395,182.1763},
{
2481.5627,-1789.3577,13.2097,274.4259},
{
2482.1118,-1732.5414,13.1557,90.5529},
{
2343.7942,-1659.4261,13.0588,90.8055},
{
2367.3650,-1525.0464,23.4855,270.5229},
{
2430.4014,-1459.5796,23.4861,357.5428},
{
2362.9785,-1301.4441,23.4848,90.3563},
{
2224.7651,-1327.7617,23.6418,167.3404},
{
2211.7961,-1485.4839,23.4808,177.7819},
{
2183.0894,-1745.3760,13.0324,167.8857},
{
1977.2860,-1813.5499,13.0399,91.6623},
{
1910.4037,-1751.8488,13.0437,88.5122},
{
1821.7780,-1752.2903,13.0439,180.1039},
{
1824.4889,-1931.9078,13.0364,266.7535},
{
1945.2917,-1956.2629,13.2036,266.6235},
{
1996.3394,-1906.6654,13.2061,223.2633}
};



RE: Problema chato com Float - k2bi_YT - 10/02/2023

Teste assim
Código PHP:
OnPlayerEnterRaceCheckpoint(playerid)
{
    new 
sec Mototime[playerid]%60;
    new 
mins = (Mototime[playerid]/60)%60;

    if(
MotoGP[playerid] == 1)
    {
        
MotoGate[playerid]++;
        if(
MotoGate[playerid] >= sizeof(corridacheckpoint))
        {
            new 
TimeRec;
            new 
Timestr[200];
            new 
driver[24];
            
GetPlayerName(playerid,driver,sizeof(driver));
            
format(Timestr,sizeof(Timestr),"%s {FFFFFF}Acabou a corrida ilegal [{FFF68F}%d {FFFFFF} Minutos, {FFF68F}%d {FFFFFF} Segundos] e ganhou {FFF68F}$2,000 {FFF68F}+5 Score",driver,mins,sec);
            
SendClientMessageToAll(0x375FFFFF,Timestr);
            
GivePlayerMoney(playerid,2000);
            
SetPlayerScore(playeridGetPlayerScore(playerid) + 5);
            
SendClientMessage(playerid,Amarelo,"Você pode ver {FFF68F} 5 melhores tempos {FFFFFF}Digitando: {FFF68F}/Crank {FFFFFF}.");
            
printf(Timestr);
            
TimeRec=Mototime[playerid];
            
MotoGP[playerid] = 0;
            
MotoGate[playerid] = 0;
            
DisablePlayerRaceCheckpoint(playerid);
            
Mototime[playerid]=0;
            
UpdateList(playerid,TimeRec);
            
SetPlayerVirtualWorld(playerid0);
            
SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
            
KillTimer(relogiotime[playerid]);
            
nacorrida[playerid]=0;
            return 
true
        
}
        else
        if(
MotoGate[playerid] >= sizeof(corridacheckpoint)-1)
        {
            
SetPlayerRaceCheckpoint(playerid,1,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[0][0],corridacheckpoint[0][1],corridacheckpoint[0][2],10);
            return 
true;
        }
        
SetPlayerRaceCheckpoint(playerid,0,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[MotoGate[playerid]+1][0],corridacheckpoint[MotoGate[playerid]+1][1],corridacheckpoint[MotoGate[playerid]+1][2],10);
    }
    return 
1;




RE: Problema chato com Float - fearsa - 10/02/2023

(10/02/2023 16:42)k2bi_YT Escreveu: Teste assim
Código PHP:
OnPlayerEnterRaceCheckpoint(playerid)
{
    new sec Mototime[playerid]%60;
    new mins = (Mototime[playerid]/60)%60;

    if(MotoGP[playerid] == 1)
    {
        MotoGate[playerid]++;
        if(MotoGate[playerid] >= sizeof(corridacheckpoint))
        {
            new TimeRec;
            new Timestr[200];
            new driver[24];
            GetPlayerName(playerid,driver,sizeof(driver));
            format(Timestr,sizeof(Timestr),"%s {FFFFFF}Acabou a corrida ilegal [{FFF68F}%d {FFFFFF} Minutos, {FFF68F}%d {FFFFFF} Segundos] e ganhou {FFF68F}$2,000 {FFF68F}+5 Score",driver,mins,sec);
            SendClientMessageToAll(0x375FFFFF,Timestr);
            GivePlayerMoney(playerid,2000);
            SetPlayerScore(playeridGetPlayerScore(playerid) + 5);
            SendClientMessage(playerid,Amarelo,"Você pode ver {FFF68F} 5 melhores tempos {FFFFFF}Digitando: {FFF68F}/Crank {FFFFFF}.");
            printf(Timestr);
            TimeRec=Mototime[playerid];
            MotoGP[playerid] = 0;
            MotoGate[playerid] = 0;
            DisablePlayerRaceCheckpoint(playerid);
            Mototime[playerid]=0;
            UpdateList(playerid,TimeRec);
            SetPlayerVirtualWorld(playerid0);
            SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
            KillTimer(relogiotime[playerid]);
            nacorrida[playerid]=0;
            return true
        
}
        else
        if(MotoGate[playerid] >= sizeof(corridacheckpoint)-1)
        {
            SetPlayerRaceCheckpoint(playerid,1,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[0][0],corridacheckpoint[0][1],corridacheckpoint[0][2],10);
            return true;
        }
        SetPlayerRaceCheckpoint(playerid,0,corridacheckpoint[MotoGate[playerid]][0],corridacheckpoint[MotoGate[playerid]][1],corridacheckpoint[MotoGate[playerid]][2],corridacheckpoint[MotoGate[playerid]+1][0],corridacheckpoint[MotoGate[playerid]+1][1],corridacheckpoint[MotoGate[playerid]+1][2],10);
    }
    return 1;

Já resolvi. era a define do MAX_RACE_POINTS faltava por o numero de checkpoint nela. mas obrigado pela ajuda