Skript-Problem
Übersicht

E. Urbachehemals "Basicprogger"Betreff: Skript-Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, ich hab Blitz3D (last Update) und hab da ein Problem, was bei mir noch nie aufgetreten ist:
Allgemein: Wenn ich kein Delay benutze, wird ein Befehl nicht ausgeführt. Speziell: Der neue Text wird nicht geschrieben. Wenn ich Delay 1 nach dem Text - Befehl einsetze funktioniert es trotzdem nicht. Nur bei einem Wert ca. > 100. Ich habe schon oft Skriptsprachen geproggt, aber das ist mal was ganz neues. Bitte reisst mir nich den Kopf ab wegen der Unübersichtlichkeit und dem Mangel an Kommentaren des Codes, das ist mir schon klar. Das Skript selbst: Code: [AUSKLAPPEN] Window "Test",800,600 newbuffer backbuffer cls text 5,5,"Hallo" flip waitkey cls Text 5,5,"Halloman" flip WaitKey Title "Test-Ende" WaitKey end Hier ist mein Skript-Interpreter: Code: [AUSKLAPPEN] Type tVar Field Wert, Name$ End Type Global right_var.tVar = New tVar Dim AlleZeilen$(1000) Global befehl$, para1$, para2$, para3$, para4$, para5$, ersteskomma, zweiteskomma, dritteskomma, vierteskomma Global erstesleer Global erstesgleich, zeile$, datei, markezahl=-1, variszahl=-1, ruck, paras$, aktuzeile Global dateiname$=CommandLine() datei=ReadFile(dateiname$) If datei=0 RuntimeError "Datei "+dateiname$+" nicht gefunden." ;Lesen Repeat AlleZeilen(aktuzeile)=ReadLine(datei) zeile$=AlleZeilen(aktuzeile) erstesleer=Instr(zeile$," ") befehl$=Mid(zeile$,1,erstesleer-1) para1$=Mid(zeile, erstesleer+1) erstesgleich=Instr(para1$,"=") If Left(zeile,1)<>";" Select Upper$(befehl$) Case "NEWINT" variszahl=variszahl+1 Var.tVar = New tVar Var\Wert = Int( Mid( para1$, erstesgleich+1 ) ) Var\Name$ = Mid( para1$, 1, erstesgleich-1 ) Case "NEWIMAGE" variszahl=variszahl+1 Var.tVar = New tVar Var\Wert = LoadImage( NoString(Mid( para1$, erstesgleich+1 )) ) Var\Name$ = Mid( para1$, 1, erstesgleich-1 ) Case "NEWSOUND" variszahl=variszahl+1 Var.tVar = New tVar Var\Wert = LoadSound( NoString(Mid( para1$, erstesgleich+1 )) ) Var\Name$ = Mid( para1$, 1, erstesgleich-1 ) End Select EndIf aktuzeile=aktuzeile+1 Until Eof(datei)=1 maxzeile=aktuzeile CloseFile datei aktuzeile=0 ;Ausfuehren Repeat DeclareVars() zeile$=AlleZeilen(aktuzeile) erstesleer=Instr(zeile$," ") befehl$=Mid(zeile$,1,erstesleer-1) If Left(zeile,1)<>";" And Left(zeile,1)<>"" ;And Upper(befehl$)<>"MARK";Wenn kein Kommentar parameter$=Mid(zeile, erstesleer+1) If parameter$=befehl$ parameter$="" ersteskomma=Instr(parameter$,",") zweiteskomma=Instr(parameter$,",",ersteskomma+1) dritteskomma=Instr(parameter$,",",zweiteskomma+1) vierteskomma=Instr(parameter$,",",dritteskomma+1) ;Funktioniert leider nur fuer ein "" - Parameter (Zeichen) anf_found = Instr(parameter$,Chr(34)) If anf_found If anf_found < ersteskomma And ersteskomma < Instr(parameter$,Chr(34),anf_found+1) ersteskomma=0 If anf_found < zweiteskomma And zweiteskomma < Instr(parameter$,Chr(34),anf_found+1) zweiteskomma=0 If anf_found < dritteskomma And dritteskomma < Instr(parameter$,Chr(34),anf_found+1) dritteskomma=0 If anf_found < vierteskomma And vierteskomma < Instr(parameter$,Chr(34),anf_found+1) vierteskomma=0 EndIf erstesgleich=Instr(parameter$,"=") erstesgroser=Instr(parameter$,">") ersteskleiner=Instr(parameter$,"<") para1$="" para2$="" para3$="" para4$="" para5$="" If vierteskomma para1$=Mid(parameter$, 1, ersteskomma-1) para2$=Mid(parameter$, ersteskomma+1, zweiteskomma-ersteskomma-1) para3$=Mid(parameter$, zweiteskomma+1, dritteskomma-zweiteskomma-1) para4$=Mid(parameter$, dritteskomma+1, vierteskomma-dritteskomma-1) para5$=Mid(parameter$, vierteskomma+1) para1$=Decome$(para1$) para2$=Decome$(para2$) para3$=Decome$(para3$) para4$=Decome$(para4$) para5$=Decome$(para5$) ElseIf dritteskomma para1$=Mid(parameter$, 1, ersteskomma-1) para2$=Mid(parameter$, ersteskomma+1, zweiteskomma-ersteskomma-1) para3$=Mid(parameter$, zweiteskomma+1, dritteskomma-zweiteskomma-1) para4$=Mid(parameter$, dritteskomma+1) para1$=Decome$(para1$) para2$=Decome$(para2$) para3$=Decome$(para3$) para4$=Decome$(para4$) ElseIf zweiteskomma para1$=Mid(parameter$, 1, ersteskomma-1) para2$=Mid(parameter$, ersteskomma+1, zweiteskomma-ersteskomma-1) para3$=Mid(parameter$, zweiteskomma+1) para1$=Decome$(para1$) para2$=Decome$(para2$) para3$=Decome$(para3$) ElseIf ersteskomma para1$=Mid(parameter$, 1, ersteskomma-1) para2$=Mid(parameter$, ersteskomma+1) para1$=Decome$(para1$) para2$=Decome$(para2$) Else para1$=parameter$ If para1$=befehl$ para1$="" If para1$<>"" para1$=Decome$(para1$) ;And Upper(befehl$)<>"GOTO" And Upper(befehl$)<>"IFINT" EndIf ;If Mid(zeile$,1,1)<>";" ;Stop Select Upper(befehl$) Case "IFINT" If erstesgleich>0 para1$=Mid(parameter$,1,erstesgleich-1) para2$=Mid(parameter$,erstesgleich+1) ElseIf erstesgroser>0 para1$=Mid(parameter$,1,erstesgroser-1) para2$=Mid(parameter$,erstesgroser+1) ElseIf ersteskleiner>0 para1$=Mid(parameter$,1,ersteskleiner-1) para2$=Mid(parameter$,ersteskleiner+1) EndIf ;For I=0 To variszahl ; If Var(I)\Name$=para1 Exit ;Next para1$=Decome$(para1$) para2$=Decome$(para2$) If erstesgleich>0 If Int(para1)<>Int(para2) aktuzeile=aktuzeile+1 EndIf ElseIf erstesgroser>0 If Int(para1)<Int(para2) aktuzeile=aktuzeile+1 EndIf ElseIf ersteskleiner>0 If Int(para1)>Int(para2) aktuzeile=aktuzeile+1 EndIf EndIf Case "HIDECURSOR" HidePointer() Case "SHOWCURSOR" ShowPointer() ;Case "WENN" Case "COLOR" Color Int(para1), Int(para2), Int(para3) Case "CLSCOLOR" ClsColor Int(para1), Int(para2), Int(para3) Case "COLORDESIGN" Select Upper(para1) Case "RED" Color 255,0,0 Case "YELLOW" Color 255,255,0 Case "ORANGE" Color 255,128,0 Case "GREEN" Color 0,255,0 Case "BLUE" Color 0,0,255 Case "LIGHTBLUE" Color 0,255,255 Case "BLUEGREEN" Color 0,128,255 End Select Case "CLS" Cls Case "GFX" If para3="" para3="16" If para4="" para4="1" Graphics Int(para1), Int(para2), Int(para3), Int(para4) Case "TITLE" AppTitle para1 Case "CHANGEDIR" ChangeDir para1$ Case "FULLSCREEN" If para3="" para3="16" Graphics Int(para1), Int(para2), Int(para3), 1 Case "WINDOW" If para4="" para4="16" AppTitle para1 Graphics Int(para2), Int(para3), Int(para4), 2 Case "NEWBUFFER" If Upper(para1)="BACKBUFFER" Or Upper(para1)="BACKBUFFER()" SetBuffer BackBuffer() ElseIf Upper(para1)="FRONTBUFFER" Or Upper(para1)="FRONTBUFFER()" SetBuffer FrontBuffer() EndIf Case "NEWINT" ;Steht im Lesebereich Case "NEWIMAGE" ;Steht im Lesebereich Case "NEWSOUND" ;Steht im Lesebereich Case "MARK" ;Steht im Lesebereich Case "PLAYSOUND" PlaySound(Int(para1)) Case "PLAYMUSIC" PlayMusic(para1) Case "DRAWIMAGE" DrawImage Int(para1$),Int(para2$),Int(para3$),Int(para4$) Case "DRAWBLOCK" DrawBlock Int(para1$),Int(para2$),Int(para3$),Int(para4$) Case "PRINT" Print para1 Case "WRITE" Write para1 Case "TEXT" If para4<>"0" And para4<>"1" para4 = 0 If para5<>"0" And para5<>"1" para5 = 0 Text Int(para1),Int(para2), para3$, Int(para4),Int(para5) ;Wenn ich hier kein Delay einfuege, dann wird der Text nicht ausgegeben ;Delay 100 ;Operationen Case "ADD" para1$=Mid(parameter$, 1, ersteskomma-1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$=para1 Exit Next Var\Wert = Var\Wert + Int(para2) Case "SUB" para1$=Mid(parameter$, 1, ersteskomma-1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$=para1 Exit Next Var\Wert = Var\Wert - Int(para2) Case "MUL" para1$=Mid(parameter$, 1, ersteskomma-1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$=para1 Exit Next Var\Wert = Var\Wert * Int(para2) Case "DIV" para1$=Mid(parameter$, 1, ersteskomma-1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$=para1 Exit Next Var\Wert = Var\Wert / Int(para2) Case "XOR" For Var.tVar = Each tVar If Var\Name$=para1 Exit Next Var\Wert = Var\Wert Xor Int(para2) Case "WAITKEY" WaitKey() Case "WAITMOUSE" WaitMouse() Case "WAITMOUSESPEED" Repeat Until MouseXSpeed()<>0 Or MouseYSpeed()<>0 Case "WAIT" Delay Int(para1) Case "LINE" Line Int(para1),Int(para2),Int(para3),Int(para4) Case "PLOT" Plot Int(para1),Int(para2) Case "RECT" Rect Int(para1),Int(para2),Int(para3),Int(para4) Case "OVAL" Oval Int(para1),Int(para2),Int(para3),Int(para4) Case "CIRCLE" Oval Int(para1)-Int(para3),Int(para2)-Int(para3),Int(para3)*2,Int(para3)*2,Int(para4) Case "DRAWADDSIGN" Rect Int(para1)-Int(para3),Int(para2),Int(para3)*2,Int(para4) Rect Int(para1),Int(para2)-Int(para3),Int(para4),Int(para3)*2 Case "STOP" Stop Case "WAITONDEBUG" For Var.tVar = Each tVar Text 5, T*15+5, Var\Name$ Text 100, T*15+5, Var\Wert Next Text 5, T*15+20, CurrentDir$() WaitKey() Case "FLIP" Flip ;Case "GOTO" ;fromzeile=aktuzeile ; ;For I=0 To markezahl ; If Marke(I)\Name$=para1$ Exit ;Next ;aktuzeile=Marke(I)\Index Case "GORETURN" aktuzeile=fromzeile Case "END" ;Beenden End Case "" ;Nichts Default RuntimeError "Befehl in Zeile "+(aktuzeile+1)+" nicht erkannt" End Select ;EndIf EndIf aktuzeile=aktuzeile+1 Until aktuzeile=maxzeile End Function Typ$(stri$) If Mid(stri$,1,1)=Chr(34) Return "Str" If Asc( Mid(stri$,1,1) )>47 And Asc( Mid(stri$,1,1) )<58 Return "Int" Return "Var" End Function Function NoString$(bibname$) Return Mid(bibname$,2,Len(bibname$)-2) End Function Function Decome$(paras$) If Typ(paras$)="Str" Return NoString(paras$) ElseIf Typ(paras$)="Var" For var.tVar = Each tVar ;If T=variszahl RuntimeError "Variable in Zeile "+Str$(aktuzeile+1)+" nicht erkannt." If var\Name$=paras$ right_var = var Exit EndIf Next ;Select T ;Case 1 ;End Select paras$ = Str$( right_var\Wert ) EndIf Return paras$ End Function Function DeclareVars(typus$="all") If typus$="mouse" Or typus$="all" Var.tVar = New tVar Var\Wert=event$ Var.tVar = New tVar Var\Wert=MouseX() Var.tVar = New tVar Var\Wert=MouseY() Var.tVar = New tVar Var\Wert=MouseZ() Var.tVar = New tVar Var\Wert=MouseXSpeed() Var.tVar = New tVar Var\Wert=MouseYSpeed() Var.tVar = New tVar Var\Wert=MouseZSpeed() Var.tVar = New tVar EndIf If typus$="zufall" Or typus$="all" Var.tVar = New tVar Var\Wert=Rand(0,10) EndIf End Function Function ShowDebug() For Var.tVar = Each tVar DebugLog Str$(I)+". "+Var\Wert Next End Function [mod] Habe mir wegen der Länge des codes erlaubt auf Standard-Codetags zu ändern wegen der exorbitanten Ladezeit. Gruß BladeRunner [/mod] |
||
- Zuletzt bearbeitet von E. Urbach am Mo, Jun 13, 2005 14:28, insgesamt einmal bearbeitet
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, ich keine Lust mich in den Code einzuarbeiten, aber will dir doch etwas helfen ![]() Und hab diesen mal auf die Schnelle Formatiert mit Tabs usw. Code: [AUSKLAPPEN] Type tVar Field Wert, Name$ End Type Global right_var.tVar = New tVar Dim AlleZeilen$ (1000) Global befehl$, para1$, para2$, para3$, para4$, para5$, ersteskomma, zweiteskomma, dritteskomma, vierteskomma Global erstesleer Global erstesgleich, zeile$, datei, markezahl = -1, variszahl = -1, ruck, paras$, aktuzeile Global dateiname$ = CommandLine () datei = ReadFile (dateiname$) If datei = 0 Then RuntimeError "Datei " + dateiname$ + " nicht gefunden." ;Lesen Repeat AlleZeilen (aktuzeile) = ReadLine (datei) zeile$ = AlleZeilen (aktuzeile) erstesleer = Instr (zeile$," ") befehl$ = Mid (zeile$,1,erstesleer - 1) para1$ = Mid (zeile, erstesleer + 1) erstesgleich = Instr (para1$,"=") If Left (zeile,1) <> ";" Then Select Upper$ (befehl$) Case "NEWINT" variszahl = variszahl + 1 Var.tVar = New tVar Var\Wert = Int ( Mid ( para1$, erstesgleich + 1 ) ) Var\Name$ = Mid ( para1$, 1, erstesgleich - 1 ) Case "NEWIMAGE" variszahl = variszahl + 1 Var.tVar = New tVar Var\Wert = LoadImage ( NoString (Mid ( para1$, erstesgleich + 1 ) ) ) Var\Name$ = Mid ( para1$, 1, erstesgleich - 1 ) Case "NEWSOUND" variszahl = variszahl + 1 Var.tVar = New tVar Var\Wert = LoadSound ( NoString (Mid ( para1$, erstesgleich + 1 ) ) ) Var\Name$ = Mid ( para1$, 1, erstesgleich - 1 ) End Select EndIf aktuzeile = aktuzeile + 1 Until Eof (datei) = 1 maxzeile = aktuzeile CloseFile datei aktuzeile = 0 ;Ausfuehren Repeat DeclareVars () zeile$ = AlleZeilen (aktuzeile) erstesleer = Instr (zeile$," ") befehl$ = Mid (zeile$,1,erstesleer - 1) If Left (zeile,1) <> ";" And Left (zeile,1) <> "" Then ;And Upper(befehl$)<>"MARK";Wenn kein Kommentar parameter$ = Mid (zeile, erstesleer + 1) If parameter$ = befehl$ Then parameter$ = "" ersteskomma = Instr (parameter$,",") zweiteskomma = Instr (parameter$,",",ersteskomma + 1) dritteskomma = Instr (parameter$,",",zweiteskomma + 1) vierteskomma = Instr (parameter$,",",dritteskomma + 1) ;Funktioniert leider nur fuer ein "" - Parameter (Zeichen) anf_found = Instr (parameter$,Chr (34) ) If anf_found Then If anf_found < ersteskomma And ersteskomma < Instr (parameter$,Chr (34) ,anf_found + 1) Then ersteskomma = 0 If anf_found < zweiteskomma And zweiteskomma < Instr (parameter$,Chr (34) ,anf_found + 1) Then zweiteskomma = 0 If anf_found < dritteskomma And dritteskomma < Instr (parameter$,Chr (34) ,anf_found + 1) Then dritteskomma = 0 If anf_found < vierteskomma And vierteskomma < Instr (parameter$,Chr (34) ,anf_found + 1) Then vierteskomma = 0 EndIf erstesgleich = Instr (parameter$,"=") erstesgroser = Instr (parameter$,">") ersteskleiner = Instr (parameter$,"<") para1$ = "" para2$ = "" para3$ = "" para4$ = "" para5$ = "" If vierteskomma Then para1$ = Mid (parameter$, 1, ersteskomma - 1) para2$ = Mid (parameter$, ersteskomma + 1, zweiteskomma - ersteskomma - 1) para3$ = Mid (parameter$, zweiteskomma + 1, dritteskomma - zweiteskomma - 1) para4$ = Mid (parameter$, dritteskomma + 1, vierteskomma - dritteskomma - 1) para5$ = Mid (parameter$, vierteskomma + 1) para1$ = Decome$ (para1$) para2$ = Decome$ (para2$) para3$ = Decome$ (para3$) para4$ = Decome$ (para4$) para5$ = Decome$ (para5$) ElseIf dritteskomma para1$ = Mid (parameter$, 1, ersteskomma - 1) para2$ = Mid (parameter$, ersteskomma + 1, zweiteskomma - ersteskomma - 1) para3$ = Mid (parameter$, zweiteskomma + 1, dritteskomma - zweiteskomma - 1) para4$ = Mid (parameter$, dritteskomma + 1) para1$ = Decome$ (para1$) para2$ = Decome$ (para2$) para3$ = Decome$ (para3$) para4$ = Decome$ (para4$) ElseIf zweiteskomma para1$ = Mid (parameter$, 1, ersteskomma - 1) para2$ = Mid (parameter$, ersteskomma + 1, zweiteskomma - ersteskomma - 1) para3$ = Mid (parameter$, zweiteskomma + 1) para1$ = Decome$ (para1$) para2$ = Decome$ (para2$) para3$ = Decome$ (para3$) ElseIf ersteskomma para1$ = Mid (parameter$, 1, ersteskomma - 1) para2$ = Mid (parameter$, ersteskomma + 1) para1$ = Decome$ (para1$) para2$ = Decome$ (para2$) Else para1$ = parameter$ If para1$ = befehl$ Then para1$ = "" If para1$ <> "" Then para1$ = Decome$ (para1$) ;And Upper(befehl$)<>"GOTO" And Upper(befehl$)<>"IFINT" EndIf ;If Mid(zeile$,1,1)<>";" ;Stop Select Upper (befehl$) Case "IFINT" If erstesgleich > 0 Then para1$ = Mid (parameter$,1,erstesgleich - 1) para2$ = Mid (parameter$,erstesgleich + 1) ElseIf erstesgroser > 0 para1$ = Mid (parameter$,1,erstesgroser - 1) para2$ = Mid (parameter$,erstesgroser + 1) ElseIf ersteskleiner > 0 para1$ = Mid (parameter$,1,ersteskleiner - 1) para2$ = Mid (parameter$,ersteskleiner + 1) EndIf ;For I=0 To variszahl ; If Var(I)\Name$=para1 Exit ;Next para1$ = Decome$ (para1$) para2$ = Decome$ (para2$) If erstesgleich > 0 Then If Int (para1) <> Int (para2) Then aktuzeile = aktuzeile + 1 EndIf ElseIf erstesgroser > 0 If Int (para1) < Int (para2) Then aktuzeile = aktuzeile + 1 EndIf ElseIf ersteskleiner > 0 If Int (para1) > Int (para2) Then aktuzeile = aktuzeile + 1 EndIf EndIf Case "HIDECURSOR" HidePointer () Case "SHOWCURSOR" ShowPointer () ;Case "WENN" Case "COLOR" Color Int (para1) , Int (para2) , Int (para3) Case "CLSCOLOR" ClsColor Int (para1) , Int (para2) , Int (para3) Case "COLORDESIGN" Select Upper (para1) Case "RED" Color 255 ,0,0 Case "YELLOW" Color 255 ,255,0 Case "ORANGE" Color 255 ,128,0 Case "GREEN" Color 0 ,255,0 Case "BLUE" Color 0 ,0,255 Case "LIGHTBLUE" Color 0 ,255,255 Case "BLUEGREEN" Color 0 ,128,255 End Select Case "CLS" Cls Case "GFX" If para3 = "" Then para3 = "16" If para4 = "" Then para4 = "1" Graphics Int (para1) , Int (para2) , Int (para3) , Int (para4) Case "TITLE" AppTitle para1 Case "CHANGEDIR" ChangeDir para1$ Case "FULLSCREEN" If para3 = "" Then para3 = "16" Graphics Int (para1) , Int (para2) , Int (para3) , 1 Case "WINDOW" If para4 = "" Then para4 = "16" AppTitle para1 Graphics Int (para2) , Int (para3) , Int (para4) , 2 Case "NEWBUFFER" If Upper (para1) = "BACKBUFFER" Or Upper (para1) = "BACKBUFFER()" Then SetBuffer BackBuffer () ElseIf Upper (para1) = "FRONTBUFFER" Or Upper (para1) = "FRONTBUFFER()" SetBuffer FrontBuffer () EndIf Case "NEWINT" ;Steht im Lesebereich Case "NEWIMAGE" ;Steht im Lesebereich Case "NEWSOUND" ;Steht im Lesebereich Case "MARK" ;Steht im Lesebereich Case "PLAYSOUND" PlaySound (Int (para1) ) Case "PLAYMUSIC" PlayMusic (para1) Case "DRAWIMAGE" DrawImage Int (para1$) ,Int (para2$) ,Int (para3$) ,Int (para4$) Case "DRAWBLOCK" DrawBlock Int (para1$) ,Int (para2$) ,Int (para3$) ,Int (para4$) Case "PRINT" Print para1 Case "WRITE" Write para1 Case "TEXT" If para4 <> "0" And para4 <> "1" Then para4 = 0 If para5 <> "0" And para5 <> "1" Then para5 = 0 Text Int (para1) ,Int (para2) , para3$, Int (para4) ,Int (para5) ;Wenn ich hier kein Delay einfuege, dann wird der Text nicht ausgegeben ;Delay 100 ;Operationen Case "ADD" para1$ = Mid (parameter$, 1, ersteskomma - 1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$ = para1 Then Exit Next Var\Wert = Var\Wert + Int (para2) Case "SUB" para1$ = Mid (parameter$, 1, ersteskomma - 1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$ = para1 Then Exit Next Var\Wert = Var\Wert - Int (para2) Case "MUL" para1$ = Mid (parameter$, 1, ersteskomma - 1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$ = para1 Then Exit Next Var\Wert = Var\Wert * Int (para2) Case "DIV" para1$ = Mid (parameter$, 1, ersteskomma - 1) ;para2$=Mid(parameter$, ersteskomma+1) For Var.tVar = Each tVar If Var\Name$ = para1 Then Exit Next Var\Wert = Var\Wert / Int (para2) Case "XOR" For Var.tVar = Each tVar If Var\Name$ = para1 Then Exit Next Var\Wert = Var\Wert Xor Int (para2) Case "WAITKEY" WaitKey () Case "WAITMOUSE" WaitMouse () Case "WAITMOUSESPEED" Repeat Until MouseXSpeed () <> 0 Or MouseYSpeed () <> 0 Case "WAIT" Delay Int (para1) Case "LINE" Line Int (para1) ,Int (para2) ,Int (para3) ,Int (para4) Case "PLOT" Plot Int (para1) ,Int (para2) Case "RECT" Rect Int (para1) ,Int (para2) ,Int (para3) ,Int (para4) Case "OVAL" Oval Int (para1) ,Int (para2) ,Int (para3) ,Int (para4) Case "CIRCLE" Oval Int (para1) - Int (para3) ,Int (para2) - Int (para3) ,Int (para3) * 2 ,Int (para3) * 2 ,Int (para4) Case "DRAWADDSIGN" Rect Int (para1) - Int (para3) ,Int (para2) ,Int (para3) * 2 ,Int (para4) Rect Int (para1) ,Int (para2) - Int (para3) ,Int (para4) ,Int (para3) * 2 Case "STOP" Stop Case "WAITONDEBUG" For Var.tVar = Each tVar Text 5, T * 15 + 5, Var\Name$ Text 100 , T * 15 + 5, Var\Wert Next Text 5, T * 15 + 20 , CurrentDir$ () WaitKey () Case "FLIP" Flip ;Case "GOTO" ;fromzeile=aktuzeile ; ;For I=0 To markezahl ; If Marke(I)\Name$=para1$ Exit ;Next ;aktuzeile=Marke(I)\Index Case "GORETURN" aktuzeile = fromzeile Case "END" ;Beenden End Case "" ;Nichts Default RuntimeError "Befehl in Zeile " + (aktuzeile + 1) + " nicht erkannt" End Select ;EndIf EndIf aktuzeile = aktuzeile + 1 Until aktuzeile = maxzeile End Function Typ$ (stri$) If Mid (stri$,1,1) = Chr (34) Then Return "Str" If Asc ( Mid (stri$,1,1) ) > 47 And Asc ( Mid (stri$,1,1) ) < 58 Then Return "Int" Return "Var" End Function Function NoString$ (bibname$) Return Mid (bibname$,2,Len (bibname$) - 2) End Function Function Decome$ (paras$) If Typ (paras$) = "Str" Then Return NoString (paras$) ElseIf Typ (paras$) = "Var" For var.tVar = Each tVar ;If T=variszahl RuntimeError "Variable in Zeile "+Str$(aktuzeile+1)+" nicht erkannt." If var\Name$ = paras$ Then right_var = var Exit EndIf Next ;Select T ;Case 1 ;End Select paras$ = Str$ ( right_var\Wert ) EndIf Return paras$ End Function Function DeclareVars (typus$ = "all") If typus$ = "mouse" Or typus$ = "all" Then Var.tVar = New tVar Var\Wert = event$ Var.tVar = New tVar Var\Wert = MouseX () Var.tVar = New tVar Var\Wert = MouseY () Var.tVar = New tVar Var\Wert = MouseZ () Var.tVar = New tVar Var\Wert = MouseXSpeed () Var.tVar = New tVar Var\Wert = MouseYSpeed () Var.tVar = New tVar Var\Wert = MouseZSpeed () Var.tVar = New tVar EndIf If typus$ = "zufall" Or typus$ = "all" Then Var.tVar = New tVar Var\Wert = Rand (0 ,10) EndIf End Function Function ShowDebug () For Var.tVar = Each tVar DebugLog Str$ (I) + ". " + Var\Wert Next End Function |
||
[BB2D | BB3D | BB+]
|
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Ralliman
Danke, dass du mir diese Arbeit erspart hast, aber den Fehler kann ich immer noch nicht finden. @All Es ist bei mir noch nie vorgekommen, dass ich nach einem Text oder Print Befehl das Programm ! IRGENDWIE ! abbremsen muss. Und Delay 1 oder so hilft nicht, es muss wirklich stark (mind. 1/10 sek.) abbgebremst werden, ansonsten wird der Befehl einfach übersprungen. Ich habe auch versucht, in der Case - Verzweigung ein Stop einzusetzen und der Debugger hält auch an! Also wird der Fall (Case) aufgerufen, aber der Befehl Text oder Print ! IRGENDWIE ! übersprungen. Weiß denn niemand was? Ich bin wirklich am Verzweifeln! ![]() |
||
![]() |
XaronBetreff: Re: Skript-Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Basic_Progger hat Folgendes geschrieben: Der neue Text wird nicht geschrieben. Wenn ich Delay 1 nach dem Text - Befehl einsetze funktioniert es trotzdem nicht. Nur bei einem Wert ca. > 100.
Das hat dann wohl vermutlich irgendwas mit den Buffern und dem Flip zu tun. Ich hab's mir jetzt nicht angeschaut, aber der Fehler entspräche in etwa dem Verhalten... Übersprungen wird der Befehl sicher nicht. ![]() Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
![]() |
Xaron |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Fehler tritt hier auf:
Code: [AUSKLAPPEN] Case "NEWBUFFER" If Upper (para1) = "BACKBUFFER" Or Upper (para1) = "BACKBUFFER()" Then SetBuffer BackBuffer () ElseIf Upper (para1) = "FRONTBUFFER" Or Upper (para1) = "FRONTBUFFER()" SetBuffer FrontBuffer () EndIf Das Problem ist: para1 ist bei mir immer 0. Damit wird wohl der Buffer nicht richtig gesetzt und ein Flip-Kommando zeigt Dir dann anschließend den leeren Backbuffer. ![]() Du musst in Deinem Skript also in der zweiten Zeile: newbuffer "backbuffer" schreiben, den Parameter also mit den Anführungszeichen als String klassifizieren. Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
E. Urbachehemals "Basicprogger"Betreff: Stimmt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt!
Du hast Recht! Dass ich darauf nicht gekommen bin! ![]() Edit: Warte mal, wenn ich in einem normalen BB-Programm das normal funzt das aber nicht! SetBuffer BackBuffer() Print "Hallo" das funzt bei mir nicht mehr, erst mit Delay 100 SetBuffer BackBuffer() Print "Hallo" Delay 100 |
||
![]() |
XaronBetreff: Re: Stimmt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Basic_Progger hat Folgendes geschrieben: Stimmt!
Du hast Recht! Dass ich darauf nicht gekommen bin! ![]() Edit: Warte mal, wenn ich in einem normalen BB-Programm das normal funzt das aber nicht! SetBuffer BackBuffer() Print "Hallo" das funzt bei mir nicht mehr, erst mit Delay 100 Flip vergessen? Bei mir geht beides... Komisch. Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
äh, ja,bin ich blöd,sry, tschuldige, ich meinte natürlich:
setbuffer frontbuffer() Print "Test" ;Wenn ich hier KEIN Delay 100 oder waitkey benutze geht's nicht. Früher gings Edit: Früher, ca. vor 'n paar Monaten |
||
![]() |
Xaron |
![]() Antworten mit Zitat ![]() |
---|---|---|
Komisch... auch das funktioniert bei mir.
Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ja, das funktioniert natürlich, aber komisch, is wahrscheinlich irgendeine Sache auf meinem PC, die das verhindert. Mir ist schon klar, dass das eigentlich funktionieren MÜSSTE, weil das ja bei Renes Buch auch gleich im ersten Kapitel steht, aber seit geraumer Zeit nicht mehr.
Ich versuch mal, BB3D neu zu installieren und ein neues Update zu holen! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group