Gridbase
Paid releasesDime Skill Tree

Configuration

Configure Dime Skill Tree nodes, trees, and integration settings

Configuration

Configuration files are located in the dime_skilltree resource folder and are not escrowed.

Dime Skills Integration

First, ensure the Skill Tree DLC integration is enabled in your Dime Skills configuration (dime_skills/shared/config.lua):

-- In dime_skills/shared/config.lua
SkillTree = {
    enabled = true,              -- Enable skill tree DLC integration
    pointsPerLevel = 1,          -- Skill points granted per skill level
    excludedSkills = {},         -- Skills that don't contribute points
},

Integration Options

Prop

Type

Example Configurations

SkillTree = {
    enabled = true,
    pointsPerLevel = 1,
    excludedSkills = {},
}
-- Level 30 across all skills = 290 points
SkillTree = {
    enabled = true,
    pointsPerLevel = 2,
    excludedSkills = {'stamina'},
}
-- Level 30 across skills (except stamina) = ~580 points
SkillTree = {
    enabled = true,
    pointsPerLevel = 1,
    excludedSkills = {'stamina', 'driving', 'diving'},
}
-- Only combat/crafting skills grant points

Skill Tree Configuration

The main skill tree configuration is in dime_skilltree/shared/config.lua:

return {
    -- Core Settings
    Debug = false,
    
    -- UI Settings
    UI = {
        keybind = 'J',                    -- Keybind to open skill tree
        command = 'skilltree',            -- Chat command
        closeOnEscape = true,             -- Close UI with ESC
    },
    
    -- Trees Configuration
    Trees = {
        -- See Tree Configuration section below
    },
    
    -- Node Definitions
    Nodes = {
        -- See Node Configuration section below
    },
}

Tree Configuration

Each tree represents a category of nodes that share a skill point pool.

Trees = {
    ['combat'] = {
        label = 'Combat Mastery',
        description = 'Enhance your fighting capabilities',
        icon = 'crosshairs',
        iconColor = '#EF4444',
        -- Optional: Use points from specific skill only
        -- skillSource = 'shooting',
    },
    ['crafting'] = {
        label = 'Artisan',
        description = 'Master the art of creation',
        icon = 'hammer',
        iconColor = '#F59E0B',
    },
    ['survival'] = {
        label = 'Survivor',
        description = 'Thrive in harsh conditions',
        icon = 'heart',
        iconColor = '#10B981',
    },
}

Tree Properties

Prop

Type


Node Configuration

Nodes are the unlockable elements in each tree.

Nodes = {
    -- Combat Tree Nodes
    ['combat_root'] = {
        tree = 'combat',
        label = 'Combat Training',
        description = 'Begin your journey as a warrior',
        icon = 'fist-raised',
        position = { x = 0, y = 0 },       -- Center of tree
        cost = 0,                           -- Root nodes are free
        prerequisites = {},                 -- No prerequisites
        effect = {
            type = 'unlock',                -- Just unlocks, no stat change
        },
    },
    
    ['combat_damage_1'] = {
        tree = 'combat',
        label = 'Power Strike',
        description = 'Increase melee damage by 5%',
        icon = 'hand-fist',
        position = { x = -1, y = 1 },
        cost = 2,
        prerequisites = { 'combat_root' },
        levelRequirement = 5,               -- Optional: min skill level
        effect = {
            type = 'stat_bonus',
            stat = 'melee_damage',
            value = 0.05,                   -- 5% increase
        },
    },
    
    ['combat_damage_2'] = {
        tree = 'combat',
        label = 'Brutal Force',
        description = 'Increase melee damage by additional 10%',
        icon = 'hand-fist',
        position = { x = -1, y = 2 },
        cost = 4,
        prerequisites = { 'combat_damage_1' },
        effect = {
            type = 'stat_bonus',
            stat = 'melee_damage',
            value = 0.10,
        },
    },
    
    ['combat_accuracy_1'] = {
        tree = 'combat',
        label = 'Steady Aim',
        description = 'Reduce weapon sway by 15%',
        icon = 'bullseye',
        position = { x = 1, y = 1 },
        cost = 2,
        prerequisites = { 'combat_root' },
        effect = {
            type = 'custom',
            callback = 'reduce_weapon_sway',
            value = 0.15,
        },
    },
}

Node Properties

Prop

Type


Effect Types

Nodes can have different effect types that trigger when unlocked.

Unlock Effect

Simple unlock with no stat changes. Good for root nodes or gates.

effect = {
    type = 'unlock',
}

Stat Bonus Effect

Modifies a player stat when unlocked.

effect = {
    type = 'stat_bonus',
    stat = 'melee_damage',      -- Stat identifier
    value = 0.10,               -- Bonus value (10%)
    operation = 'multiply',     -- 'multiply' or 'add'
}

Built-in Stats:

  • melee_damage - Melee damage multiplier
  • weapon_damage - Ranged weapon damage
  • weapon_accuracy - Weapon accuracy
  • run_speed - Running speed
  • max_health - Maximum health
  • max_armor - Maximum armor
  • crafting_speed - Crafting time reduction
  • xp_gain - XP gain multiplier

Custom Effect

Triggers a registered callback function.

effect = {
    type = 'custom',
    callback = 'my_custom_effect',  -- Callback name
    value = 100,                     -- Passed to callback
    data = {                         -- Optional extra data
        duration = 3600,
        stackable = true,
    },
}

Register the callback in your resource:

exports.dime_skills:registerNodeEffect('my_custom_effect', function(src, nodeData)
    local value = nodeData.value    -- 100
    local data = nodeData.data      -- { duration = 3600, stackable = true }
    
    -- Your custom logic here
    TriggerClientEvent('myresource:applyEffect', src, value, data)
end)

Ability Unlock Effect

Unlocks an ability or feature.

effect = {
    type = 'ability',
    ability = 'double_jump',        -- Ability identifier
    data = {
        height = 2.0,
    },
}

Position System

Nodes are positioned on a grid. The root node is typically at { x = 0, y = 0 }.

        y = 0 (top)

    x = -2 │ x = 2

        y = 3 (bottom)

Example Layout

-- Root at center top
['root'] = { position = { x = 0, y = 0 } },

-- Three branches below
['left_1'] = { position = { x = -1, y = 1 } },
['center_1'] = { position = { x = 0, y = 1 } },
['right_1'] = { position = { x = 1, y = 1 } },

-- Further branching
['left_2a'] = { position = { x = -2, y = 2 } },
['left_2b'] = { position = { x = -1, y = 2 } },

Complete Example

Here's a complete tree configuration example:

return {
    Debug = false,
    
    UI = {
        keybind = 'J',
        command = 'skilltree',
        closeOnEscape = true,
    },
    
    Trees = {
        ['combat'] = {
            label = 'Combat Mastery',
            description = 'Enhance your fighting capabilities',
            icon = 'crosshairs',
            iconColor = '#EF4444',
        },
    },
    
    Nodes = {
        -- Root
        ['combat_root'] = {
            tree = 'combat',
            label = 'Combat Training',
            description = 'Begin your journey as a warrior',
            icon = 'fist-raised',
            position = { x = 0, y = 0 },
            cost = 0,
            prerequisites = {},
            effect = { type = 'unlock' },
        },
        
        -- Tier 1 - Branches
        ['melee_path'] = {
            tree = 'combat',
            label = 'Brawler',
            description = 'Focus on close-quarters combat',
            icon = 'hand-fist',
            position = { x = -1, y = 1 },
            cost = 1,
            prerequisites = { 'combat_root' },
            effect = { type = 'unlock' },
        },
        ['ranged_path'] = {
            tree = 'combat',
            label = 'Marksman',
            description = 'Focus on ranged combat',
            icon = 'bullseye',
            position = { x = 1, y = 1 },
            cost = 1,
            prerequisites = { 'combat_root' },
            effect = { type = 'unlock' },
        },
        
        -- Tier 2 - Melee Branch
        ['melee_damage'] = {
            tree = 'combat',
            label = 'Power Strike',
            description = '+10% melee damage',
            icon = 'bolt',
            position = { x = -2, y = 2 },
            cost = 2,
            prerequisites = { 'melee_path' },
            effect = {
                type = 'stat_bonus',
                stat = 'melee_damage',
                value = 0.10,
            },
        },
        ['melee_speed'] = {
            tree = 'combat',
            label = 'Quick Hands',
            description = '+15% melee attack speed',
            icon = 'gauge-high',
            position = { x = -1, y = 2 },
            cost = 2,
            prerequisites = { 'melee_path' },
            effect = {
                type = 'stat_bonus',
                stat = 'melee_speed',
                value = 0.15,
            },
        },
        
        -- Tier 2 - Ranged Branch
        ['ranged_accuracy'] = {
            tree = 'combat',
            label = 'Steady Aim',
            description = '+10% weapon accuracy',
            icon = 'crosshairs',
            position = { x = 1, y = 2 },
            cost = 2,
            prerequisites = { 'ranged_path' },
            effect = {
                type = 'stat_bonus',
                stat = 'weapon_accuracy',
                value = 0.10,
            },
        },
        ['ranged_damage'] = {
            tree = 'combat',
            label = 'Lethal Shot',
            description = '+10% weapon damage',
            icon = 'gun',
            position = { x = 2, y = 2 },
            cost = 2,
            prerequisites = { 'ranged_path' },
            effect = {
                type = 'stat_bonus',
                stat = 'weapon_damage',
                value = 0.10,
            },
        },
        
        -- Tier 3 - Capstone
        ['combat_master'] = {
            tree = 'combat',
            label = 'Combat Master',
            description = '+5% all combat stats',
            icon = 'crown',
            position = { x = 0, y = 3 },
            cost = 5,
            prerequisites = { 'melee_damage', 'ranged_accuracy' },
            levelRequirement = 20,
            effect = {
                type = 'custom',
                callback = 'combat_master_unlock',
                value = 0.05,
            },
        },
    },
}

Tips

Balancing

  • Root nodes should be free (cost = 0)
  • Tier 1 nodes: 1-2 points
  • Tier 2 nodes: 2-3 points
  • Tier 3+ nodes: 3-5+ points
  • Capstone nodes: 5-10 points with multiple prerequisites

Tree Design

  • Keep trees focused on a theme
  • Provide meaningful choices (branches)
  • Don't make all nodes mandatory
  • Balance stat bonuses with gameplay

Prerequisites

  • Use single prerequisites for linear paths
  • Use multiple prerequisites for capstone nodes
  • Don't create impossible unlock paths

Next Steps