Ir para conteúdo

[SDT] Minereção - Bronson Server


Killua

Posts Recomendados

Bom dia a todos, hoje vou postar para o SDT um "sistema" de mineração igual ao do Bronson server que eu fiz a pedido de um usuário. Se quiser ver os outros Scripts de terça, clique aqui.

Segue o modo que o usuário fez o pedido:

O player da vocação (11, 16, 21) usa o item pick.gif (ID: 2553) Nessas Pedras ironmine.gif (ID's: 5619, 5620),

Com isso ele PODE OU NÂO Obter (70% Obter, 30% não obter) um Iron Ore ironore.gif (ID:5880)

OBS² : Ao player usar a pick nas pedras e obter sucesso aparecerá o efeito na pedra (CONST_ME_BLOCKHIT = 3)
Menssagem no server log: (Você obteve 1 iron ore!)

OBS³: Caso o player use a pick e não obter sucesso aparecerá o efeito na pedra (CONST_ME_HITAREA = 9 )
Menssagem no server log: (Você Falhou!)

OBS³: Após 20 "pikaretadas" (use da pick na pedra) as pedras vão se "quebrar" transformando-as nos itens (ID's: 5621,5622)

 

 

Primeiro crie Killua Mining System.lua em data/actions/scripts e coloque esse código:


--- Sistema de mineração feito por Killua, XTibia.com

local pedras = {5619, 5620} -- Id das pedras que podem ser mineradas
local maxTries = 5 -- Quantas vezes a pedra sera minerada para se transformar em outra
local pedrasExaustas = {5621, 5622} -- Id das pedras nas quais as pedras mineradas vao se transformar
local chance = 70 -- Chance em % de conseguir o iron ore
local vocations = {11, 21, 16} -- Vocacoes que podem minerar
local tempoQuebrada = 5 -- Tempo em minutos que a pedra permanece quebrada
local cooldown = 2 -- Em segundos
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    
    local desc = tonumber(getItemSpecialDescription(itemEx.uid)) ~= nil and tonumber(getItemSpecialDescription(itemEx.uid)) or 0
    local pos = getThingPos(itemEx.uid)
    local a = math.random(1, #pedrasExaustas)
    local idPedra = getItemIdByName(getItemName(itemEx.uid))
   
    local function removeStone()
        local t = getTileItemById(pos, pedrasExaustas[a])
        if t then
            doRemoveItem(t.uid, 1)
        end
    end
    
    if isInArray(pedras, itemEx.itemid) then
        
        if getPlayerStorageValue(cid, 338192) > os.time() then
            doPlayerSendCancel(cid, "Voce esta cansado! Aguarde " .. getPlayerStorageValue(cid, 338192) - os.time() .. " segundos.")
            return true
        end
       
        if not isInArray(vocations, getPlayerVocation(cid)) then
            doPlayerSendCancel(cid, "Sua vocation nao pode minerar.")
            return true
        end
        
        if tonumber(getItemSpecialDescription(itemEx.uid)) == nil or tonumber(getItemSpecialDescription(itemEx.uid)) < maxTries - 1 then
            
            doItemSetAttribute(itemEx.uid, "description", desc + 1)
            doPlayerSetStorageValue(cid, 338192, os.time() + cooldown)
             
            local a = math.random(1, 100)
            if a < chance then
                doPlayerAddItem(cid, 5880, 1)
                doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_BLOCKHIT)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce obteve um iron ore!")
            else
                doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_HITAREA)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
            end
            
        elseif tonumber(getItemSpecialDescription(itemEx.uid)) == maxTries - 1 then
            doItemSetAttribute(itemEx.uid, "description", 0)
            doTransformItem(itemEx.uid, pedrasExaustas[a])
            addEvent(removeStone, tempoQuebrada * 1000 * 60)
            addEvent(doCreateItem, tempoQuebrada * 1000 * 60 + 200, idPedra, 1, pos)
            doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_HITAREA)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A pedra quebrou")
        end
    else
        doPlayerSendCancel(cid, "Aqui nao e lugar de minerar.")        
    end
    return true
end

Agora em data/actions/actions.xml, coloque essa tag:

<action itemid="2553" script="Killua Mining System.lua"/>
Editado por Killua
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

Ai, modifica para que todas vocaçoes do servidor possam utilizar? é que meu ot é de naruto, dai tem muitas vocaçoes, para adicionar ali.. =/

 

 

 


--- Sistema de mineração feito por Killua, XTibia.com

local pedras = {5619, 5620} -- Id das pedras que podem ser mineradas
local maxTries = 5 -- Quantas vezes a pedra sera minerada para se transformar em outra
local pedrasExaustas = {5621, 5622} -- Id das pedras nas quais as pedras mineradas vao se transformar
local chance = 70 -- Chance em % de conseguir o iron ore
local tempoQuebrada = 5 -- Tempo em minutos que a pedra permanece quebrada
local cooldown = 2 -- Em segundos
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
    
    local desc = tonumber(getItemSpecialDescription(itemEx.uid)) ~= nil and tonumber(getItemSpecialDescription(itemEx.uid)) or 0
    local pos = getThingPos(itemEx.uid)
    local a = math.random(1, #pedrasExaustas)
    local idPedra = getItemIdByName(getItemName(itemEx.uid))
   
    local function removeStone()
        local t = getTileItemById(pos, pedrasExaustas[a])
        if t then
            doRemoveItem(t.uid, 1)
        end
    end
    
    if isInArray(pedras, itemEx.itemid) then
        
        if getPlayerStorageValue(cid, 338192) > os.time() then
            doPlayerSendCancel(cid, "Voce esta cansado! Aguarde " .. getPlayerStorageValue(cid, 338192) - os.time() .. " segundos.")
            return true
        end

        if tonumber(getItemSpecialDescription(itemEx.uid)) == nil or tonumber(getItemSpecialDescription(itemEx.uid)) < maxTries - 1 then
            
            doItemSetAttribute(itemEx.uid, "description", desc + 1)
            doPlayerSetStorageValue(cid, 338192, os.time() + cooldown)
             
            local a = math.random(1, 100)
            if a < chance then
                doPlayerAddItem(cid, 5880, 1)
                doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_BLOCKHIT)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce obteve um iron ore!")
            else
                doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_HITAREA)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce falhou.")
            end
            
        elseif tonumber(getItemSpecialDescription(itemEx.uid)) == maxTries - 1 then
            doItemSetAttribute(itemEx.uid, "description", 0)
            doTransformItem(itemEx.uid, pedrasExaustas[a])
            addEvent(removeStone, tempoQuebrada * 1000 * 60)
            addEvent(doCreateItem, tempoQuebrada * 1000 * 60 + 200, idPedra, 1, pos)
            doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_HITAREA)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "A pedra quebrou")
        end
    else
        doPlayerSendCancel(cid, "Aqui nao e lugar de minerar.")        
    end
    return true
end

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...