domenica 10 settembre 2017

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 è adatto ai primi livelli, diciamo fino al 25/30.

Unica necessità: per far funzionare correttamente lo scirpt posizionare l’arma secondara sul tasto 2.

SetActiveWindow NosTale
Loop 5000
Keys [SPACE]
Delay 300
Keys 2
Delay 300
Keys [SPACE]
Delay 300
Keys [SPACE]
Delay 350
Keys x
Keys x
Keys x
Keys x
Keys x
Keys x
Delay 350
end
restart

Il tutto da copiare/incollare nella finestra di AC Tool. Si avvia NosTale e si preme Start in basso a destra su AC Tool ed il gioco è fatto.

ANTEPRIMA: sto testando anche una modifica per riposare al calare di MP e/o HP.

ATTENZIONE: Questo è un bot a tutti gli effetti quindi vietato dal regolamento, se venite beccati il ban è assicurato.

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

AC Tool guide, la guida per AC Tool

Ho trovato questa guida su AC Toolhttps://retronostale.blogspot.it/2017/09/ac-tool.html 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.

Vediamone quindi i comandi base e come creare dei semplici script (detti anche macro)

SetActiveWindow – E’ il comando necessario all’inizio di ogni macro che andremo a creare, perchè indica su quale programma/finestra dovrà lavorare la macro. La finestra verrà automaticamente selezionata, quindi è necessario che il programma di destinazione sia già avviato.

Keys – Simula la pressione di uno specifico tasto nella finestra selezionata.

Delay – Indica una pausa prima dell’esecuzione del comando successivo. 1 sec = 1000 Delay

End – Ferma la macro corrente.

Restart – Riavvia la macro

Loop – Indica il numero di ripetizioni prima che la macro si fermi definitivamente

// – La doppia barra è utile per inserire un commento

Ok, ora proviamo a creare uno script semplice che scriverà la parola Hello

Codice da copiare/incollare in AC Tool:

SetActiveWindow Blocco note
Loop 1
Keys hello
Delay 1000
End

ORa è necessario premere start in basso a destra nella finestra di AC Tool per avviare lo script

Funziona? ok!

Vediamo il codice passo passo:

SetActiveWindow Blocco note //Permette ad AC Tool ti passare alla finestra Blocco note e di proseguire con lo script
Loop 1 //La macro verrà ripetuta 1 volta
Keys Hello //Verranno premuti i tasti “H” “e” “l” “l” “o”
Delay 1000 //Paura di 10 secondi
End //Ferma lo script che era stato avviato
Piccola variazione dello stesso script con spiegazione:

SetActiveWindow Blocco note
While 1=1
Keydown H 5 sec
Delay 1000
End

SetActiveWindow Blocco note //Seleziona la finestra Blocco note
While 1=1 //Se l’equazione è soddisfatta lo script continua. Adesso 1 è ugualissimo a 1, quindi continua.
Keydown H 5 sec //Una variazione del comando key, in questo caso il pulsante è tenuto schiacciato per 5 secondi
Delay 1000 //Attesa di 1 secondo prima di proseguire
End //Lo script si ferma, anche se essendo l’equazione while soddisfatta, lo script è sempre pronto a ripartire
Script più difficile, aggiungiamo 2 nuove funzioni: Procedure e Constants

Procedure – E’ una routine (cioè un insieme di comandi o funzionalità) che è possibile richiamare in qualunque punto dello script. Questa funzione permette di abbreviare e semplificare di molto lo script. Essendo una funzione riutilizzabile è facile modificarla una volta per aggiornare tutto lo script; altrimenti si dovrebbe modificare tutta la sequenza di operazioni manualmente tutte le volte che sono ripetute nello script. La procedura viene attivata dalla funzione Call e terminata dalla funzione End .

Call – Attiva una procedura

Constants – Identifica delle variabili, richiamabili all’interno dello script; questa funzione va utilizzata all’inizio dello script. E’ molto utile per semplificare il lavoro, come la funzione Procedure, per permettere un aggiornamento più veloce di valori ripetitivi. Si possono definire pulsanti, valori e altre cose come variabili.

Creiamo uno script con la funzione Procedure:

Procedure 1
Keys h
End
Procedure 2
Delay 1000
End
SetActiveWindow Untitled – Notepad
Loop 1
Call 1
Call 2
Call 1
EndLets break this down

Spiegazione passo-passo:
Procedure 1 //Definisce che i comandi che seguiranno faranno perte della procedura n°1
Keys h // Lo script comanda di premere il tasto “h”
End //La procedura 1 è terminata


Procedure 2
//Definisce che i comandi seguenti faranno parte della procedura n°2
Delay 1000 //Pausa di 1 secondo
End //La procedura 2 è terminata

SetActiveWindow Blocco note
Loop 1 //Ripetizione singola
Call 1 //Attiva la procedura n°1
Call 2 //Attiva la procedura n°2
Call 1 //Attiva la procedura n°1
End // Ferma lo script

In pratica lo script ha scritto la prima “H” nella finestra del Blocco note, ha atteso un secondo e poi ha scritto la seconda lettera “H”. Tutto chiaro? Perfetto!

Proviamo a scrivere una script con delle variabili:

Constants

k1 = h
d1 = 1000
End
SetActiveWindow Untitled – Notepad
Loop 1
Keys $k1
Delay $d1
EndNow lets break it down

Spiegazione passo-passo:

Constants //Definisce le variabili
k1 = h //Definisce che la variabile $k1 ha il valore “h”
d1 = 1000 //Definisce che la variabile $d1 ha valore di 1000
End

SetActiveWindow Blocco note

Loop 1

Keys $k1 //si richiama la variabile $k1 e la si associa al comando key, quindi è come scrivere key h
Delay $d1 //si richiama la variabile $d1 e la si associa al comando delay, quindi è come scrivere delay 1000
End

Nota: la variabile è sempre preceduta dal simbolo $, in mancanza del simbolo viene utilizzato il valora come assoluto:

Key $k1 // richiama la variabile $k1

Key k1 // scrive proprop k1!

Fine prima parte! Al più presto la seconda.

AC Tool

Questo piccolo programma è in grado di simulare l’utilizzo della tastiera: è infatti possibile impostare uno script per automatizzare la pressione dei pulsanti della tastiera o anche il movimento del mouse ed il relativo click.

Il sito di AC Tool è http://www.actool.net/

Ad esempio si può avvalersi di AC Tools per automatizzare delle operazioni altrimenti noisiose nei giochi, come l’aumento di esperienza in NosTale.

Appena registrato il nuovo personaggio, è necessario portarlo al livello 15 di esperienza e 20 di lavoro, con questo script è molto facile in quanto il personaggio fa da se:
SetActiveWindow Untitled – NosTale
Loop 5000
Keys [SPACE]
Keys x
Keys x
Keys x
Delay 350
end
restart

Il tutto da copiare/incollare nella finestra di AC Tool. Si avvia NosTale e si preme Start in basso a destra su AC Tool ed il gioco è fatto.

ATTENZIONE: Questo è un bot a tutti gli effetti quindi vietato dal regolamento, se venite beccati il ban è assicurato.

Retro server Nostale

Ciao! Qui vorrei raccogliere tutto quello che trovo e/o ho trovato in passato sui retroserver di Nostale.

NosTale è un videogioco di genere MMORPG freeware, sviluppato dalla Entwell e pubblicato in Italia dall'azienda tedesca Gameforge. È stato messo in commercio nel 2006 in Corea, e in seguito tradotto in giapponese, cinese, tedesco, italiano, inglese, francese, polacco, turco, ceco, russo, spagnolo e tailandese. NosTale è un gioco di ruolo on-line gratuito, nel quale i giocatori si muovono e basta. (Fonte: Wikipedia)
Essendo un gioco online è possibile giocare solo se si dispone di una connessione ad internet.  Si inzia con un avventurriero che dopo qualche livello (precisamente al 15esimo livello di esperienza e 20esimo di lavoro) può scegliere una specializzazione tra mago, arciere e spadaccino per continuare la storia. La storia è divisa in missioni da completare, con possibilità di combattere anche in completa autonomia contro i mostri che si troveranno nelle varie mappe, oltre a battaglie speciali e ad una arena nella quale si combatte contro personaggi controllati da giocatori reali.


Un retroserver è un server privato gestito da utenti privati che permettono una esperienza di gioco alternativa al server ufficiale. Ad esempio è possibile che in un retro si possa livellare con maggiore velocità, oppure fare molto più oro. Sul server originale è necessario shoppare (comprare con soldi veri) degli oggetti particolari utili per far diventare il personaggio sempre più forte e competitivo. Sui retro invece è possibile che lo shop sia quasi solo estetico oppure permetta di ottenere degli oggetti già "forti" che comunque è possibile fare senza spendere soldi veri e sempre con maggiore facilità rispetto al server ufficiale.

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 è...