• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    Ayuda con Este Script

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default Ayuda con Este Script el Sáb Feb 03, 2018 4:48 pm

    Raken Stroyer

    avatar
    Nuevo Miembro
    Nuevo Miembro
    hola a todos y gracias de antemano hoy les vengo a pedir ayuda con una script que se llama upgrading stone system
    lo que yo quiero es que se pueda usar con tdas las armas ya sea de paladin kina o magos y que aumente el ataque magico de las wand

    _______________________________________________________________________


    Código:

       --[[ 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, false},

          [4] = {60, true, false},

          [5] = {45, true, false},

          [6] = {30, true, false},

          [7] = {25, true, false},

          [8] = {20, true, true},

          [9] = {15, true, true},

          [10] = {10, true, true},

          [11] = {10, true, true},

          [12] = {5, true, true}

       },

       broadcast = 7,

       attributes = {

          ["attack"] = 2,

          ["defense"] = 1,

          ["armor"] = 1

       },

       message = {

          console = "Trying to refine %s to level +%s with %s%% success rate.",

          success = "You have upgraded %s to level +%s",

          fail = "You have failed in upgrade of %s to level +%s",

          downgrade = "The upgrade level of %s has downgraded to +%s",

          erase = "The upgrade level of %s has been erased.",

          maxlevel = "The targeted %s is already on max upgrade level.",

          notupgradeable = "This item is not upgradeable.",

          broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!",

          invalidtool = "This is not a valid upgrade tool.",

          toolrange = "This upgrade tool can only be used in items with level between +%s and +%s"

       },

       tools = {

          [8306] = {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



    Última edición por The_Pain el Sáb Feb 03, 2018 6:20 pm, editado 1 vez (Razón : Editado por @The_Pain, el usuario no supo publicar su problema correctamente.)

    Ver perfil de usuario

    2default Re: Ayuda con Este Script el Sáb Feb 03, 2018 6:28 pm

    Buenas tardes, para que la STONE aumente el attack de una wand magica, tendrias que añadir 1 script a cada wand existente con un juego de STORAGES o Tablas que lean el succes, lo cual es algo Tedioso por que existen muchas wand y rods a las cuales tendrias que crearle un script!

    Hay otra manera que se puede lograr por Sources la cual no he encontrado publicamente en ningun Foro, he visto tal sistema en varios Servidores y hasta donde yo se, los dueños de dichos OT han pagado por la programacion o lo han programado por su propia cuenta, como es mi caso!

    Saludos. espero que algo de informacion te ayude!

    Quizas logres editar para que la wand obtenga 1 Succes y quedaria algo asi:
    Código:
    Snakebite Rod +10
    Pero que diga +10 no hara que aumente el damage de aquella arma!



    Si necesitas hospedaje para tu servidor usa este enlace y mira las buenos planes de Windows y Linux:

    SevuOT Online, Version:10 and Custom.

    Ver perfil de usuario

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).