Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 15:01

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Physiker gesucht.

Discussion on Physiker gesucht. within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2006
Posts: 70
Received Thanks: 19
Physiker gesucht.

hey leute, ich habe mithilfe von der autoitbot community etwas meiner meinung nach nicht schlechtes geschaffen. bei dem winhttp teil half mir simon1602.

ich machs kurz. viele werden von euch das spiel worms kennen. es basiert von der physik her auf der wurfparabel und dem stokeschen satz. (=flugbahn in abhängigkeit von wind)

ich habe also x,y koordinaten der spieler ermittelt und aufgrund der entfernung von spieler 1 zu spieler 2 unter winkel 45° ausgerechnet wie stark man schießen muss. was mir in der formel fehlt ist der gegenwind bzw wind mit dem das geschoss beschleunigt wird und ich habe keine ahnung wie ich das hinkriegen kann.

es handelt sich um das facebookspiel ddtank.


ihr könnt gerne auch den source leechen weil da paar nette sachen drin sind, aber wäre auch nett wenn mir da wer helfen könnte.

die momentane formel sieht so aus: Vo=Sqrt(g*(x*x)/((2*cos(45)*(sin(45)*x-cos(45)*y)))

ich muss da irgendwie wind reinkriegen. kann mir wer vll noch sagen wie ich die erdanziehung ermitteln könnte im spiel? momentan verwende ich einen wert den ich nach gefühl gewählt habe.

hier mal der source für alle leecher&helfer

Code:
#NoTrayIcon
#include <Misc.au3>
#include <String.au3>
#include <Array.au3>
#include <GUIConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinHTTP.au3>


Global $aLink,$i=25, $Winpos
Opt("WinTitleMatchMode", 3)
$width = 1000
$height = 700

HotKeySet("x", "self")
HotKeySet("{esc}", "ende")
HotKeySet("<", "save")
HotKeySet("y", "wurfweite")


$mail2 = InputBox("FB Login", "Enter your email.", "")
$pass2 = InputBox("FB Login", "Enter your password.", "", "*")
_getFlashFile($mail2,$pass2)




If IsArray($aLink) = True Then
	$movie ="http://s1.ddt.facebookmmo.com/" & $aLink[0]
	$filey = FileOpen("pagelink.txt", 1)
	FileWrite($filey,$movie)
GUICreate("DDTank", $width, $height, (@DesktopWidth/2)-200, (@DesktopHeight/2)-200)
GUISetBkColor(0x000000)
$flash = ObjCreate("ShockwaveFlash.ShockwaveFlash.1")
GUICtrlCreateObj($flash, 0, 0, 1000, 600)
$Label1 = GUICtrlCreateLabel("Choosen Power:", 16, 648, 240, 41)
GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel("PO", 256, 648, 50, 41)
GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$Label4 = GUICtrlCreateLabel("Recommended Power:", 320, 648, 327, 41)
GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label5 = GUICtrlCreateLabel("NA", 648, 648, 51, 41)
GUICtrlSetFont(-1, 24, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$Label6 = GUICtrlCreateLabel("DDT Buddy v1.0", 904, 672, 84, 17)
GUICtrlSetColor(-1, 0xFFFFFF)
Else
	MsgBox(48, "Achtung!", "Login nicht erfolgreich, entweder ist das Password falsch oder DDTank ist noch nicht als App hinzugefügt!")
	EndIf

With $flash
    .Movie =$movie
    .ScaleMode = 0;0 showall, 1 noborder, 2 exactFit, 3 noscale
    .bgcolor = "#000000"
    .Loop = True
    .wmode = "Opaque"
EndWith

GUISetState()

While 1
    if _IsPressed ("6B") then
		Sleep (100)
		$i += 1
		GUICtrlSetData($label3,$i)
		EndIf
	if _IsPressed ("6D") Then
		Sleep (100)
		$i -= 1
		GUICtrlSetData($Label3, $i)
		EndIf
	Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _getFlashFile($sEmail,$sPasswort)
	 
  $hOpen = _WinHttpOpen("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5")

    $hConnect = _WinHttpConnect($hOpen, "www.facebook.com")
    $sHTML = _WinHTTPRequest($hConnect, '/login.php?api_key=42495f32cc7f1f6e6fe6102600c721a6&v=1.0&next=http%3A%2F%2Fddt.facebookmmo.com%2Fs1.php&req_perms=publish_stream%2Cemail')
    $aLSD = StringRegExp($sHTML, '"lsd" value="(.+?)"', 3)
    $sHTML = _WinHTTPRequest($hConnect, '/login.php?login_attempt=1', 'charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=' & $aLSD[0] & '&next=http%3A%2F%2Fddt.facebookmmo.com%2Fs1.php&api_key=42495f32cc7f1f6e6fe6102600c721a6&return_session=0&req_perms=publish_stream%2Cemail&legacy_return=1&display=&session_key_only=0&trynum=1&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&lsd=' & $aLSD[0] & '&email=' & $sEmail & '&pass=' & $sPasswort & '&persistent=1&default_persistent=1&login=Anmelden', '', '', True, True, 1)
    _WinHttpCloseHandle($hConnect)
    $aLocation = StringRegExp($sHTML, 'Location: http://ddt.facebookmmo.com/(.*)', 3)
    If Not IsArray($aLocation) Then Return False

    $hConnect = _WinHttpConnect($hOpen, "ddt.facebookmmo.com")
    $sHTML = _WinHTTPRequest($hConnect, $aLocation[0])
    _WinHttpCloseHandle($hConnect)
    $aIframe = StringRegExp($sHTML, 'src="http://s1.ddt.facebookmmo.com/(.+?)"', 3)
    If Not IsArray($aLocation) Then Return False

    $hConnect = _WinHttpConnect($hOpen, 's1.ddt.facebookmmo.com')
    $sHTML = _WinHTTPRequest($hConnect, $aIframe[0])
    _WinHttpCloseHandle($hConnect)
    _WinHttpCloseHandle($hOpen)
    If Not IsArray($aLocation) Then Return False
    $aLink = StringRegExp($sHTML, "value='(Loading\.swf.+?)'", 3)
	
EndFunc

Func _WinHTTPRequest($hConnect, $sSite, $sPost = "", $sReferer = "", $sExtraHeaders = "", $bUseHTTPS = False, $bIsBinary = False, $iGetHeaderOnly = 0)

    ;|---------------------_WinHTTPRequest by Simon---------------------|
    ;|                                                                    |
    ;|                    Parameter für $iGetHeaderOnly:                    |
    ;|                                                                    |
    ;|                    0 = Body zurückgeben                            |
    ;|                    1 = Header zurückgeben                            |
    ;|                    2 = Header und Body zurückgeben                    |
    ;|------------------------------------------------------------------|

    Local $hRequest, $sData, $sMode = "GET", $sOptional = $WINHTTP_NO_REQUEST_DATA, $sHeaders = $WINHTTP_NO_ADDITIONAL_HEADERS, _
            $iFlags = $WINHTTP_FLAG_ESCAPE_DISABLE, $sReferers = $WINHTTP_NO_REFERER

    If $sPost <> "" Then
        $sMode = "POST"
        $sPost = StringReplace($sPost, "ä", "%C3%A4")
        $sPost = StringReplace($sPost, "ö", "%C3%B6")
        $sPost = StringReplace($sPost, "ü", "%C3%BC")
        $sPost = StringReplace($sPost, "Ä", "%C3%84")
        $sPost = StringReplace($sPost, "Ö", "%C3%96")
        $sPost = StringReplace($sPost, "Ü", "%C3%9C")
        $sPost = StringReplace($sPost, "É", "%C3%89")
        $sPost = StringReplace($sPost, "é", "%C3%A9")
        $sPost = StringReplace($sPost, "ß", "%C3%9F")
        $sPost = StringReplace($sPost, "@", "%40")
        $sOptional = $sPost
        $sHeaders = "Content-Type: application/x-www-form-urlencoded" & @CRLF
    EndIf

    If $sReferer Then $sReferers = $sReferer
    If $bUseHTTPS Then $iFlags = $WINHTTP_FLAG_SECURE
    If $sExtraHeaders Then $sHeaders &= $sExtraHeaders

    $hRequest = _WinHttpOpenRequest($hConnect, $sMode, $sSite, "HTTP/1.1", $sReferers, $WINHTTP_DEFAULT_ACCEPT_TYPES, $iFlags) ; Anfrage an die Seite stellen
    _WinHttpSendRequest($hRequest, $sHeaders, $sOptional) ; Anfrage senden.

    _WinHttpReceiveResponse($hRequest) ; Warte auf Antwort des Servers
    If _WinHttpQueryDataAvailable($hRequest) Then
        If $iGetHeaderOnly Then $sData = _WinHttpQueryHeaders($hRequest)
        If $iGetHeaderOnly == 1 Then Return $sData
        If $bIsBinary Then
            $sData &= "0x"
            While 1
                $sTempData = _WinHttpReadData($hRequest, 2)
                If @error Then ExitLoop
                $sData &= StringTrimLeft($sTempData, 2)
            WEnd
            _WinHttpCloseHandle($hRequest)
        Else
            Do
                $sData &= _WinHttpReadData($hRequest) ; Antwort aus dem Buffer lesen.
            Until @error ; bis ein fehler auftritt (übertragung abgeschlossen)
            _WinHttpCloseHandle($hRequest)
        EndIf
        Return $sData
    EndIf
EndFunc   ;==>_WinHTTPRequest

Func wurfweite()
	$g = 3
	$pi = 3.14159265358979
	$degToRad = $pi / 180
	$x0 = FileReadLine("coords.txt", 1)
	$y0 = FileReadLine("coords.txt", 2)
	$x1 = FileReadLine("coords.txt", 3)
	$y1 = FileReadLine("coords.txt", 4)
	$xdelta = $x1-$x0
	$x = Sqrt($xdelta*$xdelta)*5.7
	$ydelta = $y1-$y0
	$y = Sqrt($ydelta*$ydelta)*5.7
	$staerke = Sqrt($g*($x*$x)/((2*cos(45*$degToRad))*(sin(45*$degToRad)*$x-cos(45*$degToRad)*$y)))
	$zeit = $staerke*40
	Send ("{SPACE down}") 
	Sleep ($zeit) 
	Send ("{SPACE UP}")
	FileDelete("coords.txt")
EndFunc

Func ende() ; logischerweise: Ende xD
    FileDelete("coords.txt")
	Exit
EndFunc 

Func save() ;speichert die Koordinaten
    $file = FileOpen("coords.txt", 1)
    If $file = -1 Then Exit MsgBox(0, 'Maus-Koordinaten', 'Datei konnte nicht geöffnet werden!') ;überprüft ob die Datei schon vorhanden ist
    $WinPos = WinGetPos("DDTank")
		
	$pos = PixelSearch( $WinPos[0]+750, $WinPos[1], $WinPos[0]+1000, $WinPos[1]+200, 0xFF0000 ) 
if IsArray($pos) then
FileWrite($file, $pos[0] & @CRLF & $pos[1] & @CRLF)
Else
	MsgBox(0,"RED","was not found.")
	EndIf
	
	$pos = PixelSearch( $WinPos[0]+750, $WinPos[1], $WinPos[0]+1000, $WinPos[1]+200, 0x0033CC)  
if IsArray($pos) then
	FileWrite($file, $pos[0] & @CRLF & $pos[1] & @CRLF)
Else
	MsgBox(0,"BLUE","was not found.")
	EndIf


If IsArray($pos) = True Then
	$g = 3
	$pi = 3.14159265358979
	$degToRad = $pi / 180
	$x0 = FileReadLine("coords.txt", 1)
	$y0 = FileReadLine("coords.txt", 2)
	$x1 = FileReadLine("coords.txt", 3)
	$y1 = FileReadLine("coords.txt", 4)
	$xdelta = $x1-$x0
	$x = Sqrt($xdelta*$xdelta)*5.7
	$ydelta = $y1-$y0
	$y = Sqrt($ydelta*$ydelta)*5.7
	$staerke = Sqrt($g*($x*$x)/((2*cos(45*$degToRad))*(sin(45*$degToRad)*$x-cos(45*$degToRad)*$y)))
	GUICtrlSetData($Label5,$staerke)
Else
	MsgBox(4096,"OOPS","There is no active challenge / something gone wrong. Before scanning get into a game.")
	EndIf
	sleep(1000)
    FileClose($file)
EndFunc   ;==>save

Func self()
	$zeit1 = $i*40
	Send ("{SPACE down}") 
	Sleep ($zeit1) 
	Send ("{SPACE UP}")
EndFunc
gruß
LuckyLuke is offline  
Old 03/17/2011, 23:51   #2
 
elite*gold: 0
Join Date: Apr 2006
Posts: 70
Received Thanks: 19
scheinbar alles nur leecher hier, schwach
LuckyLuke is offline  
Old 03/18/2011, 12:42   #3
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Die erdanziehung g= 9,81 m/s². Diese Kraft wirkt senkrecht nach unten und bremst dein projektil bis zum Scheitelpunkt der Parabel ab, danach wirkt sie beschleunigend. Die Kraft des Windes wirkt parallel zum erdboden, je nach richtung wird dein projektil beschleunigt oder abgebremst. Die Einheit des Windes sollte auch in m/s² gewählt werden. Jetzt musst du nurnoch herrausfinden mit welcher Kraft dein Projektil abgefeuert wird und welche Masse es besitzt. Damit kannst du auf die Geschwindigkeit des Projektils zum Zeitpunkt des abfeuerns schließen. Davon rechnest du dann die oben aufgeführten Beschleunigungs und Abbremskräfte mit ihrer ausrichtung ein. Keine Ahnung ob die Programmierer des Spiels auch die Reibung des Projektils an den Luftteilchen mit einberechnet haben, wenn ja musst du das auch noch mit beachten.

Ist alles nur so ein Gedankenspiel, vom Prinzip her müsste es aber funktionieren, einfach rumprobieren.

Viel Spass!..
| Moep | is offline  
Old 03/18/2011, 17:02   #4
 
elite*gold: 0
Join Date: Apr 2006
Posts: 70
Received Thanks: 19
so wie ich das verstehe wird im endeffekt durch den wind v0 erhöht oder vermindert
LuckyLuke is offline  
Old 03/18/2011, 17:30   #5
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
v(t) wird durch den Wind beeinflusst bzw. v(s). V0 sollte deine Startgeschwindigkeit sein und damit konstant. Aus V0 kannst du dann v(t) bzw. v(s) iterativ berechnen. Zum Thema Luftwiderstand:


Nun könntest du einfach einen konstanten Wert a einführen, um den v(t)/v(s) erhöht verringert wird. Z.B. pro Meter um 1m/s² beschleunigt. Das wäre sicherlich das einfachste. Natürlich kannst du jetzt auch den Winkel mit einrechnen, wenn der Wind nicht 100%tig von vorne bzw. von hinten kommt:

100% Beschleunigung in Flugrichtung (negativ+positiv) = 0° Abweichung von der Windrichtung
0% Beschleunigung in Flugrichtung(negativ+positiv)= -90° und +90° Abweichung von der Windirchtung
-> pro Grad abweichung ((1/90)*100)% Weniger Beschleunigung (negativ+positiv)

Damit ergibt sich:
alpha = Abweichwinkel des Flugobjekts von der Windrichtung
t = Zeitpunkt
a = Beschleunigung (positiv/negativ)
v(t2) = ((( 1 - |alpha| * (1/90) ) * a ) * t ) + v(t1)

Ist natürlich komplex und es können sich bei meinen Ausführungen Fehler eingeschlichen haben. Hab das nur mal eben im Kopf gerechnet/mir überlegt.
xNopex is offline  
Old 03/21/2011, 17:59   #6
 
| Moep |'s Avatar
 
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
Quote:
Originally Posted by LuckyLuke View Post
so wie ich das verstehe wird im endeffekt durch den wind v0 erhöht oder vermindert
Ja, das einfachste wäre wohl wenn du bei einem Windstillen match die Zielgenauigkeit perfektionierst. Und dann bei wind einfach in folgender Zeile:

Code:
$zeit = $staerke*40
die Windstärke subtrahierst (bei Rückenwind), bzw addierst (bei gegenwind). Hat dann aber weniger was mit präziser Mathemathik zu tun, eher eine Sache des ausprobierens und verfeinerns.
| Moep | is offline  
Reply


Similar Threads Similar Threads
BlashCraft [NEU!] Im Aufbau ! Co Admins Gesucht ! + Member Gesucht !
03/09/2011 - Minecraft Server Advertising - 11 Replies
Hallo , Ich mache grad einen neuen server auf. Ich suche in moment Admins die Talent Haben. Was meine ich mit Talent? Mit Talent ist Gemeint:
DU wirst gesucht! Schauspieler werden gesucht!
02/13/2011 - Alliance of Valiant Arms - 23 Replies
Huhu ihr lieben, wegen Zeitmangel zurzeit bitte nicht an mich wenden. Vielen Dank, DuBistGut. ;)
TitelChange unter DiamondCore gesucht! (Titel.DBC gesucht)
03/07/2010 - World of Warcraft - 0 Replies
Hallo, ich habe bereits gelesen das man die title.dbc öffnen muss etc. pp... allerdings ist in meinem DBC ordner keine title.dbc zu finden -.- Benutze DiamondCore! Hilfe wäre nice.



All times are GMT +1. The time now is 15:03.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.