domenica 10 settembre 2017

AC Tool guide, la guida per AC Tool – tutorial parte seconda

Ho trovato questa guida su AC Tool in inglese, mi sembra fatta molto bene, quindi ho deciso di tradurla tutta.

Come ho già scritto in questo post, AC Tool è utile per automatizzare svariate, e magari noiose, operazioni che altrimenti si farebbero con tastiera e mouse.

Questa guida quindi si propone di aiutare nell’uso di AC Tool tutte quelle persone che ne conoscono le potenzialità ma non sanno come utilizzarlo.

Continua da questo post.

I comandi ‘If’ ed ‘Else’

If ed else sono utili per impostare dei comandi a seconda del risultato che produce lo script. Praticamente un vero/falso dove “if” è il “vero” mentre l’ “else” è il falso. Cioè se l’equazione “if” è soddisfatta viene automaticamente eseguito il comando seguente all’if stesso, altrimenti seguirà il comando “else” che comanderà solo se l’equazione “if” non è stata soddisfatta.

Vediamo un esempio:

Constants
k1 = h
k2 = g
d1 = 1000
d2 = 500
End
SetActiveWindow Untitled – Notepad
Loop 1
Keys $k1
If d1 < d2
Keys $k1
Else
Keys $k2
End
End

Spegazione passo-passo:

Constants

k1 = h

k2 = g

d1 = 1000

d2 = 500

End


SetActiveWindow Blocco note

Loop 1

Keys $k1

If $d1 < $d2 //Se il valore di $d1 è minore di $d2….
Keys $k1 //… viene premuto il tasto collegato alla variabile $k1
Else //Altrimenti…
Keys $k2 //… viene premuto il tasto collegato alla variabile $k2
End //termina l’if
End //termina lo script

Comandare il mouse

Vediamo i comandi per simulare l’utilizzo del mouse:
DrayTo X, Y – Dopo aver fatto click trascina il mouse in un altro punto dello schermo, utile ad esempio per una selezione multipla.

LeftClick – Schiaccia il tasto sinistro del mouse

LeftMouseDown – Schiaccia il tasto sinistro del mouse e lo tiene premuto

LeftMouseUp – Rilascia il tasto sinistro del mouse

DoubleClick – Esegue un doppio click con il tasto sinistro

MousePos X, Y – Sposta il mouse alle coordinate specificate (X asse orizzontale, Y asse verticale)

MouseIDItem X, Y – Identifica l’item sul quale è posizionato il mouse (Creato per il gioco Asheron’s Call, non è detto funzioni anche in altri giochi)

RightClick – Schiaccia il tasto destro del mouse

RightMouseDown – Schiaccia il tasto destro del mouse e lo tiene premuto

RightMouseUp – Rilascia il tasto destro del mouse

*IMPORTANTE*

Per trovare le coordinate di una determinata posizione del mouse è sufficiente premere CTRL-M quando il mouse è nella posizione desiderata. Le coordinate X e Y appariranno nello script.


Vediamo quindi uno script che muova il mouse e che usi tutte le funzioni del mouse

Constants
k1 = h
k2 = g
d1 = 1000
d2 = 500
End
SetActiveWindow Blocco note //Sposta la finestra nell’angolo in alto a sinistra
Loop 1
MousePos 16, 58
Keydown $k1 5 sec
Delay $d2
MousePos 596, 58
Delay $d2
LeftMouseDown
Delay $d2
DragTo 16, 58
Delay $d2
MousePos 30, 58
Delay $d2
RightClick
Delay $d2
MousePos 88, 102
Delay $d2
RightClick
Delay $d2
Loop 5
Keys {RETURN}
End
MousePos 16, 143
Delay $d2
RightClick
Delay $d2
MousePos 68, 223
Delay $d2
LeftClick
End

Lo scirpt sembra complicato ma non lo è: in pratica preme la lettera “h” per 5 secondi, la taglia e la incolla.

La funzione Compute

Questa funzione è utile per eseguire semplici calcoli, tuttavia può essere utile in tantissime occasioni.

Quando si utilizza la funzione compute è meglio impostare un valore di appoggio temp=0 che crea appunto un valore temporaneo utile all’inizio di determinate funzioni.

Vediamo lo script:

Constants
k1 = h
k2 = g
d1 = 1000
d2 = 500
Temp = 0
Temp2 = 0
End
SetActiveWindow Untitled – Notepad
Loop 1
If $d1 < 501
Compute $d1 = $Temp
Keys $k1
Else Compute $d2 = $Temp2
Keys $k2
End
End

Vediamolo passo-passo:
Constants

k1 = h

k2 = g

d1 = 1000

d2 = 500

Temp = 0
//Definisce il primo valore temporaneo

Temp2 = 0
//Definisce il secondo valore temporaneo

End


SetActiveWindow Blocco note

Loop 1

If $d1 > 501
//Se il valore della variabile $d1 è maggiore di 501…..
Compute $d1 = $Temp //… modifica il valore di $temp nell’esatto valore di $d1
Keys $k1 //… e schiaccia il tasto associato a $k1
Else Compute $d2 = $Temp2 //… altrimenti, se il valore di $d1 fosse stato minore di 501, avrebbe cambiato il valore di $temp2 con il valore di $d2
Keys $k2 //… successivamente avrebbe premuto il tasto associato a $k2
End

End


Ancora un esempio di questa funzione, lo SmartBot per selezionare un personaggio:

Constants

Character = 2

CharacterX = 258

CharacterXOffset = 124

CharacterY = 371

Temp = 0

Temp2 = 0

End


Procedure SelectCharacter

If $Character = 1

Compute Temp = $Character
//Temp diventa uguale ad 1 se $Character è uguale a 1

Else

Compute Temp = $Character * $CharXOffset
//se $Character ha un qualsiasi valora diverso da , viene moltiplicato il valore di $Character per $CharXOffset (distanza tra i personaggi) , ed il valore risultante con il risultato

End

Compute Temp = $Temp + $CharacterX
//Somma il valore di $Temp con il valore di $CharacterX e con il risultato crea il nuovo valore di Temp

MousePos $Temp, $CharacterY
//Sposta il mouse alle coordinate X,Y specificate: il valore X è il valore di Temp, il valore di Y è il valore di CharacterY

End


SetActiveWindow MapleStory

Call SelectCharacter
//Avvia la procedura SelectCharacter

End
//Potrebbe sembrare uno script complicato ma basta leggerlo con attenzione per capirlo perfettamente

Leggettura della memoria

Questo script è un pochino complicato…. vediamolo assieme:

Constants

MaxPeople = 0

NumberPeople = 0

PeoplePointer = 0

Temp = 0

End

Procedure PeopleTest

ReadMemory PeoplePointer = 0077F60C
//valore da aggiornare in base all’ultima versione del gioco

Compute PeoplePointer = $PeoplePointer + 24

DecToHex PeoplePointer = $PeoplePointer

ReadMemory NumberPeople = $PeoplePointer

If $NumberPeople > $MaxPeople

Call ChangeChannel

End

End


Procedure ChangeChannel

Keys {ESC}

Delay 100

Keys {RETURN}

Delay 100

Keys {RIGHT}

Delay 100

Keys {RETURN}

Delay 5000

End


SetActiveWindow MapleStory

While 1=1

Call PeopleTest

EndLets break it down

Vediamo il codice passo-passo:
Constants

MaxPeople = 0
//Massimo numero di personaggi sulla mappa

NumberPeople = 0
//Minimo numero di personaggi sulla mappa

PeoplePointer = 0
//Lasciare il valore a zero oppure impostarne uno differente

Temp = 0
//valore temporaneo

End


Procedure PeopleTest

ReadMemory PeoplePointer = 0077F60C
//Imposta l’indirizzo di memoria usato dal gioco (dovrà essere aggiornato ad ogni aggiornamento del gioco)

Compute PeoplePointer = $PeoplePointer + 24
//24 è il puntatore esadecimale nel formato decimale

DecToHex PeoplePointer = $PeoplePointer
//trasforma il valore decimale in esadecimale

ReadMemory NumberPeople = $PeoplePointer
//assegna il valore PeoplePointer a Number People

If $NumberPeople > $MaxPeople
//se NumberPeople è + grande di MaxPeople allora…

Call ChangeChannel
//cambia canale chiamando l’omonima procedura

End

End


Procedure ChangeChannel //procedura x cambiare canale

Keys {ESC}

Delay 100

Keys {RETURN}

Delay 100

Keys {RIGHT}

Delay 100

Keys {RETURN}

Delay 5000

End


SetActiveWindow MapleStory

While 1=1

Call PeopleTest
//Richiama PeopleTest

End






Leggere i colori


Questo script legge il colore del pixel ad una certa coordinata ed esegue una azione in base al colore

Constants

HpPercent = 30
//Valore minimo di HP (in percentuale) da raggiungere prima di fermarsi a recuperare

MpPercent = 5
//Valore minimo di MP (in percentuale) da raggiungere prima di fermarsi a recuperare
HpKey = {DEL} //Tasto per recupero HP

MpKey = {PGDN}
//Tasto recupero MP

PotionDelay = 100
//Attesa tra un recupero ed il successivo

HpX = 264
//Coordinata X della parte iniziale della barra HP

MpX = 349
//Coordinata X della parte iniziale della barra MP
HPMPY = 619 //Coordinata Y delle barre HP ed MP (sono evidentemente sulla madesima riga)

Temp = 0
//solito valore temporaneo

End
//*IMPORTANTE* le barre HP e MP MapleStory sono lunghe solo 102 pixel



Procedure AutoPot

Compute Temp = $HpX + $HpPercent
//Cerca l’esatta coordinata X per comandare il recupero di HP

IsGrey $Temp, $HPMPY
//Quindi controlla le coordinate X, Y per vedere se il pixel è grigio…

Keys $HpKey
//preme quindi il pulsante associato alla variabile $HpKey per recuperare HP

Delay $PotionDelay
//Pausa di 0.1 secondi per non incorrere nell’errore di flood o spam (premere troppe volte troppo velocemente un tasto)

End

Compute Temp = $MpX + $MpPercent
//Cerca l’esatta coordinata X per comandare il recupero di MP
IsGrey $Temp, $HPMPY //Quindi controlla le coordinate X, Y per vedere se il pixel è grigio…
Keys $MpKey //preme quindi il pulsante associato alla variabile $MpKey per recuperare MP
Delay $PotionDelay //Pausa di 0.1 secondi per non incorrere nell’errore di flood o spam (premere troppe volte troppo velocemente un tasto)
End

Ecco, la guida è completa! Si accettano commenti per ampliarla e migliorarla!

Buona EXP

Nessun commento:

Posta un commento

Bot per expare e jobbare su NosTale

Dopo qualche prova su AC Tool , ho creato questo piccolo script utile per expare e jobbare il proprio personaggio su NosTale. Lo script è...