Jump to content
Close

Search the Community

Showing results for tags 'Action/Talkaction'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community
    • Rules
    • Portal
    • Resources
    • Commerce
    • Clubs
  • OTServers
    • Discussion
    • Support
    • Tutorial
    • Download
    • Code Development
    • Contests and Events
    • Form Team
    • Advertise your Server
  • Tibia Bots
    • Discussion
  • League of Legends's Geral
  • League of Legends's Suporte
  • Jogos Gerais's Geral
  • Nto New Season's Tópicos
  • Fakes's Fakes
  • Tibia's Geral
  • Tibia's Notícias
  • Tibia's Media
  • Tibia's Life Thread
  • Gráficos's Geral
  • Gráficos's Tutoriais
  • Gráficos's Recursos
  • Gráficos's Aprendizagem & Recursos
  • Gráficos's Galeria
  • Gráficos's Duelos & Batalhas
  • Gráficos's Suporte
  • Desenvolvimento e Programação's Geral
  • Desenvolvimento e Programação's Tutoriais
  • Desenvolvimento e Programação's Trabalhos
  • Desenvolvimento e Programação's Suporte
  • Computação's Geral
  • Computação's Dicas e Tutoriais
  • Computação's Suporte
  • Roleplaying's Roleplaying
  • Playground's (Off-topic)
  • Divulgações's Tópicos

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Product Groups

  • Advertisements in Top
  • Advertisements In Signatures
  • Advertisements in Topics
  • Others Advertisements

Categories

  • Sales Section
    • Scripting Sales
    • Codes Sales
    • Mapping Sales
    • Websites Sales
    • Design/Sprites Sales
    • Bots Sales
  • Look Jobs
  • Looking for Freelancers
  • Team Formation

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 46 results

  1. Ha um tempo atrás eu procurei um Pet System bem simples pro meu servidor, e achei um muito bacana. TFS: 0.4 Tibia: 8.6 O sistema original foi postado pelo @Luquinha no tópico: O script funciona corretamente, eu fiz apenas algumas alterações e queria compartilhar caso vocês tenham as mesmas exigências que eu; * Ao tentar usar o PET em PZ não da mais erro na distro, sobe um efeito FAILED! no player e manda uma mensagem. * Agora cada PET precisa de um storage para ser usado, no meu caso, cada PET tem sua quest individual. O script modificado: function onUse(cid, item, frompos, item2, topos) local dolls = { [11256] = {pet = "Rat"}, [11207] = {pet = "Demon"}, [5791] = {pet = "Dragon"}, } local go = dolls[item.itemid] local summon = getCreatureSummons(cid) --------------------------------------------------- if not (getTilePzInfo(getCreaturePosition(cid))) then if #summon >= 1 then for _, pid in ipairs(summon) do doRemoveCreature(pid) doCreatureSay(cid, ""..go.pet..", Recuar!", TALKTYPE_ORANGE_1) end return true end if item.itemid == 5791 then if getPlayerStorageValue(cid, 6666) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11256 then if getPlayerStorageValue(cid, 4444) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa da quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end if item.itemid == 11207 then if getPlayerStorageValue(cid, 4445) == 1 then doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid))) doCreatureSay(cid, ""..go.pet..", GO!", TALKTYPE_ORANGE_1) else doPlayerSendTextMessage(cid, 19, "Voce precisa fazer a quest para usar esse PET!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) end end else doPlayerSendTextMessage(cid, 19, "Voce nao pode sumonar seu PET em Protect Zone!") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) return true end end Creditos: @Luquinha @Roksas @Kemmlly
  2. Bom uns meses atras ai eu não tinha o que fazer e fiz isso kkkkkkkkk Ficou ate que legal, é um efeitozin rapidim que parece mesmo (pelo menos achei) e é bom mexer la no items pro xixir sair ripidim do chão porque se nao o chão do templo fica todo mijado <talkaction words="!urine;/urine;!urina;/urina;!mijar;/mijar;!xixi;/xixi;mijo;mijando;urine;urina;mijar;urinate;pee" script="urina.lua"/> urina.lua
  3. Então , estou começando agora no mundo de script, e eu e um amigo estávamos conversando sobro no Futuro OT que estamos criando e vimos a necessidade de um Tutor Automático para não depender tanto de alguém sempre respondendo a galera. [1] Como funciona: Simplesmente com uma Talk Action , você manda no Global Channel !tutor e ira abrir uma ModalWindow com as duvidas. [2] Como ele responde: Isso vai depender de você colocar para responder, pois o sistema manda uma mensagem no Local Chat em Azul. [3] Como Instalar: É bem simples de instalar mas siga os passos atentamente. Enfim vamos para a melhor parte . 1) Primeiro você tem que ter o ModalWindow instala-do no seu Server: Modal Window 2) Em \data\talkactions\talkactions.xml registre a seguinte linha. <talkaction words="!tutor" script="tutor.lua"/> 3) Em \data\talkactions\scripts crie o seguinte arquivo "tutor.lua" e adicione. function onSay(cid, player, words, param) cid:registerEvent("modalwindowhelper") local titulo = "Tutor Automatico" -- Esse é o titulo do ModalWindow local mensagem = "Oi,eu sou o Tutor Automatico do OTS, posso respoder algumas de suas duvidas" -- Subtitulo do ModalWindow local popup = ModalWindow(1000, titulo, mensagem) popup:addButton(100, "Confirm") popup:addButton(101, "Cancel") popup:addChoice(1, "Pergunta1") -- Aqui é onde voce vai adicionar as perguntas, basta seguir a sequencia popup:addChoice(2, "Pergunta2") popup:setDefaultEnterButton(100) popup:setDefaultEscapeButton(101) popup:sendToPlayer(cid) return true end 4) Em \data\creaturescripts\creaturescripts.xml registre a seguinte linha. <event type="modalwindow" name="modalwindowhelper" script="tutor.lua"/> 5) Em \data\creaturescripts\scripts crie o seguinte arquivo "tutor.lua" e adicione. function onModalWindow(cid, modalWindowId, buttonId, choiceId) cid:unregisterEvent("modalwindowhelper") local mensagem = { [1] = "Tutor Automatico: Resposta1", -- aqui é voce vai adicionar as respostas respeitando a sequencia [2] = "Tutor Automatico: Resposta2", } if modalWindowId == 1000 then if buttonId == 100 then for x = 1,#mensagem do if choiceId == x then cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, mensagem[x]) end end end end end Caso Tenha Ajudado +REP Créditos: Yok
  4. Sobre o sistema: Serve para encaminhar cartas ao admin do servidor, nessas cartas vão o que o player achar importante como sugestões, reports, babozeiras... sei lá. Logo a baixo tem spoiler, com imagens... Bom vamos ao que interessa... Em movements.xml adicione a tag: <movement type="AddItem" tileitem="1" uniqueid="44442" event="script" value="moveall.lua"/> moveall.lua EM Actions.xml adicione a tag: <action uniqueid="44443" script="carta.lua"/> carta.lua Agora você só precisa editar seu mapa colocar o mailbox e a bag de cartas. (outra dica é que retire formas de conseguir cartas, como monstros que dropam ela, ou npcs que vendem), caso não queira fazer isso é só mudar o id da carta no script para outra. ID mailbox: 3981 no mailbox você coloca uniqueid: 44442 ID da Bag com cartas: 2330 na bag cartas voce coloca uniqueid: 44443 e actionid: 100 (quando coloca actionid: 100 os players não pode mover a bag) Finalizado.
  5. Olá galera do TK,procurei tanto um script de porta com level e não conseguir achar um que funcionasse,então decidi modificar uma script para passar na porta com tal level Primeiro vai em data/actions/scripts Crie um arquivo.lua (no caso criei portalvl.lua) Abra e cole isso lá Agora vá em data/actions/actions.xml E adicione isso: Explicação: if getPlayerLevel(cid) >= 250 then=Level necessário para passar. doTeleportThing(cid, {x=1993,y=2187,z=8})= Posição para onde o player será enviado ao clicar na porta doPlayerSendCancel(cid, "Voce nao tem level 250 para passar.")= Mensagem ao aparecer quando o player não tiver o level necessário <action actionid="5457" event="script" value="portalvl.lua"/> Numero para por na porta Nome do arquivo.lua Ajudei?RAP+
  6. Olá pessoal da comunidade de Tibia! Bom, hoje trouxe um pequeno e simples script, mas que pode ajudar muita gente. Vi alguns posts referindo aos NPCs que trocam determinados itens por outros, então tive a ideia de fazer algo que possa ter uma função semelhante e que funcione de uma maneira rápida. Fique à vontade em utilizá-la da maneira que quiser. Como funciona? O usuário vai usar a alavanca e irá adicionar um item em troca de outra item que você configurou no script. Em outras palavras, o usuário irá ganhar uma determinada quantidade de um item em troca de outra quantidade de um item diferente. (Tudo configurável) VERSÃO TESTADA: 8.60 - OTX --> Começando... Crie um arquivo com nome de changeItem.lua no diretório data/actions/scripts/ Logo após, adicione esse código dentro do arquivo criado: -- Script por Lordzetros para o forum Tibia King. local config = { itemNec = 2160, -- ID do item que necessita para efetuar a troca qtNec = 50, -- Quantidade do item que necessita para efetuar a troca itemNovo = 10137, -- ID do item que sera adicionado ao efetuar a troca qtNova = 1, -- Quantidade do item que sera adicionado ao efetuar a troca stor = 25869, -- Storage, ou seja, a numeracao que identificara se o usuario fez ou nao fez a quest ainda } function onUse(cid, item, fromPosition, itemEx, toPosition) pos = getPlayerPosition(cid) if getPlayerStorageValue(cid,config.stor) ~= -1 then doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"So eh permitido fazer a troca de itens apenas uma vez!") doSendMagicEffect(pos, CONST_ME_POFF) elseif getPlayerStorageValue(cid,config.stor) == -1 then if item.itemid == 1945 then if getPlayerItemCount(cid,config.itemNec) >= config.qtNec then doPlayerAddItem(cid, config.itemNovo,config.qtNova) doPlayerRemoveItem(cid,config.itemNec,config.qtNec) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Voce acabou de trocar "..config.qtNec.." "..getItemNameById(config.itemNec).." por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_HOLYAREA) setPlayerStorageValue(cid, config.stor, 1) else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem "..config.qtNec.." "..getItemNameById(config.itemNec).." para trocar por "..config.qtNova.." "..getItemNameById(config.itemNovo)..".") doSendMagicEffect(pos, CONST_ME_POFF) end end end end Em seguida, abra o arquivo com nome actions.xml que está localizada em data/actions/ E adicione essa linha de código no mesmo: <action actionid="9139" event="script" value="changeItem.lua"/> Preste atenção, pois o actionid será o número que irá colocar na alavanca em seu editor de mapa, ou seja, no caso acima está como 9139, logo, na alavanca terá que está como a seguinte imagem: Obs1.: Reparem que na imagem tem outro número destacado, que é o ID 1945, CERTIFIQUE-SE que a alavanca que irá utilizar no seu OT tenha esse mesmo ID, caso não tenha, basta mudar o número no código do script para o que irá utilizar no seu servidor. Obs2.: O código está configurado para que o usuário efetue a troca APENAS 1 VEZ, caso queira que ele troque quantas vezes quiser, apenas remova o seguinte comando do código: setPlayerStorageValue(cid, config.stor, 1) Obs3.: O resto que tinha que explicar está no próprio código, apenas faça um esforço de ler, agradeço. É isso, pessoal, espero que goste e aproveite. Como falei antes, é um código simples, pois comecei agora com Script, pretendo avançar no nível e funções que os mesmos desempenham, isso é só o começo, leve isso como uma prática de uma atividade para iniciante em scripts.
  7. Achei o comando /info com informações bem limitadas sobre o jogador e acabei decidindo fazer um melhor, dessa vez com uma janela exibindo todas as informações. Demonstração Caso você tenha gostado do script e deseja implementá-lo em seu servidor, você pode substituir o comando /info já existente. Para isso é só ir na pasta data/talkactions/scripts, abrir o arquivo info.lua e substituir todo o conteúdo pelo código abaixo. data/talkactions/scripts/info.lua Agora você vai precisar adicionar uma nova função a biblioteca do seu servidor, para isso vá até a pasta data/lib e abra o arquivo lib.lua e adicione o seguinte código ao fim do arquivo sem substituir nada. data/lib/lib.lua Com isso você já poderá ser capaz de digitar o comando /info nomeDoJogador e visualizar todas as suas informações (somente se ele estiver online). Caso você queira apenas adicionar este novo comando sem substituir o atual, simplesmente crie um arquivo chamando playerinfo.lua na mesma pasta do info.lua e adicione o seguinte código ao talkactions.xml antes do </talkactions> Não se esqueça de adicionar a função a biblioteca de seu servidor. Agora é só digitar /playerinfo nomeDoJogador para ver as suas informações. Bom é isso ai
  8. Olá pessoas, hoje vim trazer pra vocês um script que inicialmente fiz prum trabalho mas acabei gostando muito dele e decidi postar. To meio que indo dormir porque daqui a pouquinho tenho aula então vai ser tudo bem rapido e se vcs tiverem alguma dúvida comentem aqui. Primeiramente façam uma sala parecida com essa aqui: Não precisa ser necessariamente assim, mas ela deve ter as 3 bolas, uma alavanca e um local pra botar o dinheiro pras apostas. O sistema é baseado naqueles jogos de slot nos cassinos onde você aposta uma quantidade de dinheiro e se tirar 3 peças iguais você recebe o dobro do dinheiro apostado. em actions/scripts crie um arquivo chamado cassino.lua e adicione o seguinte dentro dele: Agora em data/actions/actions.xml adicione: <action actionid="16541" script="cassino.lua"/> Agora só botar a actionid na lever e configurar tudo de acordo com seu sv (as posições ali em pieces são as posições de cada peça, ou cada bola, se preferir.) se quiser fazer várias salas é só copiar o código pra um cassino2.lua e registrar outra tag <action actionid="16542" script="cassino2.lua"/>; Tá tudo comentado no código então acho que dispensa uma explicação formal de como editar, espero que vocês gostem Aqui tem um pequeno gif que o membro @eviltox nos forneceu: Abraços do Lobo!
  9. Bom pessoal, eu estou aqui liberando uma quest diária com intervalo de 24 horas, como aqueles baú de jogo tipo LOL que você coleta coisas. ~~Script~~ local t = { storage = 678678, -- storage, so mude se tiver usando pra outra coisa. tempo = 24, -- Tempo em horas. qt = 5, -- quatidade. itemidxx = 2160 -- Item que ira ganhar. } function onUse(cid, item, fromPos, itemEx, toPos) if getPlayerStorageValue(cid, t.storage) < os.time() then doPlayerSendTextMessage(cid, 25, "Voce ganhou "..t.qt.." "..t.itemidxx.." diário, espere dar 24 horas para pegar novamente.") doPlayerAddItem(cid,t.itemidxx,t.qt) setPlayerStorageValue(cid, t.storage, os.time() + t.tempo * 60 * 60) else doPlayerSendTextMessage(cid, 25, "Você precisa esperar ".. getPlayerStorageValue(cid, t.storage) - os.time() .." segundos para coletar novamente.") end return true end <action uniqueid="7865" script="teste.lua" /> 7865 = é a uniqueid que vai ter que ser colocada no bau pelo RME ~~Informação~~ ~Detalhes *Se o server cair por alguma razão de bug etc... do seu servidor, a contagem ainda continua sem problemas. ~~Dicas~~ *Você pode usar para uma quest diária. *Você pode usar para coletar pontos. *você fazer pra ganhar storage e assim completar outras quest. *Pode usar para roupas. muito mais vai pela sua imaginação. by Alexy, abração a todos vocês e obrigado por fazer parte desse fórum!
  10. Bom galera, hoje vim aqui trazer pra vocês um sisteminha bem legal que a PxG possui, no entanto, esse sistema eu fiz para um servidor de Tibia, então para vocês usarem em um derivado seria bom adapta-lo, devido a outros sistemas (como o fly do poketibia). Como seria esse sistema? Basicamente você digita o comando !walk e o seu personagem começará a andar na direção em que está virado até encontrar um obstáculo, ou até digitar o comando !walk novamente. Crie um arquivo chamado walk.lua em /data/talkactions/scripts/, e cole isso dentro: Em talkactions.xml coloque a tag: <talkaction words="!walk" event="script" value="walk.lua"/> Em creaturescripts.xml, veja se já tem o evento "logout", caso não tenha coloque: <event type="logout" name="PlayerLogout" event="script" value="logout.lua"/> Em /data/creaturescripts/scripts/, crie um arquivo chamando logout.lua (caso não tenha) e cole isso dentro:
  11. Olá TK Fans. Vá na pasta data/actions/script, copie e cole um arquivo e renomeie para mineracao.lua em seguida apague tudo o que está dentre e cole isso : Explicações : Em AZUL são as chances para cair os itens na mineração. EX : quanto menor você colocar mais dificil vai ser. Em VERMELHO é o intervalo em (SEGUNDOS) que vai ser criada a pedra no local minerado! EX : se você coloca 10 então será 10 segundos.. Se você coloca 30 serão 30 segundos e assim vai. Em VERDE é as recompensa da mineração. Só alterar o ID para o item que você quer que drope. Agora vá em data/actions/actions.xml e cole isso lá : IMPORTATE : Em ROXO é a ActionID do item para rodar a script. EX : Se você usar um pick normal o script não vai pegar por isso altere a pick para a actionid 6969. Ai você me pergunta para que isso? R: Para que o player que for minerar use uma pick "especial" ou seja uma pick normal não irá funcionar. ---Créditos--- Steeven
  12. Voltei recentemente e to montando um servidor custom, achei uns scripts bem OLD aqui do forum do Bruno Minervino de trocar o efeito da Wand por talkactions, porém era bem antigo rev 0.4 se não me engano e bastante gente pediu 1x + Informações sobre o sistema Tem uma seção de configuração fácil para você personalizá-lo como você gostaria! Você só precisa preencher a tabela de configuração encontrada no script principal, segue a tabela abaixo. o GIF não mostra o mouse, mas pra trocar o efeito é só clicar com o botao direito na WAND. -- Config -- Set wand how the wand deals damage DamageTypeWand = { values = false, -- If this is set to true then it will use the min and max values. If set to false the wand will use the formula -- Damage Values min/max wandMinDam = 20, wandMaxDam = 50, -- Damage Formula formula = { wandMinDam = function(level, maglevel) return -((level / 5) + (maglevel * 1.4) + 8) end, wandMaxDam = function(level, maglevel) return -((level / 5) + (maglevel * 2.2) + 14) end, } } -- Modal window config and storage id local config = { storage = 10009, titleMsg = "Change Weapon Damage Type", mainMsg = "Choose a damage type from the list", -- End Config -- Damage Table [1] = {element = "Holy"}, [2] = {element = "Fire"}, [3] = {element = "Death"}, [4] = {element = "Poison"}, [5] = {element = "Energy"}, [6] = {element = "Earth"}, [7] = {element = "Ice"}, } Vamos a instalação do script. 1) Instalar modal window AQUI 2) Registre o script em /data/actions/actions.xml adicionando esta linha (Substituindo "ITEMID" pelo item que deseja usar: no meu caso seria 13880, ficando assim <action itemid="13880" script="weapon_damage"/> <action actionid="ACTIONID" script="weapon_damage"/> 3) Crie um novo documento de texto em /data/actions/ scripts e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/c11fcRDg 4) Adicione a seguinte linha ao seu global.lua dofile('data/lib/weapon_damage.lua') 5) Crie um novo documento de texto em /data/lib/ e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/y5UKLEAY 6) Registre a arma em /data/weapons/weapons.xml adicionando esta linha: NOTE ESTA LINHA É VEJA SE VOCÊ ESTÁ USANDO UMA WAND! <wand id="ITEM ID HERE" level="300" mana="20" script="weapon_damage.lua"> <vocation name="Sorcerer" /> </wand> 7) Crie um novo documento de texto em /data/weapons /scripts e nomeie-o "weapon_damage.lua" e cole o seguinte: http://pastebin.com/CQV5zmJS créditos: Jano e strutZ.
  13. Fala, galerinha! Há um tempo atrás tinha feito esse sisteminha simples, como achei que não seria muito útil, acabou sumindo nas profundezas das pastas do meu computador. No entanto, como vi o pedido do membro @DboHere, acho que outras pessoas podem precisar. Como funciona: Uma key única que pode ser usada somente uma vez adicionará um item ao player quando for utilizada. - Criando uma key contendo 10 crystal coins: !createkey 2160,10 ou !createkey crystal coin,10 O player receberá a mensagem: "You have created the key: rXo-980376. You can add other items using !addkey." - Adicionando novos itens à mesma key: !addkey rXo-980376,2463,1 O player receberá a mensagem: "You have added other items to the key rXo-980376." - Checando os itens que uma key possui: !checkkey rXo-980376 - Utilizando a key o player receberá todos os itens associados a essa key. Depois disso, a key ficará inválida. !key rXo-980376 - Deletando a key da database (apenas se necessário): !deletekey rXo-980376 Configuração: Execute o seguinte comando no mysql do seu servidor: CREATE TABLE `code_key` ( `id` INT NOT NULL AUTO_INCREMENT, `key` VARCHAR(255) NOT NULL, `item_id` INT NOT NULL, `count` INT NOT NULL, `invalid` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ); Em talkactions/scripts, crie um arquivo: keysystem.lua Em "access" edite o grupo que pode utilizar cada comando. No exemplo abaixo, apenas players com acesso maior que 3 podem utilizar o comando !createkey. ["!createkey"] = {access = 3}, Em talkactions.xml, adicione a tag: <talkaction words="!key;!createkey;!deletekey;!checkkey;!addkey" event="script" value="keysystem.lua"/> E é isso, espero que seja útil
  14. Yo boyz, cá estou novamente. Eu estava procurando um Addon System funcional e vi que todos tinham bugs, então eu peguei um aqui no fórum mesmo, corrigi os bugs e fiz para que o sistema funcione com fly, ride, surf, look e que o addon suma quando o pokémon evoluir. Também é possível substituir um addon por outro, sem que o pokémon fique com o addon antigo. São muitos arquivos envolvidos, então, se eu esquecer algo e o sistema não esteja 100%, por favor, me fale. Deixei alguns exemplos no código para caso você esteja com preguiça e queira testar, além de comentar como adicionar novos addons. OBS: Eu testei apenas em PDA PokexCyan (TFS 1.0). actions/scripts nome_arquivo.lua local addons = { [14876] = {pokemon = "Shiny Charizard" , looktype = 1950}, [12344] = {pokemon = "Pidgeot" , looktype = 205}, [13990] = {pokemon = "Pidgeot" , looktype = 201}, --[ID do item] = {nome do pokémon, looktype}, } local function getOldAddon (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local numero = addons[item.itemid].looktype local pb = itemEx.uid local pk = addons[item.itemid].pokemon if not isPokeball(itemEx.itemid) then doPlayerSendCancel(cid, "Você só poder usar este item em uma poke ball.") return true end if getPlayerSlotItem (cid, 8).uid == pb and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) then doPlayerSendCancel (cid, "Desmonte do seu pokémon e volte-o para a poke ball.") return true end if getItemAttribute(pb, "addon") and getItemAttribute(pb, "addon") == numero then doPlayerSendCancel(cid, "Seu pokémon já está com este addon.") return true end if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "Por favor, volte o seu pokémon para a poke ball.") return true end if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, "Desculpe, você não pode adicionar este addon neste pokémon.") return true end if getItemAttribute (pb, "addon") and getItemAttribute (pb, "addon") > 1 then doPlayerSendTextMessage(cid, 27, "Você substituiu um "..getItemNameById (getOldAddon (getItemAttribute (pb, "addon"))).." por um "..getItemNameById (item.itemid).."!") else doPlayerSendTextMessage(cid, 27, "Agora seu pokémon usará este "..getItemNameById (item.itemid).."!") end doRemoveItem(item.uid, 1) doSetItemAttribute(pb, "addon", numero) return true end actions.xml: <action itemid="13989;12344;13990;ID do item; ID do item;" event="script" value="nome_arquivo.lua"/> em actions/order.lua, abaixo de: if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end adicione: local pb = getPlayerSlotItem(cid, 8).uid local flyAdd = flysAddon[getItemAttribute (pb, "addon")] local rideAdd = ridesAddon[getItemAttribute (pb, "addon")] if flyAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end elseif rideAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end end em lib/configuration.lua, será necessário adicionar três tabelas, uma para fly, outra para ride e outra para surf. Nesta tabela, o nome do pokémon não é requirido, o que talvez faça você se perder. Se você achar necessário, comente com "--" o nome do pokémon. Exemplo: [205] = {540, 1200}, -- Pidgeot [850] = {210, 800}, -- Dragonair procure por: flys e acima disso adicione: flysAddon = { [205] = {540, 1200}, [201] = {541, 1200}, --[número do looktype normal] = {looktype voando, número da tabela abaixo.} } procure por: rides e acima disso adicione: ridesAddon = { [556] = {555, 30}, --[número do looktype] = {looktype montado, número da tabela abaixo.} } procure por: rides e acima disso adicione: surfsAddon = { [201] = {541, 10}, [552] = {553, 10}, --[número do looktype] = {looktype nadando, speed da tabela abaixo.} } em lib/order.lua, procure por: elseif skill == "fly" then e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (pb, "addon")][1]}, -1) end depois, no mesmo arquivo, procure por: elseif skill == "ride" then e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (pb, "addon")][1]}, -1) end em movements/surf.lua, procure por: if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 doTeleportThing(cid, fromPosition, false) return true end e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType}, -1) else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute(pb, "addon")][1]}, -1) end logo abaixo disso, vocês vão encontrar: (isso não envolve o funcionamento do sistema de addon, mas é um bug que eu achei no meu surf. Todos os pokémon tinham velocidade fixa de 1500.) local speed = 75 + PlayerSpeed + getSpeed(getCreatureSummons(cid)[1]) * 8 * speedRate substitua por: local speed = 75 + PlayerSpeed + surfs[getPokemonName(getCreatureSummons(cid)[1])].speed * 8 * speedRate no mesmo arquivo, procure por: if getItemAttribute(item.uid, "nick") then doCreatureSay(cid, getItemAttribute(item.uid, "nick")..", I'm tired of surfing!", 1) else doCreatureSay(cid, getItemAttribute(item.uid, "poke")..", I'm tired of surfing!", 1) end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] e abaixo adicione: local pb = getPlayerSlotItem(cid, 8).uid if surfsAddon[getItemAttribute(pb, "addon")] then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute(pb, "addon")}, -1) end end em actions/goback.lua, procure por: doSendMagicEffect(getCreaturePosition(pk), effect) abaixo adicione: local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getItemAttribute(pb, "addon") if not look then doSetItemAttribute(pb, "addon", 0) end if look and look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end em actions/evolution.lua, procure por: local ball = getPlayerSlotItem(cid, 8).uid há 12 linhas iguais a essa nesse arquivo e embaixo de TODAS elas, adicione: doItemSetAttribute (ball, "addon", 0) em creaturescripts/look.lua, procure por: 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 se novamente, esse código aparece duas vezes no arquivo. E também, novamente, embaixo dos dois, adicione: if getItemAttribute(thing.uid, "addon") then if flysAddon[getItemAttribute (thing.uid, "addon")] or ridesAddon[getItemAttribute (thing.uid, "addon")] or surfsAddon[getItemAttribute (thing.uid, "addon")] then if getItemAttribute(thing.uid, "addon") > 1 then table.insert(str, " Has the addon "..getItemNameById (getAddonId (getItemAttribute (thing.uid, "addon")))..".") end end end E no começo desse arquivo, adicione: local addons = { [14876] = {pokemon = "Shiny Charizard" , looktype = 1950}, [12344] = {pokemon = "Pidgeot" , looktype = 205}, [13990] = {pokemon = "Pidgeot" , looktype = 201}, --[ID do item] = {nome do pokémon, looktype}, } local function getAddonId (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end end end a tabela "addons" deve ser a mesma que a do actions/addon.lua. Então, quando você adicionar algo no addon.lua, deverá adicionar também no look.lua. em login.lua, procure por: doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) e substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end procure por: doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1 substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[poke].looktype + 351}, -1) else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end procure por: doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) substitua por: if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end
  15. Em data/talkactions/script Crie um Arquivo com o nome playerchangename.lua Cole isto: em Talkaction Coloque isto <talkaction words="!name" filter="quotation" event="script" value="playerchangename.lua"/> No caso será usado assim: (!name"Jon Snow) Creditos @Noninhouh
  16. Salve carai! Então, tenho estudado um pouco de lua e acabei fazendo um script, simples, mas que pode vir a ser útil para alguns servidores... O que o script faz? É simples, ele te deixa tirar a "pele" de um animal ainda vivo, como a obsidian knife faz com os mortos. PS: Você pode configurar os mobs e suas respectivas "peles" no script, você só precisar tem um mínimo de conhecimento em lua. PS²: Script feito em um TFS 1.2 recém baixado. actions.xml: (PS: Não esqueça de definir o ID do item a ser usado) <action itemid="ID DO ITEM" script="skinning.lua" /> Observação: A Sintaxe em lua nos codes do fórum está aparentemente bugada, apenas copie o código abaixo e cole no seu editor lua que ficará normal. actions/scripts/skinning.lua: local wool = {"Sheep", "Black Sheep"} -- Creatures configuration for the first table which gives wool when skinned local leather = {"Deer", "Bear", "Rat"} -- Creatures configuration for the second table which gives minotaur leather when skinned (Should probably rename the item to leather by the way) local dleather = {"Dragon", "Wyvern"} -- Creatures configuration for the third table which gives green dragon leather when skinned (Could also change this to green leather or something) local tPos = getCreaturePosition(target) function onUse(player, item, fromPosition, target, toPosition, isHotkey) if isCreature(target) and isInArray(wool, getCreatureName(target)) then doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned. player:addItem(11236, 3) -- Item which will be added when the mobs at "Wool" table are skinned and its amount. doCreatureAddHealth(target, -10) elseif isCreature(target) and isInArray(leather, getCreatureName(target)) then doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned. player:addItem(5878, 1) -- Item which will be added when the mobs at "Leather" table are skinned and its amount. doCreatureAddHealth(target, -20) elseif isCreature(target) and isInArray(dleather, getCreatureName(target)) then doSendMagicEffect(tPos, 1) -- The magic effect that will be shown @ target's position when skinned. player:addItem(5877, 1) -- Item which will be added when the mobs at "DLeather" table are skinned and its amount. doCreatureAddHealth(target, -50) elseif isCreature(target) == false then player:sendTextMessage(MESSAGE_STATUS_WARNING, "You can only skin creatures.") -- The error message it will give if the player is trying to skin something that isn't a creature. else player:sendTextMessage(MESSAGE_STATUS_WARNING, "You cannot skin this creature.") -- The error message it will give if t he player is trying to skin a creature which isn't added in the configuration above. return true end end
  17. Versão: 1.2 Distro: 0.4 Criado por: Eddy Havoc Descrição: Este script deixa restrito certas palavras com base no level do jogador. TAG: <talkaction words="lixo;vsf;tnc;vtnc;server;servidor" event="script" value="bwords.lua"/> SCRIPT: talkactions/scripts/bwords.lua function onSay(cid, words, param) local level = getPlayerLevel(cid) local lvlmin = 20 local lvlMsg = "Voce precisa de mais tempo para poder falar sobre isso. Você ficara mudo por "..time.." segundos!" local blockMsg = "Palavras Bloqueadas!" local time = 120 if level < lvlmin then doPlayerSendtTextMessage(cid, MESSAGE_INFO_DESCR, lvlMsg ) doCreatureSay(cid, blockMsg, TALKTYPE_SAY) doMutePlayer(cid, time) elseif level >= lvlmin then doCreatureSay(cid, words, TALKTYPE_SAY) end return TRUE end Atenção o script não foi testado, fiz enquanto estava na aula de Estatística Aplicada aqui na Faculdade... Se alguém puder validar, agradeço. Att, Eddy Havoc.
  18. • Mining System • Vim aqui disponibilizar o mining, não é tão avançado como o de outros mas ele é totalmente automático tanto para colocar items quanto para vender os items (alavanca). É uma script simples e fácil de entender, podendo ter alterações com pessoas que não tem muito experiencia em lua. Mesmo que ele seja simples, o forum esta morrendo, pretendo fazer updates nele, caso alguém tenha alguma ideia do que possa fazer, só deixar um comentário. • Explicação • › Mining_Config config = { Level = 8, Axe_Skill = 10, Paredes = {5646,5640,5645,5639,5644,5648}, } -- Level = Level necessario para minerar -- Axe_Skill = Skill de axe necessaria para poder minerar -- Paredes = Paredes que vao ser mineradas › Mining_Items config = { [1] = {Item = 2157, Random_min = 1, Random2_min = nil, Random_max = 3, Random2_max = nil, Count = 2, Special_Storage = nil, Magic_Effect = nil, Count_Shop = nil, Money_Shop = nil}, -- Gold Nugget } -- Random_min = A chance de cair o item em math.random -- Random2_min = Essa chance é menor, ou seja, mais dificil de cair. -- Random_max = É a chance maxima -- Random2_max = A mesma coisa que o de cima -- Count = A quantidade maxima que pode cair, é aleatorio -- Special_Storage = Caso voce queira que de alguma storage, para ver quantos players ja conseguiram e etc.. -- Magic_Effect = Caso queira que de algum magic effect diferente, se for nil, será o padrao. -- Count_Shop = Quantidade necessaria para poder vender o item no shop (alavanca) -- Money_Shop = Quanto que o item vai custar, por unidade ou seja, se eu colocar Count_Shop = 100 e Money_Shop = 2000, vai ser 100 * 2000. -- No final que tem esse "--" é o nome do item, é melhor se organizar assim, pois se ficar muitos items e voce querer fazer alguma manutenção, facilita muito. Bom, eu acho que é isso, não tem mais nada para se explicar. Então vamos para o script. Data/lib Data/actions/scripts Data/actions -- Abra o actions.xml <action itemid="id do item" script="nome do arquivo"/> Data/actions/scripts -- Esse aqui é o shop, não é obrigatório. Data/actions -- Abra o actions.xml <action actionid="id da action" script="nome do arquivo"/> Caso tenha gostado, deixe seu REP+, ajuda e motiva muito trazer conteúdo para o forum.
  19. data/actions/script e crie um arquivo "Boost Stone.lua actions.xml Qualquer erro ou dúvida deixa ai nos comentários.
  20. Eae galera, faz tempo que não contribuo com o fórum, eu estava com um sistema de profissão aqui então decidi disponibilizá-lo. Vídeo - Apresentação básica do sistema. Informações Básicas. Download: Clique aqui Scan: Clique aqui Créditos
  21. Fiz o código a pedidos do membro @Micheel15, onde o sistema funciona da seguinte maneira: você usa o comando !sellpoints quantidade quando usar esse comando, os seus pontos do site são passados para um paper, com esse paper você pode trocar ou vender no servidor. BENEFICIOS : Vender ou transferir pontos. IMAGEM A BAIXO : Ai quando você der use, os pontos são passados para sua conta. lib adicione function getPremiumPoints(cid) local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)) return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points") end function setPremiumPoints(cid, amount) return db.executeQuery("UPDATE `accounts` SET `premium_points` = "..amount.." WHERE `id` = "..getPlayerAccountId(cid)) end talk sell_points.lua function onSay(cid, words, param) local var,points = "[Sell Point System] Este documento vale %s points para você usar no site.",getPremiumPoints(cid) local min,max = 5, 100 if param == "" or not tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, use somente numeros.") return true elseif tonumber(param) < min or tonumber(param) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, Minimo "..min.." e Maximo "..max.." points.") return true elseif points < tonumber(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Desculpe, mas você só possui "..points.." Premium Points.") return true end local item = doPlayerAddItem(cid, 7702,1) doItemSetAttribute(item, "description", var:format(tonumber(param))) setPremiumPoints(cid, points-tonumber(param)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,"[Sell Point System] Você recebeu um paper com "..param.." Premium Points.") return true end tag <talkaction words="!sellpoints;/sellpoints" event="script" value="sell_points.lua"/> actions paper_points.lua function onUse(cid, item, frompos, item2, topos) local var = getItemAttribute(item.uid, "description") if var == nil then return true end local x = var:match("%b[]") if x == "[Sell Point System]" then local ret = var:match("%d+") doPlayerSendTextMessage(cid, 22,"você recebeu "..ret.." Premium Points.") setPremiumPoints(cid, getPremiumPoints(cid)+ret) doRemoveItem(item.uid) end return true end tag <action itemid="7702" script="paper_points.lua"/>
  22. [Esses dias criei um tópico pedindo isso, ninguém respondeu. Mas consegui criar juntando alguns scripts que tinha aqui] Basicamente é uma action que clica em algum lugar e limpa uma determinada área. <action actionid="XXXX" event="script" value="Limpa_area.lua"/> Limpa_area.lua Abraços :D
  23. Descrição: Execute no banco de dados: CREATE TABLE resgate_codes ( id INTEGER NOT NULL, code VARCHAR( 255 ) NOT NULL, items VARCHAR( 500 ) NOT NULL, premium_points INT NOT NULL DEFAULT 0, premium_days INT NOT NULL DEFAULT 0, PRIMARY KEY ( id ) ); Adicione na sua lib: function getPremiumPoints(cid) local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid)) return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points") end function setPremiumPoints(cid, amount) return db.executeQuery("UPDATE `accounts` SET `premium_points` = "..amount.." WHERE `id` = "..getPlayerAccountId(cid)) end function getCodesFromServe(p) local ret = db.getResult("SELECT `id` FROM `resgate_codes` WHERE `code` = "..db.escapeString(p)) return ret:getID() ~= -1 and ret:getDataInt("id") or 0 end Data/Talkactions createcode.lua function onSay(cid, words, param, channel) local param = param:lower() if param == "" or not param then doPlayerSendCancel(cid, "insira um codigo novo.") return true end local code = getCodesFromServe(param) if code ~= 0 then doPlayerSendCancel(cid, "Your code ["..param.."] already exist.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your code ["..param.."] create sucefull, now you can add items, premium days or premium points.") return db.executeQuery("INSERT INTO `resgate_codes` (`code`, `items`, `premium_points`, `premium_days`) VALUES ('".. param .."', '{}', '0', '0');") end addcode.lua function onSay(cid, words, param, channel) local t = string.explode(param:lower(), ",") if (param == "") then doPlayerPopupFYI(cid, "[Redeem Code System]\n\nHow Use Command?\n\nTo add rewards from code enter: /addcode,type\n\n[Types:]\n\nItems\nPremium\nPoints\n\n\Exemples:\n\n/addcode items,crystal coin, 100 --To add item from code, use item name, amount.\n\n/addcode premium,10 -- To set 10 premium days in code\n\n/addcode points,20 -- To set 20 premium points in code") return true end local code = getCodesFromServe(t[1]) if code == 0 then doPlayerSendCancel(cid, "Code ["..t[1].."] does exist.") return true end if isInArray({"items","item","itens","iten"}, t[2]) then if tonumber(t[4]) ~= nil and tostring(t[3]) ~= nil then local itemid, amount = getItemIdByName(t[3], false), tonumber(t[4]) if not itemid then doPlayerSendCancel(cid, "Sorry, this item does not exist.") return true end local d = db.getResult("SELECT `items` FROM `resgate_codes` WHERE `id` = "..code):getDataString("items") local y,n = {},0 for a,b in d:gmatch("(%d+),(%d+)") do n = n + 1 y[n] = {a,b} end table.insert(y, {itemid, amount}) local str = "{" for i, x in pairs(y) do str = str.."{".. x[1] .. "," .. x[2] .. "}" if i ~= table.maxn(y) then str = str .. ',' else str = str .. '}' end end db.executeQuery("UPDATE `resgate_codes` SET `items` = "..db.escapeString(str).." WHERE `id` = "..code) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You Added "..amount.." "..t[3].." from code ["..t[1].."].") return true else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to enter the item name, amount.")return true end elseif isInArray({"pa","premium","premmy","premiun"}, t[2]) then local min, max = 1, 999 if not tonumber(t[3]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, only number.") return true elseif tonumber(t[3]) < min or tonumber(t[3]) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, Min "..min.." and Max "..max.." points.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Now the code receives total "..t[3].." premium days.") db.executeQuery("UPDATE `resgate_codes` SET `premium_days` = "..t[3].." WHERE `id` = "..code) return true elseif isInArray({"points","pp","point","pontos"}, t[2]) then local min, max = 1, 999 if not tonumber(t[3]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, only number.") return true elseif tonumber(t[3]) < min or tonumber(t[3]) > max then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, Min "..min.." and Max "..max.." points.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Now the code receives total "..t[3].." premium days.") db.executeQuery("UPDATE `resgate_codes` SET `premium_points` = "..t[3].." WHERE `id` = "..code) return true end return true end codes.lua function onSay(cid, words, param, channel) local param,str = param:lower(),'' if not param then return true end local code = getCodesFromServe(param) if code == 0 then doPlayerSendCancel(cid, "Your code ["..param.."] does exist or Already used.") return true end local info = db.getResult("SELECT * FROM `resgate_codes` WHERE `id` = "..code) local d,k,p = info:getDataString("items"),info:getDataInt("premium_points"),info:getDataInt("premium_days") local t,n = {},0 for a,b in d:gmatch("(%d+),(%d+)") do n = n + 1 t[n] = {a,b} end if #t > 0 then local backpack = doPlayerAddItem(cid, 1999, 1) for _, i_i in ipairs(t) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end str = str.."".. (str == "" and "" or ", ") ..""..getItemsFromList(t) end if p > 0 then doPlayerAddPremiumDays(cid, p) str = str.."".. (str == "" and "" or ", ") .." "..p.." premium days" end if k > 0 then local total = (getPremiumPoints(cid)+k) setPremiumPoints(cid, total) str = str.."".. (str == "" and "" or ", ") .." "..k.." premium points" end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You successfully redeemed the code ["..param.."]! Reward(s):\n"..str) return db.executeQuery("DELETE FROM `resgate_codes` WHERE `id` = "..code) end talkactions.xml <talkaction words="/resgatecode;!resgatecode" event="script" value="codes.lua"/> <talkaction words="!createcode;/createcode" access="5" event="script" value="createcode.lua"/> <talkaction words="!addcode;/addcode" access="5" event="script" value="addcode.lua"/> Observações: * Testado somente em servidores com SQLITE * Futuramente estarei acrescentando e modificando o código para melhorias * Em breve um comando especial "/generate codes" para gerar códigos com itens randômicos(com chances) * Quem tiver alguma ideia ou querer passar para servidores com site estarei dando auxilia no tópico.
  24. Hoje vou ensinar como criar senzu beans para seu ot, você irá precisar de: Um editor de cliente (dat e spr), pode ser o object builder ou tibia dat editor. Notepad ++. Ot itemeditor. Vamos começar, com sua sprite já salva iremos abrir o cliente, colocar por cima de um item e salvar. Depois te der feito esse procedimento, não feche o dat editor ainda, pois iremos usa-lo novamente, iremos para o próximo passo, você irá na pasta data>actions>heal e criará um arquivo lua com o nome da sua senzu, no meu caso, senzu amarela.lua e colocará isso dentro: Onde: ITEM = 2195 id do item que você descobre através do item editor (editor de otb), veja como descobrir: Primeiro você irá abrir seu cliente, depois o item.otb Depois vamos abrir o items.otb Dê um ctrl + F e procure pelo id do item que você substituiu, e pronto, achamos o id do item. Ainda no itemeditor, você irá mudar o que estiver de vermelho, pois ainda não está configurado corretamente, veja a seguir: Quando não tiver mais letras vermelhas, dê um ctrl + S. local wait = 1.5 Tempo de exhaustion. REG_HEALTH = 100000 O tanto de vida que irá encher. REG_MANA = 100000 O tanto de mana que irá encher. doCreatureSay(cid, 'Aaahhh! Me Sinto Bem Melhor!', TALKTYPE_ORANGE_1) Frase que ele dirá quando usar a senzu. doSendMagicEffect(pos1, 82) Efeito que irá usar junto com a senzu, que no meu caso, é 82. Depois desses passos, iremos para o diretório data>actions, abriremos o arquivo actions.xml e adicionaremos a seguinte frase: Onde: <action itemid="2195" Id da senzu. value="heal/senzuamarela.lua" /> Nome do arquivo que criamos dentro da pasta heal. Salve e feche. Depois iremos para data>items e abriremos o arquivo items.xml, dê um ctrl + F e procure pelo Id da sua senzu. Substitua o que estiver de 2195 pra baixo até o próximo </item> por: Ficando assim: Em name=''x'' você adicionará o nome no singular e em plural=''x'', obviamente em plural, em value=''xxx'' você adicionará o valor que ela irá curar, esse valor aparecerá quando você der look nela dentro do jogo. E é isso, com isso sua senzu estará funcionando normalmente!! Créditos: Ismaldias2
  25. A script funciona da seguinte forma, quando voce digitar o comando, vai sair um effect em todos players online, mas nao é o effect que é só no player, é aquele effect que sai envolta de voce. Igual o comando /x. function onSay(cid, words, param, channel) param = tonumber(param) for _, pid in ipairs(getPlayersOnline()) do local position = getCreaturePosition(pid) for i = 1, 30 do doSendDistanceShoot(position, {x = position.x + math.random(-7, 7), y = position.y + math.random(-5, 5), z = position.z}, param) end doCreatureSay(pid, 'XAZAAANNN') end return true end

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...