Что нового

[Автоматизация] Бот для игры Фантазиум "Счастливый Фармер"

lirikmel

Продвинутый
Сообщения
226
Репутация
84
Если кому надо бета(полная версия ушла куда уж подальше) версия бота для игры Фантазиум .....В данный момент полностью рабочий(хз скока еще останется потому что оффсеты меняют с каждым обновлением) ...работает в неактивном окне и тд и тп

Тестировался только на ОС Windows 7 64x
В настройках надо проставить выделение себя на F1
Лопата F12
Код:
#include <nomadmemory.au3>
#Include <HotKey.au3>
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt('SendKeyDelay', 100)
Opt('SendKeyDownDelay', 50)
Opt("GUIOnEventMode", 1) 
Opt("SendAttachMode", 1) 
Opt("SendCapslockMode", 0) 

   
       
     
  
TrayTip("Фармить готов!",0,0)


Global $ProcessName = "Фантазиум (RU)"
Global $ProcessID = WinGetProcess($ProcessName,"")
Global $hWnd = WinGetHandle("Фантазиум (RU)", "")

Global $DllInformation = _MemoryOpen($ProcessID)
SetPrivilege("SeDebugPrivilege", 1)
Global $HP = 0x0108BBA8 ; жизнь изменение
Global $OffsetMHP = 0x00DE392C ; моб жизнь
Global $OffsetMxHP = 0x00DE38E4 ; макс хп
Global $OffsetMP = 0x00DE38E4 ; изменение манна 
Global $OffsetXP = 0x0108BDE0 ;  опыт
Global $NameMob = 0x1481222C
Global $NameLoot = 0x00DE1E50
Global $Paused

Global $CurHPforBaff
Global $Proverka 
Global $Current1
Global $Current
Global $MbXP1
Global $MbXP
Global $MbHP1
Global $MbHP       
Global $MobHP  
Global $Paused

HotKeySet("{DELETE}", "BOT_STOP")
HotKeySet("{HOME}", "BOT_START2")
HotKeySet("{END}", "CLOSE_PROGRAM")  ;Shift-Alt-d

;_HotKeyAssign($VK_DELETE, 'BOT_STOP')
;_HotKeyAssign($VK_HOME, 'BOT_START2')
;_HotKeyAssign($VK_END, 'CLOSE_PROGRAM')

Global $CurrentXP = (_MemoryRead($OffsetXP, $DllInformation, 'ptr')) 
Global $XP = $CurrentXP + 608

Global $CurrentmMP = (_MemoryRead($OffsetMP, $DllInformation, 'ptr')) 
Global $MMP = $CurrentmMP + 614

Global $CurrentmHP = (_MemoryRead($OffsetMHP, $DllInformation, 'ptr')) 
Global $MHP = $CurrentmHP + 610

Global $CurrentMaxHP = (_MemoryRead($OffsetMxHP, $DllInformation, 'ptr')) 
Global $MxHP = $CurrentMaxHP + 604



Global $botting 






#Region ### START Koda GUI section ### Form=C:\Users\Harakiri\Desktop\koda\Forms\Form1.kxf
$Form1 = GUICreate("Фармер v0.1", 220, 443, 588, 320)
$Button1 = GUICtrlCreateButton("Ботить", 32, 16, 153, 49)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Копать", 32, 72, 153, 49)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button4 = GUICtrlCreateButton("Сваливаем", 32, 128, 153, 57)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Combo1 = GUICtrlCreateCombo("", 24, 240, 57, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$Label1 = GUICtrlCreateLabel("АтакА", 24, 208, 57, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Combo2 = GUICtrlCreateCombo("", 24, 272, 57, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$Combo3 = GUICtrlCreateCombo("", 24, 304, 57, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$Combo4 = GUICtrlCreateCombo("", 24, 336, 57, 25)
$Label2 = GUICtrlCreateLabel("БаффЫ", 120, 208, 72, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Combo5 = GUICtrlCreateCombo("", 128, 240, 57, 25)
GUICtrlSetData(-1, "{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}")
$Combo6 = GUICtrlCreateCombo("", 128, 272, 57, 25)
GUICtrlSetData(-1, "{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}")
$Label3 = GUICtrlCreateLabel("БутылкИ", 120, 336, 69, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Combo7 = GUICtrlCreateCombo("", 128, 304, 57, 25)
GUICtrlSetData(-1, "{F1}|{F2}|{F3}|{F4}|{F5}|{F6}|{F7}|{F8}|{F9}|{F10}")
$Combo8 = GUICtrlCreateCombo("", 176, 360, 41, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$Combo9 = GUICtrlCreateCombo("", 176, 392, 41, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$InisH = GUICtrlCreateLabel("HP", 136, 360, 21, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$InisM = GUICtrlCreateLabel("MP", 136, 392, 22, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("ПодбоР", 24, 376, 61, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Combo10 = GUICtrlCreateCombo("", 32, 408, 49, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7|8|9|0|-|=")
$Combo11 = GUICtrlCreateCombo("", 128, 416, 57, 25)
GUICtrlSetData(-1, "{INSERT}|{SPACE}")
GUISetState(@SW_SHOW)
Dim $Form1_AccelTable[2][2] = [["{F12}", $Button2],["{F11}", $Button4]]
GUISetAccelerators($Form1_AccelTable)
#EndRegion ### END Koda GUI section ###

  


GUICtrlSetOnEvent($Button4, "CLOSE_PROGRAM")
GUICtrlSetOnEvent($Button1, "BOT_START")
GUICtrlSetOnEvent($Button2, "Kopat")












While 1
    Sleep(10)
    If $botting = 1 Then ;Если бот включен
      
  



Func target()
If $botting = 1 Then ;Если бот включен
Local $i = 0
Opt('SendKeyDelay', 200) 
Opt('SendKeyDownDelay', 100)
;;;;;;;;;;;; ;жизнь
$MaxHP = (_MemoryRead($MxHP, $DllInformation, 'ptr'))
			
			$MaxHP = dec(StringTrimLeft($MaxHP, 14))




		$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
			$CurrentHP = dec(StringTrimLeft($CurrentHP, 10))

;;;;;;;;;;;;;;;;;;;;манна
$CurrentMP = (_MemoryRead($MMP, $DllInformation, 'ptr'))
			$CurrentMP = dec(StringTrimLeft($CurrentMP, 14))
Sleep (400)
Global $PolHP = $MaxHP / 1.3


;;;;;;;;; proverka
if $CurrentHP < $PolHP Then
	;ControlSend($hWnd, "", "","{F1}")
	sleep (200)
	ControlSend($hWnd, "", "", $Combo8)
    ;sleep (1000)
	;ControlSend($hWnd, "", "","{TAB}")
	EndIf


if $CurrentMP < 50 Then
	ControlSend($hWnd, "", "", $Combo9)
	sleep (500)
	
	EndIf

Global $dif = TimerDiff($begin)
Global $DirRevers = ((10 * 60000)-$dif)/1000
TrayTip("ребаф через секунд",$DirRevers , 0)
If $CurrentHP >= $CurHPforBaff And $dif > 10 * 60000 Then

baff ()

EndIf



;;;;;;;;;; celi
Do
If $botting = 1 Then ;Если бот включен 

  sleep (200)
ControlSend($hWnd, "", "", "{TAB}")
	sleep (400)
	$MobHP = (_MemoryRead($MHP, $DllInformation, 'ptr'))		
$MobHP = dec(StringTrimLeft($MobHP, 10))
EndIf
	Until $MobHP > $MbHP1
;;;;;;;;имя жертвы


$CurrentNameMob = _MemoryRead($NameMob, $DllInformation, 'char[40]')
TrayTip("Жертва",$CurrentNameMob, 0)
;;;;;;;;			
			$Current = (_MemoryRead($MHP, $DllInformation, 'ptr'))		
$Current1 = dec(StringTrimLeft($Current , 10))

While $MobHP = $Current1 
If $botting = 1 Then ;Если бот включен
If $i > 10 Then
	target ()
EndIf	

ControlSend($hWnd, "", "", $Combo1)
sleep (100)

		$Current = (_MemoryRead($MHP, $DllInformation, 'ptr'))		
$Current1 = dec(StringTrimLeft($Current , 10))
 $i = $i + 1	
EndIf
WEnd
	
ataka()
EndIf
EndFunc


Func ataka()
If $botting = 1 Then ;Если бот включен
Local $n = 0

Opt('SendKeyDelay', 100)
Opt('SendKeyDownDelay', 50)




$CurrentNameMob = _MemoryRead($NameMob, $DllInformation, 'char[40]')


		$MobXP1 = (_MemoryRead($XP, $DllInformation, 'ptr'))		
$MbXP1 = dec(StringTrimLeft($MobXP1, 10))
		


		$MobXP = (_MemoryRead($XP, $DllInformation, 'ptr'))		
$MbXP = dec(StringTrimLeft($MobXP, 10))
	

While $MbXP1  = $MbXP
	
			TrayTip("атакуем",$CurrentNameMob, 0)
	
			;;;;;;;;;;;; ;жизнь
$MaxHP = (_MemoryRead($MxHP, $DllInformation, 'ptr'))
			$MaxHP = dec(StringTrimLeft($MaxHP, 14))

		$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
			$CurrentHP = dec(StringTrimLeft($CurrentHP, 10))

			Global $PolHP = $MaxHP / 1.3
			;;;;;;;;; proverka
if $CurrentHP < $PolHP Then
	;ControlSend($hWnd, "", "","{F1}")
	;sleep (200)
	ControlSend($hWnd, "", "", $Combo8)
	sleep (300)
	
	EndIf
	If $n > 15 Then
		target ()
		EndIf
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
If $botting = 1 Then
$CurHPforBaff = (_MemoryRead($HP, $DllInformation, 'ptr'))
			$CurHPforBaff = dec(StringTrimLeft($CurrentHP, 10))		
		ControlSend($hWnd, "", "", $Combo11)
		sleep (100)
		ControlSend($hWnd, "", "", $Combo2)
    Sleep (300) 
    
	ControlSend($hWnd, "", "", $Combo1)
	Sleep (300) 
	 ControlSend($hWnd, "", "", $Combo3)
	Sleep (300) 
	ControlSend($hWnd, "", "", $Combo4)
	Sleep (300) 
	EndIf
	;;;;;;;;;;;;;;;;;проверка мп
$CurrentMP = (_MemoryRead($MMP, $DllInformation, 'ptr'))
			$CurrentMP = dec(StringTrimLeft($CurrentMP, 14))	
	if $CurrentMP < 50 Then
	ControlSend($hWnd, "", "", $Combo9)
	sleep (100)
	
	EndIf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
	
		$MobXP = (_MemoryRead($XP, $DllInformation, 'ptr'))		
$MbXP = dec(StringTrimLeft($MobXP, 10))
$n = $n + 1
WEnd










loot ()
EndIf
EndFunc	


Func loot()
If $botting = 1 Then ;Если бот включен

Opt('SendKeyDelay', 250)
Opt('SendKeyDownDelay', 100)





  

 
ControlSend($hWnd, "", "", $Combo10)


sleep (300)  
ControlSend($hWnd, "", "", $Combo10)

$CurrentNameLoot = _MemoryRead( $NameLoot, $DllInformation, 'char[100]')	
 TrayTip("подбираем",$CurrentNameLoot,0)

sleep (300)  
ControlSend($hWnd, "", "", $Combo10)

$CurrentNameLoot = _MemoryRead( $NameLoot, $DllInformation, 'char[100]')	
 TrayTip("подбираем",$CurrentNameLoot,0)
sleep (300)  
target()
EndIf

EndFunc



Func baff ()
If $botting = 1 Then ;Если бот включен
Opt('SendKeyDelay', 250)
Opt('SendKeyDownDelay', 100)
TrayTip("Бафаемся",0, 0)	
Global $begin = TimerInit()
	sleep (100)	
	ControlSend($hWnd, "", "", "{F1}")
	sleep (100)
ControlSend($hWnd, "", "", $Combo8)
Sleep (3000)
ControlSend($hWnd, "", "", $Combo5)
sleep (3000)
ControlSend($hWnd, "", "", $Combo6)
sleep (3000)
ControlSend($hWnd, "", "", $Combo7)
sleep (3000)
EndIf
target ()

EndFunc


  EndIf
Wend

Func Kopat ()
$Combo10 = GUICtrlRead($Combo10)
$botting = 1 
While 1
If $botting = 1 Then 	
ControlSend($hWnd, "", "", "{F10}")
sleep (3000)
ControlSend($hWnd, "", "", $Combo10)
Sleep (100)
EndIf
Wend
EndFunc

;func regen()
;	sleep (1000)	
;	ControlSend($hWnd, "", "", "9")
;	sleep (1000)	
;	Do
;	$DllInformation = _MemoryOpen($ProcessID)
;	$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
;	$CurrentHP = dec(StringTrimLeft($CurrentHP, 10))
 ;    $hp1 = $CurrentHP 
	;$DllInformation = _MemoryClose($ProcessID)
;	TrayTip("Хилимся",$hp1,0)
 ;   
	;sleep (1000)	 

;$DllInformation = _MemoryOpen($ProcessID)
;	$MaxHP = (_MemoryRead($MxHP, $DllInformation, 'ptr'))
;			
;			$MaxHP = dec(StringTrimLeft($MaxHP, 10))
 ;   $hp2 = $MaxHP 
	;$DllInformation = _MemoryClose($ProcessID)
	;TrayTip("Хилимся",$hp2,0)
	;sleep (2000)
	;Until $hp1 = $hp2
	
	;target()
;EndFunc















Func CLOSE_PROGRAM()
    TrayTip("Нееет!не убивай меня",0,0)
    Exit
EndFunc


Func BOT_START()
    TrayTip("Понеслась...", 0, 0) ;Включить надпись
    $botting = 1 ;Включить бота
    $Combo1 = GUICtrlRead($Combo1)
	$Combo2 = GUICtrlRead($Combo2)
	$Combo3 = GUICtrlRead($Combo3)
	$Combo5 = GUICtrlRead($Combo5)
	$Combo6 = GUICtrlRead($Combo6)
    $Combo7 = GUICtrlRead($Combo7)
	$Combo8 = GUICtrlRead($Combo8)
	$Combo9 = GUICtrlRead($Combo9)
	$Combo10 = GUICtrlRead($Combo10)
	$Combo11 = GUICtrlRead($Combo11)

baff()
EndFunc

Func BOT_STOP()
    TrayTip("Стоять зорька!",0,0) ;Выключить надпись
    $botting = 0 ;Выключить бота

EndFunc

Func BOT_START2()
    TrayTip("Понеслась...", 0, 0) ;Включить надпись
 $botting = 1 
 Target()
EndFunc




PS Люди помогите победить рекурсию !!! :wacko:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: [Автоматизация] Бот для игры Фантазиум \"Счастливый Фармер\"

Уважуха, я тож хотел для Фантазиума бота написать, скачал клиент, но таки руки не дошли :(


Добавлено:
Сообщение автоматически объединено:

Чтобы победить рекурсию - зачастую проще сразу же написать бота без рекурсии. Можешь посмотреть исходник минибота для Fly For Fun тут на форуме лежит, или же бота для евы например в теме про "Пишем за несколько часов".
 

LionK

Новичок
Сообщения
1
Репутация
0
молодец конечно, с интерфейсом, прикольно.......
но сегодня уже не работает...... nProtect GameGuard поставили.... как обойти ни кто не знает?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Погугли, разработка не российская, значит уже давно у пендосов работает, значит они давно научились отключать его.
 
Верх