Text ingame anzeigen per Autoit ?

05/18/2009 21:42 reyas#1
Hy Leute!
ich spiele mich zZ mit memorys in ROSE online.
ich will zB jetz die exps die ich bis zum lvl up brauche ingame anzeigen.
wie kann ich diesen text jetzt dort ingame anzeigen.
mit cpp könnte man dies durch D3D regeln. nur will ich das ganze mit AutoIt machen und wollte nun fragen ob dies möglich ist.

mfg reyas
05/18/2009 22:28 __wadim#2
proxy dll (gpcomms.dll) von mikoweb.eu benutzen. da sind funktionen wie:
GPSL_SetTextLineData
GPSL_ShowText
05/19/2009 12:10 Adroxxx#3
Falsches Forum -> moved
05/19/2009 12:33 reyas#4
hmm. funktioniert doch noch ned :/

also ich hab jetz die dll gecalled mit dem befehl den ich will und auch die einzelnen parameter in der funktion so eingestellt wie ich will.

PHP Code:
dllcall("gpcomms.dll","int","GPSL_ShowText")
GPSL_ShowText(1)
dllcall("gpcomms.dll","int""GPSL_SetTextLineData")
GPSL_SetTextLineData(200,200,$expleft,0xFF000000,0,150,1
das prog startet sich. und stürzt sofort wieder ab
mit folgendem fehler
PHP Code:
>Exit code: -1073741819    Time1.729 
07/10/2009 00:54 wildstylish#5
ich habs getestet in autoit 3.3 und hab folgendes geändert:
"int" => "bool" also einfach die integer durch booleans ersetzt dann hat schonmal das callen geklappt aber die funktionen erkennt er so net zumindest bei mir^^

PHP Code:
DllCall("gpcomms.dll""bool""GPSL_ShowText""bool"1)
DllCall("gpcomms.dll""bool""GPSL_SetTextLineData""word"10"word"10"lpctstr"$text 0x0"dword"0xffffffff"bool"True"byte"10"bool"False
auf die weise hab ich es mal versucht; return: 0 also irwie hab ich das mit dem callen nicht so ganz begriffen pls help :p
07/10/2009 14:04 __wadim#6
Code:
Func TextWriteLine($dll, $text, $ObjectNumber = 1, $PosX = 15, $PosY = 15, $SizeX = 600, $SizeY = 300, $TextColor = 0x9CFF00, $TextTrans = 455, $BlackBackground = 0, $FontSize = 18, $TextBold = 1)
	If $TextTrans > 255 Then $TextTrans = 255
	If $TextTrans < 0 Then $TextTrans = 0
	$colorges = $TextColor + $TextTrans * 0x01000000
	If $dll = -1 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPSL_SetTextLineData", "Int", $ObjectNumber, "ushort", $PosX, "ushort", $PosY, "Str", $text, "Int", $colorges, "Int", $BlackBackground, "Int", $FontSize, "Int", $TextBold, "Int", 1)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPSL_ShowText", "Int", $ObjectNumber, "Int", 1)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
EndFunc   ;==>TextWriteLine

Func NewPicture($PathToFile, $ShowIt, $PosX, $PosY)
	$return = DllCall($dll, "Int", "GPPIC_LoadNewPicture", "Str", $PathToFile)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPPIC_ShowPicturePos", "Str", $ShowIt, "ushort", $PosX, "ushort", $PosY)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
EndFunc   ;==>NewPicture
wie man die funktionen aufruft, kannst du dir wohl selbst erklären ;)
07/10/2009 20:27 wildstylish#7
musste da bei newpicture was ändern, dass es klappte.
Func NewPicture($dll, $PathToFile, $ShowIt, $PosX, $PosY)

funktioniert soweit nur von den fehlern her fehlerfrei zeigt mir aber weder text noch bild an. verwendet hab ich ne bmp.
schreibt bitte, falls jemandem noch was einfällt (was ich nicht glaube) :>

edit: funktioniert es bei guild wars ÜBERHAUPT oder sind alle bemühungen vergebens? :D
07/10/2009 21:27 __wadim#8
na klar funktionierts bei guild wars! hast du die dll überhaupt injeziert?
[Only registered and activated users can see links. Click Here To Register...]
07/10/2009 22:07 wildstylish#9
oh man muss man die injecten um sie zu callen xD
k mach ich mal :S

und wie calle ich die jetzt???
07/10/2009 22:13 kknb#10
he thx funktioniert super, werde mich mal bisl intensiver damit beschäftigen.

[Only registered and activated users can see links. Click Here To Register...]
07/10/2009 22:23 wildstylish#11
wie haste es denn gemacht?

am besten würde man mir helfen in dem man den teil zeigt wie die funktion aufgerufen wird das würde mir sehhhhr helfen. dann kann ich mir ein eigenes bild machen :)
07/10/2009 22:51 kknb#12
aber jetzt habe ich auch mal ne frage, warum funktionieren keine zeilenumbrüche?
07/10/2009 22:56 Rosemarie Lein#13
So, ich hab das vor ewiger zeit mal ausprobiert und bin genau wie jetzt kläglich gescheitert.

In meinem Guild Wars Verzeichnis habe ich diese dlls:
-d3d9.dll, d3dx9_27.dll, gpcomms.dll und die GPHook.dll
Dieses paket von Mikoweb.eu halt.

Dann habe ich noch dieses Script:
Code:
$dll = DllOpen("gpcomms.dll")

Func TextWriteLine($dll, $text, $ObjectNumber = 1, $PosX = 15, $PosY = 15, $SizeX = 600, $SizeY = 300, $TextColor = 0x9CFF00, $TextTrans = 455, $BlackBackground = 0, $FontSize = 18, $TextBold = 1)
	If $TextTrans > 255 Then $TextTrans = 255
	If $TextTrans < 0 Then $TextTrans = 0
	$colorges = $TextColor + $TextTrans * 0x01000000
	If $dll = -1 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPSL_SetTextLineData", "Int", $ObjectNumber, "ushort", $PosX, "ushort", $PosY, "Str", $text, "Int", $colorges, "Int", $BlackBackground, "Int", $FontSize, "Int", $TextBold, "Int", 1)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPSL_ShowText", "Int", $ObjectNumber, "Int", 1)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
EndFunc   ;==>TextWriteLine

Func NewPicture($PathToFile, $ShowIt, $PosX, $PosY)
	$return = DllCall($dll, "Int", "GPPIC_LoadNewPicture", "Str", $PathToFile)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
	$return = DllCall($dll, "Int", "GPPIC_ShowPicturePos", "Str", $ShowIt, "ushort", $PosX, "ushort", $PosY)
	If @error > 0 Or $return = 0 Then
		SetError(1)
		Return (-1)
	EndIf
EndFunc   ;==>NewPicture
TextWriteLine($dll, "Test")
So, ich starte Guildwars und führe dann das Script aus. Nichts passiert.:p

Ich denke ich muss die gpcomms.dll noch manuell injizieren oder? Mit was mache ich das denn am besten, oder liegt der Fehler wo anders?
07/10/2009 22:59 wildstylish#14
also zeilenumbrüche sollten laut der readme mit GPML_SetTextMultilineData mit @CRLF funktionieren.
leider funktioniert es bei mir immer noch nicht :/ kannst du vielleicht mir sagen wie du es gemacht hast? ich habs jetzt injectet auf die weise versucht auf die andere und ich fang gleich an zu heulen...
07/10/2009 23:08 Atheuz#15
Quote:
Originally Posted by __wadim View Post
na klar funktionierts bei guild wars! hast du die dll überhaupt injeziert?
[Only registered and activated users can see links. Click Here To Register...]
GameDeception Crosspost, du noob xP