Script ascenseur pour opensimulator

Répondre
Partager Rechercher
Bonsoir ô scripteurs,
Je viens faire appel à vos connaissances et compétences innombrables (oui je sais je flatte...)

d'abords pour situer :
J'ai un simulateur OpenSim 0.9.2.2 Yeti Dev Win/.NET à l'adresse suivante, si certains veulent venir voir : http://dracsoom.ddns.net:8002
Pour faire simple : catégorisé général, pas de monnaie, que du gratuit, de l'échange, de l'entraide. Quelques résidents sur des régions en location gratuite.

le projet :
Je suis actuellement en train de construire une station spatiale. Pour les besoins de passages entre différents niveaux, j'ai besoin d'un ascenseur pour desservir 4 niveaux.
N'étant qu'un modeste bricoleur de scripts et non pas un artisan scripteur comme on en trouve par ici, je suis donc aller voir de ce coté de JOL, pour trouver mon bonheur. Quand on regarde les posts, ils ne sont pas de toute dernière jeunesse, ce qui explique peut-être pourquoi ils ne fonctionnent pas, peut-être. Après c'est peut -être moi qui n’ai pas su faire. Par exemple si on regarde un projet ascenseur en physique avec plusieurs scripts qui répond à tous les critères d'un ascenseur, ben il n'a jamais bougé d'un petit centimètre
donc j'ai trouvé quand même celui-ci qui pourrait faire le Job, même s'il est moche. Le soucis est que dès que l'avatar se lève on a un message dans le journal des scripts:

llDialog: First parameter must be a valid key

j'ai eu beau le triturer dans tous les sens rien y fait. Soit il fonctionne et j'ai le message soit il ne veut plus fonctionner : Raaaaaage

Ma demande, mon souhait, ma prière (là, ça ressemble à de la lèche....... j'assume totale)
Si l'un d'entre-vous pouvez regarder ce script et corriger le défaut qui entraîne ce message et/ou la possibilité d'avoir un fonctionnement par bouton d'appel plutôt que par menu ce serait encore mieux. Qu'il soit en physique ou pas, on s'en fou, s'il est plus fluide c'est bien mais là encore ce n'est pas la priorité. Cet ascenseur a un but pratique, pas forcément esthétique. A partir du moment où je peux déplacer un avatar de n'importe quel étage vers celui attendu et que je peux appeler l'ascenseur depuis n'importe quel étage, bref un fonctionnement basique vous me rendrez encore une fois le plus heureux.

voici le dit script qui était le plus prometteur pour moi:
Code PHP:

// :CATEGORY:Elevator
// :NAME:Elevator
// :AUTHOR:Encog Dod
// :CREATED:2010-01-10 05:20:56.000
// :EDITED:2013-09-18 15:38:52
// :ID:275
// :NUM:367
// :REV:1.0
// :WORLD:Second Life
// :DESCRIPTION:
// Elevator
// :CODE:
// From the book:
//
// Scripting Recipes for Second Life
// by Jeff Heaton (Encog Dod in SL)
// ISBN: 160439000X
// Copyright 2007 by Heaton Research, Inc.
//
// This script may be freely copied and modified so long as this header
// remains unmodified.
//
// For more information about this book visit the following web site:
//
// http://www.heatonresearch.com/articles/series/22/

integer CHANNEL 42// dialog channel
list MENU_MAIN = ["Floor 1""Floor 2""Floor 3""Floor 4""Floor 5""Floor 6""Floor 7""Floor 8""Floor 9""Floor 10","Roof"]; // the main menu

float BOTTOM 22.260;
float FLOOR_HEIGHT 10;
float SPEED 2;
float target;


default
{
    
state_entry()
    {
        
llListen(CHANNEL""NULL_KEY""); // listen for dialog answers (from multiple users)
        
llSitTarget(<0,-0.5,0.5>, llEuler2Rot(<0,0,-90>) );
        
llSetText("Sit Here to Ride Elevator",<0,0,0>,1.0);
        
target BOTTOM;
    }
    
    
listen(integer channelstring namekey idstring message
    {
        
integer idx llListFindList(MENU_MAIN, [message]);
        if( 
idx!=-)
        {
            
llSay(0,"Elevator heading to " message "." );
            
target BOTTOM + (idx*10);
            
state moving;
        } 
    }

    
changed(integer Change
    {
        
llDialog(llAvatarOnSitTarget(), "Where to?"MENU_MAINCHANNEL);
    }
    
}

state moving
{
    
    
    
state_entry()
    {
        
llSetTimerEvent(0.1);
    }
    
    
timer()
    {
        
vector pos llGetPos();
        
        if( 
pos.z!=target )
        {
            if( 
pos.z>target )
            {
                
pos.pos.SPEED;
            }
            else
            {
                
pos.pos.SPEED;
            }
        }
        
        if(  
llFabs(pos.target) < SPEED )
        {
            
pos.target;
            
llSetTimerEvent(0);
            
llSetPos(pos);
            
llSay(0,"Elevator has reached its target." );
            
state default;
        }  
        
        
llSetPos(pos);
        
    }

Je vous remercie de m'avoir lu

Je vous remercie par avance du temps que vous voudrez bien consacrer à mon projet.

Excellente soirée et bon WE à tout JOL

Draco
Petit passage rapide du matin, pour le message, c 'est assez simple....quand tu te lèves, la fonction llDialog ne trouve plus de clé uuid vers laquelle envoyer un menu, puisque dans ton script la clé est justement trouvée par la fonction llAvatarOnSitTarget()......celui qui est assis sur le prim. Et donc le script râle.....

Pour le reste, ça risque d' être beaucoup plus complexe et long....surtout en OpenSim (que je ne fréquente plus depuis longtemps)....où le fonctionnement des scripts est toujours aléatoire.
Citation :
Publié par MenthalOH
Petit passage rapide du matin, pour le message, c 'est assez simple....quand tu te lèves, la fonction llDialog ne trouve plus de clé uuid vers laquelle envoyer un menu, puisque dans ton script la clé est justement trouvée par la fonction llAvatarOnSitTarget()......celui qui est assis sur le prim. Et donc le script râle.....

Pour le reste, ça risque d' être beaucoup plus complexe et long....surtout en OpenSim (que je ne fréquente plus depuis longtemps)....où le fonctionnement des scripts est toujours aléatoire.
Merci pour ce passage rapide du matin. J'ai au moins un piste de recherche pour régler le problème du message. Pour le reste, il n'y a pas de demande particulière de créer un script, c'est surtout au cas où quelqu'un de passage aurait un script ascenseur QUI FONCTIONNE correctement et se dise : "tiens je partage".
mais je ne suis pas contre pour autant .
en tout cas merci beaucoup pour cette aide.
excellente soirée
Il y a très peu de chances qu' un script qui marche pour un build donné, dans un lieu donné, avec des exigences particulières, à chaque builder puisse fonctionner ailleurs, dans un autre build, avec d' autres demandes.....bonne soirée.
Bonsoir à tous et merci à MenthalOH pour tes réponses.
Après de longues recherches et de nombreux essais, j'ai finalement trouvé quelque chose qui fonctionne pas trop mal et relativement réaliste, pour ceux que cela intéresserai, j'ai trouvé ça en suivant ce lien :

https://github.com/acidphyx/OpenSim/.../Elevator/v1.0

Il y a deux versions, mais la deuxième je pense qu'il manque quelque chose mais comme je suis une bille en script, ben ce n'est pas à prendre pour une vérité

Encore merci pour ceux qui m'ont lu.

Je souhaite à toute la communauté JOL de bonnes fêtes de fin d'année, le réveillon du 31 approche à grande vitesse.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés