JeuxOnLineForumsPlusConnectés : 273 (sites) | 911 (forums)Créer un compte
Second Life
Forum général
Répondre
Partager Outils Rechercher
Avatar de Elenia B.
Elenia B.
Alpha & Oméga
 
Avatar de Elenia B.
 
Citation:
Envoyé par MenthalOH Voir le message
Et si en plus Elenia, tu pouvais piquer un bout de script, une aide sur le Scripting, et le publier....qu'on voit à quoi ressemble le nouveau langage....
Oh c'est du C# pur, avec des assemblies spécifiques qui apportent les classes, méthodes et types nécessaires à l'interaction.
Voici le célèbre liste des visiteurs version Sansar; piloté par une très classique commande par chat :
Code:
/* This content is licensed under the terms of the Creative Commons Attribution 4.0 International License.
 * When using this content, you must:
 * •    Acknowledge that the content is from the Sansar Knowledge Base.
 * •    Include our copyright notice: "© 2017 Linden Research, Inc."
 * •    Indicate that the content is licensed under the Creative Commons Attribution-Share Alike 4.0 International License.
 * •    Include the URL for, or link to, the license summary at https://creativecommons.org/licenses/by-sa/4.0/deed.hi (and, if possible, to the complete license terms at https://creativecommons.org/licenses/by-sa/4.0/legalcode.
 * For example:
 * "This work uses content from the Sansar Knowledge Base. © 2017 Linden Research, Inc. Licensed under the Creative Commons Attribution 4.0 International License (license summary available at https://creativecommons.org/licenses/by/4.0/ and complete license terms available at https://creativecommons.org/licenses/by/4.0/legalcode)."
 */

/* Use oroutines as an event callback to easily track visitors to a scene.
 * Every visitor triggers an AddUser event which will start a coroutine for that visitor.
 */
using System;
using System.Collections.Generic;
using System.Linq;
using Sansar.Script;
using Sansar.Simulation;

// This example shows how to use coroutines and events to track agents entering and leaving the scene
public class VisitorTrackerExample : SceneObjectScript
{
    public string OwnerName;
    public string VisitorListCommand = "/visitorlist";

    public override void Init()
    {
        // Subscribe to Add User events
        // Events can be handled by anonymous methods
        ScenePrivate.User.Subscribe(User.AddUser, SessionId.Invalid, (action, userSessionId, data) => StartCoroutine(TrackUser, userSessionId), true);

        // listen for commands
        ScenePrivate.Chat.Subscribe(0, null, OwnerCommand);
    }

    private class Visitor
    {
        public TimeSpan TotalTime;
        public DateTime VisitStarted;
        public bool Here = false;

        public TimeSpan ThisVisitSoFar
        {
            get { return DateTime.Now - VisitStarted; }
        }
    }

    private Dictionary<string, Visitor> Visitors = new Dictionary<string, Visitor>();

    // There will be one instance of this coroutine per active user in the scene
    public void TrackUser(SessionId userId)
    {
        // Lookup the name of the agent. This is looked up now since the agent cannot be retrieved after they
        // leave the scene.
        string name = ScenePrivate.FindAgent(userId).AgentInfo.Name;
        Visitor visitor;
        if (Visitors.TryGetValue(name, out visitor))
        {
            visitor.VisitStarted = DateTime.Now;
            visitor.Here = true;
        }
        else
        {
            visitor = new Visitor();
            visitor.TotalTime = TimeSpan.Zero;
            visitor.VisitStarted = DateTime.Now;
            visitor.Here = true;
            Visitors[name] = visitor;
        }

        // Block until the agent leaves the scene
        WaitFor(ScenePrivate.User.Subscribe, User.RemoveUser, userId);

        // This should succeed unless the data has been reset.
        // Even then it _should_ succeed as we re-build it with anyone still in the region.
        if (Visitors.TryGetValue(name, out visitor))
        {
            visitor.TotalTime += visitor.ThisVisitSoFar;
            visitor.Here = false;
        }
    }

    private string getVisitorMessage()
    {
        string message = "There have been " + Visitors.Count + " visitors:\n";
        foreach (var visitor in Visitors)
        {
            message += "   " + visitor.Key + " visited for " + (visitor.Value.TotalTime + visitor.Value.ThisVisitSoFar).TotalMinutes + " minutes. [here now]\n";
        }
        return message;
    }

    public void OwnerCommand(int Channel, string Source, SessionId SourceId, ScriptId SourceScriptId, string Message)
    {
        // Checking the message is actually the fastest thing we could do here. Discard anything that isn't the command we are looking for.
        if (Message != VisitorListCommand)
        {
            return;
        }

        AgentPrivate agent = ScenePrivate.FindAgent(SourceId);
        if (agent == null)
        {   // Possible race condition and they already logged off.
            return;
        }

        // If no OwnerName is set, let anyone get the visitor list, otherwise only if the owner name matches.
        if (OwnerName != null && OwnerName != ""
            && agent.AgentInfo.Name != OwnerName)
        {
            return;
        }

        // Dialogs are much easier in a coroutine with WaitFor
        StartCoroutine(ShowStats, agent);
    }

    void ShowStats(AgentPrivate agent)
    {
        var modelDialog = agent.Client.UI.ModalDialog;
        OperationCompleteEvent result = (OperationCompleteEvent)WaitFor(agent.Client.UI.ModalDialog.Show, getVisitorMessage(), "OK", "Reset");
        if (modelDialog.Response == "Reset")
        {
            WaitFor(agent.Client.UI.ModalDialog.Show, "Are you sure you want to reset visitor counts?", "Yes!", "Cancel");
            if (modelDialog.Response == "Yes!")
            {
                // Make a new dictionary of everyone still here to replace the current tracking info.
                Dictionary<string, Visitor> stillHere = Visitors;
                Visitors = new Dictionary<string, Visitor>();

                foreach (var visitor in stillHere)
                {
                    Visitor v = new Visitor();
                    v.TotalTime = TimeSpan.Zero;
                    v.VisitStarted = DateTime.Now;
                    v.Here = true;
                    Visitors[visitor.Key] = v;
                }

                WaitFor(modelDialog.Show, "Visitor times reset.", "", "Ok");
            }
        }
    }
}
Lien direct vers le message - Vieux
MenthalOH
Dieu / Déesse
 
ok, merci
Lien direct vers le message - Vieux
Avatar de Aleah
Aleah
Alpha & Oméga
 
Avatar de Aleah
 
Citation:
Envoyé par Elenia B. Voir le message
Oh c'est du C# pur, avec des assemblies spécifiques qui apportent les classes, méthodes et types nécessaires à l'interaction.
Voici le célèbre liste des visiteurs version Sansar; piloté par une très classique commande par chat :
Code:
/* This content is licensed under the terms of the Creative Commons Attribution 4.0 International License.
 * When using this content, you must:
 ...
Bonjour,

c'est plus dur à apprendre que le LSL, ou c'est pareil?
Lien direct vers le message - Vieux
Avatar de Elenia B.
Elenia B.
Alpha & Oméga
 
Avatar de Elenia B.
 
Citation:
Envoyé par Aleah Voir le message
Bonjour,

c'est plus dur à apprendre que le LSL, ou c'est pareil?
A mon avis sacrément plus dur, car plus complexe, plus riche et plus puissant.

Pour les données par exemple le LSL compte 7 types différents, et le seul qui permet de traiter une collection est le type list http://wiki.secondlife.com/wiki/Category:LSL_List

Je ne saurais pas compter les différents types dans C# il y en a des dizaines (et sans doute des centaines). Et c'est la grosse difficulté: utiliser le type approprié au bon moment. Et en prime on peut se créer ses propres types sur mesure.

Le script que j'ai publié est un très bon exemple :
using System.Collections.Generic;
va charger pour ce script tous les types spécialisés pour les collections; il y en a 12 ! On est loin du lsl et de sa pauvre list
HashSet<T>
Dictionary<TKey, TValue>
LinkedListNode<T>
List<T>

Queue<T>
SortedDictionary<TKey, TValue>

SortedList<TKey, TValue>
SortedSet<T>
Stack<T>

SynchronizedCollection<T>
SynchronizedKeyedCollection<K, T>

SynchronizedReadOnlyCollection<T>

Et on voit ici le problème du C#; si le lsl était fortement typé (on ne peut pas utiliser un type à la place d'un autre) je dirais que le C# est lui très fortement typé. Le list du lsl permettait d'y entasser tous types de données. Le List<T> du C# on doit préciser à la construction le type de données que l'on va y mettre (c'est ce que veut dire le <T>) et plantage assuré si on tente d'y mettre autre chose.

Code:
private class Visitor
    {
        public TimeSpan TotalTime;
        public DateTime VisitStarted;
        public bool Here = false;

        public TimeSpan ThisVisitSoFar
        {
            get { return DateTime.Now - VisitStarted; }
        }
    }

    private Dictionary<string, Visitor> Visitors = new Dictionary<string, Visitor>();
Voilà la structure de données: d'abord une classe Visitor, qui embarque :
un TimeSpan TotalTime : le temps passé sur la sim l’expérience;
un DateTime VisitStarted : la date + heure/mn/s où il est arrivé
un bool Here : dit si oui ou non le visiteur est actuellement présent
et une petite méthode ThisVisitSoFar qui calcule combien de temps le visiteur est resté

Et puis après on bâtit un Dictionary; Alors un Dictionary c'est un ... dictionnaire. C'est une liste de couple clé-valeur. La clé doit être unique, et on peut faire des tas de trucs intéressants avec : recherche, tri, classement ... Dans le cas qui nous intéresse, la clé est du type string, c'est à dire chaine de caractères : on y mettra le nom du visiteur; et la valeur et bien on repique la classe Visitor que l'on utilise donc comme type. Vous voyez la puissance du C#? Et sa complexité : la doc du Dictionary https://msdn.microsoft.com/en-us/lib...or=-2147217396

Bon voilà j'espère que je ne vous ai pas trop embrouillés et que j'ai éclairé un peu votre lanterne sur le C#.

J'aime bien la simplicité du lsl; faire des choses complexes avec est un véritable sport.

Mais le C# est un super langage; aussi je suis frustrée car clairement Sansar n'est pas pour moi pour cause de trop gourmand pour ma pauvre ligne adsl. Dans 5 ans peut être ?

Dernière modification par Elenia B. ; 13/07/2017 à 21h52.
Lien direct vers le message - Vieux
Avatar de Aleah
Aleah
Alpha & Oméga
 
Avatar de Aleah
 
merci pour la réponse
Lien direct vers le message - Vieux
Avatar de caterina
caterina
Dieu / Déesse suprême
 
Avatar de caterina
 
Citation:
Envoyé par Elenia B. Voir le message
Mais le C# est un super langage; aussi je suis frustrée car clairement Sansar n'est pas pour moi pour cause de trop gourmand pour ma pauvre ligne adsl. Dans 5 ans peut être ?
Dommage...chez moi ça sera sûrement ça aussi , vivement la fibre pour tous (enfin, presque tous, ça va sans doute être compliqué à installer dans les coins reculés).

Je n'y connais pas grand chose en script, mais nul doute que ce C# va motiver nos camarades scripteurs, car ça semble être un défi à relever !

caterina
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Ah du C# ! Je n'en ai pas pratiqué depuis quelques années mais je l'aimais bien, souple et puissant.

C'est vrai que le LSL est une sorte de sport de combat et de recherche incessante d'astuces pour contourner les limitations. On va dire que c'était une époque. L'introduction d'un véritable langage de programmation est forcément un atout intéressant qui peut attirer de "vrais" codeurs. En même temps ça risque de rebuter les débutants qui trouvaient dans le LSL un scriptage accessible.
Lien direct vers le message - Vieux
Avatar de caterina
caterina
Dieu / Déesse suprême
 
Avatar de caterina
 
Ben, sur ce coup-là, malheureusement, je crois que ça sera pareil pour le build des objets......à croire que c'est le but recherché, fi de l'amateurisme, même éclairé, et place aux pros (et, pour les autres, vous êtes priés de vous en tenir à consommer et de sortir vos espèces sonnantes et trébuchantes !).

caterina

Dernière modification par caterina ; 14/07/2017 à 16h27. Motif: manque une lettre
Lien direct vers le message - Vieux
MenthalOH
Dieu / Déesse
 
exactement....de "vrais codeurs", de "vrais" créateurs 3D.....Their world, their imagination....amen.....
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Citation:
Envoyé par caterina Voir le message
Ben, sur ce coup-là, malheureusement, je crois que ça sera pareil pour le build des objets......à croire que c'est le but recherché, fi de l'amateurisme, même éclairé, et place aux pros (et, pour les autres, vous êtes priés de vous en tenir à consommer et de sortir vos espèces sonnantes et trébuchantes !).
Il est logique que la plateforme évolue technologiquement, c'est d'ailleurs une demande ferme des utilisateurs. Du coup l'accès pour les créateurs en devient plus délicat parce que ces technologies font appel à des connaissances ou des savoir-faire plus long à acquérir.

On peut s'attendre à l'arrivée de professionnels (graphistes, développeurs...) qui pourront apporter leurs compétences pour créer et animer ce monde-là.

Il n'y aura plus la place pour le bricoleur occasionnel parce que la création sera plus exigeante. Il n'est pas très utile d'apporter un jugement de valeur concernant cette évolution parce qu'elle est inéluctable. C'est encore l’histoire du beurre et de l'argent du beurre. On peut d'ailleurs constater la même dérive RL.

Je pense qu'il faut plutôt le prendre comme un défi parce que même plus complexes les savoir-faire en question ne sont pas inaccessibles.
Lien direct vers le message - Vieux
Avatar de Loee
Loee
Déesse souveraine
 
Avatar de Loee
 
Le jour où il existera des tutos compréhensibles sans migraine ni s'endormir peut-être...

De toute façon construire pour quoi ? On n'est pas du tout dans le même schéma que SL, j'ai pas l'impression que la customisation d'avatars soit à l'ordre du jour. Reste plus que la déco... pour qui, pour quoi, on sait pas encore.
Enfin ça fait quand même une sacrée part du marché qui part à la poubelle. Des créateurs de talent on en a sur SL, mais combien par rapport à la masse ? Ils ne seront pas plus nombreux sur Sansar, juste qu'il n'y aura plus qu'eux. Tant mieux pour les yeux, tant pis pour les autres.
Lien direct vers le message - Vieux
Avatar de Chloe Seljan
Chloe Seljan
Déesse créatrice
 
Avatar de Chloe Seljan
 
Citation:
Envoyé par Loee Voir le message
(...) j'ai pas l'impression que la customisation d'avatars soit à l'ordre du jour. Reste plus que la déco... pour qui, pour quoi, on sait pas encore.(...)
Pour l'instant, la customisation d'avatars (objets et avatars) n'est pas encore disponible. Mais c'est prévu.
Sur le forum disponible aux personnes qui ont accès à Sansar, quelqu'un a posé la question.

Q. Sansar have any skeleton files out yet? or such for avatar creation?

R. Welcome to Sansar! Happy to hear that you are excited about avatar customization. While this is not something currently available to creators, it is in the works. We will start with accessories and things will improve upon from there. We know avatar customization is of great interest to many creators.


Pour ce qui est des objets, oui, cela passera par des créations 3d hors sansar, qu'il faudra importer. Je sais que Blender, Maya, 3Ds Max font peur à beaucoup de personnes. Mais lancez-vous. Si n'est pas pour Sansar ou SL, pour vous. Perso, j'ai trouvé une vraie passion, et je n'importe quasi rien dans SL.

Pour importer dans Sansar, j'ai quand même l'impression que c'est vachement plus simple et pratique que sur SL.
C#, j'ai appris un peu. et je me sens moins perdue avec ce langage qu'avec LSL. D'autant plus que Visual Studio aide beaucoup dans le développement des codes (esthétisme, librairies assez riches, automatismes,...)

Je ne cherche pas à convaincre, chacun aura ses propres ressentis. Mais, si cela peut vous donner une occasion de vous lancer dans de nouveaux trucs, pourquoi pas

Ah, peut-être une correction quand même : NON, la modélisation 3D n'est pas destinée qu'à des pros, des "vrais". C'est accessible à tous. Certains s'en sortent mieux que d'autres, feront toujours des plus belles choses, mais c'est accessible à tous. Blender est gratuit, puissant et facile à comprendre après quelques jours de bataille
C#, y a des très bons cours sur internet (anglais surtout, mais très bons). Je pense que Microsoft propose des cours en français gratuit aussi.

Belle soirée à tous,

Chloé
Lien direct vers le message - Vieux
Avatar de tartignolle
tartignolle
Impératrice
 
Avatar de tartignolle
 
entre le langage de prog que je n'ai pas envie d'apprendre, la difficulté accrue pour fabriquer quoi que ce soit, le coté expurgé des activités adultes, les nulettes à voir en 3D qui ne m'interessent pas, la demande de bande passante vous avez réussi à me donner plein de raisons pour n'en avoir plus rien à fiche de sansar.
merci beaucoup ça m'évitera donc de perdre du temps.
Lien direct vers le message - Vieux
Avatar de doudi
doudi
Demi-dieu / Demi-déesse
 
Avatar de doudi
 
Bonjour tout le monde (ou plutôt bonne nuit en fait)
Par rapport à la customisation de l'avatar, je me demande s'ils voudraient pas justement retarder tout le business qui va avec , l'aspect fashion addict qui est assez écrasant sur SL, pour laisser autre chose se profiler?
Idem pour l'absence de porno.
Lien direct vers le message - Vieux
Avatar de Mitsuki Eclipse
Mitsuki Eclipse
Alpha & Oméga
 
Avatar de Mitsuki Eclipse
 
Question
Et les navions , batos , ouatures , nhélicos , ce ne sera pas disponible non plus alors à part se promener on fera quoi ...
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +1. Il est actuellement 04h36.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite