DracScript 1.06 Released! LGPL Scripting Language

Developed or developing a new product in PureBasic? Tell the world about it.
famous
New User
New User
Posts: 4
Joined: Thu Jan 07, 2010 10:48 am

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by famous »

Does someone know how to work this on pb 4.40?? It works with 4.3 but on 4.40 no
operations of variables and terms will be done.

I cant find any bug... and the debugger tells me nothing.

When i write

var = 9

var = var*9


i get the result '9*9'
it wont be evaluated

EDIT: It works when i write Eval(var*9)
whats the problem with the engine?
famous
New User
New User
Posts: 4
Joined: Thu Jan 07, 2010 10:48 am

Dracscript1

Post by famous »

Hello,

I have a problem with DracScript, i think the problem is in the eval algo.. when i run
DracScript with 4.30 it works but on 4.40 the following code..

var = 3
var = var*3

MsgBox('', var)

..shows '3*3' as result... so it only handle it as string... it adds *3 to 3

When i run it on 4.40 i get a memory error.... cannot allocate block size of 0 in the line
i marked with ;HERE

Code: Select all

Procedure.s DS_XS_Evaluate(Expression.s)
   If FindString(Expression.s,"'",0)>0
    ProcedureReturn DS_XS_Concatenate(Expression.s)
  EndIf 
   ;
   ;{ Set ASM Equivalents
   !r_HoldChar equ Esp+8
   !r_HoldBegin equ Esp+12
   !r_HoldEnd equ Esp+16
   !r_Length equ Esp+96
   !r_HoldSize equ Esp+100
   !r_MemPosition equ Esp+108
   ;}
   ;
   ;{ Create Local Variables
   iLoop.l
   ;
   *HoldChar.Byte = @Expression
   ;
   HoldBegin.l = -1
   ;
   HoldEnd.l = -1
   ;
   Decimal.b
   ;
   LevelMaximum.l
   ;
   Space.b
   ;
   LevelNext.l
   ;
   LevelCurrent.l
   ;
   LevelParanthesis.l
   ;
   DecimalLeft.b : DecimalRight.b
   ;
   ValueLeft.l : ValueRight.l
   ;
   FloatLeft.f : FloatRight.f
   ;
   ValueResult.l : FloatResult.f
   ;
   *HoldLevel.Long : *HoldOperator.Byte : *HoldValue.Long : *HoldFloat.Float : *HoldDecimal.Byte
   ;
   *LevelCurrent.Long
   ;
   length.l = Len(Expression)
   ;
   HoldSize.l
   ;
   !MOV Eax, dword[r_Length] 
   ; Store Length in eax.
   !LEA Eax, [Eax*4+Eax] 
   !ADD Eax, Eax
   ; Multiplication by 10 trick by El_Choni ( http://www.purebasic.fr/english/viewtopic.php?t=10476 )
   !ADD Eax, dword[r_Length] 
   !ADD Eax, dword[r_Length] 
   !ADD Eax, dword[r_Length] 
   !ADD Eax, dword[r_Length] 
   ; Add length back to it to get a multiply times 14
   !MOV dword[r_HoldSize], Eax
   ; Store the allocation size in HoldSize.

   *Memory.l = AllocateMemory(HoldSize) ; HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  
    *MemPosition.l = *Memory
   ;
   ;}
   ;
   !MOV Esi, 1
   ; esi is a 0 based index counter.
   For iLoop = 1 To length
      ;
      If *HoldChar\b > 47 And *HoldChar\b < 58 ; 0-9
         ;
         ;{ Value Handling
         ;
         If HoldBegin = -1
            ;
            !MOV [r_HoldBegin], Esi
            ;
         Else
            ;
            If Space : FreeMemory(*Memory) : ProcedureReturn "ERR-Missing Operator" : EndIf
            ;
         EndIf
         ;
         !MOV [r_HoldEnd], Esi
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 43 ; + 
         ;
         ;{ Handle Addition
         *HoldLevel = *MemPosition
         *HoldLevel\l = 8 + LevelParanthesis
         ;
         *MemPosition + 4
         ;
         *HoldOperator = *MemPosition
         *HoldOperator\b = 43
         ;
         !INC dword[r_MemPosition]
         ;
         If Decimal = 0
            ;
            *HoldValue = *MemPosition
            *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 8
            ; Skip the float falue. 
         Else
            ;
            *MemPosition + 4
            ;
            *HoldFloat = *MemPosition
            *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 4
            ;
         EndIf
         ;
         *HoldDecimal = *MemPosition
         *HoldDecimal\b = Decimal
         ;
         !INC dword[r_MemPosition]
         ;
         HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
         ;
         If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 45 ; -
         ;
         ;{ Handle Subtraction
         If HoldBegin = -1
            ;
            !MOV [r_HoldBegin], Esi
            ;
         Else
            ;
            *HoldLevel = *MemPosition
            *HoldLevel\l = 8 + LevelParanthesis
            ;
            *MemPosition + 4
            ;
            *HoldOperator = *MemPosition
            *HoldOperator\b = 45
            ;
            !INC dword[r_MemPosition]
            ;
            If Decimal = 0
               ;
               *HoldValue = *MemPosition
               *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
               ;
               *MemPosition + 8
               ; Skip the float falue. 
            Else
               ;
               *MemPosition + 4
               ;
               *HoldFloat = *MemPosition
               *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
               ;
               *MemPosition + 4
               ;
            EndIf
            ;
            *HoldDecimal = *MemPosition
            *HoldDecimal\b = Decimal
            ;
            !INC dword[r_MemPosition]
            ;
            HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
            ;
            If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
            ;
         EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 42 ; *
         ;
         ;{ Handle Multiplication
         *HoldLevel = *MemPosition
         *HoldLevel\l = 9 + LevelParanthesis
         ;
         *MemPosition + 4
         ;
         *HoldOperator = *MemPosition
         *HoldOperator\b = 42
         ;
         !INC dword[r_MemPosition]
         ;
         If Decimal = 0
            ;
            *HoldValue = *MemPosition
            *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 8
            ; Skip the float falue. 
         Else
            ;
            *MemPosition + 4
            ;
            *HoldFloat = *MemPosition
            *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 4
            ;
         EndIf
         ;
         *HoldDecimal = *MemPosition
         *HoldDecimal\b = Decimal
         ;
         !INC dword[r_MemPosition]
         ;
         HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
         ;
         If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 47 ; /
         ;
         ;{ Handle Division
         *HoldLevel = *MemPosition
         *HoldLevel\l = 9 + LevelParanthesis
         ;
         *MemPosition + 4
         ;
         *HoldOperator = *MemPosition
         *HoldOperator\b = 47
         ;
         !INC dword[r_MemPosition]
         ;
         If Decimal = 0
            ;
            *HoldValue = *MemPosition
            *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 8
            ; Skip the float falue. 
         Else
            ;
            *MemPosition + 4
            ;
            *HoldFloat = *MemPosition
            *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 4
            ;
         EndIf
         ;
         *HoldDecimal = *MemPosition
         *HoldDecimal\b = Decimal
         ;
         !INC dword[r_MemPosition]
         ;
         HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
         ;
         If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 32 ; " "
         ;
         Space = #True
         ;
      ElseIf *HoldChar\b = 40 ; (
         ;
         LevelParanthesis + 100
         ;
      ElseIf *HoldChar\b = 41 ; )
         ;
         LevelParanthesis - 100
         ;
      ElseIf *HoldChar\b = 46 ; .
         ;
         ;{ Decimal Handling
         If HoldBegin = -1
            ;
            ProcedureReturn "ERR-Invalid Float"
            ;
            !MOV [r_HoldBegin], Esi ; HoldBegin
            ;
         Else
            ;
            If Space : ProcedureReturn "ERR-Missing Operator" : EndIf
            ;
         EndIf
         ;
         !MOV [r_HoldEnd], Esi ; HoldEnd
         ;
         Decimal = #True
         ;
         Space = #False
         ;}
         ;
      ElseIf *HoldChar\b = 37 ; %
         ;
         ;{ Handle Modulo
         *HoldLevel = *MemPosition
         *HoldLevel\l = 9 + LevelParanthesis
         ;
         *MemPosition + 4
         ;
         *HoldOperator = *MemPosition
         *HoldOperator\b = 37
         ;
         !INC dword[r_MemPosition]
         ;
         If Decimal = 0
            ;
            *HoldValue = *MemPosition
            *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 8
            ; Skip the float falue. 
         Else
            ;
            *MemPosition + 4
            ;
            *HoldFloat = *MemPosition
            *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 4
            ;
         EndIf
         ;
         *HoldDecimal = *MemPosition
         *HoldDecimal\b = Decimal
         ;
         !INC dword[r_MemPosition]
         ;
         HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
         ;
         If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      ElseIf *HoldChar\b = 94 ; ^
         ;
         ;{ Handle Exponents
         *HoldLevel = *MemPosition
         *HoldLevel\l = 10 + LevelParanthesis
         ;
         *MemPosition + 4
         ;
         *HoldOperator = *MemPosition
         *HoldOperator\b = 94
         ;
         !INC dword[r_MemPosition]
         ;
         If Decimal = 0
            ;
            *HoldValue = *MemPosition
            *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 8
            ; Skip the float falue. 
         Else
            ;
            *MemPosition + 4
            ;
            *HoldFloat = *MemPosition
            *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
            ;
            *MemPosition + 4
            ;
         EndIf
         ;
         *HoldDecimal = *MemPosition
         *HoldDecimal\b = Decimal
         ;
         !INC dword[r_MemPosition]
         ;
         HoldBegin = -1 : HoldEnd = -1 : Decimal = 0
         ;
         If LevelMaximum < *HoldLevel\l : LevelMaximum = *HoldLevel\l : EndIf
         ;
         Space = #False
         ;
         ;}
         ;
      EndIf
      ;
      !INC dword[r_HoldChar] ; *HoldChar
      ; Increment to the next character.
      !INC Esi
      ; Increment the index.
   Next iLoop
   ;
   If LevelMaximum = 0 : FreeMemory(*Memory) : ProcedureReturn Expression : EndIf
   ; The expression has no operators if no maximum level is set.
   If HoldBegin = -1 : FreeMemory(*Memory) : ProcedureReturn "ERR-Invalid Operation" : EndIf
   ;
   If LevelParanthesis <> 0 : ProcedureReturn "ERR-Imbalanced Paranthesis" : EndIf
   ;
   ;{ Handle EOL
   *HoldLevel = *MemPosition
   *HoldLevel\l = -1
   ;
   *MemPosition + 4
   ;
   *HoldOperator = *MemPosition
   *HoldOperator\b = 0
   ;
   !INC dword[r_MemPosition]
   ;
   If Decimal = 0
      ;
      *HoldValue = *MemPosition
      *HoldValue\l = Val(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
      ;
      *MemPosition + 8
      ; Skip the float falue. 
   Else
      ;
      *MemPosition + 4
      ;
      *HoldFloat = *MemPosition
      *HoldFloat\f = ValF(PeekS(@Expression + HoldBegin - 1, HoldEnd - HoldBegin + 1))
      ;
      *MemPosition + 4
      ;
   EndIf
   ;
   *HoldDecimal = *MemPosition
   *HoldDecimal\b = Decimal
   ;
   ;}
   ;
   Decimal = #False
   ;
   *MemPosition = *Memory
   ; Reset the position to the first element.
   While LevelMaximum
      ; Repeat until the maximum level is 0.
      *LevelCurrent = *MemPosition
      ; Store the current level for the operator.
      If *LevelCurrent\l = LevelMaximum
         ; The operator level matches the maximum operator.
         *MemPosition + 4
         ; Increment to the operator type.
         ;
         ;{ Retrieve Left/Right Hand Value Info
         *HoldChar = *MemPosition
         ; Store the operator type.
         !INC dword[r_MemPosition]
         ; Increment to the beginning of the left hand value.
         ValueLeft = PeekL(*MemPosition)
         ;
         *MemPosition + 4
         ;
         FloatLeft = PeekF(*MemPosition)
         ;
         *MemPosition + 4
         ; Increment to the decimal identifier.
         DecimalLeft = PeekB(*MemPosition)
         ;
         !INC dword[r_MemPosition]
         ; Increment to the level for the right hand value.
         *MemPosition + 5
         ; Skip the level and operator for the right hand value.
         ValueRight = PeekL(*MemPosition)
         ;
         *MemPosition + 4
         ; 
         FloatRight = PeekF(*MemPosition)
         ;
         *Position = *MemPosition
         ; Temporarily store the address to the string.  This will be used to store the result of the expression.
         ;
         *MemPosition + 4
         ; Increment to the decimal identifier.
         *HoldDecimal = *MemPosition
         ;
         !INC dword[r_MemPosition]
         ; Increment to the next element.
         ;
         ;}
         ;
         ;{ Handle Operators
         If *HoldChar\b = 43
            ; Addition
            If DecimalLeft And *HoldDecimal\b
               FloatResult = FloatLeft + FloatRight
               ;
            ElseIf DecimalLeft
               FloatResult = FloatLeft + ValueRight : *HoldDecimal\b = 1
               ; The result will be a decimal format.
            ElseIf *HoldDecimal\b
               FloatResult = ValueLeft + FloatRight : *HoldDecimal\b = 1
            Else
               ValueResult = ValueLeft + ValueRight
            EndIf
            ;
         ElseIf *HoldChar\b = 45
            ; Subtraction
            If DecimalLeft And *HoldDecimal\b
               FloatResult = FloatLeft - FloatRight
            ElseIf DecimalLeft
               FloatResult = FloatLeft - ValueRight : *HoldDecimal\b = 1
            ElseIf *HoldDecimal\b
               FloatResult = ValueLeft - FloatRight : *HoldDecimal\b = 1
            Else
               ValueResult = ValueLeft - ValueRight
            EndIf
            ;
         ElseIf *HoldChar\b = 42
            ; Multiplication
            If DecimalLeft And *HoldDecimal\b
               FloatResult = FloatLeft * FloatRight
            ElseIf DecimalLeft
               FloatResult = FloatLeft * ValueRight : *HoldDecimal\b = 1
            ElseIf *HoldDecimal\b
               FloatResult = ValueLeft * FloatRight : *HoldDecimal\b = 1
            Else
               ValueResult = ValueLeft * ValueRight
            EndIf
            ;
         ElseIf *HoldChar\b = 47
            ; Division
            If DecimalLeft And *HoldDecimal\b
               FloatResult = FloatLeft / FloatRight
            ElseIf DecimalLeft
               FloatResult = FloatLeft / ValueRight : *HoldDecimal\b = 1
            ElseIf *HoldDecimal\b
               FloatResult = ValueLeft / FloatRight : *HoldDecimal\b = 1
            Else
               FloatResult = ValueLeft / ValueRight : *HoldDecimal\b = 1
            EndIf
            ;
         ElseIf *HoldChar\b = 37
            ; Modulo
            If DecimalLeft And *HoldDecimal\b
               ; FloatResult = FloatLeft * FloatRight : Decimal = #True
               FreeMemory(*Memory)
               ProcedureReturn "ERR-Cannot Use Floats With Modulo"
            ElseIf DecimalLeft
               ; FloatResult = FloatLeft * ValueRight : Decimal = #True
               ; PokeB(*Position + 4, 1)
               FreeMemory(*Memory)
               ProcedureReturn "ERR-Cannot Use Floats With Modulo"
            ElseIf *HoldDecimal\b
               ; FloatResult = ValueLeft * FloatRight : Decimal = #True
               ; PokeB(*Position + 4, 1)
               FreeMemory(*Memory)
               ProcedureReturn "ERR-Cannot Use Floats With Modulo"
            Else
               ValueResult = ValueLeft % ValueRight
            EndIf
            ;
         ElseIf *HoldChar\b = 94
            ; Exponents
            If DecimalLeft And *HoldDecimal\b
               FloatResult = Pow(FloatLeft, FloatRight)
            ElseIf DecimalLeft
               FloatResult = Pow(FloatLeft, ValueRight) : *HoldDecimal\b = 1
            ElseIf *HoldDecimal\b
               FloatResult = Pow(ValueLeft, FloatRight) : *HoldDecimal\b = 1
            Else
               ValueResult = Pow(ValueLeft, ValueRight)
            EndIf
            ;
         EndIf
         ;}
         ;
         If *HoldDecimal\b : PokeF(*MemPosition - 5, FloatResult) : Else : PokeL(*MemPosition - 9, ValueResult) : EndIf
         ;
         CopyMemory(*MemPosition - 14, *MemPosition - 28, HoldSize - ((*MemPosition - 14) - *Memory))
         ; This will effective remove the left hand value and overwrite with the newly calculated right hand value.
         *MemPosition - 28
         ; Resume from the current position to see if there are any same-level operations.
      Else
         ; The operator level is less than the maximum.
         ;{
         If *LevelCurrent\l = 0
            ; Only occurs when the last element is reached. 
            If LevelNext = 0
               ; No more calculations.
               Decimal = PeekB(*Memory + 13)
               ;
               FreeMemory(*Memory)
               ; Free the memory used to store the elements.
               If Decimal
                  ProcedureReturn StrF(FloatResult)
               Else
                  ProcedureReturn Str(ValueResult)
               EndIf
               ;
            EndIf
            ;
            LevelMaximum = LevelNext
            ; Assign the next maximum level.
            *MemPosition = *Memory 
            ; Reset to the beginning of the elements.
            LevelNext = 0
            ; There is no lower level by default.
         Else
            ;
            If LevelNext < *LevelCurrent\l : LevelNext = *LevelCurrent\l : EndIf
            ; Assign the next lowest level.
            *MemPosition + 14
            ;
         EndIf
         ;}
         ; 
      EndIf
      ;
   Wend
   ;
EndProcedure

User avatar
Rings
Moderator
Moderator
Posts: 1435
Joined: Sat Apr 26, 2003 1:11 am

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Rings »

Famous' Post moved to this one....
SPAMINATOR NR.1
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by dracflamloc »

If anyone can help famous to debug this I'd appreciate it. I'm too out of touch with Pb nowadays to know where to start.
Zach
Addict
Addict
Posts: 1675
Joined: Sun Dec 12, 2010 12:36 am
Location: Somewhere in the midwest
Contact:

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Zach »

Any Miracle workers interested in bringing this back to life?


It would be great for PB to have a scripting language such as this, that we can use inside our own programs. Or Games, even.. Would allow games to be a lot more dynamic and modifiable without recompiling :mrgreen:

(Before anyone tells me to just write a wrapper for (insert language), don't you think I would if I had the time/skill/knowledge?.........)
eesau
Enthusiast
Enthusiast
Posts: 589
Joined: Fri Apr 27, 2007 12:38 pm
Location: Finland

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by eesau »

Lua already has bindings for PB, I suggest you use those. They are easy to use and Lua is pretty versatile. DracScript, while interesting, is somewhat limited, it doesn't even have functions.
X
Enthusiast
Enthusiast
Posts: 311
Joined: Tue Apr 04, 2006 6:27 am

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by X »

And Drac doesnt have any external dependencies :)
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by dracflamloc »

Only a brain =)

Also there are no arrays. However it'd be relatively easy to add both arrays and functions on one level or another. DracScript was created for a very specific purpose (mmorpg server scripting) so certain features weren't worth implementing and my main focus was on execution speed.

Anyway I'd love to see someone make this work again in the latest pb, but as I've said before I'm a bit disconnected so if anyone would like to try to fix it, feel free to contact me with any questions and I'll do my best to point you in the right direction.

Long live pb ;)
User avatar
Kuron
Addict
Addict
Posts: 1626
Joined: Sat Oct 17, 2009 10:51 pm
Location: Pacific Northwest

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Kuron »

Zach wrote:Any Miracle workers interested in bringing this back to life?


It would be great for PB to have a scripting language such as this, that we can use inside our own programs. Or Games, even.. Would allow games to be a lot more dynamic and modifiable without recompiling :mrgreen:

(Before anyone tells me to just write a wrapper for (insert language), don't you think I would if I had the time/skill/knowledge?.........)
Unfortunately, this is one of the reasons for avoiding products/add-ons made by community members. Sooner or later something you need or depend on will be discontinued and no longer supported or kept compatible with current versions of PB. This is a generalized statement and is no reflection on Drac or even PB as you will see this in all programming communities.

I do not know if BriskVM is still being sold, but if it is, IIRC it could be used with PB. There are also LUA wrappers which would allow you to easily drop LUA into your project.
Best wishes to the PB community. Thank you for the memories. ♥️
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by dracflamloc »

You do realize the same could be said about Pb itself? (In fact that's true of any nonmainstream language or component.) I posted this source 5 years ago and in that time nobody has taken the 2 hours or so it would take to fix it or add features.
User avatar
Kuron
Addict
Addict
Posts: 1626
Joined: Sat Oct 17, 2009 10:51 pm
Location: Pacific Northwest

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Kuron »

I posted this source 5 years ago and in that time nobody has taken the 2 hours or so it would take to fix it or add features.
Unfortunately, updating it seems to be something Zach may not be able to do himself. On the other hand, Lua is ready to go with PB, is an industry standard and is not going anywhere and has a plethora of documentation and even books available for those new to it. Whether that is an easier solution for Zach, only Zach knows. :)

As I mentioned years ago, I like DracScript and there was a time I was using it in a couple of WIP games. :)
Best wishes to the PB community. Thank you for the memories. ♥️
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by dracflamloc »

Oh I'm not arguing over lua. It is what it is, but I was only responding to your whole community-made features opinion (which obviously I disagree with).
User avatar
Kuron
Addict
Addict
Posts: 1626
Joined: Sat Oct 17, 2009 10:51 pm
Location: Pacific Northwest

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Kuron »

dracflamloc wrote:Oh I'm not arguing over lua. It is what it is, but I was only responding to your whole community-made features opinion (which obviously I disagree with).
I didn't say you should avoid them, I said this is one of the reasons for avoiding them. I hear people give this reason all of the time in various communities and whether I agree with it or not, it does hold some weight. Personally, I always use whatever add-on I want and if it is discontinued, then I find another solution. Heck, I have had more than one indie programming language disappear on me while I was in the middle of a project that was using the language.

In the case of DracScript it is a moot point since it is open source. :D However if the person wanting to use it hasn't built up the skills to update the code, then that could be a major issue for them.
Best wishes to the PB community. Thank you for the memories. ♥️
Poshu
Enthusiast
Enthusiast
Posts: 459
Joined: Tue Jan 25, 2005 7:01 pm
Location: Canada

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by Poshu »

There is no reason for not using community developed library as long as you've got access to the source, that's what LGPL is for and that's why it's great. I'm pretty confident I can fix this if I'm provided with an example of what to fix (cause the source compile on 4.60 with the exception of a warning on the depreciated CountList() function...)
SFSxOI
Addict
Addict
Posts: 2970
Joined: Sat Dec 31, 2005 5:24 pm
Location: Where ya would never look.....

Re: DracScript 1.06 Released! LGPL Scripting Language

Post by SFSxOI »

Kuron wrote:
dracflamloc wrote:Oh I'm not arguing over lua. It is what it is, but I was only responding to your whole community-made features opinion (which obviously I disagree with).
I didn't say you should avoid them, I said this is one of the reasons for avoiding them. I hear people give this reason all of the time in various communities and whether I agree with it or not, it does hold some weight. Personally, I always use whatever add-on I want and if it is discontinued, then I find another solution. Heck, I have had more than one indie programming language disappear on me while I was in the middle of a project that was using the language.

In the case of DracScript it is a moot point since it is open source. :D However if the person wanting to use it hasn't built up the skills to update the code, then that could be a major issue for them.
Nothing is forever. People create and release things all the time just as they discontinue development on things all the time, this is no different. Consider that it takes a lot of time and effort to do something as big as this was, and unless there is a very large following willing to donate time and resources to its continued development and are always actively developing and using the thing, its a little unfair to come in almost five years later and complain that this is not right or that is not right and expect the original author to just jump in and make everything Ok again. So, taking on a project of keeping a basically discontinued development item alive by updating the thing falls to the ones who would want to restore such a thing and if they do undertake such they should have the skills needed to do such, so yeah, I can see where it would be a major issue for them if they did not have the skills to do such. Open source does not mean always supported.
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.
Post Reply