annuncio

Comprimi
Ancora nessun annuncio.

[Python] PyziUO - nuovo Script Engine per la uo.dll

Comprimi
Questa è una discussione evidenziata.
X
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #16
    Originariamente inviato da seel82 Visualizza il messaggio
    Ma di che parli?
    Riescono a rosikare anche per un intera libreria aperta a tutti gli utenti del mondo


    Originariamente inviato da MaRghEriTa DeVil
    Scusa il disturbo,ho chiesto a capo nel frattempo,volevo semplicemente poter leggere il discord uod
    ma non poter in nessun modo scrivere in general,soffro di una malattia kashmir è la decima volta che ci provo ma non riesco proprio a non rispondere...
    ...Basterebbe essere bigmouth a vita , mi faresti un enorme favore...Vorrei pensare solo a giocare ,e lasciare le persone parlare
    Qualche tempo dopo...
    Originariamente inviato da MaRghEriTa DeVil
    @KasHmiR
    Non me ne frega niente
    Toglimelo
    Io ho chiesto di metterlo, io ho diritto di riaverlo quando e come voglio
    Chi lo controlla questo patetico esaltato?
    Grazie marghe,sei meglio di euge:


    Haldir Di Gondor

    Commenta


    • #17
      Ciao Cookie, volevo farti i complimenti per il gran lavoro e contributo.
      Ho delle domande, hai scritto che questo wrapper è di più alto livello rispetto ad easy uo, questo cosa implica? Mi spiego meglio gli script scritti con questo metodo sono "più lontani" rispetto a quelli in easy uo?
      Ovvero, dato che le istruzioni di alto livello vengono sempre poi tradotte in quelle di più basso livello, ti chiedo se il più alto livello di questo tool, corrisponde ad affrontare "più gradini" ad uno script per arrivare poi alle azioni da svolgere nel client.
      Grazie ancora, un saluto.


      Originariamente inviato da effe15
      Che le tenebre e le fiamme accompagnino il tuo cammino signore degli inferi!

      I Custodi.


      Commenta


      • #18
        Originariamente inviato da Shun Visualizza il messaggio
        Ciao Cookie, volevo farti i complimenti per il gran lavoro e contributo.
        Ho delle domande, hai scritto che questo wrapper è di più alto livello rispetto ad easy uo, questo cosa implica? Mi spiego meglio gli script scritti con questo metodo sono "più lontani" rispetto a quelli in easy uo?
        Ovvero, dato che le istruzioni di alto livello vengono sempre poi tradotte in quelle di più basso livello, ti chiedo se il più alto livello di questo tool, corrisponde ad affrontare "più gradini" ad uno script per arrivare poi alle azioni da svolgere nel client.
        Grazie ancora, un saluto.
        Alto livello perché è più user friendly. Inoltre alcune cose che su easyuo devono essere create dall'utente sono di base ormai in tutti i linguaggi di programmazione "moderni", come lo split delle stringhe, le liste e i dizionari. Per fare un esempio semplice, su EasyUO una lista di oggetti è una stringa infinita di codici separati da underscore

        EasyUO

        codice:
        set %doors WOC_VOC_GPC_FPC_IPC_HPC_CPC_BPC_EPC_DPC_
        C#

        codice:
        List<string> doors = new List<string> { "WOC", "VOC, "GPC", "FPC", "IPC", "HPC", "CPC", "BPC", "EPC", "DPC" };
        Python

        codice:
        doors = ["WOC", "VOC, "GPC", "FPC", "IPC", "HPC", "CPC", "BPC", "EPC", "DPC"]
        Per lo Split:

        EasyUO

        String Split

        Python

        codice:
        res = "this|is|an|example".split('|')
        Una stringa definita dall'utente con dentro delle variabili deve seguire un iter di costruzione particolare

        EasyUO

        codice:
        set %msg La , #spc , tua , #spc , forza , #spc , è , #spc , #str , .
        Python

        codice:
        msg = 'La tua forza è ' + str(UO.Str) + '.'
        oppure

        codice:
        msg = 'La tua forza è %d.' % UO.Str
        oppure

        codice:
        msg = 'La tua forza è {0}.'.format(UO.Str)

        Commenta


        • #19
          Originariamente inviato da Shun Visualizza il messaggio
          Ciao Cookie, volevo farti i complimenti per il gran lavoro e contributo.
          Ciao,
          mi aggiungo anch'io ai complimenti, bel lavoro

          Tra l'altro, come tu stesso dici, tanto PyziUO quanto Razor Enhanced utilizzano lo stesso engine IronPython: quindi - benchè immagino che gli script non saranno completamente intersambiabili tra i due sistemi... - penso che la maggior parte delle informazioni utili potranno essere condivise.

          Buon game davvero!
          Magneto
          sigpic

          Commenta


          • #20
            Versione 0.3.0.6

            Ho fatto qualche modifica:
            • ora si può usare UO.Cast(spell) con il nome della spell invece dell'indice
            • si può cercare singoli item (UO.FindItem) e la lista totale degli item in un contenitore (UO.FindItems) con un array di tipi/seriali oltre che con il singolo id
            • ho tolto l'argomento per cercare solo item visibili o anche invisibili, visto che pare non servisse a nulla o non funzionasse (??)
            • ho aggiunto anche un modo per puntare la dll su un altro client nel caso ce ne fosse più di uno ma non l'ho ancora ben testato
            • ora si può scrivere le EventMacro con un solo argomento nel caso il secondo fosse 0
            • ora UO.LHandID e UO.RHandID sono settabili da script (prima per distrazione li avevo lasciati read-only)


            Esempio dell'array di UO.FindItem(s):

            codice:
            import clr
            clr.AddReference('System.Windows.Forms')
            from System import Array
            humantypes = Array[int]([0x190, 0x191])
            humans = UO.FindItems(humantypes, 0)
            if not humans is None:
                 UO.HeadMsg("Ci sono {0} pg/npc umani nei dintorni".format(len(humans)), 50)
            Ultima modifica di CookieLover; 24-06-2017, 22:15.

            Commenta


            • #21
              Versione 0.3.0.7

              Modifiche:
              • aggiunto il comando UO.IgnoreItem(serial o item)
              • aggiunto il comando UO.ClearIgnoreList()
              • cambiata la funzionalità di UO.FindItem, non esiste più UO.FindItems (vedi sotto)
              • aggiunto il comando UO.FindType(type / array di types, container)
              • sto testando la questione UO.TileInit, UO.TileCnt, UO.TileGet
              • cambiata la uo.dll per supportare i client fino al 7.0.57.1, risolve anche il bug del UO.CliLang


              UO.FindItem / UO.FindType

              UO.FindItem

              Argomenti: serial [, container] (facoltativo)
              Cerca il singolo item partendo dal serial e riporta l'oggetto con le sue caratteristiche (ID, Type, Kind, X, Y, Z, Stack, Rep, Col).

              UO.FindType

              Argomenti: type o array di types [, container] (facoltativo)
              Cerca tutti gli items con quel/quei type(s) e riporta un generatore (una specie di lista).

              UO.IgnoreItem / UO.ClearIgnoreList

              UO.IgnoreItem

              Argomenti: serial / item
              Permette di ignorare un item, ovvero non trovarlo con UO.FindItem/UO.FindType.
              (La lista si resetta in automatico ad ogni istanza.)

              UO.ClearIgnoreList

              Argomenti: N/A
              Pulisce la lista degli item ignorati.


              Script per conoscere le proprie stats/res base senza undressare
              codice:
              totalvalue = {
                  'Strength Bonus' : 0, 
                  'Dexterity Bonus' : 0,
                  'Intelligence Bonus' : 0
                  }
              
              Hue = 80
              
              UO.OpenPaperdoll()
              UO.Wait(20)
              
              items = UO.FindType(0, UO.ContID)
              
              for itm in items:
                  if itm is None: continue
                  props = UO.GetPropList(itm.ID)
                  UO.Wait(10)
                  if props is None: continue
                      
                  for k,v in totalvalue.iteritems():
                      if k in props.Keys:
                          totalvalue[k] += int(props[k])
              
              s = 'Strength = {0}'.format(UO.Str - totalvalue['Strength Bonus'])
              d = 'Dexterity = {0}'.format(UO.Dex - totalvalue['Dexterity Bonus'])
              i = 'Intelligence = {0}'.format(UO.Int - totalvalue['Intelligence Bonus'])
              res = ['Energy Resist', 'Poison Resist', 'Cold Resist', 'Fire Resist',
                     'Physical Resist']
                     
              ResSpell = UO.GetSkill("Resisting Spells").Real
              resval = 0
              if 445 <= ResSpell < 550:
                  resval = 5
              elif ResSpell < 700:
                  resval = 10
              elif ResSpell < 850:
                  resval = 20
              elif ResSpell < 1000:
                  resval = 30
              elif ResSpell < 1100:
                  resval = 40
              elif ResSpell < 1200:
                  resval = 42
              elif ResSpell == 1200:
                  resval = 44
                  
              UO.SysMessage('======== Char Base Props ========', Hue)
              for stat in [s,d,i]:
                  UO.SysMessage(stat, Hue)
              for r in res:
                  UO.SysMessage('{0} = {1}'.format(r, resval), Hue)
              UO.SysMessage('===============================', Hue)
              Ultima modifica di CookieLover; 01-07-2017, 05:05.

              Commenta


              • #22
                Ho fixato un bug su UO.Distance, cercava il type al posto del serial. La versione è la stessa ma l'ho ricompilato.

                Commenta


                • #23
                  Versione 0.3.0.8

                  Ho modificato delle funzionalità perché mi sono accorto che non erano il massimo mentre scrivevo la documentazione.

                  Commenta


                  • #24
                    Originariamente inviato da CookieLover Visualizza il messaggio

                    PyziUO è un wrapper in C# della uo.dll (gestita e aggiornata da Cheffe) che è alla base di programmi come EasyUO e OpenEuo.
                    Accetta e interpreta scripts in IronPython (come Razor Enhanced), che è una versione di Python 2 integrata nell'ambiente .NET.

                    Nel pacchetto in download sono già presenti degli script di esempio.

                    Non li trovo XD

                    Commenta


                    • #25
                      Li ho tolti perché erano obsoleti
                      Ultima modifica di CookieLover; 09-07-2017, 05:55.

                      Commenta


                      • #26
                        A me nn parte.o meglio Nn mi fa partire gli script.
                        icq: 686383680


                        SuB TNT [OF]

                        Sensei SuB [IRA]

                        HyPNoTiCa [OF]
                        SuBsTaNzA [OF]
                        Article [NeT] - [ADE]

                        Commenta


                        • #27
                          Versione 0.3.2.0


                          Differenze da quella vecchia:
                          • UO.FindType ora riporta un solo item, per avere una lista ci sono UO.FindInCont e UO.FindOnGround.
                          • UO.InJournal, UO.TileInit, UO.TileCnt e UO.TileGet ora funzionano (per tile, come per easyuo c'è bisogno dei file MUL)


                          Ho caricato degli script di esempio su tile, journal e findincont.

                          Salvata la documentazione e aggiunti segnalibri.

                          Ultima modifica di CookieLover; 12-09-2017, 13:19.

                          Commenta


                          • #28
                            gj

                            Commenta


                            • #29
                              ciao, potresti sistemare l'archivio? Non riesco ad aprirlo.

                              Commenta


                              • #30
                                Originariamente inviato da propano Visualizza il messaggio
                                ciao, potresti sistemare l'archivio? Non riesco ad aprirlo.
                                È in rar

                                Commenta

                                Sto operando...
                                X