J'ai changé un peu le code pour qu'il soit plus compréhensible, mais pratiquement rien ne change, tu peux donc l'utiliser tel-quelle.
Pour savoir d'où vient le problème, j'ai posé des lignes de debugs à des emplacements statégiques, dit nous se qu'il en sort.
forward AlarmON(playerid)
public AlarmON(playerid)
{
printf("CALL: AlarmOn(%i)", playerid);
new iVehicleID = GetPlayerVehicleID(playerid);
new sOwner[MAX_PLAYER_NAME] = VehicleInfo[iVehicleID][vOwner];
new iOwner = GetPlayerID(sOwner);
new sName[MAX_PLAYER_NAME];
GetPlayerName(playerid, sName, sizeof(sName));
printf("VARIABLE: iVehicleID: %i", iVehicleID);
printf("VARIABLE: sOwner: %s", sOwner);
printf("VARIABLE: iOwner: %i", iOwner);
printf("VARIABLE: sName: %s", sName);
if (IsPlayerConnected(playerid))
{
printf("CONDITION: %i is connected", playerid);
if (!(strcmp(sName, sOwner, false)))
{
printf("CONDITION: %s = %s", sName, sOwner);
if (IsAnOwnableCar(iVehicleID))
{
printf("CONDITION: %i is ownable", iVehicleID);
printf("VARIABLE: %i alarm level.", VehicleInfo[iVehicleID][vAlarm]);
if (VehicleInfo[iVehicleID][vAlarm] == 1)
{
SendClientMessage(iOwner, COLOR_RED, ".:[ALARM]:.Votre Voiture est en train de se faire voler !");
SendClientMessage(playerid, COLOR_RED, ".:[ALARM]:. Vous tentez de voler une voiture de niveau 1 !");
}
else if (VehicleInfo[iVehicleID][vAlarm] == 2)
{
SendClientMessage(iOwner, COLOR_RED, ".:[ALARM]:.Votre Voiture est en train de se faire voler !");
SendClientMessage(playerid, COLOR_RED, ".:[ALARM]:. Vous tentez de voler une voiture de niveau 2 !");
PlayAlarmSound(iVehicleID, 30.0, 30000);
}
}
else
{
printf("CONDITION: %i isn't ownable", iVehicleID);
}
}
else
{
printf("CONDITION: %s != %s", sName, sOwner);
}
}
else
{
printf("CONDITION: %i is connected", playerid);
}
printf("END: AlarmON");
return 1;
}