GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: UrbanGhetto le 03 Juillet 2007, 18:14:49

Titre: Sauvegarder une position
Posté par: UrbanGhetto le 03 Juillet 2007, 18:14:49
Bonjour, Je voudrais savoir comment créer une commande qui sauvegarde notre position, Par exemple :

Je suis a LS, Je fais /S
Je vais a LV, Je fais /R et je reviens a la position pour j'été.

Merci de vos réponces  ;)
Titre: Re : Sauvegarder une position
Posté par: FuriousKing le 03 Juillet 2007, 18:46:19
Il y a déjà un topic la dessus  8) .
Titre: Re : Sauvegarder une position
Posté par: UrbanGhetto le 03 Juillet 2007, 18:57:28
Je cet mais j'y comprends rien  :(
Titre: Re : Sauvegarder une position
Posté par: Nip le 07 Juillet 2007, 20:43:05
hhheeeuuuu

moi non plus je comprend rien j'ai toujours des erreur  ;D ;D ;D ;D



SVP aidée nous  :cheers
Titre: Re : Sauvegarder une position
Posté par: Syg le 07 Juillet 2007, 23:23:43
Rien de bien compliqué :

Lorsque qu'un joueur fait "/s", on sauvegarde les coordonnées de l'endroit où il se trouve dans un tableau.
Par exemple : new Float:SavePos[MAX_PLAYERS][3]; // Un triplet de coordonnées par joueur

Quand le joueur fait "/r", on le téléporte aux coordonnées sauvegardées précédement.

Voilà, à vous de jouer.
Titre: Re : Sauvegarder une position
Posté par: kev375 le 22 Août 2007, 22:10:51
Moi sa marche pas   ...  j'avais fais sa dans OnPlayerCmdText :

http://pastebin.com/m6f721abc


Voila, j'espere qu'on pourra m'aider.
Titre: Re : Sauvegarder une position
Posté par: Syg le 22 Août 2007, 22:21:34
Une erreur classique de programmation (je l'ai fait souvent à mes débuts).
Le tableau SavePos doit être déclaré en dehors de toute fonction (après les lignes d'include par exemple).
Donc déplaces simplement la ligne new Float:SavePos[MAX_PLAYERS][3]; tout en haut de ton script
et ajoute la ligne
GetPlayerPos(playerid, SavePos[0],SavePos[1],SavePos[2]); à la place dans OnPlayerCmdText

Un variable déclarée dans un bloc n'existe que pendant que l'éxécution de ce bloc (bloc = ensemble des lignes de code situées entre une accolade ouvrante et une accolade fermante {})
Dans ton cas tu devais certainement avoir une erreur de compilation puisque dans le cas du /r, le tableau SavePos n'est pas déclaré.

++
Syg
Titre: Re : Sauvegarder une position
Posté par: NatiVe™ le 22 Août 2007, 22:23:07
Salut !

Je suis gentil je vous passe la mienne !

http://pastebin.com/f426e71d6

AK.
Titre: Re : Sauvegarder une position
Posté par: UrbanGhetto le 22 Août 2007, 22:52:34
Merci infiniment AK  :D

Mais il faut présiser aux autres :

new Float:Pos[MAX_PLAYERS][4]; //
Il faut le mettre tout en haut de votre script sinon la commande ne marchera pas correctement  ;)
Titre: Re : Sauvegarder une position
Posté par: Syg le 22 Août 2007, 23:07:31
Juste deux petites remarques pour Arsenik :
1 - Les fonctions GetPlayerFacingAngle et SetPlayerFacingAngle ne fonctionnent que quand le joueur est a pied. Quand il est en vehicule, il faut utiliser GetVehicleZAngle et SetVehicleZAngle. J'ai fait l'essai, le véhicule ne revient pas avec l'angle qu'il avait lors de la sauvegarde.
2 - Ton code permet au passager de retourner à sa position sauvegardée avec le véhicule et tous les joueurs qui sont dedans. Le problème c'est que le bout de code que tu exécute pour le joueur qui se téléporte (notament SetCameraBehindPlayer) n'est pas exécuté pour les autres joueurs ce qui peut faire des choses bizzares (j'ai fait des essais, parfois on ne se voit plus, parfois on est ejecté du vehicule, parfois on est pas téléporté et j'ai peut-être pas tout vu). (En plus, je pense que seul le conducteur doit décidé de l'endroit où doit aller le véhicule sinon, avec 3 passagers, ça peut vite devenir le bordel).

++
Syg
Titre: Re : Re : Sauvegarder une position
Posté par: NatiVe™ le 22 Août 2007, 23:26:36
Merci infiniment AK  :D

Mais il faut présiser aux autres :

new Float:Pos[MAX_PLAYERS][4]; //
Il faut le mettre tout en haut de votre script sinon la commande ne marchera pas correctement  ;)

Oui escuse moi ^^

Et heuuu syg sa marche tres bien que je sois a pied ou en vehicule  ::)

AK.
Titre: Re : Sauvegarder une position
Posté par: Syg le 23 Août 2007, 00:43:16
Arsenik, fais cet essai :
Tu prends un véhicule
Tu sauvegardes ta position en le dirigeant vers le nord.
Tu circules un peu et tu te places pour que ton véhicule fasse face à l'est par exemple
Tu fais /r et ton véhicule se retrouve bien à la position sauvegardée mais il fait face à l'est, pas au nord (en tout cas chez moi)

Mais bon, c'est pas très grave.

++
Syg
Titre: Re : Re : Sauvegarder une position
Posté par: NatiVe™ le 23 Août 2007, 00:47:51
Juste deux petites remarques pour Arsenik :
1 - Les fonctions GetPlayerFacingAngle et SetPlayerFacingAngle ne fonctionnent que quand le joueur est a pied. Quand il est en vehicule, il faut utiliser GetVehicleZAngle et SetVehicleZAngle. J'ai fait l'essai, le véhicule ne revient pas avec l'angle qu'il avait lors de la sauvegarde.
2 - Ton code permet au passager de retourner à sa position sauvegardée avec le véhicule et tous les joueurs qui sont dedans. Le problème c'est que le bout de code que tu exécute pour le joueur qui se téléporte (notament SetCameraBehindPlayer) n'est pas exécuté pour les autres joueurs ce qui peut faire des choses bizzares (j'ai fait des essais, parfois on ne se voit plus, parfois on est ejecté du vehicule, parfois on est pas téléporté et j'ai peut-être pas tout vu). (En plus, je pense que seul le conducteur doit décidé de l'endroit où doit aller le véhicule sinon, avec 3 passagers, ça peut vite devenir le bordel).

++
Syg

Quelle est la solotion pour que il y est que le conducteur qui decide ?

Merci

AK.
Titre: Re : Sauvegarder une position
Posté par: Syg le 23 Août 2007, 00:50:39
Faire un test sur l'etat du joueur :

   if (GetPlayerState (playerid) == PLAYER_STATE_DRIVER)
   {
      /* Conducteur : On téléporte */
   }
   else
   {
      /* Passager : On ne téléporte pas */
   }


++
Syg
Titre: Re : Sauvegarder une position
Posté par: NatiVe™ le 25 Août 2007, 17:28:51
Tu c'est pour moi c'est pas trop important ce n'est qu'un petit details ^^

AK.
Titre: Re : Sauvegarder une position
Posté par: Syg le 25 Août 2007, 23:32:56
C'était juste une suggestion.

++
Syg
Titre: Re : Re : Sauvegarder une position
Posté par: NatiVe™ le 26 Août 2007, 10:57:22
C'était juste une suggestion.

++
Syg

Aucu probleme je sais que tu esseye de M'aider !! ^^

En fete c'est a toi que j'ai passer mon GameMode pour le bug ?

AK.
Titre: Re : Sauvegarder une position
Posté par: Syg le 26 Août 2007, 22:00:18
Oui, enfin, je l'ai pas eu encore ....

++ sur MSN
Syg