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

Titre: commande /jump
Posté 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.
Titre: Re : commande /jump
Posté par: MultiGamers le 13 Janvier 2008, 20:47:16
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 !  ;)

Titre: Re : commande /jump
Posté par: S!m le 13 Janvier 2008, 21:00:58
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
Titre: Re : commande /jump
Posté par: MultiGamers le 13 Janvier 2008, 21:05:53
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
Titre: Re : commande /jump
Posté par: S!m le 13 Janvier 2008, 21:18:46
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++
Titre: Re : commande /jump
Posté par: MultiGamers le 13 Janvier 2008, 21:20:22
Essaie et tu verra que sa marche.....  ;) The  :king
Titre: Re : commande /jump
Posté par: UrbanGhetto le 14 Janvier 2008, 15:29:32
Ca marche mais ça bouffe de la rame au PC du client pour rien...
Titre: Re : commande /jump
Posté par: spykerc8 le 14 Janvier 2008, 15:43:47
Code: (c++) [Sélectionner]
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é
}
Titre: Re : commande /jump
Posté par: MultiGamers le 14 Janvier 2008, 18:58:27
Ouais, mais s'est semblant...   ::)
Titre: Re : commande /jump
Posté par: UrbanGhetto le 14 Janvier 2008, 19:02:50
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 :)
Titre: Re : commande /jump
Posté par: Dadouz le 14 Janvier 2008, 19:04:44
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 /
Titre: Re : commande /jump
Posté par: UrbanGhetto le 14 Janvier 2008, 19:19:37
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...
Titre: Re : commande /jump
Posté par: Dadouz le 14 Janvier 2008, 19:21:27
ok ok mais sa bouffe de la rame pour celui qui héberge ou celui qui joue ?
Titre: Re : commande /jump
Posté par: UrbanGhetto le 14 Janvier 2008, 19:30:27
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
Titre: Re : commande /jump
Posté par: Dadouz le 14 Janvier 2008, 19:42:15
ok merci mais en rame tu veux dire que sa prend combien au niveau place sa doit pas être vraiment énorme.
Titre: Re : commande /jump
Posté par: yoyo17 le 14 Janvier 2008, 20:02:35
}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.
Titre: Re : commande /jump
Posté par: Eloctro le 14 Janvier 2008, 20:08:24
Salut eisseille comme sa .

}if (strcmp(cmdtext, "/jump" , true, 1) == 0){
Titre: Re : commande /jump
Posté par: MrFredo le 14 Janvier 2008, 20:10:08
Faut definir Pos !
Titre: Re : Re : commande /jump
Posté par: NatiVe™ le 14 Janvier 2008, 20:16:32
}if (strcmp(cmdtext, "/jump" , true, 1) == 0){

Pourquoi tu met un } avant le IF ?

NV.

Titre: Re : commande /jump
Posté par: yoyo17 le 14 Janvier 2008, 20:32:32
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.
Titre: Re : commande /jump
Posté par: UrbanGhetto le 14 Janvier 2008, 20:59:42
Ben tu peux déscendre le if et ne pas le coller a la balise...
Titre: Re : Re : commande /jump
Posté par: NatiVe™ le 14 Janvier 2008, 22:21:31
Ben tu peux déscendre le if et ne pas le coller a la balise...

J'avoue, sa feras un plus beau script !

NV.

Titre: Re : commande /jump
Posté par: MultiGamers le 15 Janvier 2008, 03:12:42
Prend mon script que tai passer... Il marche!!! :closedeyes