DracScript 1.06 Released! LGPL Scripting Language
Re: DracScript 1.06 Released! LGPL Scripting Language
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?
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
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
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
Famous' Post moved to this one....
SPAMINATOR NR.1
-
- Addict
- Posts: 1648
- Joined: Mon Sep 20, 2004 3:52 pm
- Contact:
Re: DracScript 1.06 Released! LGPL Scripting Language
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.
-
- 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
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
(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?.........)
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

(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
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
And Drac doesnt have any external dependencies 

-
- Addict
- Posts: 1648
- Joined: Mon Sep 20, 2004 3:52 pm
- Contact:
Re: DracScript 1.06 Released! LGPL Scripting Language
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
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
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.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![]()
(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?.........)
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. 
-
- Addict
- Posts: 1648
- Joined: Mon Sep 20, 2004 3:52 pm
- Contact:
Re: DracScript 1.06 Released! LGPL Scripting Language
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
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.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.

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. 
-
- Addict
- Posts: 1648
- Joined: Mon Sep 20, 2004 3:52 pm
- Contact:
Re: DracScript 1.06 Released! LGPL Scripting Language
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
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.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).
In the case of DracScript it is a moot point since it is open source.

Best wishes to the PB community. Thank you for the memories. 
Re: DracScript 1.06 Released! LGPL Scripting Language
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
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.Kuron wrote: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.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).
In the case of DracScript it is a moot point since it is open source.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.
The advantage of a 64 bit operating system over a 32 bit operating system comes down to only being twice the headache.