-
Total de itens
584 -
Registro em
-
Última visita
-
Dias Ganhos
9
Histórico de Reputação
-
DarkWore deu reputação a Tungs em [SOURCE DO PDA]
Olá a todos,
Recentemente, trabalhei em um projeto de desenvolvimento de uma source para PDA e fiquei muito satisfeito com os resultados. Depois de muito esforço e testes, consegui atingir cerca de 90% de sucesso na implementação da source em diversos PDAs. Agora, gostaria de compartilhar meu trabalho com vocês.
A source é escrita em C++ e possui diversas funções, incluindo getDamageMapPercent, isPokeball e Order System (getDirectionToWalk). Adicionado raças (Crystal, Steel, Dark), função OnSpawn, Pokemon Passivos e agressivos. Além disso, é altamente compatível com a maioria dos PDAs, embora possa haver algumas adaptações necessárias dependendo do dispositivo específico.
Para quem estiver interessado em testar a source, deixo aqui o link para todas as funções: https://pastebin.com/ewKUt9dH
Ficarei muito grato por qualquer feedback que vocês possam me dar sobre a minha source. Compartilhar conhecimento e ajudar a comunidade é sempre muito gratificante e espero que minha source possa ajudá-los em seus projetos. Obrigado pela atenção e apoio!
Atenciosamente, Tungs (kevick)
a source se encontra anexada nesse tópico + link do mediafire para quem não conseguir baixar aqui.
Download: https://www.mediafire.com/file/8irkqnrgxtuw1b9/Source.rar/file
Download Atualização 052023: https://www.mediafire.com/file/nbf3ypdv8yaf903/Source_PDA_atualiza%C3%A7%C3%A3o_052023.rar/file
PS. QUALQUER ERRO EU AJUDAREI, BASTA COMENTAR AQUI NO TÓPICO
ATUALIZAÇÃO 052023
ADIÇÃO DA FUNÇÃO getDirectionToWalk (C++)
após baixar e compilar a nova source que se encontra logo abaixo, adicione em 032-position.lua que se encontra na pasta lib a função abaixo: function getDirectionToWalk(p1, pos2) local dir = NORTH local pos1 = getCreaturePosition(p1) if(pos1.x > pos2.x) then dir = WEST if(pos1.y > pos2.y) then dir = NORTHWEST elseif(pos1.y < pos2.y) then dir = SOUTHWEST end elseif(pos1.x < pos2.x) then dir = EAST if(pos1.y > pos2.y) then dir = NORTHEAST elseif(pos1.y < pos2.y) then dir = SOUTHEAST end else if(pos1.y > pos2.y) then dir = NORTH elseif(pos1.y < pos2.y) then dir = SOUTH end end return dir end function getNextStepDelay(cid, dir) return tonumber(398) end
DOWNLOAD DA SOURCE ATUALIZADA: https://www.mediafire.com/file/nbf3ypdv8yaf903/Source_PDA_atualiza%C3%A7%C3%A3o_052023.rar/file
Source PDA atualização 052023.rar
-
-
DarkWore recebeu reputação de Hiago Felipe em ENTRO NO GAME E O PERSONAGEM FICA ASSIM
Digite o comando, /newtype 50 e depois troque para uma outfit da escolhe de personagens.
-
DarkWore deu reputação a Hiago Felipe em ENTRO NO GAME E O PERSONAGEM FICA ASSIM
Funcionou!!! muito obrigado, Deus abençoe
-
DarkWore recebeu reputação de Wicke em Sistema de Catch
Corrigido, só não está com a correção que você fez no nome da pasta data.
catch system.lua
-
DarkWore recebeu reputação de Wicke em Sistema de Catch
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "r+") --<<<<<<<<<<<<<<<
-
DarkWore recebeu reputação de Wicke em Sistema de Catch
Esse erro que da é porque ele está tentando abrir esse arquivo nesse diretório:
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "a+") Coloque os TXTs com o nome de todos os poke ou comente o código.
Segue o código com correção dos pokes mortos para o DP
catch system.lua
-
DarkWore recebeu reputação de kamus9629 em [DxP] Depot não salva nada
Vá na source em player.cpp e procure na função Depot* Player::getDepot(uint32_t depotId, bool autoCreateDepot) por:
if(it != depots.end()) return it->second.first; Abaixo coloque:
//create a new depot? if(autoCreateDepot) { Item* locker = Item::CreateItem(ITEM_LOCKER); if(Container* container = locker->getContainer()) { if(Depot* depot = container->getDepot()) { container->__internalAddThing(Item::CreateItem(ITEM_DEPOT)); addDepot(depot, depotId); return depot; } } g_game.freeThing(locker); std::cout << "Failure: Creating a new depot with id: " << depotId << ", for player: " << getName() << std::endl; } Até onde me lembro esse problema ocorre porque foi removido essa parte do código na source do DXP, acredito que isso resolva seu problema.
Créditos a @wlucas8190 pela correção no tópico original do DXP.
Link original da correção:
-
DarkWore recebeu reputação de AngellGreen em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore deu reputação a GamerGoiano em OTCLIENT com Visual do Cliente CIPSOFT
Eu que fiz pra um amigo, créditos são meus
Não fiz modificações na source, se quiserem pode pegar src e vc14 do edubart no github
Download: https://www.dropbox.com/s/hxlekf4c5pmkvpo/OTC TIBIA STYLE.rar?dl=0
Scan: https://www.virustotal.com/gui/file/213f863233fe4f9443a5682f33037d6bfd685e454e0ba9855899224017d81c55/detection
Tamanho: 6MB
Como usar:
1. TrocarIP:
modules/client_entergame/entergame.lua
Alterar: EnterGame.setUniqueServer('127.0.0.1', 7171, 772, 270, 210)
127.0.0.1 = IP do SV, 772 = Versão do Client
2. Adicionar sua SPR e DAT
Coloque em data/things/versão
3. Alterar Links dos botões na tela inicial
client_background/background.lua
4. Alterar funções dos botões do cliente:
game_inventory/inventory.lua
-
DarkWore deu reputação a Im Fisher em Disponibilizando minhas sprites Black Clover
Olá pessoal, meu nome é Kenai e me considero um spriter de nivel mediano.
Junto com a disponibilização dessas minhas "spritezinhas" eu quero fazer um pedido pra você que está lendo;
Acredito que se você veio parar neste tópico é porque algum interesse em sprites você tem;
Sabendo disso, eu gostaria de pedir pra você que é spriter, ou quer começar a fazer sprites, um simples favor..Parem de fazer sprites de pokemon, vamos inovar, o mundo das sprites é imenso, tanta coisa pra vocês criarem e ficaram estagnados em pokemon.
Tanto projeto legal que poderia sair se tivessem um conteudo inovador..
Agradeço por lerem até aqui.
(hipocrisia minha dizer isso e fazer um lucario e um eevee, mas tenho a desculpa que sao os meus 2 favoritos e amo eles).
BY THE WAY AS SPRITES SAO LIVRES PRA USO CASO QUEIRAM UTILIZAR EM ALGO.
Ps: tenho algumas a mais sobre black clover e se o post der um up legal eu libero o resto aqui.
-
DarkWore recebeu reputação de BrunoMaciel em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Taiger em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Step Records em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Step Records em [PDA/TFS 0.3.6] Multi Addon System
Aqui estão os Arquivos Completos que eu utilizava:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Vale Lembrar que o Sistema foi Feito para a minha base, pode necessitar pequenas adaptações e ressalto que não dou suporte.
-
DarkWore recebeu reputação de Kyyah Silva em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Quinn321 em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Olan trein em [PDA/TFS 0.3.6] Multi Addon System
Aqui estão os Arquivos Completos que eu utilizava:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Vale Lembrar que o Sistema foi Feito para a minha base, pode necessitar pequenas adaptações e ressalto que não dou suporte.
-
DarkWore recebeu reputação de Olan trein em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de Vini Original em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore recebeu reputação de AlanWake em [PDA/TFS 0.3.6] Multi Addon System
Boa Noite gente, Hoje eu venho postar um Sistema de Multi Addon System feito para o data do PDA 1.9 pode funcionar em TFS 0.3.6 com pequenas adaptações, como eu havia dito em outra postagem esse Sistema foi feito por meu Amigo Slicer e tem algumas coisas minhas e de alguns amigos, Bom em outra base aqui no fórum, na base vazada havia esse sistema que o amigo que eu passei passou para esse outro colega, enfim eu conversei com meu Amigo Slicer e decidimos por postar, vamos la.
data\actions\scripts crie um arquivo com nome de addon.lua e cole isso dentro:
local addons = { -- Shiny Alakazam [13089] = {addon_num = 1, pokemon= "Shiny Alakazam", looktype = 2013, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13091] = {addon_num = 2, pokemon= "Shiny Alakazam", looktype = 2014, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13092] = {addon_num = 3, pokemon= "Shiny Alakazam", looktype = 2016, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13090] = {addon_num = 4, pokemon= "Shiny Alakazam", looktype = 2015, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Alakazam [13093] = {addon_num = 1, pokemon= "Alakazam", looktype = 2009, nome = "Adventurer addon", fly = 0, ride = 0, surf = 0}, [13095] = {addon_num = 2, pokemon= "Alakazam", looktype = 2010, nome = "Grey hat addon", fly = 0, ride = 0, surf = 0}, [13096] = {addon_num = 3, pokemon= "Alakazam", looktype = 2012, nome = "Ret hat addon", fly = 0, ride = 0, surf = 0}, [13094] = {addon_num = 4, pokemon= "Alakazam", looktype = 2011, nome = "Purple hat addon", fly = 0, ride = 0, surf = 0}, -- Shiny Tropius [13101] = {addon_num = 1, pokemon= "Shiny Tropius", looktype = 2019, nome = "Sorcerer addon", fly = 2065, ride = 0, surf = 0}, [13106] = {addon_num = 2, pokemon= "Shiny Tropius", looktype = 2069, nome = "Desert flower addon", fly = 2070, ride = 0, surf = 0}, -- Shiny Metagross [13098] = {addon_num = 1, pokemon= "Shiny Metagross", looktype = 2021, nome = "King's crown addon", fly = 0, ride = 2064, surf = 0}, [13099] = {addon_num = 2, pokemon= "Shiny Metagross", looktype = 2020, nome = "Queen's crown addon", fly = 0, ride = 2067, surf = 0}, -- Shiny Clefable [13097] = {addon_num = 1, pokemon= "Shiny Clefable", looktype = 2068, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Clefable [13102] = {addon_num = 1, pokemon= "Clefable", looktype = 2025, nome = "Angel addon", fly = 0, ride = 0, surf = 0}, -- Shiny Jynx [13100] = {addon_num = 1, pokemon= "Shiny Jynx", looktype = 2023, nome = "Witch addon", fly = 0, ride = 0, surf = 0}, -- Metagross [13103] = {addon_num = 1, pokemon= "Metagross", looktype = 2018, nome = "King's crown addon", fly = 0, ride = 2063, surf = 0}, [13104] = {addon_num = 2, pokemon= "Metagross", looktype = 2017, nome = "Queen's crown addon", fly = 0, ride = 2066, surf = 0}, -- Halloween [13105] = {addon_num = 1, pokemon= "Elder Charizard", looktype = 2074, nome = "Halloween addon", fly = 2072, ride = 0, surf = 0}, [13107] = {addon_num = 2, pokemon= "Charizard", looktype = 2073, nome = "Halloween addon", fly = 2071, ride = 0, surf = 0}, -- Shiny Blastoise [13108] = {addon_num = 1, pokemon= "Shiny Blastoise", looktype = 2078, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13109] = {addon_num = 2, pokemon= "Shiny Blastoise", looktype = 2076, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2088}, [13110] = {addon_num = 3, pokemon= "Shiny Blastoise", looktype = 2075, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2090}, [13111] = {addon_num = 4, pokemon= "Shiny Blastoise", looktype = 2077, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2086}, -- Blastoise [13112] = {addon_num = 1, pokemon= "Blastoise", looktype = 2082, nome = "Purple ninja pack addon", fly = 0, ride = 0, surf = 2083}, [13113] = {addon_num = 2, pokemon= "Blastoise", looktype = 2080, nome = "Orange ninja pack addon", fly = 0, ride = 0, surf = 2087}, [13114] = {addon_num = 3, pokemon= "Blastoise", looktype = 2079, nome = "Red ninja pack addon", fly = 0, ride = 0, surf = 2089}, [13115] = {addon_num = 4, pokemon= "Blastoise", looktype = 2081, nome = "Blue ninja pack addon", fly = 0, ride = 0, surf = 2085}, -- Shiny Gardevoir [13320] = {addon_num = 1, pokemon= "Shiny Gardevoir", looktype = 2159, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13324] = {addon_num = 2, pokemon= "Shiny Gardevoir", looktype = 2164, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13337] = {addon_num = 3, pokemon= "Shiny Gardevoir", looktype = 2136, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Gardevoir [13291] = {addon_num = 1, pokemon= "Gardevoir", looktype = 2156, nome = "Witch Apparentice addon", fly = 0, ride = 0, surf = 0}, [13295] = {addon_num = 2, pokemon= "Gardevoir", looktype = 2161, nome = "Housekeeper addon", fly = 0, ride = 0, surf = 0}, [13302] = {addon_num = 3, pokemon= "Gardevoir", looktype = 2198, nome = "Bride Saint Join addon", fly = 0, ride = 0, surf = 0}, -- Shiny Spiritomb [13322] = {addon_num = 1, pokemon= "Shiny Spiritomb", looktype = 2204, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13345] = {addon_num = 2, pokemon= "Shiny Spiritomb", looktype = 2208, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13347] = {addon_num = 3, pokemon= "Shiny Spiritomb", looktype = 2163, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Spiritomb [13293] = {addon_num = 1, pokemon= "Spiritomb", looktype = 2202, nome = "Green Ballon addon", fly = 0, ride = 0, surf = 0}, [13314] = {addon_num = 2, pokemon= "Spiritomb", looktype = 2206, nome = "Orange Ballon addon", fly = 0, ride = 0, surf = 0}, [13316] = {addon_num = 3, pokemon= "Spiritomb", looktype = 2200, nome = "Clown Box addon", fly = 0, ride = 0, surf = 0}, -- Shiny Togekiss [13321] = {addon_num = 1, pokemon= "Shiny Togekiss", looktype = 2205, nome = "Champion 2016 addon", fly = 2193, ride = 0, surf = 0}, [13339] = {addon_num = 2, pokemon= "Shiny Togekiss", looktype = 2158, nome = "Superman addon", fly = 2155, ride = 0, surf = 0}, [13342] = {addon_num = 3, pokemon= "Shiny Togekiss", looktype = 2201, nome = "Piloto addon", fly = 2203, ride = 0, surf = 0}, -- Togekiss [13292] = {addon_num = 1, pokemon= "Togekiss", looktype = 2121, nome = "Champion 2016 addon", fly = 2189, ride = 0, surf = 0}, [13303] = {addon_num = 2, pokemon= "Togekiss", looktype = 2158, nome = "Superman addon", fly = 2160, ride = 0, surf = 0}, [13308] = {addon_num = 3, pokemon= "Togekiss", looktype = 2162, nome = "Piloto addon", fly = 2183, ride = 0, surf = 0}, [13309] = {addon_num = 4, pokemon= "Togekiss", looktype = 2179, nome = "Batman addon", fly = 2182, ride = 0, surf = 0}, } local msgs = { return_poke = { [0] = "Por favor volte seu pokémon.", [1] = "Por favor, vuelve su pokémon.", [2] = "Please back your pokémon." }, cant_use = { [0] = "Desculpa, você não pode usar esse addon nesse pokémon.", [1] = "Lo sentimos, no se puede utilizar este addon en esse pokémon.", [2] = "Sorry, you can't use this addon on this pokémon." } } function onUse(cid, item, fromPosition, itemEx, toPosition) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, msgs.return_poke[getPlayerLanguage(cid)]) return false end local addonNum = addons[item.itemid].addon_num 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 addonlook = addons[item.itemid].nome local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, msgs.cant_use[getPlayerLanguage(cid)]) return false end if getItemAttribute(pb, "pokeballusada") == 0 then doRemoveItem(item.uid, 1) doSendMagicEffect(fromPosition, 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 return false end Ainda em data\actions\scripts em goback.lua procure por:
if useOTClient then doPlayerSendCancel(cid, '12//,show') --alterado v1.7 end Embaixo cole:
-- ADDON SYSTEM local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end else doPlayerSendCancel(cid, "This pokemon is fainted.") end Ainda em data\actions\scripts em order.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addon") if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Ainda em data\actions\scripts em surf.lua procure por:
setPlayerStorageValue(cid, 63215, 1) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(pb, "addonsurf") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) end Agora em data\creaturescripts\scripts em login.lua procure por:
doRemoveCondition(cid, CONDITION_OUTFIT) Embaixo cole:
-- ADDON SYSTEM local look = getAddonValue(item.uid, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) end Ainda em data\creaturescripts\scripts em look.lua procure por:
if getItemAttribute(thing.uid, "nick") then table.insert(str, " [Nickname]: "..getItemAttribute(thing.uid, "nick")..". ") end Depois do end coloque embaixo:
if getItemAttribute(thing.uid, "addonlook") then table.insert(str, "Addons: "..getAddonTotalLook(getItemAttribute(thing.uid, "addonlook")).."\n") end Agora em data\lib em order.lua procure por:
setPlayerStorageValue(cid, 54844, speed) Embaixo cole:
-- ADDON SYSTEM local pb = getPlayerSlotItem(cid, 8).uid local look = getAddonValue(pb, "addonfly") if look > 0 then doSetCreatureOutfit(cid, {lookType = look}, -1) else doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) end Ainda em data\lib crie um arquivo com nome de addon.lua e cole isso dentro:
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 Agora em data\talkactions/scripts crie um arquivo com nome de addon_talk.lua e cole isso dentro:
function onSay(cid, words, param) local pb = getPlayerSlotItem(cid, 8).uid local pos = tonumber(param) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "Volte seu pokemon para a pokebola antes de trocar o addon.") return true end if not pos then doPlayerSendCancel(cid, "O numero do Addon deve ser um valor entre 0 e " ..ADDON_LIMIT.. ".") return true end if pos >= 0 and pos <= ADDON_LIMIT then doSetItemAttribute(pb, "current_addon", pos) end return true end Arquivos Completos que eu utilizava, já que o sistema foi feito para a minha base, pode necessitar pequenas adaptações:
data\actions\scripts:
addon.lua
goback.lua
order.lua
surf.lua
data\creaturescripts\scripts:
login.lua
look.lua
data\lib:
addon.lua
order.lua
data\talkactions\scripts:
addon_talk.lua
Bom é isso, Só usarem agora, Não se esqueçam de registrar os scripts no xml e os comandos do talkactions, etc.
Créditos:
@Slicer (Desenvolvimento em Geral)
@DarkWore (Completar Algumas coisas que ficaram pendentes/erros que surgiram)
@Jair Kevick (Completar problema que estava havendo com o Look)
Lembrando Nenhum dos citados oferece suporte ao sistema para erros que surgirem ou qualquer coisa do tipo, até porque ainda existe muita coisa incompleto e que pode ser melhorado nos scripts.
-
DarkWore deu reputação a Jakson Souza em Entra nesse tópico, e ganhe um doce.
recrutamente finalizado.
-
DarkWore deu reputação a Gengo em [OtClient] Pokemon Health Info
Eai galera do xtibia, hoje venho por meio desse post trazer para vocês uma pokebar, sei que já existe porém este é um pouco diferente do que costumamos ver.
Antes de tudo faça o download do arquivo e vamos a configuração.
OBS: Seu otClient precisa ter opcodes para poder funcionar.
1) Coloque o module na pasta do seu otClient em /modules.
2) No arquivo do seu servidor em data/lib/106-mainfunctions.lua coloque o seguinte trecho de código:
3) Ainda no mesmo arquivo 106-mainfunctions.lua procure pela função doOTCSendPokemonHealth e substitua ela pelo trecho a seguir:
4) Caso seu servidor não tenha a função table.serialize, adicione ela no arquivo do servidor em data/lib/012-table.lua:
5) No arquivo do seu servidor data/creaturescripts/script/login.lua coloque o seguinte trecho no final do onLogin antes do return
sendPokeOTC(cid) 6) Abrindo o arquivo do npc Nurse Joy em especifico o script.lua, procure o trecho de codigo:
doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax) Substitui por esse:
doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax.."|"..getItemAttribute(mypb.uid, "identificador")) E no finalzinho da função do mesmo arquivo lua, antes do end, coloque o seguinte codigo:
for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallMaxHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end 7) E por ultimo no arquivo opcodes.lua localizado na pasta data/creaturescript/script/opcodes.lua procure por:
if buffer == "refresh" then doOTCSendPokemonHealth(cid) end E substitui por:
if buffer == "refresh" then for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end end
Bom é basicamente isso, a unica coisa que estará faltando e que vou deixar para vocês fazerem é quando o player colocar ou retirar outro pokemon na bag fazer com que o servidor chame a função sendPokeOTC(cid), não estarei ensinando essa parte pq o meu é bem diferente e não adiantaria eu mostrar como se faz, mas também não é um bixo de 7 cabeças fazer essa parte.
Fazendo esse tutorial certinho e tudo mais, ficará assim no game:
Espero que gostem e que entendam, desculpe-me por qualquer coisa não sou muito de explicar e ficar escrevendo tutorial.
Download do arquivo:
https://www.mediafire.com/file/p8wch1fogveh48e/game_poke.rar/file
Scan do arquivo:
https://www.virustotal.com/#/file/d88b33ad27520ddd28afdaeb7d17af26805fa3bf39400f1a30813a0da3ca1695/detection
-
DarkWore recebeu reputação de cincinho em [Resolvido] Ajuda dou rep++ qual o id do dado de evento bag la
Dependendo sua base vai ser esse ID: 5792
-
DarkWore recebeu reputação de GniusP em [Resolvido] Como trocar cor de staffs e de pokemons (male e female)
Não existe nenhum código no fórum que troque a cor dos nicks de acordo com os cargos, já sobre a cor do nome dos Pokémons, você pode mexer em creature.cpp na Source do otclient e fazer setar a cor de acordo com a skull do gender do Pokémon e fazer com que no health percent não mude a cor quando ele levar dano.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.