|
Pour ceux qui ont participé à l'épisode précédent..
https://forums.jeuxonline.info/showthread.php?t=1024861 je vous propose d'aller explorer plus avant les possibilités du LSL.... Nous avions vu comme faire un automate à mémoire. On enregistrait les positions et rotations de l'avatar et on pouvait les "rejouer" après... Pour ce second robot on va créer un script de départ appeler Engine 1 dans un objet nommé Robot. C'est un robot qui suit son maître simplement et nous verrons, si le sujet intéresse, comment ajouter des modules pour le rendre ... indispensable ;-). Citation :
Code PHP:
![]() ![]() |
![]() |
Aller à la page... |
Mon second robot...
Suivre Répondre |
|
Partager | Rechercher |
#204156 |
|
Why not?... A mettre dans la pile des fonctions intéressantes
|
![]() |
|
Alpha & Oméga
|
![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
|
Sextan Shepherd |
Voir le profil public |
Trouver plus de messages par Sextan Shepherd |
|
![]() |
![]() |
|
|
Petite remarque : l'etape
Citation :
|
![]() |
|
Ahuri Serenity |
Voir le profil public |
Trouver plus de messages par Ahuri Serenity |
|
Je sais mais un petit bug LSL peut planter le script et la taille reste figée sur .5 ( dans mes tentatives)... donc faute de grives...
|
![]() |
|
|
On va traiter des terrains qui n'acceptent pas le déplacement d'objets.
On a tous reçu un jour ou l'autre un un joli petit message bleu annonçant fugitivement quelque chose comme cela: Cant move the object XYZ to [vector ] the region ABC don't.. etc ou Cant reposition -- permission denied etc... Notre robot n'échappe pas à cette interdiction et se retrouve planter à la frontière dans l'impossibilité de se mouvoir plus avant.. 2 Fonctions semblent intéressantes : LlScriptDanger LlGetParcelFlags Mais à l'usage elles seront bien décevantes et totalement inefficace pour notre problème. Prenons la problématique par les faits tout simplement... Le robot est bloqué quand sa mobilité = 0 et que la distance qui le sépare de son propriétaire est < 1.5 m. La mobilité s'appelle la vélocité est peut être calculée par l'utilisation de 2 fonctions imbriquées : Code PHP:
Code PHP:
Code PHP:
Il nous reste à sortir le robot de cette position / situation de blocage. Le grand hic c'est que: Quand un objet est "physical" et "bloqué" les mouvements physiques lui sont interdits... llMoveToTarget(..) par exemple. Quand un objet n'est pas physique et "bloqué" les mouvements lui sont interdits aussi... llSetPos(..) ...mais on peut "forcer" le déplacement par l'utilisation de la fonction : llSetPrimitiveParams([PRIM_POSITION]..). ![]() Cette fonction est déjà utilisée astucieusement dans 2 hacks (reconnus et tolérés par LL): Bouger un avatar sur une prim.. Déplacer un objet sur de longues distance en gardant un temps de ... 0.2s. Nous allons l'utiliser et s'appuyer sur la fonction warPos L'intégration de cette sécurité sera donc gérée de la façon suivante: Code PHP:
Et voilà c'est tout simple ![]() On va profiter de l'intégration de la fonction warpPos on intégrer les grands déplacements >50m comprenant de ce fait les téléportations en altitude. Code PHP:
L'affection première se fera par défaut sur le rez du robot: Code PHP:
par exemple.. Code PHP:
Ce qui pour de longues absences peut s'avérer un peu fastidieux... ( 720 contrôles / heure x nombre d'heures ...) Gràce à la mise en place des élements ci dessus nous pouvons mettre en place un système plus... adéquat. Code PHP:
pour le réveiller on clique sur sa tête.. Code PHP:
![]() La version Engine 1.2 du script. Code PHP:
C'est déjà un très bon follower... mais manque tout le système de communication, qui permettrait un échange d'infos/d'ordres bien sympathique... NB: Sur une téléportation dans la même région le robot met ... 0.2s! |
![]() |
|
|
...
|
![]() |
|
Sextan Shepherd |
Voir le profil public |
Trouver plus de messages par Sextan Shepherd |
Bagnard
|
Tu crées une fonction Distance()
Code PHP:
llVecDist |
![]() |
|
#240361
Invité
|
Une meilleur alternative au warpPos :
http://wiki.secondlife.com/wiki/PosJump Beaucoup plus rapide, moins laggy et contrairement au warpPos ne bouffe pas énormément de mémoire même pour faire des sauts de plus de 4 000 mètres. En attendant d'intégrer une fonctionnalité (officielle) pour le LSL capable de déplacer un objet sur de très longues distances, ce second hack marchera (plus d'infos ici ). Il y a une petite faille dans ton raisonnement, pour une parcel no object entry ça ne posera pas de problèmes si un objet essaye de rentrer dedans, par contre pour les no script parcel c'est une autre histoire ![]() llGetParcelFlags est très efficace justement pour empêcher ce genre d'erreur. Apès survient un autre problème : La parcel peut être no script, mais le owner de l'objet peut quand même avoir les droits (il peut être le owner de la land ou tout simplement dans le groupe attaché à cette land). Pour ça je check le owner de la land par rapport au llGetOwner ainsi que le groupe de l'objet par rapport à celui de la land (mais évidemment, il n'y a pas de solutions fiables à 100%). |
![]() |
|
#240361 |
|
Bonjour Toutes et tous,
Whouaaaaaa, SEB n'arrêtera jamais de me surprendre et je ne suis pas surpris souvent. Je n'y connais rien, mais j'adore tes créations. ![]() |
![]() |
|
Dominique DEBEVEC |
Voir le profil public |
Trouver plus de messages par Dominique DEBEVEC |
|
Citation :
Comparons ce qui est comparable... llVectDist est une fonction système certes tout comme llVectMag que j'utilise ici en est une autre...[ return llVecMag( pos1- pos2); ] |
![]() |
|
#240361
Invité
|
Citation :
|
![]() |
|
#240361 |
|
Citation :
Citation :
Citation :
![]() Le robot n'est pas un outil de téléportation juste que si il a à parcourir une grande distance de temps à autre il le fera en 0.2s ... gagner quelques milli secondes n'a pas d'importance dans ce concept. Concernant tes remarques sur les flags des lands no script qui n'étaient pas la problématique évoqué dans mon sujet... Concernant les droits sur les terrains et concernant les objets... 1. Les creations 2. Les entries 3. Les scripts Les options parcel no object entry et no create object sont activitées sur de TRES nombreux lands et quasi de façon systématique d'où mon intérêt très spécifique et prioritaire. Donc 2 problèmes sur 3 sont résolus à ce stade ![]() concernant la situation du no script ... si elle est associée au 2 autres le robot s'en sortira. Pourquoi? tout simplement parce que l'objet NE PEUT PAS pénétrer sur le Land! Donc ce qui veut dire que sur 6 possibilités de blocages 5 sont solutionnées avec une sollution simple et efficace n'est ca pas? ![]() no entry no create no script ==> OK no entry no create no script ==> OK no entry no create no script ==> OK no entry no create no script ==> NOK no entry no create no script ==> OK no entry no create no script ==> OK Pour la 6 ème qui correspond au NO Script seul il me semble qu'elle est rare ![]() mais ce n'est pas une raison j'en conviens... Comme je l'ai déjà indiqué la mise en place est complexe pour toutes les raisons que tu connais ( owner / group et Cie) et plus délicate à gérer. Finalité elle devra être intégrée un jour ou l'autre pour faire un 6/6 ![]() Merci BlackShade de tes remarques toujours pertinantes |
![]() |
|
#240361 |
#240361 |
#240361 |
Suivre Répondre |
Fil d'ariane
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|