• 07 Juin 2026, 05:05:53


Auteur Sujet: A quoi correspond les touches fleche?  (Lu 2087 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
A quoi correspond les touches fleche?
« le: 18 Février 2009, 16:52:54 »
Bonjour ,
A quoi correspond la touche avancé ,reculé,droite,gauche du joueur ?

Hors ligne Azz45

  • Good Player
  • *
  • Mafioso
  • RolePlay Player
  • Messages: 2809
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #1 le: 18 Février 2009, 18:16:02 »
Salut,

Regarde sur le wiki :D

~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~


~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~~•~  ~•~  ~•~  ~•~
Avancement du GM : 3%
~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~
~•Merci Kloken, pour la vidéo lors de mon anniversaire•~

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : A quoi correspond les touches fleche?
« Réponse #2 le: 18 Février 2009, 18:43:13 »
C'est bon mais j'ai fait sa et sa marche pas :

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

   if (newkeys == KEY_RIGHT)//Touche droite
   {
GameTextForPlayer(playerid,"Impossible",600,3);
if(PlayerToPoint(1.0,playerid,2475.5137,-1673.6222,13.4014))//case 1
{
GameTextForPlayer(playerid,"Impossible",600,3);
}

   }
   if (newkeys == KEY_LEFT)//Touche gauche
   {

   }
   if (newkeys == KEY_UP)//Touche haut
   {
if(PlayerToPoint(1.0,playerid,2475.5137,-1673.6222,13.4014))//case 1
{
MoveObject(pion1,2475.8679,-1673.6248,13.3372, 3.5);//
}
   }
   if (newkeys == KEY_DOWN)//Touche Baas
   {

   }
return 1;
}

Hors ligne Azz45

  • Good Player
  • *
  • Mafioso
  • RolePlay Player
  • Messages: 2809
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #3 le: 18 Février 2009, 19:41:42 »
Salut

Pas sur mais faut les définir je crois.

~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~


~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~~•~  ~•~  ~•~  ~•~
Avancement du GM : 3%
~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~
~•Merci Kloken, pour la vidéo lors de mon anniversaire•~

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : A quoi correspond les touches fleche?
« Réponse #4 le: 19 Février 2009, 01:34:22 »
Salut,

Salut

Pas sur mais faut les définir je crois.

je te conseil d'ouvrir ton include a_samp.inc pour voir.....

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #5 le: 19 Février 2009, 10:32:58 »
La callback OnPlayerKeyStateChange ne prend pas en compte les touches de direction (flèches).
Il est donc normal que ton bout de code ne fonctionne coco76.

Par contre, il est possible de récupérer ces touches grâce à la fonction GetPlayerKeys (paramètre updown et leftright) dans un timer.

Voici un exemple de code qui émule le OnPlayerKeyStateChange avec un timer et qui permet de récupérer en temps réel (ou presque) les touches de direction (et les autres touches) :

forward TimerKeys ();
new Keys[MAX_PLAYERS], Updown[MAX_PLAYERS], Leftright[MAX_PLAYERS];

public OnGameModeInit ()
{
SetTimer ("TimerKeys", 50, true);
}

/***************************/
/* TIMER POUR LES TOUCHES */
/***************************/
public TimerKeys ()
{
new keys, updown, leftright;
new String[128+1];
for (new i=0 ; i<MAX_PLAYERS ; i++)
{
if (IsPlayerConnected (i))
{
/* On récupère les touches du joueur */
GetPlayerKeys (i, keys, updown, leftright);

/* Si les touches ont changé */
if (keys!=Keys[i] || updown!=Updown[i] || leftright!=Leftright[i])
{
/* LE CODE QUI AURAI DU ÊTRE DANS OnPlayerKeyStateChange DOIT ÊTRE MIS ICI */
/* Exemple */
format (String, 128, "keys=%d, updown=%d, leftright=%d", keys, updown, leftright);
SendClientMessage (i, 0xFF0000FF, String);

/* On sauvegarde les touches pour éviter de passer tout le temps ici */
Keys[i] = keys;
Updown[i] = updown;
Leftright[i] = leftright;
}
}
}
}

La variable keys contient toutes les touches autres que les touches de direction. C'est l'équivalent du newkeys de OnPlayerKeyStateChange.

Les deux autres variables sont réservées exclusivement aux touches de direction:
Aucune touche enfoncée  : updown=0, leftright=0
Flèche haut : updown=65408 (KEY_UP), leftright=0
Flèche bas : updown=128 (KEY_DOWN), leftright=0
Flèche gauche : updown=0, leftright=65408 (KEY_LEFT)
Flèche droite : updown=0, leftright=128 (KEY_RIGHT)

Ceci permet de gérer les combinaisons de touches (droite+gauche, haut+gauche, ...)

++
Syg
Courtesy of GtaManiac

Hors ligne Azz45

  • Good Player
  • *
  • Mafioso
  • RolePlay Player
  • Messages: 2809
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #6 le: 19 Février 2009, 10:40:26 »
Salut,

Syg les touches faut pas aussi les définir ?

~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~


~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~~•~  ~•~  ~•~  ~•~
Avancement du GM : 3%
~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~  ~•~
~•Merci Kloken, pour la vidéo lors de mon anniversaire•~

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : A quoi correspond les touches fleche?
« Réponse #7 le: 19 Février 2009, 14:29:27 »
Salut,

Syg les touches faut pas aussi les définir ?

Si tu ouvre ton include, tu les trouvera, bref, elles sont déjà toutes définies

pour le script, tant qu'à faire un timer de 50ms ne serait-il pas plus judicieux de tirer profit de la callback OnPlayerUpdate??

++Sim++





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #8 le: 19 Février 2009, 14:40:18 »
Je crois bien que la callback OnPlayerUpdate est à utiliser avec précautions.
Je cite (http://wiki.sa-mp.com/wiki/OnPlayerUpdate) :
Important note: This callback is valid from SA-MP 0.2X, it does not work in earlier releases!
Important note: Remember! This callback is called VERY frequently! Avoid having a lot of chunk in it!

Si il y a beaucoup de joueurs sur le serveur, il y a un risque selon ce que l'on fait.
Et je ne sais pas comment cette callback se comporte avec un joueur qui lag.

Sinon, l'avantage du timer c'est qu'on peut régler la durée.

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : A quoi correspond les touches fleche?
« Réponse #9 le: 19 Février 2009, 14:59:30 »
Salut,

parlant de cette callback, je m'en suis déjà servit pour mon Streamer d'objets.

Seulement, j'avais placé une distance minimale à parcourir avant de recalculer toutes les positions,
dans ma grande innocence j'avais placé un return 0 dans la callback.....À ÉVITER EN TOUT TEMPS, lorsque cette callback retourne 0, les information concernant le joueurs ne sont pas retournés aux autres joueurs, pourrait être pratique dans le cas d'un cheateur (on l'empêche de communiquer avec les autres d'une façon ou d'une autre ce qui donne un anti-cheat ou anti-kill intéressant (si le joueur attaque (KEY_FIRE) on retourne 0 ainsi il n'attaque pas pour les autres joueurs....))

bref, je crois qu'un code relativement imposant (streamer, qui ne causait aucun autre problème (dès que j'aie remplacer le return 0 pas un return 1 problème réglé)) peut être placé dans la callback, l'important est surtout le temps qu'il met à être exécuté (moins de 1 ms pour le streamer), par contre j'ignore quelles fonctions sont lentes, mais un bon clocking permet de le savoir asser vite...

++Sim++
« Modifié: 20 Février 2009, 20:20:48 par Sim »





Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : A quoi correspond les touches fleche?
« Réponse #10 le: 20 Février 2009, 17:54:08 »
Merci sa va beaucoup m'aider pour le Gm d'échec parcontre je par en vacance lundi et je revient dimanche alors je vai pas beacoup avancé !