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

[Q] Pytanka


Rekomendowane odpowiedzi

Opublikowano

Siemanko, trochę już programuję w Au3 właściwie już teraz stało się to moim hobby, przychodzę do was z kilkoma pytaniami może zacznę od najprostszego:

 

1.Jak w Koda/inaczej zrobić na formie cuś takiego : 90731381120685919578.png

2.Jak mniej więcej zaimplementować cząstkę C++ do Au3?, da się zaimplementować wątki ?

 

Temat będę odświeżał jeśli będę miał jakieś jeszcze pytania (nie będę spamował forum)

Opublikowano

1. O co konkretnie chodzi? O tytuł czy kwadratowy X ?

2. Korzystając z DLL napisanych w C++, mozesz uzywac z nich funkcji w autoit :)

Opublikowano

1. Bodajże styl APP TOOL WINDOW czy jakoś tak, nie wiem jak w koda, bo nigdy tego nie używałem

2. DLL. Wątków nie osiągniesz, nawet przez dllcall funkcji z kernela CreateThread, bo nie będziesz mógł podać właściwych parametrów. Chyba, że wszystko to zrobisz w C++, tam ją będziesz wywoływać, tam przygotujesz parametry, a z poziomu autoit zrobisz tylko DLLcall funkcji ze swojego liba. (moje gdybanie, nawet nie wiem jak by to wyglądało w praktyce)

Opublikowano

GUICreate("", asc("J")+asc("E")+asc("D"), asc("N")+asc("A")+asc("K"),asc("D")+asc("Z")+asc("I"),asc("A")+asc("L")+asc("A"),-1 ,0x00000080);$WS_EX_TOOLWINDOW

z ukrytym przesłaniem

Opublikowano

Nawet jak dodam sobie ten parametr to nie działa, program się kompiluje a gui nie wyświetla:


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Sapphire Bot", 476, 220, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
$Tab1 = GUICtrlCreateTab(0, 0, 473, 217)
$TabSheet1 = GUICtrlCreateTabItem("Informations")
$Button1 = GUICtrlCreateButton("Button1", 44, 101, 75, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Button2 = GUICtrlCreateButton("Button2", 44, 125, 75, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$TabSheet2 = GUICtrlCreateTabItem("Healing")
$TabSheet3 = GUICtrlCreateTabItem("Tools")
$TabSheet4 = GUICtrlCreateTabItem("Cavebot")
$TabSheet5 = GUICtrlCreateTabItem("Targeting")
$TabSheet6 = GUICtrlCreateTabItem("Looter")
$TabSheet7 = GUICtrlCreateTabItem("Settings")
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

EndSwitch
WEnd

 

Rozwiązany problem, po skompilowaniu x5 kodu up działa <lol2>

44363835444509914481.png

Opublikowano

Ok następne 2 pytanka:

1. Czy istnieje jakaś biblioteka pozwalająca wysyłać pakiety?

2.Timery (kilka) mogą działać na raz ? Np mam odpalony Timer 1, Timer 2, Timer 3 w tym samym czasie. (wiem głupie pytanie ale w C++ zawsze korzystałem z wątków)

Opublikowano

Z tego c o wiem [a mogę się mylić bo za dużo nie wiem] to w autoit nie można robić dwóch rzeczy na raz.

comment_aKm2b5jSiJgvkhmrlSzZ5Yc80OK7Mzta

Opublikowano

@up

 

mylisz się bo można

 

Ok następne 2 pytanka:

1. Czy istnieje jakaś biblioteka pozwalająca wysyłać pakiety?

2.Timery (kilka) mogą działać na raz ? Np mam odpalony Timer 1, Timer 2, Timer 3 w tym samym czasie. (wiem głupie pytanie ale w C++ zawsze korzystałem z wątków)

 

 

2.

 

Owszem. Są na to przynajmniej dwa sposoby.

 

1. Funkcja AdlibRegister

2. Biblioteka Timers.au3 (poradnik)

Opublikowano

2.Jak mniej więcej zaimplementować cząstkę C++ do Au3?

 

Tworzysz bibliotekę w C++ i wywołujesz funkcje za pomocą DllCall.

 

 

da się zaimplementować wątki ?

Googluj "multithreaded DLL"

 

------------------------------------------

 

1. Wszystkie funkcje TCP* w AutoIcie. A do komunikacji HTTP/FTP: WinINet.au3 ( pierwszy wynik z google ). Projekt WinHttp.au3 chyba umarł.

2. Tak, możesz mieć dużo timerów.

Ta sygnatura jest pusta.

Opublikowano

 

#include <Timers.au3>

$Form = GUICreate("Test", 10, 10)

Dim $a = 0, $b = 0

_Timer_SetTimer($Form, 1000, "_Func_A")
_Timer_SetTimer($Form, 1000, "_Func_B")

While 1
If GUIGetMsg() = -3 Then Exit
Sleep(10)
WEnd

Func _Func_A($1, $2, $3, $4)
$a += 1
MsgBox(0, "Funkcja A", "Wartość: " & $a)
EndFunc

Func _Func_B($5, $6, $7, $8)
$b += 1
TrayTip("Funkcja B", "Wartość: " & $b, 1)
EndFunc

 

 

Jest wielowątkowość? Jest!

Normalnie MsgBox zatrzymywałby cały skrypt, czyli główny thread..

Jak widać tutaj nawet przy zapauzowaniu z tray'a, skrypt nadal śmiga, dzięki 2 dodatkowym wątkom..

Opublikowano

...wtrącę się APO wielowątkowości, że można jeszcze kombinować z pisaniem osobnych skryptów które wysyłałyby wyniki swoich wypocin np. do ukrytego GUI (co prawda nie wiem czy się tak da), albo zapisywały do pliku.

Temat jest do dyskusji, bo jest pewnie jeszcze w grom takich sposobów :)

Co ciekawe takowej wielowątkowości używają chyba tylko funkcji InetGet i Timery (lib TImers.au3 + TimerDiff i TimerInit) (nie zatrzymują programu).

846331404756772371599.jpeg
Opublikowano

A ja z kolei chciałbym powałkować temat odczytywania adresów z jakże okrytej złą sławą grą Tibia !

Mianowicie czy ktoś z was posiada już takie umiejętnośći ? ;d

 

Więc tak, na forum udostępniono funkcje do base adressu:

 

 

;===================================================================================================

; Function........:  _MemoryGetBaseAddress($ah_Handle, $iHD)
;
; Description.....:  Reads the 'Allocation Base' from the open process.
;
; Parameter(s)....:  $ah_Handle - An array containing the Dll handle and the handle of the open
;							   process as returned by _MemoryOpen().
;					$iHD - Return type:
;					   |0 = Hex (Default)
;					   |1 = Dec
;
; Requirement(s)..:  A valid process ID.
;
; Return Value(s).:  On Success - Returns the 'allocation Base' address and sets @Error to 0.
;					On Failure - Returns 0 and sets @Error to:
;				  |1 = Invalid $ah_Handle.
;				  |2 = Failed to find correct allocation address.
;				  |3 = Failed to read from the specified process.
;
; Author(s).......:  Nomad. Szhlopp.
; URL.............:  http://www.autoitscript.com/forum/index.php?showtopic=78834
; Note(s).........:  Go to Www.CheatEngine.org for the latest version of CheatEngine.
;===================================================================================================
Func _MemoryGetBaseAddress($ah_Handle, $iHexDec = 0)

Local $iv_Address = 0x00100000
Local $v_Buffer = DllStructCreate('dword;dword;dword;dword;dword;dword;dword')
Local $vData
Local $vType

If Not IsArray($ah_Handle) Then
	SetError(1)
	Return 0
EndIf


DllCall($ah_Handle[0], 'int', 'VirtualQueryEx', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer))

If Not @Error Then

	$vData = Hex(DllStructGetData($v_Buffer, 2))
	$vType = Hex(DllStructGetData($v_Buffer, 3))

	While $vType <> "00000080"
		DllCall($ah_Handle[0], 'int', 'VirtualQueryEx', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer))
		$vData = Hex(DllStructGetData($v_Buffer, 2))
		$vType = Hex(DllStructGetData($v_Buffer, 3))
		If Hex($iv_Address) = "01000000" Then ExitLoop
		$iv_Address += 65536

	WEnd

	If $vType = "00000080" Then
		SetError(0)
		If $iHexDec = 1 Then
			Return Dec($vData)
		Else
			Return $vData
		EndIf

	Else
		SetError(2)
		Return 0
	EndIf

Else
	SetError(3)
	Return 0
EndIf

EndFunc   ;==>_MemoryGetBaseAddress
#endregion

 

 

Przy używaniu takowej funkcji base adress wynosi 0

 

Wywołanie funkcji:

 

$hp = _MemoryGetBaseAddress($memory)

 

 

Cały kod:

 

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Ultimate Icon.ico
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ComboConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Nomad.au3>
#include <Timers.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Healer", 221, 150, 192, 124)
$Button5 = GUICtrlCreateButton("Start Health", 8, 8, 150, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $pid = ProcessExists("Tibia.exe")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button5
$memory = _MemoryOpen($pid)
$hp = _MemoryGetBaseAddress($memory)
MsgBox (0,"Your hp is:" & $hp,"Your hp is:" & $hp)


EndSwitch
WEnd

 

Opublikowano

Kurwa po co piszesz skoro się nie znasz?

Myślisz że nie umiem używać takiej biblioteki, nie jestem idiotą.

Opublikowano

@up

 

Zobacz czy działa na tutku cheat-engine'a..

To jest STEP 2..

 

#include <NomadMemory.au3>

$pid = ProcessExists("Tutorial-i386.exe")
$process = _MemoryOpen($pid)
$base = _MemoryModuleGetBaseAddress($pid, "Tutorial-i386.exe")
$read = _MemoryRead($base + 0x17C310, $process)
$final = _MemoryRead($read + 0x458, $process)

MsgBox(0, "", "" & $final)

 

Jeśli działa, to wina leży po stronie tej cholernie lipnej gry ^^

Opublikowano

Generalnie to z gry się da odczytywać np w c++ działa ale chodzi mi tutaj o to że nawet nie zczytuje base adresu tą funkcją co wyżej napisałem a powinno, w przypadku jej użycia base wynosi niby 0 czyli coś nie poprawnie odczytuje bo powinno być ~10 tysięcy

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...