• 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:
    http://www.speedyshare.com/gkaSV/pets.tar.gz#

    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

    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).