[Dummheit ein]Ich versteh einfach nicht's mehr[Dummheit aus]Kaeru Gaman hat geschrieben:> If ExamineKeyboard() = 0 Or ExamineMouse() = 0
hier brauchst du keinen Rückgabewert prüfen.
du brauchst nur beide inits benutzen.
prüfen tust du dann die Rückgabewerte der Auswertungsfunktionen...
und wenn du die rückgaben von MouseX() und MouseY() schon zwischenspeicherst,
solltest du im Display auch die Variablen und nicht die Funktionen verwenden.
°GELÖST° "Die folgende Variable hat eine Structure: 'WT
- 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:
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
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
boah
ist überflüssig.
genügt.
und du hast
du packst also die Rückgaben der Prüffunktionen in Variablen.
also solltest du später, im DisplaySprite, die Variablen verwenden nicht die Funktionen.


Code: Alles auswählen
If ExamineKeyboard() = 0 Or ExamineMouse() = 0 ;Eines der Beiden oder beides ist NULL (warum?)
CloseScreen()
MessageRequester("Info","Fehler!",0)
End
EndIf
Code: Alles auswählen
ExamineKeyboard()
ExamineMouse()
und du hast
Code: Alles auswählen
MouseX = MouseX() : MouseY = MouseY()
also solltest du später, im DisplaySprite, die Variablen verwenden nicht die Funktionen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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:
Ja, ok, jetzt hab ich's verstanden, aber mich hauts na ca. einer halben Sekunde wieder raus, und PB motzt auch noch wegen dem StartDrawing() (eben weil der Screen nimmer aktiv ist)
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
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
zu deutsch: wenn du hilfe brauchst, frag konkret und poste code.Mok hat geschrieben:Na dankeKaeru Gaman hat geschrieben:na das ist ja schön für dich, dann bau halt keine Bugs ein!

ansonsten kann ich dir nur so helfen:
> aber mich hauts na ca. einer halben Sekunde wieder raus
dann stell den Raushau-Timer auf mehr als 500ms
> und PB motzt auch noch wegen dem StartDrawing() (eben weil der Screen nimmer aktiv ist)
dann nimm nen aktiven screen
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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:
War da der Erfinder der Stupidedia am Werk
"dann stell den Raushau-Timer auf mehr als 500ms"
Die Sache ist die: Normalerweise müsste die kurze Schleife doch laufen, tja, das tut sie auch, aber in der Schleife drin is das Problem: Examinekeyboard() und/oder ExamineMouse() liefern den Wert NULL (auch wenn das Code-Stück, wie du gesagt hast, umsonst war). Jedenfalls ist da irgend ein Hund drin, der den Screen wieder schließt.
Ich poste jetzt mal den kanzen Ko...Code bis zur Schleife:
MfG, Mok

Die Sache ist die: Normalerweise müsste die kurze Schleife doch laufen, tja, das tut sie auch, aber in der Schleife drin is das Problem: Examinekeyboard() und/oder ExamineMouse() liefern den Wert NULL (auch wenn das Code-Stück, wie du gesagt hast, umsonst war). Jedenfalls ist da irgend ein Hund drin, der den Screen wieder schließt.
Ich poste jetzt mal den kanzen Ko...Code bis zur Schleife:
Code: Alles auswählen
;-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
Define MLB.l ; Mouse Left Button
Define MRB.l ; Mouse Right Button
;VARIABLEN
Global rand_backgrnd.b
Global released
Global MouseX, MouseY
Global ZielX, ZielY
Global speed
Global Console, Cheat ;Die kommen dann nachher zum Einsatz
Global WType.s
Global ChosenGun
WType.s = ""
Cheat = #False
ShotsLeft = Magazine
speed = 1
;-STRUKTUREN
Structure Weapons
Name.s
Magazine.b
ShootSound.s
DrySound.s
MuniSprite.s
TickShot.b
TickDry.b
TickReload.b
EndStructure
Select ProgramParameter()
Case "/SETTINGS"
If RunProgram("startmgr.exe")
End
Else
MessageBox_(#Null,"startmgr.exe kann nicht gefunden werden!"+Chr(10)+"Neuinstallation könnte den Fehler beheben","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
End
EndIf
Case "/CONSOLE"
Console = #True ;ebenfalls für nachher
EndSelect
;-Vorbereitung:
If OpenPreferences("settings.prefs")
width = Val(ReadPreferenceString("ScreenWidth","1024"))
height = Val(ReadPreferenceString("ScreenHeight","768"))
depth = Val(ReadPreferenceString("Depth","32"))
Else
MessageBox_(#Null,"settings.prefs kann nicht gefunden werden!"+Chr(10)+"Neuinstallation könnte den Fehler beheben","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
End
EndIf
If OpenScreen(width,height,depth,"Aimer v1.00") = 0
MessageBox_(#Null,"Es konnte kein "+Str(width)+"x"+Str(height)+"x"+Str(depth)+" Bildschirm erstellt werden!","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
End
EndIf
rand_backgrnd = Random(3)
rand_backgrnd = rand_backgrnd + 1
fontID = LoadFont(100,"Arial",12,#PB_Font_Bold)
Global Dim Guns.Weapons(2)
;PUMPGUN SETTINGS
Guns(0)\Name = "Pump"
Guns(0)\Magazine = 8
Guns(0)\TickShot = 10
Guns(0)\TickDry = 2
Guns(0)\TickReload = 17
;AK74 SETTINGS
Guns(1)\Name = "AK74"
Guns(1)\Magazine = 30
Guns(1)\TickShot = 2
Guns(1)\TickDry = 3
Guns(1)\TickReload = 23
;GLOCK 19 SETTINGS
Guns(2)\Name = "Glock"
Guns(2)\Magazine = 30
Guns(2)\TickShot = 7
Guns(2)\TickDry = 3
Guns(2)\TickReload = 10
LoadSprite(1,"data\gfx\ak74thm.bmp");
TransparentSpriteColor(1,RGB(255,0,255));
LoadSprite(2,"data\gfx\glock19thm.bmp");
TransparentSpriteColor(2,RGB(255,0,255));
LoadSprite(3,"data\gfx\ak74thm.bmp");
TransparentSpriteColor(3,RGB(255,0,255));
LoadSprite(012,"data\gfx\mouse.bmp")
TransparentSpriteColor(012,RGB(255,0,255));
cont = 0
;Problemschleife:
Repeat
ExamineKeyboard()
ExamineMouse()
MouseX = MouseX() : MouseY = MouseY()
DisplayTransparentSprite(1,0,0);
DisplayTransparentSprite(2,500,200);
DisplayTransparentSprite(3,800,400);
DisplayTransparentSprite(012,MouseX,MouseY);
If MouseButton(#PB_MouseButton_Left)
WType.s = "ak74"
ChosenGun = 0
cont = 1
EndIf
If MouseButton(#PB_MouseButton_Right)
WType.s = "glock"
ChosenGun = 2
cont = 1
EndIf
If MouseButton(#PB_MouseButton_Middle)
WType.s = "pump"
ChosenGun = 1
cont = 1
EndIf
;Hat irgendwas mit SpritePixelCollision() nicht gefunzt, deshalb vorübergehend auf Linksklick, Rechts- und Mittelklick geändert.
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(fontID)
DrawText(5,20,Str(coll),RGB(255,255,255))
DrawText(5,5,"ESC - Beenden" )
StopDrawing()
FlipBuffers()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
Until cont <> 0
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
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
noja... testen kann ich da nix, viel zu viele abhängigkeiten.
selbst wenn ich versuche die sprites zu ersetzen nölt der weil er keine prefs findet. ätzend.
setz doch wenigstens ein paar vorab konstanten, dass man mal was starten kann!
aber wenn man ne halbe stunde arbeiten muss, um das zum laufen zu bringen, macht es keinen spaß, zu versuchen, dir zu helfen!
an der schleife seh ich nix, keine ahnung was du anstellst dass das nicht läuft.
[edith]
also:
nachdem ich die variablen width, height, depth manuell gesetzt hab, geht es.
und es geht wirklich.
abgesehen davon, dass du kein ClearScreen verwendest und alles übereinanderschmiert,
läuft die schleife bei mit rund durch.
mit beliebigem mausklick wird beendet.
die sprites sitzen etwas unglücklich, und du lädst zweimal das gleiche.
selbst wenn ich versuche die sprites zu ersetzen nölt der weil er keine prefs findet. ätzend.
setz doch wenigstens ein paar vorab konstanten, dass man mal was starten kann!
aber wenn man ne halbe stunde arbeiten muss, um das zum laufen zu bringen, macht es keinen spaß, zu versuchen, dir zu helfen!
an der schleife seh ich nix, keine ahnung was du anstellst dass das nicht läuft.
[edith]
also:
nachdem ich die variablen width, height, depth manuell gesetzt hab, geht es.
und es geht wirklich.
abgesehen davon, dass du kein ClearScreen verwendest und alles übereinanderschmiert,
läuft die schleife bei mit rund durch.
mit beliebigem mausklick wird beendet.
die sprites sitzen etwas unglücklich, und du lädst zweimal das gleiche.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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:
Tja, dann ist das wohl Prefs-bedingt, aber bei ReadPreferenceString() wird ja auch ein "Notfalls"-parameter angegeben, falls die Prefs nicht gefunden werden können.
Was für ne 1337-Maschine hast du überhaupt, dass du das zum Laufen bringst? Asus Rampage 2 Extreme mit 4 Intel i7 und 2 nVidia GeForce Geforce 9800 GT oder was?
Ich probier's morgen weiter, aber wo zum Teufel lade ich da etwas zweimal?
Was für ne 1337-Maschine hast du überhaupt, dass du das zum Laufen bringst? Asus Rampage 2 Extreme mit 4 Intel i7 und 2 nVidia GeForce Geforce 9800 GT oder was?

Ich probier's morgen weiter, aber wo zum Teufel lade ich da etwas zweimal?
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
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> aber bei ReadPreferenceString() wird ja auch ein "Notfalls"-parameter angegeben, falls die Prefs nicht gefunden werden können.
aber trotzdem brichst du mit nem msgreq ab, wenn die prefs nicht da ist, du Künstler!
> wo zum Teufel lade ich da etwas zweimal?
sprite #1 und #3 lädst du aus dem selben file.
hier ist mein testcode:
- ersatz-routine fürs sprite-laden eingebunden
- prefs-loader auskommentiert
- clearscreen ergänzt
-> funzt
aber trotzdem brichst du mit nem msgreq ab, wenn die prefs nicht da ist, du Künstler!

> wo zum Teufel lade ich da etwas zweimal?
sprite #1 und #3 lädst du aus dem selben file.
hier ist mein testcode:
- ersatz-routine fürs sprite-laden eingebunden
- prefs-loader auskommentiert
- clearscreen ergänzt
-> funzt
Code: Alles auswählen
;-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
Define MLB.l ; Mouse Left Button
Define MRB.l ; Mouse Right Button
;VARIABLEN
Global rand_backgrnd.b
Global released
Global MouseX, MouseY
Global ZielX, ZielY
Global speed
Global Console, Cheat ;Die kommen dann nachher zum Einsatz
Global WType.s
Global ChosenGun
WType.s = ""
Cheat = #False
ShotsLeft = Magazine
speed = 1
;-STRUKTUREN
Structure Weapons
Name.s
Magazine.b
ShootSound.s
DrySound.s
MuniSprite.s
TickShot.b
TickDry.b
TickReload.b
EndStructure
Select ProgramParameter()
Case "/SETTINGS"
If RunProgram("startmgr.exe")
End
Else
MessageBox_(#Null,"startmgr.exe kann nicht gefunden werden!"+Chr(10)+"Neuinstallation könnte den Fehler beheben","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
End
EndIf
Case "/CONSOLE"
Console = #True ;ebenfalls für nachher
EndSelect
width = 1024 : height = 768 : depth = 32
;-Vorbereitung:
; If OpenPreferences("settings.prefs")
; width = Val(ReadPreferenceString("ScreenWidth","1024"))
; height = Val(ReadPreferenceString("ScreenHeight","768"))
; depth = Val(ReadPreferenceString("Depth","32"))
; Else
; MessageBox_(#Null,"settings.prefs kann nicht gefunden werden!"+Chr(10)+"Neuinstallation könnte den Fehler beheben","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
; End
; EndIf
If OpenScreen(width,height,depth,"Aimer v1.00") = 0
MessageBox_(#Null,"Es konnte kein "+Str(width)+"x"+Str(height)+"x"+Str(depth)+" Bildschirm erstellt werden!","Fehler",#MB_OK | #MB_ICONERROR | #MB_DEFBUTTON1)
End
EndIf
rand_backgrnd = Random(3)
rand_backgrnd = rand_backgrnd + 1
fontID = LoadFont(100,"Arial",12,#PB_Font_Bold)
Procedure ALoadSprite( Nr.l, Name.s )
CreateSprite( Nr, 192,192 )
StartDrawing(SpriteOutput(Nr))
Box( 0,0, 192,192, $FF00FF)
For n=0 To 15
Line( n, 0, 192, 192, $FFFF00 )
Line( 0, n, 192, 192, $FFFF00 )
Line( n, 191-0, 192,-192, $FFFF00 )
Line( 0, 191-n, 192,-192, $FFFF00 )
Next
DrawText(0,0,Name)
StopDrawing()
EndProcedure
Global Dim Guns.Weapons(2)
;PUMPGUN SETTINGS
Guns(0)\Name = "Pump"
Guns(0)\Magazine = 8
Guns(0)\TickShot = 10
Guns(0)\TickDry = 2
Guns(0)\TickReload = 17
;AK74 SETTINGS
Guns(1)\Name = "AK74"
Guns(1)\Magazine = 30
Guns(1)\TickShot = 2
Guns(1)\TickDry = 3
Guns(1)\TickReload = 23
;GLOCK 19 SETTINGS
Guns(2)\Name = "Glock"
Guns(2)\Magazine = 30
Guns(2)\TickShot = 7
Guns(2)\TickDry = 3
Guns(2)\TickReload = 10
ALoadSprite(1,"data\gfx\ak74thm.bmp");
TransparentSpriteColor(1,RGB(255,0,255));
ALoadSprite(2,"data\gfx\glock19thm.bmp");
TransparentSpriteColor(2,RGB(255,0,255));
ALoadSprite(3,"data\gfx\ak74thm.bmp");
TransparentSpriteColor(3,RGB(255,0,255));
ALoadSprite(012,"data\gfx\mouse.bmp")
TransparentSpriteColor(012,RGB(255,0,255));
cont = 0
;Problemschleife:
Repeat
ExamineKeyboard()
ExamineMouse()
MouseX = MouseX() : MouseY = MouseY()
ClearScreen(0)
DisplayTransparentSprite(1,0,0);
DisplayTransparentSprite(2,500,200);
DisplayTransparentSprite(3,800,400);
DisplayTransparentSprite(012,MouseX,MouseY);
If MouseButton(#PB_MouseButton_Left)
WType.s = "ak74"
ChosenGun = 0
cont = 1
EndIf
If MouseButton(#PB_MouseButton_Right)
WType.s = "glock"
ChosenGun = 2
cont = 1
EndIf
If MouseButton(#PB_MouseButton_Middle)
WType.s = "pump"
ChosenGun = 1
cont = 1
EndIf
;Hat irgendwas mit SpritePixelCollision() nicht gefunzt, deshalb vorübergehend auf Linksklick, Rechts- und Mittelklick geändert.
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(fontID)
DrawText(5,20,Str(coll),RGB(255,255,255))
DrawText(5,5,"ESC - Beenden" )
StopDrawing()
FlipBuffers()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
Until cont <> 0
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.