• 03 Mai 2025, 13:52:10


Auteur Sujet: Besoin d'aide (tres) précise  (Lu 1274 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Nico_Torres

  • *
  • Criminel
  • Messages: 30
    • Voir le profil
Besoin d'aide (tres) précise
« le: 05 Août 2009, 19:41:13 »
Bonjour a tous, depuis maintenant 2 heures, je suis en train de lire les tutos du wiki de gta online, jusqu'ici tout va bien, enfin, jusqu'à que j'arrive a la parti des "Define",


La parti, d'accord, je comprend tout ( je crois )
La parti 2.1, sa peut aller, je comprend pas tout...
Le reste m'échappe complétement, j'ai beau relire je comprend pas les Float, ( pareil pour string... )


Est ce que quelqu'un d'entre vous pourrais m'expliquer en detail ce que font les define, comment les utiliser ect...

_________________________________________________________________________________ ____________________________________________________________________


Aussi, je comprend pas le ''public" et le "return'', merci de m'expliquer !





Je vous remerci beaucoup d'avance, bonne soirée !
 
Cordialement,
Nico Torres,
Noob en script et tout ce qui va avec =D

~~ Besoin d'aide ~~

Hors ligne hardcoder

  • *
  • Tueur
  • Messages: 67
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #1 le: 05 Août 2009, 21:11:35 »
Les #define dans Pawn sont très utiles. Il est difficile d'expliquer tout ce qui est possible de faire avec, mais je vais essayer.

Avec, il est possible de faire des options de compilation, ou bien des fonctions qui ne peuvent pas être scriptées 'normalement', mais l'usage le plus courant est la simple substitution de texte, ce qui permet de ne pas avoir à modifier dans tout le script une certaine valeur.

Les #define ne sont pas compilées. Ce sont des directives du précompilateur (appellé aussi préprocesseur).


Un exemple de substitution:
Code: (pawn) [Sélectionner]
#define MESSAGE_TEST "Test un deux un deux"

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, MESSAGE_TEST);
    return false;
}

public OnPlayerSpawn(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, MESSAGE_TEST);
    return false;
}
Au moment de la précompilation, ce script va se transformer en:
Code: (pawn) [Sélectionner]
public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Test un deux un deux");
    return false;
}

public OnPlayerSpawn(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Test un deux un deux");
    return false;
}
C'est très utile si tu utilise plusieurs fois le même message dans ton script. Si tu veux changer le message, tu n'as qu'a changer la #define, au lieu de changer partout dans le script.




Un exemple d'option de compilation:
Code: (pawn) [Sélectionner]
//#define OPTION

public OnFilterScriptInit()
{
    #if defined OPTION
        print("OPTION est défini, ce message va donc apparaitre dans la console");
    #endif
}

Si tu teste ce script, tu verra que le message n'apparait pas dans la console. Pour qu'il apparaisse, tu devra enlever les // devant la #define.




Maintenant un exemple de fonction qu'il est trèèès compliqué de reproduire avec du code normal:
Code: (pawn) [Sélectionner]
new g_message[128];

#define SendClientMessageEx(%1,%2,%3) \
{\
    format(g_message,sizeof g_message,%3);\
    SendClientMessage(%1,%2,g_message);\
}
Les '\' signifient que la define continue sur la ligne suivante.

Maintenant, tu peut l'utiliser comme ceci:
Code: (pawn) [Sélectionner]
SendClientMessageEx(playerid, 0xFFFFFFFF, "Tu roule à %d km/h et tu as %d €", Vitesse[playerid], Monnaie[playerid]);

Hors ligne Nico_Torres

  • *
  • Criminel
  • Messages: 30
    • Voir le profil
Re : Re : Besoin d'aide (tres) précise
« Réponse #2 le: 05 Août 2009, 22:36:03 »
Salut, merci de ta réponse, j'ai donc quelque questions, dans le premiere script, pourquoi avoir, OnPlayerSpawn & OnPlayerConnect ? On PEUX en enlever un des deux ?
Je ne comprend pas le Print ect, le tuto de wiki gta online est t-il complet, car je ne crois pas tout avoir compris :|, new g_message aussi je ne sais pas ce que c'est, format: pareil,
Ensuite, le derniere code, si on met sa dans un Gm, sa fera quoi ?
Car un systeme d'amende c'est pas bête, mais j'aimerais le créer moi même, je vais avoir besoin d'un #Define de quoi ?
Cordialement,
Nico Torres,
Noob en script et tout ce qui va avec =D

~~ Besoin d'aide ~~

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #3 le: 05 Août 2009, 22:56:52 »
bon je vais un peu t aider

en faite le new g_message[256]; est une variable ( array ou string) cette variable est particuliere grace a son [256] ce 256 veut dire un chose,
c' est quel alloue une quantité de memoire de 256 bit ( si c' est ca enfin je l espere ) pour y stocker des information( des chiffres et des lettres ).

Voila pour le array

il y a ensuite les variable normal qui se presente comme cela

new variable;

ces variables la peuvent uniquement stocker des chiffre entier.

et puis il y a les float qui se presente comme cela

new Float:variable;

ces variables la stocke des chiffre decimal ( entier ou pas ).

Puis voila tout et pour les onplayerconnect et onplayerspawn il vaut mieu les laisser



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

Hors ligne Nico_Torres

  • *
  • Criminel
  • Messages: 30
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #4 le: 05 Août 2009, 23:09:16 »
Je comprend pas...
Cordialement,
Nico Torres,
Noob en script et tout ce qui va avec =D

~~ Besoin d'aide ~~

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #5 le: 05 Août 2009, 23:20:22 »
Voila un site assez complet sur ce que tu demande mais il est en anglais comme la progrmation PAWN ce fait en anglais

http://wiki.sa-mp.com/wiki/Category:Scripting_Callbacks

http://wiki.sa-mp.com/wiki/Category:Tutorials

http://wiki.sa-mp.com/wiki/Scripting_Basics


Le pawn center de gtaonline est toujour en cours de construction et ne peu donc pas etre complet le soucis de t'expliquer tout ce que tu veut savoir sur un post me parrait trop long a ecrire comme a lire essaie avec les lien ci dessus
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Lychaos

  • *
  • Tueur en série
  • Messages: 165
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #6 le: 05 Août 2009, 23:34:51 »
Ben pendant qu'on discute de tuto, j'en avais vu un qui aider a modifier(ou crée) un DM
Et heu ,j'avais eu des soucis mais maintenant que je m'y suis remit, si quelqu'un retrouve le tuto sa s'rait cool ^^

Bonne soirée

Hors ligne Nico_Torres

  • *
  • Criminel
  • Messages: 30
    • Voir le profil
Re : Besoin d'aide (tres) précise
« Réponse #7 le: 06 Août 2009, 10:23:40 »
Je lis pas l'anglais  :(
Mais merci quand même
Cordialement,
Nico Torres,
Noob en script et tout ce qui va avec =D

~~ Besoin d'aide ~~