Rechercher - Liste des utilisateurs
Version complète : multi-cartes
Accueil » Créer des labyrinthes » multi-cartes
1 2 3
DerF_44
Ok, merci pour les infos..
Voici mon bout de code concernant VK_BACK (on ne rit pas !) :

plugin TRetourCasePlugin
hint 'Retour début de case';
on PressKey do
begin
if Key = VK_BACK then
begin
CompartmentDestination(Player);
Handled := True;
end;
end;
end;
Et dans ce cas il m'indique “identificateur VK_BACK non déclaré”, si j'ajoute en début d'unité “VK_BACK : TVK_BACK” il annonce alors : “Types incompatibles : Word et TVK_BACK”..
J'ai aussi essayé “if Key = Ord (VK_BACK) then”…
Bref, je pense être complètement à côté de la plaque sur cette question !

NB: Ceci n'est pas primordial pour mon projet, c'est histoire d'assouvir ma curiosité et de mieux cerner la chose..
sjrd
Ton code est bon. Je crois que tu dois juste ajouter l'unité Windows dans les uses.
DerF_44

Tout à fait !!.
En ajoutant Windows dans les uses le code

if Key = VK_BACK then
fonctionne parfaitement !.
Merci !.
DerF_44
Bon, je galère un peu avec la manière de forcer le choix d'une carte de destination :

Dest.Map := Master.Maps['MainMap'];
Il me dit "Identificateur Master non déclaré“ et lorsque j'écris ”Master : TMaster;“ ou bien ”Master := Player.Master;" FunLabyrinthe cesse de fonctionner !!?.
Une idée ?..
sjrd
Tu peux mettre le code qui entoure aussi ?
DerF_44
Ok, je m'attendais un peu à ça !… C'est un peu compliqué (l'unité en question comporte 800 lignes) mais je vais essayer d'être simple (tout en gardant le sujet de mon projet confidentiel pour + de surprise lorsqu'il sera opérationnel !) …
Bon, alors… Voici ce que j'ai et qui fonctionne :

procedure CompartmentDestination(Player: TPlayer);
begin
if Player.Tag = 1 then
Player.MoveTo(Point3D(7,42,1));
if Player.Tag = 2 then
Player.MoveTo(Point3D(12,42,1));
if Player.Tag = 3 then
//..................................................................etc
end;

Et grâce au code suivant :

plugin TRetourCasePlugin
hint 'Revenir en début de case (Touche Back Space)';
on PressKey do
begin
if Key = VK_BACK then
begin
CompartmentDestination(Player);
Handled := True;
end;
end;
end;
Le joueur a la possibilité de revenir à un point de départ si il s'est un peu trop perdu… Cela fonctionne parfaitement si il n'a pas quitté la MainMap dans le cas contraire niet !.. Et donc je voudrais modifier ma procédure avec quelque chose dans le genre de :

procedure CompartmentDestination(Player: TPlayer);
var
Dest: TQualifiedPos;

begin
Dest.Map := Master.Maps['MainMap'];

if Player.Tag = 1 then
Dest.Position := Point3D(7,42,1);
if Player.Tag = 2 then
Dest.Position := Point3D(12,42,1);
if Player.Tag = 3 then
//...............................................................etc

Player.MoveTo(Dest);
end;


sjrd
OK alors écris simplement :
Dest.Map := Player.Master.Maps['MainMap'];
Aussi, à la place de tous les if, tu peux faire un case :
case Player.Tag of
1: Dest.Position := Point3D(7, 42, 1);
2: Dest.Position := Point3D(12, 42, 1);
// etc.
end;
DerF_44
Bon, voici où j'en suis :

procedure CompartmentDestination(Player: TPlayer);
var
Dest: TQualifiedPos;

begin
Dest.Map := Player.Master.Maps['MainMap'];

case Player.Tag of
1: Dest.Position := Point3D(7, 42, 1);
2: Dest.Position := Point3D(12, 42, 1);
//..........................................................................etc
end;
end;
Et il me dit (à propos de la ligne "Dest.Map := Player.Master.Maps;"
Types incompatibles : Integer et string (curseur entre [ et ‘)
et Valeur requise (curseur devant le P de Player)
Peut-être je n’ai pas capté le code et qu'il n'est pas bon ?..

DerF_44
Fausse alerte !!.

En enlevant le “s” de Maps :

Dest.Map := Player.Master.Map['MainMap'];

Tout fonctionne correctement !. Nickel !!!
C'est cool car ce problème étant résolu, je vais pouvoir continuer sereinement mon projet !.
Merci beaucoup sjrd !.

(Et au passage, je te souhaite une très bonne année 2012 !. )
sjrd
Bonne année 2012 également !
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