Seite 7 von 10

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 28.07.2010 23:08
von CSHW89
Sowas ist natürlich immer schön zu hören, auch wenn sich mir dein projekt nicht ganz erschließt. aber egal. meld dich ruhig, falls was unklar ist, du anmerkungen hast, oder bugmeldungen. gilt natürlich auch für jeden anderen.

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 29.07.2010 10:26
von tft
Hallo,

nur zur Erklärung. Ich schreibe gerade an einem SpaceGame mir Xors3D. Unteranderem sollen die Flugmanöver
der Schiffe mittels Scrippt gesteuert werden. Es wird diverse Flugmanöver zu Kaufen geben (In Game) Und später
wird es die Möglichkeit geben auch eigene Skripe zu erstellen, um das ganze abwechslungsreicher zu gestalten.
Sicher gibts auch den Freiflug. Aber das steht an anderer Stelle.

Gruss TFT

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 02.08.2010 03:15
von famous
Absolute klasse :allright:
verwende es zur erweiterung einer app.

Vorschläge wären evtl:
- so wie für Debug für End ein Callback um den
code zu beenden
- fehler texte (error) selbst zu definieren wäre wichtig
vorallem für mehrsprachige ausgabe
- evlt möglichkeiten vorgefertigte funktionen/konstanten zu
deaktivieren wenn eigene verwendet werden

opensource wäre natürlich für manche anpassungen sehr nützlich
aber fals du das projekt nichtmehr weiterführst könntest du es evtl
bereitstellen ;)

weiter so :wink:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 02.08.2010 22:38
von CSHW89
Allsooo
famous hat geschrieben:Absolute klasse :allright:
verwende es zur erweiterung einer app.
danke nochmals

@famous:
da du ja ein paar anregungen hast, beziehe ich dich mal mit ein:
famous hat geschrieben:- so wie für Debug für End ein Callback um den
code zu beenden
hmm, ok 'End' sollte mal rein, da ja mit dem 'End' die procedure wirklich beendet wird, kann man ja danach einfach den exitcode abfragen, durch ne neue funktion. sowas zum beispiel:

Code: Alles auswählen

PBSStartByteCode(0)
Debug PBSGetExitCode()
was hältste denn davon? wäre denk ich ein bisschen einfacher.
famous hat geschrieben:- fehler texte (error) selbst zu definieren wäre wichtig
vorallem für mehrsprachige ausgabe
ok, den nutzen kann ich schon verstehen. ist aber ne sau arbeit. mal sehen wann ich dafür zeit habe. aber schon mal vorweg, wie sollte man den am besten die texte einbinden? das einfachste wäre wohl, dass man selber ne preference-datei schreibt, und sie dann einliest:

Code: Alles auswählen

; Preference-Datei 'german.ini':
SyntaxError = Syntax-Fehler.
[...]
oder hast du da vielleicht ne andere idee?
famous hat geschrieben:- evlt möglichkeiten vorgefertigte funktionen/konstanten zu
deaktivieren wenn eigene verwendet werden
da sehe ich zwar nicht so ganz den nutzen hinter, aber ist nicht so schwierig umzusetzen. was bräuchtest du denn da? dass man alle funktionen/konstanten deaktivieren kann, oder nur ein paar bestimmte?
famous hat geschrieben:opensource wäre natürlich für manche anpassungen sehr nützlich
aber fals du das projekt nichtmehr weiterführst könntest du es evtl
bereitstellen ;)
das willst du selbst nicht :wink: . erstens programmier ich nicht ganz so sauber, also fast keine kommentare, dann ist der source schon recht groß (so 8000 zeilen ca.), und das wichtigste ist, das ich ne menge assambler reinschreiben musste, da ich ja so aufrufe wie 'Dim a.b(10)' manuel machen muss, damit ich arrays und jetzt auch listen eigenständig erstellen kann. aber keine sorge, zur zeit pflege ich das noch gut genug. und das wird auch noch so bleiben. vorallem wenn ich sehe das andere die sprache auch verwenden :D .

so noch generell zu sagen ist, das ich grad an einem schwerwiegenden problem hing. strukturen die zu groß waren, haben nicht richtig funktioniert. das hab ich jetzt bereinigt. dann wollt ich noch das tool auf fordermann bringen. es können nämlich immer noch nicht die elemente von arrays oder listen angezeigt werden. die hälfte hab ich da schon.

so, im großen und ganzen wars das erstmal

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 03.08.2010 01:46
von famous
ja es ginge nur darum das "End" verwendet werden könnte statt eine procedure
wie "End()".

als array wäre es denke ich nicht schlecht. Was für dich am einfachsten wäre, wobei
eben ein array oder eine datasection besser zum einbinden wäre. ;)
dass man alle funktionen/konstanten deaktivieren kann, oder nur ein paar bestimmte?
bestimmte wäre natürlich am optimalsten aber alles oder nichts wäre auch schon hilfreich ^^
es können nämlich immer noch nicht die elemente von arrays oder listen angezeigt werden. die hälfte hab ich da schon.
meinst du damit sie funktioniert nicht?

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 03.08.2010 06:18
von CSHW89
famous hat geschrieben:Zitat:
es können nämlich immer noch nicht die elemente von arrays oder listen angezeigt werden. die hälfte hab ich da schon.

meinst du damit sie funktioniert nicht?
doch doch, keine angst, kannst arrays und listen benutzen. das tool, was ich zusätzlich bereit stelle, ist so eine art kleiner debugger, mit dem man scripte ausführen kann. es kann auch variablen und ihre werte zur laufzeit anzeigen, allerdings noch nicht die arrays und listen, daran arbeite ich grad noch.

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 08.08.2010 13:56
von CSHW89
Wieder mal eine neue Version, ist aber auch nur ein kleines update. hauptaugenmerk waren die wünsche von famous :wink: und das tool (siehe unten).

Version alpha 0.31:
- (NEU) PBSGetExitCode(), um den Exitcode nach einem End im Script auszulesen
- (NEU) PBSCompilerRenameConstant(), um den Namen einer vordefinierten Konstante zu ändern, oder sie ganz löschen

Im Script:
- (NEU) End mit ExitCode
- Bugfixes (mit großen Structuren gabs Probleme)

Außerdem hab ich mich intensiv mit dem Tool beschäftigt. Nun kann man auch die Elemente von Listen und Arrays beobachten. Allerdings muss ich sagen, dass das mit Listen noch etwas schwammig ist. Zur Laufzeit eines Scriptes sollte man das nicht so intensiv nutzen.

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 04.09.2010 12:50
von CSHW89
so meine lieben. viel gewerkelt, und das kommt raus. die beiden wichtigsten neuerungen sind multisprachen unterstützung, d.h. die fehlertexte beim kompilieren oder ausführen, können in verschiedenen sprachen ausgegeben werden (z.z. englisch und deutsch). die katalog-dateien sind im ordner 'Language'.
die zweite große neuerung ist, dass man Konstanten/Proceduren/Variablen vor dem Kompilieren definieren kann. Bei jedem Kompilieren sind sie dann im script bekannt. so müssen z.b. proceduren, die ausgelagert werden, nicht im script definiert werden.

Version alpha 0.40:
- (NEU) Multisprachen Unterstützung
- (NEU) Konstanten/Proceduren/Variablen können vor dem Kompilieren definiert werden

Im Script:
- (NEU) With/EndWith

Genaueres in der Hilfe

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 05.01.2011 17:20
von CSHW89
So lang hats gedauert, hier wieder eine neue Version. Diesmal nicht ganz so viel neues (zumindest nach außen hin ;) ).
Hauptaugenmerk diesmal die Multithreadunterstützung:

Version alpha 0.50:
- (NEU) Komplette Umprogrammierung des Compilers zur Multithreadunterstützung (gleichzeitiges Kompilieren mehrerer Scripte ist nun möglich)
- (NEU) Structuren können vor dem Kompilieren definiert werden

Im Script:
- (NEU) Extends bei Structure

lg kevin

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Verfasst: 07.02.2011 19:22
von MightyMAC
Hallo,

erstmal danke für die Bereitstellung dieser tollen Scriptsprache. Ich spiele gerade ein wenig mit der Multithread-Unterstützung und habe da ein anliegen. Wäre es möglich globale Variablen zwischen Scripts "geteilt" zu machen, soll heißen wenn ich in einem Script eine Variable ändere, daß sie dann automatisch in jedem Script geändert wird. Ich stelle mir in dieser Richtung folgendes vor:

Code: Alles auswählen

Define string.s, string2.s
Define *bytecode, *bytecode2
Define vartype.PBSVarType

; Script 1:
string = #LF$
string + "Global val=0"+#LF$
string + #LF$
string + "While Quit=0"+#LF$
string + "  For t=0 To 10 : Next"+#LF$
string + "  val+1"+#LF$
string + "Wend"+#LF$

; Script 2:
string2 = #LF$
string2 + "For t=0 To 60000 : Next"+#LF$
string2 + "Quit=1"+#LF$

; Globale Variable Quit für alle Scripts bereitstellen
vartype\type = #PBSType_Integer
PBSCompilerAddVariable("Quit",vartype)

; Threadstart-Procedure
 Procedure Start(wert)
   PBSStartByteCode(wert)
 EndProcedure

; Script 1 kompilieren
*bytecode = PBSCompileScriptString(string)
If (*bytecode = #Null)
  MessageRequester("Compiler-Error", PBSGetErrorText())
  End
EndIf

; Script 2 kompilieren
*bytecode2 = PBSCompileScriptString(string2)
If (*bytecode2 = #Null)
  MessageRequester("Compiler-Error", PBSGetErrorText())
  End
EndIf

; Script 1 starten
PBSOpenByteMemory(0, *bytecode)
t1=CreateThread(@Start(),0)
Debug "Script 0 gestartet."

; Script 2 starten
PBSOpenByteMemory(1,*bytecode2)
t2=CreateThread(@Start(),1)
Debug "Script 1 gestartet."

Repeat
  Debug "Val="+Str(PBSGetVariableInteger(0, "val"))
  Debug "Quit1="+Str(PBSGetVariableInteger(0, "Quit"))  ; Quit in Script 1
  Debug "Quit2="+Str(PBSGetVariableInteger(1, "Quit"))  ; Quit in Script 2
  Debug "---"
ForEver

PBSCloseByteScript(1)
PBSCloseByteScript(0)

End
Script 2 setzt also Quit auf 1, womit das erste Script beendet wird.

Irgendeine Chance so etwas umzusetzen?

Gruß
MAC