salut
pour éviter que la même action se répète plein de fois inutilement ( et même désagréablement dans ce cas),
tu crée une variable que tu met a 1 dès qu'on lui montre le menu et n'oublie aps de vérifier si elle est a un avant de te lancer dans l'action....
alors voici le code en gros... (y faudrait bien finir par y arriver...)
En haut de ton gm, tu initialise les variables...:
new IsPlayerFreezedForRepair[MAX_PLAYERS];
new TimerAccident;
forward accident();
puis tu ajoute dans ta callback OnGameModeInit() (c'est là que tu retrouve tes AddPlayerClass, AddStaticPickup, AddStaticVehicle ......)
TimerAccident = SetTimer("Accident",1000,1);
puis je te recommande à ajouter dans OnGameModeExit()
KillTimer(TimerAccident);
puis on arrive à tes codes.....
public OnPlayerSelectedMenuRow(playerid, row)
{
new vehicleid = GetPlayerVehicleID(playerid);
new Menu:Current2 = GetPlayerMenu(playerid);
if (Current2 == blesser)
{
if(IsPlayerFreezedForRepair[playerid] ==0)return 0;
if (row == 0)
{
if(Medics < 1)
{
SendClientMessage(playerid, COLOR_GREY, " Il n'y a pas de médecin en service !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "** %s a besoin de secours. (utilisez /accepter secours)", sendername);
SendRadioMessage(4, TEAM_AZTECAS_COLOR, string);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Vous avez appelé les secours , attendez a votre position.");
}
else if (row == 1)
{
SendClientMessage(playerid,COLOR_RED, "(!) Vous etes mort avec l'explosion de votre vehicule (!)");
SetVehicleHealth(vehicleid,0);
IsPlayerFreezedForRepair[playerid] = 0;
TogglePlayerControllable(playerid,1);
}
}
return 1;
}
public accident()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerFreezedForRepair[i])continue;
if(IsPlayerInAnyVehicle(i))
{
new vehicleid = GetPlayerVehicleID(i);
new Float:vhp;
GetVehicleHealth(vehicleid,vhp);
if(vhp <= 500)
{
TogglePlayerControllable(i,0);
SendClientMessage(i, COLOR_RED,"Vous venez d'avoir un accident vous etes gravement blessez.");
SendClientMessage(i, COLOR_RED,"Taper /accident pour faire votre choix.");
ShowMenuForPlayer(blesser,playerid);
IsPlayerFreezedForRepair[i] = 1;
}
}
}
}
return 1;
}
et n'oublie pas de remettre la variable a 0 lorsque le meccano le répare......
ah et important, lorsqu'un joueur se connecte...
public OnPlayerConnect(playerid)
{
IsPlayerFreezedForRepair[playerid] = 0;
return 1;
}
et voila, je crois que ca devrait être a peu près ca.... essaie de l'adapter un peu et bonne chance ;)
++sim++