• 15 Mai 2024, 01:21:15


Auteur Sujet: [INC] s_changes - Callback de changement  (Lu 3076 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
[INC] s_changes - Callback de changement
« le: 06 Juin 2014, 22:46:16 »


(Pour moi, Apprenti = quelqu'un qui sait ce que c'est qu'une callback)

Yop.

Ca a été ma première include, je viens de finir la MàJ v3.1 pour rendre tout ça plus clean. J'ai pas pour habitude de tester mes codes; la raison est simple : avec moi ils marchent jamais (+nofake). Je tiens juste à préciser que j'ai créé mon include AVANT celle d'Emmet_. Je l'ai juste release après. (Et j'avais pas vu qu'y'avait déjà la sienne de rel)

L'include comporte 14 callbacks crées par mes soins et pouvant être extrêmement utiles dans le cadre de la fabrication d'un anti cheat, ou simplement de scripts plus détaillés.

Pré-requis : (Merci à Sasuke)


• YSI 4.0


Les callbacks sont :

• OnPlayerAmmoChange(playerid, olda, newa, weapona) : Appelée lorsque les munitions de l'arme d'un joueur changent. Le paramètre "weapona" correspond à l'arme équipée (weapon armed).

• OnPlayerWeaponChange(playerid, oldw, neww) : Appelée lorsqu'un joueur change d'arme en main.

• OnPlayerHealthChange(playerid, Float:oldh, Float:newh) : Appelée lorsque la barre de vie d'un joueur change

• OnPlayerArmourChange(playerid, Float:olda, Float:newa) : Appelée lorsque la barre d'armure d'un joueur change

• OnServerConnectedPlayersChange(oldc, newc) : Appelée lorsque le nombre de connectés sur un serveur change.

• OnPlayerPosChange(playerid, Float:oldx, Float:newx, Float:oldy, Float:newy, Float:oldz, Float:newz) : Appelée lorsque la position d'un joueur change.

• OnPlayerFPSChange(playerid, oldfps, newfps) : Appelée lorsque les fps (frames per second) d'un joueur changent.

• OnPlayerMoneyChange(playerid, oldm, newm) : Appelée quand l'argent du joueur change

• OnPlayerSpeedChange(playerid, Float:oldsx, Float:newsx, Float:oldsy, Float:newsy, Float:oldsz, Float:newsz) : Appelée quand la vitesse du joueur change (à pied seulement)

• OnPlayerVehicleSpeedChange(playerid, vehicleid, Float:oldsx, Float:newsx, Float:oldsy, Float:newsy, Float:oldsz, Float:newsz) : Appelée quand la vitesse d'un véhicule conduit par un joueur change.

• OnPlayerAnimationChange(playerid, oldal[], newal[], oldan[], newan[]) : Appelée quand l'animation effectuée par un joueur change

• OnPlayerScoreChange(playerid, olds, news) : Appelée quand le score d'un joueur change

• OnPlayerPingChange(playerid, oldp, newp) : Appelée quand le ping d'un joueur change

• OnPlayerNameChange(playerid, oldn[], newn[]) : Appelée quand le nom d'un joueur change

Ces callbacks sont, me direz-vous, très simplistes, mais je trouve que c'est mieux de les avoir sous la main.

Pour les utiliser, c'est simple. Téléchargez le fichier, et rajoutez ce bout de code en haut de votre FS/GM :

#include <s_changes>

Ajoutez ensuite la callback voulue à votre FS/GM comme ceci (par exemple OnPlayerHealthChange)

#define USE_HEALTH

public OnPlayerHealthChange(playerid, Float:oldh, Float:newh)
{
     // Actions
     return 1;
}


Voilà ! Et j'ai failli oublier le plus important, les liens :

Pastebin de l'include (Dernière mise à jour : 6 juin 2014)

Changelog :

3.1 : 6 Juin 2014

• Grand nettoyage
• Suppression de la callback "OnPlayerFire" (remplacée par [url=http://wiki.sa-mp.com/wiki/OnPlayerWeaponShot]OnPlayerWeaponShot[/url] sur la 0.3z)
• Ajout de la callback "OnPlayerFPSChange"
• Utilisation de y_hooks pour éviter l'utilisation de fonctions intra callbacks (Crédits : Y_Less)
• Utilisation de foreach (y_iterate) pour éviter l'utilisation d'une boucle for sur 500 valeurs (Crédits : Y_Less)
• Utilisation des callbacks passée en pré-processeur (nouvelle méthode d'utilisation, crédits : Matthieu381)
• Ajout d'un système de "hook" include (ALS) pour empêcher la multi inclusion

Liste des pré-processeurs disponibles


#define USE_WEAPON - Active la callback "OnPlayerWeaponChange"
#define USE_AMMO - Active la callback "OnPlayerAmmoChange"
#define USE_HEALTH - Active la callback "OnPlayerHealthChange"
#define USE_ARMOUR - Active la callback "OnPlayerArmourChange"
#define USE_MONEY - Active la callback "OnPlayerMoneyChange"
#define USE_CONNECTED - Active la callback "OnServerConnectedChange"
#define USE_POS - Active la callback "OnPlayerPosChange"
#define USE_SPEED - Active les callbacks "OnPlayerSpeedChange" (si le joueur est à pied) et "OnPlayerVehicleSpeedChange" (si le joueur est en véhicule)
#define USE_ANIMATIONS - Active la callback "OnPlayerAnimationChange" (également appelée lorsqu'une animation appliquée à un joueur se termine)
#define USE_SCORE - Active la callback "OnPlayerScoreChange"
#define USE_PING - Active la callback "OnPlayerPingChange"
#define USE_NAME - Active la callback "OnPlayerNameChange"
#define USE_FPS - Active la callback "OnPlayerFPSChange"


NB : Mettre les pré-processeurs voulus AVANT d'inclure la bibliothèque
 
Peace.
« Modifié: 06 Juin 2014, 23:13:56 par S4T3K »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [INC] s_changes - Callback de changement
« Réponse #1 le: 06 Juin 2014, 23:03:51 »
Salut, n'oublie pas de mentionner les includes d'YSI en pré-requis pour utiliser la tienne.

Sinon, j'ai une petite critique à faire, pourquoi utiliser des variables statiques ? Et pourquoi utiliser des noms aussi communs pour des variables globales ?



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
Re : [INC] s_changes - Callback de changement
« Réponse #2 le: 06 Juin 2014, 23:13:10 »
Yop.

J'avais pas lu qu'il fallait mettre les pré-requis. J'édite ça juste après t'avoir répondu.

De ce que j'ai retenu en plusieurs mois de programmation, lorsqu'on modifie la valeur d'une variable globale dans une fonction locale pour la réutiliser comme une globale après, il faut utiliser les variables statiques. Ca a toujours marché donc je me suis pas trop embêté à comprendre le pourquoi du comment. Si tu le sais, tu pourrais me l'expliquer ?

Et pourquoi des noms aussi communs, bah car j'ai aucune inspiration en général. [Nofake]

En gros, j'ai scripté (et partagé sur le forum samp) énormément de choses (selon moi) en pawn, le truc c'est que je suis trop fénéant pour tout reposter :x
Du coup, je finirais par tout reposter, mais pas ce soir, sans doute demain ou début de semaine.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : [INC] s_changes - Callback de changement
« Réponse #3 le: 07 Juin 2014, 00:28:45 »
Salut, pour les pré-requis ce n'est pas obligatoire c'est juste pour simplifier la tache à ceux qui veulent utiliser ton include.

Sinon, les variables de type statique sont utiles seulement si elles sont utilisées en tant que variable globale.
Car, les variables de type statiques garde leurs valeurs même après qu'elle soit détruite.
Elles se comportent comme des variables globales, mais sont à porter locale.
Donc déclarer une variable globale en statique est inutile.


Sinon, pour les noms de variables, vu qu'elles sont déclarées en globales, tu bloques l'utilisation d'autres variables voulant porter un nom que tu utilise déjà.
Et les noms que tu utilise sont assez communs, comme pos, etc ...

Tu pourrai ajouter un préfixe, du genre schanges_



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S4T3K

  • *
  • Nouveau
  • Messages: 20
    • Voir le profil
Re : [INC] s_changes - Callback de changement
« Réponse #4 le: 07 Juin 2014, 11:15:27 »
Mis à jour pour les préfixes et passage des variables statiques en variables classiques, à nouveau, merci Sasuke.