gabriel28 60 Postado Agosto 9, 2015 Share Postado Agosto 9, 2015 O membro zipter98 fez um action de item que dar bônus de reflect ao usar em outro item, quando usado no item, fica, You see a demon helmet ref 2% (def:10). Só que, uso um sistema de upgrade item, que deixa o item +1, +2, etc... ficando You see a demon helmet +1 (def:10). Dai, quando o item já está +1 e coloco bônus de reflect, a irformação que o item está +1 some dando lugar a informação que o item está com reflect, o mesmo acontece quando o item já tem reflect e eu ponho ele +1. Dessa forma fica ruim a comercialização desses itens e terei que acabar optando por um dos dois sistemas. Gostaria de saber se tem alguém que consiga dar essa ajuda, que consiga deixar o item da seguinte forma, You see a demon helmet +1 ref 2% (def:10). Segue o script do zipter98: Action: local config = { reflectBonus = 2, --Bônus de reflect, em %. failChance = 50, --Chance de falhar, em porcentagem. types = {"armor", "legs", "helmet", "boots"}, noReflect = {1, 2, 3, 5, 6} --Tipos de armamento bloqueados (valores podem ser conferidos em 000-constant.lua, data/lib) } function onUse(cid, item, fromPos, itemEx, toPos) if itemEx.itemid < 100 then return doPlayerSendCancel(cid, "Use this in valid itens.") elseif isInArray(config.noReflect, getItemWeaponType(itemEx.uid)) then return doPlayerSendCancel(cid, "Use this in valid itens.") elseif getItemAttribute(itemEx.uid, "reflect") then return doPlayerSendCancel(cid, "This item has already a reflect bonus.") elseif math.random(1, 100) > config.failChance then return doPlayerSendTextMessage(cid, 27, "Sorry, your item didn't get a reflect bonus. Good luck at the next try! =]"), doRemoveItem(item.uid, 1) end local checkItemName for i = 1, #config.types do if getItemNameById(itemEx.itemid):find(config.types[i]) then checkItemName = true break end end if not checkItemName then return doPlayerSendCancel(cid, "Use this in valid itens.") end doPlayerSendTextMessage(cid, 27, "Congratulations, now your item has a reflect bonus of "..config.reflectBonus.."%!") doItemSetAttribute(itemEx.uid, "reflect", config.reflectBonus) doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).." ref "..config.reflectBonus.."%") doRemoveItem(item.uid, 1) return true end Creaturescript: function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isCreature(attacker) and type == STATSCHANGE_HEALTHLOSS then local bonusReflect = 0 for i = 1, 10 do local item = getPlayerSlotItem(cid, i).uid if item > 0 and getItemAttribute(item, "reflect") then bonusReflect = bonusReflect + getItemAttribute(item, "reflect") end end if bonusReflect > 0 then local damage = value * bonusReflect / 100 doSendAnimatedText(getThingPos(attacker), -damage, COLOR_RED) doCreatureAddHealth(attacker, -damage) end end return true end up Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Agosto 9, 2015 Share Postado Agosto 9, 2015 Qual seu sistema de upgrade? Link para o comentário Compartilhar em outros sites More sharing options...
gabriel28 60 Postado Agosto 9, 2015 Autor Share Postado Agosto 9, 2015 (editado) Qual seu sistema de upgrade? Uso esses dois juntos: http://www. tibiaking. com/forum/topic/11580-perfect-upgrade-system/ http://www.xtibia.com/forum/topic/230308-sdt-itens-ganhando-exp-e-upando-upgrade-system/ Também tenho o sistema de slot sistem, que funciona normal com o de upgrade, deixando o item dessa forma: You see a demon helmet +1 [hp 4%] (def: 10). Vai o script: --[[ Slot system 100% by mock \o ]] ---Config local conf = { maxSlotCount=1, ignoredIds={} } --End function choose(...) --- Function by mock. local arg = {...} return arg[math.random(1,#arg)] end if not getItemAttack then function getItemAttack(uid) return getItemAttribute(uid,'attack') end function getItemDefense(uid) return getItemAttribute(uid,'defense') end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local 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 local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5) or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx)) or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then doPlayerSendCancel(cid, "You cant open a slot on this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end local nam = getItemName(itemEx.uid) function getper() local n = 1 for i=1,10 do n = n+math.random(0,10) if n < 8*i then break end end return n end function getSlotCount(nam) local c = 0 for _ in nam:gmatch('%[(.-)%]') do c = c+1 end return c end if getSlotCount(nam) < conf.maxSlotCount then local l = choose('hp','mp','ml','cas','shield','dist') local p = getper() doSendMagicEffect(toPosition,30) nam = nam..' ['..l..'.+'..p..'%]' doItemSetAttribute(itemEx.uid,'name',nam) doRemoveItem(item.uid,1) else doPlayerSendCancel(cid, "You cant open a slot on this item.") end return true end up Editado Agosto 9, 2015 por gabrielvs Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Agosto 9, 2015 Share Postado Agosto 9, 2015 Troque: doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).." ref "..config.reflectBonus.."%") por: doItemSetAttribute(itemEx.uid, "name", getItemName(itemEx.uid).." ref "..config.reflectBonus.."%") Link para o comentário Compartilhar em outros sites More sharing options...
gabriel28 60 Postado Agosto 9, 2015 Autor Share Postado Agosto 9, 2015 (editado) Troque: doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).." ref "..config.reflectBonus.."%") por: doItemSetAttribute(itemEx.uid, "name", getItemName(itemEx.uid).." ref "..config.reflectBonus.."%") Funcionou. Quando o item ta +1, ele acrescenta o ref 2% direitinho, o problema é quando já ta com ref e poem +1, dando o mesmo problema de substituir o ref pelo +1. Mas creio que eu consiga resolver isso trocando todos os item.uid, dos script de upgrade item, por itemEx.uid . EDIT: Não deu certo. haha Editado Agosto 9, 2015 por gabrielvs Link para o comentário Compartilhar em outros sites More sharing options...
Bruno 535 Postado Agosto 25, 2015 Share Postado Agosto 25, 2015 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 More sharing options...
Posts Recomendados