ah mist du hast recht in level1 kann man in der ecke starten und sich dann nicht bewegen. das wird geändert
danke
Beiträge von gem
-
-
@Make-Grafik
zum ersten:
leider habe ich im nachhinein gemerkt das die steuerung nicht so gut war deswegen habe ich es extra gemacht das er wenn er steht und schießt in eine zufallsrichtung schießt wenn du mit den tasten in eine andere richtung drückst schießt er in diese.
zum zweiten:
sicher das man nur von stein umzingelt ist? kisten kannst du ja kaputt schießen. wäre nett wenn du das level erwähnen könntest.sounds kommen noch

-
[Blockierte Grafik: http://www7.pic-upload.de/17.03.13/smqlt577ahsa.jpg]
ich habe mal aus langeweile wieder ein kleines spiel geskriptet. herausgekommen ist ein kleiner multiplayer shooter. ziel ist es den anderen zehn mal zu töten. dazu könnt ihr verscheiden waffen nehmen. die kisten im spiel können zerstört werden mauern nicht. leider ist das spiel noch nicht ganz fertig aber es funktioniert schon.tastaurbelegung:
player 1
laufen: w,a,s,d,
schießen: ctrl links
player 2
laufen: pfeiltasten
schießen: ctrl rechts -
bei mir kommt Time to close: 0.000s raus.
dauert leider immer noch 3 sekunden bis sich das fenster schließt und ich die maus wieder bewegen kann :(.
vieleicht liegts an meinem system. trozdem danke -
ich habe mal ein timer in die exit funktion eingebaut da dauert es auch nur 26ms
Spoiler anzeigen
[autoit]Func OnAutoItExit()
[/autoit]
$timer = TimerInit()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_MouseProc)
ConsoleWrite(TimerDiff($timer)&@CRLF)
EndFunces ist auch so das ich die maus in den 2-3 sekunden beim schließen nicht bewegen kann. vieleicht liegts an winxp oder so.
ps: ich mein 0.26ms
-
ich weiß nicht ob es an deinem skript oder meinem pc liegt aber komischerweise hängt sich die gui wenn ich sie mit der maus auf der gui schließe immer für 2-3 sekunden auf. entferne ich die double clck register funktioniert das schließen ohne verzögerung.
ich benutze winxp 32bit sp3
-
gefällt mir sehr gut,
gäbe es nicht eine möglichkeit ein allgemeine funtkion zu schreiben womit man programme einbinden könnte, z.b noch den Rechner, Paint etc. -
meinst du so?
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]Global $Url = ""
[/autoit] [autoit][/autoit] [autoit]
$IE = _IECreateEmbedded()
$Form = GUICreate("Browser", 623, 442)
$Input = GUICtrlCreateInput("", 10, 10, 591, 21)
$View = GUICtrlCreateObj($IE, 10, 40, 605, 389)
GUISetState()_IENavigate($IE,"http://www.google.de")
[/autoit] [autoit][/autoit] [autoit]While GUIGetMsg() <> -3
[/autoit]
$Cache = _IEPropertyGet($IE, "locationurl")
if $Cache <> $Url Then
$Url = $Cache
GUICtrlSetData($Input, $Url)
EndIf
WEnd -
vielen dank. ihr helft mir sehr

sorry wenn ich noch mal störe aber noch eine frage woher weiß dann eine programmiersprache wie groß eine array ist, wird die größe in eine variable gespeichert oder wie?danke
-
noch eine frage

heißt das ich kann mit einem programm nie die datentypen der werte eines anderes programmes herausfinden? -
vielen dank ihr habt mit beide sehr geholfen

-
ich habe mal eine frage zu variablen und datentypen
so wie ich das verstanden habe werden die variablen im ram gespeichert und wenn sie gebraucht werden, werden sie wieder ausgelesen. wo sich die variable befindet veraten die zeiger (pointer). nun habe ich eine frage, woher weiß das programm was für ein datentyp der pointer hat?. ich kann ja auch mit einem programm auf die werte von zeigern zugreifen wo ein anderes programm werte abgespeichert hat.
ich würde mich freuen wenn mir da jemand helfen könnte.
danke -
@Make-Grafik
ich hab es auch schon einmal geschafft
ps: ich finde es sehr gut allerdings hätte ich es gemacht das wenn man falsch klickt verliert, ist dann ncoh schwieriger

-
meines wissens bedeutet das viereck das er das zeichen nicht darstellen kann.
klappt das so vieleicht:
[autoit]
[/autoit]
;bei $code musst du das erste zeichen eintragen also so z.b.
$code = StringMid($array[0],StringLen($array[0])-3,1)
for $i = 0 to UBound($array)-1
$array[$i] = Stringleft($array[$i],StringInStr($array[$i],$code,0,-1))
Next -
hab es nochmal geändert. es wird nur das bitmap neu gezeichnet wenn sich die größe verändert das heißt das läd später nicht so lange
-
so vieleicht
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GdiPlus.au3>;das include
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>OnAutoItExitRegister("_end") ; die Funktion _end am Ende des Scriptes ausführen
[/autoit] [autoit][/autoit] [autoit]$size = 80
[/autoit] [autoit][/autoit] [autoit]
$score = 0
$Gui = GUICreate("Schachbrett", 800, 800, -1, -1)
GUISetState(@SW_SHOW)
_GDIPlus_Startup() ;Gdi starten
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(800, 800, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_drawChess()
$timer = TimerInit()While 1
[/autoit] [autoit][/autoit] [autoit]
While 1
Do
$xRandom = Random(0, 800 - $size, 1)
Until IsInt($xRandom / $size)
Do
$yRandom = Random(0, 800 - $size, 1)
Until IsInt($yRandom / $size)
$redButton = GUICtrlCreateLabel("", $xRandom, $yRandom, $size, $size)
GUICtrlSetBkColor(-1, 0xFF0000)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $redButton
$timer = TimerInit()
GUICtrlDelete($redButton)
$score += 10
If IsInt($score / 100) Then
$size = $size / 2
_drawChess()
EndIf
If $score = 500 Then
$return = _win()
If $return =1 Then
Exit
Else
GUIDelete($Gui)
$Gui = GUICreate("Schachbrett", 800, 800, -1, -1)
GUISetState(@SW_SHOW)
$timer = TimerInit()
ExitLoop 2
EndIf
EndIf
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
ExitLoop
EndSwitch
If TimerDiff($timer) > 5000 Then
$return = _gameOver($score)
If $return = 1 Then
Exit
Else
GUIDelete($Gui)
$Gui = GUICreate("Schachbrett", 800, 800, -1, -1)
GUISetState(@SW_SHOW)
$timer = TimerInit()
ExitLoop 2
EndIf
EndIf
WEnd
WEnd
WEndFunc _gameOver($score)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlDelete($redButton)
GUIDelete($Gui)
$Gui = GUICreate("Schachbrett", 800, 800, -1, -1)
GUISetState(@SW_SHOW)
$Label1 = GUICtrlCreateLabel("Game Over!", 80, 120, 589, 122)
GUICtrlSetFont(-1, 72, 400, 0, "MS Reference Sans Serif")
$Label2 = GUICtrlCreateLabel("Your score is: ", 75, 295, 295, 53)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
$Label3 = GUICtrlCreateLabel($score, 380, 295, 295, 53, $SS_RIGHT)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
$Button1 = GUICtrlCreateButton("Replay", 75, 470, 280, 75)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
$Button2 = GUICtrlCreateButton("Quit", 395, 470, 280, 75)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$return = 0
ExitLoop
Case $Button2
$return = 1
ExitLoop
EndSwitch
WEnd
Return $return
EndFuncFunc _win()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlDelete($redButton)
GUIDelete($Gui)
$Gui = GUICreate("Schachbrett", 800, 800, -1, -1)
GUISetState(@SW_SHOW)
$Label1 = GUICtrlCreateLabel("Congratulations!", 80, 120, 589, 122)
GUICtrlSetFont(-1, 50, 400, 0, "MS Reference Sans Serif")
$Label2 = GUICtrlCreateLabel("You won!!!!!", 75, 295, 295, 53, $SS_CENTER)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
$Button1 = GUICtrlCreateButton("Replay", 75, 470, 280, 75)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
$Button2 = GUICtrlCreateButton("Quit", 395, 470, 280, 75)
GUICtrlSetFont(-1, 30, 400, 0, "MS Reference Sans Serif")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$return = 0
ExitLoop
Case $Button2
$return = 1
ExitLoop
EndSwitch
WEnd
Return $return
EndFuncFunc _drawChess()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsClear($buffer,0xFFFFFFFF)
For $i = 0 To 800 Step $size * 2
For $j = $size To 800 Step $size * 2
_GDIPlus_GraphicsFillRect($buffer, $j, $i, $size, $size)
_GDIPlus_GraphicsFillRect($buffer, $j - $size, $i - $size, $size, $size)
Next
Next
_GDIPlus_GraphicsDrawImage($graphic, $bitmap, 0, 0)
EndFuncFunc _end();die Exit funktion
[/autoit]
_GDIPlus_GraphicsDispose($graphic);Grafik Objekt freigeben
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_Shutdown();Ressourcen freigeben
EndFunc ;==>_endps: das es später solange dauert liegt dann glaube ich an der geschwindigkeit von autoit
-
habe jetzt eine neue version hochgeladen in der viele sachen besser sind
NEU
- es gibt 3 kampagnen mit jeweils 6 level
- level laden schneller dank der purebasic dll
- man sieht wie man davor gelaufen ist
- SourisV2.exe genau das gleiche spiel nur mit tastensteuerung
- Souris Hack.exe wenn ihr keine lust habt die levels frei zu spielen könnt ich euch damit das passwort eines levels anzeigen lassen
- ihr kommt mit leertaste automatisch zur nächsten maplink im ersten post
-
[Blockierte Grafik: http://www10.pic-upload.de/28.01.13/i6svfzuinobt.jpg]
da ich letztens The Maze gezockt habe und es mir sehr spaß gemacht hat durch die level zu kommen habe ich ein so gut wie identisches spiel in autoit geschrieben allerdings ohne überaschung :D.
ihr müsst bei level1 anfangen wenn ihr das level geschafft habt bekommt ihr das passwort für das nächste level.beim spiel könnt ihr mit der l taste eine andere map öffnen
der level-editor ist leider nicht so leicht zu verstehen hier die tasten erkärung
Tastaturbelegung Editor
F5 : neue map
F6 : map öffnen
F7 : map speichernp : passwort für die map festlegen
l : beschreibung für die map festlegen
x : spielerbreite (+)
y : spielerbreite (-)
m : zeit bis man verloren hat (+)
n : zeit bis man verloren hat (-)mitteltaste der maus: startposition festlegen
1 : farbe schwarz
2 : farbe blau
3: farbe rotlinke maustaste : ein pixel malen
rechte maustaste : malen
q : fillrect malen
w : linie malen
e : rect malen
r : fillellipse malen
t : ellipse malenmausrad hoch: linienbreite [+]
mausrad runter: linienbreite [-] -
ich glaub das es auch am betriebsystem liegt. vieleicht gibst du das auch noch an. ich benutze winxp 32bit
-
also ich habe eine möglichkeit gefunden ist aber bestimmt nicht ganz sauber. öffne die GuiRichEdit.au3 und geh zur funktion _GUICtrlRichEdit_Create dort löscht du die zeile
if Not _WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlRichEdit_Create 1st parameter aus und speicherst dies dann unter einem andeen anme z.-b GuiRichEdit2.au3 die bindest du ein und dann funktioniert das auch mit mehreren richedits.