Ir para conteúdo

Omega

Marquês
  • Total de itens

    1165
  • Registro em

  • Última visita

  • Dias Ganhos

    13

Posts postados por Omega

  1. 2 horas atrás, Frenvius disse:

    então cara, o estado do forum ta bem critico, eu to cuidando disso primeiro, pra dps pensar em expandir a comunidade, pq no próprio fórum n ta mto boa :/

     

    Que pena, cara, de verdade ;(:

    O que está acontecendo dessa vez?

  2. 6 horas atrás, Poccnn disse:

    Ainda bem que existe uma coisa chamada liberdade de expressão.

    Apenas faço uso do meu direito.

    Ria a vontade enquanto pode, pois não há ressureição. Deus está morto.

    images (3).jpg

    Viu que treta fácil? Imagina se aparece alguém com a paciência pra tretar de volta? Foi exatamente isso que eu quis dizer: que nas boas épocas desse fórum (e na boa época de Tibia), eu poderia vir aqui e rir da treta idiota que isso iria gerar.

    Infelizmente, não tenho mais idade nem paciência pra tretar com isso eu mesmo ;(:

     

    PS.: Se achar diferentão por ser ateu em 2017 é complicado.

  3. Na verdade, é algo simples de se pensar. Não existe SEGREDO além disso.

    "Gentileza gera gentileza, violência gera violência."

     

    Eu, CIDADÃO, não tenho nenhuma culpa pela marginalidade de ninguém.

    Estudei em escola militar maior parte de minha vida, tive exemplos de uma boa educação dentro e fora da escola e por isso não sou marginal.

     

    CADEIA não resolve, mas provavelmente vai deixar a rua, meu bairro, minha cidade e meu país mais seguro.

    Hoje em dia tenho hora pra voltar pra casa pra não ser assaltado. Meu empreendimento é bancário, e precisa de segurança pra quem trabalha e pra quem toma o serviço (clientes).

    Discordo de você. Eu acho que temos culpa, sim. Temos culpa por omissão. Acho que toda vez que a gente se contenta com uma situação terrível (como nosso sistema carcerário) em vez de procurar soluções ou cobrar soluções do governo, somos culpados por omissão. É muito fácil você olhar pra um pivete de 16 anos que te assaltou e querer que ele vá pra cadeia, mas eu acho que isso é covardia.

    E antes que venham falar mais besteira, eu já fui assaltado 4 vezes e, em uma delas, tomei um soco na cara de um garoto com metade da minha altura. Não culpo eles, não quero que eles morram nem que percam suas vidas inutilmente na cadeia. Quero que o governo se responsabilize por eles e acho que toda vez que eu ignoro a quantidade de garotos pedindo esmola nas ruas do Rio, eu também sou culpado pela situação. Seguindo o pensamento do profeta gentileza: todo mundo sabe que jogar na cadeia um adolescente de 16 anos que não teve nenhuma oportunidade, nenhum exemplo, nenhuma orientação é uma violência estúpida. Quanta violência isso vai gerar?

    Voltar pra casa sem ser assaltado é um direito, sim. Eu detesto o Rio de Janeiro porque toda vez que eu vou sair de casa, penso que posso ser assaltado. Mesmo assim, acho que querer trancar alguém assim na cadeia ainda mais cedo é egoísmo.

    Afinal, se eu estivesse na situação deles, vivendo uma vida com raríssimas oportunidades, com pais ausentes e violentos, com toda a sociedade me olhando feio, eu acho que acharia bem fácil justificar roubar de algum rapaz de classe média andando tranquilo com um sorriso no rosto. Acho que eu faria isso e acharia certo. E acho que se fosse o caso, eu gostaria que alguém me desse uma chance de não apodrecer num sistema carcerário tão fodido quanto o nosso.

  4. É, esqueci de um 'pequeno' detalhe fundamental

     

     

    local tpId = 1387
    local tps = {
    	--[[ 
    	["nome do monstro (letras minúsculas)"] = {pos = {posição da criação do tp}, 
    		toPos = {para onde o tp irá levar}, time = tempo para o tp sumir, 
    		killAmount = quantos montros deve matar, str = número aleatório para storage}	]]
        ["orshabaal"] = {pos = {x=761, y=57, z=7}, toPos = {x=767, y=52, z=7}, time = 30, killAmount = 5, str = 10629},
    }
    
    function removeTp(tp)
        local t = getTileItemById(tp.pos, tpId)
        if t then
            doRemoveItem(t.uid, 1)
            doSendMagicEffect(tp.pos, CONST_ME_POFF)
        end
    end
    
    function onDeath(cid)
        local tp = tps[getCreatureName(cid):lower()]
    	if not tp then
    		return true
    	end
        if getGlobalStorageValue(tp.str) + 2 >= tp.killAmount then
            doCreateTeleport(tpId, tp.toPos, tp.pos)
            doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
            addEvent(removeTp, tp.time * 1000, tp)
    		setGlobalStorageValue(tp.str, -1)
    	else
    		setGlobalStorageValue(tp.str, getGlobalStorageValue(tp.str) + 1)
        end
        return true
    end 

     

     

    Engraçado que minha identação tá saindo destorcida...

  5. Tentei aqui, mas não testei:

     

     

    local tpId = 1387
    local tps = {
    	--[[ 
    	["nome do monstro (letras minúsculas)"] = {pos = {posição da criação do tp}, 
    		toPos = {para onde o tp irá levar}, time = tempo para o tp sumir, 
    		killAmount = quantos montros deve matar, str = número aleatório para storage}	]]
        ["orshabaal"] = {pos = {x=761, y=57, z=7}, toPos = {x=767, y=52, z=7}, time = 30, killAmount = 5, str = 10629},
    }
    
    function removeTp(tp)
        local t = getTileItemById(tp.pos, tpId)
        if t then
            doRemoveItem(t.uid, 1)
            doSendMagicEffect(tp.pos, CONST_ME_POFF)
        end
    end
    
    function onDeath(cid)
        local tp = tps[getCreatureName(cid):lower()]
    	if not tp then
    		return true
    	end
        if getGlobalStorageValue(tp.str) + 1 >= tp.killAmount then
            doCreateTeleport(tpId, tp.toPos, tp.pos)
            doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
            addEvent(removeTp, tp.time * 1000, tp)
    		setGlobalStorageValue(tp.str, -1)
        end
        return true
    end
    

     

     

    Só fiz algumas alterações no script do Fawz.

  6.  

    Não sei se vai funcionar.

    local tpId = 1387
    local tps = {
        ["Orshabaal"] = {pos = {x=761, y=57, z=7}, toPos = {x=767, y=52, z=7}, time = 30},
    }
    
    function removeTp(tp)
        local t = getTileItemById(tp.pos, tpId)
        if t then
            doRemoveItem(t.uid, 1)
            doSendMagicEffect(tp.pos, CONST_ME_POFF)
        end
    end
    
    function onDeath(cid)
        local tp = tps[getCreatureName(cid)]
        local x = 5 -- qtd de monstros que tem que matar.
        if tp >= x then
            doCreateTeleport(tpId, tp.toPos, tp.pos)
            doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1)
            addEvent(removeTp, tp.time*1000, tp)
        end
        return TRUE
    end
    

     

    Espero que você esteja aberto a críticas construtivas, Fawz:

    • Um possível bug fácil de evitar é que existe variação nos servidores do nome começar com letra maiúscula ou não. O ideal é orientar o usuário a colocar todos os nomes em letras minúsculas e usar getCreatureName(cid):lower() que converte a string para letras minúsculas, facilitando a comparação
    • Quando você faz tp >= x vai dar problema, porque tp é uma tabela e não pode ser comparado dessa forma com um número. Você precisa criar alguma forma de contagem e depois resetá-la quando o contador chegar em x. Aconselho usar global storage (getGlobalStorageValue(str) e setGlobalStorageValue(str, num))
    • Por último e menos importante, true possui valor verdadeiro padrão em Lua, enquanto TRUE surgiu de algum lugar nos scripts e parece mais legal, então usam porque tem uma gambiarra que faz com que funcione. Moral da história: utilize true em vez de TRUE.
  7. Dota mesmo? Ou Dota 2? Gosto do primeiro mas posso tentar o 2.

     

    Hahaha dinossauro do cacete. DotA 2 mesmo. Meu nick é Vendetta

    Eu o/, mas infelizmente me mudei e agora to com uma net mt zuada, e pior que nem baixei o reborn ainda kkk, jogo a uns 3 anos mas ainda sou lvl 35 kk (mais da metade desse tempo fiquei com net zuada tb jogando contra bots e pvts com os amigos) jogava de earth spirit, ember spirit, storm, meepo, rubick, abaddon sao os meus favoritos, mas tb jogo com o resto, so não jogo com aquela vontade >:)

     

    Opa, adicionei ae pra gente jogar, então. Tá com qual MMR?

  8. É muita ilusão achar que diminuir a maioridade penal vai diminuir a violência. Nossos sistemas carcerário e jurídico são horríveis, não vai mudar nada jogar um adolescente na cadeia, só causar mais revolta e, quando ele sair, vai reincidir pior ainda. Pra mim isso é só uma reação exagerada ao que o noticiário mostra, mas que, na prática, não vai mudar nada, e é só pra fingir que estão resolvendo alguma coisa.

  9. Pelo que eu entendi do script do Rigby, sempre que você usar o item de virar vip sua vida vai aumentar, podendo usá-lo indefinidamente. Além disso, ele não contabiliza a vida adicional que você vai ganhar nem tira a vida extra quando você deixa de ser VIP.

  10. Eu tive uma ideia de como fazer, mas tá bem complicado. Se ninguém conseguir fazer de um jeito melhor, eu tento aqui.

    Tô considerando mudar o hpmax direto na db e atualizar a cada login, mas é muito propício a bugs...

  11.  

     

    -- config by uotl£
    -- distancia contando os quadros no chao ate chegar a parede resumo tamanho do raio
    -- lado_raio 1 ->> 2 <<-- 3 / \  4  |
    --                           |     \ /   effect = efeito pos = posição dano = porcentagem do dano
    local config = {
        {effect = 15,pos = {x = 1091, y = 997, z = 7},distancia = 3,dano = 100,lado_raio = 1},
        {effect = 15,pos = {x = 1091, y = 970, z = 7},distancia = 3,dano = 100,lado_raio = 1},
        {effect = 15,pos = {x = 1091, y = 979, z = 7},distancia = 3,dano = 100,lado_raio = 1},
        {effect = 15,pos = {x = 1084, y = 988, z = 7},distancia = 3,dano = 100,lado_raio = 4},
    }
    -- config by uotl£
    function onThink(cid, interval, lastExecution)
        atirador ()
        return true
    end
    
    
    function atirador ()
        for sinal, valor in pairs(config) do
            for i = 1,valor.distancia do
                if valor.lado_raio == 1 then
                    doSendMagicEffect({x = valor.pos.x+i, y = valor.pos.y, z = valor.pos.z},valor.effect)
                    check = {x = valor.pos.x+i, y = valor.pos.y, z = valor.pos.z,stackpos=255}
                elseif valor.lado_raio == 2 then
                    doSendMagicEffect({x = valor.pos.x-i, y = valor.pos.y, z = valor.pos.z},valor.effect)
                    check = {x = valor.pos.x-i, y = valor.pos.y, z = valor.pos.z,stackpos=255}
                elseif valor.lado_raio == 3 then
                    doSendMagicEffect({x = valor.pos.x, y = valor.pos.y-i, z = valor.pos.z},valor.effect)
                    check = {x = valor.pos.x, y = valor.pos.y-i, z = valor.pos.z,stackpos=255}
                elseif valor.lado_raio == 4 then
                    doSendMagicEffect({x = valor.pos.x, y = valor.pos.y+i, z = valor.pos.z},valor.effect)
                    check = {x = valor.pos.x, y = valor.pos.y+i, z = valor.pos.z,stackpos=255}
                end
                tmp = getThingFromPos(check)
                if(tmp.uid ~= 0) then
                    if isCreature(tmp.uid) then -- se quer que attack os bichos usa esse "if isCreature(tmp.uid) then"
                        p = (getCreatureMaxHealth(tmp.uid)/100)*valor.dano
                        doCreatureAddHealth(tmp.uid, -p)
                        doSendAnimatedText(getCreaturePosition(tmp.uid), math.ceil (p),145)
                    end
                end
            end
        end
    end 

     

     

     

    Tem até dizendo como fazer no próprio código:
    se quer que attack os bichos usa esse "if isCreature(tmp.uid) then"

  12.  

    deu sim consegui fazer aparecer em laranja :D

     

    e preciso de mais uma ajuda com minha vip tentei manda msg privada pra vc mais não deu intão vo usa o topico aki mesmo

    o seguinte

    meu vip é por storage 13540 tem como fazer um script pra aumentar 10% de vida e mana do player que for vip e depois que a vip acabar esse acressimo na vida e na mana volte ao normal

     

    Isso é bem mais complicado do que parece, mas acho que dá pra fazer. Cria outro tópico explicando direitinho, já que esse já foi movido. E me passa o tópico do seu sistema VIP.

  13. Tenta isso aqui. Basta configurar em prize_id o item que você quer que o jogador receba.

     

     

    local prize_id = 1234 -- id do item que vai ganhar
    
    local focus = 0
    local max_distance = 8
    local talk_start = 0
    local conv = 0
    local fighting = false
    local challenger = 0
    local afk_limit_time = 30	-- seconds
    local afk_time = 0		-- don't change
    local battle_turn = 1		-- don't change
    local challenger_turn = 0	-- don't change
    
    local pokemons = {
    {name = "Clone Blastoise", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
    {name = "Clone Charizard", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
    {name = "Clone Gengar", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
    {name = "Clone Venusaur", optionalLevel = 100, sex = SEX_MALE, nick = "", ball = "super"},
    }
    
    local function doSummonGymPokemon(npc)
    	local this = npc
    	if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
    	local it = pokemons[battle_turn]
    	doSummonMonster(this, it.name)
    	local summon = getCreatureSummons(this)[1]
    	local balleffect = pokeballs["normal"].effect
    		if it.ball and pokeballs[it.ball] then
    			balleffect = pokeballs[it.ball].effect
    		end
    	doSendMagicEffect(getThingPos(summon), balleffect)
    	setPlayerStorageValue(summon, 10000, balleffect)
    	setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
    	setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
    	doSetMonsterGym(summon, focus)
    	addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
    	local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
    	doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
    	fighting = true
    	battle_turn = battle_turn + 1
    end
    
    local function doWinDuel(cid, npc)
    	if not isCreature(cid) then return true end
    	doPlayerAddItem(cid, prize_id, 1)
    	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(prize_id).." as a prize.", 1)
    end
    
    function onCreatureSay(cid, type, msg)
    
    	local msg = string.lower(msg)
    
    	if focus == cid then
    		talk_start = os.clock()
    	end
    
    	if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
    		focus = cid
    		talk_start = os.clock()
    		conv = 1
    		selfSay("Olhe so "..getCreatureName(cid)..", mais um viajante fracassado,voce veio aqui por vontade propria,mais para sair sera obrigado a seguir minhas regras,diga {duel} para acabarmos logo com isso")
    	return true
    	end
    
    	if isDuelMsg(msg) and conv == 1 and focus == cid then
    
    		--if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
    		--	selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
    		--	focus = 0
    		--return true
    		--end
    
    		if not hasPokemon(cid) then
    			selfSay("Solte seu pokemon para comecarmos a batalha.")
    		return true
    		end
    
    		selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")
    		conv = 2
    
    	return true
    	end
    
    	if isConfirmMsg(msg) and conv == 2 and focus == cid then
    
    		challenger = focus
    		setPlayerStorageValue(cid, 990, 1)
    		selfSay("Yea, let's fight!")
    		talk_start = os.clock()
    		addEvent(doSummonGymPokemon, 850, getThis())
    		conv = 3
    
    	return true
    	end
    
    	if isNegMsg(msg) and conv == 2 and focus == cid then
    
    		focus = 0
    		selfSay("Era melhor sevoce tivesse ficado fora do meu caminho!")
    
    	return true
    	end
    
    	if msgcontains(msg, 'bye') and focus == cid then
    		selfSay('Bye and do your best trainer!')
    		setPlayerStorageValue(focus, 990, -1)
    		focus = 0
    	return true
    	end
    end
    
    local afk_warning = false
    
    function onThink()
    
    	--doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)
    
    	if focus == 0 then
    		selfTurn(2)
    		fighting = false
    		challenger = 0
    		challenger_turn = 0
    		battle_turn = 1
    		afk_time = 0
    		afk_warning = false
    
    		if #getCreatureSummons(getThis()) >= 1 then
    			setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
    			doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
    		end
    
    	return true
    	else
    
    	if not isCreature(focus) then
    		focus = 0
    	return true
    	end
    
    	if fighting then
    
    		talk_start = os.clock()
    
    		if not isCreature(getCreatureTarget(getThis())) then
    			if #getCreatureSummons(challenger) >= 1 then
    				if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
    				  selfAttackCreature(getCreatureSummons(challenger)[1])
    				  challenger_turn = challenger_turn + 1
    				  afk_time = 0
    	            end
    			else
    				afk_time = afk_time + 0.5
    			end
    		end
    
    		if afk_time > afk_limit_time then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Fraco!Ja esperava isso de viajantes desse tipo!")
    		return true
    		end
    
    		if not afk_warning and afk_time > afk_limit_time / 2 then
    			selfSay("Where's your pokemon? Let's fight!")
    			afk_warning = true
    		end
    
    
    		if #getCreatureSummons(getThis()) == 0 then
    			if battle_turn > #pokemons then
    				addEvent(doWinDuel, 1000, focus, getThis())
    				setPlayerStorageValue(focus, 990, -1)
    				focus = 0
    			return true
    			end
    			addEvent(doSummonGymPokemon, 1000, getThis())
    		end
    
    		if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
    			selfSay("You lost our duel! Maybe some other time you'll defeat me.")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    	end
    
    		local npcpos = getThingPos(getThis())
    		local focpos = getThingPos(focus)
    
    		if npcpos.z ~= focpos.z then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Bye then.")
    		return true
    		end
    
    		if (os.clock() - talk_start) > 30 then
    			selfSay("Good bye and keep training!")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		end
    
    		if getDistanceToCreature(focus) > max_distance then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    		local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))	
    		selfTurn(dir)
    	end
    return true
    end 

     

     

  14. esse comando não deu certo doPlayerSendMessage(cid, MESSAGE_EVENT_ORANGE, "O evento double xp esta ativado! Aproveite!") deu erro e o player não logava com o evento aberto

     

    troquei por esse e deu doPlayerSendTextMessage(cid,19,"O evento double xp esta ativado! Aproveite!")

     

     

    Vlw pela ajuda

     

    Opa, disponha e que bom que você conseguiu consertar. Espero que tenha conseguido manter a mensagem laranja, afinal.

  15. function onLogin(cid)
    	if getGlobalStorageValue(102590) > 0 then
    		doPlayerSendMessage(cid, MESSAGE_EVENT_ORANGE, "O evento double xp esta ativado! Aproveite!")
    	end
    	return true
    end
    

    Salva na pasta creaturescripts/scripts como doublexplogin.lua e registra no creaturescripts.xml

     

    <event type="login" name="Double Xp Login" event="script" value="doublexplogin.lua"/>
    
  16.  

     

    --[[
    
    	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í.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...