annuncio

Comprimi
Ancora nessun annuncio.

[EASYUO] Recallare da runebook (semplice e breve)

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

  • [EASYUO] Recallare da runebook (semplice e breve)

    Chissà quanti script sono già stati postati sull'argomento!
    Io, però, non ne ho trovato nessuno che mi soddisfacesse. Cercavo una *semplice* sub da inserire nei miei script, ma ho trovato solo sproloqui (alcuni scritti un pò maluccio, ma del resto non studiamo tutti programmazione...).

    Così, me la son scritta da solo. Con *appena un pochino di matematica*, quante righe si possono risparmiare!!!

    codice:
    ; ARGOMENTI
    ; %1: RunebookID
    ; %2: Indice della runa (da 1 a 16)
    ; %3: Pulsante: recall, gate_travel, sacred_journey, drop_rune, set_default, use_scroll
    sub runebookClick ; runebookId, runeNumber, pulsante
        namespace push
        namespace local runebookClickNs
        ; apri il runebook
        set #lobjectid %1
        event macro 17    ; LastObject
        wait 10
    
        ; trova la pagina
        set !page ( ( %2 - 1 ) / 2 )                 ; numero di pagina (0-7)
        set !x ( #contposx + 140 + ( 35 * !page ) )  ; pulsante pagina (x)
        set !y ( #contposy + 195 )                   ; pulsante pagina (y) - costante
        click !x !y                                  ; clicca
        wait 10                                      ; attendi
    
        ; clicca il pulsante corretto
        if ( %2 % 2 ) = 1               ; se la pagina è dispari
            set !x ( #contposx + 140 )  ;   setta x di conseguenza
        else                            ; altrimenti
            set !x ( #contposx + 300 )  ;   setta x di conseguenza
    
        if %3 = recall
            set !y ( #contposy + 145 )
        if %3 = gate_travel
            set !y ( #contposy + 162 )
        if %3 = sacred_journey
            set !y ( #contposy + 180 )
        if %3 = drop_rune
            set !y ( #contposy + 118 )
        if %3 = use_scroll
        {
            set !y ( #contposy + 70 )
            set !x ( !x - 5 )
        }
        if %3 = set_default
        {
            set !y ( #contposy + 25 )
            if ( %2 % 2 ) = 1
                set !x ( #contposx + 165 )
            else
                set !x ( #contposx + 305 )
        }
    
        click !x !y
        namespace clear
        namespace pop
    return
    Ultima modifica di kusanagi97; 12-10-2008, 15:56. Motivo: Aggiornamento script

  • #2
    Perché usi variabili namespace senza dichiarare il namespace?

    codice:
    ; ARGOMENTI
    ; %1: RunebookID
    ; %2: Indice della runa (da 1 a 16)
    ; %3: Metodo (chivalry, magery). Magery è il metodo predefinito.
    sub runebookRecall ; runebookId, runeNumber, method
    [COLOR="Red"]namespace Push
    namespace unNomeCheTiGusta[/COLOR]
        ; apri il runebook
        set #lobjectid %1
        event macro 17    ; LastObject
        wait 10
    
        ; trova la pagina
        set !page ( ( %2 - 1 ) / 2 )                 ; numero di pagina (0-7)
        set !x ( #contposx + 140 + ( 35 * !page ) )  ; pulsante pagina (x)
        set !y ( #contposy + 195 )                   ; pulsante pagina (y) - costante
        click !x !y                                  ; clicca
        wait 10                                      ; attendi
    
        ; clicca il pulsante corretto
        if ( %2 % 2 ) = 1               ; se la pagina è dispari
            set !x ( #contposx + 140 )  ;   setta x di conseguenza
        else                            ; altrimenti
            set !x ( #contposx + 300 )  ;   setta x di conseguenza
    
        if %3 = chivalry                ; se il metodo è chivalry
            set !y ( #contposy + 180 )  ;   setta y di conseguenza
        else                            ; altrimenti usa magery
            set !y ( #contposy + 145 )  ;   e setta y di conseguenza
            
        click !x !y                     ; FATTO!
    [COLOR="Red"]namespace Clear
    namespace Pop[/COLOR]
    return
    In questo modo se qualcuno usa variabili con lo stesso nome delle tue non conflittano
    L'idea di base è buona, ma ti consiglio di dare un'occhio alla sub "waitforsysvars" che trovi negli script di boydon: quella ti evita malfunzionamenti dovuti a lag e ritardi nei gump, ritardi che in questo script tu non controlli e potrebbero farlo funzionare male.
    Ultima modifica di RayanStaff; 08-10-2008, 15:54.

    Commenta


    • #3
      ti consiglio rifarlo xchè così come è fatto è buono giusto per recallare a pressione di tasto, senza controlli vari rischieresti di far saltare tutto uno script per colpa di una sub fatta di fretta che non prevede colpi di lag, save e cleaning....

      Cmq vada se cerchi bene ne troverai di ottimi di script per il recall tempo fa ne trovai uno che gestiva tutti i tipi di recall (gate incluso), supportava il recall all' interno di un range di valori, in modo che andasse alla runa successiva se bloccata (riconosceva il fizz da skill, da interrupt o da location blocked); il random recalling...
      Una ****ta pazzesca e sopprattuto con la massima stabilità...

      Commenta


      • #4
        Grazie per la correzione sul namespace. Aggiorno subito.

        Per quanto riguarda le funzionalità extra, non rientrano nello scopo della sub. Questa sub rappresenta solo l'operazione di attivare il runebook. Eventuali tentativi di retry sono di competenza dello scripter, che li aggiunge solo se lo ritiene necessario.

        Nel mio caso, ad esempio, l'architettura per il retry delle azioni era già disponibile, così come una sub per verificare la mia posizione. Tutto ciò che mi serviva era "clikkare", e cercavo qualcosa che mi risparmiasse di calcolarmi a mano le posizioni dei click.

        Al più, sarebbe interessante aggiungere una "return #true" se il recall riesce ed una "return #false" se il recall fallisce. Però dovrebbe essere qualcosa di semplice e rapido (controllare se le #charpos cambiano?).

        Edit: in effetti sarebbe giusto anche aggiungere la possibilità di clikkare sui pulsanti di "gate travel", "scroll recall", "drop rune", "set default". A questo modo la sub avrebbe ancora più senso. Tuttavia, mi è seccato cercare le posizioni dei click... prometto di farlo un giorno o l'altro...

        Ri-edit: random recall
        codice:
        set %randomNumber ( #random % 16 ) + 1   ; un altro pò di matematica...
        gosub runeBookRecall %runebookId %randomNumber
        Più facile di così...
        Ultima modifica di kusanagi97; 09-10-2008, 00:31.

        Commenta


        • #5
          Il flizz lo detecti facilmente tramite scanjournal.
          Per il detect di save e clean ci stanno le sub di boydon ("checkforworldsave") che trovi in fondo al bodfiller.

          Commenta


          • #6
            Scanjournal non riesco ancora ad usarlo correttamente... magari è la volta che imparo.

            Nel frattempo, mi confermi che "namespace unNomeCheTiGusta" dovrebbe invece essere "namespace local unNomeCheTiGusta"?
            Posto la segnalazione perché se questo errore sfugge (siccome EasyUO non segnala gli errori di compilazione), potrebbe fare danni quando meno te lo aspetti. Quindi non voglio dimenticarmene.

            Commenta


            • #7
              namspace local: local è già il nome del namespace, è scorretto mettere 2 nomi.
              Il namespace identifica uno scope delle variabili, cioè il loro spazio di visibilità.
              Grossomodo funziona così:
              namespace push salva il namespace attivo al momento della chiamata alla sub;
              namespace NOME definisce un nuovo spazio di visibilità: le variabili namespace dichiarate lì dentro (quelle col !) sono visibili solo in quel namespace.
              namespace clear "chiude" il namespace.
              namespace pop ripristina il namespace che avevi salvato in precedenza col push (la logica è la stessa dei metodi push e pop delle code fifo e lifo).

              Commenta


              • #8
                Stiamo andando un pò OT, cmq mi riferivo a questo:
                NameSpace local - Wiki

                Qui dice che c'è differenza tra "namespace local {nome}" (valido solo all'interno dello script) e "namespace global {nome}". Se andiamo troppo OT, magari apro un topic apposito. Cmq preferisco esplicitare il "local": magari senza funziona lo stesso, ma meglio andare sul sicuro...
                Ultima modifica di kusanagi97; 09-10-2008, 10:01.

                Commenta


                • #9
                  Aggiornato lo script.

                  - Aggiunto il supporto per tutti i tasti del runebook (tranne che per la prima pagina, ma prometto di farlo un'altra volta - tra l'altro le scroll si possono utilizzare anche dai pulsanti delle pagine estese)
                  - Cambiato il nome in "runebookClick", per chiarire il fatto che l'unico scopo della sub è clikkare nel runebook, senza ulteriori verifiche.

                  Non so se questo script servirà mai a qualcuno... intanto io lo posto.

                  Commenta

                  Sto operando...
                  X