E incrível o sistema
Você manipula a criatura de um jeito espetacular salvando a criatura com o pet:setit
A única coisa chata seria as storages.
Mais ta incrível
Parabéns.
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

E incrível o sistema
Você manipula a criatura de um jeito espetacular salvando a criatura com o pet:setit
A única coisa chata seria as storages.
Mais ta incrível
Parabéns.
info
Grupo: Campones
Registrado: 21/01/10
Posts: 57
Reputação: +5
Char no Tibia: Eragon

Muito bom meu futuro professor :]
info
Grupo: Marquês
Registrado: 29/10/11
Posts: 1.2k
Reputação: +134
Gênero: Masculino

Muito bom,cara.
Eu pretendo fazer umas mudanças e transformar isso pra dragonball,fazendo as raças do meu server,podendo ter dragao ;x
Abçs;
E incrível o sistema
Você manipula a criatura de um jeito espetacular salvando a criatura com o pet:setit
A única coisa chata seria as storages.
Mais ta incrível
Parabéns.
Então, cara, eu até fiz enquanto na fase de desenvolvimento por querys na database. O problema é que se toda hora eu tenho que salvar o pet na database e obter dados dela, acabei notando o pequeno lag que se criava na execução dos comandos, aí fiz por storage.
Obrigado a todos.
info
Grupo: Herói
Registrado: 07/01/08
Posts: 2.3k
Reputação: +514
Gênero: Masculino
Char no Tibia: Tonynh

Cara, sistema incrível!
Tu me mostrou a print pelo skype, muito bom mesmo!
Obrigado por compartilhar com a comunidade =p
info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

Legal o sistema, mas era pra NÓS termos feito, você me atropelou legal, maliggggggggnnnnnnoooooooooooo.
Perfeito, simples e muito funcional!
Pode até abrir novas possibilidades para o mundo Poketibiano!
Vou ver o que já consigo fazer com isso aê !
Parabens One!
Já levou meu REP+
Editado Janeiro 25 por DoGoZ
Tive que trocar os scripts do tópico por um erro básico no sistema.
Abraços.
Bem legal one, por ser orientado a objetos ja é um grande diferencial que o deixa perfeito ![]()
info
Grupo: Campones
Registrado: 02/03/11
Posts: 11
Reputação: +10
Gênero: Masculino
Char no Tibia: Cristmans

Muito bom!
Eu não estou conseguindo colocar o NPC no mapa? Alguém pode me ajudar numa solução?
Obrigado!
Bankayo, certifique se ter instalado o npc corretamente.
O pet trainer.lua em data/npc/scripts e o Pet Trainer.xml em data/npc.
Lembrando que para colocar o npc no mapa é através do remere's é necessário importa-lo para aparecer na lista de npcs, para importar faça o seguinte,
File > Import > Import Monsters/NPC, e escolha o arquivo Pet Trainer.xml(que deverá estar na pasta do seu servidor).

Depois vá em Pallete > Creature Pallete > NPC
Escolha o Pet Trainer e coloque em um local desejado no mapa.
Editado Janeiro 26 por DoGoZ
Está sim, tudo de acordo com o que você explicou no tutorial.
Criei o respawn pelo Remere's e coloquei o NPC.
Reiniciei o server, mas o NPC não apareceu no lugar devido.
A versão do OT é 8.6.
Aparece algum erro no console?
@EDIT
Bankayo a solução é simples, ali na postagem antes do tag do xml tem um uma linha vazia,
É só excluir ela, deixar apenas o script, testado aqui!
Editado Janeiro 26 por DoGoZ
info
Grupo: Marquês
Registrado: 05/07/09
Posts: 1.3k
Reputação: +732
Pet System OOP
Boa tarde, pessoal.
Depois de ver muitos sistemas de pet para Tibia, resolvi desenvolver o meu próprio sistema de pets. O diferencial do meu sistema é que ele é orientado a objetos. Sim, ele trata o pet do jogador como um objeto em Lua e suas ações como métodos.
Essa ainda é uma versão básica, que irei aprimorar aos poucos, igual fiz com meu Forge System e Refine System.
Por se tratar de uma biblioteca orientada a objetos, ele pode ser usado por qualquer scripter em diversos sistemas, e se bem adaptado, dá até para fazer um Poketibia orientado a objetos. Aliás, os comandos estão bastante semelhantes a Pokétibia.
Instalação
1. Crie um arquivo em data/lib com o nome pet-system.lua e cole o conteúdo abaixo:
2. Crie um arquivo em data/lib com o nome pet-spells.lua e cole o código abaixo:
3. Crie um arquivo em data/talkactions/scripts, chamado pet-talkactions.lua e cole o conteúdo abaixo:
4. No talkactions.xml
5. Crie um arquivo em data/creaturescripts/scripts com o nome pet-creaturescripts.lua e adicione o conteúdo abaixo:
6. No arquivo login.lua de data/creaturescripts/scripts, adicione:
7. No arquivo creaturescripts.xml, adicione:
8. Em cada arquivo XML de cada monstro que servirá como pet, adicione:
9. Mude o flag convinceable de cada monstro que será um tipo de pet.
10. Crie um arquivo chamado pet trainer.lua em data/npc/scripts, adicione:
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local petState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local PetPrices = { ["rat"] = {1000, 200}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if msgcontains(msg, "sell") then local say = "I can offer you these pet species: " for pet_name, k in pairs(PetPrices) do local first = true if Pets[pet_name] then say = say .. (first == true and "" or ", ") .."{".. pet_name .. "}" first = false end end selfSay(say, cid) talkState[talkUser] = 1 elseif msgcontains(msg, "revive") then if getCreatureStorage(cid, PET_SPECIE) == -1 then selfSay("You don't have a pet", cid) return true end if getCreatureStorage(cid, PET_ALIVE) == 0 then if doPlayerRemoveMoney(cid, PetPrices[getCreatureStorage(cid, PET_SPECIE):lower()][2]) then selfSay("Your pet is now alive.", cid) doCreatureSetStorage(cid, PET_ALIVE, 1) else selfSay("Sorry, you need ".. PetPrices[getCreatureStorage(cid, PET_SPECIE)][2] .." gold.", cid) end else selfSay("Sorry, your pet is alive.", cid) end elseif talkState[talkUser] == 1 then if PetPrices[msg] then selfSay("A good choice, so do you want to buy a ".. msg .." pet? It will cost ".. PetPrices[msg][1] .." gold.", cid) talkState[talkUser] = 2 petState[talkUser] = msg else selfSay("Sorry, I don't know this pet specie", cid) end elseif talkState[talkUser] == 2 then if msgcontains(msg, "yes") then if get_pet(cid) or getCreatureStorage(cid, PET_SPECIE) ~= -1 then selfSay("Sorry, you already have a pet.", cid) return true end local pet = petState[talkUser] if getPlayerMoney(cid) < PetPrices[pet][1] then selfSay("Sorry, you don't have enough money", cid) return true end selfSay("This is your new pet, take care of it.", cid) Pets[pet]:create():hatch(cid) elseif msgcontains(msg, "no") then selfSay("Then not.", cid) talkState[talkUser] = 0 end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())11. Crie um arquivo chamado Pet Trainer.xml em data/npc, adicione:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Pet Trainer" script="pet trainer.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I {sell} and {revive} pets."/> </parameters> </npc>Configuração
O Pet System OOP é todo orientado a objetos. Para criar novas raças de pet é muito, mas muito simples mesmo. Basta uma linha:
PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14)Como segue o modelo abaixo:
PetSpecie:new(NOME_DO_MONSTRO, HP_INICIAL, MP_INICIAL, HP_POR_LEVEL, MP_POR_LEVEL, {[1] = MAGIA_1, [2] = MAGIA_2, [3] = MAGIA_3, ...}, NOME_DA_EVOLUÇÃO, LEVEL_DA_EVOLUÇÃO)Caso você não queira que o pet evolua, coloque os dois parâmetros como false.
E para criar novas magias, é só seguir o mesmo modelo das duas magias padrão dentro de pet-spells.lua.
Demonstração
Este sistema está no Github sob a licença Gnu GPL v3.
Você pode baixar os scripts aqui.
Abraços.
Editado Abril 8 por CyberBot