• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    Pet System TFs 1.2

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default Pet System TFs 1.2 el Miér Jun 08, 2016 5:28 am

    Cheka

    avatar
    Miembro
    Miembro
    Bueno le traigo un pet system ojala le guste.

    primero vamos  a lib y vamos a crear un archivo llamado.

    Código:
    ('data.lib/pets_lib.lua')

    despues vamos a data/chatchannels/chatchannels.xml y agregamos esto

    Código:
    <channel id="10" name="Pet" script="pet.lua" />

    despues creamos un script y pegamos esto con este nombre

    data/chatchannels/scripts/pet.lua


    ahora abrimos y pegamos esto

    Código:
    function onJoin(player)
       player:petSystemMessage("Type '!petcommands' to see pet commands list.")
       local petUid = player:getPetUid()
       if petUid == 0 then
         player:summonPet( player:getPosition() )

       elseif petUid == -1 then
         player:petSystemMessage("You don't have pet.")
        
       elseif petUid == -2 then
         player:petSystemMessage("Your pet is dead.")
        
       end
       return true
    end

    function onLeave(player)
       player:doRemovePet()
       return true
    end

    function onSpeak(player, type, message)
       return
    end

    ahora en, data/creaturescripts/creaturescripts  pegamos esto

    Código:
    <event type="preparedeath" name="PetDeath" script="pet_creaturescript.lua" />
    <event type="kill" name="PetKill" script="pet_creaturescript.lua" />

    <event type="login" name="PetOwnerLogin" script="pet_owner_creaturescripts.lua" />
    <event type="logout" name="PetOwnerLogout" script="pet_owner_creaturescripts.lua" />
     <event type="preparedeath" name="PetOwnerDeath" script="pet_owner_creaturescripts.lua" />

    ahora creamos los  archivos y abrimos el primero data/creaturescripts/scripts/pet_creaturescript.lua   y pegamos esto

    Código:
    function onPrepareDeath(creature, killer)
     local player = creature:getMaster()
     if player then
     player:setPetUid(-2)
     player:setPetLostHealth(0)
     player:petSystemMessage("Your pet has died.")
     end
     return true
    end

    function onKill(creature, target)
     if target:isMonster() then
     local player = creature:getMaster()
     local experience = (target:getType()):getExperience()
     player:addPetExp(experience)
     end
     return true
    end

    ahora este, data/creaturescripts/scripts/pet_owner_creaturescripts.lua.

    Código:
    function onLogin(player)
     for _, event in pairs({"PetOwnerLogout", "PetOwnerDeath"}) do
     player:registerEvent(event)
     end
     player:openChannel(PETS.CHANNELID)
     return true
    end

    function onLogout(player)
     return player:doRemovePet()
    end

    function onPrepareDeath(creature, killer)
     local petUid = creature:getPetUid()
     local pet = Creature(petUid)
     if pet and pet:isCreature() then
     creature:doRemovePet()
     creature:setPetUid(-2)
     creature:setPetLostHealth(0)
     end
     return true
    end

    ahora vamos a data/talkactions/talkactions.xml y pegamos esto

    Código:
    <talkaction words="!petadd" separator=" " script="pet_add.lua" />
    <talkaction words="!petcatch" script="pet_catch.lua" />
    <talkaction words="!petcommands" script="pet_commands.lua" />
    <talkaction words="!petheal" script="pet_heal.lua" />
    <talkaction words="!petrelease" script="pet_release.lua" />
    <talkaction words="!petrevive" script="pet_revive.lua" />
    <talkaction words="!petinfo" script="pet_status.lua" />

    Ahora creamos los archivos.

    Código:
    data/talkactions/scripts/pet_add.lua

    Código:
    function onSay(player, words, param, channel)
     if player:getGroup():getId() >= 3 then
     if tonumber(param) ~= nil and tonumber(param) <= table.maxn(PETS.IDENTIFICATION) then
     player:doRemovePet()
     player:doResetPet()
     if player:doAddPet(tonumber(param)) then
     player:petSystemMessage("New pet added!")
     else
     player:petSystemMessage("Can't add pet!")
     end
     end
     end
     return false
    end

    ahora el otro

    Código:
    data/talkactions/scripts/pet_catch.lua

    Código:
    function onSay(player, words, param, channel)
     local target = player:getTarget()
     local ropeId = 2120

     if player:getItemCount(ropeId) == 0 then
     player:petSystemMessage('You need rope to catch any monster.')
     return false
     end

     if player:getPetUid() > -1 then
     player:petSystemMessage("You have one pet!")
     return false
     end

     if not target or not target:isMonster() then
     player:petSystemMessage("You can catch only monsters!")
     return false
     end

     local targetMaster = target:getMaster()
     if targetMaster and targetMaster:isPlayer() then
     player:petSystemMessage("You can catch only wild monster.")
     return false
     end

     -- addPetByName
     local mobName = ''
     local mobNumber = ''
     for number_, name_ in ipairs(PETS.IDENTIFICATION) do
     if name_.name == getCreatureName(target) then
     mobName = name_.name
     mobNumber = number_
     break
     end
     end

     if mobName == '' then
     player:petSystemMessage("You can't catch this monster.")
     return false
     end
     -- / addPetByName

     if not player:canGetPet(mobNumber) then
     player:petSystemMessage(PETS.IDENTIFICATION[mobNumber].info)
     return false
     end

     local catchChance = 1 + (1 - target:getHealth() / target:getMaxHealth() ) *100
     if catchChance >= math.random(100) then
     player:doResetPet()
     player:doAddPet(tonumber(mobNumber))
     player:setPetLostHealth(catchChance * player:getPetMaxHealth() / 100 )
     local targetPosition = target:getPosition()
     target:remove()
     targetPosition:sendMagicEffect(CONST_ME_POFF)
     player:petSystemMessage("You catched a " .. string.lower(mobName) .."!")
     else
     player:petSystemMessage("Try one more time!")
     end
     return false
    end

    el 3 archivo.

    Código:
    data/talkactions/scripts/pet_commands.lua

    Código:
    function onSay(player, words, param, channel)
     player:petSystemMessage("!petinfo")
     player:petSystemMessage("!petcatch")
     player:petSystemMessage("!petrevive")
     player:petSystemMessage("!petrelease")
     player:petSystemMessage("!petheal")
     return false
    end

    el 4 archivo.

    Código:
    data/talkactions/scripts/pet_heal.lua

    Código:
    function onSay(player, words, param, channel)
     local petUid = player:getPetUid()
     if petUid == -1 then
     player:petSystemMessage("You don't have a pet!")

     elseif petUid == -2 then
     player:petSystemMessage("Your pet is death!")

     elseif petUid == 0 then
     local lostHealth = player:getPetLostHealth()
     local soulNeded = PETS.CONFIG.healSoulBase + lostHealth * PETS.CONFIG.healSoulCost

     if lostHealth == 0 then
     player:petSystemMessage("Your don't need healing!")

     elseif player:getSoul() >= soulNeded then
     player:addSoul(-soulNeded)
     player:setPetLostHealth(0)

     player:petSystemMessage("You healed pet ".. lostHealth .. " health, it cost " .. soulNeded .." soul points.")
     else
     player:petSystemMessage("You don't have ".. soulNeded .." soul points!")

     end

     elseif petUid >= 0 then
     local pet = Creature(petUid)

     local lostHealth = pet:getMaxHealth() - pet:getHealth()
     local soulNeded = PETS.CONFIG.healSoulBase + lostHealth * PETS.CONFIG.healSoulCost

     if lostHealth == 0 then
     player:petSystemMessage("Your don't need healing!")

     elseif player:getSoul() >= soulNeded then
     player:addSoul(-soulNeded)
     pet:addHealth(lostHealth)

     player:petSystemMessage("You healed pet ".. lostHealth .. " health, it cost " .. soulNeded .." soul points.")
     else
     player:petSystemMessage("You don't have ".. soulNeded .." soul points!")

     end
     end
     return false
    end

    el 5 archivo .

    Código:
    data/talkactions/scripts/pet_release.lua

    Código:
    function onSay(player, words, param, channel)
     local petUid = player:getPetUid()
     if petUid >= 0 or petUid == -2 then
     player:doRemovePet()
     player:doResetPet()
     player:petSystemMessage("Pet released!")
     elseif petUid == -1 then
     player:petSystemMessage("You don't have pet!")
     end
     return false
    end

    el 6 archivo.

    Código:
    data/talkactions/scripts/pet_revive.lua

    Código:
    function onSay(player, words, param, channel)
     local petUid = player:getPetUid()
     if petUid == -1 then
     player:petSystemMessage("You don't have a pet!")

     elseif petUid >= 0 then
     player:petSystemMessage("Your pet is live!")

     elseif petUid == -2 then
     local petLevel = player:getPetLevel()
     local soulNeded = petLevel * PETS.CONFIG.reviveSoulLevelCost + PETS.CONFIG.reviveSoulBaseCost
     soulNeded = soulNeded > 100 and 100 or soulNeded

     if player:getSoul() >= soulNeded then
     player:addSoul(-soulNeded)
     player:setPetUid(0)
     player:setPetLostHealth(0)
     local playerPosition = player:getPosition()
     playerPosition:sendMagicEffect(CONST_ME_HOLYAREA)
     player:petSystemMessage("Your pet is revived!")

     else
     player:petSystemMessage("You don't have enought souul points!")
     end
     end
     return false
    end

    el 7 archivo y ultimo.

    Código:
    data/talkactions/scripts/pet_status.lua

    Código:
    function onSay(player, words, param, channel)
     local petUid = player:getPetUid()
     local text = ''
     if petUid == nil or petUid == -1 then
     text = "You don't have pet."
     elseif petUid == -2 then
     text = "Your pet is dead."
     else
     local pet = Creature(petUid)
     if pet ~= nil and pet:isCreature() then
     text = "\n Type: "..pet:getName()..
     " \n Health: "..pet:getHealth().."/"..pet:getMaxHealth()..
     " \n Exp: "..player:getPetExperience()..
     "\n Lvl: "..player:getPetLevel()
     else
     text = "Your's pet is offline."
     end
     end
     player:petSystemMessage(text)
     return false
    end

    Ahora creen los mostros.

    Código:
    data/monster/monsters.xml

    Código:
    <monster name="PET_Cat" file="pets/cat.xml"/>
        <monster name="PET_Dog" file="pets/dog.xml"/>
        <monster name="PET_Husky" file="pets/husky.xml"/>
        <monster name="PET_Wolf" file="pets/wolf.xml"/>
        <monster name="PET_War Wolf" file="pets/war wolf.xml"/>
        <monster name="PET_Bear" file="pets/bear.xml"/>
        <monster name="PET_Seagull" file="pets/seagull.xml"/> <!-- -->
        <monster name="PET_Parrot" file="pets/parrot.xml"/>
        <monster name="PET_Chicken" file="pets/chicken.xml"/>
        <monster name="PET_Sheep" file="pets/sheep.xml"/>
        <monster name="PET_Elephant" file="pets/elephant.xml"/>
      
        <monster name="PET_Lion" file="pets/lion.xml"/>
        <monster name="PET_Tiger" file="pets/tiger.xml"/>
        <monster name="PET_Penguin" file="pets/penguin.xml"/> <!-- -->
        <monster name="PET_Mechanic Golem" file="pets/mechanic golem.xml"/>
        <monster name="PET_Undead Slave" file="pets/undead slave.xml"/>
        <monster name="PET_Stronger Husky" file="pets/stronger husky.xml"/>
        <monster name="PET_Black Sheep" file="pets/black sheep.xml"/>
      
        <monster name="PET_Mammoth" file="pets/mammoth.xml"/>
        <monster name="PET_Snake" file="pets/snake.xml"/>
        <monster name="PET_Cobra" file="pets/cobra.xml"/>

    pegan esto en cada mostro que crean con estas caracteristicas.

    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <monster name="Wolf" nameDescription="a wolf" race="blood" experience="18" speed="195" manacost="0">
     <health now="25" max="25"/>
     <look type="27" corpse="5968"/>
     <targetchange interval="2000" chance="0"/>
     <strategy attack="100" defense="0"/>
     <flags>
     <flag summonable="0"/>
     <flag attackable="1"/>
     <flag hostile="1"/>
     <flag illusionable="1"/>
     <flag convinceable="1"/>
     <flag pushable="1"/>
     <flag canpushitems="0"/>
     <flag canpushcreatures="0"/>
     <flag targetdistance="1"/>
     <flag staticattack="90"/>
     <flag runonhealth="1"/>
     </flags>
     <attacks>
     <attack name="melee" interval="1500" skill="19" attack="22"/>
     </attacks>
     <defenses armor="1" defense="4"/>
     <elements>
     <element earthPercent="10"/>
     <element holyPercent="10"/>
     <element icePercent="-5"/>
     <elemetn deathPercent="-5"/>
     </elements>
    </monster>

    bueno si quieren todos los mostros bajan este archivo.

    Código:
    https://github.com/yrpen/lua-scripts/tree/master/pets_system/monsters/pets

    ya me largo bueno si tienen problema avisan denme me gusta chaolin. aaa otra cosa no probar con el GM con player.

    Ver perfil de usuario

    2default Re: Pet System TFs 1.2 el Lun Ago 28, 2017 10:39 pm

    slarrr

    avatar
    Nuevo Miembro
    Nuevo Miembro
    Justo lo que buscaba , sabras como agregarle slots y que las pets usen magia ?

    Ver perfil de usuario

    3default Re: Pet System TFs 1.2 el Miér Ene 10, 2018 6:58 pm

    dementeser

    avatar
    Miembro
    Miembro
    muchas gracias amigo pero me sale error todo el server es un 10.10 baiack pero sale error todo como le ago

    Ver perfil de usuario

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).