lepiigor 16 #1 Postado 11 Fevereiro, 2021 Quero compartilhar isso, porque funciona e é muito RPG, O sistema permite que você garimpe pedras, você tem acima o ID das pedras, e os itens que isso dá, você pode escolher adicionar scripts como desejar para transformar pedras em ouro etc etc etc. O SCRIPT NÃO É MEU, apenas modifiquei para funcionar com OTSERVBR. Spoiler local mining = Action() local config = { maxmininglevel = 120, storagemining = 100000, expperlevel = 1500, experiencemining = 125 } local stone = { blue = {8637, 8633, 9798, 1354}, green = {8640, 8636, 9791, 1353}, lightblue = {8638, 8634, 9790, 12344}, red = {8639, 8635, 9788, 1355}, } local stones = { crystal = {stone.blue[1], stone.green[1], stone.lightblue[1], stone.red[1]}, lcrystal = {stone.blue[2], stone.green[2], stone.lightblue[2], stone.red[2]}, pcrystal = {stone.blue[3], stone.green[3], stone.lightblue[3], stone.red[3]}, scrystal = {stone.blue[4], stone.green[4], stone.lightblue[4], stone.red[4]}, } local ore = { blue = {2146, 7759, 5905, 8302}, green = {2149, 7761, 12396 ,8298}, lightblue = {2150, 7762, 12575, 8303}, red = {2147, 7760, 5906, 8299}, } local ores = { ore.blue[1], ore.blue[2], ore.blue[3], ore.blue[4], ore.green[1], ore.green[2], ore.green[3], ore.green[4], ore.lightblue[1], ore.lightblue[2], ore.lightblue[3], ore.lightblue[4], ore.red[1], ore.red[2], ore.red[3], ore.red[4]} local levels = { { level = {0,19}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4]}, items = {ores[1],ores[5], ores[9], ores[13]}, iselect = 0, bstart = 1, gstart = 2, lbstart = 3, rstart = 4, chance = 10, -- 30 qtdmax = 1, expgainmin = 15, --15 expgainmax = 50 --50 }, { level = {20,49}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4]}, items = {ores[1],ores[2], ores[5], ores[6], ores[9],ores[10], ores[13], ores[14]}, iselect = 1, bstart = 1, gstart = 3, lbstart = 5, rstart = 7, chance = 10, qtdmax = 1, expgainmin = 25, expgainmax = 75 }, { level = {50,69}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4]}, items = {ores[1],ores[2], ores[3], ores[5], ores[6], ores[7], ores[9],ores[10], ores[11], ores[13], ores[14], ores[15]}, iselect = 2, bstart = 1, gstart = 4, lbstart = 7, rstart = 10, chance = 10, qtdmax = 1, expgainmin = 35, expgainmax = 95 }, { level = {70,89}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]}, items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]}, iselect = 3, bstart = 1, gstart = 5, lbstart = 9, rstart = 13, chance = 10, qtdmax = 1, expgainmin = 55, expgainmax = 125 }, { level = {90,100}, stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]}, items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]}, iselect = 3, bstart = 1, gstart = 5, lbstart = 9, rstart = 13, chance = 10, qtdmax = 1, expgainmin = 125, expgainmax = 180 } } function mining.onUse(cid, item, fromPosition, itemEx, toPosition) local getMiningLevel = getPlayerStorageValue(cid, config.storagemining) local getMiningExp = getPlayerStorageValue(cid, config.experiencemining) if getMiningLevel == -1 then setPlayerStorageValue(cid, config.storagemining, 0) end if getMiningExp < 0 then setPlayerStorageValue(cid, config.experiencemining, 0) end if (isInArray(stones.crystal, itemEx.itemid) or isInArray(stones.lcrystal, itemEx.itemid) or isInArray(stones.pcrystal, itemEx.itemid) or isInArray(stones.scrystal, itemEx.itemid)) then for a = 1, #levels do min = levels[a].level[1]; max = levels[a].level[2] if (getMiningLevel >= min and getMiningLevel <= max) then if isInArray(levels[a].stone, itemEx.itemid) then if (math.random(1, 100) <= levels[a].chance) then quantity = math.random(1, levels[a].qtdmax) experience = math.random(levels[a].expgainmin, levels[a].expgainmax) if isInArray(stone.blue, itemEx.itemid) then iselection = math.random(levels[a].bstart, levels[a].bstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.green, itemEx.itemid) then iselection = math.random(levels[a].gstart, levels[a].gstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.lightblue, itemEx.itemid) then iselection = math.random(levels[a].lbstart, levels[a].lbstart + levels[a].iselect) collect = levels[a].items[iselection] end if isInArray(stone.red, itemEx.itemid) then iselection = math.random(levels[a].rstart, levels[a].rstart + levels[a].iselect) collect = levels[a].items[iselection] end if getMiningLevel == 100 then doSendMagicEffect(toPosition, 9) doPlayerSendTextMessage(cid, 22, text) doPlayerAddItem(cid, collect, quantity) elseif getMiningLevel <= 99 then if getMiningExp >= config.expperlevel then doSendMagicEffect(getCreaturePosition(cid), 49) setPlayerStorageValue(cid, config.storagemining, getMiningLevel + 1) setPlayerStorageValue(cid, config.experiencemining, getMiningExp - config.expperlevel) text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n You advanced from mining skill level " ..getMiningLevel.. " to mining skill level " ..(getMiningLevel + 1).. "." else setPlayerStorageValue(cid, config.experiencemining, getMiningExp + experience) text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n" ..(config.expperlevel - getMiningExp - experience).. " experience points left to next level. \nCurrent Mining Skill: " ..getMiningLevel.. "." end doSendMagicEffect(toPosition, 9) doPlayerSendTextMessage(cid, 22, text) doPlayerAddItem(cid, collect, quantity) end else doPlayerSendTextMessage(cid, 22, "Working.") end else doPlayerSendTextMessage(cid, 22, "You need to get better in Mining to mining this.") end end end else doSendMagicEffect(getCreaturePosition(cid), 2) doPlayerSendTextMessage(cid, 22, "You can't mining this.") end end mining:id(2553) mining:register() Creditos: NOLYS & ARALOM 2 brunomaidana e Majesty reagiu a isto Compartilhar este post Link para o post
Majesty 1755 #2 Postado 11 Fevereiro, 2021 Muito obrigado pela sua contribuição, seu conteúdo foi aprovado!Nós do OTServ Brasil agradecemos, seu conteúdo com certeza ajudará a muitos outros. Você recebeu +1 REP! Compartilhar este post Link para o post
lepiigor 16 #3 Postado 27 Fevereiro, 2021 (editado) Não sei como adicioná-lo ao script principal ainda, mas se alguém estiver procurando por isso, pode ajudar. Este usa o item 2420 (machete) como exemplo, mais de 1285 (stone) e remove a pedra do mapa. Item X 1/100000 chance de ter, neste caso 2160 (moeda de cristal) o 2152 ( moeda de platinum ) Espero que isso ajude alguém! local rocking = Action() function rocking.onUse(player, item, fromPosition, target, toPosition, isHotkey) if item.itemid == 2420 then if target.itemid == 1285 then local chance = math.random(1, 10000) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) target:remove(1) if chance <= 9556 then player:addItem(2152, 5) else player:addItem(2160, 1) end end end end rocking:id(2420) rocking:register() Editado 27 Fevereiro, 2021 por lepiigor ID 2152 Compartilhar este post Link para o post