• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua New skills in storage value

whiteblXK

Active Member
Joined
Apr 20, 2011
Messages
315
Solutions
9
Reaction score
32
Location
Poland
Hi, can someone write a script which add new skill to player and save in storage value,
I would like the script to include such options:
- max levels is 120
- unless you need use(new storage value,) in order to reach a greater level skill
I found this script on otland.net, works as I want but, It has a lumberjack.
Code:
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 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)
doPlayerAddSkillTry(cid, 1, 20)
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 farming.")
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 Lumberjack.")
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))
end
 
Last edited:
I will edit that one script and i have a bug
This is my script:
http://wklej.org/id/1192859/
I got 100 senzu beans when i have 1 level, this no read from the array what we have level.
elseif item.itemid == drzewko.krzaczek4 then
setPlayerStorageValue(cid,STORAGE_SKILL_TRY,skillTry + 1)
setPlayerStorageValue(cid,exhausted_storage,os.time()+exhausted_seconds)
doRemoveItem(item.uid, 1)
doPlayerAddItem(cid,config.senzu,math.random(config_skill.ileDostaje[1],config_skill.ileDostaje[2]))
doPlayerAddItem(cid,doniczki.doniczka,1)
if math.random(1,100) == config_skill.procentNasiono then
doPlayerAddItem(cid,config.nasiono,config_skill.ileNasion)
doPlayerSendTextMessage(cid,22,"You got "..config_skill.ileNasion.." senzu seeds.")
end
doPlayerSendTextMessage(cid,22,"You got "..math.random(config_skill.ileDostaje[1],config_skill.ileDostaje[2]).." senzu beans.")
This is my first script of this type, sorry for these array(butelki,doniczki,drzewko etc.), I do not know how to do it to be in one array, and that was when stacked.
Help with this bug
sorry for english :/
 
Last edited:
Back
Top