Here is the drop-shadow script I posted in the technical forum.

Note: This script relies on the blur and colour adjustment features of ArtRage, so it will only work with ArtRage Studio Pro, and will not work correctly with ArtRage Studio.
Remeber, if you're copying the code, save it in a UTF16 unicode text file.

Code:
//===========================================================================
//===========================================================================
//                            ArtRage Script File.
//===========================================================================
//===========================================================================
 
//===========================================================================
// Version Block - Script version and ArtRage version:
//===========================================================================
<Version>
    ArtRage Version: ArtRage 3 Studio Pro
    ArtRage Build: 3.5.0
    Professional Edition: Yes
    Script Version: 1
</Version>
 
//===========================================================================
// Header block - Info about the painting/person who generated this script:
//===========================================================================
<Header>
    // === Project data
    Painting Name: "Untitled"
    Painting Width: 1479
    Painting Height: 1122
    Painting DPI: 72
    // === Author data
    Author Name: "Andy Bearsley"
    Script Name: "Drop Shadow"
    Comment: "This script will generate a drop shadow for the current layer"
    Script Type: ""
    Script Feature Flags: 0
</Header>
 
//===========================================================================
// ArtRage project features. Sets the startup state of the script:
//===========================================================================
 
//===========================================================================
// Script data follows:
//===========================================================================
<Events>
int nLayer = CurrentLayerIndex()
string sLayerName = LayerName(nLayer)
string sMessage = "Drop Shadow settings for layer %%nLayer"
if (sLayerName.Length() > 0) {
 sMessage += "  ( %%sLayerName )"
}
// Check we can run on this layer (paint, text, or sticker)
int nLayerType = LayerType(nLayer)
if (nLayerType != 0 && nLayerType != 4 && nLayerType != 5) {
 MessageBox("This script wont work on layer groups. (Layer %%nLayer)")
 exit
}  
real rShadowRadius = 10
real rShadowOpacity = 0.7
real rShadowOffX = 10
real rShadowOffY = 10
flag fMergeResult = true 
// Get the user data
InputBox(sMessage + "\n\rShadow Radius (1 to 100): $$rShadowRadius\n\rShadow Opacity (0 - 1): $$rShadowOpacity\n\rShadow Offset X (-100 to 100): $$rShadowOffX\n\rShadow Offset Y (-100 to 100): $$rShadowOffY\n\rMerge Result: $$fMergeResult") 
// Clamp user data to sensible ranges.
if (rShadowRadius < 0) rShadowRadius = 0
if (rShadowRadius > 10) rShadowRadius = 10
if (rShadowOpacity < 0) rShadowOpacity = 0
if (rShadowOpacity > 1) rShadowOpacity = 1
if (rShadowOffX < -100) rShadowOffX = -100
if (rShadowOffX > 100) rShadowOffX = 100
if (rShadowOffY < -100) rShadowOffY = -100
if (rShadowOffY > 100) rShadowOffY = 100
// Apply drop shadow
Wait: 0.000s EvType: Command CommandID: CID_DuplicateSpecificLayer ParamType: uint32 Value: { nLayer }
Wait: 0.000s EvType: Command CommandID: CID_SelectSpecificLayer ParamType: uint32 Value: { nLayer }
if (nLayerType != 0) {
 Wait: 0.000s EvType: Command CommandID: CID_RasteriseSpecificLayer ParamType: uint32 Value: { nLayer }
}
Wait: 0.000s EvType: Command CommandID: LayerAdjustment ID: 0x000000000 Idx: nLayer Contrast: 0 Brightness: -1 Saturation: 0 Hue Shift: 0 Flatten: YES Colourize: NO
Wait: 0.000s EvType: Command CommandID: LayerAdjustment ID: 0x000000002 Idx: nLayer Blur Radius: rShadowRadius
Wait: 0.000s EvType: Command CommandID: CID_SetSpecificLayerOpacity ParamType: LayerProp Value: { nLayer, rShadowOpacity }
Wait: 0.000s EvType: Command CommandID: LayerXForm Idx: nLayer Scale: (1, 1) Rot: -0 Off: (rShadowOffX, rShadowOffY) MirH: NO MirV: NO Ras: NO
// Apply merge if needed
if (fMergeResult) {
 Wait: 0.000s EvType: Command CommandID: CID_MergeSpecificLayerDown ParamType: uint32 Value: { (nLayer + 1) }
}
// Fix names if not merged, then select the original layer.
if (!fMergeResult) {
 Wait: 0.000s EvType: Command CommandID: LayerName Idx: nLayer Name: (sLayerName + " Shadow")
 Wait: 0.000s EvType: Command CommandID: LayerName Idx: (nLayer + 1) Name: sLayerName
 Wait: 0.000s EvType: Command CommandID: CID_SelectSpecificLayer ParamType: uint32 Value: { (nLayer + 1) }
}
You can download the script file here.