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
-
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 ;)
-
Il y a déjà un topic la dessus 8) .
-
Je cet mais j'y comprends rien :(
-
hhheeeuuuu
moi non plus je comprend rien j'ai toujours des erreur ;D ;D ;D ;D
SVP aidée nous :cheers
-
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.
-
Moi sa marche pas ... j'avais fais sa dans OnPlayerCmdText :
http://pastebin.com/m6f721abc
Voila, j'espere qu'on pourra m'aider.
-
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
-
Salut !
Je suis gentil je vous passe la mienne !
http://pastebin.com/f426e71d6
AK.
-
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 ;)
-
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
-
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.
-
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
-
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.
-
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
-
Tu c'est pour moi c'est pas trop important ce n'est qu'un petit details ^^
AK.
-
C'était juste une suggestion.
++
Syg
-
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.
-
Oui, enfin, je l'ai pas eu encore ....
++ sur MSN
Syg