Postado Janeiro 6, 2012 13 anos Este é um post popular. me confundi só por causa do nome do script alguem porfavor move para actions. Citar Nome: Mining System Autor: Lwkass Modificação: Vittu Detalhes: um sistema de mineração com skill. Bem pessoal esse era um sistema de lenhador, mas eu dei uma modificada eu transformei ele ne um script de mining, antes de falarem qualquer coisa, eu tive autorização do autor para modificar o script. Nivel Máximo Padrão = 100 - Ganhos Por Nivel- Citar |Nivel X ~ Y: Gold Nuggets = min, max; Chance = % |Nivel 0 ~ 9: Minimo = 1, Máximo = 2; Chance = 5 % |Nivel 10 ~ 19: Minimo = 2, Máximo = 4; Chance = 10 % |Nivel 20 ~ 29: Minimo = 3, Máximo = 6; Chance = 15 % |Nivel 30 ~ 39: Minimo = 4, Máximo = 8; Chance = 20 % |Nivel 40 ~ 49: Minimo = 5, Máximo = 10; Chance = 25 % |Nivel 50 ~ 59: Minimo = 6, Máximo = 12; Chance = 30 % |Nivel 60 ~ 69: Minimo = 7, Máximo = 14; Chance = 30 % |Nivel 70 ~ 79: Minimo = 8, Máximo = 16; Chance = 35 % |Nivel 80 ~ 89: Minimo = 9, Máximo = 18; Chance = 35 % |Nivel 90 ~ 99: Minimo = 10, Máximo = 20; Chance = 40 % |Nivel 100: Minimo = 11, Máximo = 22; Chance = 50 % Esse sistema conta com mensagem de avanço de nivel ou seja, você passou do nivel 10 pro 11 mostra o seguinte: "You advanced from level 10 to level 11 in mining." Delay, esse delay(atraso) funciona da seguinte forma, ao quebrar a rocha ela se torna um "destroço de pedra" e ao passar 480 segundos(pode ser modificado) a rocha volta. OBS: Deixei o Delay pois ficaria dificil o player esperar o Server Save para achar mais rochas caso o servidor seja pequeno. Oque o player ganha ao quebrar as rochas? Ele ganha Gold Nuggets(configuravel) Instalação: Abra a pasta data/actions/script e adicione isso em um arquivo lua (Sugestão: mining.lua) ------------------------------------------------------ -- Script by: Lwkass -- Mod: Vittu -- Version: 2.0 -- Tested in: TFS 0.4 --------------------------- -- Configurations -- --------------------------- local STORAGE_SKILL_LEVEL = 10002 local STORAGE_SKILL_TRY = 10003 local config = { levels = { {level = {0,9}, quant = {1,2}, percent = 5}, {level = {10,19}, quant = {2,4}, percent = 10}, {level = {20,29}, quant = {3,6}, percent = 15}, {level = {30,39}, quant = {4,8}, percent = 20}, {level = {40,49}, quant = {5,10}, percent = 25}, {level = {50,59}, quant = {6,12}, percent = 30}, {level = {60,69}, quant = {7,14}, percent = 30}, {level = {70,79}, quant = {8,16}, percent = 35}, {level = {80,89}, quant = {9,18}, percent = 35}, {level = {90,99}, quant = {10,20}, percent = 40}, {level = {100}, quant = {11,22}, percent = 50} }, rocks = {1356, 1285, 3607, 3616}, -- Id das rochas que podem ser quebradas stones = {}, -- Modelo = {rock_id, rock_id} default_stone = 2157, -- pedra padrão rock_delay = 480, -- Tempo de volta da rocha (Em segundos) bonus_chance = 3, -- Chance (em porcentagem) de se conseguir um bonus de exp bonus_exp = 1 -- Bonus extra } ------------------------------------ -- END Configurations --- ------------------------------------ function getMiningLevel(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL) end function setPlayerMiningLevel(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n) end function addMiningLevel(cid, n) setPlayerMiningLevel(cid, getMiningLevel(cid) + (isNumber(n) and n or 1)) setMiningTry(cid, 0) end function getMiningInfo(cid) for i = 1, #config.levels do min = config.levels[i].level[1]; max = config.levels[i].level[2] if (getMiningLevel(cid) >= min and getMiningLevel(cid) <= max) then return {quantity = {min = config.levels[i].quant[1], max = config.levels[i].quant[2]}, chance = config.levels[i].percent} end end end function getStoneByRock(rockid) for i = 1, #config.stones do if (config.stones[2] == rockid) then return config.stones[1] end end return config.default_stone end function getMiningTries(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_TRY) end function setMiningTry(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n) end function addMiningTry(cid, bonus) setMiningTry(cid, getMiningTries(cid) + 1 + (bonus and config.bonus_exp or 0)) if (getMiningTries(cid) >= getMiningExpTo(getMiningLevel(cid))) then -- Up doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getMiningLevel(cid) .. " to level ".. (getMiningLevel(cid) + 1) .." in mining.") if ((getMiningLevel(cid)+1) == getMiningMaxLevel()) then doPlayerSendTextMessage(cid, 22, "Max level reached in mining.") end addMiningLevel(cid) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) setMiningTry(cid, 0) end end function getMiningExpTo(level) return ((level*1.5)+((level+1)*7)) end function getMiningMaxLevel() return config.levels[#config.levels].level[#config.levels[#config.levels].level] end --------------------------- function onUse(cid, item, fromPosition, itemEx, toPosition) rock = { id = itemEx.itemid, uid = itemEx.uid, position = toPosition } player = { position = getCreaturePosition(cid) } if (getMiningLevel(cid) < 0) then setPlayerMiningLevel(cid, 0) end if (isInArray(config.rocks, rock.id)) then addMiningTry(cid) if (math.random(1,100) <= getMiningInfo(cid).chance) then local collected = math.random(getMiningInfo(cid).quantity.min, getMiningInfo(cid).quantity.max) doPlayerAddItem(cid, getStoneByRock(rock.id), collected) doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " gold" .. (collected > 1 and "s" or "") .. " nuggets.") if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc addMiningTry(cid, true) doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE) end event_rockCut(rock) else if (math.random(1,100) <= (10-getMiningInfo(cid).chance/10)) then doPlayerSendTextMessage(cid, 22, "You got nothing.") event_rockCut(rock) else doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Poff!", COLOR_GREEN) end end else doPlayerSendCancel(cid, "This can't be cut.") end end function event_rockCut(rock) addEvent(event_rockGrow, config.rock_delay * 1000, rock.position, rock.id) doTransformItem(rock.uid, 3610) doSendMagicEffect(rock.position, 3) doSendAnimatedText(rock.position, "Tack!", COLOR_GREEN) doItemSetAttribute(rock.uid, "name", "A trunk of " .. getItemNameById(rock.id)) end function event_rockGrow(rockPos, old_id) local rock = getThingFromPos(rockPos).uid doTransformItem(rock, old_id) doItemSetAttribute(rock, "name", getItemNameById(old_id)) doSendMagicEffect(rockPos, 3) end --Lumberjack 2.0 by: Lwkass <action itemid="id_do_item" script="mining.lua"/> id_do_item: coloque o id do item que deseja para quebrar as rochas, eu aconselho a usar a pick. Id da pick: 2553 Obrigado. Adicione essa linha no actions.xml Editado Janeiro 6, 2012 13 anos por Matheus (veja o histórico de edições) www.patronum.online
Postado Janeiro 6, 2012 13 anos Administrador Dei uma editadinha no seu tópico, apenas adicionei a tag da actions.xml que eu acho que você esqueceu de botar, espero que não se importe. Já conhecia esse sistema, inclusive já tive um otserv que contia ele, muito bom! TibiaKing Team- KingTópicos www.tibiaking.com
Postado Janeiro 6, 2012 13 anos Vittu,você vem ajudando muito aqui no fórum,espero que continue assim. Muito obrigado por compartilhar conosco mais um ótimo script. Lhe dei REP+ como incentivo ! Obrigado.Att GuuhTorres. Atenciosamente, Gustavo H. Torres
Postado Janeiro 7, 2012 13 anos EM outro forum eu vi um completaso mesmo com mining herbalism jewelcrafting algo assim e tinha outros mais. Ja feitos para itens de tibia mesmo muito radical. Esse ai tbm e muito bom ja serve como base
Postado Janeiro 10, 2012 13 anos Autor Ahh é apenas uma modficação galera, eu quis diponibilizar porque é bom pra quem curte esse negocio de skill aew. www.patronum.online
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.