Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Como na axei nada igual a esse script aqui resolvi trazer pro forum...

1 - Crie um arquivo chamado perfectrefine.lua em data/actions/scripts, cole o seguinte código:

-- PERFECT REFINE SYSTEM BY LPZ

-- VERSION 2.0

Refine = {

config = {

max = 13, -- NíVEL MáXIMO DE REFINO

interface = 2, -- 1 PARA INGLêS, 2 PARA PORTUGUêS

message = {

type = MESSAGE_EVENT_DEFAULT,

delay = 0.5,

success = {"You have succeeded in upgrade of %s to level +%s", "Você refinou %s para o nível +%s com sucesso."},

fail = {"You have failed in upgrade of %s to level +%s", "Você falhou em refinar %s para o nível +%s."},

recede = {"You have failed in upgrade of %s to level +%s. The refine level has downgraded to +%s.", "Você falhou em refinar %s para o nível +%s e o nível regrediu para +%s."},

critical = {"You have critical failed in upgrade of %s to level +%s. The refine level has vanished.", "Você falhou criticamente em refinar %s para o nível +%s. O nível resetou."},

maxlevel = {"This %s is already on max upgrade level.", "Este(a) %s já está no nível máximo de refino."},

broadcast = {"%s has succeeded in the upgrade of a %s to level +%s.\nCongratulations.", "%s teve sucesso em refinar %s para o nível +%s."},

tool_error = {"This isn't a valid refine item.", "Esse não é um item de refino válido"},

tool_maxlevel = {"This %s can only upgrade items to level +%s", "Este(a) %s só pode refinar itens abaixo de +%s."},

notupgradeable = {"This item isn't upgradeable.", "Este item não é refinável"},

prompt = {"Trying to refine %s to level +%s with %s%% success rate.", "Tentando refinar %s ao level +%s com %s%% de chance de sucesso."},

notenoughitems = {"You don't have %s %s to refine this item.", "Você não tem %s %s para refinar este item."}

},

attributes = {{"attack", true}, {"defense", true}, {"armor", false}}, -- MEXA APENAS SE ENTENDER O CóDIGO

downgrade = 5, -- NíVEL QUE EQUIPAMENTOS COMEçAM A REGREDIR

critical = 7, -- NíVEL QUE EQUIPAMENTOS COMEçAM A RESETAR

broadcast = {level = 7, key = true}, -- CONFIGURAçãO DO BROADCAST: 'level' define quais níveis podem mandar broadcast e 'key' liga e desliga broadcasts.

},

tools = {

--[[

Configure aqui as diferentes ferramentas de refino.

[itemid] = {max = x, chancemax = y, removeable = z}

'itemid' será o itemid da ferramenta

'x' é até qual nível a ferramenta pode refinar

'chancemax' é um bônus que a ferramenta adiciona a chance de refino

'z' define se a ferramenta some depois de refinar [true ou false]

]]--

[8303] = {max = 6, chancemax = 0, removeable = true, reagent = 0, amountbylevel = false},

[8301] = {max = 10, chancemax = 0, removeable = true, reagent = 0, amountbylevel = false},

[4846] = {max = 10, chancemax = 0, removeable = false, reagent = 5880, amountbylevel = true}

},

isEquipment = function(self)

local weapontype = self:getItemWeaponType()

if (weapontype > 0 and weapontype < 7) or self.item.info.armor ~= 0 then

return true

end

return false

end,

setItemName = function(self, name)

return doItemSetAttribute(self.item.uid, "name", name)

end,

chance = function(self)

local formula = math.ceil((100/math.sqrt((((self.config.max/4)+(self.item.level*2.3))/self.config.max)*self.item.level)))

local ret = {base = (formula > 100 and 100 or formula), downgrade = 7 * self.item.level, critical = 2.5 * self.item.level}

return ret

end,

amount = function(self)

return math.ceil(self.item.level * 0.33)

end

}

function Refine:load(item)

local obj = setmetatable({item = {uid = item.uid, info = getItemInfo(item.itemid)}}, {__index = function(self, index)

if(_G[index]) then

return setmetatable({callback = _G[index]}, {__call = function(self, ...)

return self.callback(item.uid, ...)

end})

else

return Refine[index]

end

end})

if not obj:isEquipment() then

return false

end

obj:updateLevel()

return obj

end

function Refine:updateLevel()

local info = self:getItemName():match("%+(%d+)")

self.item.level = (tonumber(info) or 0)

end

function Refine:getLevel()

local info = self:getItemName():match("%+(%d+)")

return tonumber(info) or 0

end

function Refine:upgrade(cid, item)

if self.config.message.delay > 0 then doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.prompt[self.config.interface]:format(self.item.info.name, self.item.level + 1, (self:chance().base > 100 and 100 or self:chance().base))) end

local tool = self.tools[item.itemid]

if not tool then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_error[self.config.interface])

end

if self.item.level == self.config.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.maxlevel[self.config.interface]:format(self.item.info.name))

end

if self.item.level >= tool.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_maxlevel[self.config.interface]:format(getItemNameById(item.itemid), tool.max))

end

if tool.reagent ~= 0 then

local count = (tool.amountbylevel == true and self:amount() or 1)

if not doPlayerRemoveItem(cid, tool.reagent, count) then

return addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.notenoughitems[self.config.interface]:format(count, (count > 1 and getItemInfo(tool.reagent).plural or getItemNameById(tool.reagent))))

end

end

if tool.removeable == true then doRemoveItem(item.uid, 1) end

if (self:chance().base + tool.chancemax) * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.success[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

if self.config.broadcast.key == true and (self.item.level + 1) >= self.config.broadcast.level then

doBroadcastMessage(self.config.message.broadcast[self.config.interface]:format(getCreatureName(cid), self.item.info.name, (self.item.level + 1)))

end

local r = self.config.attributes

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) + (r[2] == true and (self.item.level + 1) or 1))

end

end

else

self:setItemName(self:getItemName() .." +1")

for i = 1, #r do

if self.item.info[r[1]] ~= 0 or self:getItemWeaponType() ~= 5 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]] + 1)

end

end

end

else

local r = self.config.attributes

if self.item.level >= self.config.critical then

if self:chance().critical * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.critical[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

elseif self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

elseif self.item.level >= self.config.downgrade then

if self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

end

return true

end

2 - Em actions/scripts, crie um arquivo chamado refine.lua

function onUse(cid, item, fromPosition, itemEx, toPosition)

if not isCreature(itemEx.uid) then

local Obj = Refine:load(itemEx)

if Obj ~= false then

local oldLevel = Obj:getLevel()

Obj:upgrade(cid, item)

if Obj:getLevel() > oldLevel then

doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)

else

doSendMagicEffect(toPosition, CONST_ME_POFF)

end

else

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

end

else

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

end

return true

end

3 - Em actions.xml

<action itemid="8303;8301;4846" event="script" value="refine.lua">

Creditos:

LPZ

EU(Mariatti)

Link para o post
Compartilhar em outros sites

Você tem autorização para postar o mesmo ?

Girls, kisses !


Dizem que o homem-aranha não existe porque está somente nos livros...

E Deus existe mesmo estando somente na bíblia ... 

Povo Ignorante.


twitterimgzin.jpg

Link para o post
Compartilhar em outros sites

Você não me respondeu ainda,você tem permissão do autor para postar o mesmo ?

Girls, kisses !


Dizem que o homem-aranha não existe porque está somente nos livros...

E Deus existe mesmo estando somente na bíblia ... 

Povo Ignorante.


twitterimgzin.jpg

Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Mesmo que eu tenha postado anteriormente, não significa que autorizo a cópia do script.

No mais aqui está uma versão atualizada: Perfect Upgrade System

Retirem o script desse post.

ps: Eu sei que vocês me amam.

Abraços.

Editado por Oneshot (veja o histórico de edições)

Link para o post
Compartilhar em outros sites
  • 3 years later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo