Les Voltigeurs d'URU LIVE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-20%
Le deal à ne pas rater :
-20% sur le Lot de 2 écrans PC GIGABYTE 27″ LED M27Q
429 € 539 €
Voir le deal

Interragir avec les constantes du fichier SDL en temps réel

3 participants

Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Annabelle Lun 23 Juil - 1:05

J'aimerais avoir un peu d'explication concernant ce point.

J'aimerais pouvoir interragir avec les constantes du fichier SDL du quartier en temps réel. Malheureusement, je connais que leurs utilisations sous la console Plasma ce qui ne permet pas grand chose Crying or Very sad .

Je voudrais un exemple de scripts sous la console Python. Par exemple, faire apparaître des citrouilles ou partir les feux d'artifices de la fontaine centrale.

Merci!
V@-Annabelle
V@-Annabelle
Modérateur
Modérateur

Messages : 340
Date d'inscription : 14/05/2010
Localisation : Canada

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  Lyrositeur Lun 23 Juil - 2:02

Voici le code que j'utilise moi :
Code:
def SetSDL(name, value):
   sdl = PtGetAgeSDL()
   sdl[name] = (value,)
Lyrositeur
Lyrositeur
Escaladeur
Escaladeur

Messages : 96
Date d'inscription : 03/07/2012
Age : 28
Localisation : Montréal, Canada

http://www.lyros.net

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Annabelle Lun 23 Juil - 3:40

Ce code ne fonctionne pas.

Ça me donne un message d'erreur. Je doute que cela m'aide en quoi que ce soit. Je veux pouvoir modifier un SDL sans quitter l'âge et l'appliquer à tous les gens présents également.
V@-Annabelle
V@-Annabelle
Modérateur
Modérateur

Messages : 340
Date d'inscription : 14/05/2010
Localisation : Canada

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  Lyrositeur Lun 23 Juil - 13:01

Hmm, ça fonctionne pour moi.
Tu dois l'utiliser ainsi: 'SetSDL("nb01FountainVis", 2)' (par exemple).
Lyrositeur
Lyrositeur
Escaladeur
Escaladeur

Messages : 96
Date d'inscription : 03/07/2012
Age : 28
Localisation : Montréal, Canada

http://www.lyros.net

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Michel Lun 23 Juil - 16:53

La commande proposée par Lyrositeur est correcte.
Pour ma part, dans un soucis de rapidité et afin d'éviter les frappes inutiles, je me suis fabriqué un script appelé Voir() qui gère les cas les plus courants et que j'améliore en fonction de mes tests.
Le script permet de placer ou d'enlever des objets SDL dans un âge, comme tu le souhaites dans ta question.
Voici le code :

Code:

def Voir(objet='',valeur=True,dico=True):
    #Pour fichiers SDL: True pour placer, False pour enlever, dico False : pour utiliser le nom tel quel
    sdl=PtGetAgeSDL()
    ageName = PtGetAgeName()
    print ageName
    if dico==True:
        objet=objet.lower()
        if ageName == "Neighborhood":
            #objets du quartier
            if objet == "beachball" or objet == "ballon" or objet == "plage" or objet == "b" :
              objet = "nb01BeachBallVis"
            elif objet == "garden" or objet == "tsogal" or objet == "delin" or objet == "lg" :
              objet = "nb01LinkBookEderToggle"
              livre=GetSDL(objet)
              if livre==0:
                  valeur=2
              elif livre==2:
                  valeur=3
              else:
                  valeur=2   
            elif objet == "happynewyear" or objet == "bonne annee" or objet == "ba":
              objet = "nb01HappyNewYearVis"
            elif objet == "camera" or objet == "video" or objet == "c":
              objet = "nb01WebCamVis"
            elif objet == "rat" or objet == "r":
              objet = "nb01RatCreatureVis"
            elif objet == "horloge" or objet == "clock" or objet == "h":
              objet = "nb01ClockVis"
            elif objet == "pancarte" or objet == "chevalet" or objet == "p":
              objet = "nb01BulletinBoardVis"
            elif objet == "teledahn" or objet == "livre teledahn" or objet == "t":
              objet = "nb01LinkBookTeledahnVis" 
            elif objet == "yeesha" or objet == "page" or objet == "y":
              objet = "nb01YeeshaPage07Vis"
            elif objet == "thanksgiving" or objet == "thanks" or objet == "tg":
              objet = "nb01ThanksgivingVis"
            elif objet == "lanternes" or objet == "lampions" or objet == "la":
              objet = "nb01LanternsVis"
            elif objet == "cones" or objet == "co":
              objet = "nb01ConesVis" 
            elif objet == "portes" or objet == "oeuf" or objet == "po":
              objet = "nb01PrivateRoomsOuterDoorEnabled" 
            elif objet == "ayhoheek" or objet == "jeu" or objet == "a": #valeur 2 pour un jeu fonctionnel, 1 pour table eteinte
              sdl['nb01Ayhoheek5Man1State']=(valeur,)
              objet = "nb01AyhoheekAccountingFunc"
            elif objet == "tapisserie" or objet == "etoffe" or objet == "ta":
              sdl['nb01JourneyCloth1Vis']=(valeur,)
              objet = "nb01JourneyCloth2Vis" 
            elif objet == "bateau" or objet == "boat" or objet == "bateau bahro" or objet == "bb":
              objet = "nb01BahroBoatsRun"
              sdl['nb01BahroBoatsEnabled']=(valeur,)
              sdl['nb01BahroBoatsChance']=(valeur,)
              sdl['nb01BahroBoatsProximity']=(valeur,)
            elif objet == "feu" or objet == "artifice" or objet == "feu artifice" or objet == "f":
              objet = "nb01FireworksOnBalcony"
              if valeur==1:
                  sdl['nb01HappyNewYearVis']=(valeur,)
              sdl['nb01FireworksOnBanner']=(valeur,)
              sdl['nb01FireworksOnFountain']=(valeur,)
            elif objet == "lumieres" or objet == "lumieres lac" or objet == "lumieres ville" or objet == "l":
              objet = "nb01LakeLightState"
              sdl['nb01CityLightsArchState']=(valeur,)
              sdl['nb01CityLightsConstruction01Vis']=(valeur,)
              sdl['nb01CityLightsConstruction02Vis']=(valeur,)
              sdl['nb01CityLightsConstruction03Vis']=(valeur,)
              sdl['nb01CityLightsConstruction04Vis']=(valeur,)
              sdl['nb01LigtsGreatZeroVis']=(valeur,)
              sdl['nb01CityLightsMoving01Vis']=(valeur,)
              sdl['nb01CityLightsMoving02Vis']=(valeur,)
              sdl['nb01CityLightsMoving03Vis']=(valeur,)
              sdl['nb01CityLightsHarborVis']=(valeur,)
            elif objet == "eau" or objet == "water" or objet == "e":
              objet = "nb01FountainWaterVis"
              sdl['nb01WaterfallVis']=(valeur,)
            elif objet == "lampes" or objet == "lampes quartier" or objet == "lumieres quartier" or objet == "lq":
              objet = "nb01FireMarbles1Vis"
              sdl['nb01FireMarbles2Vis']=(valeur,)
              sdl['nb01GardenLightsFunc']=(valeur,)
              sdl['nb01BlueLightOn']=(valeur,)
              sdl['nb01GreenLightOn']=(valeur,)
              sdl['nb01OrangeLightOn']=(valeur,)
              sdl['nb01GardenLightsVis']=(valeur,)
              sdl['nb01LanternsVis']=(valeur,)
              sdl['nb01LampOption01Vis']=(valeur,)
              sdl['nb01WaterfallTorchesVis']=(valeur,)
              sdl['nb01ResidenceAdditionsVis']=(valeur,)
            elif objet == "documents" or objet == "doc" or objet == "livres" or objet == "d":
              sdl['nb01KiNexusJournalVis']=(valeur,)
              sdl['nb01Poetry1JournalVis']=(valeur,)
              sdl['nb01LinkBookNexusVis']=(valeur,)
              sdl['nb01HoodInfoImagerVis']=(valeur,)
              sdl['nb01DRCImagerVis']=(valeur,)
              sdl['nb01PlayerImagerVis']=(valeur,)
              sdl['nb01YeeshaPage07Vis']=(valeur,)
              sdl['nb01DRCInfoBoardsVis']=(valeur,)
              sdl['nb01LinkBookGZVis']=(valeur,)
              sdl['nb01LinkBookTeledahnVis']=(valeur,)
              sdl['nb01LinkBookGarrisonVis']=(valeur,)
              sdl['nb01BahroStonePedestalVis']=(valeur,)
              sdl['nb01DniPaperVis']=(valeur,)
              sdl['nb01BulletinBoardVis']=(valeur,)
              objet = "nb01LinkBookEderToggle"
              if valeur==1:
                  valeur=2
            elif objet == "bahro" or objet == "bh":
              objet = "nb01BahroPedestalShoutRun" 
            elif objet == "barrieres" or objet == "travaux" or objet == "barricades" or objet == "tr":
              objet = "nb01CommunityAreaState"
              if valeur == 0:
                  valeur = 2
        elif ageName == "Personal":
            #objets du Relto
            pass
        elif ageName == "city":
            #objets de la ville
            if objet == "lightmeter" or objet == "luxmetre" or objet == "lm" :
              objet = "islmLakeLightMeterVis"
            elif objet == "annonceur" or objet == "advert" or objet == "an" :
              objet = "islmReaderBoardVis"
            elif objet == "tapisseries" or objet == "etoffes" or objet == "ta" :
              objet = "islmJourneyCloth05Vis"
              sdl['islmJourneyCloth01Vis']=(valeur,)
              sdl['islmJourneyCloth02Vis']=(valeur,)
              sdl['islmJourneyCloth03Vis']=(valeur,)
              sdl['islmJourneyCloth04Vis']=(valeur,)
            elif objet == "Teledahn" or objet == "Te":
              sdl['islmTeledahnLinkLibraryExteriorVis']=(valeur,)
              objet = 'islmTeledahnLinkCourtyardVis'
    if objet != "" :
        sdl[objet]=(valeur,)

Comme tu peux le voir, le code est assez long. Tout simplement car je crée, avant de lancer la commande sdl[] , un dictionnaire qui reprend ce que je veux voir apparaître ou disparaître dans différents âges. Ce dictionnaire évolue donc au fil du temps car je rajoute des objets d'autres âges et fur-et-à-mesure que mes test sont concluants.Very Happy
Actuellement, j'ai traité deux âges : le quartier et la ville. J'ai déjà préparé la section Relto mais encore rien mis dedans...

Comment utiliser ce script?
Je vais prendre un exemple. Imaginons que je veuille rendre visible les lampions du quartier.

C'est un cas qui est repris dans mon dictionnaire à la ligne elif objet == "lanternes" or objet == "lampions" or objet == "la":

Je dois juste taper Voir ("lanternes") ou voir ("lampions") ou tout simplement voir ("la") pour voir les lampions du quartier.
Si je veux les enlever je tape Voir ("lanternes",False)

Les mots que tu places dans ton dictionnaire sont des mots faciles à retenir. Tu y mets ce que tu veux et autant que tu veux simplement en rajoutant un or objet == "motquetuveuxenminuscules". La seule chose c'est qu'il n'y ait pas deux fois le même nom d'objet dans un même âge et qu'ils soient écrits en minuscules.
Lorsque tu appelles la commande Voir(), tu peux écrire les mots avec ou sans majuscule car le programme va de toute façon les transformer en minuscules avant de regarder s'ils sont repris dans ton dictionnaire.

Maintenant, lorsque je fais mes tests, les objets ne sont pas encore repris dans mon dictionnaire. Alors je dois utiliser le script en tapant le nom exact de l'objet sdl à voir ou à enlever. Par exemple, si je veux enlever la page du livre de Yeesha dans Descent, je tape :

Voir('dsntYeeshaPageMusicPlayerVis',False,False)

dsntYeeshaPageMusicPlayerVis est le nom exact de la page du livre de Yeesha qui place la boîte à musique dans notre Relto
Le premier False dit de l'enlever (True la replace)
Le second False dit que je n'utilise pas mon dictionnaire et que donc le mot tapé est le nom réel de l'objet.

Si le résultat me convient, je rajoute cela dans mon dictionnaire juste avant la ligne (en fin de script)
if objet != "" :
sdl[objet]=(valeur,)


comme ceci :

Code:


        elif ageName == "Descent":
            #objets de Descent
            if objet == "page" or objet == "musique" or objet == "pm" :
              objet = "dsntYeeshaPageMusicPlayerVis"

La prochaine fois que je voudrais voir apparaître cette page à Descent je n'aurai plus qu'à taper Voir('pm') pour la placer ou Voir('pm', False) pour l'enlever.

Je suppose que tu vas me demander de t'envoyer ce script pour ne pas devoir le retaper ?Very Happy . Je vais donc anticiper ta demande et te l'envoyer par mail...Laughing
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Annabelle Lun 23 Juil - 21:06

Oui STP Michel J'aimerais l'obtenir par mail.

J'espère que je pourrai le voir ce soir. Je ne suis pas certaine de conserver du courant toute la soirée... je vais préparer mon souper d'avance sinon...
V@-Annabelle
V@-Annabelle
Modérateur
Modérateur

Messages : 340
Date d'inscription : 14/05/2010
Localisation : Canada

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Annabelle Mar 24 Juil - 23:10

Il est vraiment super ton script Voir.py Michel Very Happy Very Happy Very Happy !

Quand j'essaie d'importer tes scripts du site du forum, ça ne marche jamais.

Vu que tu m'as envoyé ton script tel quel par mail, il fonctionne parfaitement...il faut tout de même que je lui applique une petite retouche --> Je sais que tu veux que ton nom apparaisse sur tes scripts, je transforme les 3 ou 4 lignes que tu donnes pour qu'elles deviennent des commentaires (elles passent de rouge à vert) sinon tes scripts ne fonctionnent pas.

Il faut que vous avez pris connaissance du script Voir.py, tu peux taper les valeurs de son dictionnaire dans la commande Voir.Voir("horloge",True,) et tu obtiens l'horloge en 1 sec. Les noms du dictionnaires peuvent être modifié mais Michel à quand même mis 3 choix pour chaque SDL et ses choix sont logiques. L'horloge s'appelle avec "horloge", les feux d'artifices s'appellent avec "feu", etc...
V@-Annabelle
V@-Annabelle
Modérateur
Modérateur

Messages : 340
Date d'inscription : 14/05/2010
Localisation : Canada

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Michel Mer 25 Juil - 14:24

Le problème du copier-coller à partir du forum c'est que l'indentation n'est pas toujours respectée. Or, dans Python, c'est justement l'indentation qui est importante.
Pour rappel, l'indentation c'est les blancs qui existent au début de chaque ligne afin qu'un bloc de commande soit cohérent. Par exemple si je tape :
Code:
 
if machin == "ok" :
chose = 0
truc = 1

Cela ne fonctionnera pas. Il va y avoir un message d'erreur, déjà au moment d'importer le module dans la console Python de PlClient.

Il est impératif de taper :

Code:

if machin == "ok":
chose = 0
truc = 1

Je décalle toutes les lignes qui appartiennent au bloc if machin de 4 vers la droite.

Maintenant concernant les commentaires dans un script.
Il y a deux manières d'écrire des commentaires. Soit en mettant le caractère # devant la ligne de commentaire soit en le mettant entre """ et """

Dans le premier cas, il est nécessaire de répéter chaque # en début de ligne, alors que dans l'autre cas, tu peux écrire plusieurs lignes de commentaires et terminer par """.
Dans le premier cas, le commentaire apparaît en vert dans plasmashop alors que dans le second il apparaît en rouge.

Alors je ne comprends pas pourquoi tu as dû mettre des # à la place des """ dans mon module voir.py. Chez moi cela fonctionne parfaitement. scratch

Voici le commentaire que j'ai mis dans ce module :

Code:
 
"""Scripts pour manipulation des objets sdl
Michel Lacoste
-----Juillet 2012------"""

Je place toujours des commentaires dans mes scripts afin de m'y retrouver plus tard si je dois faire des modifications et dans l'en-tête aussi pour savoir qui l'a écrit et à quelle date, ainsi, celui qui l'utilise sait à qui il doit s'adresser s'il ne comprend pas comment l' utiliser.
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Annabelle Mer 25 Juil - 22:25

Oui ça fonctionne finalement...

Je connaissais que la manière '#' d'écrire des commentaires.
V@-Annabelle
V@-Annabelle
Modérateur
Modérateur

Messages : 340
Date d'inscription : 14/05/2010
Localisation : Canada

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  V@-Michel Jeu 26 Juil - 16:18

L'avantage d'écrire un commentaire entre """ et """ dans une définition de fonction ou de classe c'est qu'il est possible de le lire à l'écran en tapant dans la console python :

print nomdeladéfinition.__doc__

Par exemple, si je définis une fonction et que je place un commentaire entre """ en-dessous comme ceci :

Code:
 
def essai():
"""Ceci est un test pour voir le commentaire"""

(suite des instructions)

et que je tape dans la console python :
>>> print essai.__doc__
J'aurai à l'écran :
>>>Ceci est un test pour voir le commentaire
V@-Michel
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Interragir avec les constantes du fichier SDL en temps réel Empty Re: Interragir avec les constantes du fichier SDL en temps réel

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum