Skript-Engine programmieren
Übersicht

![]() |
Xaymarehemals "Cgamer"Betreff: Skript-Engine programmieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mich in letzter zeit immer wieder daran geärgert, das ich kein flexibles system einbeauen konnte(client side und server side befehle, console, etc).
Nun meine frage: Wie soll ich so ein Skript system aufbauen, bzw wie funktioniert so eins? Hat wer einen funktionierenden Beispiel code?(bitte _keine_ Pseudo codes) |
||
Warbseite |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du wirst kaum einen finden der dir hier jetzt seine gesamte ScriptEngine Postet ![]() Also am Anfang sollte man die Datei Zeilenweise einlesen und Auswerten. Beim auswerten sollte man den Code irgendwie in den Speicher laden das man nicht immer aus der Datei lesen muss. Dann kannst du den Code Parsen, also zerlegen und auf seine einzelheitem Prüfen. Dazu kommen dann noch if Abfragen und Variablen festlegen und verändern. |
||
- Zuletzt bearbeitet von the FR3AK am Fr, Jan 02, 2009 17:52, insgesamt einmal bearbeitet
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
so meinte ich das nu nich...
ich meinte einen beispiel code der zb nur einfach mal guckt ob eine funktion in einer zeile steht, mehr nicht. oder zb variablen speichern kann |
||
Warbseite |
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab ich grade in BB nicht zur hand aber mit ReadLine, Instr und Mid sollte das alles Funktionieren. Ok für Variablen Speichern brauchst du schon ein Paar weitere befehle ![]() |
||
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für den ungefähren aufbau, kannst du ja hier nachschauen: https://www.blitzforum.de/foru...hp?t=30150
Ansonsten kann ich dir empfehelen, das du mit einem eigenen String Rechner arbeitest. Du solltest ausßerdem immer vor Augen halten, wozu die Scriptengine dienen soll. Wenns eine einfache Ablauf Script engine ist, brauchst du meistens keine Schleife und If Abfragen... Bei weiteren Pobelemen, kannst du mich per PN kontaktieren. |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.east-power-soft.de/...uts_script | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für die antworten. Ich habe inzwischen das zusammen gebastelt, was ich durch die beiden codes rausgefunden habe:
[Edit] Update 04.01.09 -Fehler bei leerer Zeile behoben Code: [AUSKLAPPEN] ;ScriptEngine
Graphics 800,100,0,2 Global CommandL$ = CommandLine() Type Script Field LText$ Field LN End Type Type Functions Field Name$ Field ID End Type ;Funktionen hinzufügen F.Functions = New Functions F\Name$ = "//" F\ID = 0 F.Functions = New Functions F\Name$ = "INITGAME" F\ID = 1 F.Functions = New Functions F\Name$ = "ECHO" F\ID = 97 F.Functions = New Functions F\Name$ = "WAITKEY" F\ID = 98 F.Functions = New Functions F\Name$ = "END" F\ID = 99 ;Dateien laden If CommandL$ <> "" If LoadScript(CommandL$) = 1 ParseScript() Else End EndIf Else File$ = Input("File: ") Print "Loading " + File$ + "..." If LoadScript(File$) = 1 Print "Loading succesfull. Parsing and Executing..." ParseScript() Print "Script ended." Else Print "Loading failed. Press any key." WaitKey() End EndIf EndIf Function LoadScript(File$) Delete Each Script If FileType(File$) = 1 Stream = OpenFile(File$) While Not Eof(Stream) LN = LN + 1 S.Script = New Script S\LN = LN S\LText$ = Replace(ReadLine(Stream), " ", "") Wend CloseFile Stream Return 1 Else Return 0 EndIf End Function Function ParseScript() For S.Script = Each Script FNum = 100 For F.Functions = Each Functions If Upper(Left(S\LText$, Len(F\Name$))) = F\Name$ FNum = F\ID Exit EndIf Next Select FNum Case 0 ;Kommentar DebugLog Mid(S\LText$, 3, -1) Case 1 ;InitGame If Instr(S\LText$, ",") <> 0 W = Mid(S\LText$, 9, Instr(S\LText$, ",")) H = Mid(S\LText$, Instr(S\LText$, ",")+1, Instr(S\LText$, ",", Instr(S\LText$, ","))) D = Mid(S\LText$, Instr(S\LText$, ",",Instr(S\LText$, ",")+1)+1, -1) Graphics W,H,D,0 Else Print "Error at Line " + S\LN + ": Missing ',' at " + S\LText$ WaitKey() End EndIf Case 97 ;Echo If Instr(S\LText$, Chr(34)) <> 0 Txt$ = Mid(S\LText$, Instr(S\LText$, Chr(34))+1, Len(S\LText$)-Instr(S\LText$, Chr(34))-1) Else Txt$ = Right(S\LText$, Len(S\LText$)-5) EndIf Print Txt$ Case 98 ;WaitKey WaitKey() Case 99 ;End End Case 100 If S\LText$ <> "" Print "Error at Line " + S\LN + ": "+S\LText$ + " is not a valid command" WaitKey() End EndIf End Select Next End Function Eine Beispiel Datei: Code: [AUSKLAPPEN] InitGame 800,600,16
echo "Nun mit besserer Syntax" echo Aber auch ohne anführungszeichen möglich //Script anhalten da ein Fehler vorhanden ist unknown WaitKey End |
||
Warbseite |
Düsi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cgamer hat Folgendes geschrieben: danke für die antworten. Ich habe inzwischen das zusammen gebastelt, was ich durch die beiden codes rausgefunden habe:
[Edit] Update 04.01.09 -Fehler bei leerer Zeile behoben Eine Beispiel Datei: Code: [AUSKLAPPEN] InitGame 800,600,16
echo "Nun mit besserer Syntax" echo Aber auch ohne anführungszeichen möglich //Script anhalten da ein Fehler vorhanden ist unknown WaitKey End String ohne Anführungszeichen? Wie willst du später zwischen Variable und String unterscheiden? |
||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
lies dir die engine bei echo durch
echo soll immoment nur text zurückgeben |
||
Warbseite |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group