Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/28/13 em todas áreas
-
Agora você também tem seu Chibi '-''-'-'-'-'-'-'-'4 pontos
-
[Pokemon] Servidor Gabrieltxu e suas Versões
Silvaninho e um outro reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.2 pontos -
Olá pessoal, hoje vou ensinar a vocês a arrumarem o erro que acontece: Temple Position Is Wrong Contact The Administrator Porque esse erro acontece? - Simplesmente porque as coordenadas que foram dadas para o player, nao estão disponiveis, ou seja, nao tem um tile para o player "aparecer". No Caso Comigo Aconteceu quando queria fazer um servidor do EddyHavoc, Um Global Compacto, Que Aparecia A mensagem quando eu tentava entrar no servidor. Como resolver? Para resolvermos esse erro, precisaremos mecher no database do nosso servidor, o arquivo .s3db que tem na pasta do server. Usaremos o programa Sqlitestudio (no qual você pode fazer download no final desse topico) 1. Primeiramente abriremos o Sqlitestudio e adicionaremos o arquvio .s3db: 2. Navegue até o arquivo .s3db e selecione, depois click em "OK" 3. Agora chegamos no nosso ultimo passo, depois de ter adicionado a database, dê 2 clicks nela, 2 clicks em Tables, 2 clicks em players, Vai abrir uma janela, nessa janela você clica em Data, depois mova até achar town_id, posx, posy, posz town_id: ID da cidade (inical 0), posx: Posição X do lugar (horizontall), posy: Posição Y do lugar (vertical), posz: Posição Z do lugar (andar), No Meu Caso As IDs Foram: town_id: 0 posx: 1088 posy: 1062 posz: 7 Só mudar para o lugar que você quiser, Download do SQLestudio Créditos:1 ponto
-
• EvoBR - Um Evolutions mais que Perfeito! (8.60) • Servidor feito pelo 5mok3 e Editado por mim Fala galera estou aqui para apresentar EvoBR, Eu Trabalhei muito tempo neste servidor.Ele Custava cerca de 30 Euros na Loja da Vapus, Mas Foi Liberado de Graça e eu o melhorei bastante. Este servidor é um dos Evolutions mais Completos, Possui Sistemas inovadores e já vem o TFS 0.4.Então, tá esperando o que? Confira logo! • Cidades: ├ Delyria ├ Lumina ├ Daret └ Manhattan • O Que Contêm no Servidor: ├ Sistemas Exclusivos ├Várias Quests ├ Fast Pass System para Tp's ├ Cidades Detalhadas ├ Sistema de Train, a Cada 45 minutos o player que está treinando terá que digitar um código, se errar será kickado. ├ Cassino ├ Mapa Compacto. Pesa Apenas 10mb ├ Novos NPC'S └ TFS 0.4 DEV Rev: 3884 Já Compilado. • Lista Das Principais Quests (Todas Funcionando 100%): ├ The Annihilator Quest ├ Demon Helmet Quest ├ The Inquisition Quest ├ The Pits of Inferno Quest ├ The Demon Oak Quest • Como Abrir o Mapa Caso dê Erro: Vai no RME Aperta em File>New>Import Map e Selecione o Mapa do EvoBR Downlaod do EvoBR 8.6 Scan do EvoBR ATENÇÃO! Se Encontrarem Problemas, usando Sqlite, usem Mysql • Créditos:1 ponto
-
Pet System OOP
PostadorHunter reagiu a Oneshot por um tópico no fórum
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: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- storages for pet system PET_UID = 80001 PET_SPECIE = 80002 PET_LEVEL = 80003 PET_EXPERIENCE = 80004 PET_HEALTH = 80005 PET_HEALTHMAX = 80006 PET_MANA = 80007 PET_MANAMAX = 80008 PET_EXHAUST = 80009 PET_ALIVE = 80010 Pets = {} -- class for pet species PetSpecie = { type = "", basehp = 0, basemp = 0, gainhp = 0, gainmp = 0, spells = {}, evolution = "", evolve = 0, } -- class for pets Pet = { it = nil, attributes = nil, level = 0, experience = 0, health = 0, healthmax = 0, mana = 0, manamax = 0, } -- create new instances of PetSpecie function PetSpecie:new(type, basehp, basemp, gainhp, gainmp, spells, evolution, evolve) local new_specie = { type = type, basehp = basehp, basemp = basemp, gainhp = gainhp, gainmp = gainmp, spells = spells, evolution = evolution, evolve = evolve, } local obj = setmetatable(new_specie, {__index = self}) Pets[type:lower()] = obj return obj end -- create new instances of Pet function PetSpecie:create() local new_pet = { it = nil, attributes = self, level = 1, experience = 0, health = self.basehp, healthmax = self.basehp, mana = self.basemp, manamax = self.basemp, } return setmetatable(new_pet, {__index = Pet}) end -- summon a player pet for the first time function Pet:hatch(cid) if getCreatureStorage(cid, PET_SPECIE) ~= -1 then return doPlayerSendCancel(cid, "You already have a pet.") end local pet = doCreateMonster(self.attributes.type, getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end self:setit(pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, self.healthmax) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.type) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your new pet has born.") self:save() doSendMagicEffect(getCreaturePosition(pet), CONST_ME_HOLYDAMAGE) return self end -- make player pet say something function Pet:say(strt) doCreatureSay(self.it, strt, TALKTYPE_ORANGE_1) end -- gather a summoned player pet back function Pet:back() self:save() doSendMagicEffect(self:position(), CONST_ME_POFF) doCreatureSay(getCreatureMaster(self.it), "It's enough, ".. getCreatureName(self.it)) doRemoveCreature(self.it) end -- free a player pet forever function Pet:release() local cid = getCreatureMaster(self.it) doCreatureSay(cid, "Good bye, ".. getCreatureName(self.it) .."... :'(") doCreatureSetStorage(cid, PET_UID, -1) doCreatureSetStorage(cid, PET_SPECIE, -1) doCreatureSetStorage(cid, PET_LEVEL, -1) doCreatureSetStorage(cid, PET_EXPERIENCE, -1) doCreatureSetStorage(cid, PET_HEALTH, -1) doCreatureSetStorage(cid, PET_HEALTHMAX, -1) doCreatureSetStorage(cid, PET_MANA, -1) doCreatureSetStorage(cid, PET_MANAMAX, -1) doSendMagicEffect(self:position(), CONST_ME_POFF) doRemoveCreature(self.it) end -- add experience to player pet function Pet:addexperience(value) local prevLevel = self.level local nextLevelExp = getExperienceForLevel(self.level + 1) self.experience = self.experience + value while self.experience >= nextLevelExp do self.healthmax = self.healthmax + self.attributes.gainhp self.manamax = self.manamax + self.attributes.gainmp self.level = self.level + 1 nextLevelExp = getExperienceForLevel(self.level + 1) end if prevLevel ~= self.level then self.mana = self.manamax self.health = self.healthmax doPlayerSendTextMessage(getCreatureMaster(self.it), MESSAGE_STATUS_CONSOLE_BLUE, "Your pet advanced from level ".. prevLevel .." to level ".. self.level ..".") setCreatureMaxHealth(self.it, self.healthmax) doCreatureAddHealth(self.it, getCreatureMaxHealth(self.it)) self:save() if self.attributes.evolution then if self.attributes.evolve and self.level >= self.attributes.evolve then doCreatureSay(getCreatureMaster(self.it), "What's happening?!") addEvent(function() local cid = getCreatureMaster(self.it) local position = self:position() doRemoveCreature(self.it) local pet = doCreateMonster(self.attributes.evolution, position) if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) call_pet(cid) return end doCreatureSetStorage(cid, PET_UID, pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, getCreatureMaxHealth(pet)) doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MORTAREA) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.evolution) end, 100) end end end end -- make pet cast a spell function Pet:cast(index) local cid = getCreatureMaster(self.it) if not self.attributes.spells[index] then return doPlayerSendCancel(cid, "This spell is unknown.") end local spell = self.attributes.spells[index] if self.level < spell.level then doPlayerSendCancel(cid, "Your pet doesn't have enough level to cast this spell.") return end if self.mana < spell.mana then doPlayerSendCancel(cid, "Your pet doesn't have enough mana to cast this spell.") return end if getCreatureStorage(cid, PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if spell.target then local target = getCreatureTarget(self.it) if target == 0 then doPlayerSendCancel(cid, "First, select a target.") return end spell.range = spell.range or 1 if getDistanceBetween(self:position(), getCreaturePosition(target)) > spell.range then doPlayerSendCancel(cid, "Too far to cast spell.") return end doSendDistanceShoot(self:position(), getCreaturePosition(target), spell.shooteffect) doTargetCombatHealth(self.it, target, spell.type, -spell.min, -spell.max, spell.effect) else doAreaCombatHealth(self.it, spell.type, self:position(), (spell.area or 0), -min, -max, spell.effect) end self.mana = self.mana - spell.mana doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + (spell.exhaust / 1000)) doCreatureSay(cid, getCreatureName(self.it) ..", use ".. spell.name .."!") self:say(spell.name) end -- set pet uid function Pet:setit(uid) self.it = uid end -- get player pet position function Pet:position() return getCreaturePosition(self.it) end -- move player pet to a direction function Pet:move(direction) local toPosition = getPosByDir(self:position(), direction, 1) if getCreatureStorage(getCreatureMaster(self.it), PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if queryTileAddThing(self.it, toPosition) == RETURNVALUE_NOERROR then doMoveCreature(self.it, direction) doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + 0.5) doCreatureSay(cid, "Move, ".. getCreatureName(self.it) .."!") end end -- save player pet attributes function Pet:save() local cid = getCreatureMaster(self.it) doCreatureSetStorage(cid, PET_UID, self.it) doCreatureSetStorage(cid, PET_SPECIE, getCreatureName(self.it)) doCreatureSetStorage(cid, PET_LEVEL, self.level) doCreatureSetStorage(cid, PET_EXPERIENCE, self.experience) doCreatureSetStorage(cid, PET_HEALTH, self.health) doCreatureSetStorage(cid, PET_HEALTHMAX, self.healthmax) doCreatureSetStorage(cid, PET_MANA, self.mana) doCreatureSetStorage(cid, PET_MANAMAX, self.manamax) end -- get player pet and return instance function get_pet(cid) local uid, it = getCreatureStorage(cid, PET_UID) for _, pet in ipairs(getCreatureSummons(cid)) do if pet == uid then it = pet break end end if not it then return false end local this_pet = { it = it, attributes = Pets[getCreatureName(it):lower()], level = getCreatureStorage(cid, PET_LEVEL), experience = getCreatureStorage(cid, PET_EXPERIENCE), health = getCreatureHealth(it), healthmax = getCreatureMaxHealth(it), mana = getCreatureStorage(cid, PET_MANA), manamax = getCreatureStorage(cid, PET_MANAMAX), } return setmetatable(this_pet, {__index = Pet}) end -- summon a existing player pet function call_pet(cid) if get_pet(cid) then return doPlayerSendCancel(cid, "You cannot summon your pet more than one time.") end if getCreatureStorage(cid, PET_SPECIE) == -1 then return doPlayerSendCancel(cid, "You don't have a pet.") end if getCreatureStorage(cid, PET_ALIVE) == 0 then return doPlayerSendCancel(cid, "You need to revive your pet") end local pet = doCreateMonster(getCreatureStorage(cid, PET_SPECIE), getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end local health, healthmax = getCreatureStorage(cid, PET_HEALTH), getCreatureStorage(cid, PET_HEALTHMAX) setCreatureMaxHealth(pet, healthmax) doCreatureAddHealth(pet, healthmax) doCreatureAddHealth(pet, (health - healthmax)) doCreatureSay(cid, "Go, ".. getCreatureName(pet) .."!") doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MAGIC_GREEN) doCreatureSetStorage(cid, PET_UID, pet) return true end -- is pet function is_pet(cid) return getCreatureMaster(cid) == 0 and false or isPlayer(getCreatureMaster(cid)) end dofile(getDataDir() .."/lib/pet-spells.lua") Pet_Rat = PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14) Pet_Cave_Rat = PetSpecie:new("Cave Rat", 40, 20, 10, 10, {[1] = Dark_Bite}, "Munster", 32) Pet_Munster = PetSpecie:new("Munster", 100, 50, 20, 20, {[1] = Dark_Bite}, false, false) 2. Crie um arquivo em data/lib com o nome pet-spells.lua e cole o código abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. dofile("data/spells/lib/spells.lua") Dark_Bite = { name = "Dark Bite", level = 1, mana = 100, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_SMALLSTONE, target = true, range = 1, min = 300, max = 500, area = 0, exhaust = 1000, } Rock_Throw = { name = "Rock Throw", level = 1, mana = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_NONE, target = true, range = 1, min = 20, max = 25, area = 0, exhaust = 1000, } 3. Crie um arquivo em data/talkactions/scripts, chamado pet-talkactions.lua e cole o conteúdo abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. function onSay(cid, words, param, channel) param = string.explode(param, ":") if param[1]:lower() == "go" then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You cannot call your pet at protection zone.") end local pet = get_pet(cid) if pet then return doPlayerSendCancel(cid, "You cannot call your pet two times.") end call_pet(cid) return true elseif param[1]:lower() == "back" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:back() return true elseif param[1]:lower() == "release" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:release() return true elseif param[1]:lower() == "cast" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end local index = tonumber(param[2]) or 1 pet:cast(index) return true elseif param[1]:lower() == "say" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:say(param[2]) return true elseif param[1]:lower() == "move" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not isInArray({"north", "south", "east", "west"}, param[2]:lower()) then return doPlayerSendCancel(cid, "Invalid direction.") end pet:move((_G[param[2]:upper()] or NORTH)) return true elseif param[1]:lower() == "addexp" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if getPlayerGroupId(cid) < 3 then return doPlayerSendCancel(cid, "You cannot use this command.") end pet:addexperience(tonumber(param[2]) or 0) return true end return true end 4. No talkactions.xml <talkaction words="/pet" event="script" value="pet-talkactions.lua"/> 5. Crie um arquivo em data/creaturescripts/scripts com o nome pet-creaturescripts.lua e adicione o conteúdo abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. function onKill(cid, target, lastHit) local pet = get_pet(cid) if not isMonster(target) or getMonsterInfo(getCreatureName(target)) and getMonsterInfo(getCreatureName(target)).experience == 0 then return true end if not pet then return true end pet:addexperience(getMonsterInfo(getCreatureName(target)).experience) return true end function onDeath(cid, corpse, deathList) if not is_pet(cid) then return true end local master = getCreatureMaster(cid) doPlayerSendTextMessage(master, MESSAGE_EVENT_ADVANCE, "Your pet is dead.") doCreatureSetStorage(master, PET_ALIVE, 0) doCreatureSetStorage(master, PET_HEALTH, getCreatureMaxHealth(cid)) return true end 6. No arquivo login.lua de data/creaturescripts/scripts, adicione: registerCreatureEvent(cid, "PetKill") 7. No arquivo creaturescripts.xml, adicione: <event type="kill" name="PetKill" event="script" value="pet-creaturescripts.lua"/> <event type="death" name="PetDeath" event="script" value="pet-creaturescripts.lua"/> 8. Em cada arquivo XML de cada monstro que servirá como pet, adicione: <script> <event name="PetDeath"/> </script> 9. Mude o flag convinceable de cada monstro que será um tipo de pet. <flag convinceable="1"/> 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.1 ponto -
• SPR & DAT Pokemon 5° Geraçao - Stigal [Download]• • Menu: ├ Informações; ├ Download; ├ PrintScreen; └ Creditos. • Informações Basicas • • Download's • [Pokemon] SPR e DAT [Pokemons 5 Geração] (4shared) http://www.4shared.com/rar/E836cXv0/Pokemon_Sprite_5_Gerao_-_Stiga.html Sprite Editor [v1.3.0] (4shared) http://www.4shared.com/rar/ZQ1w2BpH/Stigal_-_Spriter_Editor.html? Scan [Pokemon] SPR e DAT [Pokemons 5 Geração] (Virus Total) https://www.virustotal.com/file/030d85e9fe0bb5cab4e8159e3247b86a633acb35dc0773a03effe17da08cef87/analysis/1347751884/ • Prints De Algumas SPR • • Creditos • Stigal - {Master}1 ponto
-
Criando OT em Internet Compartilhada em qualquer modelo de modem ! Funciono Comigo ! Se você tem Internet Compartilhada...ou seja, aquela que conceta automaticamente quando você liga o pc ! e Seu IP Nunca muda e por isso não conseguia por OT on ! (Acabaram seu problemas ) Obs: Depois dos passos você tera que concetar manualmente a internet ! São apenas 3 passos 1º Vá em Iniciar ---> Painel de Controle ---> Opções da Internet ---> Conexões ---> Adicionar ---> Conectar-se a Rede Por meio de banda larga (no meu caso) --- > Concluir --- > Nome de Usuario e Senha (Coloque os seus no qual te passaram) ---> OK -- > Iniciar -- > Conectar-se --- > Conexão Banda larga --- > Conectar (Provavelmente ainda não ira concetar agora faça o 2º passo) 2º Vá atras do seu modem e presione 3 vezes rapidamente o Botão Reset (Eu usei uma caneta) 3º Espere uns 15 segundos ate o modem estabilizar...e Vá em Inciar -- > Concetar-se --> Conexão banda larga --> e Clique em Concetar 4º Sua internet esta conectada ! E agora cada vez que você reiniciar seu PC seu IP estará renovado ! Assim podendo criar OT ou Qualquer server de qualquer jogo ! Obs: Se a internet for usada por dois Pc ou mais...não fassa o tuto ! Ou você tera q re-configurar o modem ! Tuto By : GodNobezinho1 ponto
-
Ola Amigos do XTibia.com, Eu venho hoje aqui compartilhar com aqueles que gosta do Anime Pokemon um Exelente servidor de Poketibia. Veja oque temos no Servidor. Sistemas •Surf - 100%• •Ride - 100%• •Fly - 100%• •Order - 100% •Systema HeadButt - 100%• •Novos Systemas - 100%• •Pokemons Sem Level - 100%• •Ditto System - 100%• •Tv/Can - 100%• •!Love - 100%• •Nursa Joy - Heala Todos Os Pokemons - 100%• •Henry - Vendedor de Stones - 100• •Sexo nos Pokemons - 100%• •Loot - 100% (Com mais de 200 Novos itens)• •Kit Inicial - 100%• •Pokemons - Kanto E Jhoto• •M1 Ao M12 - 100%• •Gynasio System - 100%• •Ataks De Pokemons - 100% • •Pode Jogar Ball De Longe - 100%• •Houses - 100%• •Dex - 100%• •Boost - 100%• •Aura System - 100%• •Todas AS Oufits PxG/Skve - 100%• •Novas Oufits - 100%• •Novos Ataks - 100%• •Potion - 100% (Agora com ataques em 2D)• •Revive - 100%• Novas Sprits Pokemons - 100% •Pokemons Inicial• •Bulbasaur, Charmander , Squirtle, Cyndaquil, Totodile e Chikorita. - 100% Mapa •Hunts - Kanto E Jhoto •Hunt De Ditto - 100% •Quests - 100% (mais de 50 quests) •Novo Mapa - 100% •Saffari Zone - 100% •Poke Balls• •Poke Ball - 15X •Great Ball - 20X •Super Ball - 25X •Ultra Ball - 30X Pokemons •Todos Nossos Pokemons Tem Hunt Kanto E Jhoto - 100% •Ataks - 100% •Novos Ataks - 100% •M1 Ao M12 - 100% •Pokemons Balanceados - 100% •1 Geraçao - 100% •2 Geraçao - 100% •Boost Maximo - 50 •Npc• •Ncp - 100% •Npc Mark - 100% •Npc De Aura - 100% •Npc Travel - 100% •Npc Name - 100% Cliente •Cliente - 100% Proprio. UPDATE UPDATE CONCLUIDO: Foi Adicionado o mapa Do PA Completo, Com mais de 50 Quests disponiveis com Mais de 15 Ilhas para melhor lvl up. foi adicionado tambem um novo site. www.pokemonbuster.com SERVIDOR Bom nosso servidor é 24Horas Online e sem Lag. Com Website. *~~Prints~~ (DO UPDATE)* Bom Galera Fica ai a dica para quem quer jogar um servidor serio e divertido. Nosso Site: http://pokemonbuster.com/ Entre no site crie sua conta baixe o client e de inicio a sua jornada Pokemon. "Em breve estarei postando Imagens do servidor".1 ponto
-
Não faço mt's sign's mas de vez em qnd eu faço então taai minha ultima sign1 ponto
-
[Tutorial] Criando papel de parede com efeito - Parte 1
narutomaniacos reagiu a AlexandreKG por um tópico no fórum
Boa noite amigos do XTibia,venho em mais um tutorial de design.Vou dividir este tutorial em partes está no caso é a primeira.O objetivo do tutorial é fazer um papel de parede profissional (estilo de fumaça no fundo).Este tutorial serve para fazer possíveis fundos de sites,logotipos entre outros. Primeiro de tudo abra seu PhotoShop eu estou usando o PhotoShop CS6.Logo após crie um novo documento com as dimensões 700 x 450 de preferência.Após aberto vá na Ferramenta Degradê,conforme a imagem! Selecionando a Ferramenta Degradê,olhe la encima as novas ferramentas de opções.E selecione o ícone Radial,conforme a imagem! E depois,na caixa ao lado esquerdo selecione as cores que quer usar no seu papel de parede.No meu caso eu vou escolher azul e preto. Definições: Preto - Fundo Azul - Circulo Central No meu caso ficou exatamente assim: Na sua area de trabalho do PhotoShop,faça o tracejado da ferramenta dessa maneira.Traçando do ponto A ao ponto B.Igual mostra a figura abaixo. Após largar o mouse,ficará assim! É um resultado extremamente lindo de se ver,isso não é todo dia que acontece <risos> Duplique a camada,usando as teclas de atalho:CTRL+J! Depois selecione a camada copiada,e mude o tipo para Subexposição de Cores,conforme a imagem abaixo! Dará um novo efeito a imagem,ficando mais ou menos assim: Bom,esta parte esta finalizada. Agora,crie uma nova camada.Vá em Filtro > Acabamento > Nuvens ! OBS:As cores la embaixo tem que ser preto e branco,respectivamente. Note que dará um efeito de nuvem,após fazer isso.Selecione a camada das nuvems e mude o tipo para Sobrepor,assim como a imagem. Dará um efeito bem legal.Após fazer isso selecione a segunda camada e diminua a opacidade para 70%,para dar um retoque. Agora,é só você escrever algo no meio,e depois mudar o tipo para Sobrepor.Vou dar um exemplo de como ficou o meu. Eu gostei do resultado,espero que vocês também gostem. Links Úteis: Dicionário de Layers Parte 2:Em Breve1 ponto -
[TibiaME] Questionário
Gears reagiu a FelipeGorreri por um tópico no fórum
Iaae pessoal tudo bem? Então, eu estou pensando em começar aqui alguns tutoriais sobre TibiaME que tal? Antes vou perguntar algumas coisinhas... Você já jogou? Se sim oque achou? Jogaria TibiaME? Nota para o jogo Você acha que seria legal um "sub-fórum" para TibiaME? Pois é, estou jogando agora, e gostaria de aprender e ensinar vocês também... Aguardando as respostas (:1 ponto -
Preview: 01. Pressione Ctrl+O e abra uma foto qualquer, no caso deste tutorial usaremos a foto abaixo. 02. Pressione Ctrl+J para duplicar a camada, pressione Ctrl+Shift+U para retirar a saturação da imagem, pressione Ctrl+J para duplicar a camada novamente, vá em Imagem> Ajustes> Brilho/Contraste, defina os valores de +28 para Brilho e +27 para Contraste e pressione Ok, vá em Imagem > Ajustes> Equilíbrio de cores e defina os valores abaixo. 03. Sua imagem deverá ficar como a da foto abaixo. 04. Pressione Ctrl+Shift+Alt+N para criar uma nova camada, pressione a letra D do teclado para resetar as cores de Foreground e Background para preto e branco, pressione a letra X do teclado para alternar as cores de Foreground e Background, sua cor de Foreground deve ser a branca, pressione a letra B do teclado para selecionar a Brush Tool, escolha um brush de tamanho pequeno e crie algumas linhas como na foto abaixo. 05. Diminua a opacidade da layer para 65% e mude o modo de blend para Luz Indireta, sua imagem deverá ficar como a da foto abaixo. Créditos : Tutoriaisphotoshop.1 ponto
-
[Tutorial] Sign Clean bleach
Gabriel Couto reagiu a Overpower por um tópico no fórum
Galera eu vi esse tutorial que o Mazeko fez gostei pakas mesmo u.U CASO NAO ABRA A IMAGEM -> http://fc07.deviantart.net/fs70/f/2010/345/b/1/tutorial_sign_ichigo_bleach_by_mazeko-d34p43y.jpg Créditos : Mazeko1 ponto -
Fala galera... bom eo e o over apostamo qm fazia 1 sign legal e mais rapido.. n vo fica escrevendo pq vai se ele ja ta postando '-'1 ponto
-
lib/level system.lua ache isso.. if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") == 50 and getItemAttribute(item, "aura") then sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")]) --edited aura system end troque para isso.. if getItemAttribute(item, "boost") and getItemAttribute(item, "boost") >= 50 and getItemAttribute(item, "aura") then sendAuraEffect(pk, auraSyst[getItemAttribute(item, "aura")]) --edited aura system end1 ponto
-
[TibiaME] Questionário
FelipeGorreri reagiu a Gears por um tópico no fórum
Postarei aqui só pra dar incentivo a galera vamos lá Você já jogou? Se sim oque achou? Nunca joguei TibiaME, ja joguei tibia global, otservers, etc... Jogaria TibiaME? Não jogaria não, pois prefiro o bom e velho tibia *-* Nota para o jogo: Bom, parece bastane com o OTclient pelas fotos, uns 7~8 Você acha que seria legal um "sub-fórum" para TibiaME? Seria legal sim,mas teria que ter ideias e maior desenvolvimento da seção, não adiantaria implantar essa sub-seção agora pois a seção não é mt movimentada Fotos pro pessoal ver1 ponto -
provavelmente esse monstro q queres sumonar ta com a tag <flag convinceable="0"/> mude para.. <flag convinceable="1"/> no .xml do monstro... na pasta monster/1 ponto
-
[Encerrado] [Pokemon] Cancelar a Task
didogunner reagiu a Slicer por um tópico no fórum
tenta assim.. sobre ele ja entregar direto, tenta testar com outro char... talvez tivese 2 storages do ms npc, por algum motivo...1 ponto -
spell usadar perto de tal lugar n gasta mana
Hamsterbob reagiu a brun123 por uma questão
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -35, 0, -55) local area = createCombatArea({ {0, 0, 0}, {1, 1, 1}, {1, 2, 1}, {1, 1, 1}, {0, 0, 0} }) setCombatArea(combat, area) local WATER_TILES = {1370,1371,1372,1773,9466,1378, 4718, 6628, 6630, 4664, 5739, 4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825} function onCastSpell(cid, var) local pos = getPlayerPosition(cid) doSendMagicEffect({x = pos.x+1, y = pos.y+1, z = pos.z}, 87) local position, match = getCreaturePosition(cid), false for x = (position.x - 3), (position.x + 3) do for y = (position.y - 3), (position.y + 3) do local tmp = {x = x, y = y, z = position.z} if isInArray(WATER_TILES, getThingFromPos(tmp).itemid) then match = true break end end end if match then addEvent(doCreatureAddMana, 1, cid, getInstantSpellInfo("Water Circle").mana) else doPlayerSendCancel(cid, "Alguma mensagem de erro!") return FALSE end return doCombat(cid, combat, var) end1 ponto -
Player Morre e nao vai pro tlempo ! Ajuda
gabrielsurf reagiu a Lostzera por uma questão
não no mysql, no arquivo config, na pasta principaldo ot Abraço, AjuDei? Rep+ plx1 ponto -
Pokemon dash advanced !
336513 reagiu a StyloMaldoso por um tópico no fórum
Obrigado, mais como eu falei, só refiz o mapa mesmo e colokei no servidor do Slicer ^~ server é totalmente creditos dele xD, só postei o server porque eu n tava achando esse bloko e notas meu de quais scriptes eu configurei pra decha com o mapa, e valeu (:1 ponto -
[Narutibia] Spr,dat,pic Naruto Sky
narutomaniacos reagiu a Gabrieltxu por um tópico no fórum
Fala aew galera do Xtibia eu tinha um Projeto de narutibia e cansei e irei postar a SPR,DAT e PIC para vcs baixarem e fazer bom Proveito xD... Oq contem Nele? bom vou falar o basico que tem nele... Muitas Sprites de Voaçoes a muitas Sprites de Movimentos a Powers... Client 100% RPG Só algumas coisas do Tibia... Personagems com Grafikos melhores ... Umas ScrenShot: Img do Client: hehe isso é Tudo agora o Download: Download: http://www.mediafire...peaa26365so9hqa Scan: https://www.virustot...sis/1355087306/ Vlw galera Fikem Com deus de REP++ e Comentem ai Oq seis acharam vlw1 ponto -
O meu RME vai desda versão 7.40. Uso o RME 2.2 @Mulzy, da erro pelo seguinte fato. Os itens ID do tibia 8.0~8.40 ao se mudar para o 8.54 mudam, ou seja buga tudo, oque seria no tibia 8.0 uma pedra no tibia 8.54 viraria uma parede (um mero exemplo). Quando você faz esta mudança tem vez que o RME não 'lê', por efeitos de varios erro, e outra ele consegue 'lê' porém vêm acarretado destes vários bugs.1 ponto
-
area incorreta, movido amigo vc tem q ir em lib/configuration.lua e mudar na tabela pokes os atributos de cada poke.. ;x ["Bulbasaur"] = {offense = 4.9, defense = 4.9, specialattack = 6.5, vitality = 4.5, agility = 106, exp = 64, level = 20, type = "grass", type2 = "poison"}, esses ae sao os atributos q os pokes vao ganhar a cada lvl... ;x1 ponto
-
como centralizar
gabrielsurf reagiu a Lostzera por uma questão
tipo que target fique no meio da magia? se for, tente isso local combat = {} combat[1] = createCombatObject() setCombatParam(combat[1], COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat[1], COMBAT_PARAM_EFFECT, 113) setCombatFormula(combat[1], COMBAT_FORMULA_LEVELMAGIC, -0.7, 0, -0.5, 0) combat[2] = createCombatObject() local area = createCombatArea({ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1,1, 0}, {0, 0, 1, 0, 0}, }) setCombatArea(combat[2], area) function onTargetTile(cid, position) local target = getTopCreature(position) if isPlayer(target.uid) or isMonster(target.uid) then doCombat(cid, combat[1], numberToVariant(target.uid)) end end setCombatCallback(combat[2], CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, combat[2], var) end só mudar o numero 3 que seria o target, o numero 1 é aonde a magia vai pega, dai faiz como quiser ae AjuDei? Rep+ PLx1 ponto -
[Gesior] Training offline players
Piabeta Kun reagiu a danielb por um tópico no fórum
CREATE TABLE offline_training (account_id int(11), name varchar(256), start_training int(11), type varchar(256)) ALTER TABLE `players` ADD `offlinetraining_time` smallint(5) unsigned NOT NULL DEFAULT 43200; `offlinetraining_skill` int(11) NOT NULL DEFAULT -1;1 ponto -
Que tal você respeitar mais a nossa seção? Por mais que eu não goste do DinoAdmin e das ações dele, ele não fez nada de mais aqui.1 ponto
-
O problema dos debugs é a vip list. Se voce tentar logar e tiver alguem online na sua vip list voce leva debug. Eu troquei meu executavel mas ele nao é tao estavel quanto o Otx. Da um rep ai pela ajuda! ;D1 ponto
-
Aula 1 - Tags? Cabeçalhos, parágrafos, links e imagens!
guilhermeip reagiu a Lordfire por um tópico no fórum
O HTML5 é baseado num padrão em que todas as tags devem ser minúsculas, e as tags que não são fechadas (como br, img e futuramente vou ensinar input) devem terminar com />, e o espaço antes é útil pra facilitar a leitura. Tanto faz o jeito que você escreve, mas por padrão deve ser assim.1 ponto -
Magia que usa itens para criar um outro item
necroshade reagiu a Oneshot por uma questão
local recipe = {{2674, 1}, {2788, 1}, {2006}} function onCastSpell(cid, var) local create = true for i = 1, #recipe do local tmp, item = recipe[i] item = getPlayerItemById(cid, true, tmp[1]) if item.uid > 0 then if #tmp == 2 and item.type < math.max(1, tmp[2]) then doPlayerSendCancel(cid, "You need more ".. tmp[2] - item.type .." ".. getItemNameById(tmp[1]) ..".") create = false break elseif #tmp == 1 and item.type ~= 0 then doPlayerSendCancel(cid, "You don't have a empty vial.") create = false break end else doPlayerSendCancel(cid, "You don't have ".. getItemNameById(tmp[1]) ..".") create = false break end end if create == true then for i = 1, #recipe do local item = getPlayerItemById(cid, true, recipe[i][1]) doRemoveItem(item.uid, math.max((recipe[i][2] or 1), 1)) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) end doPlayerAddItem(cid, 7588, 1) else doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end return true end Tá aê, tio.1 ponto -
soh para garantir.. tenta deixar a tabela assim.. ;x local raids = { [19000] = {msg = "Demons appeared somewhere!",exhaustion=120,price=100,monsters = { ["Demon"]={x=164,y=57,z=7}, ["Demon"]={x=183,y=57,z=7}, ["Demon"]={x=180,y=39,z=7} } } } local r = raids[item.actionid]1 ponto
-
[9.60] Azeroth RPG
Foxshinigami reagiu a Vmspk por um tópico no fórum
Obrigado pelo apoio galerinha (y) Primeiro Update 21/01/2013 - 18:57 > Def e Armor dos Alvos diminuídas > Otimização do FirstItems1 ponto -
A GENTE APRENDE COM A VIDA, QUE NADA É FÁCIL. É PRECISO ERRAR ANTES DE ACERTAR! MUITAS FALHAS APARECEM, ATÉ MESMO QUANDO VOCÊ PENSA QUE FEZ TUDO CERTO... MAS ISSO É PRECISO, PARA SÓ DEPOIS CONHECERMOS O SEGREDO DO SUCESSO!1 DEPOIS QUE VOCÊ PEGA O JEITO... NADA PODE TE PARAR. VIVAM COM ESSA LIÇÃO!1 ponto
-
Obrigado cara, estamos aqui pra isso Entao as spr sao neutras (usa em qualquer sv) desde que você adicione ao client. Bom uso cara, abraço.1 ponto
-
Introdução À pedido de um membro decidi postar algumas árvores grandes que não uso mais, são no total quatro (4). Posso adiantar que não são as melhores que já fiz (kk), mas pode ajudá-lo! By: Left4Dead Foto: Download: http://www.4shared.c...d/arvores.html?1 ponto
-
Eu tenho algum tempo mais livre em minhas mãos para que eu tivesse mais tempo para concluir a merda. Eu sei que é muito parecido com a Dark Catedral tíbia Global, mas isso é porque eu tentei refazer tudo de que me lembro eo minimap no Tibia Wiki. Ele pode ser usado para uma porção de spawns ... (é monsterfree porque eu sou preguiçoso e não quero adicionar qualquer um XD) imagens: minimaps: download: Click me!1 ponto
-
Vai em data/talkactions e daí se abre talkactions.xml e clica ctrl+f e procura pelo comando que se usa (tipo acho que no seu caso o comando é !buypremium, se for se clica ctrl+f e procura por !buypremium) a linha que tiver esse !buypremium você pode deletar! ou então se prefirir passa seu talkactions.xml pra eu editar aki!1 ponto
-
Ice Islands versao: 8.60 Ice islands completas, com raspaw, casas, npcs etc.. com Folda, Senja e Vege As Ice Islands são dois conjuntos de ilhas localizadas ao norte do Continente Principal de Tibia, no Oceano Nórdico. Por causa da baixa temperatura das ilhas, elas são permanentemente cobertas de neve e gelo. Adicionadas ao jogo no Update de 2007. sao velhas, mais pelo que tenho visto mts mapas globais nao tem ela, e algumas pessoas estavao pedindo intao aqui esta.. http://www.tibiawiki.com.br/Ice_Islands Downloads: Ice islands: http://www.4shared.com/rar/lCEw1mN4/ice_islands.html? Npcs: http://www.4shared.com/rar/N7HZ4GE5/npc_ice_island.html? Scan: https://www.virustotal.com/file/a2075b2331be7811a2751cd8b378f6d4a85f351a9c75b3aca4f496e1184c108e/analysis/ https://www.virustotal.com/file/641ef9ffcaab9f7bce95024f8c00b2bff1fe71036ac49d9797d3c21c4c594cc4/analysis/ ajudei +rep (:1 ponto
-
Tutorial resposta desnecessaria cara, qualquer um lezado sabe colocar no buscar acima "Criando clients"...0 pontos