Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bot w autoit


Rekomendowane odpowiedzi

Opublikowano

Witam serdecznie, próbuję napisać bota do gry dragon ball legends ( przeróbka tibii na jej silniku) 

Chodzi o używanie hotkeyów. Mianowicie mój skrypt wygląda tak : 

#include <NomadMemory.au3>#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$PID = ProcessExists('Tibia.exe')
$Memory = _MemoryOpen($PID)
$baseAdress = _MemoryGetBaseAddress($MO, 1)
;~ MsgBox(0, '', $BaseAdress);baseadress


$Form = GUICreate("TiBot", 156, 222, 14, 107)
$Heal = GUICtrlCreateCheckbox("Heal", 8, 10, 97, 17)
$Skill = GUICtrlCreateCheckbox("Skill", 8, 30, 97, 17)
$Label1 = GUICtrlCreateLabel("", 8, 56,150, 17)
GUISetState(@SW_SHOW)
WinSetOnTop( $Form, "",1 )
WinSetTrans($Form, '', 100)






$PlayerHealth = 0x7e2cd4 - 0x400000 + $baseAdress;hp
$PlayerHealthMax = 0x81cea0 - 0x400000 + $baseAdress;hpmax
$PlayerMana = 0x81ce5c - 0x400000 + $baseAdress;mp




$glod = 0;wrazie gdybysmy mieli food w bp




$Timer = TimerInit()
$Timer_Heal = TimerInit()
$Timer_skill = TimerInit()
$Timer_Food = TimerInit()


Do
        If TimerDiff($Timer) >= 500 Then
                $Timer = TimerInit()
                $HP = _MemoryRead($PlayerHealth, $Memory);czyta z pamieci gry ilosc hp
                $HPMax = _MemoryRead($PlayerHealthMax, $Memory);hpmsx
                $MP = _MemoryRead($PlayerMana, $Memory);mp
                $hp_gdy_lecz = ($HP * 100) / $HPMax;zamienia hp na %
                GUICtrlSetData($Label1, "HP: " & $HP & "   " & "MP: " & $MP)
        EndIf
        If TimerDiff($Timer_Food) >= 779800 Then
                $Timer_Food = TimerInit()
                $glod = 0
        EndIf
        Switch GUICtrlRead($Heal)
                Case 1
                        Heal()
        EndSwitch
        Switch GUICtrlRead($Skill)
                Case 1
                        Skill()
        EndSwitch


Until GUIGetMsg() = -3


Func Heal()
        If TimerDiff($Timer_Heal) >= 950 Then
                $Timer_Heal = TimerInit()
                If $hp_gdy_lecz < 90 Then
                        If $MP >= 40 Then
                                ControlSend("[CLASS:TibiaClient]", "", "", "{f12}")
                        Else
                                ControlSend("[CLASS:TibiaClient]", "", "", "{f11}")
                        EndIf
                Else
                        If $glod = 0 Then
                                ControlSend("[CLASS:TibiaClient]", "", "", "{f1}")
                        EndIf
                EndIf
        EndIf
EndFunc   ;==>Heal
Func Skill()
        If TimerDiff($Timer_skill) >= 950 Then
                $Timer_skill = TimerInit()
                If $MP >= 40 Then
                        ControlSend("[CLASS:TibiaClient]", "", "", "{f12}")
                ElseIf $glod = 0 Then
                        ControlSend("[CLASS:TibiaClient]", "", "", "{f1}")
                        $glod = 1
                elseif $hp < 1000 then
                        ControlSend("[CLASS:TibiaClient]", "", "", "{f11}")
                        ControlSend("[CLASS:TibiaClient]", "", "", "{f12}")
                EndIf
        EndIf
EndFunc   ;==>Skill

I wyskakuje mi błąd przy baseAdress i nie wiem co zrobić. Skrypt nie jest do końca mój. Wziąłem go z jakiegoś forum, ale starałem się go przerobić tak aby działał. Po 3h się poddałem i tu wam wklejam oryginał z tego forum. Moglibyście go przerobić dla mnie tak, żeby działał? Bardzo pilnie tego potrzebuję i będę zobowiązany :)

Ewentualnie mógłby mi ktoś podesłać skrypt na wciskanie odpowiednio f12, f11, a powtórzenie pętli będzie po około 2.5 sekundach i żeby mogłoby to działać w tle i obejmować tylko proces tibia.exe? Bardzo mi na tym zależy.

Opublikowano

jestem w tym zielony, znam kompilator od wczoraj, nie wiem o czym do mnie mówisz. Mógłbyś w jakiś sposób mi to przybliżyć?

Opublikowano

Poszukaj sobie sam offsetów w grze,  tutoriale sa zawarte w Cheat Engine. Naucz się albo użyj google by sobie znaleźć aktualne offsety na jakimś forum.

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Nie, masz sobie je poszukać w grze za pomocą Cheat Engine 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Okej, zrobiłem wg. youtubowego poradnika wszyściuteńko. Skrypt nadal nie działa. Wciskam F5, niby ładuje, ale się nic nie otwiera. Co zrobić? Wyskakuje mi błąd o treści:

"System windows nie może uzyskać dostępu do określonego urządzenia, ścieżki, lub pliku. Możesz nie mieć odpowiednich uprawnień, by uzyskać dostęp do elementu."

Próbowałem uruchamiać jako administrator. Włączył się na chwile, po czy wyłączył i znów ww. komunikat się wyświetlił.

Edit: Program działa, ale się od razu zawiesza po wpisaniu danych, a po chwili mam bluescreen i już nie mogę nic zrobić.

Opublikowano


#Region ;**** Directives created by AutoIt3Wrapper_GUI ****

#AutoIt3Wrapper_Outfile_type=a3x

#AutoIt3Wrapper_Compile_Both=y

#AutoIt3Wrapper_UseX64=y

#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ButtonConstants.au3>

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <NomadMemory.au3>

#include <Timers.au3>

#Region ### START Koda GUI section ### Form=

$Form1 = GUICreate("ki level", 155, 257, 192, 124)

$Button1 = GUICtrlCreateButton("Spell caster", 40, 8, 75, 25)

$Input1 = GUICtrlCreateInput("Czar", 16, 40, 121, 21)

$Input2 = GUICtrlCreateInput("Mana", 16, 64, 121, 21)

$Button2 = GUICtrlCreateButton("Anty - idle", 40, 96, 75, 25)

$Input3 = GUICtrlCreateInput("Czas", 16, 128, 121, 21)

$Input4 = GUICtrlCreateInput("Jedzenie fooda", 16, 192, 121, 21)

$Button3 = GUICtrlCreateButton("Guzik", 40, 160, 75, 25)

$Input5 = GUICtrlCreateInput("Czas", 16, 216, 121, 21)

GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

 

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $Button1

Global $pid = ProcessExists("Tibia.exe")

$memaaa = _MemoryOpen($pid)

_Timer_SetTimer($form1,500,"spell")

Case $Button2

$ff = GUICtrlRead($Input3)

$ff *=1000

_Timer_SetTimer($form1,$ff,"afk")

Case $Button3

$ks = GUICtrlRead($Input4)

$ksks = GUICtrlRead($Input5)

EndSwitch

WEnd

 

func food($1, $2, $3, $4)

controlsend("Dragon", " Ball", " Legend", $ks)

EndFunc

func afk()

controlsend("tibia.exe", "", "", "(ctroldown) (down) (ctrlup)")

controlsend("tibia.exe", "", "", "(ctroldown) (left) (ctrlup)")

controlsend("tibia.exe", "", "", "(ctroldown) (right) (ctrlup)")

controlsend("tibia.exe", "", "", "(ctroldown) (up) (ctrlup)")

EndFunc

func spell()

$kk = GUICtrlRead($input2)

$mem = _MemoryRead(0x5B2011A0, $memaaa)

if $mem >=$kk Then

controlsend("Dragon", "Ball", "Legend",guictrlread($input1))

controlsend("Dragon", "Ball", "Legend", "(enter)")

EndIf

EndFunc

  • 2 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...