454077 0 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 (editado) Quero Um Script QUe Não Dá fALHA Ao refinar o item pra +1 + 2 +3 ;; etc e que da pra ir ate +10 vlw galera .. feliz ano novo pra todos !!!! Editado Janeiro 16, 2010 por AndreyVital Link para o comentário https://xtibia.com/forum/topic/126910-ajuda-com-sistema-de-refinamento/ Compartilhar em outros sites More sharing options...
Killua 389 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 (editado) Legal, finalmente pedido que posso entregar Script em data/actions/scrips local gain = {gainArmor='&p+1',loseArmor='&p-1', gainShield='&s+#',loseShield='&s-(#+1)', gainAttack='&a+#+1',loseAttack='&a-(#+1)-1', gainDefense='&d+#+2',loseDefense='&d-(#+1)-2', 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 function isArmor(uid) uid = uid or 0 if getItemArmor(uid) > 0 and getItemAttack(uid) == 0 and getItemDefense(uid) == 0 and getItemWeaponType(uid) == 0 then return TRUE end return FALSE end function isWeapon(uid) 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) uid = uid or 0 if getItemWeaponType(uid) == 4 then return TRUE end return FALSE end function getWeaponLevel(uid) uid = uid or 0 local name = getItemName(uid) local _,_,lvl = string.find(name,'+(%d)') return tonumber(lvl) or 0 end function doTransform(s,uid) local c = string.gsub(s,'@',gain.maxlvl) local c = string.gsub(c,'&a',getItemAttack(uid)) local c = string.gsub(c,'&d',getItemDefense(uid)) local c = string.gsub(c,'&s',getItemDefense(uid)) local c = string.gsub(c,'&p',getItemArmor(uid)) local c = string.gsub(c,'#',getWeaponLevel(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.uid) == 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.uid) if chance >= math.random(0,100) or item.actionid >= 1000 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.uid) == TRUE then local get = doTransform(gain.gainArmor,itemEx.uid) setItemArmor(itemEx.uid,get) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx.uid)) setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx.uid)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx.uid)) 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.uid) == TRUE then setItemArmor(itemEx.uid,doTransform(gain.loseArmor,itemEx.uid)) elseif isWeapon(itemEx.uid) == TRUE then setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx.uid)) setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx.uid)) elseif isShield(itemEx.uid) == TRUE then setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx.uid)) end end doSendMagicEffect(toPosition, 9) end doRemoveItem(item.uid,1) return TRUE end e em data/actions/actions.xml <action itemid="8306" script="other/upgrade.lua"/> Lembrando que o Script não é meu. O criador foi o Mock Espero ter ajudado! Se gostou use minha fan bar hehe Editado Janeiro 16, 2010 por amoeba13 Link para o comentário https://xtibia.com/forum/topic/126910-ajuda-com-sistema-de-refinamento/#findComment-839483 Compartilhar em outros sites More sharing options...
Fronick 11 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 esse script,da pra refinar todos os itens? Link para o comentário https://xtibia.com/forum/topic/126910-ajuda-com-sistema-de-refinamento/#findComment-839485 Compartilhar em outros sites More sharing options...
Killua 389 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 esse script,da pra refinar todos os itens? Sim, pelo menos deve ;D Link para o comentário https://xtibia.com/forum/topic/126910-ajuda-com-sistema-de-refinamento/#findComment-839486 Compartilhar em outros sites More sharing options...
Fronick 11 Postado Janeiro 16, 2010 Share Postado Janeiro 16, 2010 ok,vlws Link para o comentário https://xtibia.com/forum/topic/126910-ajuda-com-sistema-de-refinamento/#findComment-839487 Compartilhar em outros sites More sharing options...
Posts Recomendados