07/11/2022 10:42
(07/11/2022 10:29)Carlos Victor Escreveu: Bom, o código está correto. Provavelmente você está integrando de forma incorreta na sua gamemode.Agora deu certo, mas deu um aviso de loose indentation, eu acho que o getplayercheckpoint.
Você precisa por tudo certinho no devido lugar, dar espaçamentos(tab) e compilar. Acabei de compilar o código que enviei e não tem erro nenhum.
E sim, a função GetPlayerCheckpoint fica fora das funções, é basicamente uma stock, como diz...
Eu coloquei ele embaixo do OnPlayerEnterCheckpoint
Vou te mostrar o que eu fiz
new const Float:g_arrCheckpoints[][] = {
{1496.9918,-689.0601,95.1433},
{1410.9694,-921.5505,38.4219}
};
new playerCheckpoint[MAX_PLAYERS] = {-1, ...};
--------------------------------------------------------------------------------
public OnPlayerEnterCheckpoint(playerid)
{
if(GetPlayerCheckpoint(playerid) != 0)
{
DisablePlayerCheckpoint(playerid);
GivePlayerMoney(playerid, 20);
SendClientMessage(playerid, -1, "* Você entregou um jornal e ganhou $20.");
return 1;
}
return 1;
}
GetPlayerCheckpoint(playerid)
{
for(new i = 0; i < sizeof(g_arrCheckpoints); i++)
{
if(playerCheckpoint[playerid] == i && IsPlayerInRangeOfPoint(playerid, 2.0, g_arrCheckpoints[i][0], g_arrCheckpoints[i][1], g_arrCheckpoints[i][2]))
return 1;
}
return 0;
}
if(!strcmp(cmd, "/entregarjornal", true))
{
new rand = random(sizeof(g_arrCheckpoints));
SetPlayerCheckpoint(playerid, g_arrCheckpoints[rand][0], g_arrCheckpoints[rand][1], g_arrCheckpoints[rand][2], 1.0);
playerCheckpoint[playerid] = rand;
SendClientMessage(playerid, -1, "* Entregue até o local marcado em seu mapa.");
return 1;
}