Ir para conteúdo
Banner com Efeitos

.HuRRiKaNe

Membro
  • Registro em

  • Última visita

Tudo que .HuRRiKaNe postou

  1. .HuRRiKaNe postou uma resposta no tópico em Ouvidoria
    Eu postei o Azeroth 9.60, eu estou nos créditos oficiais então ele não pode ser apagado certo?
  2. .HuRRiKaNe postou uma resposta no tópico em Ouvidoria
    Bom vocês seguem suas regras mas desde quando o baiak não pode ser postado? só porque ele editou algumas coisas minimas no servidor, os créditos não são 100% dele então eu não vejo ele com esse direito! É a mesma coisa, quando postaram meu projeto Naruto Legend aqui, eu não me vi no direito de pedir para retirarem.
  3. .HuRRiKaNe postou uma resposta no tópico em Ouvidoria
    Bom eu não sei o que acontece mais alguns tópicos meus estão sendo apagados, ontem mesmo postei um servidor livre de vírus e com créditos e apagaram sem nenhuma notificação eu poderia saber o motivo?
  4. Informações: Mapa Kalima 100%; Erros do console retirados; Sqlite database 100%; Novos Monstros; Items Vip Level 8, para novos players; Novas Magias; Novos Comandos; War System 100%; Pet System 100%; Teleports; Quests; Servidor 100% estável; E muito mais! Comandos War System: Escreva no Guild Channel; /war invite,Guildname,Frags /war accept,guildname /war reject,guildname Imagens: Download: http://www.mediafire.com/?a6h5kfwdwx3i4cb Scan: https://www.virustotal.com/file/adecedaac4554d4a8283bab7693da635ebb4e6216afab6b83e028b7f309d4938/analysis/1358782460/ Créditos: Kalima Team NewManiatiko Animal Pak
  5. .HuRRiKaNe postou uma resposta no tópico em Mapas de Tibia
    Link arrumado, obrigado por avisar.
  6. Informações; Pack Full 18.23 MB; Servidor baseado em low EXP; Mapa FULL Próprio; Novos Sistemas; Novas Actions; Vocações Balanceadas; Diversas Quests e Hunts; Novas Magias; Servidor 100% Estável; E muito mais! Imagens: Download: http://www.mediafire...27d79a89kprbre5 OBS: Retirei o executável, use qualquer outro 8.60! Scan: https://www.virustot...sis/1358469646/ Créditos: Crazyboy Fercho Animal Pak
  7. Informações: Alissow 0.4.1; 12 Armas Novas; 3 Runas Novas; Now Ring; 25 Outfits (Todas mudam a cor); Novos Monstros; Templo Editado; 5 Quests Novas; Vocações Equilibradas; Novo Set; Imagens: Download: http://www.4shared.c...nowserv_v1.html Scan: https://www.virustot...sis/1358425217/ Créditos: Subwat Afeez Delaks marciks Kung San Animal Pak
  8. Informações: Novo Templo; Novos Tps; Novas Citys; Novos Items; Novos Monstros; Novas Hunts; Novos Trainers; Novas Quests; Battlefield Event; Sala de Summon; Car System; Anti-Bot System; Novos Comandos; Imagens: Download: http://www.mediafire.com/?xa6m0zr4feptesq Scan: https://www.virustotal.com/file/cc4eb306a4d1f781e03b78e1ee5f83177355e54dedea448dfa9cf5666f665420/analysis/ Créditos: Slayer Yourots Bolz Vinicius
  9. Os comandos estão funcionais no meu servidor, e os npcs também ;s
  10. ~~Informações~~: Mapa Venore 9.81; Npcs 9.81; Addons 9.81; Magias 9.81; Monstros 9.81; Items 9.81; Vendedor de Addons; Vendedor de Mounts; Vocações Balanceadas; Servidor 100% Estável; E Muito Mais! ~~Imagens~~: ~~Download~~: http://www.mediafire...3knsxkpch03axyk ~~Scan~~; https://www.virustot...sis/1358264740/ ~~Créditos~~: TFS Team Cipsoft Demonius Animal Pak
  11. .HuRRiKaNe postou uma resposta no tópico em Mapas de Tibia
    Imagens: Download: http://www.mediafire.com/?67kkn4719wkcip0 Scan: https://www.virustotal.com/file/23009a4cc67b1042bc39687c0443f9dbb8b1e828dce7991418f2b5d29a912ca7/analysis/1358208953/ Créditos: James Hetfield Animal Pak
  12. Bom eu gostaria que vocês me passassem alguns servidores sejam internacionais ou nacionais de poketibia, pois quero começar a jogar sério em algum. Aguardo respostas dou +rep!
  13. Sim tem os monstros 9.8x!
  14. Informações: Montarias 100%; Items 97%; Outfits 100%; Trainers Offline, Estatuas e Camas 100%; Zona VIP; Quest VIP; Set Premium; Hunts Melhoradas; Servidor 100 Estável; E mais! Imagens: Download Server: http://www.mediafire.com/?k7b2iq2u6bcu69r Scan Server; https://www.virustotal.com/file/950c8f5057a999e030045d89fbf045c15b6de3b3b59e4eb8b666b09f229a6eda/analysis/ Créditos: Thez BT Animal Pak ACC GOD: tibia/tibia
  15. Informações: Addons por bônus; Loteria; Novo sistema de trainers; Sistema de Boss; Salão da Fama; Rust Remover; Jail System; Vocações balanceadas; Novos Comandos; E mais! Imagens: Download Server: http://www.4shared.com/rar/VlWVEcSs/CrAzY_Evolution.html Scan Server: https://www.virustotal.com/file/d7c1e626a2a6bf46c9f29fe2e64134780c225a6a81bfeb48e68039cf968ac759/analysis/1331719180/ Créditos: CrAzY TiXa Zipto Animal Pak
  16. .HuRRiKaNe postou uma resposta no tópico em Tibia Global OTServer
    Informações: Mapa editado; Quests 100%; Tps 100%; 3 Zonas Train; Novos Items; Eventos; Servidor estável; Sistema Vip; E mais! Imagens: Download Server: http://www.mediafire.com/?0p0uqr7dtv2wqa9 OBS: Executável Retirado! Scan Server: https://www.virustot...sis/1357377005/ Créditos: Adm hoster guaymas Animal Pak
  17. Eu lhe recomendo o meu projeto Naruto Legend 8.54, que foi postado aqui pelo Bruno.. Link do tópico: Espero que ajude ;0
  18. Informações: Mapa Thais editado; Novas áreas de hunt adicionadas; Vip Set / Items Vip; Teleport's Vip; /war; /capture; /sobrevivi; !addon, !aol, !bless; Cassino; Servidor 100% estável; E +! Screen's: Download Server: http://www.4shared.com/zip/U5y0o6-o/lMonsterl.html Scan Server: https://www.virustotal.com/file/9a2ff85e428c7f86b38a43ac6e7f23fd1ce6a7079f5060af2a2626806f906951/analysis/1357267610/ Créditos: Kamek Animal Pak
  19. Informações: Mapa Evolutions editado; Magias balanceadas; Todas as quests funcionando; Novas zonas de hunt; Yalahar City para VIP; VIP City; Venore; Ankrahmun; VIP Quest - 3 Fases; Quests VIP; Items VIP; Servidor 100% estável; Screen's: Download Server: http://www.mediafire.com/?m0ocfiyerqh35hw Scan Server: https://www.virustotal.com/file/d0a78a52741b0dcf099ea65fd9bbf695beae1e411cc07cf9a0674e7e14b618af/analysis/ Créditos: DinoCRM BT Animal Pak
  20. Eu vou te recomendar esses dois: Espero que ajude
  21. POS Templo: X: 32957 Y: 32076 Z: 7 Preview: http://darknessfamily.com/venore9.81/slideshow.swf Download: http://www.mediafire.com/?10v48vx2sjgdlri Scan: https://www.virustotal.com/file/b4b6c0d1fe1198dd622b74c01c0de1861e0747785fc7d16b4b5220f843f00201/analysis/1357023247/ Créditos: NvSo Animal Pak
  22. .HuRRiKaNe postou uma resposta no tópico em Tibia Global OTServer
    Informações: Servidor Custom, baseado em servidores com cenário do Tibia Global. NPC'S próprios para o servidor. Servidor com grande possibilidade para vários estilos, "high exp" ou "low exp" Quests e mapa interagem com o jogador. Versão 8.60 Servidor capacitado para ser usado em MySQL Distro próprio baseado em TFS (open source) Screen's: Download Server: http://www.4shared.com/rar/NRdoOLCe/Tibia_Pan860.html Scan Server: https://www.virustotal.com/file/afe0c709a2b28f2630d0200c34c4b6d70750b45011f76b98ab49e6a528ee8775/analysis/1357231323/ Download .EXE: http://www.4shared.com/file/_V0VngGn/TibiaPan_2.html Scan .EXE: https://www.virustotal.com/file/b5597ed6649bf60f05f8d226d1e77f3505ab1c371c1451da0d08bed0e2fdfbfa/analysis/1357231466/ Créditos: Rodolfo Augusto Animal Pak
  23. Como nosso amigo leandro disse eu não editei nada no servidor eu só trouxe o conteúdo para cá
  24. .HuRRiKaNe postou uma resposta no tópico em Suporte Tibia OTServer
    Se não der certo o que o amigo acima falou, baixe essa versão do xampp 1.7.3 link: http://www.oldapps.com/xampp.php?app=3635a1c0baf15e8a019009e6c1225389
  25. Testado nas versões 8.60 - 9.43. Na pasta data/lib/pets.lua: --Circles AREA_CIRCLE2X2 = { {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} } AREA_CIRCLE3X3 = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } -- Crosses AREA_CROSS1X1 = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } AREA_CROSS5X5 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } AREA_CROSS6X6 = { {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0} } --Squares AREA_SQUARE1X1 = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } -- Walls AREA_WALLFIELD = { {1, 1, 3, 1, 1} } AREADIAGONAL_WALLFIELD = { {0, 0, 0, 0, 1}, {0, 0, 0, 1, 1}, {0, 1, 3, 1, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, } TYPE_NEAR = 1 TYPE_DISTANCE = 2 petExhaust = 3 --in seconds petSayExhaust = 3 --in seconds petGainTicks = { health = {func = doCreatureAddHealth, time = 3000, count = 1}, mana = {func = doCreatureAddMana, time = 3000, count = 2} } petGainHealth = 30 petGainMana = 30 petExpRate = 1.3 carryItems = 10 petItemsBase = 1250 petItems = {} blockedItems = {6132, 2195} for i = 1, carryItems do table.insert(petItems, petItemsBase + i) end petBase = 61200 petStorages = { pet = petBase + 1, level = petBase + 2, exp = petBase + 3, items = petBase + 4, isPet = petBase + 5, isDead = petBase + 6, exhaust = petBase + 7, sayExhaust = petBase + 8, moveExhaust = petBase + 9, health = petBase + 10, mana = petBase + 11 } reviveCost = 1000 pets = { [1] = { monster = "orc spearman", vocations = {1, 2, 3, 4}, level = 30, attacks = { [1] = {name = "", level = 30, petLevel = 30, mana = 50, type = TYPE_DISTANCE, range = 10, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_NONE, distEffect = CONST_ANI_SPEAR, damageMin = 0.7, damageMax = 1.0} } }, [2] = { monster = "fire devil", vocations = {1, 2}, level = 60, attacks = { [1] = {name = "Fire Strike", level = 60, petLevel = 60, mana = 100, type = TYPE_DISTANCE, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0} } }, [3] = { monster = "minotaur guard", vocations = {3, 4}, level = 60, attacks = { [1] = {name = "Punch", level = 60, petLevel = 60, mana = 55, type = TYPE_NEAR, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_NONE, damageMin = 1.5, damageMax = 2.0} } }, [4] = { monster = "water elemental", vocations = {2}, level = 95, attacks = { [1] = {name = "Ice Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_ICEDAMAGE, effect = CONST_ME_ICEAREA, distEffect = CONST_ANI_ICE, damageMin = 1.5, damageMax = 2.0, area = {{0, 0, 1, 0, 0}, {0, 1, 3, 1, 0}, {0, 0, 1, 0, 0}}}, [2] = {name = "Poison Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 8, combat = COMBAT_EARTHDAMAGE, effect = CONST_ME_GREENRINGS, distEffect = CONST_ANI_POISON, damageMin = 1.2, damageMax = 1.8} } }, [5] = { monster = "fire elemental", vocations = {1}, level = 95, attacks = { [1] = {name = "Fire Bomb", level = 100, petLevel = 100, mana = 250, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = {{0, 0, 1, 0, 0}, {0, 1, 3, 1, 0}, {0, 0, 1, 0, 0}}}, [2] = {name = "Fire Strike", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREDAMAGE, distEffect = CONST_ANI_FIRE, damageMin = 1.2, damageMax = 1.8} } }, [6] = { monster = "orc warlord", vocations = {4}, level = 95, attacks = { [1] = {name = "Throw Knife", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_THROWINGKNIFE, damageMin = 1.5, damageMax = 2.0} } }, [7] = { monster = "golem", vocations = {3}, level = 95, attacks = { [1] = {name = "Throw Stone", level = 95, petLevel = 95, mana = 80, type = TYPE_DISTANCE, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOOD, distEffect = CONST_ANI_LARGEROCK, damageMin = 1.5, damageMax = 2.0} } }, [8] = { monster = "wyrm", vocations = {1, 2, 3, 4}, level = 135 }, [9] = { monster = "dragon lord", vocations = {1, 2, 3, 4}, level = 200, attacks = { [1] = {name = "Fire Bomb", level = 200, petLevel = 200, mana = 300, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.0, area = AREA_CROSS1X1}, [2] = {name = "Fire Storm", level = 205, petLevel = 220, mana = 700, type = TYPE_NEAR, range = 8, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_FIREAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 2.5, area = AREA_CROSS5X5}, [3] = {name = "Fire Explosion", level = 203, petLevel = 210, mana = 450, type = TYPE_DISTANCE, range = 6, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONHIT, distEffect = CONST_ANI_FIRE, damageMin = 1.5, damageMax = 2.1, area = AREA_CIRCLE2X2}, [4] = {name = "Scratch", level = 201, petLevel = 205, mana = 150, type = TYPE_NEAR, range = 1, combat = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_HITAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.3, damageMax = 1.8}, [5] = {name = "Fire Strike", level = 203, petLevel = 210, mana = 100, type = TYPE_DISTANCE, range = 3, combat = COMBAT_FIREDAMAGE, effect = CONST_ME_EXPLOSIONAREA, distEffect = CONST_ANI_FIRE, damageMin = 1.8, damageMax = 1.9} } } } function gainStat(pid, stat) if pid and pid > 0 and isMonster(pid) then stat.func(pid, stat.count) end addEvent(gainStat, stat.time, pid, stat) end function getLevelByExp(exp) return math.floor((math.sqrt(3) * math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27 * (exp+1)-2700)^(1/3)/30^(2/3)-(5*10^(2/3))/(3^(1/3)*(math.sqrt(3)*math.sqrt(243*(exp+1)^2-48600*(exp+1)+3680000)+27*(exp+1)-2700)^(1/3))+2) end function getPetInfo(pet) if isNumber(pet) then return pets[pet] or false else for _, v in pairs(pets) do if pet:lower() == v.monster then return v end end end return false end function getPetByLevel(cid) local level = getPlayerLevel(cid) local pet for i = 1, #pets do v = pets[i] if level >= v.level and isInArray(v.vocations, getPlayerVocation(cid)) then pet = v end end return (pet ~= nil and pet or false) end function getAttackFormula(pid, attack) return { min = ((getPetLevel(pid) * 2) * (1 + attack.damageMin) + getPetLevel(pid)) / 2.5, max = ((getPetLevel(pid) * 3) * (1 + attack.damageMax) + getPetLevel(pid)) / 2.5 } end function doAttack(pid, target, param) local pet = getPetInfo(getCreatureName(pid)) if pet then if pet.attacks and pet.attacks[param] then local attack = pet.attacks[param] if target > 0 and attack.type and attack.type == TYPE_DISTANCE and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > (attack.range or 3) or attack.type == TYPE_NEAR and target > 0 and getDistanceBetween(getCreaturePosition(pid), getCreaturePosition(target)) > attack.range then return doPlayerSendCancel(getCreatureMaster(pid), "Target is too far.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if target > 0 and not isSightClear(getCreaturePosition(pid), getCreaturePosition(target), true) then return doPlayerSendCancel(getCreatureMaster(pid), "There is not enough room.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if target == 0 then return doPlayerSendCancel(getCreatureMaster(pid), "Please select a target first.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if getPlayerLevel(getCreatureMaster(pid)) < attack.level then return doPlayerSendCancel(getCreatureMaster(pid), "You need level " .. attack.level .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if getPetLevel(pid) < attack.petLevel then return doPlayerSendCancel(getCreatureMaster(pid), "Your pet needs level " .. attack.petLevel .. " or higher to use this attack.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if attack.mana and getCreatureMana(pid) < attack.mana then return doPlayerSendCancel(getCreatureMaster(pid), "Your pet does not have enough mana.") and doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end if attack.area then doCastAreaAttack(pid, target, attack.area, attack) else doTargetCombatHealth(pid, target, attack.combat, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect) end doCreatureAddMana(pid, -attack.mana) return doSendDistanceShoot(getCreaturePosition(pid), (attack.type == TYPE_DISTANCE and getCreaturePosition(target) or getCreaturePosition(pid)), attack.distEffect) and doCreatureSay(pid, attack.name, TALKTYPE_MONSTER) else return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) end else return doSendMagicEffect(getCreaturePosition(pid), CONST_ME_POFF) and doPlayerSendCancel(getCreatureMaster(pid), "There is a tecnical problem, please contact a gamemaster.") end end function callPet(cid) for i = 1, #petStorages do if getCreatureStorage(cid, petStorages[i]) < 0 then doCreatureSetStorage(cid, petStorages[i], 0) end end local pet = getPetByLevel(cid) if not pet then return doPlayerSendCancel(cid, "You do not have enough level to call a pet.") end local ret = doCreateMonster(pet.monster, getCreaturePosition(cid)) if getCreatureStorage(cid, petStorages.level) < 1 then doCreatureSetStorage(cid, petStorages.level, pet.level) end if getCreatureStorage(cid, petStorages.exp) < 1 then doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel(pet.level)) end if getCreatureStorage(cid, petStorages.level) < pet.level then doCreatureSetStorage(cid, petStorages.level, pet.level) elseif getPlayerLevel(cid) * 3 < getCreatureStorage(cid, petStorages.level) then doCreatureSetStorage(cid, petStorages.level, (getPetByLevel(cid).level or 0)) doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel((getPetByLevel(cid).level or 0))) end if getLevelByExp(getCreatureStorage(cid, petStorages.exp)) < getCreatureStorage(cid, petStorages.level) then doCreatureSetStorage(cid, petStorages.exp, getExperienceForLevel(getCreatureStorage(cid, petStorages.level))) end if getCreatureStorage(cid, petStorages.health) < 1 then doCreatureSetStorage(cid, petStorages.health, getCreatureStorage(cid, petStorages.level) * petGainHealth) end if getCreatureStorage(cid, petStorages.mana) < 1 then doCreatureSetStorage(cid, petStorages.mana, getCreatureStorage(cid, petStorages.level) * petGainMana) end doCreatureSetStorage(ret, petStorages.level, getCreatureStorage(cid, petStorages.level)) doCreatureSetStorage(ret, petStorages.exp, getCreatureStorage(cid, petStorages.exp)) doConvinceCreature(cid, ret) doCreatureSetStorage(ret, petStorages.isPet, 1) doSendMagicEffect(getCreaturePosition(ret), CONST_ME_TELEPORT) setCreatureMaxHealth(ret, getPetLevel(ret) * petGainHealth) doCreatureAddHealth(ret, -getCreatureHealth(ret) + getCreatureStorage(cid, petStorages.health)) setCreatureMaxMana(ret, getPetLevel(ret) * petGainMana) doCreatureAddMana(ret, -getCreatureMana(ret) + getCreatureStorage(cid, petStorages.mana)) for _, v in pairs(petGainTicks) do gainStat(ret, v) end return doCreatureSay(cid, "Go pet!", TALKTYPE_SAY) end function doCastAreaAttack(pid, target, area, attack) local center = {} local areaxx = {} center.y = math.floor(#area/2)+1 for y = 1, #area do for x = 1, #area[y] do local number = area[y][x] if number > 0 then center.x = math.floor(table.getn(area[y])/2)+1 if attack.type == TYPE_DISTANCE then table.insert(areaxx, {x = getCreaturePosition(target).x + x - center.x, y = getCreaturePosition(target).y + y - center.y, z = getCreaturePosition(target).z}) else table.insert(areaxx, {x = getCreaturePosition(pid).x + x - center.x, y = getCreaturePosition(pid).y + y - center.y, z = getCreaturePosition(pid).z}) end end end end for i = 1, #areaxx do doAreaCombatHealth(pid, attack.combat, areaxx[i], 0, -getAttackFormula(pid, attack).min, -getAttackFormula(pid, attack).max, attack.effect) end end function isPet(pid) return getCreatureStorage(pid, petStorages.isPet) > 0 and true or false end function doPetAddExperience(pid, exp) doCreatureSetStorage(pid, petStorages.exp, getCreatureStorage(pid, petStorages.exp) + exp) doCreatureSetStorage(getCreatureMaster(pid), petStorages.exp, getPetExperience(pid)) doSendAnimatedText(getCreaturePosition(pid), exp, getConfigValue("gainExperienceColor")) return true end function getPetExperience(pid) return getCreatureStorage(pid, petStorages.exp) end function getPetLevel(pid) return getCreatureStorage(pid, petStorages.level) end function doPetSetLevel(pid, level) doCreatureSetStorage(pid, petStorages.level, level) doCreatureSetStorage(getCreatureMaster(pid), petStorages.level, level) setCreatureMaxHealth(pid, getPetLevel(pid) * petGainHealth) setCreatureMaxMana(pid, getPetLevel(pid) * petGainMana) return true end function getPlayerPet(cid) local pet if #getCreatureSummons(cid) < 1 then pet = false end for _, it in ipairs(getCreatureSummons(cid)) do if isPet(it) then pet = it break end end return pet end function getTopItem(p) p.stackpos = 0 local v = getThingFromPos(p) repeat p.stackpos = p.stackpos + 1 v = getThingFromPos(p) until v.itemid == 0 p.stackpos = p.stackpos - 1 return getThingFromPos(p) end Pasta data/creaturescripts/scripts/petdeath.lua: function onDeath(cid, corpse, deathList) if not isMonster(cid) or not isPet(cid) then return true end doCreatureSetStorage(getCreatureMaster(cid), petStorages.isDead, 1) doPlayerSendTextMessage(getCreatureMaster(cid), MESSAGE_STATUS_CONSOLE_BLUE, "Your pet is dead.") return true end Pasta data/creaturescripts/scripts/petstats.lua: function onStatsChange(cid, attacker, type, combat, value) if getPlayerPet(cid) and getPlayerPet(cid) == attacker then return false end return true end Pasta data/creaturescripts/scripts/petkill.lua: function onKill(cid, target, lastHit) if not isMonster(target) or getConfigValue("rateExperience") < 0.1 or getMonsterInfo(getCreatureName(target)) and getMonsterInfo(getCreatureName(target)).experience < 1 then return true end local pet = getPlayerPet(cid) if pet then doPetAddExperience(pet, getMonsterInfo(getCreatureName(target)).experience * petExpRate) if getLevelByExp(getPetExperience(pet)) > getPetLevel(pet) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Your pet advanced from level " .. getPetLevel(pet) .. " to level " .. getLevelByExp(getPetExperience(pet)) .. ".") doPetSetLevel(pet, getLevelByExp(getPetExperience(pet))) end end return true end Adicione no data/creaturescripts/scripts/login.lua: registerCreatureEvent(cid, "petKill") registerCreatureEvent(cid, "petDeath") registerCreatureEvent(cid, "petSta") Adicione na data/creaturescripts/creaturescripts.xml: <event type="kill" name="petKill" event="script" value="petkill.lua"/> <event type="death" name="petDeath" event="script" value="petdeath.lua"/> <event type="statschange" name="petStats" event="script" value="petstats.lua"/> Na pasta talkactions/scripts/pet.lua: local l = { ["north"] = NORTH, ["east"] = EAST, ["south"] = SOUTH, ["west"] = WEST, ["southwest"] = SOUTHWEST, ["southeast"] = SOUTHEAST, ["northwest"] = NORTHWEST, ["northeast"] = NORTHEAST } --fixed by falcon-- function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end if param:lower() == "call" then if getCreatureStorage(cid, petStorages.isDead) > 0 then return doPlayerSendCancel(cid, "You need to revive your pet first.") end if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You cannot call your pet in protection zone.") end local pet = getPlayerPet(cid) if not pet then return callPet(cid) else doCreatureSetStorage(cid, petStorages.health, getCreatureHealth(pet)) doCreatureSetStorage(cid, petStorages.mana, getCreatureMana(pet)) doSendMagicEffect(getCreaturePosition(pet), CONST_ME_POFF) doRemoveCreature(pet) return doCreatureSay(cid, "It's enough!", TALKTYPE_SAY) end elseif param:lower() == "info" then local pet = getPlayerPet(cid) if pet then local pet_ = getPetInfo(getCreatureName(pet)) local attacks = "" if pet_.attacks and #pet_.attacks > 0 then for i = 1, #pet_.attacks do attacks = attacks .. "Attack ID: " .. i .. "\n" .. (pet_.attacks[i].name ~= "" and " Name: " .. pet_.attacks[i].name .. "\n" or "") .. " Level: " .. pet_.attacks[i].level .. "\n Pet level: " .. pet_.attacks[i].petLevel .. "\n Pet mana: " .. pet_.attacks[i].mana .. "\n" end end return doShowTextDialog(cid, 1948, "Here is your pet info:\n" .. "\nName: " .. getCreatureName(pet) .. "\nHealth: " .. getCreatureHealth(pet) .. "-" .. getCreatureMaxHealth(pet) .. "\nMana: " .. getCreatureMana(pet) .. "-" .. getCreatureMaxMana(pet) .. "\nLevel: " .. getPetLevel(pet) .. "\nExperience: " .. getPetExperience(pet) .. "\n-----Attacks-----\n" .. (attacks ~= "" and attacks or "No attacks")) else return doPlayerSendCancel(cid, "Please call your pet first.") end elseif param:lower() == "take" then local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end local slot = 0 for i = 1, carryItems do if getCreatureStorage(cid, petItems[i]) < 1 then slot = i break end end if slot == 0 then return doPlayerSendCancel(cid, "You only can carry " .. carryItems .. " items.") end local item = getTopItem(getCreaturePosition(pet)) if getItemWeightById(item.itemid, 1) and getItemWeightById(item.itemid, 1) < 1 then return doPlayerSendCancel(cid, "There is no item to carry.") end if isInArray(blockedItems, item.itemid) then return doPlayerSendCancel(cid, "You cannot carry this item.") end doCreatureSetStorage(cid, petItems[slot], item.itemid * 1000 + (item.type > 0 and item.type or 1)) doRemoveItem(item.uid) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You take an item.") return true elseif param:lower() == "items" then local list = "Here is the list of items:\n" for i = 1, carryItems do if getCreatureStorage(cid, petItems[i]) < 1 then list = list .. "\n" .. i .. ". Empty." else local thing = getCreatureStorage(cid, petItems[i]) local item = math.floor(thing / 1000) local count = thing - item * 1000 list = list .. "\n" .. i .. ". x" .. count .. " " .. getItemNameById(item) .. "." end end return doShowTextDialog(cid, 1948, list) else param = string.explode(param, ":") if param[1]:lower() == "attack" then local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not param[2] or not isNumber(param[2]) or tonumber(param[2]) < 1 then return doPlayerSendCancel(cid, "No attack index specified.") end if exhaustion.get(cid, petStorages.exhaust) then return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF) end doAttack(pet, getCreatureTarget(cid), tonumber(param[2])) exhaustion.set(cid, petStorages.exhaust, petExhaust) elseif param[1]:lower() == "give" then local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not param[2] or not isNumber(param[2]) or tonumber(param[2]) < 1 then return doPlayerSendCancel(cid, "No slot specified.") end if getCreatureStorage(cid, petItems[tonumber(param[2])]) > 0 then local thing = getCreatureStorage(cid, petItems[tonumber(param[2])]) local item = math.floor(thing/1000) local count = thing-item*1000 doPlayerAddItem(cid, item, count) doCreatureSetStorage(cid, petItems[tonumber(param[2])], 0) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You get an item.") else return doPlayerSendCancel(cid, "This slot is empty.") end elseif param[1]:lower() == "say" then local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not param[2] or param[2] == "" then return doPlayerSendCancel(cid, "Command param required.") end if exhaustion.get(cid, petStorages.sayExhaust) then return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF) end doCreatureSay(pet, param[2], TALKTYPE_MONSTER) exhaustion.set(cid, petStorages.sayExhaust, petExhaust) elseif param[1]:lower() == "move" then local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not param[2] or param[2] == "" then return doPlayerSendCancel(cid, "Command param required.") end if exhaustion.get(cid, petStorages.moveExhaust) then return doPlayerSendCancel(cid, "You are exhausted.") and doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), CONST_ME_POFF) end local dir if l[param[2]:lower()] then dir = l[param[2]:lower()] local toPos = getPosByDir(getCreaturePosition(pet), dir, 1) local ret = queryTileAddThing(pet, toPos) if ret == RETURNVALUE_NOERROR then doMoveCreature(pet, dir) exhaustion.set(cid, petStorages.moveExhaust, petExhaust) else return doPlayerSendCancel(cid, "There is not enough room.") and doSendMagicEffect(getCreaturePosition(pet), CONST_ME_POFF) end else return doPlayerSendCancel(cid, "No direction specified.") end elseif isInArray({"mana", "health"}, param[1]:lower()) then if getPlayerGroupId(cid) < 3 then return false end local pet = getPlayerPet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not param[2] or not isNumber(param[2]) then return doPlayerSendCancel(cid, "Command param required.") end if param[1]:lower() == "health" then doCreatureAddHealth(pet, tonumber(param[2])) elseif param[1]:lower() == "mana" then doCreatureAddMana(pet, tonumber(param[2])) end return doSendMagicEffect(getCreaturePosition(pet), (param[1]:lower() == "health" and CONST_ME_MAGIC_RED or CONST_ME_MAGIC_BLUE)) end end return true end Talkactions.xml: <talkaction words="!pet" event="script" value="pet.lua"/> Screen's: Comandos: !pet call !pet take !pet items !pet attack !pet give !pet say !pet move !pet mana Créditos: Falcon

Informação Importante

Confirmação de Termo