Search the Community
Showing results for tags 'pet'.
Found 6 results
-
Antes de fazer a sua pergunta, tenha certeza de ter lido as regras da seção e o guia abaixo: https://forums.otserv.com.br/index.php?/forums/topic/168583-regras-da-seção/ https://forums.otserv.com.br/index.php?/forums/topic/165121-como-fazer-uma-pergunta-ou-o-grande-guia-do-usuário-com-dúvidas/ Descreva em algumas palavras a base utilizada. (Nome do servidor / Nome do cliente / Nome do website / etc.). Ex: The Forgotten Server 1.3, Versão: 10.98. Base: Otservbr x 12 Qual é a sua pergunta? o pets não sobe escadas o que poderia ser? Você tem o código disponível? Se tiver poste-o na caixa de código que está dentro do spoiler abaixo: Você tem alguma imagem que possa auxiliar no problema? Se sim, anexe-a dentro do spoiler abaixo:
-
Olá pessoal, Eu consegui adaptar o Summon/Pet para entrar no PZ, passar por dentro dos jogadores e não ser atacado. Porém, estou precisando agora que ele passe também por dentro dos monstros. A ideia do summon será apenas um suporte (como os do Naruto), ele não atrapalhará em nada, apenas dará alguns bônus como life, mana e outros para o dono. Para uma possível ajuda nessa adaptação, vou mostrar baixo aonde editei o código para que ele possa passar por dentro do player (arquivo player.cpp) alterei as linhas onde têm bool Player::canWalkthrough(const Creature* creature) const até o fechamento dela e bool Player::canWalkthroughEx(const Creature* creature) const também até o fechamento dela por todo esse código abaixo: bool Player::canWalkthrough(const Creature* creature) const { if (group->access || creature->isInGhostMode()) { return true; } if (creature->isSummon() && creature->getMaster()->getPlayer()) { return true; } const Player* player = creature->getPlayer(); if (!player) { return false; } const Tile* playerTile = player->getTile(); if (!playerTile || (!playerTile->hasFlag(TILESTATE_PROTECTIONZONE) && player->getLevel() > static_cast<uint32_t>(g_config.getNumber(ConfigManager::PROTECTION_LEVEL)))) { return false; } const Item* playerTileGround = playerTile->getGround(); if (!playerTileGround || !playerTileGround->hasWalkStack()) { return false; } Player* thisPlayer = const_cast<Player*>(this); if ((OTSYS_TIME() - lastWalkthroughAttempt) > 2000) { thisPlayer->setLastWalkthroughAttempt(OTSYS_TIME()); return false; } if (creature->getPosition() != lastWalkthroughPosition) { thisPlayer->setLastWalkthroughPosition(creature->getPosition()); return false; } thisPlayer->setLastWalkthroughPosition(creature->getPosition()); return true; } bool Player::canWalkthroughEx(const Creature* creature) const { if (group->access) { return true; } if (creature->isSummon() && creature->getMaster()->getPlayer()) { return true; } const Player* player = creature->getPlayer(); if (!player) { return false; } const Tile* playerTile = player->getTile(); return playerTile && (playerTile->hasFlag(TILESTATE_PROTECTIONZONE) || player->getLevel() <= static_cast<uint32_t>(g_config.getNumber(ConfigManager::PROTECTION_LEVEL))); } E também adicionei esse código g_game.updateCreatureWalkthrough(creature); acima do g_game.updateCreatureType(creature); que está no arquivo luascript.cpp Pronto, com isso ele passa a andar por dentro dos jogadores. -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- APROVEITANDO o mesmo post, se alguém souber como faz para Summonar DENTRO DO PZ, por favor. Eu adaptei para ele entrar no PZ quando o jogador entrar, mas dentro do PZ não da pra sumonar caso o Pet/Summon não esteja sumonado. Vou mostrar aonde editei os códigos aqui abaixo pra facilitar o suporte. Dentro de ReturnValue Tile::queryAdd(int32_t, const Thing& thing, uint32_t, uint32_t flags, Creature*) const no arquivo tile.cpp procurei a linha if (hasFlag(TILESTATE_PROTECTIONZONE | TILESTATE_FLOORCHANGE | TILESTATE_TELEPORT)) { e adicionei o código seguinte logo a baixo dele. // INÍCIO SUMMON ENTRAR NO PZ if (creature->isSummon()) { if (hasFlag(TILESTATE_BLOCKSOLID)) { return RETURNVALUE_NOTPOSSIBLE; } return RETURNVALUE_NOERROR; } // FIM SUMMON ENTRAR NO PZ Pronto, agora ele já entra no PZ com o player. -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- E pra finalizar, o código que usei pra sumonar (scripts do movements): (obs.: como não estou conseguindo fazer com que sumone-o dentro do PZ, eu adaptei um sistema para avisar que dentro do PZ não da pra sumonar, porém não é isso que eu quero, coloquei provisoriamente). local cfg = { monster = "Rat" } function onDeEquip(cid, item, slot) if #getCreatureSummons(cid) >= 1 then local pet = getCreatureSummons(cid) for _, k in ipairs(pet) do doSendMagicEffect(getThingPos(k), 13) doRemoveCreature(k) return true end end return true end function onEquip(cid, item, slot) if getTilePzInfo(getCreaturePosition(cid)) then doPlayerSendCancel(cid, "This summon is not permitted in a protection zone.") else if #getCreatureSummons(cid) == 0 then local monster = doSummonCreature(cfg.monster, getThingPos(cid)) doConvinceCreature(cid, monster) doSendMagicEffect(getThingPos(cid), 13) end end return true end -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- Para o Pet/Summon não ser atacado eu simplesmente marquei como "0" dentro do código do próprio monstro <flag attackable="0"/> DESDE JÁ OBRIGADO !
-
Pet System Você fala !pet e terá um cachorrinho de estimação, falando !pet outra vez ele sumirá, não é possível fazer pets em zonas de proteção. Se seu pet morrer não importa, é possível fazer ele quantas vezes quiser. No futuro estarei adicionando mais tipos de pet como gatos e esquilos, mas por enquanto é só o cachorro. Na pasta data/talkactions/scripts de seu ot crie um arquivo com nome de pet.lua e coloque isto: function doPlayerAddSummon(cid, name, pos) local creature = doSummonCreature(name, pos) doConvinceCreature(cid, creature) return creature end function onSay(cid, words, param) local petUid = 0 local pos = getCreaturePosition(cid) local store = getPlayerStorageValue(cid, 1000) if words == "!pet" then if store == -1 then if getTilePzInfo(pos) == FALSE then petUid = doPlayerAddSummon(cid, "Dog", pos) setPlayerStorageValue(cid, 1000, petUid) else doPlayerSendCancel(cid, "You can not call your pet in a protection zone.") end else if isCreature(store) == TRUE then doRemoveCreature(store) setPlayerStorageValue(cid, 1000, 0) else if getTilePzInfo(pos) == FALSE then petUid = doPlayerAddSummon(cid, "Dog", pos) setPlayerStorageValue(cid, 1000, petUid) else doPlayerSendCancel(cid, "You can not call your pet in a protection zone.") end end end end end Agora só falta adicionar esta tag no talkactions.xml na pasta data/talkactions: <talkaction words="!pet" script="pet.lua"/> Não era necessário colocar isto abaixo no script, mas para futuras modificações que farei será importante: Até a próxima e se doarem OT$ ficarei muito feliz. E não esqueçam das sugestões, elas são importantes mas nada muito difícil por favor.
-
- Sistema: Advanced Pet System With Races - Autor: josejunior23 - Servidor Testado: 8.54 ~ 8.60 - Descrição: - sempre quiz ter um pet system? mais nunca econtrou algum avançado? - com varias coisas e tals? - grande pakas e todo complicado pra configurar? - então seus problemas acabaram ou começaram, sei lá! - Como Instalar: - Apenas, cole na pasta do server, NÃO É NA PASTA DATA! - coloque o NPC (Pet Trainer) em seu mapa. - Pronto! Informações/Como Usar - FastInfo - Comandos - Como usar as shortkeys - Como adicionar magias IMPORTANTE! OUTROS! IMAGENS! COMO POSTAR UM ERRO(BUG) * caso seu erro, não seja postado assim...eu nem sequer vou ligar. motivo: montes de pessoas não sabem configurar e removem por exemplo até uma ',' que pode bugar todo o script...por isso...mais atenção! ERROS ARRUMADOS AJUDA? Download Link: caso algum admin puder por em anexos o download, era melhor! obrigado =)
-
----------------------------------------------- Nome: Plantinha System Versão: 8.1 Tipo do script: Ações. Servidor Testado: Aries 0.4.5 XML Autor: Mukah ------------------------------------------------------- Bom galera, este é meu primero post aki na OTserv. Meu script é o seguinte, no Tibia Global, lanço há um tempo atraz um sistema de cuidar de uma plantinha. Você junta "seeds", e troca com a npc. E vai regando sua planta, e chega um ponto que ela cresce! Então, meu script é bem parecido, você pega o vasinho sem planta e começa a regar. Chega uma hora que ela começa a crescer até ficar grande. Você poderá programar para ela envelheçer também Então vamos lá! Crie um arquivo na pasta "data/actions/scripts/" com o nome de "planta.lua". Planta.xml -- Script 100% by Mukah -- function onUse(cid, item, frompos, item2, topos) if item2.itemid == 0 then return 0 end if item2.itemid == 7679 then rand = math.random(1,10) if rand == 4 then doTransformItem(item2.uid,7678) else doTransformItem(item2.uid,7679) end -- Muda elseif item2.itemid == 7678 then rand = math.random(1,25) if rand == 5 then doTransformItem(item2.uid,7680) elseif rand == 10 then doTransformItem(item2.uid,7682) elseif rand == 15 then doTransformItem(item2.uid,7684) elseif rand == 20 then doTransformItem(item2.uid,7686) else doTransformItem(item2.uid,7678) end -- Planta 1 elseif item2.itemid == 7680 then rand = math.random(1,30) if rand == 11 then doTransformItem(item2.uid,7688) else doTransformItem(item2.uid,7680) end -- Planta 2 elseif item2.itemid == 7682 then rand = math.random(1,30) if rand == 11 then doTransformItem(item2.uid,7690) else doTransformItem(item2.uid,7682) end -- Planta 3 elseif item2.itemid == 7684 then rand = math.random(1,30) if rand == 11 then doTransformItem(item2.uid,7692) else doTransformItem(item2.uid,7684) end -- Planta 4 elseif item2.itemid == 7686 then rand = math.random(1,30) if rand == 11 then doTransformItem(item2.uid,7694) else doTransformItem(item2.uid,7686) end -- Cuidando da sua planta elseif item2.itemid == 7688 then doTransformItem(item2.uid,7688) elseif item2.itemid == 7690 then doTransformItem(item2.uid,7690) elseif item2.itemid == 7692 then doTransformItem(item2.uid,7692) elseif item2.itemid == 7694 then doTransformItem(item2.uid,7694) else return 0 end return 1 end -- Script 100% by Mukah -- Após ter criado o script acima, abra o arquivo "data/actions/actions.xml". Coloque o tag dentro depois do "<actions>" e antes do "</actions>". tag actions <action itemid="7734" script="planta.lua" /> Exemplo: actions.xml <?xml version="1.0"?> <actions> <action itemid="7734" script="planta.lua" /> </actions> Pronto, o seu vaso está configurado. *Como fazer ela ficar velha se não regar? Busque as ID's dos vasos no arquivo"data/items/items.xml", e adicione em cada vaso [7688/7690/7692/7694] o seguinte tag: tag items <attribute key="decayTo" value="7674"/> <attribute key="duration" value="50000"/> Exemplo: itens.xml <item id="7688" article="a" name="vase"> <attribute key="decayTo" value="7674"/> <attribute key="duration" value="[color=Red]200000[/color]"/> </item> <item id="7690" article="a" name="vase"> <attribute key="decayTo" value="7674"/> <attribute key="duration" value="[color=Red]200000[/color]"/> </item> <item id="7692" article="a" name="vase"> <attribute key="decayTo" value="7674"/> <attribute key="duration" value="[color=Red]200000[/color]"/> </item> <item id="7694" article="a" name="vase"> <attribute key="decayTo" value="7674"/> <attribute key="duration" value="[color=Red]200000[/color]"/> </item> Nota: Em vermelho o tempo de duração que a planta vai ficar viva. Você pode mudar a vontade. Então é isto, depois posto mais alguns scripts meus! Comenta!