annuncio

Comprimi
Ancora nessun annuncio.

[EASYUO-HELP] Spiegazioni su alcune cose...

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • [EASYUO-HELP] Spiegazioni su alcune cose...

    Avrei bisogno di una mano riguardo queste cosuccie

    1) Come si può far muovere il pg di un tile, in una determinata direzione? Ovvero qual'è la sintassi da inserire per far spostare il mio pg di un tile rispetto alle coordinate attuali?

    2) E' possibile far terminare uno script dopo tot tempo? Ho visto che il timer, per es. quello Drael (ottimo, non c'è che dire), mi stoppa lo script e aspetta lo scadere del tempo, io invece vorrei far terminare lo script dopo tot tempo, ma durante il quale continui a funzionare.. si può?

    3) a cosa serve l'operatore array? ovvero il simbolo "." ? Ho letto la guida di Vash, ma non ne sono riuscito a cogliere il senso, ma ho visto che ha massima priorità ed è molto usato.. Se me lo spiegate, anche con esempi, mi fate un fevore!

    Grazie, so di essere molto nubbio per ora ( ) ma mi piacerebbe molto imparare!

    :*

  • #2
    1) per poter muovere il pg di un tile hai 2 possibilità:
    1a: usare event macro con i valori riportati in questa tabella:
    Movement
    Param 1 Param 2 Param 3 Description
    5 0 Walk North West
    5 1 Walk North
    5 2 Walk North East
    5 3 Walk East
    5 4 Walk South East
    5 5 Walk South
    5 6 Walk South West
    5 7 Walk West
    Ad esempio per muovere il pg a nord di un tile:
    event macro 5 1
    1b: calcolare l'attuale posizione con queste 2 linee:
    Set %X #CHARPOSX
    Set %Y #CHARPOSY
    calcolare dove lo vuoi mandare, ad esempio:
    Set %NX %X
    Set %NY %Y - 1
    e poi usare o l'istruzione 'move' o 'event PathFind' con le nuove coordinate.


    2) per interrompere lo script dopo un tot di tempo:
    all'inizio dello script inserisci una variabile tipo:
    Set %StopScript #scnt + QUANTI_SECONDI_VUOI_CHE_DURI_LO_SCRIPT
    e poi richiami spesso, all'interno del tuo script, una sub del tipo:

    sub Controlla_Stop
    if #scnt > %StopScript
    {
    display OK STOP SCRIPT
    halt
    }
    return


    3) il '.' è un operatore molto potente. Si può usare sia per creare matrici come nel seguente caso:
    Set %Matrice1 Questo
    Set %Matrice2 è
    Set %Matrice3 un
    Set %Matrice4 piccolo
    Set %Matrice5 esempio

    for %f 1 5
    {
    display ok %Matrice . %f
    }

    In pratica l'esempio sopra si basa tutto su %Matrice . %f.
    Nella prima iterazione del for, dove %f è uguale a 1, avrai
    display ok %Matrice1
    Perchè %f è uguale a 1.
    Nella seconda iterazione del for, dove %f è uguale a 2, avrai
    display ok %Matrice2
    Perchè %f è uguale a 2.
    etc etc


    Fin qui credo sia chiaro, o almeno spero, ma in easyuo l'operatore '.' è ben più potente perchè permette di definire intere variabili in esecuzione. Ad esempio:

    ;definisco due variabili
    Set %VersoGatto Miaaaaooo
    Set %VersoCane Bauuuuuu

    ;chiamo 2 volte la solita sub ma con risultati completamente differenti
    ;la priam volta sentirò il verso del gatto
    gosub Fammi_Sentire_il_verso Gatto
    ;la seconda il verso del cane
    gosub Fammi_Sentire_il_verso Cane
    Halt

    sub Fammi_Sentire_il_verso
    display ok %Verso . %1
    return

    Adesso spieghiamo la sub:
    In %1 ho il parametro passato che nel primo caso è 'Gatto' e nel secondo 'Cane'.
    Quindi scrivendo %Verso . %1 ho nel primo caso '%VersoGatto' e nel secondo '%VersoCane'.

    Detto così non sembra una sintassi molto potente ma, credimi, questo modo di 'costruire' le variabili in esecuzione è una vera forza.

    Ciauz
    Ultima modifica di Scorna; 28-06-2007, 01:02.
    Bod, Heartwood, Lumber, Elenca oggetti e Miner script per Easyuo.

    Commenta


    • #3
      Spiegazione cristallina.
      A titolo di info ti aggiungo solo:
      #scnt e #scnt2 ti danno (la prima in secondi, la seconda in decimi) il tempo trascorso dall'avvio del sistema.
      L'operatore '.', a differenza della virgola, lascia invariato quello che c'è alla sua sinistra, mentre implementa la variabile che ha a destra, cioè la sostituisce col valore che contiene.
      Per questo l'operatore punto viene usato per creare gli array (in pratica il contenuto della variabile %i in ad es %array . %i ha la stessa funzione di ad es di i in "int vector[i]" del C).
      Originariamente inviato da Amdir
      Ray ti setto spammer cosi' non si vede la firma e mezzo shard mi viene a piangere su icq

      Amdir
      Originariamente inviato da Aka
      (17:59:58) Salvo: aka >>>>>>>> OSI
      Originariamente inviato da Prof. Pala
      "Prima che la situazione si faccia imbarazzante, è meglio se si ripresenta al prossimo appello..."
      http://www.deshack.org/

      Commenta


      • #4
        Grazie, che tesori

        Ho quasi afferato tutto, solo "array" mi fa un pò paura, ma penso che con il tempo imparerò

        Però, dato che siete così preparati e carini, vorrei approfittare ancora di voi:

        - una piccola lezioncina sull'operatore "for", non capisco bene il ciclo iterativo ( se così si chiama)

        - non riesco a usare a mio favore ciò che è scritto nel journal.. mi potete fare un esempio, e dirmi come il preciso utilizzo di scanjournal, deletejournal e com'è la giusta sintassi per trovare qualcosa scritto dentro il journal?

        Grazie :*

        Commenta


        • #5
          Il for funziona così:

          codice:
          for %i 1 7
          {
          
          }
          %i è una variabile qulaunque che fa da contatore, puoi chiamarla come vuoi.
          1 7 vuol dire che fai 7 iterazioni del ciclo. Al posto dei numeri puoi mettere anke 2 variabili, stando attento che contengano numeri.

          Per il journal inizia facendo così.
          codice:
          scanjournal #JINDEX
          ti scannerizza l'ultima riga del journal, il cui contenuto puoi andarlo a leggere nella variabile #JOURNAL.
          Se vuoi leggere un certo intervallo di righe lo fai con un ciclo for o while.
          Altrmenti puoi fare così (io nn lo faccio perché nn mi piace usare il delete, cmq si può fare):

          codice:
          deletejournal
          _loop:
          scanJournal 1
          if you_are_attaching in #journal
          {
          gosub Attack 
          deleteJournal
          }
          goto _loop
          Originariamente inviato da Amdir
          Ray ti setto spammer cosi' non si vede la firma e mezzo shard mi viene a piangere su icq

          Amdir
          Originariamente inviato da Aka
          (17:59:58) Salvo: aka >>>>>>>> OSI
          Originariamente inviato da Prof. Pala
          "Prima che la situazione si faccia imbarazzante, è meglio se si ripresenta al prossimo appello..."
          http://www.deshack.org/

          Commenta


          • #6
            Spiegazione cristallina.
            A titolo di info ti aggiungo solo:
            Il 'For' è la base di ogni iterazione ciclica, ovvero tutti le altre iterazioni, come nel c, possono essere tradotte in un for.
            A titolo di esempio ti riporto il seguente script:

            codice:
            for %aspetto_un_save 1 2
            {
               scanjournal #JINDEX
               if The_world_is_saving in #journal
               {
                  display OK Ho trovato il Save
                  set %aspetto_un_save 2
               }
               else
               {
                  set %aspetto_un_save 1
               }
            } 
            halt
            A prima vista il codice sopra potrebbe sembrare un normale ciclo di iterazione ma, se leggi bene il codice, esso 'blocca' l'esecuzione fino a che non trova un salvataggio.
            Bod, Heartwood, Lumber, Elenca oggetti e Miner script per Easyuo.

            Commenta


            • #7
              Originariamente inviato da Scorna Visualizza il messaggio
              Spiegazione cristallina.
              A titolo di info ti aggiungo solo:
              Il 'For' è la base di ogni iterazione ciclica, ovvero tutti le altre iterazioni, come nel c, possono essere tradotte in un for.
              A titolo di esempio ti riporto il seguente script:

              codice:
              for %aspetto_un_save 1 2
              {
                 scanjournal #JINDEX
                 if The_world_is_saving in #journal
                 {
                    display OK Ho trovato il Save
                    set %aspetto_un_save 2
                 }
                 else
                 {
                    set %aspetto_un_save 1
                 }
              } 
              halt
              A prima vista il codice sopra potrebbe sembrare un normale ciclo di iterazione ma, se leggi bene il codice, esso 'blocca' l'esecuzione fino a che non trova un salvataggio.

              Io questi tipi di loop preferisco farli con una label:

              codice:
              _loop:
              
              
              goto _loop
              Per una questione mia di leggibilità del codice, nulla +.
              Originariamente inviato da Amdir
              Ray ti setto spammer cosi' non si vede la firma e mezzo shard mi viene a piangere su icq

              Amdir
              Originariamente inviato da Aka
              (17:59:58) Salvo: aka >>>>>>>> OSI
              Originariamente inviato da Prof. Pala
              "Prima che la situazione si faccia imbarazzante, è meglio se si ripresenta al prossimo appello..."
              http://www.deshack.org/

              Commenta


              • #8
                Grazie, mi state insegnado un sacco di cosine

                Comunque, per vedere se ho capito, vi posto un aggiunta per lo script mining che ho fatto io: vorrei che il pg lasciasse a terra i minerali se non può muoversi (es. dopo lag, in cu da 5-6 picconate di seguito e alza circa 60 stones..)

                codice:
                Sub Check weight
                weight:
                scanjournal #JINDEX
                if Thou_are_too in #journal
                {
                  finditem DWJ C_ , #backpackid
                  if #findkind <> -1
                  {
                     Exevent Drag #findid #findstack
                     wait 10
                     Exevent Dropg #charposx #charposy #charposz
                     wait 10
                     return
                  {
                  goto weight
                }
                return
                può andare o è uno schifo?
                Ultima modifica di Duku; 30-06-2007, 22:12.

                Commenta


                • #9
                  Originariamente inviato da Batista Visualizza il messaggio

                  Io questi tipi di loop preferisco farli con una label:

                  codice:
                  _loop:
                  
                  
                  goto _loop
                  Per una questione mia di leggibilità del codice, nulla +.
                  Cmq esiste il comando
                  codice:
                  while (condizione)
                  {
                  comandi
                  }
                  Invece della sintassi etichetta-goto,che rallenta notevolmente lo script =)

                  Commenta


                  • #10
                    anke io che nn ci ho mai capito nulla adesso mi sembra + chiaro.

                    una domanda gnubba... quale sarebbe la guida di vash? qualcuno me la può linkare?

                    Commenta

                    Sto operando...
                    X