Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Sistema de colheita


Ir para solução Resolvido por zipter98,

Posts Recomendados

Olá pessoal!
Tenho esse script de colheita no meu server, funciona assim:
Tem a árvore com frutos, dou use e ganho uma quantia aleatória de frutas configuradas no math.random, a árvore com frutos se transforma numa sem frutos.

 

local cfg = {


soul = 0,
level = 1
}
local t = {
[{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
[{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
[{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
[{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
local S = getPlayerSoul(cid)
local L = getPlayerLevel(cid)
for i, k in pairs(t) do
if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
doTransformItem(item.uid, k.NFTree)
doPlayerAddItem(cid, k.fruit, math.random(1, 10))
doPlayerAddSoul(cid, -cfg.soul)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
elseif (S < cfg.soul) then
doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
elseif (L < cfg.level) then
doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
end
end
end

 

 

Gostaria que configurassem pra mim para que depois de 3600 segundos, a árvore sem frutos se transforme numa com frutos novamente

 

então ficará assim:
terá a árvore com frutos, eu dou use nela para colher e ganho frutos aleatórios, a árvore com frutos se transforma na sem frutos e depois de 3600 segundos ela se transforma na com frutos novamente.

 

 

~~ klipstyle  - grato pelo math.random, não sabia que poderia ser feito dessa forma mas funcionou!

 

grato!

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

não sei se pode se usar math.ramdom dessa forma porem se não der erro acredito que a quantia sera aleatória.

 

local cfg = {


soul = 0,
level = 1
}
local t = {
[{11419}] = {fruit = 2675, NFTree = 4008, amount = math.random(1, 10), fName = "Orange"},
[{5094}] = {fruit = 2676, NFTree = 5092, amount = math.random(1, 10), fName = "Banana"},
[{5096}] = {fruit = 2678, NFTree = 2726, amount = math.random(1, 10), fName = "Coconut"},
[{5157}] = {fruit = 5097, NFTree = 5156, amount = math.random(1, 10), fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
local S = getPlayerSoul(cid)
local L = getPlayerLevel(cid)
for i, k in pairs(t) do
if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
doTransformItem(item.uid, k.NFTree)
doPlayerAddItem(cid, k.fruit, k.amount)
doPlayerAddSoul(cid, -cfg.soul)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
elseif (S < cfg.soul) then
doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
elseif (L < cfg.level) then
doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
end
end
end

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

não sei se pode se usar math.ramdom dessa forma porem se não der erro acredito que a quantia sera aleatória.

 

local cfg = {

soul = 0,

level = 1

}

local t = {

[{11419}] = {fruit = 2675, NFTree = 4008, amount = math.random(1, 10), fName = "Orange"},

[{5094}] = {fruit = 2676, NFTree = 5092, amount = math.random(1, 10), fName = "Banana"},

[{5096}] = {fruit = 2678, NFTree = 2726, amount = math.random(1, 10), fName = "Coconut"},

[{5157}] = {fruit = 5097, NFTree = 5156, amount = math.random(1, 10), fName = "Mango"}

}

function onUse(cid, item, frompos, item2, topos)

local S = getPlayerSoul(cid)

local L = getPlayerLevel(cid)

for i, k in pairs(t) do

if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then

doTransformItem(item.uid, k.NFTree)

doPlayerAddItem(cid, k.fruit, k.amount)

doPlayerAddSoul(cid, -cfg.soul)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")

elseif (S < cfg.soul) then

doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")

elseif (L < cfg.level) then

doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")

end

end

end

 

 

 

não sei o motivo, mas só vem de 6 em 6 com esse script, e nele não foi configurado para depois de 3600 segundos a árvore sem frutos se transformar na com frutos ;x

 

mas se conseguir apenas 1 das ações, eu dou rep+

Link para o post
Compartilhar em outros sites

vou tentar ajudar primeiro com a quantia aleatória, até porque sou meio amador na área.

local cfg = {


soul = 0,
level = 1
}
local t = {
[{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
[{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
[{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
[{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
local S = getPlayerSoul(cid)
local L = getPlayerLevel(cid)
for i, k in pairs(t) do
if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
doTransformItem(item.uid, k.NFTree)
doPlayerAddItem(cid, k.fruit, math.random(1, 10))
doPlayerAddSoul(cid, -cfg.soul)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
elseif (S < cfg.soul) then
doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
elseif (L < cfg.level) then
doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
end
end
end

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

Agora funcionou, só falta depois de 3600 segundos a árvore sem frutos se transformar numa com frutos

 

REP+, obg manin

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

nunca fiz nem editei nada do tipo porem teste esse script ç.ç

 

local cfg = {


soul = 0,
level = 1
}
local t = {
[{11419}] = {NTTree = 11419, fruit = 2675, NFTree = 4008, fName = "Orange"},
[{5094}] = {NTTree = 5094, NFTree = 5092, fName = "Banana"},
[{5096}] = {NTTree = 5096, NFTree = 2726, fName = "Coconut"},
[{5157}] = {NTTree = 5157, NFTree = 5156, fName = "Mango"}
}
local mins = 1
function fruto(cid)
doTransformItem(item.uid, k.NTTree)
return true
end
function onUse(cid, item, frompos, item2, topos)
local S = getPlayerSoul(cid)
local L = getPlayerLevel(cid)
for i, k in pairs(t) do
if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
doTransformItem(item.uid, k.NFTree)
addEvent(function() fruto(cid) end,mins*60*1000)
doPlayerAddItem(cid, k.fruit, math.random(1, 10))
doPlayerAddSoul(cid, -cfg.soul)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
elseif (S < cfg.soul) then
doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
elseif (L < cfg.level) then
doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
end
end
end

 

devera voltar ao normal após 1 minuto.

Editado por klipstyle (veja o histórico de edições)

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

[29/05/2015 19:21:56] [Error - Action Interface]
[29/05/2015 19:21:56] In a timer event called from:
[29/05/2015 19:21:56] data/actions/scripts/harvest plants.lua:onUse
[29/05/2015 19:21:56] Description:
[29/05/2015 19:21:56] data/actions/scripts/harvest plants.lua:13: attempt to index global 'item' (a nil value)
[29/05/2015 19:21:56] stack traceback:
[29/05/2015 19:21:56]     data/actions/scripts/harvest plants.lua:13: in function 'fruto'
[29/05/2015 19:21:56]     data/actions/scripts/harvest plants.lua:22: in function <data/actions/scripts/harvest plants.lua:22>
Link para o post
Compartilhar em outros sites

local cfg = {
    soul = 0,
    time = 3600,
    level = 1
}
local t = {
    [{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
    [{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
    [{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
    [{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
    local S = getPlayerSoul(cid)
    local L = getPlayerLevel(cid)
    for i, k in pairs(t) do
        if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
            addEvent(function()
                local i = getTileItemById(k.NFTree, topos).uid
                if i > 0 then
                    doTransformItem(i, item.itemid)
                end
            end, cfg.time * 1000)
            doTransformItem(item.uid, k.NFTree)
            doPlayerAddItem(cid, k.fruit, math.random(1, 10))
            doPlayerAddSoul(cid, -cfg.soul)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
        elseif (S < cfg.soul) then
            doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
        elseif (L < cfg.level) then
            doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
        end
    end
    return true
end

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites
local cfg = {
    soul = 0,
    time = 3600,
    level = 1
}
local t = {
    [{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
    [{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
    [{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
    [{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
    local S = getPlayerSoul(cid)
    local L = getPlayerLevel(cid)
    for i, k in pairs(t) do
        if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
            addEvent(function()
                local i = getTileItemById(k.NFTree, topos).uid
                if i > 0 then
                    doTransformItem(i, item.itemid)
                end
            end, cfg.time * 1000)
            doTransformItem(item.uid, k.NFTree)
            doPlayerAddItem(cid, k.fruit, math.random(1, 10))
            doPlayerAddSoul(cid, -cfg.soul)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
        elseif (S < cfg.soul) then
            doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
        elseif (L < cfg.level) then
            doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
        end
    end
    return true
end

valeu pela ajuda *-* muita função usada acima ainda não sei usar.

irei tentar entender o script e estudar sobre ele pois e uma função muito foda.

 

saberia algum tutorial que fale um pouco sobre.

for i, k in pairs(t) do

isInArray

addEvent(function() ?

valeu !

Editado por klipstyle (veja o histórico de edições)

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

valeu pela ajuda *-* muita função usada acima ainda não sei usar.

irei tentar entender o script e estudar sobre ele pois e uma função muito foda.

 

saberia algum tutorial que fale um pouco sobre.

for i, k in pairs(t) do

isInArray

addEvent(function() ?

valeu !

http://www.tibiaking.com/forum/forum/220-aulas-de-scripting/

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

Link para o post
Compartilhar em outros sites

Obrigado ,Snowsz era oque eu precisava.

 

EDIT:

Cara não pensei que a aula 1 seria tao produtiva por ser uma Introdução.
Fica o REP pela indicação sem igual!

Editado por klipstyle (veja o histórico de edições)

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites
local cfg = {
    soul = 0,
    time = 3600,
    level = 1
}
local t = {
    [{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
    [{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
    [{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
    [{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
    local S = getPlayerSoul(cid)
    local L = getPlayerLevel(cid)
    for i, k in pairs(t) do
        if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
            addEvent(function()
                local i = getTileItemById(k.NFTree, topos).uid
                if i > 0 then
                    doTransformItem(i, item.itemid)
                end
            end, cfg.time * 1000)
            doTransformItem(item.uid, k.NFTree)
            doPlayerAddItem(cid, k.fruit, math.random(1, 10))
            doPlayerAddSoul(cid, -cfg.soul)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
        elseif (S < cfg.soul) then
            doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
        elseif (L < cfg.level) then
            doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
        end
    end
    return true
end

 

[29/05/2015 22:14:09] [Error - Action Interface]
[29/05/2015 22:14:09] In a timer event called from:
[29/05/2015 22:14:09] data/actions/scripts/harvest plants.lua:onUse
[29/05/2015 22:14:09] Description:
[29/05/2015 22:14:09] attempt to index a number value
[29/05/2015 22:14:09] stack traceback:
[29/05/2015 22:14:09]     [C]: in function 'getTileItemById'
[29/05/2015 22:14:09]     data/actions/scripts/harvest plants.lua:18: in function <data/actions/scripts/harvest plants.lua:17>
Link para o post
Compartilhar em outros sites
  • Solução
local cfg = {
    soul = 0,
    time = 3600,
    level = 1
}
local t = {
    [{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
    [{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
    [{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
    [{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
    local S = getPlayerSoul(cid)
    local L = getPlayerLevel(cid)
    for i, k in pairs(t) do
        if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
            local info = {fromId = k.NFTree, toId = item.itemid, pos = topos}
            addEvent(function()
                local i = getTileItemById(info.pos, info.fromId).uid
                if i > 0 then
                    doTransformItem(i, info.toId)
                end
            end, cfg.time * 1000)
            doTransformItem(item.uid, k.NFTree)
            doPlayerAddItem(cid, k.fruit, math.random(1, 10))
            doPlayerAddSoul(cid, -cfg.soul)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
        elseif (S < cfg.soul) then
            doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
        elseif (L < cfg.level) then
            doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
        end
    end
    return true
end
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites
local cfg = {
    soul = 0,
    time = 3600,
    level = 1
}
local t = {
    [{11419}] = {fruit = 2675, NFTree = 4008, fName = "Orange"},
    [{5094}] = {fruit = 2676, NFTree = 5092, fName = "Banana"},
    [{5096}] = {fruit = 2678, NFTree = 2726, fName = "Coconut"},
    [{5157}] = {fruit = 5097, NFTree = 5156, fName = "Mango"}
}
function onUse(cid, item, frompos, item2, topos)
    local S = getPlayerSoul(cid)
    local L = getPlayerLevel(cid)
    for i, k in pairs(t) do
        if (isInArray(i, item.itemid) == true) and (S >= cfg.soul) and (L >= cfg.level) then
            local info = {fromId = k.NFTree, toId = item.itemid, pos = topos}
            addEvent(function()
                local i = getTileItemById(info.fromId, info.pos).uid
                if i > 0 then
                    doTransformItem(i, info.toId)
                end
            end, cfg.time * 1000)
            doTransformItem(item.uid, k.NFTree)
            doPlayerAddItem(cid, k.fruit, math.random(1, 10))
            doPlayerAddSoul(cid, -cfg.soul)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You got some "..k.fName..".")
        elseif (S < cfg.soul) then
            doPlayerSendCancel(cid, "You do not have soul to harvest the plant.")
        elseif (L < cfg.level) then
            doPLayerSendCancel(cid, "You are not in the requiered level to harvest.")
        end
    end
    return true
end

 

 

[29/05/2015 23:17:38] [Error - Action Interface]
[29/05/2015 23:17:38] In a timer event called from:
[29/05/2015 23:17:38] data/actions/scripts/harvest plants.lua:onUse
[29/05/2015 23:17:38] Description:
[29/05/2015 23:17:38] attempt to index a number value
[29/05/2015 23:17:38] stack traceback:
[29/05/2015 23:17:38]     [C]: in function 'getTileItemById'
[29/05/2015 23:17:38]     data/actions/scripts/harvest plants.lua:19: in function <data/actions/scripts/harvest plants.lua:18>
Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo