GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Dadouz le 13 Janvier 2008, 20:16:01
-
bonjour je voudrais crée une commande /jump permettant de vous faire prendre de l'altitude et de retomber à l'endroit ou vous avez écrit /jump le problème est que ma fonction a pas d'erreurs d'après pawno et dans le jeu il y a écrit "server : unknown command" et j'entend juste le petit son que jai intégré dans la commande xD voila la fonction :
if (strcmp(cmdtext, "/jump" , true, 5) == 0){
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],Pos[playerid][7]);
PlayerPlaySound(playerid,1056,X,Y,Z);
}
else if(IsPlayerInAnyVehicle(playerid))
{
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,Pos[playerid][5],Pos[playerid][6],520);
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
return 1;
}
Tout est aligné normalement lol.
Merci.
-
Salut,
Voila ! J,ai corriger ta commande. Cette commande fait mettre le vhéhicule 2 mètres dans les airs pour que la voiture se replace...
if (strcmp(cmdtext, "/jump" , true, 5) == 0){
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Z,Z);
SetPlayerPos(playerid,X,Y,Z+2);
PlayerPlaySound(playerid,1056,X,Y,Z+2);
}
else if(IsPlayerInAnyVehicle(playerid))
{
new Float:X,Float:Y,Float:Z;
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
GetPlayerPos(playerid,X,Z,Z);
SetVehiclePos(VehicleID,X,Y,Z+2);
SetPlayerPos(playerid,X,Y,Z+2);
PutPlayerInVehicle(playerid,VehicleID,1);
return 1;
}
La commande doit marcher si il a un problème dit le moi ! ;)
-
salut,
je trouve cette commande plutôt cruieuse.... ;D
pourquoi à la fin du strcmp il y a un 5???(strcmp(cmdtext, "/jump" , true, 5)
et puis tu referme la commande après la ligne du PlayerPlaySound, il ne faut pas mettre de } et à la suite, il s'agit d'un if :happy
j'ai corriger les erreurs que j'ai vu mais, ce n'est peut-être pas parfait :P
à quoi bon prendre les coordonnées du vehicle puisque logiquement, il est à la meme position que le joueur, ???
et tu pourrait échanger le if(IsPlayerInAnyVehicle) un if(GetPlayerState == PLAYER_STATE_DRIVER) pour que les joueurs qui sont à l'arrière ne fassent pas constamment cette commande qui peut être agacante lorsquOn essai de se rendre à un endroit... :closedeyes
if(!strcmp(cmdtext, "/jump" , true)){
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Z,Z);
SetPlayerPos(playerid,X,Y,Z+3);
PlayerPlaySound(playerid,1056,X,Y,Z);
if(IsPlayerInAnyVehicle(playerid)){
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,X,Y,Z+3);
}
return 1;
}
et voila, je crois que cela devrait être correcte, mais si quelque chose ne fonctionne pas, repost pour qu'on t'aide ;)
P.S. Je trouve ta correction plutôt rapide, Ordixp, tu n'as surement pas regarder énormément :closedeyes :closedeyes
:D :D++Sim++ :D :D
-
Meilleur correction:
if (strcmp(cmdtext, "/jump" , true) == 0){
new Float:X,Float:Y,Float:Z;
new VehicleID;
GetPlayerPos(playerid,X,Z,Z);
SetPlayerPos(playerid,X,Y,Z+2);
PlayerPlaySound(playerid,1056,X,Y,Z+2);
if(IsPlayerInAnyVehicle(playerid))
VehicleID = GetPlayerVehicleID(playerid);
GetPlayerPos(playerid,X,Y,Z);
SetVehiclePos(VehicleID,X,Y,Z+3);
PutPlayerInVehicle(playerid,VehicleID,0);
return 1;
}EDIT: Une petite mise à jour... ;)
EDIT 2: Ceci à été tester... :D
-
Salut,
excuse moi ordixp mais.....
tu as deja changer la position du joueur,
il n'y a pas de if(!IsPlayerInAnyVehicle) avant le SetPlayerPos.... :closedeyes
donc tu change deux fois le joueur de place... ???
++Sim++
-
Essaie et tu verra que sa marche..... ;) The :king
-
Ca marche mais ça bouffe de la rame au PC du client pour rien...
-
if (strcmp(cmdtext, "/jump" , true, 5) == 0){
//On récupère la position et on la stocke
GetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],Pos[playerid][7]); // Il faut avoir déclarer ailleurs le Pos[][];
PlayerPlaySound(playerid,1056,Pos[playerid][5],Pos[playerid][6],Pos[playerid][7]); //On récup ces données là, pas besoin de récupérer deux fois la position du joueur.
if(IsPlayerInAnyVehicle(playerid)) { //On teste la condition du joueur dans un véhicule.
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,Pos[playerid][5],Pos[playerid][6],520);
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
else { //Pas de véhicule, on applique le changement de position simple..
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
return 1; //On a terminé
}
-
Ouais, mais s'est semblant... ::)
-
Euh Spyk ça sert à rien de mettre la position du joueur dans le PlayerPlaySound, On peut les laisser à 0 ça aussi ça bouffe de la rame...
PS: Pas dutout :)
-
et bien merci beaucoup pour ces réponses je vais tester et j'ai mis true 5 car dans /jump il y a 5 caractères en comptant le /
-
Euh ça sert à rien le ,5... Ca aussi ça bouffe de la rame xD
Tu peut l'enlever aussi. Mais ça sert aussi dans certains cas, La team SA-MP ne l'a pas mis pour rien...
-
ok ok mais sa bouffe de la rame pour celui qui héberge ou celui qui joue ?
-
Ben c'est à toi de voir, ex: La fonction GetTime ça prend l'heure du PC du serveur donc le ,5 je crois que c'est pour le client
-
ok merci mais en rame tu veux dire que sa prend combien au niveau place sa doit pas être vraiment énorme.
-
}if (strcmp(cmdtext, "/jump" , true) == 0) {
GetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],Pos[playerid][7]);
PlayerPlaySound(playerid,1056);
if(IsPlayerInAnyVehicle(playerid)) {
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,Pos[playerid][5],Pos[playerid][6],520);
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
else {
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
return 1;
}
Bonsoir,
Quand je veus compiler cela me donne 4 error :
C:\PROGRA~1\ROCKST~1\GTASAN~1\GAMEMO~1\URBANL~1.PWN(674) : error 017: undefined symbol "Pos"
C:\PROGRA~1\ROCKST~1\GTASAN~1\GAMEMO~1\URBANL~1.PWN(674) : warning 215: expression has no effect
C:\PROGRA~1\ROCKST~1\GTASAN~1\GAMEMO~1\URBANL~1.PWN(674) : error 001: expected token: ";", but found "]"
C:\PROGRA~1\ROCKST~1\GTASAN~1\GAMEMO~1\URBANL~1.PWN(674) : error 029: invalid expression, assumed zero
C:\PROGRA~1\ROCKST~1\GTASAN~1\GAMEMO~1\URBANL~1.PWN(674) : fatal error 107: too many error messages on one line
Vous pourriez m'aider svp merci.
Cordialement, yoyo17.
-
Salut eisseille comme sa .
}if (strcmp(cmdtext, "/jump" , true, 1) == 0){
-
Faut definir Pos !
-
}if (strcmp(cmdtext, "/jump" , true, 1) == 0){
Pourquoi tu met un } avant le IF ?
NV.
-
Bonsoir,
NatiVe regarde le reste de mon script tu comprendra mieux.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(cmdtext, "/lc", true) == 0) {
SetPlayerInterior(playerid,1);
SetPlayerPos(playerid,-732.0,504.0,1372.5);
GameTextForPlayer(playerid,"Liberty City",1000,1);
return 1;
}if (strcmp(cmdtext, "/jump" , true) == 0) {
GetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],Pos[playerid][7]);
PlayerPlaySound(playerid,1056);
if(IsPlayerInAnyVehicle(playerid)) {
new VehicleID;
VehicleID = GetPlayerVehicleID(playerid);
SetVehiclePos(VehicleID,Pos[playerid][5],Pos[playerid][6],520);
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
else {
SetPlayerPos(playerid,Pos[playerid][5],Pos[playerid][6],520);
}
return 1;
}if (strcmp("/tn", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid,2058.0991,1374.3185,10.6719);
SetPlayerFacingAngle(playerid,93.9228);
GameTextForPlayer(playerid,"Voiture Tunning",1000,1);
return 1;
}if (strcmp("/ls", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid,1928.5251,-2662.9631,13.1500);
GameTextForPlayer(playerid,"Los Santos StuntPort",1000,1);
return 1;
}
Tu as comprit pourqui je met } avant le if ?
Cordialement, yoyo17.
EDIT: coco76 j'ai mit : }if (strcmp(cmdtext, "/jump" , true, 1) == 0){ comme tu m'as dit mais sa change rien du tout.
-
Ben tu peux déscendre le if et ne pas le coller a la balise...
-
Ben tu peux déscendre le if et ne pas le coller a la balise...
J'avoue, sa feras un plus beau script !
NV.
-
Prend mon script que tai passer... Il marche!!! :closedeyes