local STORAGE_SKILL_LEVEL = 10009
local STORAGE_SKILL_TRY = 10007
local config = {
levels = {
{level = {0,9}, quant = {1,1}, percent = 5},
{level = {10,19}, quant = {1,1}, percent = 10},
{level = {20,29}, quant = {1,1}, percent = 15},
{level = {30,39}, quant = {1,1}, percent = 20},
{level = {40,49}, quant = {1,1}, percent = 25},
{level = {50,59}, quant = {1,1}, percent = 30},
{level = {60,69}, quant = {1,1}, percent = 30},
{level = {70,79}, quant = {1,1}, percent = 35},
{level = {80,89}, quant = {1,1}, percent = 35},
{level = {90,99}, quant = {1,1}, percent = 40},
{level = {100}, quant = {1,1}, percent = 50}
},
rocks = {5092}, -- Id das rochas que podem ser quebradas
rocks2 = {5093},
rocks3 = {5094},
rocks4 = {5095},
stones = {5097}, -- Modelo = {rock_id, rock_id}
stones2 = {5099},
stones3 = {5100},
stones4 = {5098},
rock_delay = 60, -- 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 getCuttingLevel(cid)
return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL)
end
function setPlayerCuttingLevel(cid, n)
setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n)
end
function addCuttingLevel(cid, n)
setPlayerCuttingLevel(cid, getCuttingLevel(cid) + (isNumber(n) and n or 1))
setCuttingTry(cid, 0)
end
function getCuttingInfo(cid)
for i = 1, #config.levels do
min = config.levels[i].level[1]; max = config.levels[i].level[2]
if (getCuttingLevel(cid) >= min and getCuttingLevel(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]
elseif (config.stones2[3] == rockid2) then
return config.stones2[4]
end
end
end
function getCuttingTries(cid)
return getPlayerStorageValue(cid, STORAGE_SKILL_TRY)
end
function setCuttingTry(cid, n)
setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n)
end
function addCuttingTry(cid, bonus)
setCuttingTry(cid, getCuttingTries(cid) + 1 + (bonus and config.bonus_exp or 0))
if (getCuttingTries(cid) >= getCuttingExpTo(getCuttingLevel(cid))) then -- Up
doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getCuttingLevel(cid) .. " to level ".. (getCuttingLevel(cid) + 1) .." in miner.")
if ((getCuttingLevel(cid)+1) == getCuttingMaxLevel()) then
doPlayerSendTextMessage(cid, 22, "Max level reached in miner.")
end
addCuttingLevel(cid)
doSendMagicEffect(getCreaturePosition(cid), math.random(28,30))
setCuttingTry(cid, 0)
end
end
function getCuttingExpTo(level)
return ((level*1.5)+((level+1)*7))
end
function getCuttingMaxLevel()
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 (getCuttingLevel(cid) < 0) then
setPlayerCuttingLevel(cid, 0)
end
if (isInArray(config.rocks, rocks2, rocks3, rocks4, rock.id, rock.id2, rock.id3, rock.id4)) then
addCuttingTry(cid)
if (math.random(1,100) <= getCuttingInfo(cid).chance) then
local collected = math.random(getCuttingInfo(cid).quantity.min, getCuttingInfo(cid).quantity.max)
doPlayerAddItem(cid, getStoneByRock(rock.id), collected)
doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " brass" .. (collected > 1 and "s" or "") .. " ore.")
if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc
addCuttingTry(cid, true)
doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE)
end
event_rockCut(rock)
else
if (math.random(0,100) <= (0-getCuttingInfo(cid).chance/0)) 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, 5104)
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
eu estou tentando editar para que dependendo da pedra, exemplo, 5092, venha o minerio 5097 e somente ele, eu tentei:
if (config.stones[2] == rockid) then
return config.stones[1]
elseif (config.stones2[3] == rockid2) then
return config.stones2[4]
end
mas não estou tendo resultado nenhum, nem erro, alguem poderia me dar uma luz?
Pergunta
shanden4502 0
Boa noite, então eu tenho esse codigo:
local STORAGE_SKILL_LEVEL = 10009 local STORAGE_SKILL_TRY = 10007 local config = { levels = { {level = {0,9}, quant = {1,1}, percent = 5}, {level = {10,19}, quant = {1,1}, percent = 10}, {level = {20,29}, quant = {1,1}, percent = 15}, {level = {30,39}, quant = {1,1}, percent = 20}, {level = {40,49}, quant = {1,1}, percent = 25}, {level = {50,59}, quant = {1,1}, percent = 30}, {level = {60,69}, quant = {1,1}, percent = 30}, {level = {70,79}, quant = {1,1}, percent = 35}, {level = {80,89}, quant = {1,1}, percent = 35}, {level = {90,99}, quant = {1,1}, percent = 40}, {level = {100}, quant = {1,1}, percent = 50} }, rocks = {5092}, -- Id das rochas que podem ser quebradas rocks2 = {5093}, rocks3 = {5094}, rocks4 = {5095}, stones = {5097}, -- Modelo = {rock_id, rock_id} stones2 = {5099}, stones3 = {5100}, stones4 = {5098}, rock_delay = 60, -- 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 getCuttingLevel(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL) end function setPlayerCuttingLevel(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n) end function addCuttingLevel(cid, n) setPlayerCuttingLevel(cid, getCuttingLevel(cid) + (isNumber(n) and n or 1)) setCuttingTry(cid, 0) end function getCuttingInfo(cid) for i = 1, #config.levels do min = config.levels[i].level[1]; max = config.levels[i].level[2] if (getCuttingLevel(cid) >= min and getCuttingLevel(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] elseif (config.stones2[3] == rockid2) then return config.stones2[4] end end end function getCuttingTries(cid) return getPlayerStorageValue(cid, STORAGE_SKILL_TRY) end function setCuttingTry(cid, n) setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n) end function addCuttingTry(cid, bonus) setCuttingTry(cid, getCuttingTries(cid) + 1 + (bonus and config.bonus_exp or 0)) if (getCuttingTries(cid) >= getCuttingExpTo(getCuttingLevel(cid))) then -- Up doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getCuttingLevel(cid) .. " to level ".. (getCuttingLevel(cid) + 1) .." in miner.") if ((getCuttingLevel(cid)+1) == getCuttingMaxLevel()) then doPlayerSendTextMessage(cid, 22, "Max level reached in miner.") end addCuttingLevel(cid) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) setCuttingTry(cid, 0) end end function getCuttingExpTo(level) return ((level*1.5)+((level+1)*7)) end function getCuttingMaxLevel() 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 (getCuttingLevel(cid) < 0) then setPlayerCuttingLevel(cid, 0) end if (isInArray(config.rocks, rocks2, rocks3, rocks4, rock.id, rock.id2, rock.id3, rock.id4)) then addCuttingTry(cid) if (math.random(1,100) <= getCuttingInfo(cid).chance) then local collected = math.random(getCuttingInfo(cid).quantity.min, getCuttingInfo(cid).quantity.max) doPlayerAddItem(cid, getStoneByRock(rock.id), collected) doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " brass" .. (collected > 1 and "s" or "") .. " ore.") if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc addCuttingTry(cid, true) doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE) end event_rockCut(rock) else if (math.random(0,100) <= (0-getCuttingInfo(cid).chance/0)) 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, 5104) 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
eu estou tentando editar para que dependendo da pedra, exemplo, 5092, venha o minerio 5097 e somente ele, eu tentei:
if (config.stones[2] == rockid) then return config.stones[1] elseif (config.stones2[3] == rockid2) then return config.stones2[4] end
mas não estou tendo resultado nenhum, nem erro, alguem poderia me dar uma luz?
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados