Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/27/13 em todas áreas

  1. juliok80

    Baiak Barao

    BAIAK BARAO E aí galera, tudo em cima!? Hoje estarei postando um servidor que estive trabalhando a um tempinho, deixei ele online durante 1 mês e a galera aprovou! Agora estou sem tempo para cuidar de um servidor, então decidi postar aqui no Xtibia pra galera baixar. ■ Mapa base: ╠ Baiak Infinity by Mayron ╚ Versão: 8.6 ■ Modificações: ╠ Visual do templo totalmente modificado. ╠ Salas e locais de hunts modificados. ╠ Adicionado sistema anti mage bomb. ╠ A Vip City foi transformada em uma cidade PK, quando vocês entrarem vão entender. ╠ O tempo dos efeitos nos teleports foi aumentado. ╠ Adicionado novas áreas de hunts. ╠ Removido o excesso de trainers para diminuir o lag, porém agora suporta mais pessoas treinando com o novo sistema de treinamento. ╠ Foram criadas novas quests. ╠ Removido o addon doll, agora os addons são obtidos através de quests. ╠ As vocações foram balanceadas. ╠ Novo NPC Colecionador de Ossos, este NPC foi criado para estimular a WAR no servidor. ╠ Foi adicionado ao NPC Barao Seller stamina potion, nova SD para level 400+ e alguns outros itens. ╠ Removido os outfits do Rei, rainha, montaria e borboleta, pois eram muito escrotos. ╠ Adicionado os outfits Wedding e Wayfarer. ╠ Removido a runa prison rune, pois escrotiza totalmente o PVP. ╠ Adicionado NPC que vende Red Skull Amulet. ╠ Adicionado NPC que vende pedras encantadas. ╠ Alterado o ataque de todas as wands e rods. ╠ As melhores armas agora são obtidas em quest e não mais no NPC. ╠ Removido as mensagens de raids e informações que ficavam aparecendo a cada segundo, isso poluía demais a tela do player. ╠ Adicionado NPC que vende rings. ╠ Adicionado monstros nas salas de teleports para sinalizar as hunts. ╠ Adicionado na sala de eventos invasões por alavancas, acesso apenas para GOD com o comando /a. ╠ Erros de português/inglês nas falas e nos nomes dos NPCs foram corrigidos. ╠ As quests foram organizadas no arquivo chestsys (data\actions\scripts), usando o script do Vodkart, agora está muito mais fácil criar sua quest. ╠ Adicionado área de evento WAR. ╠ Adicionado evento Zombie, configurado para executar todos os dias às 20:00 horas. ╠ Foi criado mais casas na cidade principal, e removida as casas da vip city, pois foi transformada em hunt e a galera prefere casas na cidade principal. ╠ Adicionado novos monstros. ╠ Todos as hunts da esquerda dos TPs free foram alteradas, agora se tornaram útil com monstros decentes e pode-se caçar como as outras áreas. ╚ Foi adicionado script para deixar o servidor claro 24h, pois quando ficava noite o servidor ficava muito escuro. ■ Bugs encontrados no mapa base e já foram resolvidos: ╠ A vocação paladin foi arrumada, agora o paladin está usando potion e atacando ao mesmo tempo. ╠ Arrumado os NPCs Warmaster Addon 1 e Warmaster Addon 2 que estavam entregando o addon de graça. ╠ O Teleport dos Defiler na POI estava sem destino, já foi arrumado. ╠ O book e a boots que eram obtidos na VIP POI foram substituídos, pois eram bugados. ╠ Foi arrumado o script da alavanca da Annihilator que gerava um erro na distro. ╠ Foi corrigido o evento da arena, pois as coordenadas estavam mal posicionadas no script, fazendo com que alguns players ficassem presos no evento. ╠ Foi removido a quest do amazon shield, pois gerava um bug de drop Dwarven Armor. ╠ O tempo do save server foi corrigido. ╠ Alguns itens que possuem atributos foram corrigidos, pois ao equipar os itens não davam skills. ╚ Corrigido o tempo de idle, agora está kickando o player que fica afk durante 15 minutos. ■ Eventos: ╠ Com o GOD, use o comando /arena x, onde x é o número de players que vão participar do evento. ╠ No teleport de eventos existem alavancas para invasões na cidade, os monstros dropam itens de quest, porém o drop é raro. ╠ Monstro Guarda Costas do GOD, pode ser sumonado na cidade, ele possui magias editadas e o loot é atrativo para que os players participem do evento. ╚ Zombie event é executado diariamente às 20:00 horas, para alterar o horário basta ir até a pasta data\globalevents, abrir o arquivo globalevents.xml e alterar o horário do zombie event. ■ Imagens: Templo Castelo Teleports Trainers PK City Quests Eventos Distro Se houver problemas para visualizar as imagens, segue um link para o album de imagens: http://imgur.com/a/zRFWd#0 ■ Conta do GOD: ╠ Account: god ╚ Senha: god ■ Link para download: ╠ 4Shared: Download ╠ MegaUPLOAD: Download ╚ Scan ■ Tutoriais básicos: ■ Dicas extras: ■ Créditos: ╚ Comunidade Xtibia, sou muito grato a todos dessa comunidade, principalmente ao pessoal da área de scripting, onde aprendi muitas coisas e passei a maior parte do tempo quando estava desenvolvendo o mapa e seus sistemas. Creio que não exista nenhum bug, porém se encontrarem algum, favor reportar aqui para que possamos resolver juntos. Espero que gostem. Abraços!
    2 pontos
  2. Mykez

    MAPA PXG .

    REMOVIDO.
    2 pontos
  3. 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 Breve
    2 pontos
  4. beto06

    Mapping [RPG]

    Eis o mapa, 90% completo: DOWNLOAD Att, Beto e AundSoul
    2 pontos
  5. Pedido aceito. Logotipo v1 Logotipo v2: E de presente um bannerzinho rs
    2 pontos
  6. wazzarks

    Global Full [8.60] Com Teleports...

    Bom, Esse é meu Mapa Global 8.6 Com Teleports Cidades + Carlin + Thais + Npcs nas cidades igual o global e alguns editados + Sistema de Addon Igual Global + Items de Addons Compra no Npc Bulma,todos com preços reformulados,para dificultar mais ainda ao fazer os addons + Sistema de Parcel para as Cidades 100% Quests + Desert Quest + Banshee Quest + Firewalker Boots Quest + Hota Quest + Anihilator Quest + Pits of Inferno Quest + Inquisition Quest + Yalahar Quest + Demon Helmet Quest + Demon Oak Quest + The Epiphany e Winged Helmet Quest [new] + Solar Axe e Great Shield Quest [new] Teleportes + 30 Teleportes hunts igual o Global + Teleportes de Demons e Heros Aumentados + Apenas Teleportes das Hunts mais usadas + E algumas hunts melhoradas + Reformulado area,de teleportes + Arrumado o tp de thais para os trainers que estava bugado + Arrumado 2 erros de spawn,que apareçia quando iniciava o ot + Arrumado alguns erros no mapa + Bk Quest Adcionada + Fibula Quest Adcionada + Bs quest Adcionada + Noble armor quest adcionada + Mapa size almentado para 4200x4200 + Bug dos Amuletos e rings infinitos arrumados + Bug do Aol agora funcionando Hunts Novas: Trainers: Download: DOWNLOAD ESTA COM LINK QUEBRADO, NAO SEI PORQUE MAIS O MAPA SUMIU DO MEDIAFIRE, VOU VER SE CONSIGU POR DENOVO. Scan: http://imageshack.us.../850/scanq.png/ Créditos: Wazzarks Soldoran Quem Gostar Da Um +Rep Aee..Vlws. Breve Estarei Postando Meu Mais Novo Trabalho> The NatrushWorld 2.0 (Mapa Proprio).
    1 ponto
  7. Vmspk

    [9.60] Azeroth RPG

    Azeroth Server Updated 28/01/2013: v2.0 by Vmspk Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos Versões Anteriores: v1.0 [8.70]: http://www.xtibia.co...server-updated/ v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ Versão: 9.60 Distro: TFS 0.4 Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Mapa RPG bem detalhado para Ots Low e Mid rate. > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome"). > NPCs de Travel/Boat diferentes para cada cidade. > Mais de 100 quests (além das principais) espalhadas pelo mapa. > Quests especiais com NPCs > Arena PvP sem perda de items. > Sistema de Guerras pelo Castelo [entre guilds] (mais detalhes abaixo) > Sistema de Refinamento e Slot (mais detalhes abaixo). > Sistema de Mineração (mais detalhes abaixo) > Scripts e sistemas aprimorados para o servidor > Distro SEM erro algum > Equipamentos 9.60 funcionando corretamente > Novas Hunts > Raids de bosses 9.60 > Montarias por quest > Principais Quests: Annihilator Blue Legs Pits of Inferno MMS The Inquisition The Death FireWalker Boots Demon Helmet Draken Hell Conquer Prismatic Armory Deepling Abismal > 27 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Honor Castle War Upgrade & Slot System > Histórico: V 0.2 V 0.3 V 0.4 V 1.0 V 1.1 V 2.0 Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP, VIP 2, VIP 3, VIP 345456364. Não há raids com monstros excessivamente fortes nas cidades iniciais. Créditos: < Unknow YourOts Edited >< Mix Yourots Team >< Crystal Server Team >< Tryller >< Mock >< TFS Team >< TonyHanks >< Centera World >< SmoOker >< Mappers Xtibia e OtservBr >< Vmspk > (Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos) DOWNLOADS > Opcionais Utilitários - Source *Utilitários inclui: SQLite Studio + Otland Ipchanger > Servidor Azeroth Server v2.0   [MEDIAFIRE] Para entrar no servidor sem usar a internet, ponha no ipchanger localhost Se você estiver usando sqlite, vá até o config.lua e mude ingameGuildManagement = false para ingameGuildManagement = true > Scan Acc do GOD: vmspk/222222 Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. !info para saber mais sobre as novidades do Azeroth Server. Editável na pasta do Ot, em Notícias. Comando !bless e !rank disponíveis. Para saber os IDs das pedras e outras coisas vá ao Histórico, na versão 1.0. Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Conheça o mapa, crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre. Contato: vmspk@hotmail.com Os arquivos dos ots 9.60 estavam muito errados e incompletos, ou melhor, podres. Não duvido que a maioria desses 9.60 postados aqui ou nos outros fóruns estejam infestados de bugs e coisas que não funcionam. Loots errados, monstros copiados, escadas sem registros, novos equipamentos sem movements (propriedades não faziam efeito), bordas de mapas 9.60 fora do lugar, scripts simples como os de Locked Doors em conflito com a lib, etc, etc. Tive um trampo do cão pra arrumar tudo isso. Do meu suor eu digo a vocês, dou-lhes o melhor servidor 9.60 (pelo menos por enquanto) Conheça também o 4Fun Server 9.1
    1 ponto
  8. Oneshot

    Pet System OOP

    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
  9. caotic

    Treiner OFF 1.0

    Ola galera xtibia. Eu resolvi fazer o Trainer OFF 1.0 o antigo trainer off beta tinha algumas limitações. Segue o link do Trainer off beta: http://www.xtibia.com/forum/topic/199659-trainer-off-sytem-beta-by-caotic/ Como o próprio nome diz e um treinamento quando o player está off. Ele paga uma taxa para treinar uma certa quantidade de horas e depois suas skills são upadas. Na versão superior foi adicionado Vamos ao sistema lets go: Crie um arquivo lua chamado de trainer em talkactions e coloque isto: local Train = { skill = 0, quant = 0, time = 0, vocations = {}, money = 0, player = 0 } local table = { ["fist"] = SKILL_FIST, ["sword"] = SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["shild"] = SKILL_SHIELD, ["fishing"] = SKILL_FISHING } local x = {"First Skill", "Sword Skill", "Axe Skill", "Distance Skill", "Shild Skill", "Fishing Skill"} function Train:new(cid, param, vocations, money, quant) local trainer = { vocations = {}, param = param, player = cid, money = tonumber(money), quant = tonumber(quant) } return setmetatable(trainer, {__index = self}) end function Train:start() cid = self.player local t = string.explode(self.param, ",") if not t[1] or not isNumeric(t[1]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o tempo que você quer treinar") and false end self.skill = table[t[2]] self.time = t[1]*36000*1000 self.money = self.money*t[1] self.quant = self.quant*t[1] if not t[2] or not table[t[2]] then str = "Lista de skills(Diga a sua skill)\nPara dizer e só escrever /treiner (tempo do treiner,skill)\n" for i = 1, #x do str = ""..str.."\n"..x[i].."" end doShowTextDialog(cid, 1397, str) return true end if isInArray(self.vocations, getPlayerVocation(cid)) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação não permite o trainer") and false end if self.money >= getPlayerMoney(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..self.money.." de money") and false end if self.time <= 36000*1000 then self.time = 36000*1000 end exhaustion.set(cid, 44226, self.time) doPlayerAddSkill(cid, self.skill, self.quant) doPlayerRemoveMoney(cid, self.money) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Pronto você esta em treinamento") doRemoveCreature(cid) end function onSay(cid, words, param, channel) local voc = {} ---- Vocações QUE NÃO SE PERMITIDAS TRAINER OFF(Se não tiver deixe sem nenhuma) local money = 200000 ----- Quanto de money PARA CADA hora local quant = 4 ------ Quantidade de skill que ele ganha PARA CADA HORA local trainer = Train:new(cid, param, voc, money, quant) trainer:start() return true end Agora vá em talkactions.xml e coloque esta tag: <talkaction words="/treiner" event="script" value="trainer.lua"/> Agora vá em creaturescripts e crie um arquivo lua chamado de treiner e coloque este codigo: function onLogin(cid) if exhaustion.get(cid, 44226) then doPlayerPopupFYI(cid, "Não e permitido logar enquanto esta treinando") return addEvent(doRemoveCreature, 180, cid) end return true end Registre o evento em login.lua colocando isto antes do ultimo return true: registerCreatureEvent(cid, "treiner") E coloque esta tag em creaturescripts.xml: <event type="login" name="treiner" register = "1" event="script" value="treiner.lua"/>
    1 ponto
  10. wesleyt10

    Aprendiz (Dragon) Avaliem

    Removido
    1 ponto
  11. Bom Galera tava jogando um ot de pokemon chamado DPO mais tava offine ai decedir criar uma hunt de fire ja que as que existe em ot são feias fiz uma mine hunt oque pode ser feita nela? pode transformar em uma quest missão etc. Fiz com calma não e aqueles negocio quadrado que você quando procura so acha mal feito com preça bom eu ia fazer a cidade tambem mais não tneho paciencia em cidades mais caves eu tenho e sou fera! e oque eu acho ;D Uploaded with ImageShack.us Link para download http://www.4shared.com/file/PER4fAPu/Mini_fire_hunt_POKEMON.html se alguem poder me fazer um scan ficaria grato, pois não sei fazer scan na net. quando fizer o scan eu edito e posto ele ok
    1 ponto
  12. em creaturescripts crie um arquivo e cole isso nele: function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if getPlayerMagLevel(cid) == 35 then for i = 1, 9 do doPlayerSetLossPercent(cid, i, 0) end end end tag: <event type="death" name="SkillLoss" event="script" value="nome do arquivo.lua"> agora vá em login.lua e registre essa tag: registerCreatureEvent(cid, "SkillLoss") </event>
    1 ponto
  13. Gears

    pedido ae poketibia8.54

    Aperta shift+ctrl+mouse e arraste até selecionar todo o conteudo que vc quer , dps da ctrl+c e no outro mapa de ctrl+v
    1 ponto
  14. StyloMaldoso

    MAPA PXG .

    muito bão brother kk, parabéns mesmo *-* rep +
    1 ponto
  15. Olá galera Graças ao meu mestre Oneshot eu consegui aprender a poderosa Programação Orientada a Objetos, ou Oriented-object Programming (OOP), e fiz meu primeiro sistema com ela, um sistema de Potions. Script (potions.lua): Tag (actions.xml): <action itemid="8704;7618;7588;7591;8473;7620;7589;7590" script="potions.lua"/> Configurando: Créditos: - LuckOake -- Pelo Script - Oneshot -- Por me ensinar OOP e ajudar com o script
    1 ponto
  16. @Topic Valeus galera, tô começando a pegar o jeito de OOP, mas ainda preciso treinar muito @DrakyLucas você está atribuindo o uid = 0 sempre, então nao é desnecessario esse uid? (só por curiosidade mesmo) e novamente, parabens! rep+ merecido! Eu coloquei o UID por questão de organização mesmo, pra eu não me perder quando eu editar o script
    1 ponto
  17. Gears

    [8.6] Desert Team War V1.0

    Entrei na acc do god e tentei subir as escadas , da o mesmo erro , maas eu me surpreendi quando quando dei /r na escada olha isso Por isso não da pra subir as escadas , retira isso ai mas já to aprovand . .
    1 ponto
  18. Kausen

    AlexSs Mapping Art 2013

    "Sinceramente eu não gostei,mais to postando " "Natureza Básica"
    1 ponto
  19. Audisio

    [Encerrado] Algumas duvidas

    Bem cara, posso não ser o melhor professor quanto a isso, pois tambem não sou lá muito conhecido disso, mas farei meu possivel. Primeiro, pelo que eu entendi, as bases Mysql, e Sqlite funcionam mais ou menos assim: SQlite: geralmente é usada para servers que não vão ter site, ou que o hoster será na sua casa, assim usando o SQLite Studio, você poderá controlar toda a database no seu pc. Mysql: é usado para servers com site, ele vai hospedar sua Database numa rede local, e poderá ser conectada à um site, uma ferramenta conhecida para se fazer isso é o Xampp, o qual vai ser o centro de ações do site/database, pelo Mysql/Apache. Eu creio que posso estar errado, mas pra lhe ajudar, vai aqui um tuto de Mysql. Tutorial MySQL Créditos: Raphael Lion Espero que ajude e boa sorte.
    1 ponto
  20. SmiX

    Shiny Stone - By SmiX

    Olá pessoal, ha muito tempo não posto nada né? Hoje venho quebrar este tabu. Como venho acompanhando a evolução de alguns servidores de pokémon, vejo que não um sistema muito simples e legal o qual venho-lhes passar; Shiny Stone System. O que faz? Fácil, ele evolui seu pokémon, caso ele tenha uma evolução Shiny e transforma a pokebola em shiny pokebola. Como usar? Você da "Use" na stone e joga ela no seu pokémon. Vamos instala-lo? Não, não vamos. @Brincadeirinha ^}^(adoro esse emoticon) Vá na pasta data/actions/script, crie um arquivo chamado "shinyStone" e cole isso dentro: local evo = { ["Snorlax"] = "Caterpie", } local balls = { [11826] = {newBall = 11737}, [11832] = {newBall = 11740}, [11835] = {newBall = 11743}, [11829] = {newBall = 11746}, } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then doPlayerSendTextMessage(cid, 27, "Congratulations! Your "..getPokeName(itemEx.uid).." evolved into a "..evo[monster].."!") local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doSendMagicEffect(getThingPos(itemEx.uid), 18) doRemoveCreature(itemEx.uid) doRemoveItem(item.uid, 1) doSummonMonster(cid,evo[monster]) local pokeball = getPlayerSlotItem(cid, 8) doItemSetAttribute(pokeball.uid, "poke", evo[monster]) doItemSetAttribute(pokeball.uid, "level", pokes[evo[monster]].level) local getShinyPokeballs = balls[getPlayerSlotItem(cid, 8).itemid] doTransformItem(getPlayerSlotItem(cid, 8).uid, getShinyPokeballs.newBall) return TRUE end end return FALSE end Agora a tag: <action itemid="ID DA STONE" script="shinyStone.lua" /> Você só preisa editar a tabela com os nomes dos pokémons e usa. ^^
    1 ponto
  21. Bom Dia gente, hoje venho apresentar mais uma verçao do meu Baiak Super Editado, mas agora o nome è Baiak Link By (ADM) Z1K4 vou tentar explicar bem detalhado para que voçes entendao bem. Entamo Vamos La; <---- Oque tem de Novo ? ----> <---- Monstros, Itens e magias Novos ----> <---- S's ----> DOWLOAD : SCAN: @edit Cretitos: Mapa: eu magias: meu amigo(gabriel) monsters: Xtibia pois tirei os script aki items: eu da um rep+ ae
    1 ponto
  22. Foi uns dos melhores baiak que já vi!
    1 ponto
  23. O animal de teta que fez esse script inverteu o nome da função. function onSay(cid, words, param, channel) if getPlayerGuildId(cid) == 0 then return doPlayerSendCancel(cid, "Você não está em uma guild.") end if getPlayerGuildLevel(cid) < GUILDLEVEL_VICE then return doPlayerSendCancel(cid, "Você precisa ter nível de vice-líder para enviar uma mensagem.") end local message = "*Guild* " .. getCreatureName(cid) .. " (" .. getPlayerLevel(cid) .. ")[" .. getResets(cid) .. "]: " .. param for _, player in ipairs(getPlayersOnline()) do if getPlayerGuildId(player) == getPlayerGuildId(cid) then doPlayerSendTextMessage(player, MESSAGE_STATUS_WARNING, message) end end doPlayerSendCancel(cid, "Sua mensagem foi enviada.") return true end
    1 ponto
  24. aguinho600

    [Encerrado] Problemas com Dat Editor

    Hm...Recomendo que sempre tenha um "Backup" de seus .spr e .dat ! Não conheço outro Dat Editor, entretanto não acho que exista uma forma de compilar mais rápido, a demora que você fala provavelmente não venha do Dat Editor e sim do seu computador '-' Enfim, teste em outros computadores ou peça para seus amigos testarem e veja no que dá...Ah, claro, sugiro que adicione as sprites em grande quantidade e compile todas de uma vez, isso seria mais rápido ;P
    1 ponto
  25. AlexandreKG

    Website 8.0 [ Dbo ]

    -gian1616 Eu baixei,e olhei aqui.Para editar ela vou criar um mini tutorial como fazer isso. Você cria a imagem logo (Imagem do topo do site). Depois você precisa hospedar ela em algum site de hospedagem - site recomendado www.imgur.com. Você vai até a pagina skins,de seu htdocs e abre o arquivo bianco.css,procure por isto. http://imageshack.us/a/img716/7312/topody.png Você pega o URL,da imagem que você hospedou e ponha no lugar do link acima.Salve,feche e olhe o resultado! Dúvidas ,favor perguntar aqui! Obrigado,pela atenção!
    1 ponto
  26. Estou disponibilizando aqui para você as database que você vai precisar para entrar. Faça o seguinte. Delete sua database atual,e reecrie-a.E ponha este arquivo na pasta schemas do seu servidor,e importe-a depois.Terá todas as tabelas necessárias adicionadas. Para baixar o novo arquivo mysql clique aqui!
    1 ponto
  27. Slicer

    [Encerrado] Sistema De Informações

    blz tenta assim.. talkactions/scripts/ tag: <talkaction words="!info" event="script" value="xxxx.lua"/>
    1 ponto
  28. Tópico movido para a seção de dúvidas e pedidos resolvidos.
    1 ponto
  29. Vmspk

    [9.1] 4Fun Server

    @zagaf Dá trabalho man. aconselho vc a encontrar um servidor que tenha as features 9.60 funcionando direitinho, daí vc vai ter q importar as quests, creaturevents, movements e globalevents exclusivas do 4 fun e excluir as quests do servidor q vc baixou. Substituir o mapa, é claro, e corrigir algo q ainda tenha a corrigir.
    1 ponto
  30. Tenta trocar a lib do seu npcsystem. Segue o link onde você pode baixar a lib: http://www.4shared.com/rar/DYdk9l1o/lib.html Abra a pasta data\npc renomeie a lib atual para lib.old e coloque essa que está no link acima. Abraços!
    1 ponto
  31. Oneshot

    Pet System OOP

    Bom, como eu disse, é um sistema em fase de aprimoramento, então eu ainda quero sim mudar algumas coisas no sistema de magias e nos atributos do pet.
    1 ponto
  32. Vou fazer, aguarde jaja entrego. São duas opções Primeira : Segunda:
    1 ponto
  33. tentou colocar la no 1* script tpw.. [25] = {[0] = {66}, [1] = {66}}, no caso isso ae era pra corresponder a essa linha do 2* script... [1] = { 25, 25, 66, 32},
    1 ponto
  34. Olha cara, se voce quer fazer um servidor exp 1000x o mapa não será o essencial pois nesses casos os players não ligam muito para coerência, rpg e tal, querem algo prático, de fácil acesso e bonito. Sugiro que você utilize sim um mapa próprio meio medieval pois anima mais os players jogarem. Não faça mapas quadrados, são muito feio e sem sentido. Não coloque muitos efeitos, principalmente aquelas palavras que ficam piscando, alem de ser horrivel polui demais o templo. Espero ter ajudado.
    1 ponto
  35. fredpadua

    [Encerrado] tfs e distro

    Sim, pode ser problema na sua config lua, que está configurada com outra versão de tfs ..
    1 ponto
  36. Recomendo ler! Pois se tive-se lido não teria falado isso E mesmo lendo... Primeiro - Eu não gosto de bot. Pois server que é bom não precisa de bot. Segundo - Para donos de otserver seria melhor ainda pois NÃO TEM BOT! Terceiro - Bot é para deixar server mais fácil para um bando de preguiçosos, que ao meu ver se está difícil e todo mundo acha só baixar rate,skill,experience,... Enfim... Só fazer um server para essa multidão de pessoas e um mais dificil para os demais que preferem jogar!
    1 ponto
  37. caotic

    [Lua] Strings E Numbers

    String e Number são dois tipos de valores que encontramos em LUA. A diferença entre tais são que strings são um conjunto de caracteres e como o próprio nome diz numbers são valores numéricos. String sempre começaram " string " ou ' string ' tanto " " ou ' ' estarão corretas. Diferentes dos numbers que não precisam usar nenhum tipo de simbolo para representar - lo. Exemplos: setPlayerStorageValue(cid, 28221 ,1) ----- Number---- doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Hello") -- String -- Ou seja String ~= Number Mais são dois valores que podem variar. Mais atenção string e Number jamais podem ser verificados com a estrutura if: Considere este código como incorreto: local string = "oi" local number = 1 if string > number then return true end O modelo acima esta incorreto porque verificamos uma string com um number que jamais estará certo. A menos que utilizamos outra estruturas tais como #. Se verificar uma string e um number acontecera tal erro: Tanto number e string podem ser colocados numa tabela local transf = { ["Morte"] = {level = 1, type = "(Dark)", health = 2222, addlevel = 10, looktype = 300, spell = exori, addmana = 2000} } Você pode observar que quando e colocado uma string o sinal " " ou ' ' aparece. E quando os numbers aparecem são colocados numeros. Os numbers podem ser positivos e negativos. Existe funções que podem verificar se os valores são string ou number tais são: if (type(value) == "number") then -- Verificação de Number--- if (type(value) == "string") then ----Verificação de String-- String e Number são 2 tipos de valores que encontramos em LUA claro que não são os unicos mais por hoje e só.
    1 ponto
  38. Nome: onWriteToChannel(cid, channelId, text) Tipo: Código C++ Autor: Colandus, Oneshot (Adaptação 0.4 + Default Channel) Fala, galera. Esse é um código C++ que serve como add-on para o seu servidor, ele adiciona um novo tipo de função para os creaturescripts, que é executado toda vez que um jogador envia uma mensagem ao servidor. Foi criado por Colandus e estou trazendo ao XTibia por ser um código muito útil e interessante de se usar nos servidores. Lembrando que os passos abaixo devem ser seguidos em um IDE de sua preferência para posterior compilação. Em creatureevent.h, procure por: CREATURE_EVENT_CHANNEL_LEAVE, Adicione logo abaixo: CREATURE_EVENT_CHANNEL_WRITE, Ainda em creatureevent.h, procure por: uint32_t executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap); Adicione abaixo: uint32_t executeChannelWrite(Player* player, uint16_t channelId, std::string text); Agora em creaturescripts.cpp, logo abaixo de: else if(tmpStr == "joinchannel") m_type = CREATURE_EVENT_CHANNEL_JOIN; Adicione: else if(tmpStr == "writechannel") m_type = CREATURE_EVENT_CHANNEL_WRITE; Abaixo de: case CREATURE_EVENT_CHANNEL_LEAVE: return "onLeaveChannel"; Adicione: case CREATURE_EVENT_CHANNEL_WRITE: return "onWriteToChannel"; Abaixo de: case CREATURE_EVENT_CHANNEL_LEAVE: return "cid, channel, users"; Adicione: case CREATURE_EVENT_CHANNEL_WRITE: return "cid, channel, text"; Logo após o fim da função: uint32_t CreatureEvent::executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap) Adicione: uint32_t CreatureEvent::executeChannelWrite(Player* player, uint16_t channelId, std::string text) { //onWriteToChannel(cid, channel, text) if(m_scriptInterface->reserveScriptEnv()) { ScriptEnviroment* env = m_scriptInterface->getScriptEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local channel = " << channelId << std::endl; scriptstream << "local text = " << text << std::endl; scriptstream << m_scriptData; bool result = true; if(m_scriptInterface->loadBuffer(scriptstream.str()) != -1) { lua_State* L = m_scriptInterface->getLuaState(); result = m_scriptInterface->getGlobalBool(L, "_result", true); } m_scriptInterface->releaseScriptEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_scriptInterface); env->setRealPos(player->getPosition()); lua_State* L = m_scriptInterface->getLuaState(); m_scriptInterface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushnumber(L, channelId); lua_pushstring(L, text.c_str()); bool result = m_scriptInterface->callFunction(3); m_scriptInterface->releaseScriptEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeChannelWrite] Call stack overflow." << std::endl; return 0; } } 0.4 Em game.cpp, procure pela função: Game::playerSay Acima de: if(player->isAccountManager()) { if(mute) player->removeMessageBuffer(); return internalCreatureSay(player, SPEAK_SAY, text, false); } Adicione: CreatureEventList writeEvents = player->getCreatureEvents(CREATURE_EVENT_CHANNEL_WRITE); for(CreatureEventList::iterator it = writeEvents.begin(); it != writeEvents.end(); ++it) if(!(*it)->executeChannelWrite(player, channelId, text)) return true; Finalmente no chat.cpp, procure pela função: Chat::talkToChannel Acima de: if(channelId != CHANNEL_GUILD || !g_config.getBool(ConfigManager::INGAME_GUILD_MANAGEMENT) || (text[0] != '!' && text[0] != '/')) Adicione: CreatureEventList writeEvents = player->getCreatureEvents(CREATURE_EVENT_CHANNEL_WRITE); for(CreatureEventList::iterator it = writeEvents.begin(); it != writeEvents.end(); ++it) if(!(*it)->executeChannelWrite(player, channelId, text)) return true; Exemplo de Uso: function onWriteToChannel(cid, channelId, text) if text:lower():find(".servegame.com") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "É proibido divulgar servidores aqui.") return false end return true end <event type="writechannel" name="WriteToChannel" event="script" value="writetochannel.lua"/> São várias as possibilidades de uso. Abraços.
    1 ponto
  39. LipedaRua1

    [8.6] Desert Team War V1.0

    Removido.
    -1 pontos
  40. SkyTheKing

    Osama Bin Laden

    Legal
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...