PBScript - Scriptsprache mit PureBasic-Syntax

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

so, bugfix ist hochgeladen.
famous hat geschrieben:was ich allerdings nicht schlecht finden würde wenn man proceduren
nicht extra noch im skript deklarieren müsste
ta, aber anderes ist es leider nicht möglich. denn ich muss wissen, wie die procedure aussieht, die aufgerufen werden soll. also wie viele parameter sie hat, welche typen die parameter haben, welchen typ der rückgabewert hat. ich hab mir nämlich mal selbst ne "CallFastFunction" - Funktion zusammengebastelt, mit der ich jede art von funktion aufrufen kann, also mit allen typen. dafür muss sie aber, wie schon gesagt, die procedure "kennen".
famous hat geschrieben:edit: um das für alle möglichen spiele gängig zu machen wäre vll nicht
schlecht wenn man zeichen und schlüsselwörter umstellen könnte. zb
statt ein string mit "Hallo" ein string mit 'Hallo' oder statt Procedure Function :)
hmm, nun ja, interressant wäre der vorschlag schon. aber es gibt meines wissens keine scriptsprache (oder wenn nur sehr wenige), die sowas unterstützt. jede sprache hat ihre eigene syntax. da kann man eigentlich nichts dran ändern. und bei PBScript war meine intention von vornerein, dass sie die syntax von PureBasic hat, damit pb-dateien gleichzeitig "normal" benutzt werden können und mit PBScript. ist halt meine meinung.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von neotoma »

Hi Kevin,

ich habe einen Fehler mit der Enumeration:

Code: Alles auswählen

; Hier das Scriptprogramm
  string.s = #LF$
  string + "  ; Some events"
  string + "Enumeration "
  string + "  #E_NEWGAME"
  string + "  #E_PAUSEGAME"
  string + "  #E_RESUMEGAME"
  string + "  #E_STOPGAME"
  string + "  #E_APPCLOSE"
  string + "  #E_INCSCORE"
  string + "  #E_POWERUP"
  string + "EndEnumeration"
  string + ""+#LF$
  string + "Global var.i"+#LF$
  string + ""+#LF$
  string + "Procedure PBFSendEvent(type.i, arg1.i=0, arg2.i=0)"+#LF$
  string + "EndProcedure"+#LF$
  string + ""+#LF$
  string + "Procedure testEvents()"+#LF$
  string + "PBFSendEvent( #E_NEWGAME )"+#LF$
  string + "PBFSendEvent( #E_INCSCORE, 1000 )"+#LF$
  string + "PBFSendEvent( #E_PAUSEGAME )"+#LF$  
  string + "EndProcedure"+#LF$
  
  ;Try to compile the Script
  *bytecode = PBSCompileScriptString(string)
  If (*bytecode = #Null)
    MessageRequester("Compiler-Error", PBSGetErrorText())
    End
  EndIf
  
  If PBSOpenByteMemory(0, *bytecode)
        
    ;Try to trigger the Event-Thingie
    PBSCallProcedure(0, "testEvents", #Null)
    
    PBSCloseByteScript(0)
  EndIf
Er meckert immer, das #E_NEWGAME nicht kenne. Bug?

Außerdem - wäre es ganz hilfreich, wenn man Constanten 'Nachreichen' könnte.
Also per Programm. Ich weiß nicht nicht, ob das mit Deinem Bytecode geht.

z.B.

Code: Alles auswählen

PBSSetConstant(name.s,value.i)
Gruß,
Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von neotoma »

Schon wieder ich, noch ein Thema -

evtl. passt es zu dem oben besprochenen Bug mit Strings.
Wenn ich eine Procedure einen String übergeben lasse, den ich in PBScript vorher zusammenbaue, 'schmiert' er ab.
Also z.b. test.s = "eins="+str(eins)

Beispiel:

Code: Alles auswählen

; Hier das Scriptprogramm
  string.s = #LF$
  string + "Procedure ScriptDebug(text.s)"+#LF$
  string + "EndProcedure"+#LF$
  string + ""+#LF$
  string + "Procedure Test(text.s)"+#LF$
  string + "  ScriptDebug(text)"+#LF$
  string + "EndProcedure"+#LF$
  string + ""+#LF$
  string + "Procedure testMau(val1.i,val2.i=0,val3.i=0)"+#LF$
  string + " Test("+chr(34)+"Oha:"+chr(34)+")"+#LF$
  string + "EndProcedure"+#LF$
  string + ""+#LF$  
  string + "Procedure testMe(val1.i,val2.i=0,val3.i=0)"+#LF$
  string + " Test("+chr(34)+"Oha:"+chr(34)+"+Str(val2))"+#LF$
  string + "EndProcedure"+#LF$
  
  
  Procedure ScriptDebug(text.s)
      Debug("SCRIPT::"+text)
  EndProcedure  
  
  ;Try to compile the Script
  *bytecode = PBSCompileScriptString(string)
  If (*bytecode = #Null)
    MessageRequester("Compiler-Error", PBSGetErrorText())
    End
  EndIf
  
  Define value.PBSValue
  If PBSOpenByteMemory(0, *bytecode)
    
      PBSSetProcedureAdress(0, "ScriptDebug", @ScriptDebug())
    
     ;Funktionsaufruf mit Parameter
      Dim params.PBSValue(2)
      params(0)\type = #PBSType_Integer
      params(0)\integer = 1223
      params(1)\type = #PBSType_Integer
      params(1)\integer = 1223
      params(2)\type = #PBSType_Integer
      params(2)\integer = 1223
      value\type = #PBSType_Integer
      value\integer = 0
      result.i = PBSCallProcedure(0, "testMau", value, 3, params())    
      result.i = PBSCallProcedure(0, "testMau", value, 3, params())    
      result.i = PBSCallProcedure(0, "testMau", value, 3, params())    
      result.i = PBSCallProcedure(0, "testMe" , value, 3, params())    
    
    PBSCloseByteScript(0)
  EndIf
Nur wenn ich den mit str()-zusammengeklebten String nutze steigt er aus.

BTW: Wäre es nicht möglich, die Debug-Ausgabe aus dem Script nach PB umzuleiten?

Gruß,
Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

Hi Mike,
neotoma hat geschrieben:Er meckert immer, das #E_NEWGAME nicht kenne. Bug?
also das hat mich doch schon sehr verwirrt. Dann hat ich gesehen, dass du im Enumerations-Block kein Zeilenumbruch hat. der ist also in einer einzigen zeile. dann hats mich verwirrt, das kein fehler angezeigt wurde. und schließlich hab ich gesehen, dass hinter dem kommentar "; Some events" auch kein Zeilenumbruch ist. demnach ist der gesammte Enumerations-Block im kommentar.
HAHA kein Bug von PBScript :bounce: .
ich glaube, wenn man wirklich dann ein script schreibt, sollte man es in einer seperaten datei machen. dafür gibts ja PBSCompileScriptFile().
neotoma hat geschrieben:Nur wenn ich den mit str()-zusammengeklebten String nutze steigt er aus.
:oops: :oops: ist ein bug.. funktioniert auch noch mit 0.24 und pb 4.40. hab halt nicht viel getestet mit der neuen version. ich musste da doch vieles umschreiben, da strings und numerics nicht zusammen in structureunion stehen dürfen. böses PB!!!!!!!
naja egal, werd mit drum kümmern. ich hoffe morgen, kanns aber nicht versprechen.

So nun zu den wünschen:
neotoma hat geschrieben:Außerdem - wäre es ganz hilfreich, wenn man Constanten 'Nachreichen' könnte.
Also per Programm. Ich weiß nicht nicht, ob das mit Deinem Bytecode geht.
Tja, das wird wohl leider nicht gehen, sorry. Denn genau so wie PB, werden in PBScript die konstanten und auch operationen mit konstanten zur COMPILEZEIT berechnet und eingefügt. also im bytecode sind gar keine konstanten vorhanden. es gibt sie quasi gar nicht mehr. das muss auch so sein: z.b. bei einer for-schleife ist der 'Step'-Wert eine konstante. jenachdem ob diese konstante negativ oder positiv ist, sieht letztentlich die schleife im script aus. das muss leider zur compilezeit feststehen.
neotoma hat geschrieben:BTW: Wäre es nicht möglich, die Debug-Ausgabe aus dem Script nach PB umzuleiten?
also wenn ich das richtig verstehe, du möchtest 'Debug' auch im script benutzen. und dann soll das in pb angezeigt werden. ich glaub so einfach wäre das nicht möglich. na obwohl ich könnte es aber mit einem callback-aufruf realisieren. also so (pseudocode):

Code: Alles auswählen

Script:
  Debug "Hallo"
  Debug 2
--------------
PB:
  Procedure ScriptDebug(str.s)
    Debug str
  EndProcedure
  PBSSetDebugCallback(@ScriptDebug())
  ...
Bei jedem 'Debug' im script würde dann die procedure aufgerufen werden, die man mit PBSSetDebugCallback() z.b definiert. wäre echt ne idee. werd ich denk ich reinbauen.

so das wars erstmal. ich hoffe ich hab alles so weit beantwortet.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

so entschuldigt, hat ein bisschen länger gedauert. hatte gestern probleme mit dem upload. konnte mich wohl nicht mehr konzentrieren.

Version alpha 0.26:
- (NEU) PBSSetDebugCallback(), um "Debug"-Ausdrücke aus dem Script umzuleiten
- (GEÄNDERT) PBSSetProcedureAdress(): Script-Parameter kann #PB_Default sein. Mehr in der Hilfe

Im Script:
- (NEU) Debug
- (NEU) IncludePath / (X)IncludeFile
- Bugfixes (besonders die Verkettung von Strings!!)

@neotoma:
entschuldige nochmal, dass das so lange gedauert hat. aber deine wünsche hab ich ja auch weitenstgehend umgesetzt :D

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von neotoma »

Super!
Das ging ja fix. :allright:

Werde es die nächsten Tage einbauen - melde mich mit Feedback.

Gruß,
Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
famous
Beiträge: 31
Registriert: 07.01.2010 16:58

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von famous »

jetzt ich bekomme den fehler "The following PureLibrary is missing: Array" :o
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

ok? den fehler find ich sehr mysterious. also da ja ne neue version von pb draußen ist, hab die lib mal neu kompiliert:

Version alpha 0.27:
- Neue Version für PB 4.50 RC 1

Link ist wie immer im ersten Post. Versuchs mal damit. Ich hoffe es liegt nur an der alten Version.
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
famous
Beiträge: 31
Registriert: 07.01.2010 16:58

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von famous »

ok es liegt wohl daran das ich pb 4.4 hab. kannst du nochmal eine
version für 4.4 uppen?
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

famous hat geschrieben:ok es liegt wohl daran das ich pb 4.4 hab. kannst du nochmal eine
version für 4.4 uppen?
ist doch auch am anfang. der zweite link ist für PureBasic <= 4.40.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Antworten