mit Millisekunden-Timer, um die GameTics zu synchronisieren auf 25 Tics/sec
den blind-sound musst du mit dem richtigen ersetzen, ist jetzt der magazin-sound.
und das durchladen wird bei TimeCounter = #LoadWait - #BlindWait gemacht,
also wenn das Magazin-Stecken #BlindWait tics her ist.
wenn du #ShotWait größer machst, musst du drauf achten, dass es kleiner ist als #LoadWait - #BlindWait,
damit der sound nicht bei nem schussdurchlauf gespielt wird.
Code: Alles auswählen
;############################
;## AIMER - VERSION 1.00 ##
;## (C) 2008/2009 ##
;############################
;-Initialisierung:
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
MessageBox_(#Null,"Eine oder mehrere Libraries für das Programm"+Chr(13)+"Aimer v1.00 konnten nicht initialisiert werden!"+Chr(13)+"Neuinstallation des Programmes könnte das Problem beheben.","Fehler beim Initialisieren",#MB_OK | #MB_ICONSTOP)
End
EndIf
;KONSTANTEN
#NoAction = 0
#Released = 1
#Clicked = 2
#Dragged = 3
#ShotWait = 20
#LoadWait = 40
#BlindWait = 10
Define MLB.l ; Mouse Left Button
Define MRB.l ; Mouse Right Button
;VARIABLEN
Global rand_backgrnd.b
Global released
Global MouseX, MouseY
Global magazine
Global erlaubnis
Magazine = 10
ShotsLeft = Magazine
erlaubnis = #True
;-Vorbereitung:
OpenScreen(640,480,32,"Aimer v1.00")
rand_backgrnd = Random(3)
rand_backgrnd = rand_backgrnd + 1
LoadSprite(013,"data\gfx\640x480\bckgrnd"+Str(rand_backgrnd)+".bmp",0)
LoadSprite(014,"data\gfx\640x480\crosshair.bmp",0)
TransparentSpriteColor(014,RGB(255,0,255))
LoadSound(050,"data\sfx\gunshot.wav")
LoadSound(052,"data\sfx\gunin.wav")
LoadSound(053,"data\sfx\gunslide.wav")
SoundVolume(050,100)
SoundVolume(053,100)
; DisplaySprite(013,0,0)
; PlaySound(053)
;
; FlipBuffers()
MouseLocate(640/2, 480/2)
Timer = ElapsedMilliseconds()
Duration = 40 ; 40ms => 25 Tics/sec
Repeat
ExamineMouse()
ExamineKeyboard()
MouseX = MouseX()
MouseY = MouseY()
DisplaySprite(013,0,0)
StartDrawing(ScreenOutput())
DrawText(0,0,Str(TimeCounter), $00FFFF, $400000 )
DrawText(570,0,"Shots: "+Str(ShotsLeft), $00FFFF, $400000 )
StopDrawing()
DisplayTransparentSprite(014,MouseX-37,MouseY-37)
FlipBuffers()
If ElapsedMilliseconds() >= Timer + Duration
Timer + Duration
; *******************************************
; *******************************************
If MouseButton(#PB_MouseButton_Left)
If MLB & 2
MLB = #Dragged
Else
MLB = #Clicked
EndIf
Else
If MLB & 2
MLB = #Released
Else
MLB = #NoAction
EndIf
EndIf
If MouseButton(#PB_MouseButton_Right)
If MRB & 2
MRB = #Dragged
Else
MRB = #Clicked
EndIf
Else
If MRB & 2
MRB = #Released
Else
MRB = #NoAction
EndIf
EndIf
TimeCounter -1
If TimeCounter = #LoadWait - #BlindWait
PlaySound(053)
EndIf
If TimeCounter <= 0 ; nur auf Mausklick reagieren wenn abgelaufen
If MLB = #Clicked
If ShotsLeft > 0
PlaySound(050)
ShotsLeft -1 ; einen schuss abziehen
TimeCounter = #ShotWait ; Pause bei Schuss
Else
PlaySound(052)
TimeCounter = #BlindWait ; Pause bei Blind
EndIf
EndIf
If MRB = #Clicked
If ShotsLeft = 0
PlaySound(052)
ShotsLeft = Magazine ; nachladen
TimeCounter = #LoadWait ; Pause bei Nachladen
EndIf
EndIf
EndIf
; *******************************************
; *******************************************
EndIf
Until KeyboardPushed(#PB_Key_Escape)
PS:
> alle die ihn bearbeiten können, können ihn sehen
jeder, der ihn zitieren kann, kann es sehen...

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.