Ir para conteúdo

brunei

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    brunei deu reputação a WooX em Trade Offline V2.0   
    Trade Offline V2.0

    Esse sistema me foi pedido a alguns meses atrás e hoje tirei um tempinho pra trazer aqui.
    O sistema consiste em permitir que jogadores negociem sem contato direto entre comprador e vendedor.
    Mas como assim?
    O vendedor pode criar um anuncio de venda informando item, valores ou até mesmo items que ele queira em troca, após feito o anuncio todas essas informações ficam armazenadas no banco de dados do servidor, permitindo assim serem exibidas em uma página no site para interessados, junto de todas informações fornecidas pelo vendedor é exibido um comando para que os interessados possam adquirir a oferta exibida na página.
     
    Sobre o sistema

     
    O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4
     
    Versão para TFS 1.x adaptada pelo @luanluciano93
     
    Como mencionado acima, o sistema funciona de forma semelhante ao Market System das versões atuais porem sem exibição gráfica das ofertas in-game, para isso o sistema vai acompanhado de uma página para o Gesior AAC. Este sistema existe no fórum há um bom tempo e já é familiar pra muitos jogadores, essa versão trás consigo algumas melhorias e diferenças que irei listar abaixo.
     
    Sistema
    Agora é possivel vender um item exigindo outro item em troca ao invés de dinheiro. Containers com um conjunto de items dentro agora podem ser anunciados. Agora o sistema verifica as cargas e durações dos items antes de criar uma oferta. Novo parâmetro adicionado para verificar informações de ofertas in-game. Agora todo valor recebido vai diretamente para o banco do vendedor. Página
    A depender da quantidade de ofertas existentes no servidor, a página agora irá separa-las por páginas. Agora além do valor é exibido também imagem da moeda a depender do valor da oferta. Agora é possivel ver as características tanto dos items ofertados como dos items exigidos pelo vendedor. Adicionado filtros para exibir somente ofertas de items vip, containers ou trocas. Adicionado barras de pesquisas para filtrar as ofertas por items ou nome do jogador.  
    Algumas imagens
     
    Instalação

    Antes de mais nada é necessário citar os requisitos necessários para o funcionamento correto do sistema, ele utiliza de algumas funções que não estão no script principal e portanto é necessário a instalação de uma lib extra, também é necessário instalar as funções doItemSetDuration e getItemDurationTime na source do servidor, ambos os links se encontram abaixo.
     
    Todos os arquivos necessários para a instalação estão anexados no tópico, irei apenas dizer onde instalar e como deve ser configurado.
     
    Primeiramente importe o arquivo schema.sql no banco de dados, ou se preferir pode executar as queries a seguir.
    CREATE TABLE IF NOT EXISTS `trade_off_offers` ( `id` int(11) NOT NULL auto_increment, `player_id` int(11) NOT NULL, `type` int(1) NOT NULL DEFAULT '0', `item_id` int(11), `item_count` int(11) NOT NULL DEFAULT '1', `item_charges` int(11) NULL, `item_duration` int(11) NULL, `item_name` varchar(255), `item_trade` tinyint(1) NOT NULL DEFAULT '0', `cost` bigint(20) UNSIGNED NOT NULL, `cost_count` int(11) NOT NULL DEFAULT '1', `date` bigint(20), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `trade_off_container_items` ( `offer_id` int(11) NOT NULL, `item_id` int(11), `item_charges` int(11) NULL, `item_duration` int(11) NULL, `count` int(11) DEFAULT '1' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; ALTER TABLE `trade_off_container_items` ADD KEY `offer_id` (`offer_id`); ALTER TABLE `trade_off_container_items` ADD CONSTRAINT `offer_id_fk` FOREIGN KEY (`offer_id`) REFERENCES `trade_off_offers`(`id`) ON DELETE CASCADE;  
    Configuração no arquivo tradeoff.lua: 
    -- Trade Offline 2.0 by WooX -- local config = { priceLimit = 2000000000, -- 2kkk offerLimit = 3, offerLimitStor = 86420, infoOnPopUp = true, infoMsgType = MESSAGE_STATUS_CONSOLE_BLUE, errorMsgType = MESSAGE_STATUS_CONSOLE_RED, successMsgType = MESSAGE_INFO_DESCR, helpMsg = "Enter the parameters (add, remove, active, buy, info).", goldItems = {2148, 2152, 2160}, itemsVIP = {4540, 4545, 4560}, } priceLimit: define o valor máximo de uma oferta. offerLimit: define o valor máximo de ofertas que um jogador pode adicionar. offerLimitStor: storage que irá armazenar quantas ofertas ativas o jogador possui. infoOnPopUp: pode ser definido como true ou false, se definido como falso irá enviar os detalhes da oferta no default ao invés de como é mostrado nas imagens acima. infoMsgType: define como será exibido uma mensagem de informação ao jogador (não recomendo mexer a menos que saiba o que está fazendo). errorMsgType: define como será exibido uma mensagem de erro ao jogador (não recomendo mexer a menos que saiba o que está fazendo). successMsgType: define como será exibido uma mensagem de ação sucedida ao jogador (não recomendo mexer a menos que saiba o que está fazendo). helpMsg: mensagem que será enviada para o jogador caso ele erre os parâmetros do comando. goldItems: nesta tabela deve ser preenchido todos os IDs de moedas no servidor como gold coins, platinum coins, etc. itemsVIP: nesta tabela deve ser preenchido os IDs dos items vips existentes no servidor.  
    Agora para a instalação da página, no arquivo mysql_db.php deve ser preenchido os dados para conexão no banco de dados do servidor.
    /** * Host do banco de dados * @var string */ private static $DB_HOST = 'localhost'; /** * Usuario de conexao ao banco de dados * @var string */ private static $DB_USER = 'root'; /** * Senha de conexao ao banco de dados * @var string */ private static $DB_PASS = 'SUA_SENHA'; /** * Nome do banco de dados * @var string */ private static $DB_NAME = 'NOME_BANCO'; Após feito isso, o arquivo paginationClass.php em conjunto do arquivo mysql_db.php devem ser adicionados no seguinte diretório do Gesior AAC.
    classes/
    Finalizado isto, basta jogar o arquivo tradeoff.php dentro do diretório informado abaixo e o sistema estará pronto para uso.
    pages/
     
    Avisos

     
    Eu escrevi somente o sistema, não sou o autor da página para o Gesior AAC portanto não estarei dando suporte em relação a página que não seja sobre a instalação da mesma no Gesior AAC 2012, e embora esteja funcional, eu não recomendo o uso da página devido a falta do uso de cache para leitura do items.xml. Foram mais de 600 linhas de código sem contar funções extras e alterações na source, além de muitas horas de testes para garantir que tudo estava funcionando corretamente, tudo que peço em troca é que não removam os créditos no arquivo quando forem usar.  
    Créditos

    @MatheusDuarte pela página do Gesior AAC.
    schema.sql tradeoff.lua tradeoff.php mysql_db.php paginationClass.php
  2. Gostei
    Tinha visto isso no servidor do MegaTibia / Kaldrox e achei bem interessante.
     
    Todos os tópicos que encontrei sobre o assunto de alterar a cor das mensagens dos GMs, CMs e ADM no channel Help para vermelho, falavam que tinham que fazer uma configuração na própria source do servidor.
     
    Fiz uma gambiarra que funciona, sem a necessidade de mexer na source do servidor e de utilizar comandos para isso. Testei somente em TFS 0.4 e funciona tranquilamente.
     
    segue abaixo como configurar em seu otserver:
     
    data > talkactions > scripts > crie um arquivo chamado gmsayred.lua e cole o código abaixo:
     
    function onSay(cid, words, param, channel) if channel == CHANNEL_HELP then for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', "".. getCreatureName(cid) .. ": ".. words, TALKTYPE_CHANNEL_R1, CHANNEL_HELP) end return true end end  
    em talkactions.xml cole a tag abaixo:

     
    <!-- Gamemasters --> <talkaction default="yes" filter="quotation" logged="no" access="3" event="script" value="gmsayred.lua"/>    
    e pronto! Agora é só enviar alguma mensagem no Help que a mensagem ficará em vermelho.
     

     
  3. Obrigado
    brunei recebeu reputação de Mikayovski em Shiny Ditto Memory   
    Olá galera bom dia , boa tarde e boa noite a todos !
    venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util 
    como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.

    o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !

    1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)

    em Talkactions.xml adicione a tag :  <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
     
    2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script : 
     
    em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
    Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
     

    3° - em somefunctions.lua adicione essas funçoes !

     
    tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .

    4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !

    pronto , com isso vai funcionar o modulo 
     

     
    1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
    2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
    3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..

    entao é isso galera , espero que seja util .

    CREDITOS :
    @zipter98 
    @usoparagames Eu
    game_memory.rar
  4. Curtir
    brunei deu reputação a Wakon em MENSAGEM QUANDO LOGAR   
    Vá em "Data/creaturescripts/scripts", abra o arquivo login.lua e abaixo de function onLogin(cid), adicione:
    doPlayerPopupFYI(cid, "Double EXP ativa!")  
  5. Gostei
    brunei recebeu reputação de FlamesAdmin em Shiny Ditto Memory   
    que bom que gostou mano, e obrigado pela dica com isso agora creio que esteja 100% , topico atualizado só trocar o sdittomemory.lua .
    agora tem um cooldown de 2 segundos para trocar (configurável) e coloquei um bloqueio caso o pokemon nao esteja com o moveset 100% carregado.
  6. Curtir
    brunei deu reputação a FlamesAdmin em Shiny Ditto Memory   
    Cara, ficou simplesmente perfeito, um detalhezinho que faltou é um exaust pra não spammar as trocas
  7. Gostei
    brunei recebeu reputação de FlamesAdmin em Shiny Ditto Memory   
    Olá galera bom dia , boa tarde e boa noite a todos !
    venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util 
    como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.

    o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !

    1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)

    em Talkactions.xml adicione a tag :  <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
     
    2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script : 
     
    em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
    Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
     

    3° - em somefunctions.lua adicione essas funçoes !

     
    tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .

    4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !

    pronto , com isso vai funcionar o modulo 
     

     
    1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
    2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
    3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..

    entao é isso galera , espero que seja util .

    CREDITOS :
    @zipter98 
    @usoparagames Eu
    game_memory.rar
  8. Obrigado
    brunei recebeu reputação de Under em Shiny Ditto Memory   
    Olá galera bom dia , boa tarde e boa noite a todos !
    venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util 
    como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.

    o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !

    1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)

    em Talkactions.xml adicione a tag :  <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
     
    2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script : 
     
    em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
    Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
     

    3° - em somefunctions.lua adicione essas funçoes !

     
    tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .

    4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !

    pronto , com isso vai funcionar o modulo 
     

     
    1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
    2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
    3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..

    entao é isso galera , espero que seja util .

    CREDITOS :
    @zipter98 
    @usoparagames Eu
    game_memory.rar
  9. Curtir
    brunei deu reputação a GamerGoiano em goback ( uso de pokemons )   
    Para fazer com que o item possa ser usado somente se estiver no inventário do player, você deve adicionar a condição
     
    isInArray(item2, getPlayerAllItems(cid))
    logo abaixo da condição
     
    if item.itemid == usando then
    e acima do primeiro
     
    if getPlayerStorageValue(cid, 990) == 2 then  
  10. Obrigado
    brunei deu reputação a Fir3element em (Resolvido){Ajuda} Error TFS "not enough memory"   
    Estranho, o mapa é pequeno para dar esse tipo de erro...
    Tenta usar o LAA: http://www.tibiaking.com/forum/topic/12637-aprenda-a-usar-o-laatido/
  11. Obrigado
    brunei deu reputação a marcot em (Resolvido)pedido script held fusion   
    @Danxi
    Eu testei um pouco o sistema e a princípio parece que funcionou. Gostaria que você testasse adequadamente e, caso encontre algum bug, me mande aqui nessa mesma página que vou tentar corrigir.
     
    Nome:
    Fusão de Held Item Testado em:
    The Forgotten Server 0.4 Como instalar:
    1) Cole a tag em data/actions/actions.xml 2) Crie um arquivo chamado "heldFusion.lua" em data/actions/scripts e cole o "script" dentro dele 3) Vá no map editor de sua preferência, crie um contêiner e um ativador (nos testes usei uma alavanca), guarde a posição do contêiner, pois será necessário na configuração do script. 4) Ainda no map editor, coloque o actionID 10001 no ativador Pronto! Tag:
    <action actionid = "10001" event = "script" value = "heldFusion.lua" /> Script:
    -- Held Fusion 0.1 by Marcot -- Se encontrou algum erro no script, favor enviar PM explicando os erros -- http://www.tibiaking.com/forum/profile/120572-marcot/ -- Configuracoes necessarias para o script local config = { quest = { -- Precisa fazer quest? (Nao mexa caso negativo) necessaria = false, -- Eh necessario fazer uma quest para liberar o sistema? storageID = 10001, -- Qual o storageID dessa quest? (caso true, anteriormente) }, chestPos = {x = 92, y = 114, z = 7, stackpos = 1}, -- Posicao do Bau (certifique-se que nao tenha nada encima dele) -- Tenha atencao para que a soma das chances dos helds em cada tier seja igual a 100 helds = { -- Item IDs e chance de vir o held [1] = { -- Array Tier 1 {ID = 2159, chance = 10}, {ID = 2160, chance = 80}, {ID = 2158, chance = 10}, }, [2] = { -- Array Tier 2 {ID = 2000, chance = 20}, {ID = 2001, chance = 20}, {ID = 2002, chance = 20}, {ID = 2003, chance = 20}, {ID = 2004, chance = 20}, }, [3] = { -- Array Tier 3 }, [4] = { -- Array Tier 4 }, [5] = { -- Array Tier 5 }, [6] = { -- Array Tier 6 }, [7] = { -- Array Tier 7 }, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.quest.necessaria and getPlayerStorageValue (cid, config.quest.storageID) == 0 then -- Erro caso a pessoa use a maquina sem ter feito a quest -- Valido apenas quando a opcao esta ativada doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don\'t have permission to use this machine.") return false end items = {nil, nil, nil} container = getThingFromPos(config.chestPos) for i = 0, 2 do items[i + 1] = getContainerItem (container.uid, i) if items [i + 1].itemid == 0 or items [i + 1].itemid == nil then -- Erro quando tem menos de 3 itens no bau doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need 3 held items to fuse.") return false end end heldType = {nil, nil, nil} for j=1, 3 do for i=1, 7 do for k = 1, #config.helds[i] do if config.helds[i][k].ID == items[j].itemid then heldType[j] = i end end end if heldType [j] == nil then -- Erro a ser exibido caso o jogador coloque algum item que nao seja um held na maquina doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "This machine works only to held items.") return false end end if heldType[1] ~= heldType[2] or heldType[2] ~= heldType[3] then -- Erro a ser exibido caso o jogador coloque helds de tiers diferentes doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need helds with the same tier.") return false elseif heldType[1] == 7 or heldType[2] == 7 or heldType[3] == 7 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You cannot fuse tier 7 held items.") return false end -- Sortear qual held vira for i = 1, 3 do doRemoveItem(items[i].uid, 1) end tierSorteado = heldType[1] + 1 numeroSorte = math.random(1, 100) itemIDSorteado = sorteiaValor (tierSorteado, numeroSorte) doPlayerAddItem(cid, itemIDSorteado, 1) -- Mensagem exibida ao fundir com sucesso doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received your new held item.") return true end -- Função retirada de https://pt.stackoverflow.com/questions/147884/sorteio-aleat%C3%B3rio-mas-com-diferentes-probabilidades function sorteiaValor (tierSorteado, numeroSorte) x = numeroSorte for i = 1, #config.helds[tierSorteado] do x = x - config.helds[tierSorteado][i].chance if x <= 0 then return config.helds[tierSorteado][i].ID end end end  
     
    Caso queira personalizar as mensagens eu deixei comentários encima de cada mensagem explicando quando são executadas, desculpe pelo meu inglês fisk, só consigo ler, quando vou escrever é um desastre. 
     
    P.S.: Note que o script só olha os 3 primeiros itens de dentro do contêiner, portanto, cabe ao utilizador do script limitar o slot desse contêiner para 3.
     
    [EDIT] Link para compreender a configuração do stackpos: 
     
  12. Obrigado
    brunei deu reputação a najatheus em Addon System - (PDA)   
    System de addon, funciona da seguinte maneira:
    - O item deve ser usado diretamente na pokebola, caso o player deseje colocar um novo addon no pokemon, evoluir ou transformar em shiny, devera ser utilizado o comando: !removeAddon

    Instruções: 
    Insira na pasta datapack/actions/script/
    Addon.lua
     addonbox.lua
     
    Insira na pasta datapack/lib/
    Addon System.lua 
     
     
    Agora, em datapack/actions/actions.xml :
     
    <action itemid="13103;13114;13107" event="script" value="Addon.lua"/> <!-- Aqui estarão os id dos addons que vão ser utilizados na pokebola --> <action itemid="2183" event="script" value="addonbox.lua"/> <!-- Id da addon box -->
    Agora, em datapack/actions/scripts/goback.lua, abaixo de :
     
    local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end Insira :
     
    local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
    Agora, em datapack/actions/scripts/order.lua, abaixo de :
     
    doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1]
    Insira :
     
    local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
    Agora, em datapack/actions/scripts/evolution.lua, abaixo de :
     
    if not isMonster(item2.uid) or not isSummon(item2.uid) then return true end if #getCreatureSummons(cid) > 1 then return true --alterado v1.9 end Insira :
     
    local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end
    Agora, em datapack/actions/scripts/sh stone.lua, abaixo de :
     
    if getPlayerSlotItem(cid, 8).uid == itemEx.uid then if #getCreatureSummons(cid) <= 0 then Insira :
     
    local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end Agora, em datapack/creaturescripts/scripts/look.lua, abaixo de :
     
    if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end Insira :
     
    if(getItemAttribute(thing.uid, "pokeaddon"))then local table_addon = ADDON_CONFIG[getItemAttribute(thing.uid, "pokeaddon")] if not table_addon then return true end table.insert(str, "\n" .. "Addon : " .. table_addon.name_addon .. ".") end Agora, em datapack/lib/order.lua, abaixo de :
     
    doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Insira :
     
    local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfitAbility(cid, addon) Continuando em datapack/lib/order.lua, abaixo de :
    elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Insira : 
    addonTransformOutfitAbility(cid)
    Agora, em datapack/movements/scripts/surf.lua, abaixo de:
     
    doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) Insira :
     
    addonTransformOutfitAbility(cid) Continuando, em datapack/movements/script/surf.lua, abaixo de:
     
    doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] Insira :
     
    local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/talkactions/scripts/ crie um arquivo .lua, coloque dentro :
     
    function onSay(cid, words, param, channel) if(#getCreatureSummons(cid) >=1)then return false end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) if not slot then return false end local addon_ball = getItemAttribute(slot.uid, "pokeaddon") if(addon_ball)then removeAddon(cid,slot,addon_ball) return true end end Agora, em datapack/talkactions/talkactions.xml registre :
     
    <talkaction words="!removeAddon" hide="yes" event="script" value="nome do arquivo.lua"/>
    Configurações :
     
    ADDON_CONFIG ={ [1] = { -- Type do attribute do addon addon1 = 2079, -- Id da outfit pokemon = "Blastoise", -- O pokemon name_addon = "Red ninja pack", -- Nome do addon habilidade = 2089, -- Id da outfit correspondente com sua habilidade }, } local addon_type = { [13114] = { -- Id do item pokemon_use = "Blastoise", -- O pokemon type = 1, -- Valor do attribute }, } Return_addon_table = { [1] = { -- Type do attribute retu = 13114, -- o id do item que o player vai ganhar }, } Creditos :
    Sr. Naja

    20210725_201402.mp4
  13. Curtir
    brunei deu reputação a MatteusDeli em (Resolvido)Npc task diaria   
    @usoparagames  Veja se é isso que você quer.
     
    1 - INSTALANDO O SCRIPT NA LIB DO SERVIDOR
     
    2 - CRIANDO O NPC DAILY
     
    3 - CONFIGURANDO O CREATURESCRIPTS
     
    4 - CONFIGURANDO UM NOVO POKEMON
     
     
  14. Curtir
    brunei deu reputação a MatteusDeli em (Resolvido)Npc task diaria   
    @leozincorsair Sim
  15. Gostei
    brunei deu reputação a xFatality em Bank System por comandos   
    Bastante pessoa quer o sistema de Bank,que a maioria sempre ta bugada,então vou postar uma aqui,que está sem BUG.
    1.Primeiramente vá na pasta talkactions crie uma pasta chamada Bank.Dentro da pasta Bank faça arquivos (.lua) chamados...
    Balance
    Deposit
    Deposit_All
    Transfer
    Transfer_All
    Withdraw
    Withdraw_All
      <!-- Bank --> <talkaction log="yes" words="!balance" script="bank\balance.lua"> <talkaction log="yes" words="!deposit" script="bank\deposit.lua"> <talkaction log="yes" words="!withdraw" script="bank\withdraw.lua"> <talkaction log="yes" words="!transfer" script="bank\transfer.lua"> <talkaction log="yes" words="!depositall" script="bank\deposit_all.lua"> <talkaction log="yes" words="!withdrawall" script="bank\withdraw_all.lua"> <talkaction log="yes" words="!transferall" script="bank\transfer_all.lua"> O Tutorial foi esse,espero que tenham gostado. e por ultimo : Comandos,e para que servem.
      !balance ,Para você ver quanto você tem na sua conta bancaria. !deposit ,Para você depositar certa quantia Ex:!deposit 100. !withdraw ,Para você Retirar certa quantia Ex:!withdraw 100. !transfer ,Para você transferir certa quantia para outro player. !depositall ,Para você depositar tudo o que tem na Backpack. !withdrawall ,Para você retirar tudo o que tem na sua conta. !transferall ,Para você transferir tudo o que tem para outro player. Obrigado,
    Abraços.

Informação Importante

Confirmação de Termo