Ir para conteúdo

Posts Recomendados

eae galera do xtibia, acabei achando esse refine system que usei em meu servidor 8.54 e resolvi compartilhar com vocês bom vou deixar algumas coisas claras para não ter equivoco de nimguem

 

1º- Não sou o criador do script e também não sou scripter então não vou poder tirar dúvidas

2º- Não lembro o nome do criador do script caso ele compareça aqui no tópico basta falar que eu ponho os devidos créditos pelo script

3º- Testado na versão 8.54 e não funciona com wands ou rods

4º- Dependendo da dúvida se eu souber responder irei ajudar com maior prazer caso não souber não vou nem responder para não poluir o tópico.

5º- se algum scripter puder fazer uma breve explicação sobre como configura o script ficarei grato pois faz muito tempo que não mexo nele não lembro de quase nada.

 

É isso espero a compreenção de todos vamos ao script

 

UpgradeHandler = {

 

levels = {
[1] = {100, false, false},
[2] = {80, false, false},
[3] = {70, false, false},
[4] = {60, true, false},
[5] = {50, true, false},
[6] = {45, true, false},
[7] = {40, true, false},
[8] = {35, true, true},
[9] = {30, true, true},
[10] = {25, true, true},
[11] = {20, true, true},
[12] = {15, true, true},
[13] = {10, true, true},
[14] = {5, true, true},
[15] = {1, true, true}
},
broadcast = 7,
attributes = {
["attack"] = 100,
["defense"] = 50,
["armor"] = 25
},
message = {
console = "Agora a %s level +%s tem %s%% de sucesso de upar.",
success = "Voce Refinou a %s Para o level +%s",
fail = "O Refinamento Falhou Em Upar A %s Para o level +%s",
downgrade = "A %s Abaixou Para o Level +%s",
erase = "A %s Foi Quebrada.",
maxlevel = "A %s esta no level mais alto nao e possivel upa-la.",
notupgradeable = "este item nao pode ser refinado.",
broadcast = "O Player %s Teve Sucesso Em Refinar %s para o level +%s.\nParabens!!",
invalidtool = "Esta nao e uma ferramenta de refinamento valida.",
toolrange = "Esta ferramenta de atualizacao so pode ser usado em itens com nivel entre +%s e +%s"
},
tools = {
[11440] = {range = {0, 10}, info = {chance = 0, removeable = true}},
},

isEquipment = function(self)
local weaponType = self:getItemWeaponType()
return ((weaponType > 0 and weaponType < 7) or self.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] or 100)
chances.downgrade = (self.item.level * 5)
chances.erase = (self.item.level * 3)

return chances
end
}

function UpgradeHandler: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] then
return (setmetatable({callback = _G[index]}, {__call = function(self, ...)
return self.callback(item.uid, ...)
end}))
else
return UpgradeHandler[index]
end
end})

if ret:isEquipment() then
ret:update()
return ret
end
return false
end

function UpgradeHandler:update()
self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0)
end

function UpgradeHandler:refine(uid, item)
if not self.item then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable)
return "miss"
end

local tool = self.tools[item.itemid]

if(tool == nil) then
doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool)
return "miss"
end

if(self.item.level > #self.levels) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name))
return "miss"
end

if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range)))
return "miss"
end

local 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)
end

if 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 then
doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1)))
end

self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1")))
for key, value in pairs(self.attributes) do
if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then
doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value)
end
end
return "success"
else
if(self.levels[self.item.level][3] == true and (self:chance().erase * 100) > math.random(1, 10000)) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.erase:format(self.item.name))
self:setItemName(self.item.name)
for key, value in pairs(self.attributes) do
if self.item[key] > 0 then
doItemSetAttribute(self.item.uid, key, self.item[key])
end
end
elseif(self.levels[self.item.level][2] == true and (self:chance().downgrade * 100) > math.random(1, 10000)) then
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.downgrade:format(self.item.name, (self.item.level - 1)))
self:setItemName((self.item.level == 1 and self.item.name or self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1))))
for key, value in pairs(self.attributes) do
if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then
doItemSetAttribute(self.item.uid, key, (self.item[key] + value * (self.item.level - 1)))
end
end
else
doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.fail:format(self.item.name, (self.item.level + 1)))
end
return "fail"
end
end

 

espero que gostem e ajude bastante gente xD

 

 

Link para o comentário
https://xtibia.com/forum/topic/234464-refine-system-por-action/
Compartilhar em outros sites

Esse sistema foi criado pelo OneShot/Garou, e já tem disponibilizado aqui no fórum, estarei movendo seu pra lixeira, obrigado por tentar compartilhar conteúdos.

 

http://www.xtibia.com/forum/topic/187075-perfect-upgrade-system/


Tópico movido para Lixeira Pública.

Editado por Flavio S
Link para o comentário
https://xtibia.com/forum/topic/234464-refine-system-por-action/#findComment-1654253
Compartilhar em outros sites

×
×
  • Criar Novo...