GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: » Lukubi™ le 05 Novembre 2008, 15:33:01
-
bonjour j'ai ajouter un code au script yrace pour que le joueur soit teleporté au point de depart mais, lorsqu'il est dans un vehicule il n'est pas teleporté et lorsqu'il est a pied il est teleporté .
voila le code que j'ai ajouté :
dcmd_join(playerid,params[])
{
#pragma unused params
if(RaceBuilders[playerid] != 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "You are currently building a race, can't join. Use /clearrace to exit build mode.");
return 1;
}
if(RaceParticipant[playerid]>0)
{
SendClientMessage(playerid, COLOR_YELLOW, "You've already joined the race!");
}
else if(RaceActive==1 && RaceStart==0)
{
if(PrizeMode >= 2 && GetPlayerMoney(playerid) < JoinFee)
{
format(ystring,sizeof(ystring),"You don't have enough money to join the race! (Join fee: %d$)",JoinFee);
SendClientMessage(playerid, COLOR_YELLOW, ystring);
return 1;
}
else if (PrizeMode >= 2)
{
new tempval;
tempval=(-1)*JoinFee;
GivePlayerMoney(playerid,tempval);
Pot+=JoinFee;
}
CurrentCheckpoint[playerid]=0;
if(Racemode == 3)
{
SetRaceCheckpoint(playerid,LCurrentCheckpoint,LCurrentCheckpoint-1);
CurrentCheckpoint[playerid]=LCurrentCheckpoint;
}
else SetRaceCheckpoint(playerid,0,1);
RaceParticipant[playerid]=1;
CurrentLap[playerid]=0;
SendClientMessage(playerid, COLOR_GREEN, "You have joined the race, go to the start!");
Participants++;
}
else if(RaceActive==1 && RaceStart==1)
{
SendClientMessage(playerid, COLOR_YELLOW, "The race has already started, can't join.");
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "There is no race you can join.");
}
new target;
if(IsPlayerInAnyVehicle(playerid))
{
SetVehiclePos(playerid,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
}
else
{
SetPlayerPos(playerid,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
}
return 1;
}
savez vous d'ou peut venir ce probleme
-
Non désolé mais je pense que tu aurais put le mettre à la suite de ce sujet:
http://www.gtaonline.fr/forums/index.php/topic,5353.0.html
sauf si c'est celui de samp forum que tu utilise dans ce cas la je suis désolé fin bon pour en revenir à ton problème,
je pense qu'au lieux de téléporter le perso tu devrais téléporter le véhicule avec:
SetVehiclePos(..................);
SetPlayerPos(..................);
PutPlayerInVehicle(..............);
Voila sinon je ne sais pas
-
oui, jutilise le yrace du forum samp
mais j'avais deja essayer avec le put player in vehicule et sa ne marchait pas non plus
-
A oki alors je suis désolé je n'ai pas de réponses à ton problème qui me viennent tout de suite j'éditerais si je trouve entre temps.
Bonne continuation et à bientôt.
-
svp repondez moi ce script est très important pour mon serveur
-
Eu a la place de " IsPlayerInVehicle " .
-
Eu a la place de " IsPlayerInVehicle " .
j'ai pa compris ton message
-
Désoler je suis tête en l'ai , a la place de "IsPlayerInAnyVehicle" ce serait pas "IsPlayerInVehicle" .
-
ça changera rien puisqu'il y a un else après, donc si le joueur est dans aucun véhicule (bla bla)
sinon
(bla bla)
Donc que se soit un IsPlayerInVehicle ou pas le résultat sera le même, je pense qu'il faut déjà que tu remonte un peut le code, que ça positionne le véhicule et le joueur avant les messages d'erreurs, peut être que, des fois c'est juste en changeant le place les codes que ça fonctionne ^^
-
repere toi à la phrase "You have joined the race, go to the start!"
c'est bien la phrase qui apparait quand on tape /join, il me semble ?
donc, remplacer ton:
if(Racemode == 3)
{
SetRaceCheckpoint(playerid,LCurrentCheckpoint,LCurrentCheckpoint-1);
CurrentCheckpoint[playerid]=LCurrentCheckpoint;
}
else SetRaceCheckpoint(playerid,0,1);
RaceParticipant[playerid]=1;
CurrentLap[playerid]=0;
SendClientMessage(playerid, COLOR_GREEN, "You have joined the race, go to the start!");
Participants++;
par:
au début de la commmande join:
new PState=GetPlayerState(playerid);
new string[256];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
if(!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, COLOR_RED, "Choose a car and type /join to join the race!");
return 1;
}
if(PState != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, COLOR_RED, "Choose a car and type /join to join the race!");
return 1;
}
puis plus bas:
if(Racemode == 3)
{
SetRaceCheckpoint(playerid,LCurrentCheckpoint,LCurrentCheckpoint-1);
CurrentCheckpoint[playerid]=LCurrentCheckpoint;
}
else SetRaceCheckpoint(playerid,0,1);
RaceParticipant[playerid]=1;
CurrentLap[playerid]=0;
//SendClientMessage(playerid, COLOR_GREEN, "You have joined the race, go to the start!");
Participants++;
format(string, sizeof(string), "<%s> Join the race", name);
SendClientMessageToAll(COLOR_YELLOW, string);
new target;
SetVehiclePos(GetPlayerVehicleID(playerid), RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]); // téléporte le véhicule avec le joueur
par contre, tu vas devoir maintenant jouer avec les:
RaceParticipant[playerid]=3; // (values: 0 - not in race, 1 - joined, 2 - arrived to start CP, 3 - /ready, 4 - racing, 5 - Last CP)
ReadyRefresh();
-
j'ai fait com tu ma dit mais :
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(145) : error 004: function "CreateRaceMenus" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(188) : error 033: array must be indexed (variable "dcmd_join")
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(189) : error 017: undefined symbol "dcmd_leave"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(190) : error 017: undefined symbol "dcmd_endrace"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(191) : error 017: undefined symbol "dcmd_ready"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(192) : error 017: undefined symbol "dcmd_bestlap"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(193) : error 017: undefined symbol "dcmd_bestrace"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(195) : error 017: undefined symbol "dcmd_airrace"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(196) : error 017: undefined symbol "dcmd_cpsize"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(197) : error 017: undefined symbol "dcmd_prizemode"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(198) : error 017: undefined symbol "dcmd_setprize"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(200) : error 017: undefined symbol "dcmd_raceadmin"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(201) : error 017: undefined symbol "dcmd_buildmenu"
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(234) : error 004: function "IsNotAdmin" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(246) : error 004: function "GetBuilderSlot" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(255) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(256) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(257) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(258) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(259) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(267) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(271) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(273) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(274) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(275) : error 004: function "b" is not implemented
C:\DOCUME~1\TaricK\Bureau\yrace.pwn(276) : error 004: function "b" is not implemented
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
voila tout ce qui est sortit :( en plus je comprend rien a ces erreur moi tout est definie
le lien pastbin de ma cmd /join http://pastebin.gtaonline.fr/pastebin.php?show=511
cordialement
-
alors,
si tu veux que le joueur soit simplement téléporté avec son véhicule:
http://pastebin.gtaonline.fr/pastebin.php?show=515 (http://pastebin.gtaonline.fr/pastebin.php?show=515)
et si tu veux qu'en plus, la commande /ready soit validé automatiquement:
http://pastebin.gtaonline.fr/pastebin.php?show=516 (http://pastebin.gtaonline.fr/pastebin.php?show=516)
j'ai simplement ajouté:
RaceParticipant[playerid]=3;
ReadyRefresh();
pour la 2eme solution, je n'ai pas testé mais je pense que ça complique les choses et qu'il vas falloir modifier d'autre commande (ReadyRefresh()..)
-
Dans ton script original, il y a une grosse erreur Tarick :
SetVehiclePos(playerid,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
A la place de playerid, il faut mettre l'id du véhicule dans lequel est le joueur :
SetVehiclePos(GetPlayerVehicleId (playerid),RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
C'est pour ça que ton script original ne fonctionnait pas quand tu étais dans un véhicule.
Par contre, le SetVehiclePos quand un joueur est dans le véhicule marche moyennement.
Il vaut mieux faire comme a dit angelrider. :
new vehicleid = GetPlayerVehicleId (playerid);
SetVehiclePos(vehicleid,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
SetPlayerPos (playerid,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2]);
PutPlayerInVehicle (playerid, vehicleid, 0);
++
Syg
-
Quand tu dis "le SetVehiclePos quand un joueur est dans le véhicule marche moyennement"
c'est ce qui fait que souvent, on est invisible et obligé de sortir du véhicule pour le faire apparaitre ?
-
merci gtafan et syg ^^
ton script marche gtafan encore merci et merci a toi syg
mais j'ai un autre probleme, quand le joueur tape join il est teleporté dans le sens inverse de la course auriez vous une solution ? (j'ai cherché mais rien trouvé :()