Postado Setembro 24, 2015 9 anos Galera boa tarde ! Antes de tudo sei que muitos Vão fala que ja tem, que ja foi respondido uma questao assim bla bla bla, mas .. Eu nao encontrei nenhuma que tirasse a minha duvida ! Seguinte: Tentei instalar em meu servidor um sistema de Refinamento, um não, dois.. Diferentes Um de aprioramento .. +1...+2...+3.... e Assim vai e Outro que achei aqui tambem no Tibiaking Que dava alguns atributos a mais como por exemplo, +7% Hp... +7%Mana ... e assim vai Fiz o procedimentos corretos.. reiniciei o servidor... não deu nenhum erro, nenhum bug... mas dentro do jogo o item tambem não tinha função nenhuma... alguem poderia por favor me ajudar nessa questao ? Está faltando alguma coisa? Por Exemplo assim... Em data/actions/actions.xml : <action itemid="8306" script="upgrade.lua"/> Logo em seguida Criei um arquivo .lua dentro da pasta Scripts e Coloquei as seguinte informaçoes : [lua] --- Perfect refine system by Mock the bear (MTB).--- Email: [email protected]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 = nuncamaxlvl = 7,blocked_ids = {2488,8881}}-- &a = weapon attack-- &d = weapon defense-- &s = shield defense-- &p = armor defense-- # = nivel do item-- @ = max levelif not setItemName thenfunction setItemName(uid,name)return doItemSetAttribute(uid,'name',name)endfunction setItemArmor(uid,name)return doItemSetAttribute(uid,'armor',name)endfunction setItemDefense(uid,name)return doItemSetAttribute(uid,'defense',name)endfunction setItemAttack(uid,name)return doItemSetAttribute(uid,'attack',name)endfunction getItemAttack(uid)return getItemAttribute(uid,'attack')endfunction getItemDefense(uid)return getItemAttribute(uid,'defense')endfunction getItemArmor(uid)if type(uid) == 'number' thenreturn getItemAttribute(uid,'armor')elsereturn getItemInfo(uid.itemid).armorendendendfunction 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) thenreturn trueendreturn falseendfunction isWeapon(uid) -- Function by Mock the bear.uid = uid or 0local f = getItemWeaponType(uid)if f == 1 or f == 2 or f == 3 thenreturn TRUEendreturn FALSEendfunction isShield(uid) -- Function by Mock the bear.uid = uid or 0if getItemWeaponType(uid) == 4 thenreturn TRUEendreturn FALSEendfunction getWeaponLevel(uid) -- Function by Mock the bear.uid = uid or 0local name = getItemName(uid)local lvl = string.match(name,'+(%d)')return tonumber(lvl) or 0endfunction 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())endfunction onUse(cid, item, fromPosition, itemEx, toPosition)toPosition.stackpos = 255if isInArray(gain.blocked_ids, itemEx.itemid) == TRUEor getItemWeaponType(itemEx.uid) > 4or (getItemWeaponType(itemEx.uid) == 0and isArmor(itemEx) == FALSE)or itemEx.itemid == 0 thendoPlayerSendTextMessage(cid, 24,"You cant refine this item.")return TRUEendif isCreature(itemEx.uid) == TRUE thenreturn FALSEendlocal 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) thenif level+1 > gain.maxlvl thendoSendMagicEffect(toPosition, 2)return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")elsesetItemName(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 thenlocal get = doTransform(gain.gainArmor,itemEx)setItemArmor(itemEx.uid,get)elseif isWeapon(itemEx.uid) == TRUE thensetItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))elseif isShield(itemEx.uid) == TRUE thensetItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))endendelseif level == 0 thendoPlayerSendTextMessage(cid, 24,"No effect.")doSendMagicEffect(toPosition, 2)elseif level == gain.maxlvl thendoSendMagicEffect(toPosition, 2)return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")elseif level > 0 thenif level == 1 thensetItemName(itemEx.uid, getItemNameById(itemEx.itemid))doPlayerSendTextMessage(cid, 24,"Your item back to normal.")elsesetItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1))doPlayerSendTextMessage(cid, 24,"Your item back to +"..(level-1)..".")endif isArmor(itemEx) == TRUE thensetItemArmor(itemEx.uid,doTransform(gain.loseArmor ,itemEx))elseif isWeapon(itemEx.uid) == TRUE thensetItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))elseif isShield(itemEx.uid) == TRUE thensetItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))endenddoSendMagicEffect(toPosition, 9)enddoRemoveItem(item.uid,1)return TRUEend[/lua] Dentro do jogo Eu crio o item 8306 e tento utiliza-lo em varios equipamentos mas nao acontece nada, não recebo nenhuma mensagem nem nada... o que está de errada? Editado Setembro 24, 2015 9 anos por Sommer (veja o histórico de edições)
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.