Doidin 275 Postado Abril 8, 2010 Share Postado Abril 8, 2010 Sistema de Refinamento Perfeito! Olá pessoal estava andando pelo Otland e me deparei com este script, porem ele está atualizado e os créditos vão inteiramente para o Mock, criador do mesmo. Este script funciona da seguinte maneira é uma pedra preciosa (o script) e quando você usa ela em alguma arma ela adiciona alguns pontos de ataque e defesa a mais durante algum tempo e depois volta ao normal. Vamos ao que interessa: Formulario: Autor: Mock. Servidor testado: TFS 0.3.6 Versão: 1.1 Vá ate data/actions/actions.xml e adicione essa tag: <action itemid="8306" script="upgrade.lua"/> Depois salve e vá na pasta scripts e crie o upgrade.lua e dentro dele coloque isto: --- Perfect refine system by Mock the bear (MTB). --- Email: [email]mock_#####@hotmail.com[/email] local gain = { gainArmor='&p+1',loseArmor='&p-1', gainShield='&s+#',loseShield='&s-(#+1)', gainAttack='&a+(2*(#))',loseAttack='&a-(2*(#+1))', gainDefense='&d+(2*(#))',loseDefense='&d-(2*(#+1))', chance='100/((#*(1/(@/2)))*(@/2))', -- Eu fiz essa equação para variar de +0 a +7 o item --- Essa equação deve retornar em % a chance do item se refinar (0-100) 100 = sempre, 0 = nunca maxlvl = 7, blocked_ids = {2488,8881} } -- &a = weapon attack -- &d = weapon defense -- &s = shield defense -- &p = armor defense -- # = nivel do item -- @ = max level if not setItemName then function setItemName(uid,name) return doItemSetAttribute(uid,'name',name) end function setItemArmor(uid,name) return doItemSetAttribute(uid,'armor',name) end function setItemDefense(uid,name) return doItemSetAttribute(uid,'defense',name) end function setItemAttack(uid,name) return doItemSetAttribute(uid,'attack',name) end function getItemAttack(uid) return getItemAttribute(uid,'attack') end function getItemDefense(uid) return getItemAttribute(uid,'defense') end function getItemArmor(uid) if type(uid) == 'number' then return getItemAttribute(uid,'armor') else return getItemInfo(uid.itemid).armor end end end function isArmor(uid) -- Function by Mock the bear. if (getItemArmor(uid) and getItemArmor(uid) ~= 0 and not getItemInfo(uid.itemid,'attack') and not getItemInfo(uid.itemid,'defense') and getItemWeaponType(uid.uid) == 0) then return true end return false end function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return TRUE end return FALSE end function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return TRUE end return FALSE end function getWeaponLevel(uid) -- Function by Mock the bear. uid = uid or 0 local name = getItemName(uid) local lvl = string.match(name,'+(%d)') return tonumber(lvl) or 0 end function doTransform(s,i) -- Function by Mock the bear. local c = string.gsub(s,'@',gain.maxlvl) local c = string.gsub(c,'&a',getItemAttack(i.uid) or getItemInfo(i.itemid).attack) local c = string.gsub(c,'&d',getItemDefense(i.uid) or getItemInfo(i.itemid).defense) local c = string.gsub(c,'&s',getItemDefense(i.uid) or getItemInfo(i.itemid).defense) local c = string.gsub(c,'&p',getItemArmor(i.uid) or getItemInfo(i.itemid).armor) local c = string.gsub(c,'#',getWeaponLevel(i.uid)) local q,err = loadstring('return '..c) assert(q,err) return assert(q()) end function onUse(cid, item, fromPosition, itemEx, toPosition) toPosition.stackpos = 255 if isInArray(gain.blocked_ids, itemEx.itemid) == TRUE or getItemWeaponType(itemEx.uid) > 4 or (getItemWeaponType(itemEx.uid) == 0 and isArmor(itemEx) == FALSE) or itemEx.itemid == 0 then doPlayerSendTextMessage(cid, 24,"You cant refine this item.") return TRUE end if isCreature(itemEx.uid) == TRUE then return FALSE end local level = getWeaponLevel(itemEx.uid) local chance = doTransform(gain.chance,itemEx) if chance >= math.random(0,100) or item.actionid >= 1000 or (item.actionid == 500 and math.random(0,100) <= 25) then if level+1 > gain.maxlvl then doSendMagicEffect(toPosition, 2) return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.") else setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1)) doPlayerSendTextMessage(cid, 24,"Your item has been upgrated to +"..(level+1)..".") doSendMagicEffect(toPosition, 12) if isArmor(itemEx) == TRUE then local get = doTransform(gain.gainArmor,itemEx) setItemArmor(itemEx.uid,get) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx)) setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx)) end end else if level == 0 then doPlayerSendTextMessage(cid, 24,"No effect.") doSendMagicEffect(toPosition, 2) elseif level == gain.maxlvl then doSendMagicEffect(toPosition, 2) return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.") elseif level > 0 then if level == 1 then setItemName(itemEx.uid, getItemNameById(itemEx.itemid)) doPlayerSendTextMessage(cid, 24,"Your item back to normal.") else setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)) doPlayerSendTextMessage(cid, 24,"Your item back to +"..(level-1)..".") end if isArmor(itemEx) == TRUE then setItemArmor(itemEx.uid,doTransform(gain.loseArmor ,itemEx)) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx)) setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx)) end end doSendMagicEffect(toPosition, 9) end doRemoveItem(item.uid,1) return TRUE end Pronto seu server já possui o sistema de refinamento. Basta pegar o item 8306 dar usewith nele em uma arma, armor, shield e pronto! O item irá subir de nivel melhorando seu status, caso você ponha actionid 1000 no item 8306 a chance de falha será 0 ou seja sempre funcionará! Observe a imagem: Link para o comentário Compartilhar em outros sites More sharing options...
satan666 12 Postado Abril 8, 2010 Share Postado Abril 8, 2010 cara porque tu não pesquisa logo no fórum se existe um tópico com isso antes de postar? http://www.xtibia.com/forum/topic/120698-action-sistema-de-refinamento-perfeito/page__p__794100__hl__sistema%20de%20refinamento__fromsearch__1entry794100 reportado pra fecharem esse. Link para o comentário Compartilhar em outros sites More sharing options...
Henrique Moura 193 Postado Abril 27, 2010 Share Postado Abril 27, 2010 Tópico reaberto, já que este sistema está atualizado. Abraços. Link para o comentário Compartilhar em outros sites More sharing options...
Rocky 0 Postado Abril 27, 2010 Share Postado Abril 27, 2010 [27/04/2010 17:13:47] Lua Script Error: [Action Interface] [27/04/2010 17:13:47] data/actions/scripts/upgrade.lua:onUse [27/04/2010 17:13:48] luaGetItemArmor(). Item not found Toda vez que uso o item no objeto aparece esse erro no tfs.exe Att Link para o comentário Compartilhar em outros sites More sharing options...
matheus1000 11 Postado Maio 19, 2010 Share Postado Maio 19, 2010 Ótimo, parabéns Mock meu ursão. Já botei no meu Ot Link para o comentário Compartilhar em outros sites More sharing options...
mapperneto 4 Postado Julho 23, 2010 Share Postado Julho 23, 2010 acho que esse topico tem que ser explicado melhor o script é meio grande e um pouco dificiu de ser compreendido mais foi inovador Link para o comentário Compartilhar em outros sites More sharing options...
biielgr 0 Postado Julho 31, 2010 Share Postado Julho 31, 2010 Sistema muuuuuito interessante , que existe em outros RPG e falta no Tibia Só tenho uma duvida , os pontos adicionados no item são permanentes , ou os pontos voltam ao normal depois de algum tempo ? Se fossem permanentes seria muito bom , a venda de itens seria muito mais interessante , aquela coisa de preço fixo para itens iria desaparecer , cada player teria um item melhor que o item do outro , e poderia colocar seu proprio preço em seu item. Muito Bom ! Doidin admiro muito seu trabalho aqui no Xtibia , sempre com boas ideias. Link para o comentário Compartilhar em outros sites More sharing options...
Vodkart 1514 Postado Julho 31, 2010 Share Postado Julho 31, 2010 o upgrade da arma fica permanente. só que algumas armas não dá para dar upgrade. Link para o comentário Compartilhar em outros sites More sharing options...
biielgr 0 Postado Agosto 1, 2010 Share Postado Agosto 1, 2010 Muito obrigado Vodkart , ja adicionei o sistema em meu OT , e esta funcionando perfeitamente. Link para o comentário Compartilhar em outros sites More sharing options...
mapperneto 4 Postado Agosto 1, 2010 Share Postado Agosto 1, 2010 Achei que o topico esta mal explicado,tenta melhorar a explicação e da um tutorial de como editar,coisas basica do tipo quanto vai almentar etc Link para o comentário Compartilhar em outros sites More sharing options...
biielgr 0 Postado Agosto 4, 2010 Share Postado Agosto 4, 2010 tenho uma duvida , como coloco para sempre dar certo ? Link para o comentário Compartilhar em outros sites More sharing options...
nailannob 6 Postado Agosto 10, 2010 Share Postado Agosto 10, 2010 Muito bom. REP + Só uma dúvida: Não tem como refinar Weapontype = Distance ? Não dá pra colocar no script ? Falow, aguardo reposta. Link para o comentário Compartilhar em outros sites More sharing options...
felipejc12 0 Postado Outubro 16, 2010 Share Postado Outubro 16, 2010 Olha eu tive em mente um script com o refinador mais não consegui de maneira alguma fase-lo,funcionaria assim: você adiciona no seu item,quando ele chega no +7 você ao usar o item fica com um brilho,que seria do item 6491,igual a alguns tipos de RPG famosos como MU que ao adicionar em um certo nivel ao usar o item você brilha.Então caso você esteja interessado a criar este script ou se conseguir criar me adicione msn: lucasjoaquimcardos@hotmail.com Link para o comentário Compartilhar em outros sites More sharing options...
iagsousa 15 Postado Janeiro 12, 2011 Share Postado Janeiro 12, 2011 ezcelente script porem após fazer umas modificações coloquei o Max pra 15 e pra minha surpresa ele ia +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 apó o +10 ele voltava +2 +3... ai após +10 voltava de novo, o q gerava um aging infinito, tentei colocar até +10 mas mesmo o maximo sendo +10 ele nao parava e ainda ficava infinito, queria que vc arrumasse isso pq quero muito usar o script para um ot, só q vou precisar disso até pelo menos +15 ou +20 o ideal pro meu ot seria até +15, porem em um projeto secundario de outro ot precisaria até +50 Link para o comentário Compartilhar em outros sites More sharing options...
SoulDark 0 Postado Março 5, 2011 Share Postado Março 5, 2011 O meu da o Mesmo Erro que "[27/04/2010 17:13:47] Lua Script Error: [Action Interface] [27/04/2010 17:13:47] data/actions/scripts/upgrade.lua:onUse [27/04/2010 17:13:48] luaGetItemArmor(). Item not found Toda vez que uso o item no objeto aparece esse erro no tfs.exe Att " Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados