Ir para conteúdo
Entre para seguir isso  
Vittu

Mining System

Recommended Posts

Vittu    5
Vittu
Nome: Mining System

Versão do Script: 2.0

Autor: Lwkass

Modificação: SilverBullet

Servidor testado: The Forgotten Server 0.4

Informações:

ganha-se 1 de experiencia ou 1 try, com chance de bonus na versão 2.0.

A cada 10 niveis aumenta o minimo e máximo de gold nuggets e a porcentagem de chance de se conseguir alguma gold nuggets, a quantidade padrão que aumenta em cada nivel está abaixo.

 

Nivel Máximo Padrão = 100

 

- Ganhos Por Nivel-

|-------------------------------------------------------------|

|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 from OTServBrasil
-- Mod: SilverBullet
-- Version: 2.0
-- Tested in: TFS 0.4

---------------------------
-- Configurations --
---------------------------

local STORAGE_SKILL_LEVEL = 10002
local STORAGE_SKILL_TRY = 10003  

   local config = {
    levels = {
        {level = {[color=cyan]0[/color],[color=cyan]9[/color]}, quant = {[color=blue]1[/color],[color=blue]2[/color]}, percent = [color=orange]5[/color]},
        {level = {[color=cyan]10[/color],[color=cyan]19[/color]}, quant = {[color=blue]2[/color],[color=blue]4[/color]}, percent = [color=orange]10[/color]},
        {level = {[color=cyan]20[/color],[color=cyan]29[/color]}, quant = {[color=blue]3[/color],[color=blue]6[/color]}, percent = [color=orange]15[/color]},
        {level = {[color=cyan]30[/color],[color=cyan]39[/color]}, quant = {[color=blue]4[/color],[color=blue]8[/color]}, percent = [color=orange]20[/color]},
        {level = {[color=cyan]40[/color],[color=cyan]49[/color]}, quant = {[color=blue]5[/color],[color=blue]10[/color]}, percent = [color=orange]25[/color]},
        {level = {[color=cyan]50[/color],[color=cyan]59[/color]}, quant = {[color=blue]6[/color],[color=blue]12[/color]}, percent = [color=orange]30[/color]},
        {level = {[color=cyan]60[/color],[color=cyan]69[/color]}, quant = {[color=blue]7[/color],[color=blue]14[/color]}, percent = [color=orange]30[/color]},
        {level = {[color=cyan]70[/color],[color=cyan]79[/color]}, quant = {[color=blue]8[/color],[color=blue]16[/color]}, percent = [color=orange]35[/color]},
        {level = {[color=cyan]80[/color],[color=cyan]89[/color]}, quant = {[color=blue]9[/color],[color=blue]18[/color]}, percent = [color=orange]35[/color]},
        {level = {[color=cyan]90[/color],[color=cyan]99[/color]}, quant = {[color=blue]10[/color],[color=blue]20[/color]}, percent = [color=orange]40[/color]},
        {level = {[color=cyan]100[/color]}, quant = {[color=blue]11[/color],[color=blue]22[/color]}, percent = [color=orange]50[/color]}
    },
    rocks = {[color=purple]1356[/color], [color=purple]1285[/color], [color=purple]3607[/color], [color=purple]3616[/color]}, -- Id das rochas que podem ser quebradas
    stones = {},  -- Modelo = {rock_id, rock_id}
    default_stone = [color=green]2157[/color], -- pedra padrão
    rock_delay = [color=magenta]480[/color], -- 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

Configurando:

Os Niveis são configurados por estágio, ou seja {0,9}, 0 é o minimo e 9 o máximo.

Quant é a quantidade minima e máxima que pode vir de gold nuggets por nivel.

Percent é a porcentagem de chance de se conseguir algum gold nuggets.

Rocks, são os ids das rochas que podem ser quebradas.

Esse é o tempo(em segundos) de espera até que a rocha volte, ou seja, você quebra a rocha e espera 480 segundos e a rocha volta como era antes.

Id do item "gold nuggets.

Adicione essa linha no actions.xml

<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

 

Quero avisar que tenho permissão do Lwkass para modificar o script

Obrigado.

Editado por Lwkass

Compartilhar este post


Link para o post
Lwkass    1
Lwkass

Eu ainda vou fazer um pack com profissões,

 

Obrigado pela sua contribuição !

Compartilhar este post


Link para o post
Gorgulf    0
Gorgulf

Qual a alteração que você fez? Eu não sei como funciona o original. Mas enfim, esse é um ótimo sistema!! Vlw pela contribuição!

Compartilhar este post


Link para o post
Vittu    5
Vittu

Esse era o Lumberjacking System, eu o modifiquei para Mining System, novas funções do lumberjack como bonus e etc..

Obrigado.

Compartilhar este post


Link para o post
Ribas1574    1
Ribas1574

só achei que a descrição está ruim, mas o sistema é bom, obrigado :D

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×