Ho trovato questa guida su AC Tool in inglese, mi sembra fatta molto bene, quindi ho deciso di tradurla tutta.
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.
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
EndSetActiveWindow 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
EndSetActiveWindow 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
EndSetActiveWindow 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
EndProcedure 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
EndSetActiveWindow 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
EndProcedure ChangeChannel
Keys {ESC}
Delay 100
Keys {RETURN}
Delay 100
Keys {RIGHT}
Delay 100
Keys {RETURN}
Delay 5000
EndSetActiveWindow 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 ![]()




ac tool, guida, guide, nostale, bot, exp, job, script, macro, tutorial, spiegazione, aiuto, help | Liberochat wrote:
[...] Clicca qui per leggere la seconda parte. Share and Enjoy: [...]
Link | November 11th, 2009 at 10:56 pm
I found your site on Google and read a few of your other entires. Nice Stuff. I’m looking forward to reading more from you.
Link | November 11th, 2009 at 11:03 pm
Thanks Darryl, you’re welcome!
Link | November 12th, 2009 at 8:07 am
io ho riscontrato dei problemi nell farlo funzionare su nostale
Link | March 28th, 2010 at 7:08 am