Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 juin 22, 2012 15:48:49

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

Débutants

Merci de ta réponse, mais……. Après avoir posé
if Master.PosComponent['MovableBlock27'].Position = Point3D(21, 24, 1) then
le compilateur me dit :
Identificateur PosComponent non déclaré
Valeur tableau ou propriété tableau requise
Identificateur Position non déclaré
Opération non applicable à ce type d'opérande
Transtypage invalide de T3DPoint en Byte


(°!°) DerF

Hors-ligne

#2 juin 22, 2012 17:12:53

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

Débutants

Ah oui, effectivement. Bon c'est encore un peu plus compliqué, alors. D'ailleurs j'avais aussi oublié qu'il faut utilisé Same3DPoint pour comparer deux positions.
if Same3DPoint(TPosComponent(Master.Component['MovableBlock27']).Position, Point3D(21, 24, 1)) then


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Modifié sjrd (juin 22, 2012 17:13:07)

Hors-ligne

#3 juin 22, 2012 19:55:53

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

Débutants

Yesss !!..
Ça fonctionne parfaitement, nickel !!
Bravo et énorme merci !!
(Parce que là, même en cherchant trèèès longtemps, je n'aurais jamais trouvé !!! )




(°!°) DerF

Hors-ligne

#4 juin 24, 2012 19:40:44

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

Débutants

Grâce à cette formule quasi-divine :
if Same3DPoint(TPosComponent(Master.Component['MovingMonster35']).Position, Point3D(7, 1, 1)) then
Un nouveau monde d'explorations, de constructions et d'élaborations s'ouvre à moi (et à d'autres j'espère !) !!
Après avoir conçu, pour mon projet, une énigme où il est nécessaire de placer correctement quelques MovableBlock afin d'accéder à la suite, me voici en train d'expérimenter la chose avec des MovingMonster !.. C'est géant !!..
En effet par un jeu de boutons-poussoirs qui débloquent des passages, le joueur tente de diriger une bestiole jusqu'à une certaine case où elle déclenchera la suite des évènements !!.. Le pied !!!
Si le bon emplacement des MovableBlock est testé par un obstacle de type personnage que le joueur interroge, et si la position du MovingMonster est testée par un appui du joueur sur un bouton, je n'ai, pour l'instant, pas trouvé le moyen d'avoir un test permanent !.. Je veux dire dans l'état actuel des choses le test de position n'est effectué qu'un bref instant précis où le joueur exécute une action précise (poussée sur l'obstacle-personnage ou appui sur un bouton dans mes exemples). Alors en réfléchissant à la chose je pense m'orienter vers un Plugin, attaché au joueur pour une période temporaire, qui lui permettra de tester en permanence ????!
Même si le joueur ne fait rien de particulier le simple fait que la bébête passe sur la case concernée par le test déclenchera la suite des évènements prévue ????..
Voilà, avant de me lancer dans cette affaire, encore très floue dans mon esprit, je voudrais savoir si c'est faisable, si le Plugin est une bonne approche !?…

Un autre truc me tracasse (désolé ! ) : Comment pourrais-je éliminer un MovingMonster ??..
Si la toute simple formule :
Map[3, 2, 1].Obstacle := nil;
réduit à néant tout obstacle sur la case, comment faire disparaître une bestiole qui bouge !!?? (en dehors d'un jeu de flèches et d'obstacles qui la conduirait hors zone de jeu) ou comment poser une case qui contiendrait l'action KillMovingMonster !??…

Tout cela n'est en rien indispensable pour mener à bien mon projet, juste que si des pistes existent je suis intéressé pour les emprunter !!

Tiens, ça faisait longtemps : Ce jeu est vraiment ABSOLUMENT GÉNIAL !!!!

(J'y passe des heures et des heures, c'est un régal, et, sans me vanter, je pense que mon projet, même si loin d'être parfait, aura un petit côté de…. décoiffant !!!! )


(°!°) DerF

Modifié DerF_44 (juin 24, 2012 19:47:20)

Hors-ligne

#5 juin 25, 2012 10:56:31

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

Débutants

DerF_44
Voilà, avant de me lancer dans cette affaire, encore très floue dans mon esprit, je voudrais savoir si c'est faisable, si le Plugin est une bonne approche !?…
Un plugin ne peut pas y faire grande chose. En fait, on ne peut test en permanence, ça n'a pas de sens. Le mieux qu'on puisse faire dans le genre serait : tester toutes les x millisecondes, avec x petit. Mais le mieux reste de tester quand ça peut changer (dans ce cas-ci, à chaque fois que le monstre bouge).

En l'occurrence, je pense que le plus simple est sous-classer le moving-monster en question, et de faire le test dans son ChangePosition.
poscomponent TSpecialMonster(TMovingMonster)
// name, etc.
on ChangePosition do
begin
inherited;
if Same3DPoint(Position, Point3D(7, 1, 1)) then
begin
// ici ce qu'il faut faire
end;
end;
end;
En ce qui concerne le fait de tuer un monstre, ici je n'ai pas toute mon installation de FunLabyrinthe, je répondrai plus tard.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#6 juin 25, 2012 12:06:30

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

Débutants

Tout à fait excellent !!!..
(Effectivement, après avoir posé mon précédent post j'ai pensé qu'un plugin ne résoudrait pas l'affaire !..
J'ai aussi envisagé de bidouiller l'unité MovingMonster, mais je n'imaginais pas une soluce aussi perspicace et aussi “simple” !!)

Après un premier test :
poscomponent TSpecialMonster(TMovingMonster)
name 'Souris spéciale';
image 'LaSouris';

on ChangePosition do
begin
inherited;
if Same3DPoint(Position, Point3D(26, 8, 1)) then
begin
Map[26, 7, 1].Obstacle := SilverBlock;
// Player.ShowMessage ('Yesss !.. Very good !!');
end;
end;
end;
Le compilateur m'a annoncé que Player n'était pas déclaré !!???…
Puis en enlevant le message, effectivement la bestiole fait naître un bloc d'argent juste derrière elle !!!
C'est absolument géant !!!
Merci beaucoup sjrd pour cette nouvelle perle !!!


(°!°) DerF

Modifié DerF_44 (juin 25, 2012 12:08:02)

Hors-ligne

#7 juin 25, 2012 16:22:16

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

Débutants

Grrrrr… Impossible d'afficher un message ou de jouer un son dans le code du poscomponent TSpecialMonster(TMovingMonster)
J'ai posé ce bout de code dans mon .fnd principal, peut-être aurais-je dû l'intégrer à “mon” unité MovingMonster ???..
Ou alors, une fois de plus, je passe à côté d'un tour de passe-passe “grammatical” ??!..

Désolé pour toutes ces questions !!..
Après cela et l'histoire du KillMovingMonster, promis j'essaye de te laisser tranquille pendant longtemps quelque temps !!!!



(°!°) DerF

Hors-ligne

#8 juin 26, 2012 02:31:47

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

Débutants

Bon et bien j'ai passé des plombes et des plombes à tester toutes sortes de bidouilles, trucs, manip', etc pour tenter d'afficher un message et/ou jouer un son au sein du poscomponent TSpecialMonster(TMovingMonster) mais…. Sans succès !!!
Les rares fois où le compilateur laissait passer la chose (avec un var Master: TMaster et Player: TPlayer) un joli message d'erreur apparaissait pendant le jeu !!… C'est dur d'essayer de parler une langue en tentant d'assembler des mots un peu au pif !!..
Ce qui me mine c'est que je suis sûr que la soluce est toute “bête” et que je vais voir apparaître une ligne toute “simple” que j'aurais cherché vainement !.. HELP ME !! Please !!!

J'ai un autre souci qui me tracasse bien + : Un message d'erreur survient quasi-systématiquement maintenant, dès que je compile mon projet !. Dans des circonstances assez étranges : Si mon .fnd principal seul est ouvert : Error !.. Si j'ouvre en + mon .ssq et une autre unité no blèm !… (unité récemment créée au même moment que l'apparition des messages d'erreur !).. Sans redémarrer l'éditeur si je referme mes unités, no blèm !!??!!????
Je n'ai aucune idée de si c'est parlant mais dans la fenêtre du rapport d'erreur, sous l'onglet disasm c'est toujours la même ligne qui est colorée en rouge :
004dfb call -$de6af ($4014e8) ; System.@IntfClear
Je dois avouer que ça me fais un peu peur, j'ai pas trop envie de “plomber” mon projet ni de devoir tout recommencer !! Je veux bien envoyer des rapports d'erreur mais comme je t'ai déjà “pas mal” sollicité ….



(°!°) DerF

Modifié DerF_44 (juin 26, 2012 02:33:51)

Hors-ligne

#9 juin 26, 2012 11:22:53

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

Débutants

Alors en fait non, cette fois-ci il n'y a pas de solution toute simple. En effet, le code dans le ChangePosition se déroule durant les actions du monstre, pas pendant les actions du joueur. Et pendant les actions du monstre, on ne peut pas afficher un message au joueur, car pour faire ça il faut être dans les actions du joueur.

Une solution relativement simple, ici, si tu veux juste afficher un message de notification au joueur, c'est de lui envoyer un message. Du coup il faut aussi un plugin sur le joueur pour qu'il puisse traiter ce message.
messages
MonsterMessage: TPlayerMessage = $101;

plugin TMonsterMessagePlugin
on message MonsterMessage do
begin
Player.ShowMessage('blah blah');
end;
end;

...

on ChangePosition do
begin
// blah blah
Master.Timers.ScheduleNotificationMsg(0, Master.Players[0], msgMonsterMessage);
end;
L'idée est donc d'envoyer un message au joueur. Le Delay de 0 signifie qu'il le recevra dans 0 ms, c'est-à-dire le plus tôt possible. Mais la différence, c'est qu'il recevra ce message dans le contexte de ses actions, et donc là on peut lui afficher un message.

Pour l'erreur quasi systématique : 1) fais des sauvegardes de ton projet. 2), envoie-moi quand même les bugs reports, et éventuellement un zip de ton projet.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#10 juin 26, 2012 22:30:55

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

Débutants

Yesssssssss !! Cool !!!…
Si il est vrai que dans 95% du temps passé avec l'éditeur de FunLabyrinthe je me régale comme un petit fou,
les 5% restants sont assez hard et frustrants !!!..

Effectivement la “démarche” du plugin MessageMonster n'était pas du tout à ma portée !!
Et donc, c'est ok, mon premier test avec sons et/ou messages fonctionne parfaitement !. Trop trop bien !! Thank you !! Good man !

Pour ce qui est des messages d'erreurs j'ai plusieurs remarques à formuler :
Il me semble que depuis la version 5.3 il y en a + et + souvent..
De plus le comportement du compilateur à changé, certaines fois la compilation “se bloque” (pas de retour sous l'onglet Cartes et joueurs)
et le message d'erreur n'apparaît qu'en tentant de lancer le jeu (F9).. Chose qui ne m'était jamais arrivé avec la v 5.2 !!..
Il faut, certes, tenir compte du fait que je bidouille des choses plus alambiquées et un tantinet plus complexes,
mais certaines circonstances me font penser que mes bouts de codes ne sont pas seuls responsables de l'apparition de messages d'erreurs. (?)
(Ce n'est évidemment pas une critique, c'est juste pour info si cela peut apporter quelques micro-indices !)

Par exemple, très récemment, sont apparus des messages d'erreurs dans des circonstances étranges (pas de manipulations douteuses de code)
suite à une unité .fnd créée ne contenant que des Player.ShowSelectionMsg et des Player.ShowMessage (règles du jeu, petite histoire, à propos…) !!? Bizarre !..
Ce qui est encore plus bizarre c'est le fait de fermer les unités ouvertes, de re-compiler et de constater que tout se passe bien !!???

En ce qui concerne l'envoi de bugs reports, ok je vais t'envoyer le prochain, ce qui ne devrait pas tarder !..


Quant à l'envoi du zip de mon projet, aïe !.. J'ai plusieurs réticences d'ordre éthique :

- J'aimerais tellement que tu fasses partie des personnes qui découvriront mon projet sans se douter de quel genre d'aventure il s'agit !!
(un peu comme une sorte de merci, genre un petit cadeau de l'élève à son maître !!)

- J'ai laissé tombé la méthode du correctement écrit, faute de temps et surtout de connaissances, et là, je dois avouer que c'est un sacré merdier !!
Je crois que j'aurais presque honte de présenter un tel brouillon à un développeur qui a sûrement mieux à faire que de tenter de se retrouver
dans les méandres de mes bouts de codes !!

Ceci étant dit, si cela devient absolument nécessaire, que ce soit pour aider à la compréhension d'une problématique au sein du logiciel,
ou pour un dépannage important, alors oui je prendrais sur moi de te présenter mon brouillon de brouillon de projet !!.

Merci beaucoup sjrd, pour ton soutien !!.


PS: J'ai eu de grandes difficultés à me connecter sur le forum !! (En fait impossibilité tout l'aprèm' !)..
Avec, pour observation, un nombre “important” (et croissant !!) d'invités connectés !!?.. (jusqu'à 14) !?


(°!°) DerF

Modifié DerF_44 (juin 26, 2012 22:47:33)

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version