Você está desconectado.

Conecte-se e veja nossos conteúdos exclusivos!
 

  


[Action] Lenhador - LumberJack

Compartilhe
avatar
GOD Vitor
Administrador
Administrador

King Coin(s) King Coin(s) : 33
Reputação : 13015
Facebook : Facebook.com/Vitor.Eduardo.5567
OTServ Favorito : otPokémonImeprium
Meu Char : Zoom
Seção Favorita : Spriting
Eu sou : Scripter
Tópicos : 256
Data de Cadastro : 26/09/2015
Idade : 19
Localização : Florianópolis

[Action] Lenhador - LumberJack

Mensagem por GOD Vitor em 27/9/2015, 18:23

LumberJack System
Testato em TFS 0.3.4

Explicando um pouco do Script de Lenhador.

A cada vez que se corta 1 arvore, ganha-se 1 de experiencia ou uma madeira.
A cada 10 níveis aumenta o minimo e máximo de madeiras e a porcentagem de chance de se conseguir alguma madeira, a quantidade padrão que aumenta em cada nivel está abaixo:
Spoiler:
Nivel Máximo Padrão = 100


- Ganhos Por Nivel-

|--------------------------------------------------------|
|Nivel X ~ Y: Madeira = min, max; Chance = %
|--------------------------------------------------------|
|Nivel 0 ~ 9: Minimo = 1, Máximo = 2; Chance = 40 %
|Nivel 10 ~ 19: Minimo = 2, Máximo = 4; Chance = 45 %
|Nivel 20 ~ 29: Minimo = 3, Máximo = 6; Chance = 50 %
|Nivel 30 ~ 39: Minimo = 4, Máximo = 8; Chance = 55 %
|Nivel 40 ~ 49: Minimo = 5, Máximo = 10; Chance = 60 %
|Nivel 50 ~ 59: Minimo = 6, Máximo = 12; Chance = 65 %
|Nivel 60 ~ 69: Minimo = 7, Máximo = 14; Chance = 70 %
|Nivel 70 ~ 79: Minimo = 8, Máximo = 16; Chance = 75 %
|Nivel 80 ~ 89: Minimo = 9, Máximo = 18; Chance = 80 %
|Nivel 90 ~ 99: Minimo = 10, Máximo = 20; Chance = 85 %
|Nivel 100: Minimo = 11, Máximo = 22; Chance = 90 %
|--------------------------------------------------------|


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 lumberjacking."

O Script conta apenas com 1 tipo de madeira(id: 5901), ja que só existe 1 tipo de madeira movél e juntavel no tibia, mas caso seu server tenha outros tipos de madeiras é só adicionar no script o id da madeira.

Delay, esse delay(atraso) funciona da seguinte forma, ao cortar a arvore ela se torna um toco de madeira e ao passar 10 segundos(pode ser modificado) a arvore volta.


Vamos ao que interessa:

Abra a pasta data/actions/script copie um arquivo .lua e apague tudo que está dentro depois o renome-e para Lenhador
Após isso adicione o seguinte script:
Spoiler:
--Autor: Lwkass
--Mod: Eddyhavoc
--Configs--
local configs = {
sign = {{level = {0,9}, quant = {1,2}, percent = 40},
{level = {10,19}, quant = {2,4}, percent = 45},
{level = {20,29}, quant = {3,6}, percent = 50},
{level = {30,39}, quant = {4,8}, percent = 55},
{level = {40,49}, quant = {5,10}, percent = 60},
{level = {50,59}, quant = {6,12}, percent = 65},
{level = {60,69}, quant = {7,14}, percent = 70},
{level = {70,79}, quant = {8,16}, percent = 75},
{level = {80,89}, quant = {9,18}, percent = 80},
{level = {90,99}, quant = {10,20}, percent = 85},
{level = {100}, quant = {11,22}, percent = 90}},
trees = {2707, 2704},
woods = {{5901, 'all'}},
tree_delay = 10,
MaxLevel = 100
}
--END Configs--
function onUse(cid, item, fromPosition, itemEx, toPosition)
local STORAGE_SKILL_LEVEL = 10000
local STORAGE_SKILL_TRY = 10001
local skillLevel = getPlayerStorageValue(cid,STORAGE_SKILL_LEVEL)
local skillTry = getPlayerStorageValue(cid,STORAGE_SKILL_TRY)
local objeto2 = getThingFromPos(toPosition)
local player = getCreaturePosition(cid)
if skillLevel == -1 then
setPlayerStorageValue(cid,STORAGE_SKILL_LEVEL,1)
end
for Q = 1, #configs.sign do
if configs.sign[Q].level[2] == nil then
configs.sign[Q].level[2] = configs.sign[Q].level[1]
end
if skillLevel >= configs.sign[Q].level[1] and skillLevel <= configs.sign[Q].level[2] then
quant = math.random(configs.sign[Q].quant[1],configs.sign[Q].quant[2])
percent = configs.sign[Q].percent
break
end
end
for i = 1, #configs.trees do
if objeto2.itemid == configs.trees[i] then
if math.random(1,100) <= percent then
possible_woods = {{},{}}
for h = 1, #configs.woods do
if configs.woods[h][2] == objeto2.itemid then
possible_woods[1][#possible_woods[1]+1] = configs.woods[h][1]
else
if configs.woods[h][2] == 'all' then
possible_woods[2][#possible_woods[2]+1] = configs.woods[h][1]
end
end
end
if possible_woods[1][1] == nil and possible_woods[2][1] == nil then
doPlayerSendTextMessage(cid,22,"This tree can not be cut.")
elseif possible_woods[1][1] ~= nil then
doPlayerAddItem(cid,possible_woods[1][math.random(1,#possible_woods[1])],quant)
elseif possible_woods[1][1] == nil and possible_woods[2][1] ~= nil then
doPlayerAddItem(cid,possible_woods[2][math.random(1,#possible_woods[2])],quant)
end
if possible_woods[1][1] ~= nil or possible_woods[2][1] ~= nil then
if skillTry >= 0 then
setPlayerStorageValue(cid,STORAGE_SKILL_TRY,skillTry + 1)
else
setPlayerStorageValue(cid,STORAGE_SKILL_TRY,1)
end
doSendMagicEffect(getCreaturePosition(cid), 12)
doPlayerSendTextMessage(cid,22,"You got "..quant.." wood "..getItemNameById(objeto2.itemid)..".")
doSendAnimatedText(getCreaturePosition(cid), ''..quant..'', 192, cid)
setItemName(objeto2.uid, 'A trunk of '..getItemNameById(objeto2.itemid))
doSendMagicEffect(toPosition, 3)
addEvent(doTreeReturn,configs.tree_delay * 1000,toPosition,objeto2.itemid)
doTransformItem(objeto2.uid, 8792)
break
end
else
doPlayerSendCancel(cid,"You got nothing")
doSendMagicEffect(toPosition, 3)
setItemName(objeto2.uid, 'A trunk of '..getItemNameById(objeto2.itemid))
doSendAnimatedText(getCreaturePosition(cid), 'Fail!', 180, cid)
addEvent(doTreeReturn,configs.tree_delay * 1000,toPosition,objeto2.itemid)
doTransformItem(objeto2.uid, 8792)
break
end
else
doPlayerSendCancel(cid,"You can only cut trees")
end
end
if skillTry >= ((skillLevel+1)*3) then
if skillLevel == configs.MaxLevel then
doPlayerSendTextMessage(cid, 22, "Max level reached in lumberjacking.")
setPlayerStorageValue(cid,STORAGE_SKILL_TRY,0)
else
setPlayerStorageValue(cid,STORAGE_SKILL_LEVEL,skillLevel + 1)
setPlayerStorageValue(cid,STORAGE_SKILL_TRY,0)
doPlayerSendTextMessage(cid, 22, "You advanced from level ".. skillLevel .." to level ".. skillLevel + 1 .." in Lumberjacking.")
doSendMagicEffect(getCreaturePosition(cid),14)
doSendAnimatedText(getCreaturePosition(cid), 'Advance!', 18, cid)
end
end
end
function doTreeReturn(itemposition,oldid)
local pos = getThingfromPos(itemposition)
doTransformItem(pos.uid,oldid)
setItemName(pos.uid, getItemNameById(oldid))
doSendMagicEffect(itemposition,math.random(28,30))
end


Legenda:
Spoiler:
■ 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 madeira por nivel.
■ Percent é a porcentagem de chance de se conseguir alguma madeira.
■ Trees, são os ids das arvores que podem ser cortadas(obs:eu só coloquei 2 arvores).
■ Nessa tabela você define as madeiras que podem vir, {5901,'all'} o Numero 5901 é o id da madeira e o 'all' significa que 5901 é para todas as arvores da tabela trees, caso você queira definir uma madeira especifica para uma arvore deve-se usar assim {id_da_madeira,id_da_arvore} ficando {5901,2704}.
■ Esse é o tempo(em segundos) de espera até que a arvore volte, ou seja, você corta a arvore e espera 10 segundos e a arvore volta como era antes.
■ MaxLevel é o Nivel Máximo que se pode alcançar.

Adicione essa linha no actions.xml
Spoiler:
<action itemid="id do iten" script="lenhador.lua"/>


    Data/hora atual: 24/8/2017, 07:44