Page 7 of 8

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Thu Jan 07, 2010 10:54 am
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?

Dracscript1

Posted: Fri Jan 08, 2010 12:49 pm
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


Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Fri Jan 08, 2010 1:40 pm
by Rings
Famous' Post moved to this one....

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Fri Jan 15, 2010 6:02 am
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.

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Wed Aug 31, 2011 8:05 pm
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?.........)

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Thu Sep 01, 2011 6:14 am
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.

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Thu Sep 01, 2011 9:13 pm
by X
And Drac doesnt have any external dependencies :)

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 4:10 am
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 ;)

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 7:00 am
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.

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 2:34 pm
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.

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 3:18 pm
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. :)

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 3:21 pm
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).

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sat Sep 03, 2011 3:31 pm
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.

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sun Sep 04, 2011 9:06 am
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...)

Re: DracScript 1.06 Released! LGPL Scripting Language

Posted: Sun Sep 04, 2011 9:26 pm
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.