Keine Ahnung ![]()
Das gehört aber auch zur Map, und nicht zur Physik
Mir gings nur darum, weil hier viele das bemänglet haben..
Beiträge von Fresapore
-
-
Hm, hast du den Ordner von 2$Billie runtergeladen?
Da muss das reinkopiert werden!
Ach und eine Saceh habe ich vergessen :D: Man muss den Pfad der includierten IrrlichtPluginUtils.au3 ändern..
Dann sollte es gehen..
Wenn nicht, erstelle ich einen Ordner mit allem wichtigen drin! -
Hey!
Zwar hat 2$Billie das Projekt aufgehört/verschoben, allerdings hatte ich mich letzte Woche mal daran versucht, ein bisschen "Physik" reinzubringen..
die Fighter3.txt in md2 umbenennen und ins Scriptverzeichnis
Auch hier ist die Physik noch unrealistisch und unvollständig!Viel Spaß!
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "..\au3Irrlicht2.au3"
#include <misc.au3>
Global Const $Pi = 3.1415
Global Const $DegToRad = $Pi / 180Global $R_W = 0 ;Dazu addierter Winkel am Höhenruder
[/autoit] [autoit][/autoit] [autoit]
Global $A_W = 0 ;Gesamtwinkel des Höhenruders
Global $S_W = 0 ;Winkel des Seitenruders
Global $V = 0.5 ;Aktuelle Geschwindigkeit in 20px/s
Global $a = 0.05 ;Beschleunigung
Global $M_R_W = 2 ;Stärke des Höhenruders
Global $M_S_W = 2 ;Stärke des Seitenruders
Global $V_MIN = 0.5 ;Minimale Geschwindigkeit
Global $V_MAX = 3 ;Maximale Geschwindigkeit
Global $AUTO_CAL = True ;Wenn True, dann calibriere das Flugzeug nach Lenkung
Global $CAL_SPEED = 1.5 ;Geschwindigkeit der Kalibrierung
Global $X = 0, $Y = 100, $Z = -100 ;X-, Y-, Z-Position des Flugzeugs
Global $CAM_X = 0, $CAM_Y = 100, $CAM_Z = -115 ;X-, Y-, Z-Position der Kamera
Global $CAM_DIST = 0.1 ;Abstand der Kamera zum Flugzeug
HotKeySet("z", "_exit")MsgBox(0, "Steuerung", "Beschleunigen: q"&@CRLF&"Bremsen: a"&@CRLF&"Lenken: Pfeiltasten"&@CRLF&"Beenden: z")
[/autoit] [autoit][/autoit] [autoit]
$Debug = GUICreate("Debugger", 118, 180, 200, 172, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_POPUPWINDOW, $WS_BORDER))
$ListView1 = GUICtrlCreateListView("Was|Wert", 0, 0, 113, 177)
$SpeedItem = GUICtrlCreateListViewItem("V|" & $V, $ListView1)
$XItem = GUICtrlCreateListViewItem("X|" & $X, $ListView1)
$YItem = GUICtrlCreateListViewItem("Y|" & $Y, $ListView1)
$ZItem = GUICtrlCreateListViewItem("Z|" & $Z, $ListView1)
$R_WItem = GUICtrlCreateListViewItem("Winkel H/T|" & 0, $ListView1)
$S_WItem = GUICtrlCreateListViewItem("Winkel L/R|" & 0, $ListView1)
GUISetState(@SW_SHOW)_IrrStart($IRR_EDT_OPENGL, 800, 800, $IRR_BITS_PER_PIXEL_32, _
[/autoit] [autoit][/autoit] [autoit]
$IRR_WINDOWED, $IRR_SHADOWS, $IRR_CAPTURE_EVENTS, $IRR_VERTICAL_SYNC_ON)
_IrrSetWindowCaption("Top Gun")$CloudTexture = _IrrGetTexture(@ScriptDir&"\cloud4.png")
[/autoit] [autoit][/autoit] [autoit]
$CloudNode = _IrrAddClouds($CloudTexture, 3, 1, 10)$PlaneMesh = _IrrGetMesh(@ScriptDir&"\fighter3.md2")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$TerrainMesh = _IrrGetMesh(@ScriptDir&"\topgun2.obj")
$TerrainTexture0 = _IrrGetTexture(@ScriptDir&"\topgun2.png")
$MeshTexture = _IrrGetTexture(@ScriptDir&"\fighter.pcx")$PlaneNode = _IrrAddMeshToScene($PlaneMesh)
[/autoit] [autoit][/autoit] [autoit]
_Irrsetnodescale($PlaneNode, 0.1, 0.1, 0.1)
_IrrSetNodePosition($PlaneNode, $X, $Y, $Z)
_IrrSetNodeMaterialTexture($PlaneNode, $MeshTexture, 0)
_IrrSetNodeMaterialFlag($PlaneNode, $IRR_EMF_LIGHTING, $IRR_OFF)$Terrain = _IrrAddMeshToScene($TerrainMesh)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_IrrSetNodeMaterialTexture($Terrain, $TerrainTexture0, 0)
_IrrSetNodeMaterialFlag($Terrain, $IRR_EMF_LIGHTING, $IRR_OFF)$Camera = _IrraddCamera($X, $Y, $Z - 5, $X, $Y, $Z)
[/autoit] [autoit][/autoit] [autoit]$MapCollision = _IrrGetCollisionGroupFromComplexMesh($TerrainMesh, $Terrain)
[/autoit] [autoit][/autoit] [autoit]_IrrHideMouse()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_ActData", 500)While _IrrRunning()
[/autoit] [autoit][/autoit] [autoit]
_IrrBeginScene(240, 255, 255)
If _IsPressed("51") And $V + $a < $V_MAX Then $V += $a ;Addiere Beschleunigung zur Geschwindigkeit
If _IsPressed("41") And $V - $a > $V_MIN Then $V -= $a
If _IsPressed("28") Or _IsPressed("26") Then ;Setze Die Höhenruder
If _IsPressed("28") Then $R_W = $M_R_W
If _IsPressed("26") Then $R_W = -$M_R_W
Elseif $AUTO_CAL Then
If $A_W > $M_R_W * $CAL_SPEED Then
$A_W -= $M_R_W * $CAL_SPEED
Elseif $A_W < -$M_R_W * $CAL_SPEED Then
$A_W += $M_R_W * $CAL_SPEED
Else
$A_W = 0
EndIf
EndIf
If _IsPressed("25") Or _IsPressed("27") Then ;Setze Die Seitenruder
If _IsPressed("25") Then $S_W += $M_S_W
If _IsPressed("27") Then $S_W -= $M_S_W
Elseif $AUTO_CAL Then
If $S_W > $M_S_W * $CAL_SPEED Then
$S_W -= $M_S_W * $CAL_SPEED
Elseif $S_W < -$M_S_W * $CAL_SPEED Then
$S_W += $M_S_W * $CAL_SPEED
Else
$S_W = 0
EndIf
EndIf
_Berechne_Position()
_Setze_Position()
_IrrDrawScene()
_IrrDrawGUI()
_IrrEndScene()
$R_W = 0
Sleep(50)
WEndFunc _Berechne_Position()
[/autoit] [autoit][/autoit] [autoit]
Local $T_W = $S_W
$A_W += $R_W
If Mod(Abs($S_W), 360) >= 90 Then $S_W = 90-($S_W-90)
$Z += Cos($S_W * $DegToRad) * Cos($A_W * $DegToRad) * $V ;Zurückgelegte Strecke in Z-Richtung
$Y += Sin($A_W * $DegToRad) * $V ;Zurückgelegte Strecke in Y-Richtung
$X += -Sin($S_W * $DegToRad) * Cos($A_W * $DegToRad) * $V ;Zurückgelegte Strecke in X-Richtung
$CAM_Z += Cos($S_W * $DegToRad) * Cos($A_W * $DegToRad) * ($V-$CAM_DIST) ;Zurückgelegte Strecke in Z-Richtung
$CAM_Y += Sin($A_W * $DegToRad) * ($V-$CAM_DIST) ;Zurückgelegte Strecke in Y-Richtung
$CAM_X += -Sin($S_W * $DegToRad) * Cos($A_W * $DegToRad) * ($V-$CAM_DIST) ;Zurückgelegte Strecke in X-Richtung
$S_W = $T_W
_IrrSetNodeRotation($PlaneNode, -$A_W, 0, $S_W)
EndFunc ;==>_Berechne_PositionFunc _Setze_Position()
[/autoit] [autoit][/autoit] [autoit]
_IrrSetNodePosition($PlaneNode, $X, $Y, $Z)
_IrrSetNodePosition($Camera, $CAM_X, $CAM_Y, $CAM_Z)
_IrrSetCameraTarget($Camera, $X, $Y, $Z)
EndFunc ;==>_Setze_PositionFunc _ActData()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($SpeedItem, "V|" & $V)
GUICtrlSetData($XItem, "X|" & $X)
GUICtrlSetData($YItem, "Y|" & $Y)
GUICtrlSetData($ZItem, "Z|" & $Z)
GUICtrlSetData($R_WItem, "Winkel H/T|" & $A_W)
GUICtrlSetData($S_WItem, "Winkel L/R|" & $S_W)
EndFunc ;==>_ActDataFunc _exit()
[/autoit]
Exit
EndFunc ;==>_exitMfG,
Fresapore -
Benutze auch Win7 und Ubuntu 11.04 (Finde ich auch mit Unity gut) mit VM WinXP.
Leider geht meinem Ubuntu grad der Speicherplatz flöten, muss mal neu partitionieren... -
Mach einfach am Anfang von der Func des vierten Adlibs am Anfang Adlibunregister und am Ende wieder die entsprechenden Adlibregisters, wenn ich dich richtig verstandne hab...
-
Der Array $aFragen ist eben 2-Dimensional.
Es hat bei bei $aFragen[x][0] die Frage, und bei $aFragen[x][1] eben die Möglichen Antworten, getrennt mit Komma stehen.
Daher macht es keinen Sinn, den 2. Auf 9 zu erhöhen, wie du es gemacht hast
Der Rest stimmt aber.. -
Ist alles irgendwie sehr aufwendig programmiert...
So würde ich das ungefähr machen:Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Timers.au3>
#include <Date.au3>
Global $Timer, $ActTime = 0, $fRun = False, $Hour, $Mins, $Secs
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 222, 92, 192, 124)
$Label1 = GUICtrlCreateLabel("0:0:0", 0, 0, 100, 36)
GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Start", 0, 64, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Reset", 144, 64, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Stop", 72, 64, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$Timer = _Timer_Init()
$fRun = True
Case $Button3
$ActTime = $ActTime + _Timer_Diff($Timer)
_Timer_KillTimer($Form1, $Timer)
$fRun = False
Case $Button2
$ActTime = 0
_Timer_KillTimer($Form1, $Timer)
$fRun = False
GuiCtrlSetData($Label1, "0:0:0")
EndSwitch
If $fRun Then
_TicksToTime(Int(_Timer_Diff($Timer)+$ActTime), $Hour, $Mins, $Secs)
GuiCtrlSetData($Label1, $Hour&":"&$Mins&":"&$Secs)
EndIf
Sleep(40)
WEndIst ohne Adlib...
-
Ne jetzt ist er da, du hast ja auch deinen Beitrag editiert.

-
Hi,
ohne Script kann ich nur vermuten...
Also:
Du könntest die "Uhr-Schleife" einfach in die Main schleife mit den _Timer Funktionen integrieren, sodass in der selben Schleife die Uhr gesetzt wird und auch die Buttons abgefragt werden.
Oder du machst es mit Adlibregister()MfG,
Fresapore -
Es gibt einen Md2 Model Editor hier zum Download..
Da kann man sogar 3ds-Dateien importieren
Dann als md2 exportieren und pcx-texturefile aussuchen (Die ist aber unwichtig ;))MfG,
Fresapore -
Könntest du die Form.3ds mal anhängen? So kann man schlecht testen..
-
Sollte im Prinzip funktioieren, da fehlt nur ein EndIf am Ende, ausserdem sollte das Fenster auch in den Vordergrund geholt werden:
[autoit]If WinExists ("Unbenannt - Editor") Then
[/autoit]
WinActivate("Unbenannt - Editor")
WinWaitActive("Unbenannt - Editor")
Send ("Hallo")
Sleep (100)
Send (" Welt")
EndifMfG,
Fresapore -
Theoretisch kann man was an der Physik machen, allerdings benutzt er hier die FPS-Kamera, (First-Person-Shooter), welche wenige Einstellungsmöglichkeiten für das Verhalten lässt.
MfG,
Fresapore -
-
Hi,
Kannst du den Text auch ins Englische übersetzen, ich habe nicht genau verstanden was du willst
---
Can you please also translate your question into English, I didn't exactly got what you want to do..
Thanks,Fresapore
-
Ich kenne die Mayacam nicht, kann sie grade auch nicht ausprobieren, aber geht das nicht wie bei anderen Kameras auch mit SetPosition und SetTarget?
Hast du evtl Code zum ausprobieren?MfG,
Fresapore -
Ja, die Steuerung ist ein bisschen schwierig, aber wie fändest du es denn besser, wir haben keine logischere Methode gefunden

Ausserdem ging es uns mehr um das Eingeben und Lösenlassen des Würfels, bzw. die Simulation.MfG,
Fresapore
P.S. Es gibt Tastenkürzel
-
Hi,
1. Die Logik ist noch ein bisschen durcheinander, aber im Grunde...
Ich würde beiden Guis am Anfang erstellen, und die eine durch @SW_HIDE unsichtbar machen.
und dann in einer Funktion sichtbar machen.
2.Das includen macht mitten im Code wenig Sinn.
3. Die Zwei While Schleifen direkt untereinander machen so wie sie sind keinen Sinn, aber fast
Von Daher mein Vorschlag (Wenn du es nicht selber rausfinden willst :P):Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>$Form1_1 = GUICreate("Event Helping Tool", 551, 441, 218, 17)
[/autoit] [autoit][/autoit] [autoit]
$Event1 = GUICtrlCreateButton("v1", 8, 128, 137, 25, $WS_GROUP)
$Event2 = GUICtrlCreateButton("v4", 8, 304, 137, 25, $WS_GROUP)
$Event3 = GUICtrlCreateButton("v3", 8, 248, 137, 25, $WS_GROUP)
$Event4 = GUICtrlCreateButton("v5", 8, 368, 137, 25, $WS_GROUP)
$Event = GUICtrlCreateButton("v2", 8, 184, 137, 25, $WS_GROUP)
$Pic1 = GUICtrlCreatePic("Aussehen.jpg", 0, 0, 550, 440, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)$Form1 = GUICreate("Form1", 288, 82, 192, 124)
[/autoit] [autoit][/autoit] [autoit]
$Button1 = GUICtrlCreateButton("Test1", 8, 40, 97, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Test2", 176, 40, 97, 33, $WS_GROUP)
$Pic1 = GUICtrlCreatePic("Test.jpg", 0, 0, 300, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_HIDE)
While 1
$nMsg = GUIGetMsg($Form1_1)
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Event
_ShowGUI()
EndSwitch
WEnd
Func _ShowGui()
GuiSetState(@SW_SHOW, $Form1)
While 1
$nMsg = GUIGetMsg($Form1)
Switch $nMsg
Case $GUI_EVENT_CLOSE
GuiSetState(@SW_HIDE, $Form1)
ExitLoop
Case $Button1
MsgBox(64, "Test", "Test")
sleep (10000)
send ("{ENTER}")
sleep (300)
send ("Test")
sleep (300)
send ("{ENTER}")
sleep (7000)
send ("{ENTER}")
EndSwitch
WEnd
EndFunc
Func _Start()EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] -
Das liegt (bei mir) an dem Style $SS_REALSIZEIMAGE.
Wenn du den weglässt, kommt keine Fehlerwarnung mehr.MfG,
Fresapore -
Der Makro @error wird immer von der letzten Funktion gesetzt. Also musst du nach jeder (Wenns so sicher sein muss) Funktion eine @error-Abfrage machen.
[autoit]
Ausserdem kannst du ja auch schreiben:If @error = 6 Then MsgBox(0, "Fehler", "Der Suchstring wurde nicht gefunden")
[/autoit]oder ähnlich..