Rechercher - Liste des utilisateurs
Version complète : Débutants
Accueil » FunDelphi » Débutants
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
DerF_44
Ohh là làààh !!!
Je ne m'attendais pas à ça comme réponse !!!!!!
Géant !!!

Ok, je vais tester la chose et …. réécrire pas mal de lignes de mon .fnd principal !!!!
J'aime beaucoup ce genre de méthode !.. (Comme les case c'est quand même super pratique lorsqu'on les a assimilés !)

Merci beaucoup pour ce nouveau joyau !!

MàJ du post :
Après quelques tests (de mes capacités d'assimilation, pas de tes compétences !!), je confirme : Perfect !!!

Encore MERCI !
DerF_44
Euh… C'est encore moi et mes questions !!
Je précise que ce post est uniquement prévu afin de peaufiner mes quelques connaissances en FunDelphi, s'il reste sans réponse cela ne gênera en rien la construction de mon projet vu que je sais parfaitement comment contourner la chose !.
Dans mon projet il y a quelques endroits pas cool du tout pour le (pauvre) joueur !.. Des lieux où, d'un seul coup, il se retrouve nu comme un vers, sans le sou, perdant pratiquement tout ce qu'il avait pu accumuler !..
Donc, au lieu de répéter plusieurs fois les quelques lignes de code permettant de dépouiller le joueur, j'essaye d'écrire une procedure pour ce faire, et de l'appeler lorsque c'est nécessaire…
Et je dois dire que ça commence mal :

procedure RemoveAllMaterial(Player: TPlayer);
begin
Player.Money := 0;
end;
end;
Le compilateur me dit “identificateur Money non déclaré” alors que je l'utilise ailleurs dans mon code et que l'unité est bien déclarée !!?
Pareil avec mes OrangeKeyTool et n'importe quel outil ou objet !!?…
Je dois louper un épisode, mais lequel !!???..
D'autre part j'ai lu quelque part sur le forum que l'on pouvait faire perdre tous les objets au joueur par :

ObjectDef.Count[Player] := 0;
Mais comment “conjuguer” cette formule magique !!??
J'ai essayé aussi (on ne rit pas !) :

procedure RemoveAllMaterial(Player: TPlayer);
var
ObjectDef : TObjectDef;
Money : TMoney;
begin
Money.Count[Player] := 0;
ObjectDef.Count[Player] := 0;
end;
Mais en jouant j'ai un Access Violation…

Une piste praticable ?….
sjrd
Pour la première procédure, ajoute simplement un paramètre Master :
procedure RemoveAllMaterial(Master: TMaster; Player: TPlayer);
begin
Player.Money := 0;
end;
Les parties “magiques” de FunDelphi ont besoin d'un Master dans le coin pour travailler avec ^^

Pour conjuguer l'autre code, remplace simplement ObjectDef par l'ID de l'objet que tu veux faire perdre au joueur, par exemple :
GoldenKeys.Count[Player] := 0;
DerF_44
Nickel !!!!

Je suis toujours impressionné de l'efficacité, de la pertinence et de la simplicité de tes réponses !!
(Contrairement à ce que je peux glaner sur Internet !)

Merci beaucoup sjrd !


DerF_44
J'en ai une bien bonne :

Y'aurait-il moyen (en .fnd ou en .pas) de créer un effet permettant de commander l'ouverture de la fenêtre "Vos objets" !??
Si non, eh ben c'est pas bien grave ! Le jeu dispose de suffisamment d'options comme ça !!
Si oui, eh bien je suis assez intéressé pour savoir comment !

Je profite de ce post pour savoir si d'incessantes mise en veilles prolongées de l'OS (Vista, plusieurs jours sans redémarrage..) contribuent à l'apparition de messages d'erreur de FunLabyEdit !!?????
En effet j'en suis à +ou- 20% de la réalisation de mon (énorme) projet et à certaines périodes j'ai peur que ce soit la quantité des composants qui participent aux dysfonctionnements de l'éditeur, alors qu'après un redémarrage il a l'air d'être plus stable et conciliant !!. (?)

(Amateur du jeu d'échecs, j'utilise une GUI (Arena) pour faire tourner des moteurs d'analyses et certains se mettent à buguer lors d'une longue période sans re-boot de l'OS, d'où mon questionnement.)
sjrd
DerF_44
Y'aurait-il moyen (en .fnd ou en .pas) de créer un effet permettant de commander l'ouverture de la fenêtre “Vos objets” !??
Si non, eh ben c'est pas bien grave ! Le jeu dispose de suffisamment d'options comme ça !!
Si oui, eh bien je suis assez intéressé pour savoir comment !
Non, ça ce n'est pas possible. La fenêtre Vos objets est en quelque sorte “en dehors du jeu”, et n'est pas accessible aux scripts .fnd ni .pas.
DerF_44
Je profite de ce post pour savoir si d'incessantes mise en veilles prolongées de l'OS (Vista, plusieurs jours sans redémarrage..) contribuent à l'apparition de messages d'erreur de FunLabyEdit !!?????
En effet j'en suis à +ou- 20% de la réalisation de mon (énorme) projet et à certaines périodes j'ai peur que ce soit la quantité des composants qui participent aux dysfonctionnements de l'éditeur, alors qu'après un redémarrage il a l'air d'être plus stable et conciliant !!. (?)
Si l'éditeur de FunLabyrinthe est périodiquement arrêté et relancé (même si l'OS ne l'est pas, lui), alors non, ça ne peut pas y contribuer (enfin sauf si atteins la limite de mémoire vive (RAM) disponible sur ton ordi).
Si tu laisses même FunLabyrinthe ouvert pendant des jours… alors ça pourrait, si j'ai laissé traîné ce qu'on appelle des “fuites mémoires”. Dans ce cas essaie une fois de faire Ctrl+Alt+Suppr, d'aller dans l'onglet Processus, et regarde combien de mémoire est utilisée par l'éditeur de FunLabyrinthe. Si c'est plus de 100 Mo c'est pas normal ^^ Normalement il tourne en quelques dizaines de Mo.
Mais bon maintenant si tu as un très gros projet, ça va faire augmenter. Regarde peut-être une fois combien est utilisée dès le moment où tu as ouvert ton projet.
DerF_44
Non, ça ce n'est pas possible. La fenêtre Vos objets est en quelque sorte “en dehors du jeu”, et n'est pas accessible aux scripts .fnd ni .pas.
Ok, pas de soucis, c'était manière de savoir…

Quant à l'éditeur de FunLabyrinthe et ses messages d'erreur :

Désolé j'ai oublié de préciser : Oui, FunLabyEdit est ouvert en quasi-permanence !!
Voici quelques valeurs de charge mémoire de FunLabyEdit.exe
(cpu Intel Core2 duo à 2Ghz, 3Go de ram)

UpTime : 30 min, petit projet chargé = 36 Mo
UpTime : 30 min, mon projet chargé = 69 Mo
UpTime : 30 min, mon projet+manip'+compilation = 72 Mo
UpTime : 3 j 22 h, mon projet chargé depuis plusieurs heures = 85 Mo

Toutes ces valeurs proviennent d'instants SANS erreur !
Je posterai éventuellement d'autres relevés en “périodes” d'erreurs si changements notables..


sjrd
OK jusque là ça me paraît être des valeurs raisonnables.
DerF_44
Je cherche le moyen de tester si une case précise contient un MovableBlock précis :
if Map[21, 24, 1].? ? ? ?= MovableBlock27 then
Ou l'inverse, si la position du MovableBlock est celle désirée :
if MovableBlock27.Position = Map[21,24,1] then
Le compilateur annonce que mon MovableBlock n'est pas déclaré !?..
J'ai bien tenté de “poser” un Master “dans le coin”, mais sans succès !.

Une soluce miraculeuse ?..
sjrd
Ca doit ressembler à ceci :
if MovableBlock27.Position = Point3D(21, 24, 1) then
Mais si MovableBlock27 n'est pas déclaré, je suppose que tu l'as ajouté toi-même sur une carte en utilisant un petit + vert ou en en copiant un autre ? Si c'est le cas, il n'a pas de déclaration accessible à FunDelphi, et il faut le chercher “à la main” :
if Master.PosComponent['MovableBlock27'].Position = Point3D(21, 24, 1) then
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB