Queria muito ter esse sistema no meu servidor, pois ele tem várias funções que eu gostei, a primeira é que o item pode se quebrar e a segunda é que ele é muito organizado. Mais estou tendo problema com ele, quando eu uso a pedra com id 8300 ou 8306 que são as 2 pedras de refinamento do meu servidor da esse erro citado abaixo na imagem.
Upgrade <Actions.xml>
Spoiler
function onUse(cid, item, fromPosition, itemEx, toPosition)
if isCreature(itemEx.uid) then
return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
end
local obj = UpgradeHandler:new(itemEx)
if(obj == false) then
return doPlayerSendCancel(cid, UpgradeHandler.message.notupgradeable)
end
local status = obj:refine(cid, item)
if status == "success" then
doSendAnimatedText(toPosition, "Success!", COLOR_GREEN)
doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)
elseif status == "fail" then
doSendAnimatedText(toPosition, "Fail!", COLOR_RED)
doSendMagicEffect(toPosition, CONST_ME_POFF)
else
doSendMagicEffect(toPosition, CONST_ME_POFF)
end
return true
end
--[[
PERFECT UPGRADE SYSTEM
2.0Criado por OneshotÉ proibido a venda ou a cópia sem os devidos créditos desse script.]]--UpgradeHandler={
levels ={[1]={100,true,true},[2]={90,true,true},[3]={75,true,true},[4]={60,true,true},[5]={45,true,true},[6]={30,true,true},[7]={25,true,true},[8]={20,true,true},[9]={15,true,true},[10]={5,true,true}},
broadcast =9,
attributes ={["attack"]=2,["defense"]=2,["armor"]=2,},
message ={
console ="{Upgrade System} Refinando %s para o level adiante você tem %s%% de conseguir.",
success ="{Upgrade System} Você conseguiu Refinar %s para o level +%s.",
fail ="{Upgrade System} Você falhou a sua refinação.",
downgrade ="{Upgrade System} Seu item %s voltou para o level +%s.",
erase ="{Upgrade System} O level da refinação %s foi apagado.",
maxlevel ="{Upgrade System} O item %s ja esta no level maximo.",
notupgradeable ="{Upgrade System} Este item não é refinavel.",
broadcast ="{Upgrade System} The player %s was successful in upgrading %s to level +%s.\nCongratulations!!",
invalidtool ="{Upgrade System} Este não é um item de refinação valido.",
toolrange ="{Upgrade System} Você so pode usar o refinamento do level +%s ate +%s."},
tools ={[8300]={range ={0,10}, info ={chance =0, removeable =true}},[8306]={range ={0,10}, info ={chance =100, removeable =true}}},
isEquipment =function(self)local weaponType =self:getItemWeaponType()return((weaponType >0and weaponType <7)orself.item.armor ~=0)end,
setItemName =function(self, name)return doItemSetAttribute(self.item.uid,"name", name)end,
chance =function(self)local chances ={}
chances.upgrade =(self.levels[self.item.level +1][1]or100)
chances.downgrade =(self.item.level *5)
chances.erase =(self.item.level *11)return chances
end}functionUpgradeHandler:new(item)local obj, ret ={}
obj.item ={}
obj.item.level =0
obj.item.uid = item.uid
for key, value in pairs(getItemInfo(item.itemid))do
obj.item[key]= value
end
ret = setmetatable(obj,{__index =function(self, index)if _G[index]thenreturn(setmetatable({callback = _G[index]},{__call =function(self,...)returnself.callback(item.uid,...)end}))elsereturnUpgradeHandler[index]endend})if ret:isEquipment()then
ret:update()return ret
endreturnfalseendfunctionUpgradeHandler:update()self.item.level =(tonumber(self:getItemName():match("%+(%d+)"))or0)endfunctionUpgradeHandler:refine(uid, item)ifnotself.item then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE,self.message.notupgradeable)return"miss"endlocal tool =self.tools[item.itemid]if(tool ==nil)then
doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT,self.message.invalidtool)return"miss"endif(self.item.level >#self.levels) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED,self.message.maxlevel:format(self.item.name))return"miss"endif(self.item.level < tool.range[1]orself.item.level >= tool.range[2])then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED,self.message.toolrange:format(unpack(tool.range)))return"miss"endlocal chance =(self:chance().upgrade + tool.info.chance)
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE,self.message.console:format(self.item.name,(self.item.level +1), math.min(100, chance)))if(tool.info.removeable ==true)then
doRemoveItem(item.uid,1)endif chance *100> math.random(1,10000)then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE,self.message.success:format(self.item.name,(self.item.level +1)))if(self.item.level +1)>=self.broadcast thenendself:setItemName((self.item.level >0andself:getItemName():gsub("%+(%d+)","+"..(self.item.level +1))or(self:getItemName().." +1")))for key, value in pairs(self.attributes)doif getItemAttribute(self.item.uid, key)~=nilorself.item[key]~=0then
doItemSetAttribute(self.item.uid, key,(self.item.level >0and getItemAttribute(self.item.uid, key)orself.item[key])+ value)endendreturn"success"
elseif item.itemid ==8300then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED,self.message.downgrade:format(self.item.name,(self.item.level -1)))self:setItemName((self.item.level ==1andself.item.name orself:getItemName():gsub("%+(%d+)","+"..(self.item.level -1))))for key, value in pairs(self.attributes)doif getItemAttribute(self.item.uid, key)~=nilorself.item[key]~=0then
doItemSetAttribute(self.item.uid, key,(self.item[key]+ value *(self.item.level -1)))endendreturn"fail"endend
Eu uso OTX, versão do meu servidor 8.60.
Queria muito ter esse sistema no meu servidor, pois ele tem várias funções que eu gostei, a primeira é que o item pode se quebrar e a segunda é que ele é muito organizado. Mais estou tendo problema com ele, quando eu uso a pedra com id 8300 ou 8306 que são as 2 pedras de refinamento do meu servidor da esse erro citado abaixo na imagem.
Upgrade <Actions.xml>
function onUse(cid, item, fromPosition, itemEx, toPosition) if isCreature(itemEx.uid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end local obj = UpgradeHandler:new(itemEx) if(obj == false) then return doPlayerSendCancel(cid, UpgradeHandler.message.notupgradeable) end local status = obj:refine(cid, item) if status == "success" then doSendAnimatedText(toPosition, "Success!", COLOR_GREEN) doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN) elseif status == "fail" then doSendAnimatedText(toPosition, "Fail!", COLOR_RED) doSendMagicEffect(toPosition, CONST_ME_POFF) else doSendMagicEffect(toPosition, CONST_ME_POFF) end return true end
upgradesystem <Lib>
Share this post
Link to post