• 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 Mining script help

Koon

New Member
Joined
May 7, 2016
Messages
14
Reaction score
1
Hello. I'm newbie in scripting and i need some help.
I have a mining script. It work in ~50%. I can mine iron ores, but when i use pick on rocks to recive ores and on crystals, nothing happen. I think i must put doPlayerAddItem function or do CreateItem for stones and crystals, but i don't know in what place in code. Also I don't know how to make that I will mostly recive small stones (id 1294) and only sometimes stones 1293 and 1295. Please help

Lua:
local MUD_HOLE        =    392
local FRAGILE_ICE    =    7200
local ICE_FISHHOLE    =    7236

local duration = 5 * 60000 -- 5 minutes

--- local crystal_table = {[8633] = {transform = 8637, add = 8306, chance = 2}, [8634] = {transform = 8638, add = 9743, chance = 2}, [8635] = {transform = 8639, add = 9980, chance = 2}} --- , [8636] = {transform = 8640, add = XXXXX, chance = 2}

local STONE_CONFIG = {
    stone_rock = {4471, 4472, 4473, 4474, 4475, 4476},
    stoneRockAid = 101,
    stoneHit = 5,
    stoneId = {1293, 1294, 1295},
   
    brokenPickMsg = "You broke pick.",
    effect = CONST_ME_BLOCKHIT,

    monsterChance = 5, --- in percent
    monsterName = "Stone Golem"
}

local IRON_CONFIG = {
    time_ = 6*60*60, --- seconds
    effect = CONST_ME_BLOCKHIT,
    iron_rock_table = {[5619] = {count = {2, 5}, newId = 5747}, [5620] = {count = {2, 5}, newId = 5750}, [5621] = {count = {1, 3}, newId = 5751}, [5622] = {count = {1, 3}, newId = 5752}, [5623] = {count = {1, 3}, newId = 5753}, [5624] = {count = {1, 3}, newId = 5754}} -- bez iron ore: (5747 - 5754) + (5866 - 5868) --- 5748, 5749
}

local EXHAUST = {
    STORAGE = 1,
    TIME = 4,
    EFFECT = CONST_ME_POFF,
    MSG = "You are exhausted."
}

local function transformBackIronOre(ID, newId, pos)
    local thing = getTileItemById(pos, newId)
    doTransformItem(thing.uid, ID)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if (itemEx.actionid == 100) then
        if isInArray({354, 355}, itemEx.itemid) then
            doTransformItem(itemEx.uid, 392)
            doDecayItem(itemEx.uid)
            doSendMagicEffect(toPosition, CONST_ME_POFF)
            return true
        elseif itemEx.itemid == 4534 then
            doTransformItem(itemEx.uid, 469)
            doDecayItem(itemEx.uid)
            doSendMagicEffect(toPosition, CONST_ME_POFF)
            return true
        end
        return false
    end

    if(itemEx.itemid == FRAGILE_ICE) then
        doTransformItem(itemEx.uid, ICE_FISHHOLE)
        doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT)
        return true
    end
   
    local IRON_ORE = IRON_CONFIG.iron_rock_table[itemEx.itemid]

    if IRON_ORE ~= nil then
        if getPlayerStorageValue(cid, EXHAUST.STORAGE) > os.time() then
            doSendMagicEffect(getCreaturePosition(cid), EXHAUST.EFFECT)
            return doPlayerSendCancel(cid, EXHAUST.MSG)
        end
       
        doSendMagicEffect(toPosition, IRON_CONFIG.effect)
        doCreatureSay(cid, "Stuk!", TALKTYPE_ORANGE_1)
        doPlayerAddItem(cid, 5880, math.random(IRON_ORE.count[1], IRON_ORE.count[2]), true) --- canDropOnMap = true
        -- doCreateItem(5880, math.random(IRON_ORE.count[1], IRON_ORE.count[2]), toPosition)
        doTransformItem(itemEx.uid, IRON_ORE.newId)
        addEvent(transformBackIronOre, IRON_CONFIG.time_*1000, itemEx.itemid, IRON_ORE.newId, {x = toPosition.x, y = toPosition.y, z = toPosition.z})
        setPlayerStorageValue(cid, EXHAUST.STORAGE, os.time() +EXHAUST.TIME)
       
    elseif isInArray(STONE_CONFIG.stone_rock, itemEx.itemid) and itemEx.actionid == STONE_CONFIG.stoneRockAid then
        if getPlayerStorageValue(cid, EXHAUST.STORAGE) > os.time() then --- EXHAUST
            doSendMagicEffect(getCreaturePosition(cid), EXHAUST.EFFECT)
            return doPlayerSendCancel(cid, EXHAUST.MSG)
        end
       
        if math.random(1, 1000) == 1 then
            doRemoveItem(item.uid)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, STONE_CONFIG.brokenPickMsg)
        end
       
        if STONE_CONFIG.stoneHit > 0 then
            doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -STONE_CONFIG.stoneHit, -STONE_CONFIG.stoneHit, CONST_ME_NONE)
        end
       
        if math.random(1, 100) <= STONE_CONFIG.monsterChance then
            local monsterPosTable = {{x = toPosition.x -1, y = toPosition.y +1, z = toPosition.z}, {x = toPosition.x +1, y = toPosition.y +1, z = toPosition.z}}
            for _, mon in pairs(monsterPosTable) do
                doSummonCreature(STONE_CONFIG.monsterName, mon)
            end
        end
        doCreateItem(STONE_CONFIG.stoneId[math.random(1, 2, 3)], 1, getCreaturePosition(cid))
        doSendMagicEffect(toPosition, STONE_CONFIG.effect)
        setPlayerStorageValue(cid, EXHAUST.STORAGE, os.time() +EXHAUST.TIME)
        doSendMagicEffect(getCreaturePosition(cid), EXHAUST.EFFECT)
       
        setPlayerStorageValue(cid, EXHAUST.STORAGE, os.time() +EXHAUST.TIME) --- EXHAUST
    end
    return false
end
 
Do the stone rocks have any of these itemids: 4471, 4472, 4473, 4474, 4475, 4476 ?
Do they have actionid 101?
 
Back
Top