• 05 Juin 2026, 20:16:15


Auteur Sujet: je me lance dans les includes pour voir  (Lu 2491 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
je me lance dans les includes pour voir
« le: 15 Juillet 2009, 22:10:06 »
Bonjour voila a ce jour je me lance dans les include et j'aimerais si possible que l'on m'explique un peu

Qu'est ce que Statics dans le includes?


Pour le moment je travaille sur une include demarrage et systeme d'essence d'essence mais la il est fini pour moi mais ne fonctionne pas :s voila un exemple

//OnPlayerStateChange

SCFS(playerid, newstate, oldstate)
{
    new VID = GetPlayerVehicleID(playerid);
    new MOD = GetVehicleModel(playerid);
    new string[128];
   
    if(newstate == PLAYER_STATE_DRIVER)
{
    format(string, sizeof(string), "~g~%s",Nom_Des_Vehicules[GetVehicleModel(VID)-400]);
    GameTextForPlayer(playerid,string,3500,1);
if(Voiture_Demarer[VID] == 0 && MOD != 510 && MOD != 509 && MOD != 481)
{
TogglePlayerControllable(playerid,0);
SendClientMessage(playerid,Blanc,"Le moteur de ce vehicule est eteint appuie sur 'TAB' pour demarer");
}
else
{
SendClientMessage(playerid,Jaune,"Chouette le moteur tourne déjà!");
}
if(Voiture_essence[VID] < 1)
{
SendClientMessage(playerid,Blanc,"Dommage ce vehicule n'as plus d'essence!");
}
}
return 1;
}
enfaite je j'aimerais fair un peu comme l'include de fredo que l'on mette ceci dans le script

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    SCFS(playerid, newstate, oldstate);
return 1;
}
Mais apparement il y a une etape que j'ai du zapper mais je ne sais ou :s


le soucis pawno ne repond pas :s et je sais d'avance que sa vient de l'include
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 S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #1 le: 16 Juillet 2009, 04:03:29 »
Salut,

il faudrait voir ton "en-tête d'include", mais normalement cette fonction ne pose pas problème...

les static sont simplement des variables qui ne sont accessible que dans une sections du script. Il est possible de séparer un script en plusieurs parties (par une technique que j'ignore), mais les includes sont par définition une section différente du script, donc elles se prêtent bien à ce type de variables. Ainsi une variable globale déclarée dans ton include n'existera pas pour le reste du script, ça permet d'éviter des conflits de nom et des modifications non désirée de ces variables puisque l'on est forcé de passé par l'include pour en modifier la valeur via une fonction...
EDIT: désolé si je ne suis pas très clair...

++Sim++





Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #2 le: 16 Juillet 2009, 10:00:43 »
Voila ou j'en suis est dans cette etat il est inutilisable apparement :s

Lien pastebin GTAOnline
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 Jerome02

  • *
  • Tueur en série
  • Messages: 211
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #3 le: 29 Juillet 2009, 19:45:37 »
Petit Up

PS: Desole de faire un Petit Up Mais ce FS m'intéresse 


((** Débute dans le scripte mais connais deja pas mal de chose
mais beaucoup a apprendre encore :) **))

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #4 le: 29 Juillet 2009, 20:08:37 »
ce n'est pas un fs mais une inc je vais pouvoir le partager des que je l'aurais tester grand merci a Sim pour son aide d'ailleur ;)
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 Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Re : je me lance dans les includes pour voir
« Réponse #5 le: 30 Juillet 2009, 14:06:15 »
Ainsi une variable globale déclarée dans ton include n'existera pas pour le reste du script

Heu ... c'est exactement le contraire.

En fait, un include, comme sont nom l'indique est un fichier qui sera inclus dans un autre pour former le fichier à compiler.

Exemple :

Voici un include (que j'appellerais MonInclude) :
new UneVariable;
MaFonction ()
{
   UneVariable++;
   printf ("Nouvelle valeur : %d\n", UneVariable);
}

Voici mon script PAWN (volontairement très simple) :
#include "MonInclude"

main ()
{
   UneVariable = 7;
   MaFonction ();
}

Ce que le compilateur va faire, c'est construire un gros fichier final en mémoire avant de compiler. Le fichier final dans notre cas sera comme suit :
new UneVariable;
MaFonction ()
{
   UneVariable++;
   printf ("Nouvelle valeur : %d\n", UneVariable);
}

main ()
{
   UneVariable = 7;
   MaFonction ();
}

La variable UneVariable et la fonction MaFonction sont donc utilisables dans tout le script.
Il est même possible d'utilisé cette variable ou fonction dans un autre include mais il faut impérativement que l'autre include apparaisse après le premier :

Un autre include (nommé AutreInclude) :
AutreFonction ()
{
   UneVariable+=2;
   printf ("Nouvelle valeur : %d\n", UneVariable);
}

Le source suivant compile :
#include "MonInclude"
#include "AutreInclude"

main ()
{
   UneVariable = 7;
   MaFonction ();
}

Alors que si on met les includes dans le mauvais sens :
#include "AutreInclude"
#include "MonInclude"

main ()
{
   UneVariable = 7;
   MaFonction ();
}

On obtient les erreurs suivantes :
D:\Utilities&Misc\samp-server-0.2.2\pawno\include\AutreInclude.inc(3) : error 017: undefined symbol "UneVariable"
D:\Utilities&Misc\samp-server-0.2.2\pawno\include\AutreInclude.inc(4) : error 017: undefined symbol "UneVariable"


++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : je me lance dans les includes pour voir
« Réponse #6 le: 30 Juillet 2009, 17:40:32 »
les static sont simplement des variables qui ne sont accessible que dans une sections du script.

je parlais des variables static mdr....





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #7 le: 31 Juillet 2009, 11:02:09 »
Effectivement, c'est vrai pour les variable static, elles ne sont visibles que dans le script (ou la fonction) où elles sont déclarées.

Attention toutefois avec l'utilisation de static.
Utilisé dans une fonction, ce mot clé indique que le variable ne sera pas détruite à la fin de la fonction et qu'elle conservera sa valeur.

Exemple :
MaFonction ()
{
   /* Déclaration et initialisation d'un variable statique */
   static Var =2;

   /* Incrémentation de la variable */
   Var +=5;
   printf ("Valeur de Var : %d\n", Var);
}

main ()
{
   MaFonction ();
   MaFonction ();
}[\code]

L'exécution de main provequera l'affichage suivant
[tt]Valeur de Var : 7
Valeur de Var : 12[/tt]

La variable [tt]Var[/tt] n'est pas re-initialisée entre deux appels à [tt]MaFonction[/tt]

++
Syg
Courtesy of GtaManiac

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #8 le: 31 Juillet 2009, 16:24:29 »
Merci pour cette precision enfaite cette include est un depart etant donner que je reserve quelque chose qui je pense raviras quelque coder debutant


Pour le moment voici donc l'include en question


pour l'utiliser rien de plus simple avec vos autre include declarer celle ci

#include <essence>
Vous pouvez egalement retirer

#include <a_samp>
Il est apeler dans l'include

les commande

Pour demarrer le vehicule appuiyer sur "TAB"

Pour fait le plein dans une station /essence

Si vous etes dans un vehicule sans essence /sortir pour le quitter

http://www.megaupload.com/?d=8WJX67KM


Merci a Sim de m'avoir m'aider sans lui sa ne fonctionnerais toujour pas ^^
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 S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #9 le: 31 Juillet 2009, 16:27:21 »
Salut,

ça j'ignorais, très intéressant comme info, merci Syg, je ne les avait utilisé qu'en "globale"

j'aurais une petite question en lien avec ces variables,
les static ne sont valides que dans la "section" de code où ils sont déclarés, les includes sont déjà à la base dans une section différente, mais il existe surement une instruction de précompilation qui permet de faire un changement de section où l'on le désire, si oui, laquelle?

EDIT: cristab, c'est toi qui a tout fais dans ton include...

++Sim++





Hors ligne Jerome02

  • *
  • Tueur en série
  • Messages: 211
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #10 le: 31 Juillet 2009, 16:43:49 »
j'ai u petit problème mais je n'arrive pas a poster ce que ma dit quand je compile mais je vous explique sa me donne 8 erreur :

C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(27372) : error 025: function heading differs from prototype
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(27373) : error 021: symbol already defined: "PlayerToPoint"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(8350) : error 021: symbol already defined: "OnPlayerCommandText"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(1864) : error 021: symbol already defined: "OnPlayerConnect"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(3664) : error 021: symbol already defined: "OnPlayerSelectedMenuRow"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(3669) : error 021: symbol already defined: "OnPlayerExitedMenu"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(3705) : error 021: symbol already defined: "OnPlayerStateChange"
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(118) : error 025: function heading differs from prototype


et je ne sais combien de Warning  ;D ;D ;D


((** Débute dans le scripte mais connais deja pas mal de chose
mais beaucoup a apprendre encore :) **))

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #11 le: 31 Juillet 2009, 16:45:02 »
desoler tromper de version commente cette ligne

#define FILTERSCRIPT
c'est a dire comme ceci


//#define FILTERSCRIPT
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 Jerome02

  • *
  • Tueur en série
  • Messages: 211
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #12 le: 31 Juillet 2009, 16:48:20 »
voila et sa donne sa :

C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\pawno\include\essence.inc(157) : error 004: function "core_OnGameModeExit" is not implemented
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\pawno\include\essence.inc(202) : error 004: function "core_OnVehicleSpawn" is not implemented
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\pawno\include\essence.inc(347) : error 004: function "core_OnPlayerKeyStateChange" is not implemented
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(118) : error 025: function heading differs from prototype
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(27372) : error 025: function heading differs from prototype
C:\Documents and Settings\Administrateur.15C8C0122FFA4EF\Bureau\samp02Xserver.win32\gamemodes\WC-RP.pwn(27373) : error 021: symbol already defined: "PlayerToPoint"


et encore je sais pas combien de Warnings


((** Débute dans le scripte mais connais deja pas mal de chose
mais beaucoup a apprendre encore :) **))

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #13 le: 31 Juillet 2009, 16:53:08 »
je vient de tester sa fonctionne attention cette include et utilisable en GM sinon decommenter  #define FILTERSCRIPT   et changer l'extension du fichier en pwn et voila votre FS
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 Jerome02

  • *
  • Tueur en série
  • Messages: 211
    • Voir le profil
Re : je me lance dans les includes pour voir
« Réponse #14 le: 31 Juillet 2009, 16:56:37 »
ahhh Merci c'est bon sa marche GG   :)


Citer
Merci pour cette precision enfaite cette include est un depart etant donner que je reserve quelque chose qui je pense raviras quelque coder debutant

presser de voir de quoi s'agit il  :-[ :-[




EDIT : tu peu pas ajouter la vitesse accoter de l'essence??? ou explique comment faire je peu essayer de la faire  :P :-[ ::)
« Modifié: 31 Juillet 2009, 16:59:06 par Jerome02 »


((** Débute dans le scripte mais connais deja pas mal de chose
mais beaucoup a apprendre encore :) **))