GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chneubeul le 27 Octobre 2010, 17:24:10
-
Bonsoir, :)
1) Pourquoi sur OnPlayerText quand on met return 0 ou -1 aucun message ne s'envoie, mais par exemple dans le onplayerkeystatechange, on ne peut pas bloquer les touches ?
2) A quoi ça sert de rajouter le préfixe ( Merci Dizzy :D) Core_ à une fonction par exemple : Core_MaFonction(); ?
J'ai remarquer que c'étais sur des callbacks, mais après je sais pas :D
Merci de votre aide,
Sam. :cheers
-
1) Quand je met à 0 je peut quand même courrir, sauter, faire tout ce que je veux.. ^^ Pour ça que je pose cette question ;)
2) Je travail sur un nouveau système de radar, et je m'inspire de l'include de Fredo et comme j'ai encore vu le Core j'aimerais savoir à quoi ça sert parce que regardes, la fonction est déclarer comme ça :
forward OnPlayerFlashed(playerid,radarid,vitesse);
ensuite utiliser comme ça :
Core_OnPlayerFlashed(playerid,r,vitesse);//On flash le joueur
et la fonction :
Core_OnPlayerFlashed(playerid,radarid,vitesse)
{
if(OnPlayerFlashed(playerid,radarid,vitesse))//Si notre callback OnPlayerFlashed renvoi true on execute le flash de l'ecran
{
TextDrawShowForPlayer(playerid,FlashRadar); // On afiche le textdraw blanc
SetTimerEx("HideFlash",80,0,"i",playerid);// durant 80 Ms se qui a pour effet de donné une impression de flash de l'ecran :D
PlayerPlaySound(playerid,1132,0.0,0.0,0.0); //On ajoute a sa le bruit d'appareil photo pour que le joueur se rende bien compte du flash :D
}
}
C'est qu'il y a une utilité ? Pourquoi ce casser la tête à rajouter Core_ ^^
-
onplayerkeystatechange est appelé quand une touche est pressée, pour exécuter quelque chose en plus que ce a quoi la touche correspond.
Ex. Shift tu l'a defini en sauter.
si tu met dans ta callback onplayerkeystatechange
si il appuie sur shift on le tue.
ça le tuera, mais il aura quand meme sauter.
Tu ne peux bloquer les mouvement que avec TogglePlayerControllable.
Enfin je pense ^^
-
Ouais scott, mais pourquoi ? ;)
OnPlayerText, tu peut bloquer les messages, et pourtant c'est sur le même principe ^^
-
c'est la team SAMP qui en a décidé ainsi ^^
-
Car s'est comme ça? xD
Non mais il n'y a pas besoin que la callback soit executée ou non pour que le joueur bouge.
Met toute ta callback entre /* */
Tu verra tu pourra encore bouger
-
Ben ouais c'pour ça, la callback passe après les touches Oo
Que OnPlayerText j'ai pas essayer mais si on l'enlèverais on aurais pas de texte je pense :D
Faudrait leurs demander qu'il modifie un peu ça, pour qu'on puisse enfin stoppé les tirs de roquettes des hydras et hunter ;) Car les roquettes ou balles infini ça fait chier ><
Sinon Sasuke, pour le préfixe Core_ ? :D
-
Si tu retire la callback OnPlayerText, ça ne changera rien le texte sera envoyé ^^
Bah le préfixe Core_ tu fait ce que tu veut avec :p
Tu peut aussi mettre
Prefixe_Function :p
tu fais comme tu veux ^^
-
Salut,
En bref, on met ce préfixe quand la fonction fait partie du coeur du système.
C'est une sorte de convention. Par contre elle n'est pas universelle.
Un peu comme les noms des fonctions, on essaie de les rendre clairs, toutefois on peut très bien les appeler fonction1, fonction2 .... cependant c'est très facile de s'y perdre.
Une autre analogie est l'ajout de la lettre g devant les variable globales pour les distingués des locales. C'est une convention, recommandée, mais en aucun cas obligé.
En ce qui concerne OnPlayerKeyStateChange, l'information du mouvement du joueur ne passe pas vraiment par le serveur pour être validée avant de s'effectuer côté client. Dans ce cas, on observerais un délai entre le moment où on appuie sur une touche et la production de l'effet. Ce serait très difficile à jouer, surtout pour de gros pings. D'ailleurs quand on perdrait la connexion avec le serveur (kick, problème de connexion...), on ne pourrais plus rien faire, marcher, etc.
++Sim++
-
Ah ok merci Sim. C'pour ça que quand on est kick on peut '' continuer à jouer " sur le serveur ( biensûr sans le GM charger )
-
C'est comme ça que fonctionne MTA, Css ^^
-
Salut,
C'est comme ça que fonctionne MTA, Css ^^
tu veut dire qu'ils analyse chaque action pour les bloquer? je pense que la majorité se fait côté client (gros avantage de MTA, on peut faire des codes qui seront exécutés côté client)
++Sim++
-
non, non, je veut dire que MTA, Css envoie d'abord les touches sur lequel appuie les joueurs, et ensuite il dit au client de bouger ainsi de suite ^^
Tu appuie sur une touche, sa envoie au serveur un packet disant que cette touche à été pressée le serveur prend en compte ça et dit à ton client de faire ce la touche doit actionner ^^
C'est pour ça que dans CSS quand le serveur bug on ne peut plus bouger, et sur MTA on voit des network trouble ^^
-
Leurs système sur CS:S est pas plus mal , tous le monde rage a cause du ping et donc lag ( pas à me plaindre ~ 25-30 ) mais bon au final, tu lag, ben tu peut rien faire.
Par contre sur sa:mp, toi ton perso tu le vois niquel et si tu lag, ben les joueurs te vois te téléporter ou partir dans tous les sens.. Donc tes le seul à pas voir ton perso lagguer x'D
Petite question sur les fonctions encore... Pourquoi onplayercommandtext retourne 0 ? Parce qu'on va venir chercher la commande, rentré dedans et aprés le reste osef ? Ou j'me trompe ^^