GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [BGS]teck le 21 Février 2008, 18:32:29
-
bonjour j'ai creer une course avec des chekpoint mes comment je fait pour la métre dan mon game mode ou filterscript inposible de convertir avec http://up.delux-host.com/1192573787/index.php5 (http://up.delux-host.com/1192573787/index.php5) pourier vous m'aider merci
-
salut teck,
tu as fait une map avec MTA qui contient des checkpoints??
tu n'as qu'a ouvrir le fichier .map à l'aide de bloc-note et ensuite en tiré les informations dont tu as besoin.... :D
par exemples:
<map mod="race" version="1.0">
<meta/>
<options>
<respawn>timelimit</respawn>
</options>
jusqu'ici, rien d'interressant :( :(
<checkpoint name="checkpoint">
<position>2477.336914 -1665.437622 12.326383</position> <<<<<<<<<<<<<------------------------ici
</checkpoint>
ah...
la position du premier checkpoint
X,Y,X
si contrairement a celui qui suit, il n'y aucune couleur de donné ou size, il s'agit de ceux par défaut,le size par défaut est 1
je croit que l'on ne peut modifier la couleur d'un checkpoint avec samp.....
<checkpoint name="checkpoint (1)">
<position>2463.600098 -1660.087280 12.304688</position>
<size>1.500000</size> <<<<<<<<<<<<<<<<<<<----------------------------------------------ici et
<color>152 156 158</color> <<<<<<<<<<<<<<<<<<--------------------------------------------------ici
</checkpoint>
<checkpoint name="checkpoint (2)">
<position>2432.047852 -1658.491333 12.382813</position>
</checkpoint>
<checkpoint name="checkpoint (3)">
<position>2386.534912 -1658.516357 12.382813</position>
</checkpoint>
<checkpoint name="checkpoint (4)">
<position>2307.131104 -1658.302612 13.372179</position>
</checkpoint>
<checkpoint name="checkpoint (5)">
<position>2255.466797 -1657.492432 14.274627</position>
</checkpoint>
</map>
bon, ensuite, tu as les données, tu n'as plus qu'a créer les checkpoints en question
SetPlayerCheckpoint(playerid,X,Y,Z,size);
le playerid étant le joueurs apercevant le checkpoint, le X,Y,Z la position du checkpoint et le size le meme dont j'ai fait mention plus haut
donc voila, tu as les checkpoints que tu voulais :D
si tu veut créer des trucs plus compliqués(ta course)
ehbien, j'ai toujours eu de la difficulté à faire une course avec les checkpoints
en tout cas.... bonne chance teck
++Sim++
-
merci de ta reponce mes je doit les méntre dans onegamemodinit en desou de mes pickup ??? je ne trouve pas merci de me repondre
-
Oui un SetPlayerCheckpoint(playerid,X,Y,Z,size); En dessous de t'es PickUp(OnGameModeInit
-
oui mais quan je les mais sa me mes 1 ereur
C:\Users\thomas\Desktop\gamemodes\stuntlandteckto27.pwn(212) : error 017: undefined symbol "playerid"
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
donc je fait un forward ou un new j'ai ésséyer les deux et samarche pas petéte quil fodré que je fasse un filterscript ????
-
Ah non exuse moi, enlève le "playerid", qui te fait ca : SetPlayerCheckpoint(X,Y,Z,size);
-
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++
-
merci beaucoup et ossi un truc je voudré fair la commandes /join pour aler direct au premier chekpoint donc je pren la coordoner du premier chekpoint et je di course dan 10 secon par exenple et je voudrait freeze le joueur quan il fait /join pour pas tricher et des que je lance mon décompter avec /count ba je voudrait quil soi défrisé quan sa écrit race ???
-
Prend exemple sur mon "/racecount" :
if (strcmp(cmdtext, "/racecount", true)==0)
{
if(Count >= 5)
{
SendClientMessageToAll(COLOR_GREEN, "La course va commencer !!!");
CountDown();
return 1;
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "Une course est déjà activer. Recommence plus tard !");
return 1;
}
}
//----------------------
public CountDown(){
if (Count > 0){
GameTextForAll( CountText[Count-1], 2500, 3);
Count--;
SetTimer("CountDown", 1000, 0);
}
else{
GameTextForAll("~g~LA ~r~COURSE~y~ COMMENCE~w~ !", 3500, 3);
Count = 5;
}
return 1;
}
new Count = 5;
new CountText[5][5] ={
"~r~1",
"~y~2",
"~b~3",
"~g~4",
"~w~5"
};
Voilà ta plus qu'a te démerder lol ^^
-
désoler mes je nis conpren rien lol j'ai une peu du mal dans les truc de cource come sa si on pouré maider a métre mes chek point ou que je trouveré un traceur car la j'ai trop de truc a fair sur mon serveur je n'em peut plu lol mais la j'ai pas tilter le truc des chekpoint oui j'ai déja fait un race count moi méme mes sque je voudrait ces que le joueur soi frizer des quil arive dans mon chek point et quan les conte a rebourd commence et a écri race a la fin et ba je voudrait que les joueur soit défriser :wall :wall :wall :wall :wall :wall :wall
-
Salut,
pour freezer le joueur lorsqu'il fait /join, tu n'as qu'a faire un TooglePlayerControllable(playerid,0);
puis pour défreezer lorsque la course commence, TooglePlayerControllable(playerid,1);
et je croit que je vais réessayer d'en faire une sur mon serveur aussi, la dernière fois c'était il y a très longtemps, peut-être vais-je y arriver cette fois ci....
mais si tu faire des courses d'une façon simple, cherche pour le Yrace
++Sim++
-
et comment convertir ma race en YR car j'ai telecharger yrace mes comen je fait pour convertir
-
eh bien....
dans le fichier yrace, il y a ceci:
YRACE 2 Sim 1 2 0 8.000000
A 0 A 0 A 0 A 0 A 0
A 0 A 0 A 0 A 0 A 0
0.000000 112007.000000 0.000000
120844.000000 0.000000 127753.000000
2096.481689 834.807189 6.446568 <<<<<<<<<<<<-------------------------
2466.802001 835.230346 6.441473
2725.932861 1182.561035 6.440518
2725.099365 2293.141113 6.440557
2545.458984 2588.155761 4.565608
2023.114746 2565.392822 6.498682
1326.486450 2451.088134 6.442695
1207.436279 2045.341796 6.444301
1214.165039 994.541076 6.518639
1976.803100 834.880798 6.445075
donc au début, on a l'auteur de la race....
ensuite je ne sais pas mais il s'agit des paramètre de la race
puis au niveau de la flèche on arrive aux différents checkpoints
et voila c'est tout ce que je sais
++Sim++
-
merci a toi tu ma rendu un grand service merci :D :D :D :D :D
-
dsl pour le double post j'ai fait come tu mavait di sim mais j'ai 8 erreur
je mes le code
#include <a_samp>
forward check ();
forward course;
new race[MAX_PLAYERS];
new check1, check2,check3,check4,check5;
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" course racer kart");
print("--------------------------------------\n");
return 1;
}
OnGameModeInit (){
SetTimer("check",10000,1);
}
public check (){
for(new p; p < MAX_PLAYERS; p++){
if(IsPlayerConnected(p)){
if(IsPlayerInArea(MIN_X,MAX_X,MIN_Y,MAX_Y)){
check1 = SetPlayerCheckpoint(p, 1706.045654 -520.860229 33.593754);
}else if(race == 0) { DisablePlayerCheckpoint(p);}
}
}
}
OnPlayerCommandText(playerid,cmdtext[]){
new name[MAX_PLAYERS_NAME];
GetPlayerName(playerid,name,sizeof(name));
if(!strcmp(cmdtext,"/join",true)){
if(IsPlayerInCheckpoint(playerid)){
if(IsPlayerInAnyVehicle(playerid)){
if(race[playerid] != 1){
race[playerid] = 1;
GameTextForPlayer(playerid,"La course commence dans ~g~ 10 secondes, type /exit to leave.", 5000,5);
for(new p; p < MAX_PLAYERS; p++){
if(IsPlayerConnected(p)){
if((race[p] == 1) && (p != playerid)){
KillTimer(timer[p]);
timer[p] = SetTimerEx("course",10000,0,"i",p);
}
}
}
timer[playerid] = SetTimerEx("course",10000,0,"i",playerid);
new string [256];
format(string,sizeof(string),"%s a commencé le décompte pour la course!!",name);
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;
}
public course (player){
if(IsPlayerInCheckpoint(player){
if(IsPlayerInAnyVehicle(player)){
GameTextForPlayer(player,"race!!!!!",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;
}
public OnPlayerEnterCheckpoint(playerid){
if(IsPlayerInArea(playerid,MIN_X,MAX_X,MIN_Y,MAX_Y)){
SetPlayerCheckpoint(playerid, 1662.792358 -99.281364 34.294342);// 2 éme chekpoint
PlayerPlaySound(playerid,1056,x,y,z);
}
if(IsPlayerInArea(playerid,MIN_X,MAX_X,MIN_Y,MAX_Y)){
SetPlayerCheckpoint(playerid, 1634.888794 205.071854 30.785172);// 3 éme chekpoint
PlayerPlaySound(playerid,1056,x,y,z);
}
return 1;
}
voici les 8 erreur
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(4) : error 001: expected token: "(", but found ";"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(5) : error 001: expected token: ")", but found "new"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(5) : error 001: expected token: ";", but found "new"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(24) : error 017: undefined symbol "IsPlayerInArea"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(25) : error 001: expected token: ",", but found "-rational value-"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(25) : warning 215: expression has no effect
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(25) : error 001: expected token: ";", but found ")"
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(25) : error 029: invalid expression, assumed zero
C:\Users\thomas\Desktop\filterscripts\courseteck.pwn(25) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
8 Errors.
merci de m'aider et désoler encore pour le double poste :wall :wall :wall
-
Hum, Pour les longs code comme ça y'a PastBin (http://pastebin.gtaonline.fr/pastebin.php)...
T'as oublié le public dans ton OnPlayerCommandText...
-
salut teck,
j'ai bien beau vouloir être gentil et t'aider énormément (ça c'est vrai...), :-[
il faut que tu cherche un peu sinon tu vas toujours revenir ici.... >:( >:(
mais bon, voilà des indices.....
l'erreur: error 001: expected token: "(", but found ";"
veut dire qu'il s'attendait a trouver le caractère ( mais a trouver ; ???
donc, on va voir sur la ligne 4 :-\, qui a t'il??
forward course;
donc c'est qu'un ( va à la place du ;
donc il faut placer ce symbole....
mais regarde les autres, ils n'ont pas d'erreurs......
tu l'écrit comme les autres.... ce qui donne:
forward course ();
toutes les error 001 sont des trucs de se genre, ;)
ensuite le error 017 est normal car tu n'as pas défini la fonction IsPlayerInArea,
regarde dans la signature d'Urban, c'est lui qui l'a créé...( merci a toi Urban, très utile comme code)
pour les suivants, regarde dans les accolades, l'erreur doit se trouver la et tu doit changer certains trucs, comme les MIN_X,MAX_X,MIN_Y,MAX_Y, TON CHECKPOINT etc.... :cheers
maintenant, cherche un peu, essai des trucs..... ;)
bonne chance :D
-
Merci a vous si je n'iarive pas je le métré sur pasterbin merci de ces informatin les gar surtout a toi sim
pour éviter le double poste
voila je me prend la téte sur des checkpoint lol non je n'arive pas a le fair désoler de vous souler je vous donne le pasterbin
http://pastebin.gtaonline.fr/pastebin.php?show=356 (http://pastebin.gtaonline.fr/pastebin.php?show=356)
Aider moi merci beaucoup
-
Tu sais v'est vraiment énervant de t'aider quand un gars écrit en francais comme une vache éspagnole..
Donc on t'aidera pas avant que tu es corrigé 4-5 fautes...