text in game

  • hallo, ich benutze "SplashTextOn" eigentlich recht gerne, doch es gibt fälle in dem das "SplashTextOn" nicht OnTop zu sehen ist.
    Wie kann man es anstellen bzw. gibt es noch eine andere möglichkeit einen hinweis sichtbar zu machen?

    Doktore

    Einmal editiert, zuletzt von Dr.Galvany (2. September 2006 um 14:19)

    • Offizieller Beitrag

    Das kann nur 2 Ursachen haben, entweder hast du beim Parameter Opt das OnTop ausgeschaltet oder ein anderes Fenster hat nach dem Splash-Fenster den OnTop-Status bekommen. Abhilfe könnte ein WinSetOnTop auf das Splash-Fenster shaffen.

  • hallo bernd genau so ist es! :)

    aber ich komme einfach nicht darauf, wie ich das "WinSetOnTop" hier setzen kann.

    [autoit]

    SplashTextOn("", "Hallo test", 100, 15, 0, 0, 1, "Arial", "8")
    Sleep(1500)
    SplashOff()

    [/autoit]

    Doktore

    • Offizieller Beitrag

    Mein Tipp ist zwar teuer, aber sinnvoll:
    Wenn du zwei Monitore hast (oder 3 *bg*), kannst du auf dem nicht von den Spielen benutzten ganz einfach Infos anzeigen.
    Spiele setzen deinen Bildschirm in einen DirectX- oder OpenGL-Modus, in dem sie fast die vollständige Kontrolle über das bekommen, was angezeigt wird.

    peethebee

  • hallo, das habe ich leiter nicht :(

    gibt es eine andere möglichkeit, das ich dann die spiel engine beeinflussen kann?

    da hatte ich mal einen cheat, der im spiel (cs1.5) mir alles wunderbar angezeigt hatte.

    Doktore

  • Also das ist mal was gutes, woran ich mich mal bald auseinander setzen werde ;)

    http://www.codeguru.com/cpp/g-m/direct…icle.php/c11453

    Da steht schonmal was nettes ;)

    Nebenbei werde ich mal das Team von XFire fragen, denn die haben sowas ja gemacht (Text und Bilder auf Games zeichnen..Bin ja ein alter bekannter ;) )

    Ansonsten lese ich mir jetzt erstmal die oben genannte Seite durch. Vielleicht steht da was nützliches.

    • Offizieller Beitrag

    Hi,

    kannst das ja mal probieren:

    [autoit]

    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $hwnd = GUICreate("Text Region", 400, 50, -1, -1, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
    GUISetBkColor(0x00FF00)

    [/autoit][autoit][/autoit][autoit]

    $rgn = CreateTextRgn($hwnd, "Health : 50 " & "Mega", 50, "Arial", 1000)
    SetWindowRgn($hwnd, $rgn)

    [/autoit][autoit][/autoit][autoit]

    GUISetState()
    Sleep(3000)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func SetWindowRgn($h_win, $rgn)
    DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $rgn, "int", 1)
    EndFunc ;==>SetWindowRgn

    [/autoit][autoit][/autoit][autoit]

    Func CreateTextRgn(ByRef $CTR_hwnd, $CTR_Text, $CTR_height, $CTR_font = "Microsoft Sans Serif", $CTR_weight = 1000)
    Local Const $ANSI_CHARSET = 0
    Local Const $OUT_CHARACTER_PRECIS = 2
    Local Const $CLIP_DEFAULT_PRECIS = 0
    Local Const $PROOF_QUALITY = 2
    Local Const $FIXED_PITCH = 1
    Local Const $RGN_XOR = 3

    If $CTR_font = "" Then $CTR_font = "Microsoft Sans Serif"
    If $CTR_weight = -1 Then $CTR_weight = 1000
    Local $gdi_dll = DllOpen("gdi32.dll")
    Local $CTR_hDC = DllCall("user32.dll", "int", "GetDC", "hwnd", $CTR_hwnd)
    Local $CTR_hMyFont = DllCall($gdi_dll, "hwnd", "CreateFont", "int", $CTR_height, "int", 0, "int", 0, "int", 0, _
    "int", $CTR_weight, "int", 0, "int", 0, "int", 0, "int", $ANSI_CHARSET, "int", $OUT_CHARACTER_PRECIS, _
    "int", $CLIP_DEFAULT_PRECIS, "int", $PROOF_QUALITY, "int", $FIXED_PITCH, "str", $CTR_font)
    Local $CTR_hOldFont = DllCall($gdi_dll, "hwnd", "SelectObject", "int", $CTR_hDC[0], "hwnd", $CTR_hMyFont[0])
    DllCall($gdi_dll, "int", "BeginPath", "int", $CTR_hDC[0])
    DllCall($gdi_dll, "int", "TextOut", "int", $CTR_hDC[0], "int", 0, "int", 0, "str", $CTR_Text, "int", StringLen($CTR_Text))
    DllCall($gdi_dll, "int", "EndPath", "int", $CTR_hDC[0])
    Local $CTR_hRgn1 = DllCall($gdi_dll, "hwnd", "PathToRegion", "int", $CTR_hDC[0])
    Local $CTR_rc = DllStructCreate("int;int;int;int")
    DllCall($gdi_dll, "int", "GetRgnBox", "hwnd", $CTR_hRgn1[0], "ptr", DllStructGetPtr($CTR_rc))
    Local $CTR_hRgn2 = DllCall($gdi_dll, "hwnd", "CreateRectRgnIndirect", "ptr", DllStructGetPtr($CTR_rc))
    DllCall($gdi_dll, "int", "CombineRgn", "hwnd", $CTR_hRgn2[0], "hwnd", $CTR_hRgn2[0], "hwnd", $CTR_hRgn1[0], "int", $RGN_XOR)
    DllCall($gdi_dll, "int", "DeleteObject", "hwnd", $CTR_hRgn1[0])
    DllCall("user32.dll", "int", "ReleaseDC", "hwnd", $CTR_hwnd, "int", $CTR_hDC[0])
    DllCall($gdi_dll, "int", "SelectObject", "int", $CTR_hDC[0], "hwnd", $CTR_hOldFont[0])
    DllClose($gdi_dll)
    Return $CTR_hRgn2[0]
    EndFunc ;==>CreateTextRgn

    [/autoit]

    So long,

    Mega

  • Zitat

    Original von XxXFaNtA
    Also das ist mal was gutes, woran ich mich mal bald auseinander setzen werde ;)

    http://www.codeguru.com/cpp/g-m/direct…icle.php/c11453

    Da steht schonmal was nettes ;)

    Nebenbei werde ich mal das Team von XFire fragen, denn die haben sowas ja gemacht (Text und Bilder auf Games zeichnen..Bin ja ein alter bekannter ;) )

    Ansonsten lese ich mir jetzt erstmal die oben genannte Seite durch. Vielleicht steht da was nützliches.

    hehe, das ist sicher die lösung.
    nur schade, das ich so schlecht englisch kann lol :weinen:

    Doktore

  • @th.meger

    Genau das hab ich gestern bevor ich meinen Post geschrieben hab getestet ;)

    Naja...auf der Seite steht halt, dass die das über einen Proxy machen.
    Der fängt das da irgendwie ab, läd seine Sachen dazu, und verschickt es dann weiter. Hab mir das net genau durchgelesen.

    Müsste man mal die Leute ausm Englishen Forum fragen, die können damit bestimmt was zaubern ;)

  • Leider noch net ;)

    Das XFire Team hat mir noch keine auskunft gegeben, ich frag sie aber trotzdem weiter ;)

  • des ist richtig cool was ihr da programiert habt^^ des ist eigentlich auch ne lösung für mein nächstes problem also brauch ich gar nicht erst nachfragen wie das geht es sei des irgendwas geht nicht so wie ich das haben will^^
    auch ein THX von mir ;)