• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Lua HELP TFS 1.4 MINING SYSTEM

VagosClubTM

Member
Joined
Aug 16, 2019
Messages
121
Reaction score
15
Location
Chile
Code:
local rewards = {
    { item = 8298, count = 1, chance = 50 },
    { item = 8299, count = 1, chance = 50 },
    { item = 8301, count = 1, chance = 50 },
    { item = 8302, count = 1, chance = 50 },
    { item = 8303, count = 1, chance = 50 },
    { item = 8310, count = 1, chance = 50 },
    { item = 9971, count = 1, chance = 50 },
    { item = 5944, count = 1, chance = 100 }
}

local storage = 5000
local delay_timer = 5

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    
    local cur_time, cur_storage = os.time(), player:getStorageValue(storage)
 
    if cur_storage > cur_time then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can mining again in " .. os.date("!%Hh %Mm %Ss", cur_storage - cur_time) .. ".")
        return true
    end
    
    local function addbackstone()
    local stones = {5750, 5751, 5752, 5753, 5754}
    local stone = Game.createItem(stones[math.random(#stones)], 1, toPosition)
        stone:setActionId(40041)
    end
    
    if player:getLevel() < 10 then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You dont have the required level of 10 to mining.")
        return true
    end
    
    if not target then
        return false
    end
    
    if not target:isItem() then
        return false
    end

    if target.actionid ~= 40041 then
    local pos = player:getPosition()
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You cannot use it here.')
        return false
    end
    
    if target.actionid == 40041 then
    local ran = math.random(100)
        if ran <= 10 then
            toPosition:sendMagicEffect(3)
            target:remove()
            addEvent(addbackstone, 120000)
            return true
        end
    end
 
    local text = "You have found "
    for i = 1, #rewards do
        local rand = math.random(1000)
        if rand <= rewards[i].chance then
            player:addItem(rewards[i].item, rewards[i].count)
            if text ~= "You have found " then
                text = text .. ", "
            end
            text = text .. rewards[i].count .. " " .. ItemType(rewards[i].item):getName()
        end         
    end
    if text == "You have found " then
        text = text .. "nothing"
    end
    player:sendTextMessage(36, text .. ".")
    cur_time = cur_time + delay_timer
    player:setStorageValue(storage, cur_time)
    return true
end

hello friends, I would like to know if it is possible to add to this mining system, the option that if you manage to chop the stone, it gives you experience directly to the character.

Thank you very much in advance if someone takes the time to help me
 
OP
OP
VagosClubTM

VagosClubTM

Member
Joined
Aug 16, 2019
Messages
121
Reaction score
15
Location
Chile
Put player:addExperience(amount) somewhere near line 75 above return true
thanks bro it worked well, the other thing is it possible to add that the peak breaks in a certain percentage of probability?

that is, the player is chipping the stone and has a 15% chance that the chipping tool will break
 

Roddet

::continue::
Premium User
Joined
May 1, 2013
Messages
486
Solutions
33
Reaction score
224
Location
mx
thanks bro it worked well, the other thing is it possible to add that the peak breaks in a certain percentage of probability?

that is, the player is chipping the stone and has a 15% chance that the chipping tool will break

Add this above if target.actionid == 40041 then condition
Lua:
    local break_chance = 15
    if math.random(1, 100) <= break_chance then
        item:remove(1)
        player:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your pick just broke.')
    end
 
OP
OP
VagosClubTM

VagosClubTM

Member
Joined
Aug 16, 2019
Messages
121
Reaction score
15
Location
Chile
Add this above if target.actionid == 40041 then condition
Lua:
    local break_chance = 15
    if math.random(1, 100) <= break_chance then
        item:remove(1)
        player:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Your pick just broke.')
    end
thanks bro work nice 100%
 
Top