Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 juin 12, 2012 16:33:26

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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

Modifié DerF_44 (juin 12, 2012 16:56:17)

Hors-ligne

#2 juin 13, 2012 15:46:51

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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 ?….


(°!°) DerF

Hors-ligne

#3 juin 13, 2012 16:07:52

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

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;


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#4 juin 13, 2012 19:08:59

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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

Hors-ligne

#5 juin 19, 2012 14:53:31

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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.)


(°!°) DerF

Modifié DerF_44 (juin 19, 2012 15:07:19)

Hors-ligne

#6 juin 19, 2012 15:31:40

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

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.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#7 juin 19, 2012 18:06:59

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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..




(°!°) DerF

Modifié DerF_44 (juin 19, 2012 18:21:04)

Hors-ligne

#8 juin 19, 2012 22:07:32

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

OK jusque là ça me paraît être des valeurs raisonnables.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#9 juin 22, 2012 11:12:28

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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 ?..


(°!°) DerF

Hors-ligne

#10 juin 22, 2012 15:20:10

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

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


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version