Postado Junho 16, 2018 6 anos Bom dia galerinha do tk coloquei um script de Dodge em items que achei aki no tk no meu otserv Ate ai tudo bem mas quando eu add os dodge no item fica dando erro quando o player loga e desloga com o dodge no set ItemAttribute::serialize]: Invalid data type. 0:37 You see a Extreme Mage Cape (Arm:350, magic level +10, protection all +4%). It can only be wielded properly by master sorcerers, elder druids, zedeky winzards, new zedeky sorcs, elite zedeky sorcs, zedeky darks, new zedeky druids, elite zedeky druids, ultimate zedeky sorcs and ultimate zedeky druids. It weighs 18.00 oz.[Dodge: 10%] ItemID: [12672]. alguem pode ajudar corrigir esse erro?? script actions local function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end local function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end local t = { [8303] = 50, -- [ItemID] = Porcentagem [12672] = 10 } local remove_item = TRUE -- Remover o item ao usar se sim coloque TRUE se não FALSE function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = getCreaturePosition(cid) if t[itemEx.itemid] then local get_Item = t[itemEx.itemid] if getItemDodgePercent(itemEx.uid) == get_Item then doPlayerSendTextMessage(cid, 27, "Esse item já foi refinado") doSendMagicEffect(pos, 2) return false else setItemDodgePercent(itemEx.uid, get_Item) doPlayerSendTextMessage(cid, 27, "Sucesso!") doSendMagicEffect(pos, 9) if remove_item == TRUE then doRemoveItem(item.uid, 1) return true end return true end else doPlayerSendTextMessage(cid, 27, "Esse item não pode ser refinado") doSendMagicEffect(pos, 2) return false end return true end script mod <?xml version="1.0" encoding="UTF-8"?> <mod name="Dodge System" version="0.1" author="Night Wolf" contact="" enabled="yes"> <event type="login" name="registerDodge" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid,"dodge") return true end ]]></event> <event type="statschange" name="dodge" event="script"><![CDATA[ function onStatsChange(cid, attacker, type, combat, value) if (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and isCreature(attacker) then local max = 50 local slotPos = {1,2,3,4,5,6,7,8,9} local percent = 0.5 local dodgePercent = 0 for i = 1, #slotPos do if getPlayerSlotItem(cid, slotPos).uid > 1 then if getItemDodgePercent(getPlayerSlotItem(cid, slotPos).uid) then dodgePercent = dodgePercent + getItemDodgePercent(getPlayerSlotItem(cid, slotPos).uid) end end end if dodgePercent >= max then dodgePercent = max end if dodgePercent >= math.random (0,100) then value = math.ceil(value*(percent)) doTargetCombatHealth(attacker, cid, combat, -value, -value, 255) doSendAnimatedText(getCreaturePos(cid), "DODGE", 6) return false end end return true end]]></event> </mod> script libs function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Editado Junho 16, 2018 6 anos por mullino (veja o histórico de edições)
Postado Dezembro 30, 2018 6 anos Erro similar comigo... mais eu uso o script original do post do @xWhiteWolf Ao deslogar com o player... [ItemAttribute::serialize]: Invalid data type. E ao logar... [Warning - IOLoginData::loadItems] Unserialize error for item with id (qualquer equip) Somente dá erro no nome do item +1, +2, etc... Os valores da descrição da porcentagem do Dodge são mantidos perfeitamente...
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.