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...
