Mousebutton loslassen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Kaeru Gaman hat geschrieben:habs jetzt erstmal getestet, noch nicht den code gelesen...

also, abgesehen vom durcheinander am anfang, wo ich noch gucken muss woran das liegt,
funktioniert es wie es soll: 10x schusssound, 1x nachladesound.
WTF?
Selber Code, selbe Ressourcen... woran kann's liegen? (Ach ja: wenn du die Maus länger gedrückt hältst kommt der Schusssound öfter, was nicht sein soll)
Bei mir ist das erstemal Mausklick der nachladesound und man muss ein 11. Mal drücken, um nachzuladen... das soll nicht sein.

@Durcheinander:
Das liegt daran, dass die Grafik erst auf 640X480 runtergeschraubt werden muss. Ich werd ganz am Anfang noch ein Fenster machen, wo man die Auflösung auswählen kann (deshalb hab ich im GFX-Ordner auch 3 Ordner mit verschiedenen Auflösungen der Bilder)

Edit:
3. Problem (viertes?): der "gunin.wav"-Sound soll zu Ende gespielt werden, bevor der Reloadsound kommt... mit Delay kann man das nicht machen, da dann auch der Spielverlauf angehalten wird.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also....

ich hab den überflüssigen sound und display und flip vor der hauptschleife mal auskommentiert,

außerdem hab ich das TransparentSpriteColor dahin gesetzt wo es hingehört:
unmittelbar hinter den lade-befehl.

so und dann hast du mal nicht aufgepasst:
ich hab dir extra noch geschrieben, dass du zu früh kopiert hast,
du hast bei der erstellung des MLB das & 2 nicht dabei, das muss sein.

und außerdem hast du nen tippfehler bei ersten laden vor der schleife:
Magazine wird mit e hinten geschrieben!
... Benutzung von EnableExplicit würde helfen.


> 3. Problem (viertes?): der "gunin.wav"-Sound soll zu Ende gespielt werden, bevor der Reloadsound kommt...

öhm... das muss ich mir nochma angucken.
kannst du die beiden nicht zu einem einzigen sound zusammensetzen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

PS:

achja... an dem counter kannst du sehen, wie schnell deine Frames durchflitzen.

du solltest noch nen timer einbauen, damit du bei wesentlich weniger tics pro sekunde landest.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Doppelposts noch dazu von einem Moderator, ay, ay, ay :mrgreen: (ne, is nur 'n Scherz)

Ich könnte es schon zu EINEM Sound machen, aber im Vista ist der kleine, smarte Audiorecorder (und -bearbeiter) von XP zu einem noch kleinerem Audiorecorder (und NICHT -bearbeiter) abgespeckt worden. :evil:

Na ja, 9,99*10^99[...]999,9-periodisch Dank, dass du den Code hingekriegt und unnötiges Zeug rausgerissen hast :)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

hm....

also ich hab jetzt mit nem dummen trick das mit den getrennten sound hinbekommen....

wie ist das mit dem nachladen... ohne klick sagtest du... ?

wie wärs mit rechtsclick für nachladen, und mit nem blindsound beim abdrücken bei leerem magazin?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Vier Seiten ... :freak: :lol: :shock:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Fluid Byte hat geschrieben:Vier Seiten ... :freak: :lol: :shock:
Ja und?
Drei Smilies [size=0]N00B[/size]

In meinem Post ist ein Super-1337-Easteregg versteckt! alle die ihn bearbeiten können, können ihn sehen :D
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

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... /:->
Zuletzt geändert von Kaeru Gaman am 21.12.2008 00:39, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

In meinem Post ist ein Super-1337-Easteregg versteckt!
Denn nehme ich selbstverständlich alles zurück! :mrgreen:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

Fluid Byte hat geschrieben:
In meinem Post ist ein Super-1337-Easteregg versteckt!
Denn nehme ich selbstverständlich alles zurück! :mrgreen:
101 PWN3D, F1U!D B`/73 (das kommt vom cs zocken)
wr nur n scherz, aber wenn man N00B mit Size 0 schreibt, dann sieht mans im Post nicht - GARnicht - und wenn man bearbeitet, dann schon... die Technik von heute :mrgreen:

@Kaeru:
Jo, probier ich morgen, heute bin ich schon zu müde, aber Danke (ich glaub du hast mehr am Prog gemacht als ich <) )

Edit:
Ich hab mal schnell Kauer auf Kaeru umgewandelt... ich muss wirklich dringend ins Bett!
Bild
Bild
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten