salut teck,
si tu veut faire une course,
tu pourrais faire un truc genre:
EN HAUT DE TON SCRIPT:
forward check ();
new race[MAX_PLAYERS];
new check1, check2,check3,check4,check5; //tu en met autant que tu en as
forward course;
ensuite:
OnGameModeInit (){
SetTimer("check",10000,1); //on lance un timer qui regarde a toutes les 10 secondes
}
public check (){
for(new p; p < MAX_PLAYERS; p++){
if(IsPlayerConnected(p)){ //a quoi bon tester les joueurs qui ne sont pas là
if(IsPlayerInArea(MIN_X,MAX_X,MIN_Y,MAX_Y)){ //on créé une zone autour du checkpoint
check1 = SetPlayerCheckpoint(p, TON CHECKPOINT); //un checkpoint ou le joueur se place pour démarré la course
}else if(race == 0) { DisablePlayerCheckpoint(p);}
}
}
}
bon jusqu'ici c'est asser simple, on a fait une variable pour savoir si le joueur est en course, sinon, on rend le checkpoint invisible pour le joueur s'il en est loin car c'est agaçant...
maintenant la commande:
OnPlayerCommandText(playerid,cmdtext[]){
new name[MAX_PLAYERS_NAME]; //on créé una variable pour stocké le nom
GetPlayerName(playerid,name,sizeof(name)); //on enregistre le nom dans la variable
if(!strcmp(cmdtext,"/join",true)){
if(IsPlayerInCheckpoint(playerid)){ //le joueur est il dans un checkpoint??
if(IsPlayerInAnyVehicle(playerid)){ //si le joueur est dans un vehicle
if(race[playerid] != 1){
race[playerid] = 1; //on change la variable, le joueur est en course
GameTextForPlayer(playerid,"La course commence dans ~g~ 10 secondes, type /exit to leave.", 5000,5); //on lui dit des trucs
for(new p; p < MAX_PLAYERS; p++){
if(IsPlayerConnected(p)){ //a quoi bon tester les joueurs qui ne sont pas là
if((race[p] == 1) && (p != playerid)){ //si un autre joueur est déjà là....
KillTimer(timer[p]);
timer[p] = SetTimerEx("course",10000,0,"i",p); //on relance au début....
}
}
} //on referme la boucle
timer[playerid] = SetTimerEx("course",10000,0,"i",playerid); //on lance la course
new string [256]; //on créé des variables pour un message
format(string,sizeof(string),"%s a commencé le décompte pour la course!!",name); //on détermine le message
SendClientMessageToAll(green,string);
}else return SendClientMessage(playerid,red."Tu est déjà en course!!");
}else return SendClientMessage(playerid, red, "Tu doit être dans un vehicle pour faire la course.");
}else{ SendClientMessage(playerid,red,"Tu doit être dans le checkpoint de départ pour lancer la course");
}
return 1;
}
if(!strcmp(cmdtext,"/exit",true)){
if(race[playerid] == 1){
race[playerid] = 0;
KillTimer(timer[playerid]);
GameTextForPlayer(playerid,"Tu as quitté la course",3500,5);
new string[256];
format(string,sizeof(string),"%s a quitté la course.",name);
}else{ SendClientMessage(playerid,red,"Tu n'est pas en course.");
}
return 1;
}
return 0;
}
on lui a fait une commande pour commencer la course quand il est dans un vehicle et qu'il est dans le checkpoint, si quelqu'un d'autre est en course, on relance son timer pour qu'ils soient synchronisés et donc qu'ils coursent l'un contre l'autre 8)
maintenant, le timer du compte a rebours de la course....
public course (player){
if(IsPlayerInCheckpoint(player){
if(IsPlayerInAnyVehicle(player)){
GameTextForPlayer(player,"GOGOGO!!!!!",2500,5);
SetPlayerCheckpoint(playerid, LE CHECKPOINT no 2);
}else return SendClientMessage(playerid,red,"Tu doit être dans un vehicle pour faire la course");
}else{ SendClientMessage(player,red,"Tu doit rester dans le checkpoint jusqu'au départ!!");}
return 1;
}
et voila on lui créé le premier vrai checkpoint de course....
ensuite lorsqu'il entre dans un checkpoint, on lui place le suivant....
public OnPlayerEnterCheckpoint(playerid){
if(IsPlayerInArea(playerid,MIN_X,MAX_X,MIN_Y,MAX_Y)){ //il s,agit de la seule technique que je voit puisqu'ils n'ont pas pensé a mettre un checkpointid
SetPlayerCheckpoint(playerid, 2e checkpoint de la course); //on lui installe le deuxième checkpoint
PlayerPlaySound(playerid,1056,x,y,z); //on lui met un petit sons pour le plaisir
//et d'autres trucs si tu veut
}
if(IsPlayerInArea(playerid,...........) //on en met d'autres pour chaque checkpoint
return 1;
}
pour le dernier, tu devrais changer la variable race a 0 et donné un prix a celui qui fini
et voila, c'est a peu près ça....
mon script est surement plein de faute, je viens juste de l'écrire et en plus il n'est peu être pas exact...
je n'ai jamais fait de courses....
Good luck teck :D
au moins j'aurai essayer.... ;D
EDIT: tu pourrais également faire un second timer après la commande qui dirait 5, 4, 3, 2, 1 avant le début de la course
++Sim++