|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Richiesta Bot Scritto Con Il Codice Di Ac Tool
Salve, mi servirebbe un bot piuttosto semplice fatto con AC Tool (anche con un altro programma se preferite), purtroppo però non mi riesce bene, quindi se qualcuno conosce il codice e me lo può scrivere mi farebbe un gran favore.
Il bot come ho detto è abbastanza semplice, deve effettuare un controllo continuo e quando il pixel di coordinate x,y diventa di tot. colore, deve essere premuto 20 volte CTRL di sinistra (e deve essere assolutamente quello di sinistra). Tutto qui, e anche dopo che la condizione viene soddisfatta il ciclo si deve ripetere. Coordinate e colore li inserisco io dopo, mi basta avere il codice. Grazie. |
|
|
|
|
|
#2 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
sinceramente dubito che riuscirai a trovare qualcuno che voglia farti da zero - e da solo, per altro senza alcun interesse - un lavoro simile e completo. Tutt'al più, ti consiglio di chiedere consigli e iniziare a mostrare qualche stralcio (pur sbagliato) di codice. Anche perchè te non hai chiesto un mockup su cui lavorare, hai proprio chiesto il lavoro finito. Non ho alcun interesse a mettere in cattiva luce la tua richiesta (e non lo stò facendo), voglio solo darti qualche consiglio per evitare che il tuo topic rimanga senza ulteriori risposte. Sicuramente sul sito ufficiale trovi della documentazione, inizia a googlare e cercare qualche stralcio di codice che potrebbe servirti, se dici che non deve fare nulla di complesso, meglio per te Buona giornata. PS. Parla uno ignorante in materia AC tool, ma che ha scritto qualche bot - anche se non per fare quello che hai detto tu - |
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Per darti, comunque, un reale contributo, di seguito ti linko due guide che ho trovato subito su google con le keywords "tutorial ac tool" - ne ho sbirciate alcune e ti linko quelle che mi sembrano più ordinate -
http://www.mpcforum.com/showthread.php?t=170636 http://italiancheats.com/Thread-TUTORIAL-AcTool--8935 Byz! |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Ciao, intanto ti ringrazio per la risposta.
Hai ragione sul fatto che ho chisto il lavoro già terminato, ma solo perché dovrebbe essere una cosa rapida di 5-6 righe (almeno credo) e perché onestamente non ho mai programmato in AC Tool, gli unici bot che ho fatto erano proprio cose minimali, della serie premere un tasto ogni tot intervallo di tempo Comunque darò sicuramente un'occhiata ai link che mi hai segnato, provo a combinare qualcosa e poi lo posto
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Con ACTool non mi trovavo bene e googolando un po' ho visto che la funzione che mi serve sta in AutoIt, quindi ora uso quello.
Ho buttato giù due righe di codice: Codice:
Dim $i
If PixelGetColor(596, 416) = b02728 Then
For $i = 1 To 20
send ("{LCTRL}")
next
EndIf
Il resto credo che vada bene ma ovviamente non ne sono affatto sicuro. Ah e questo controllo deve essere ripetuto all'infinito, su ACTool basta settare su 0 la casella in basso a destra, con AutoIt non ho idea di come fare. EDIT: risolto quasi tutto, mi rimane solo da capire come fare il loop infinito. Ultima modifica di MJ83® : 20-08-2009 alle 19:39. |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Finalmente sono riuscito a fare il bot come voglio io, perfettamente funzionante.
O meglio quasi perfettamente: il bot funziona bene nel senso che fa quello che voglio, il problema però è che funziona solamente due volte e basta Qualcuno saprebbe spiegarmi perchè?Ecco il codice Codice:
$var = 1
Dim $i
While $var = 1
sleep (10)
If PixelGetColor (598,412) = 930135 Then
send ("{LCTRL 20}")
Endif
Wend
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Ho cercato nella documentazione gli operatori e infatti = è solo assegnazione. Codice:
$var = 1
Dim $i
While $var == 1
sleep (10)
If PixelGetColor (598,412) = 930135 Then
send ("{LCTRL 20}")
Endif
Wend
Fammi sapere, ciao. [edit] Confrontando gli statements con la documentazione sembrerebbero essere giusti, ma non non ho cercato per le funzioni [re:edit] Ho controllato anche nella lista delle funzioni e in effetti esistono e credo facciano proprio al caso tuo - leggendo ciò che fanno -. Ultima modifica di Y3PP4 : 20-08-2009 alle 22:16. |
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Stesso problema
Ah ho notato che quando lo fermo mi da questo errore >Process failed to respond; forcing abrupt termination... >Exit code: 1 Time: 3.070 |
|
|
|
|
|
#9 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Bada, ti dò una mano (per quanto mi è possibile) non ti faccio il lavoro, quindi stà a te impegnarti in merito Peccato che non spunta nessun tuttologo :s Riguardo l'errore, non ne sono certo ma potrebbe essere un messaggio del sistema operativo? Praticamente ti dice che il processo (il programma in esecuzione) non risponde e quindi ne forza l'uscita la terminazione brusca. Poi ti dice che esce col codice 1 (non essendo zero significa errore) e ti dà il tempo di esecuzione del process. Ciao. |
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
No no, non è del SO, me lo da nella finestra del programma riservata al check degli errori e warning nel codice ecc.
Grazie comunque per l'aiuto e la disponibilità
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Se nell'if Codice:
If PixelGetColor (598,412) = 930135 Then Adesso che mi son messo a leggere lo statement mi è sorto il dubbio. Prova e fammi sapere [edit] Ultima cosa che devi verificare per debug - qualora con la soluzione sopra non risolva è togliere (per ora) il 20 dall'istruzione Codice:
send ("{LCTRL 20}")
Se dovesse funzionare cosi vuol dire che il problema è che non dichiari bene che l'operazione deve essere eseguita 20 volte... se è una keyword non la puoi storpiare cosi... nel caso proviamo con l'operatore aritmetico di moltiplicazione. Ultima modifica di Y3PP4 : 21-08-2009 alle 01:15. |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
In cambio prometti fedeltà al forum, non fare come gli altri che si iscrivono risolvono e poi scappano...
stò scherzando (non su quei tipi, ma sul fatto che in cambio devi promettere fedeltà al forum... basta solo la fedeltà a me |
|
|
|
|
|
#13 | |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Hehehe beh ad essere onesto c'ero già capitato qui ma senza mai iscrivermi perché in genere trovavo sempre le soluzioni già discusse da altri a quello che cercavo
Ho messo il doppio = anche nell'If, ora lo provo. Il debug l'ho fatto diverse volte e non mi da errori con questo codice, inoltre ho usato quel comando leggendolo su una guida, quindi penso vada bene (infatti quando lo provo preme CTRL più volte, il problema è che ripete il ciclo due volte e poi non fa più niente). Quote:
![]() La Moving Bar si muove continuamente a sinistra e destra, io devo fare in modo che quando raggiunge la Perfect Zone venga premuto il CTRL di sinistra tot volte. Se viene fatto rapidamente a mano, la barra rimane ferma lì fino a che si continuano a fare "perfect", ma quando lo fa il pc che dovrebbe essere 100000 volte più veloce di me, molte volte "manca il bersaglio" e tante altre volte non lo centra proprio e non capisco il perché dato che la barra non si muove molto velocemente e che le coordinate e il colore sono precisi. Ultima modifica di MJ83® : 21-08-2009 alle 01:32. |
|
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Una cosa non capisco... perchè avvii il while e poi ci metti 10 secondi di pausa? Anche la barra rimane ferma quei 10 secondi? Comunque se sei sicuro (al 1000% - non mille x mille... mille x cento) che le coordinate sono giuste e il colore in hex dichiarato pure... il problema è nello script. Le coordinate come le hai trovate? Ti informo che la return value della PixelGetColor è un colore espresso in decimale non in hex. Se vuoi confrontarlo in hex devi usare l'apposita funzione Hex( colore )... che converte. Ma per non mettere carne al fuoco assicurati di valutare correttamente il colore esprimendolo in decimale. (a sei cifre mi verrebbe da dire che lo dichiari hex, ma senza lettere di conferma non azzardo... non sono una cima nell'espressione dei colori in decimali) guarda gli esempi per capire cosa intendo e leggi la return value .... decimal color http://www.autoitscript.com/autoit3/...elGetColor.htm |
|
|
|
|
|
|
#15 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Il tempo è espresso in millessimi di secondi quindi 10 equivale a 0.01 secondi (cioè un centesimo di secondo)
L'ho fatto perché (lo so probabilmente è una cosa stupida) mi è venuto in mente che mettere un loop infinito che fa un controllo ogni millesimo di secondo (se non ancora più rapido, non so quanto sia la frequenza se non si pongono pausee) potesse far intrippare windows e bloccare il programma. Probabilmente è una cosa inutile ma dubito dipenda da quello il problema. Delle coordinate sono sicuro al 1000%, la barra (intendo quella intera non quella che si muove ovviamente) rimane sempre nella stessa posizione dello schermo, quindi ho fatto uno screenshot (il gioco in cui è presente la barra è full screen) e con Photoshop ho preso le coordinate (segna i pixel esatti in cui si trova il cursore e in più ho verificato usando anche le linee guida e i righelli). Per il colore ho usato sempre Photoshop, ho preso il campione con il Contagocce, ho guardato il valore esadecimare e poi con un convertitore online l'ho convertito in decimale, infatti il valore di quel colore contiene lettere quando lo prendo da Photoshop. E sull'utilizzo di quest'ultimo vado sul sicuro dato che c'ho lavorato 8 ore al giorno per un anno e mezzo EDIT: riguardo il ciclo che dopo un po' non viene più eseguito l'unica cosa che mi viene in mente è che appunto il programma si blocca (vedi l'errore che mi segna quando stoppo il bot). Però ho fatto una prova togliendo la condizione IF e facendogli scrivere su un file di testo "A" quattro volte ripetuto all'infinito e funziona. Ultima modifica di MJ83® : 21-08-2009 alle 02:06. |
|
|
|
|
|
#16 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Io non lo lascerei (proprio perchè non ha un nesso logico - non causerà l'errore, ma non ha senso lasciarlo lì - è come se ti mettessi a fare continuamente 120 * 9 per perdere tempo... non ha senso, inoltre i programmi devono essere efficienti - per tempo e risorse -). Riguardo agli altri miei quesiti, non metto in dubbio la tua esperienza con Photoshop Un unico consiglio, fai la prova del nove con l'hex -> dec converter utilizzandone un'altro e comparandone i risultati (non mi fido mai). Comunque se due volte il ciclo viene eseguito e poi no... non è quello. Uhm... a sto punto se non si trovano soluzioni non resta che provare... io ti consiglio intanto di rivolgere un quesito al loro forum Almeno avrai una risposta sicura (spero) sul problema, intanto noi proviamo, ma se non dovessimo risolvere avranno già iniziato a leggere il quesito e ci saranno maggiori probabilità - e minor tempo di attesa - per una risposta. [edit] letto ora il tuo edit.... allora prova a salvare il risultato della funzione del pixel in una variabile, poi usi la variabile per la comparazione. Inoltre se vuoi potresti provare a usare questa volta (sfruttando il valore della variabile) la funzione Hex( $variabile_con_colore) e confrontarlo (==) con il valore in ESADECIMALE (non più decimale). $var = PixelGetColor( xx, yy ) Nota che Hex vuole come primo parametro il valore ( nel nostro caso la var) come secondo parametro - opzionale - la lunghezza. Dato che l'hex è 6 cifre mettici 6 - se no lascia perdere il valore opzionale -. http://http://www.autoitscript.com/a...ctions/Hex.htm Ps. io ora andrei a nanna... tu posta pure e giuro che domattina leggo - se non vado ora sarà dura alzarsi alle 7.30 Ciao ciao e buona notte. Ultima modifica di Y3PP4 : 21-08-2009 alle 02:12. |
|
|
|
|
|
|
#17 | |||||
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Quote:
Infatti ho appena provato togliendo la pausa e si produce un lag grafico notevole, quindi è meglio lasciarla mi sa. Quote:
Quote:
Quote:
EDIT: uhm il forum è in inglese quindi penso lo farò domai data l'ora... per me è già complicato discutere e capire queste cose in iitaliano, figurati se devo andarle a spiegare in inglese :-p Quote:
Ultima modifica di MJ83® : 21-08-2009 alle 02:31. |
|||||
|
|
|
|
|
#18 | |||
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Come promesso eccomi.
Quote:
Quote:
Quote:
link Ciao ciao! |
|||
|
|
|
|
|
#19 |
|
Junior Member
Iscritto dal: Aug 2009
Messaggi: 24
|
Ho provato così
Codice:
$x = 1
While $x == 1
sleep (10)
$col = PixelGetColor (598,412)
IF $col == 930135 then
send ("{LCTRL 20}")
Endif
Wend
Riguardo l'utilizzo della funzione hex c'ho pensato ma non credo di aver capito come mi hai suggerito di usarla. Ad ogni modo ho scritto nel forum di Autoit (ho cercato quello italiano però |
|
|
|
|
|
#20 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Riguardo alla tua funzione hai l'If dichiarato tutto maiuscolo, ma da documentazione è capitalizzato: If ( quindi IF if sarebbero scorretti - dico sarebbero perchè non sò come è stato progettato il linguaggio, ma se non ti dà errori, o fà schifo (in senso buono) l'interprete o lo accetta. La hex ti consigliavo di usarla come nell'esempio di seguito: Codice:
; al posto di dichiarare una variabile, prova ad usare un loop infinito sulla condizione "vero"
While 1
; sleep(10) ora è commentato
$color = PixelGetColor( 590, 412 ) ; (x, y)
$hexc = Hex( $color, 5 ) ; 5 perchè il nostro hex è di 5 cifre
If hexc == E3157 Then ; l'ho convertito online con un hex->dec
Send( "{LCTRL 20}" )
EndIf
WEnd
Fammi sapere, se poi _vuoi_ prova semplicemente a riscrivere la tua funzione capitalizzando tutti gli elementi del linguaggio. Ciao! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:43.












Qualcuno saprebbe spiegarmi perchè?









