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(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 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(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 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
|