Ir para conteúdo

Featured Replies

Postado
  • Autor

@victor4312 Infelizmente, não que eles estejam errados de cobrar pelos seus serviços, mais cobrar por uma coisa "simples" já é um desespero por dinheiro. Eu também, infelizmente, não tenho como pagar por nenhum tipo de ajudante, seja no ramo de "Script", "Spriter", "Programador", etc. Mais se eu tivesse como pagar pelo serviço, eu também pagaria para conseguir o script.

Mais têm varias pessoas no "site" tirando um pouco do seu tempo para ajudar as outras pessoas.

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

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

  • Respostas 16
  • Visualizações 2.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Phineasz    --[[ PERFECT UPGRADE SYSTEM 2.0 Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- UpgradeHandler = { levels = { [1] = {

  • leozincorsair
    leozincorsair

    Tenta esse mano e por action e so tem como colocar uma pedra de refinamento    Actions.xml  <action itemid="8306" event="script" value="upgradesystem.lua"/>   Script :

Posted Images

Postado
Em 28/10/2018 em 00:40, Phineasz disse:

Estou tendo um possível conflito com o script de refinamento, quando eu dou use na stone e depois no item em que eu quero refina-lo da esses seguinte erro no executável

image.thumb.png.26c18b538d5bf26b38ef1a3cc44dc6af.png

 

upgradesystem <LIB>

  Mostrar conteúdo oculto

--[[

    PERFECT UPGRADE SYSTEM
                2.0

    Criado por Oneshot

    É proibido a venda ou a cópia sem os devidos créditos desse script.

]]--

UpgradeHandler = {
    levels = {
        [1] = {100, false, false},
        [2] = {90, false, false},
        [3] = {75, false, 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 = 7,
    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 > 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
        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

 

upgrade <ACTIONS>

  Mostrar conteúdo oculto

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

 

o código está registrado assim no Actions.Xml

<action itemid="8300;8306" event="script" value="upgrade.lua"/>

 

 

 

O script aqui tava funcionando normal, desliguei o ot e abri denovo, e começou dar esse erro ai, usei todos scripts de refine do TK, e todo dao o mesmo erro, estranho né.

       112674.gif

 

 

 

Postado
  • Autor

@Zzyzx Sim.

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Postado

@Phineasz Como funciona esse sistema?
Me explique...

Posso tentar montar algo parecido.

Postado
  • Autor

@tataboy67 É um sistema de refinamento, serve para refinar armas e equipamentos, são 2 itens de refinamento 1 com chance de  voltar 1 level e de quebrar, perder o item, e outro com 100% de refinar (sem quebrar, peder o item ou voltar 1 level). Level máximo de refinamento é 10, para cada level tem sua chance de refinar, voltar 1 level ou até  mesmo quebrar. Caso você falhe no refinamento uma mensagem em vermelho sobe no item que quebrou ou voltou 1 level dizendo "FAILED",  caso você tenha sucesso, sobe uma mensagem em laranja dizendo "UPGRADE"

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo