Dann bitte so versuchen:
public tankLostTimer()
{
new vModel, vehicleid, string[32], Float:lpmnew;
for(new i = 0; i < MAX_VEHICLES; i++)
{
vModel = GetModelIdx(GetVehicleModel(i));
if(vModel == -1) continue;
if(motor[i] == 0) continue;
if(tank[i] <= 0)
{
tank[i] = 0;
motor[i] = 0;
SetVehicleParamsEx(i, 0, 0, 0, 0, 0, 0, 0);
}
else
{
lpmnew = mInfo[vModel][lpm] / 60;
tank[i] -= lpmnew;
}
}
for(new player = 0; player < MAX_PLAYERS; player++)
{
if(!IsPlayerConnected(player) || !IsPlayerInAnyVehicle(player)) continue;
vehicleid = GetPlayerVehicleID(player);
vModel = GetModelIdx(GetVehicleModel(vehicleid));
if(vModel == -1) continue;
format(string, sizeof(string), "%0.2f / %0.2f", tank[vehicleid], mInfo[vModel][maxTank]);
PlayerTextDrawSetString(player, Tacho_TD[player][15], string);
}
return 1;
}
stock GetModelIdx(modelid)
{
if(modelid)
{
for(new i = 0; i < sizeof(mInfo); i++)
{
if(mInfo[i][mID] == modelid) return i;
}
}
return -1;
}
Da du nicht alle Fahrzeuge in mInfo drin hast, muss der Index der Model-ID erst herausgefunden werden.
Das hattest du ja in deinem Code gewissermaßen auch drin, meine Annahme daraus war aber, dass ohnehin alle Fahrzeuge gelistet sind.
Wobei er mit vModel im Index ohnehin auch auf die Bretter gegangen wäre, sehe ich grade.