SiNister 0 Postado 6 de Novembro 2023 Compartilhar Postado 6 de Novembro 2023 Olá, gostaria de pedir uma pequena ajuda para adaptar um sistema de addon para poketibia Esse sistema está funcional mas ele tem um probleminha chato que é ter que criar varios items pra cada addon. queria que apenas um unico item service pra ser aplicado em diversos pokémons de exemplo: o item sunflower addon service para (venusaur, charizard, tropius emfim..) data/lib ADDON_LIMIT = 5 --Limite de addons que um poke pode ter local ADDON_BASE_STRING = string.rep("0;", ADDON_LIMIT) --String base no formato: "0;0;0;0;0;" local function checkAddonTableConsistency(tab) if #tab < ADDON_LIMIT then --proteção para quando muda o ADDON_LIMIT for i = #tab+1, ADDON_LIMIT do tab[i] = 0 end end end function updateAddonAttr(uid, attr, value, pos) local tmp = getItemAttribute(uid, attr) or ADDON_BASE_STRING tmp = type(tmp) == "string" and tmp or ADDON_BASE_STRING local t = string.explode(tmp, ";") checkAddonTableConsistency(t) if pos > 0 and pos <= ADDON_LIMIT then t[pos] = value return doSetItemAttribute(uid, attr, table.concat(t, ";")) else return false end end function getAddonValue(uid, attr) local tmp = getItemAttribute(uid, attr) or ADDON_BASE_STRING tmp = type(tmp) == "string" and tmp or ADDON_BASE_STRING tmp = string.explode(tmp, ";") local pos = getItemAttribute(uid, "current_addon") or 0 checkAddonTableConsistency(tmp) if pos > 0 and pos <= ADDON_LIMIT then return tonumber(tmp[pos]) else return 0 end end function getAddonCount(uid) local tmp = getItemAttribute(uid, "addon") if type(tmp) ~= "string" then return 0 end local t = string.explode(tmp, ";") checkAddonTableConsistency(t) local count = 0 for _,v in ipairs(t) do if tonumber(v) ~= 0 then count = count + 1 end end return count end function getAddonTotalLook(value) local str = {} addonValue = 0 for addonList = 1, 5 do local addons = tostring(value:explode(";")[addonList]) if addons ~= '0' then addonValue = addonValue + 1 end end addonValue = addonValue == 0 and "Não possui addon." or addonValue return addonValue end data/actions local addons = { [16674] = {addon_num = 1, pokemon = "Gengar", looktype = 3000, nome = "Masked'Blue", fly = 3001, ride = 0, surf = 0}, [16675] = {addon_num = 2, pokemon = "Gengar", looktype = 3002, nome = "Space", fly = 3003, ride = 0, surf = 0}, [16676] = {addon_num = 3, pokemon = "Gengar", looktype = 3004, nome = "Style Fit", fly = 3005, ride = 0, surf = 0}, [16677] = {addon_num = 4, pokemon = "Gengar", looktype = 3006, nome = "Masked'Red", fly = 3007, ride = 0, surf = 0}, [16678] = {addon_num = 5, pokemon = "Gengar", looktype = 3008, nome = "Bunny Buny", fly = 3009, ride = 0, surf = 0}, [16679] = {addon_num = 1, pokemon = "Mega Gengar", looktype = 3010, nome = "M Masked'Blue", fly = 3011, ride = 0, surf = 0}, [16680] = {addon_num = 2, pokemon = "Mega Gengar", looktype = 3012, nome = "M Space", fly = 3013, ride = 0, surf = 0}, [16681] = {addon_num = 3, pokemon = "Mega Gengar", looktype = 3014, nome = "M Bunny Buny", fly = 3015, ride = 0, surf = 0}, [16682] = {addon_num = 4, pokemon = "Mega Gengar", looktype = 3016, nome = "M Masked'Red", fly = 3017, ride = 0, surf = 0}, [16683] = {addon_num = 1, pokemon = "Espeon", looktype = 3032, nome = "Cyber Espeon", fly = 0, ride = 0, surf = 0}, [16684] = {addon_num = 2, pokemon = "Espeon", looktype = 3053, nome = "Hallo Espeon", fly = 0, ride = 0, surf = 0}, [16685] = {addon_num = 3, pokemon = "Espeon", looktype = 3045, nome = "Akatsuki Espeon", fly = 0, ride = 0, surf = 0}, [16686] = {addon_num = 4, pokemon = "Espeon", looktype = 3051, nome = "Princess Espeon", fly = 0, ride = 0, surf = 0}, [16687] = {addon_num = 5, pokemon = "Espeon", looktype = 3057, nome = "Special Espeon", fly = 0, ride = 0, surf = 0}, [16688] = {addon_num = 1, pokemon = "Vaporeon", looktype = 3036, nome = "Cyber Vaporeon", fly = 0, ride = 0, surf = 3037}, [16689] = {addon_num = 2, pokemon = "Vaporeon", looktype = 3043, nome = "Hallo Vaporeon", fly = 0, ride = 0, surf = 3044}, [16690] = {addon_num = 3, pokemon = "Vaporeon", looktype = 3047, nome = "Beach Vaporeon", fly = 0, ride = 0, surf = 3048}, [16691] = {addon_num = 4, pokemon = "Vaporeon", looktype = 3059, nome = "Nataline Vaporeon", fly = 0, ride = 0, surf = 3060}, [16692] = {addon_num = 1, pokemon = "Flareon", looktype = 3040, nome = "Hallo Flareon", fly = 0, ride = 0, surf = 0}, [16693] = {addon_num = 2, pokemon = "Flareon", looktype = 3035, nome = "Cyber Flareon", fly = 0, ride = 0, surf = 0}, [16694] = {addon_num = 3, pokemon = "Flareon", looktype = 3049, nome = "Beach Flareon", fly = 0, ride = 0, surf = 0}, [16695] = {addon_num = 4, pokemon = "Flareon", looktype = 3061, nome = "Nataline Flareon", fly = 0, ride = 0, surf = 0}, [16696] = {addon_num = 1, pokemon = "Jolteon", looktype = 3033, nome = "Cyber Jolteon", fly = 0, ride = 0, surf = 0}, [16697] = {addon_num = 2, pokemon = "Jolteon", looktype = 3042, nome = "Hallo Jolteon", fly = 0, ride = 0, surf = 0}, [16698] = {addon_num = 3, pokemon = "Jolteon", looktype = 3050, nome = "Beach Jolteon", fly = 0, ride = 0, surf = 0}, [16699] = {addon_num = 4, pokemon = "Jolteon", looktype = 3062, nome = "Nataline Jolteon", fly = 0, ride = 0, surf = 0}, [16700] = {addon_num = 1, pokemon = "Umbreon", looktype = 3034, nome = "Cyber Umbreon", fly = 0, ride = 0, surf = 0}, [16701] = {addon_num = 2, pokemon = "Umbreon", looktype = 3058, nome = "Hallo Umbreon", fly = 0, ride = 0, surf = 0}, [16702] = {addon_num = 3, pokemon = "Umbreon", looktype = 3054, nome = "Princess Umbreon", fly = 0, ride = 0, surf = 0}, [16703] = {addon_num = 4, pokemon = "Umbreon", looktype = 3063, nome = "Nataline Umbreon", fly = 0, ride = 0, surf = 0}, } function onUse(cid, item, frompos, item2, topos) local addonNum = addons[item.itemid].addon_num local addonlook = addons[item.itemid].nome local addon = addons[item.itemid].looktype local fly = addons[item.itemid].fly local ride = addons[item.itemid].ride local surf = addons[item.itemid].surf local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon local btype = getPokeballType(item2.itemid) local ball = pokeballs[btype] if getPlayerStorageValue(cid, 17001) > 0 or getPlayerStorageValue(cid, 17000) > 0 or getPlayerStorageValue(cid, 63215) > 0 then doPlayerSendCancel(cid, "NAO PODE!!!!!.") return true end if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "VOLTA PRA BALL!!!!.") return true end if item2.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then doPlayerSendCancel(cid, "COLOCA NO SLOT CORRETO!!!!!!") return true end if not ball then doPlayerSendCancel(cid, "SO PODE POKEMON!!!!!!.") return true end if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, "POKE ERRADO!!!!!!!!!") return true end if getItemAttribute(pb, "poke") == 0 then doPlayerSendCancel(cid, "POKE ERRADO") return true end doRemoveItem(item.uid, 1) doSendMagicEffect(frompos, 173) updateAddonAttr(pb, "addon",addon,addonNum) updateAddonAttr(pb, "addonfly",fly,addonNum) updateAddonAttr(pb, "addonride",ride,addonNum) updateAddonAttr(pb, "addonsurf",surf,addonNum) updateAddonAttr(pb, "addonlook",addonlook,addonNum) if not getItemAttribute(pb, "current_addon") then doSetItemAttribute(pb, "current_addon", addonNum) end return true end se alguem puder me dar uma força eu agradeço! ❤️ Link para o comentário https://tibiadevs.com/forums/topic/211-ajuda-com-addon-system/ Compartilhar em outros sites Mais opções de compartilhamento...
Niron 53 Postado 7 de Novembro 2023 Compartilhar Postado 7 de Novembro 2023 [13101] = { -- item do addon nome = "Sorcerer addon", -- nome do addon ["Shiny Tropius"] = {looktype = 2019}, -- looktype do addon ( no caso esse addon serve para 2 pokes por isso esta sh pius e sh meta) ["Shiny Metagross"] = {looktype = 2209}, É só deixar dessa forma Link para o comentário https://tibiadevs.com/forums/topic/211-ajuda-com-addon-system/#findComment-948 Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora