Variable globale:
new iRobTime[MAX_PLAYERS] = {0};
new oRobTimer;
Fonction OnGameModeInit ou OnFilterScriptInit:
oRobTimer = SetTimer("RobTimer", 1000, true);
Fonction OnGameModeExit ou OnFilterScriptExit:
KillTimer(oRobTimer);
Fonctions:
public RobTimer() {
for (int i = 0; i < MAX_PLAYERS; i++) {
if (iRobTime[i] > 0) {
iRobTime[i]--;
}
}
}
public CanRob(playerid) {
if (iRobTime[playerid] == 0) {
return true;
}
return false;
}
public Rob(playerid) {
if (IsPlayerInRangeOfPoint(playerid, 5.0, -1657.6091, 1210.7561, 7.2500)) {
if (CanRob(playerid)) {
SendClientMessage(playerid, -1, "{FFFFFF}Vous venez de voler le {FF0000}Vendeur de Voiture {FFFFFF}!");
GivePlayerMoney(playerid, 500);
SpawnPlayer(playerid);
iRobTime[playerid] = 300;
}
else {
new sString[128] = "";
format(sString, sizeof(sString), "Il reste %i secondes avant de pouvoir effectuer le prochain vol.", iRobTime[playerid]);
SendClientMessage(playerid, 0xFFFFFFFF, sString);
}
}
else {
SendClientMessage(playerid, -1, "{FF0000}Vous n'êtes pas près du lieu !");
}
}
Fonction OnPlayerCommandText:
if (!strcmp("/volervendeur", cmdtext, true)) {
Rob(playerid);
return 1;
}
Ce code devrait normalement fonctionner, il a été entièrement fait sur le forum, donc il peut très certainement avoir des erreurs.
iRobTime[playerid] = 300;
Cette ligne correspond au temps à attendre entre chaque vol en seconde, dans ce cas, 5 minutes.
Le timer RobTimer se charge d'enlever une seconde à cette variable à tous les joueurs toutes les secondes.
Si cette variable est à zéro, le joueur peut effectuer un vol, sinon, un petit message d'erreur s'affiche avec le temps en seconde qui reste à attendre.