Crée un BOT Nostale

  • Partenaires

Utilisateurs qui regardent le poste (Total: 0, Members: 0, Invité: 0)

xg7xg7pat

xg7xg7pat

Membre Banni
17 Sept. 2011
52
0
311
[Tutoriel]

Création d'un BOT Nostale comme celui de Manny.

Lien:


Le but du BOT:

1) Attaquer
2) Ramasser les objets
3) Utiliser des sorts
4) Pouvoir aller sur Internet tous en utilisant le BOT

Ils y en a peu être qui croit que c'est dur de faire cela,
Je vous stop tous de suite, j'ai apris a programmer il y a 1 semaine, et j'ai réussi a le faire.

Vous avez besoin de :

- Autoit
- Koda ( pas obliger, c'est pour crée des GUI )
- un cerveau en état de marche ...

----------------------------------------------------------​

Premièrement, vous devez crée un Fenêtre avec Koda.
Crée un Bouton seulement .

Vous devriez avoir quelque chose comme sa :

212509Image1.jpg

Maintenant, faites OUTILS >> Générer le code de l'interface .

Vous devriez avoir quelque chose comme sa :

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Nostale", 342, 440, 511, 220)
$Button1 = GUICtrlCreateButton("Button1", 136, 168, 75, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd

Le plus facile est fait ;)

Maintenant que l'ont a notre Fenêtre et notre beaux bouton, il va falloir lui dire quoi faire a se bouton ...
Sinon, il ne sert a rient ><

Le bouton doit faire :

1) Afficher un message comme quoi le BOT va se lancer
2) Ont doit crée une Boucle dans lequel ont appellera la Fonction Sectionner les moob, Ramasser les objets, Attaquer avec des sorts.

Let's go ?

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Nostale", 342, 440, 511, 220)
$Button1 = GUICtrlCreateButton("Button1", 136, 168, 75, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1

While 1

ToolTip("NostaleBot BOT = ON ", 0, 0)
RAMASSE()
SELECTMOB()
COMBAT()

WEnd


EndSwitch
WEnd

Bien, maintenant ont crée les Fonctions .....

Mais avant sa il faut s'avoir comment dire au programme d'appuyer sur tel ou tel touche ....

Vous allez peut être vous dire avec Send :

Send("r")

C'est pas sa que l'ont cherche car si ont fait sa, Cela va appuyer sur la touche R dans la fenêtre active.

Nous ont veut que l'ont appuie sur R que dans Nostale.

Vous ne voyez pas ?

Ont va utiliser ControlSend

Je vais vous donnez un exemple avec le Bloc Note, ensuite essayer de faire de même avec Nostale, car le meilleur moyen de progresser et d'essayer !



ControlSend("[CLASS:Notepad]", "", "Edit1", "This is a line of text in the notepad window")


C'est quoi "[CLASS:Notepad]" humm a vrais dire, je ne c'est pas exactement donc je ne préfère pas tros en dire dessus.

C'est selon moi un NOM, ont l’obtient grace a Autoit windows info

215440Iamge2.jpg

Vous avez tous pour réussir !!!
Donc finit de dormir et essayer par vous même.

Vous avez pas un intérrer a cliquer sur se bouton avant d'avoir trouver la solution !

#RequireAdmin


HotKeySet("{F8}", "Pause")
HotKeySet("{F10}", "Quitter")
Global $PAUSE


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Nostale", 342, 440, 511, 220)
$Button1 = GUICtrlCreateButton("Button1", 136, 168, 75, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1

While 1

ToolTip("NostaleBot BOT = ON ", 0, 0)
RAMASSE()
SELECTMOB()
COMBAT()

WEnd


EndSwitch
WEnd

Func SELECTMOB()
Sleep(500)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "{SPACE}")
EndFunc

Func RAMASSE()
Sleep(500)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "r")
EndFunc


Func COMBAT()
Sleep(100)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "1")
Sleep(100)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "2")
Sleep(100)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "3")
Sleep(100)
ControlSend("[CLASS:TNosTaleMainF]", "", 0, "4")
EndFunc



Func ATTENDRE()
While 1
ToolTip("NostaleBot ...", 0, 0)
Sleep(7000)

WEnd
EndFunc

Func PAUSE()
$PAUSE = Not $PAUSE
While $PAUSE
ToolTip("NostaleBot = OFF", 0, 0)
Sleep(400)
WEnd
EndFunc

Func QUITTER()
ToolTip("NostaleBot Fermeture ", 0, 0)
Sleep(1000)
Exit

EndFunc
 
R

Rhutz

Level 2
Level 1
4 Avr. 2013
13
1
904
32
Désolé de up un sujet aussi vieux mais quelque chose me passe par la tête,
J'ai dans l'idée de faire mon propre bot, j'ai beaucoup hésité entre le C ou l'autoit étant donné que je n'ai pas beaucoup de connaissance en autoit (même si c'est plutôt simple il faut l'avouer ).
Mon problème étant que je voudrai faire quelque chose de concret, pas juste un bot qui spam une touche non stop donc j'aimerai savoir si pour les connaisseurs d'autoit c'est possible de crée une interface qui récupérera la vie actuel du personnage (et des mates, a config), le chat du jeu et qui pourra spam des touches en fonction de tel ou tel prérequis avec certain cd. Qu'en pensez vous ? Es-ce que c'est faisable en autoit ou pas du tout ?
 
R

ragnarock

Level 4
Level 3
Level 2
Level 1
22 Mars 2010
193
0
917
Salut,

Le problème n'est pas vraiment le langage, mais plutôt la récup' des infos du jeu. Si tu fais ça via la mémoire c'est tout à fait faisable avec AutoIt (cherches l'include NomadMemory.au3 pour 2-3 fonctions utiles). Si tu veux faire ça via les sockets ça risque d'être plus facile en C.

Mais si tu connais le C, t'as aucune raison d'utiliser AutoIt, qui est lui même un wrapper (c'est surement pas le bon mot, mais là je cale...) de fonctions écrites en cpp. La seule diff est que tu vas prendre peut-être plus de temps si tu fais ça en C.
 
R

Rhutz

Level 2
Level 1
4 Avr. 2013
13
1
904
32
Bah le problème c'est qu'avec le C j'ai pas mal de problème concernant la récupération des informations et l'envoie de commandes.

En autoit l'envoie de commandes et de move souris ce fait plutôt facilement donc c'est pas trop un problème, par contre la récupération d'informations je sèche.
D'ailleurs, je n'ai aucune idée de ce que tu veux dire par faire sa via la mémoire et les sockets j'ai pas encore appris en C comment les gérés (j'ai oublié de précisé, j'ai de bonne bases en C mais j'suis pas un pro non plus ^^)
 
R

ragnarock

Level 4
Level 3
Level 2
Level 1
22 Mars 2010
193
0
917
En gros via la mémoire ça veut dire passer par les fonction / pour retrouver les valeurs que tu recherches dans la mémoire du process.
Mais faut au préalable trouver où se situe ce que tu cherches dans la mémoire (trouver les adresses). Pour ça faut soit passer par Cheat Engine (ou autre...), soit désassembler le programme.

Via les sockets ça veut dire intercepter/modifier/créer/... les messages envoyés du serv' au client sur ton ordi et inversement.

Pour les 2 méthodes y'a pleins de tuto sur le net.

Et comme je l'ai dit, pour le langage, prends celui qui t'intéresse le plus^^ y'a pas de fonction pré-faites en C pour simuler des clics/touches, mais ça se crée facilement avec l'api Windows.
 
B

BlueHeart

Nouveau membre
3 Déc. 2013
4
0
121
Je ne m'en sort pas j'arrive pas a édité le code d'interface... :$
 
RockRoss

RockRoss

Level 5
Level 4
Level 3
Level 2
Level 1
5 Juil. 2010
3,539
0
601
Merci du partage, bon tutoriel - j'prend note pour en faire un prochainement ;)
 
Djockers

Djockers

[Synopsis]
Level 5
Level 4
Level 3
Level 2
Level 1
17 Juin 2011
1,160
0
461
127.0.0.1
Oui, bon tuto, avec de bonnes explications, complet :)
 
RintoX

RintoX

Level 5
Level 4
Level 3
Level 2
Level 1
29 Juil. 2013
1,017
7
764
27
In the No Pain No Gain Land
Que signifie toute Cette section ?

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Nostale", 342, 440, 511, 220)
$Button1 = GUICtrlCreateButton("Button1", 136, 168, 75, 41)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

---------- Message ajouté à 02h32 ---------- Le message précédent était à 02h23 ----------

Ah ok c'est le GUI , mais comment je le fais moi même car tu ne sera pas toujours là pour me le donner ^^

De plus , j'aimerais savoir celui ci s'il te plaît ;):
[CLASS:TNosTaleMainF]
 
Evaelis

Evaelis

La Voix de la Sagesse
Level 5
Level 4
Level 3
Level 2
Ancien staff
Level 1
28 Avr. 2010
22,929
465
1,699
Valhalla
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
On inclue les librairies
$Form1 = GUICreate("Nostale", 342, 440, 511, 220)
$Button1 = GUICtrlCreateButton("Button1", 136, 168, 75, 41)
GUISetState(@SW_SHOW)
On créait des contrôles pour la fenêtre et on l'affiche
[CLASS:TNosTaleMainF]
Cela désigne une fenêtre si je ne me trompe pas, en utilisant son nom de processus
 
RintoX

RintoX

Level 5
Level 4
Level 3
Level 2
Level 1
29 Juil. 2013
1,017
7
764
27
In the No Pain No Gain Land
Merci Evaelis :)

Par contre je ne comprends toujours pas la fonction #Include :/
Sinon les deux autres , c'est bon ^^
 
BrickMe

BrickMe

Level 4
Level 3
Level 2
Level 1
15 Juil. 2013
180
0
742
Proxima du Centaure
#include permet d'inclure un script autoit dans ton script.

Ce sont des scripts pré-faits et généralement documentés.

Par exemple t'as un fichier A qu'on nommera "fichierA.au3" qui contient la fonction A

Code:
Func FonctionA()

MsgBox(0, "", "")

EndFunc


Dans un fichier B si tu écris #include <fichierA.au3> tu pourras alors utiliser la fonction FonctionA() sans l'avoir mise en entière dans ton fichier B.

Code:
#include <fichierA.au3>

FonctionA()