Ir para conteúdo

Ajuda como modificar action do oneshot


maikons

Posts Recomendados

 

 

--[[

	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
		doRemoveItem(self.item.uid, 1)
		doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, "You have broken your item while trying to upgrade it.")
	end
end

 

 

 

Assim deve quebrar o item toda vez que ele não conseguir o upgrade. É só substituir esse código pelo upgradesystem.lua original. Qualquer problema, avisa aí.

Link para o comentário
Compartilhar em outros sites

 

 

--[[

	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
		doRemoveItem(self.item.uid, 1)
		doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, "You have broken your item while trying to upgrade it.")
	end
end

 

 

 

Assim deve quebrar o item toda vez que ele não conseguir o upgrade. É só substituir esse código pelo upgradesystem.lua original. Qualquer problema, avisa aí.

 

Me desculpa cara, fiquei sem internet

Muito obrigado, está funcionando!

Estou te dando 5 reps aqui!!!

 

Queria outra ajuda sua, se não for muito!

8306 é a pedra que você me ajudou a quando errar quebrar o item

Queria arrumar a pedra VIP do meu OT

Seria a 8300, quando erra-se com ela não quebra-se o item (com a 8300) volta-se pro nivel 0 de refinamento, como se nunca tive-se refinado a arma, mas não destrui-se

Link para o comentário
Compartilhar em outros sites

Claro, e vai ter q trocar a parte

doRemoveItem(item.uid, 1)

 

Pela função que zera o item, mas eu sou burro e não sei por isso peço ajuda de qm tem um olhar melhor pra script

Link para o comentário
Compartilhar em outros sites

 

 

--[[
 
        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 item.itemid == 8300 then
            if self.item.level > 0 then
                self:setItemName(self:getItemName():gsub("%+(%d+)", ""))
                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, getItemAttribute(self.item.uid, key) - self.item.level * value)
                    end
                end
            end
        else
            doRemoveItem(self.item.uid, 1)
        end
        doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, item.itemid == 8300 and "Your item level has been reseted." or "You have broken your item while trying to upgrade it.")
    end
end

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

brother só ficou com um pequeno bugzinho

21:27 You see a thaian sword                            +6 (Atk:52, Def:35).
It weighs 61.00 oz.
ItemID: [7391].
Position: [X: 982] [Y: 1013] [Z: 7].

Quando reseta não volta os espaços ai dps fica varios espaços

Sabe arrumar?


Pls galera, me ajudem a arrumar esses espaços!


Pls galera, me ajudem a arrumar esses espaços!


UP!

Editado por maikons
Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...