Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 02/14/13 em todas áreas
-
[Pokemon] Servidor Gabrieltxu e suas Versões
guidark21 e um outro reagiu a Gabrieltxu por um tópico no fórum
Pronto 3.1 Postada não sei Se vai ter Bugs Pk deixei varias coisas do 3.1 Por conta do Guidark21 então Bora Baixar la e testar! OBS: Fiz 2 MAPs Um normal e Um com o MAP add Hunts dos Pokes da 3° gera xD Bom é isso Não se esqueça de dar REP++ para o Gui tambem xD @off New Record no Topico!2 pontos -
Naruto Ultimate (24 Horas)
Demonbholder e um outro reagiu a viniciusBIG por um tópico no fórum
Assese:http://www.narutoshinobi.com/ Novos Personagens em Breve! Personagens Free: Naruto Sasuke Sakura Itachi Gaara Lee Neji Kiba Chouji Hidan Kankuro Kakashi Killer Bee Tenten Hinata Shikamaru Personagens Pago: Madara Obito(Tobi) Orochimaru Exp: 300x Server Dedicado 24 horas2 pontos -
[PEDIDO] ITEM QUE AO DAR USE O PLAYER GANHA XXXX DE HP
Demonbholder e um outro reagiu a 20cm por uma questão
Funcionou perfeitamente mais eu queria que o player usasse esse item uma unica vez Uma vez na vida? Eu pus pra deletar o item... Se você quiser que eu mude pra usar só uma vez na vida útil do char tente isso: function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid,23235) == -1 then local life = 1000 setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+(life)) doCreatureAddHealth(cid,life) doSendMagicEffect(getCreaturePosition(cid), 29) doRemoveItem(item.uid, 1) setPlayerStorageValue(cid,23235,1) else doPlayerSendCancel(cid,"Você só pode usar o item uma vez, desculpe.") end return true end2 pontos -
2 pontos
-
Bau de quest por vocação e teleport.
GuuhMaster e um outro reagiu a 20cm por uma questão
function onUse(cid, item, fromPosition, itemEx, toPosition) local tppos = {x=1089,y=1057,z=7} local default = {9693,6570,6571} local vocs = {8302,8302,8301,8303,8302,8302,8301,8303} for x,i in pairs(default) do doPlayerAddItem(cid,i) end local gotten = math.random(50,80) doPlayerAddItem(cid,vocs[getPlayerVocation(cid)],5) local bp = doPlayerAddItem(cid,9774,1) doAddContainerItem(bp, 2160, gotten) local ret = "" for x,i in pairs(default) do if x == 1 then ret = "1 " .. getItemNameById(i) else ret = ret .. ", 1 " ..getItemNameById(i) end end doBroadcastMessage(getPlayerName(cid).." completou a Arcana Fortress e ganhou "..ret.." e uma backpack com "..(string.sub(gotten,0,1).."."..string.sub(gotten,2)).."kk!") doTeleportThing(cid,tppos) doSendMagicEffect(tppos,10) return true end Só configura a posição pra onde o jogador irá (na segunda linha), o resto tá tudo correto. "23:51 Sativa completou a Arcana Fortress e ganhou 1 jester doll, 1 surprise bag, 1 surprise bag e uma backpack com 6.8kk!"2 pontos -
[Arquivado]Área do Mapper
VictorFT e um outro reagiu a vital900 por um tópico no fórum
Nem vou comentar, por não ter palavras !_! Eis, um dos reinos.. Ele ficou tao grande que não deu para pegar ele todo na SS UHAuHAuAH2 pontos -
"Ao infinito e Além..." - Novo Administrador Xtibia.com
Newnotwen e um outro reagiu a Lordfire por um tópico no fórum
Gustavo, para de incriminar a minha equipe pela bagunça. É óbvio que ela desestabilizou, as pessoas tinham gosto de estar aqui porque era amigável, você fazia amigos entrando na equipe, como foi o caso de diversos membros comigo, do Oneshot com o LuckOake, do Tonynh com a Dudinha, e aí quando alguém é expulso, vai gerar uma reação em cadeia. Não esquece que tu nunca deu 1 centavo pra gente nesse tempo, e quando a pessoa não ganha pra fazer algo, ela faz porque está motivada por algo a mais. Você tirou esse nosso algo a mais. Aliás, nas nossas conversas estou vendo que está tentando me incriminar. Desculpa, pode ser falta de modéstia, mas o administrador que foi criticado no tópico foi VOCÊ, e não eu. Não fui eu que virei as costas pro fórum no momento que ele mais precisava, que ele estava na fossa, mas fui eu sim que consegui montar uma equipe grande e muito boa tecnicamente. Tínhamos entre os membros da equipe, gente que estava entre os melhores na área: o próprio Oneshot, o Anyur, Skyen, Slicer, e todos ajudando o fórum pelo simples propósito de colaborar. Ninguém tinha outro motivo senão esse. Desde que eu peguei esse fórum pra administrar, acho que nunca tinha conseguido combinar estabilidade da equipe e criação de conteúdo. Estavamos num momento onde a gente parou de cair e estava crescendo. É óbvio que tinha caido bastante, principalmente no começo, peguei o fórum em péssimas condições, ninguém com vontade de ajudar, uma equipe muito fraca, mas já podíamos ter o luxo de ESCOLHER quem iria entrar na equipe e não apenas ser obrigados a trazer os poucos que ajudavam. Mas tudo bem, tenho certeza que é uma boa escolha o Anderson. Mais do que ninguém ele conhece os bugs do fórum, afinal ele já deve ter abusado de todos os existentes. Não obstante, também conseguiu ser banido de tanto postar merda no Barzinho. Mas imagino que ele combine com você, afinal ambos se importam com o sucesso do fórum do mesmo jeito, bem como tem o mesmo tempo livre para se dedicar a ele e a mesma visão empreendedora. Saiba que em momento algum eu disse que ia abandonar o fórum, e sim eu quero continuar ajudando, mas hoje eu entrei e me vi chutado do cargo que eu lutei 6 anos pra alcançar. Continuo para ajudar, mas acho que pra mim chega de me ocupar com fóruns. Tenho mais o que fazer da minha vida do que ver o que eu faço desmerecido assim. Apesar de que triste, vou parafrasear o Bernardo: o último que sair apaga a luz.2 pontos -
Pokemon dash advanced !
raulcdj reagiu a StyloMaldoso por um tópico no fórum
•[Pokemon] PDA v1.8 (Slicer) com editaçoes no mapa (totalmente refeito)• • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; ├ Senha do ADM; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • PrintScreen • • Download's • PDA v1.8 Mapa totalmente refeito (4Shared). Client ja vem junto com o server. http://www.4shared.com/rar/m5QfBBFf/PDA_V18_f_Creditos_-_Slicer_St.html Versão v0.2 http://www.mediafire.com/?o7xmeczpb7az5yj @Client ja vem junto a pasta do servídor, Good luck ! OBS: Se gostarem do server, Comentem e deem sua sugestão para atalizar, não irei pedir 'rep+' pois pra min isso não muda nada, mais sim contribui meu trabalho • Creditos • Slicer - Por ataliza diariamente o PDA v1.8 sendo uns dos melhore servidor pokemon ja posto pra dowload. Stylo Maldoso - Por ter refeito o mapa. Brunin123 por criar o pda Gabrielxtu por ter me ajudado <3 Equipe Pdaventures pelo mapa1 ponto -
Zelettar Soft Server Server Info: * Exclusiva versão 6.0 * Item da versão 6.0 * Mapa igual do Tibia Global 6.0 (bem antigo!) * Outfit pode ser mudada! * Monstros da versão 6.0! Imagem: Links: Server Download -> Link aqui Scan -> Link aqui Cliente 6.0 Download -> Link aqui Scan -> Link aqui Créditos: Criador da equipe (quem teve a ideia): Isack Colaborador e divulgador: Lucas Tibiano Spriters: Herick Santos e Christian (2013) Zelletar Soft, Todos Os Direitos Reservado Zelletar Soft e sua equipe (Eu apenas divulguei aqui)1 ponto
-
[Gesior] Widget Top Level BOX
VictorWEBMaster reagiu a jb2 por um tópico no fórum
Atendendo ao pedido do usuário conforme o post: Para quem gostaria de ter um Widget BOX Igual a este em seu site: 1º Baixe o arquivo: Virus Total: 2º Extraia os arquivos na pasta do seu layout. 3º Abra layout.php e procure por:1 ponto -
[Pokemon] PDA By Slicer Pokemon dash advanced editado por slicer, vários bugs retidos. Projeto encerrado! Espero que todos tenham gostado desse 1 ano de trabalho duro! Todas as atualizações: * Leiam e sigam as instruções do Change Log dentro da pasta do patch! Downlaods: PDA By Slicer With Level System v2.9 Full -> http://www.mediafire...z2afuu75zblvmvq PDA By Slicer Without Level System v1.9 Full -> http://www.mediafire...td0l0ip9ajprrbf OTClient editado 2.8/1.8 => http://www.mediafire...1lcbs1fktpm676w Atualizações: EH OBRIGATORIO O USO DESSE CLIENT ABAIXO E USEM O .PIC TB!!!!!!!!! Client v1.9/2.9 => http://www.mediafire...77i414v1hy187fj Patch v1.9 => http://www.mediafire...da4umj3ip18jrf1 Patch v2.9 => http://www.mediafire...7nt275td9afl1fy Patch v1.9.1 => http://www.mediafire.com/?i3flwa3lrd016zl Patch v2.9.1 => http://www.mediafire.com/?m4zhjgn62uow1sp Obs: Atualizaçoes mais antigas estao dentro do spoiler acima!! OTAL.DLL: OBS: caso n esteja aparecendo a barra de moves no client normal do tibia, baixem essa .dll e coloquem na pasta onde fica o Pokemon_nibe.exe ... Otal.rar Patch Correçao! Todos olhem! Bugs na nova atualizaçao? Olhe o spoiler e veja se arruma o problema! Atualizado: 08/02/13 Créditos: Otal.rar1 ponto
-
[Pokemon] Servidor Gabrieltxu e suas Versões
Silvaninho reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.1 ponto -
New-Rad V3 (8.60)
Sirarcken reagiu a SamueLGuedes por um tópico no fórum
New-Rad V3 Boa tarde galera do Imagem Postada , trago hoje para vocês a atualização do NEW-RAD v2, o NEW-RAD V3, eu sei que demorei muito para terminar, mas enfim terminei, e vou postar aqui hoje para vocês, mas primeiro umas informações da nova versão: Informações » Senha do God: god/god » Lista das features » Novas citys » Itens novos » Monsters novos » Lista das quest » Lista dos sistemas » Comandos novos Mudanças em relação a versão anterior: » Bug Fixes Imagens: Disponibilização » Scan = Link Aqui (pelo oque eu estava vendo aqui, os vírus são inofensivos, e também eu acho que o scan esta errado, porque no Avast ele não detecta nada, se alguém puder scanear de novo pra ver se da o mesmo resultado, eu agradeçeria.) » Download MediaFire = Link Aqui » Download 4shared = Link Aqui » Versão anterior (v2) = Link aqui Créditos » Slayer yurots (pela base)» Eu (por editar)» Vinicius (meu irmão, por me ajudar na edição)» Xtibia (pelos scripts e etc) se tiver algum bug me avisem por PM que eu estarei arrumando. até mais. OBS: Não autorizo ninguem a colocar este server em outro forum, alem do Xtibia, porque eu ja vi muitos forum com meu server mais nenhum credito, então nao postem em outro forum.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 -
• # Lista # Mega Tutoriais De Mapping 5.0 • • RME • » Instalando seu RME - BruMatt » Aprenda a usar o RME - Vilden » Juntando um mapa ao outro - Filippe Ferreira » Criando Casas - Alissow » Importando Mapa - Lordfire » Adicionando NPC's/Monster's no Palette - Vilden » Unsupported Client Version - LuisFelipe » Mudar a Versão do Mapa - Henrique Moura » Modificando Seu RME - DanielZiyak » Mapeando Com Seus Amigos - Pess0a » Trocando Os Itens De Seu Rme - Paraibinha » Como Criar Quest Pelo Rme - Locosporot » Tirando Bugs RME 8.6 - CruelShark » Converta Imagens Para Otbm - Mythusz » [Easy] Remere 3.0 Beta 6 - Left4Dead » Instalando RME 8.70 - Alissow » Descendando o RME - ElderDark » [solução] Remeres Map Editor 8.60 - Felipitovis » Tirando Bugs Map Editor 8.6 Tibia.dat E Msvcrt.dll - CruelShark » {Solução} ~ Remeres Map_Editor (8.60X) - felipitovis » Campo De Visão - EdMignari » [Tutorial] Instalando Rme Map Editor 8.7 - SmileTiger » Apostilas De Mapping [Vital900 & Left4Dead] - Vital900 & Left4Dead » [Tutorial] Mudando a Versão Do Mapa - Stigal » [Tutorial] Adaptando Grounds Para O Auto Border - Openyourmind • Tutoriais Em Geral • » Dicas para Praticar - RenatoRibeiro » Coerência - 4458638 » O Mapa Ideal - RenatoRibeiro » Como Criar Uma Arena - Curruwilliam » Tutorial E Dowload Fasendo Casa No Rme - Extremeots » Algumas Dicas De Mapping - TecBreakerByLipe » [Efeito] Neon Em Quests - TecBreakerByLipe » [Detalhes] Escadas #Basico# - Stigal » [Tutorial] Como Fazer Um Barco - FlaashMan » [Tutorial] Adaptando Grounds Para O Auto Border - Openyourmind » 'reconhecendo' Suas Cidades & Depot - vital900 • Nature • » "Green" Nature Tutorial - Koddy » Guia Para Nature [básico] [Part 1] - DanielZiyak » Guia Para Nature [básico] [Part 2] - DanielZiyak » Temple Com Nature - Anyur » Fazendo Caminhos (Floresta) - Anyur » [basico] Criando A "Naturesa Verde" - Left4Dead » [Nature] Detalhamento e Beleza - DanielZiyak » Fazendo Nature - Anyur » [basico] Arvore Grande - Left4Dead » Nature Básica Para Iniciantes - LordZezim » [Tutorial] Como Organizar A Nature - TecBreakerByLipe » [Tutorial] Como Fazer Uma Ilha - TecBreakerByLipe » Snow - Nature / Montanha - GuizitoG » [Tutorial] Nature - TecBreakerByLipe » Deserto, Parte Nature - GuizitoG » Gramado Verde Escuro - Como Usar? - GuizitoG » [Tutorial] Jungle - VictorFT » [Tutorial] Nature - VictorFT » Jungle - DuMal » Criando House & Nature! - Overllord » Tutorial Swamp - VictorFT • Construções • » Fazendo uma Loja de Arqueiro - Skywar » Como construir uma Loja de Magia - Skywar » Como fazer um Templo - Caspita » Criando um Estádio de Futebol - Blinkrox » Barcos - Sukx » Fazendo Templo 'Stone Age' - anfarosx » Pallyshop - XaPiNhAl » Loja De Speller - Anyur » Loja De Forja - Left4Dead » Sala Do Faraó - Anyur » Depot Cidade Gelada - Anyur » Swamp - Pantano - GuizitoG » Como Criar Loja De Food! - RarTnE » Mappeando Like Vital [Templo] - Vital900 » [Tutorial] Templo - VictorFT » [básico] Pontes - TecBreakerByLipe » [básico] Cachoeira - TecBreakerByLipe » Detalhes Para Uma House! - Overllord » [Tutorial Básico] - House /Detalhamento [Rua] - VictorFT » Desert City House (Estilo Darashia) - Anyur » Criando House & Nature! - Overllord • Montanhas • » Utilizando Auto Border em Montanhas - LuisFelipe » Entrada pela Montanha - RenatoRibeiro » Técnicas para Cachoeiras - RenatoRibeiro » Detalhando Montanhas- RenatoRibeiro » Nature em Montanhas - markimbozi » Nascente D'água - Castiello & LuisFelipe » Detalhando uma Montanha de Terra - Skywar » Como Fazer Uma Cachoeira - TonyHanks » #001 [Kingdom Age] Montanhas - River » [Tutorial] Jungle + Montanha - GuizitoG » [básico] Formato De Montanhas - TecBreakerByLipe » [Tutorial] Montanha + Bordas (Com Autoborder) [+ Video] - GuizitoG » Undead Dragon Area - Anyur » [iniciante] Dicas Para A Elaboração De Montanhas. - Brund • Locais Em Geral • » Dicas para Treiners Naturais - FezZiN » Nightmare estilo Yalahar - RenatoRibeiro » Lizards estilo Zao - RenatoRibeiro » Tutorial de Ruínas - BruMatt » Pirâmides Egípcias - FezZinN » Calabouços - Koddy » Locais Gelados - Anyur » [iniciante] Ice Island - PatrickJean » Casas Em Cidades Geladas - Anyur » [Tutorial] Área De Gelo - Elrien » [intermediário] Sarcófagos - TecBreakerByLipe » Fazendo Praia - Anyur • Extensions • » Aprendendo a modificar Extensions - Koddy » Beige Pavement / "New" Wooden Floor - Koddy » Earth Mountains - Koddy » Extension Stone Floor - Anyur » [Extension] Adicionando Limestone Wall - Anfarosx » [Extension] Folhas No Chão - TecBreakerByLipe » [Pack] Extensions 8.54-8.70-9.60... - Openyourmind » [Rme] Extensões Personalizadas - FlaashMan • Formatos Em Geral • » Formato Continental - Koddy » Fazendo a Superfície do seu Mapa - FezZinN » Formatos #1 - RenatoRibeiro • Cavernas • » Formando Caves - Koddy » Detalhando Caves - Koddy » Caves - XaPiNhAl » Caverna Jungle - Anyur » Caverna Montanhosa de Spider - Anyur » Como Criar Uma Cave De Dragon - TecBreakerByLipe » [Tutorial] Como Criar Cave's - RarTnE » [Mapping] Cave (Básico) - Beto06 » [Tutorial] Criando E Detalhando Caves - VictorFT • Dicas Em Geral • » Efeitos nas Rampas - FezZiN » Passagens Tiles Secretos - itrox » Dicas para Criação de Quests com RPG - Temperance » (Guia) Casas - Marcell » Fazendo Armadilhas - Kerooker » Criando Labirintos - Fozz » Miragem no Deserto - XtiNaino » Colocando Livros em Bookcase e Texto - Kardec » Criando Roofs - felipitovis » Detalhamento De Templos - Flankee » Encaminhamento Alternativo - Anyur » Fazendo Quests No Rme Estilo Annihilation - Pess0a » Descida Secreta - Flankee » Passagem Criativa - Anyur » Templo Medieval - Anyur » Fazendo Passagem De Fogo - TonyHanks » Aldeia De Amazons - Anyur » [Efeito] Neon Em Quests - TecBreakerByLipe » [Tutorial] Area De Spider - TecBreakerByLipe » Construindo Piramides - Vital900 » Como Criar Um Barzinho - Maenilse » [básico] - Telhados - Left4Dead » [básico] Novo Tipo De Rua - Leaft4Dead » • Guia De Cidades - VictorFT » Colocando Passaros Para Voar No Mapa - Overllord » [Tutorial] Como Criar Uma Cidade - FlaashMan • Aulas • » Aulas de Mapping #1 - 4458638 » Aulas de Mapping #2 - 4458638 » Aulas de Mapping #2 - Lopoi2 & BruMatt » Aulas de Mapping Part. 2 - BruMatt & Lopoi2 » [Aula]1. "O Início" - MapperComand » Aula Mechendo Map Editor - Ewerton91 » Aula Mapping - Lição I - Laug » Aula Mapping - Lição II - Laug » Aula Remeres Poke Editor - JVitorPS » [Video-Aula] Como Criar Árvores Gigantes! - RarTnE » [Vídeo] Fazendo Base Com Auto-Border - Anyur » [Vídeo] Distribuindo Árvores E Arbustos - Anyur » [Vídeo - Iniciantes] Fazendo Base De Montanha - Anyur » [Video-Aula] Fazendo Piramides - TecBreakerByLipe » [Video-Aula] Nature Mapping - TecBreakerByLipe » [Video + Download] Instalação Tibia Dat E Spr Rme - Enigman » [Tutorial] Montanha + Bordas (Com Autoborder) [+ Video] - GuizitoG • Peça Um Tutorial De Mapping • » Peça Um Tutorial Aqui • REGRAS DA AREA MAPPING • » [Regras] Pedidos e Duvidas - Pedidos e dúvidas Mapping » [Regras] Concurso De Edição De Mapas - Concursos de Mapping » [Regras] Duelos - Concursos de Mapping » [Regras] Gerais - Show Off (exposição de mapas) » [Regras] Sua última Foto - Show Off (exposição de mapas) Atualizado: 28/12/2012 (20:15)1 ponto
-
Naruto Online (24 Horas)
Crazykill1 reagiu a viniciusBIG por um tópico no fórum
Entre no site:http://naruot.zapto.org/ Personagens Free: Naruto Sasuke Lee Sakura Gaara Neji Kiba Shikamaru Hinata Tenten Itachi Killer Bee Personagens Ganhos Por Missão: Madara Pein Orochimaru Obito(Tobi) Hidan Novos Jutsus Do Madara Customizado. Susano no Sharingan: Suhaze Fire Blast: Suhaze Chakra: EXP: 1000x Server Dedicado 24 horas!1 ponto -
Nova estrutura XTibia
VictorWEBMaster reagiu a noobinhu por um tópico no fórum
Fala galera, tudo certo? Depois de alguns dias em reuniões com Gustavo, membros e equipe, chegamos ao novo modelo que vai compor o XTibia daqui pra frente. O modelo é simples e dispensa burocracia. Agora temos a seguinte estrutura no fórum: Administrador | Colunista | Moderador | Estagiário | Herói | Membros Como podem perceber, entrou o novo cargo de Colunista e foram removidos 3 cargos: Diretor, Coordenador e Colaborador. O motivo pelo qual excluímos alguns cargos e criamos outros é simples: queremos diminuir a quantidade de pessoas na equipe. Eu, especialmente, nunca trabalhei com equipes grandes. Dentro de empresas e startups, o máximo de pessoas dentro de uma equipe minha foram 10 ou 15. Logo, nada melhor do que trazer um plano de equipe que eu já tinha em prática pra cá também. O cargo colunista Esse novo cargo foi criado pensando em trazer conteúdo diferenciados para comunidade. Basicamente, especialistas em áreas que não estão diretamente ligadas ao desenvolvimento de Open Tibia, mas sim ao público que temos aqui. Pretendemos trazer gente de diversas áreas, desde business, empreendedorismo e advocacia para dar uns toques sobre como "empreender e criar seu OTServer", referências em tecnologia, programação, design até as mais inusitadas como "vestibulares". Acreditamos que assim a comunidade terá uma visão mais ampla sobre todos os assuntos, podendo discutir com referências de diversas áreas. Sendo assim, o cargo colunista não é relacionado a conteúdo semanal ou diário aqui no fórum, mas sim pequenas contribuições de referências em diversos assuntos. Acredite, empreender e criar um OTServer é mais do que fazer um mapa e desenvolver em LUA! O cargo moderador Esse sim será composto por membros que estão todos os dias em áreas de desenvolvimento. Esse modelo de moderação foi importado do fórum iMasters (o maior fórum de programação do Brasil), o qual representei por alguns anos, e que funcionava muito bem. Membros destaques em áreas de desenvolvimento serão chamados para participarem de reuniões internas, e posteriormente, para a equipe. O cargo estagiário O grupo de estagiários por sua vez será composto de pessoas com alto potencial de crescimento e que participarão das nossas atividades diárias, porém não as executando, agilizando o desenvolvimento de cada um no grupo e permitindo que a administração conheça mais a fundo o perfil de um membro antes de ingressar na equipe. Dêem boas vindas então aos novos moderadores: Demonbholder - Scripting Caotic - Scripting Erimyth - Mapping Stigal - Geral Aguardem então a presença de pessoas referências em diversas áreas e mais novidades nos próximos dias. Abs!1 ponto -
Ola galera xtibiaaana!. Então meus amigos resolvi fazer um TV system aquele famoso sistema que o player cria uma channel(canal) e outros players poderão ver ele batalhando. Estou retirando o máximo de bugs possíveis se você viu um bug não deixe de falar. Vamos as explicações: Primeiro o player cria uma channel usando o comando /tv(nome da channel) depois outro player ve sua channel na lista usando o comando /channel(list) logo ele quer entrar em sua channel então ele fala /channel(nome da channel). Logo apos ele falar ele entra e começa a assistir mais depois ele quer sair então ele "desloga" e ele volta ao tempo. Vamos a instalação. Execute este comandos na sua database: CREATE TABLE "tv" ( "name" Text NOT NULL, "player" INT NOT NULL, "conec" INT NOT NULL ) Vá em lib e crie um arquivo lua chamado de tv e coloque isto: function createTv(cid, name) db.executeQuery("INSERT INTO `tv` (`name`, `player`, `conec`, `watch`) VALUES ('" .. name .. "', " .. getPlayerGUID(cid) .. ", 1, 0);") setPlayerStorageValue(cid, 23423, 1) doPlayerSave(cid) end function isTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getID() ~= -1 and true or false end function getChannelPlayer(cid) return getPlayerStorageValue(cid, 23423) == 1 and true or getPlayerStorageValue(cid, 23423) == -1 and false end function getWatchingNameChannel(cid) return getPlayerStorageValue(cid, 44670) end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local conditi = createConditionObject(CONDITION_MUTED) setConditionParam(conditi, CONDITION_PARAM_TICKS, 10000*10000) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) function enterInTv(cid, name) local function comparePos(pos, post) local pos = getThingPos(pos) local post = getThingPos(post) return pos.x == pos.x or pos.y == pos.y or pos.z == pos.z and false or true end local function fallowPlayer(cid, player) if not isPlayer(cid) or getPlayerStorageValue(cid, 44670) == -1 then return true end if comparePos(cid, player) then doTeleportThing(cid, getThingPos(player)) doAddCondition(cid, condition) doAddCondition(cid, conditi) setCombatCondition(combat, condition) end return addEvent(fallowPlayer, 1800, cid, player) and doPlayerSave(cid) end setPlayerStorageValue(cid, 44670, name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") local guid = tv:getDataInt("player") local player = getPlayerByNameWildcard(getPlayerNameByGUID(guid)) return fallowPlayer(cid, player) end function exitChannel(cid) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_MUTED) doRemoveCondition(cid, COMBAT_PARAM_AGGRESSIVE) doTeleportThing(cid, getPlayerMasterPos(cid)) setPlayerStorageValue(cid, 44670, -1) doPlayerSave(cid) end function doShowListChannel(cid) local tv = db.getResult("SELECT * FROM `tv` WHERE `player` ORDER BY `conec`") str = "Channel Disponiveis:\n\n" if tv:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha channel disponiveis") return true end while true do local conect = tv:getDataInt("conec") local player = tv:getDataInt("player") local channel = tv:getDataString("name") local players = getPlayerNameByGUID(player) str = str .. channel .. " -("..players..")\n\n" if not tv:next() then doShowTextDialog(cid, 1397, str) break end end end function getConectTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getDataInt("conec") == 1 and true or tv:getDataInt("conec") == 0 and false end function setStatusTv(cid, on) if on == "on" then return db.executeQuery("UPDATE `tv` SET `conec` = 1 WHERE `player` = "..getPlayerGUID(cid)) end if on == "off" or on ~= "on" then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end end end Vá em talkactions crie um arquivo Lua chamado de tv coloque isto: function onSay(cid, words, param, channel) local item = 1949 ----Item que você precisa local bloqued = {"sair", "list", "on", "off"} ----- Nomes de channel que não pode ser usado if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o nome da channel que você quer") and false end if param == "on" or param == "off" then return setStatusTv(cid, param) end for i = 1, #bloqued do str = "Nomes não podem ser ultlizados" str = ""..str.."\n"..bloqued[i].."" if param == bloqued[i] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este nome não pode ser ultilizado porque e um comando do sistema") and false end end if #param <= 4 and #param >= 10 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O nome da sua channel deve ser maior que 4 caracteres e menor que 10 caracters") and false end if getPlayerItemCount(cid, item) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de um "..getItemNameById(item).."") and false end if getChannelPlayer(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja tem uma channel") and false end createTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns sua channel "..param.." foi criada") return true end Vá em talkactions e crie um arquivo lua chamado de channel e coloque isto: function onSay(cid, words, param, channel) if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga /channel(nome da channel para se conectar)\n/channel(list) Lista das channels\n/channel(sair para sair da channel)") and false end if param ~= "list" and param ~= "sair" then if not isTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe esta channel") and false end if not (getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você so pode entrar em uma channel quando estiver em pz") return true end if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode entrar uma tv porque você ja tem uma") return true end if getWatchingNameChannel(cid) ~= -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta conectado a uma channel") return true end if not getConectTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esta channel esta desativada") and false end enterInTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta assitindo a channel "..param.."") return true end if param == "list" then return doShowListChannel(cid) end if param == "sair" then if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode sair de sua propria tv use o comando /tv off para desativar sua channel") return true end if getWatchingNameChannel(cid) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não esta conectado a uma channel") return true end exitChannel(cid) return true end return true end Vá em talkactions.xml e coloque estas tags: Vá em creaturescripts e crie um arquivo lua chamado tv e coloque isto: function onLogout(cid) if getChannelPlayer(cid) then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "Sua channel foi desativado ao você logar religue dizendo /tv on") return true end if getWatchingNameChannel(cid) ~= -1 then exitChannel(cid) return true end return true end function onAttack(cid, target) if getWatchingNameChannel(cid) ~= 1 then return false end return true end Registre o evento colocando isto antes do ultimo return true: Coloque esta tags em creaturescripts.xml: Configurações Midia: Ajude o tv system dizendo ideias e bugs para o sistema. Estarei optimizando o sistema e retirandos bugs.1 ponto
-
Biblioteca Auxiliar String aNs7gidD[/pastebin] Exemplos de Uso • Metamétodo __index: Input: local str = "xtibia123" print(str[1], str[2], str[3], str[4], str[5], str[6]) local table_find = str["x(.+)"] print(table_find.init, table_find.final, table_find.ret) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x t i b i a 1 9 tibia123 • Metamétodo _unm: Input: local str = "xtibia" print(-str) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" aibitx • Metamétodo __call: Input: local var = "xtibia" print(var(1), var(1,-1), var(1,3)) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x xtibia xti • Metamétodo __add: Input: print("x" + "tibia") Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" xtibia • Metamétodo __sub: Input: print("xtibia" - "tibia") Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" x • Metamétodo __mul: Input: print("xtibia" * 5) Output: >lua -e "io.stdout:setvbuf 'no'" "teste.lua" xtibiaxtibiaxtibiaxtibiaxtibia1 ponto
-
[ Reprovado ]Pokémon Imperial
FelipePokediamond reagiu a wdot456 por um tópico no fórum
Esse servidor é ligado 24 horas 7 dias por semana. Aqui abaixo vão alguns dados: EXP: 100 Cria conta pelo site Sem Lag Limite de 200 Plays online simuteanos Muitos eventos Questes Todos os pokemons Sem Bugs Espero que entrem, o site é esse aqui: www.pokemonimperial.com1 ponto -
[Pokemon] Servidor Gabrieltxu e suas Versões
Gabrieltxu reagiu a guidark21 por um tópico no fórum
SIm esta muito bom comparanda a versao anterior esta bem melhor.1 ponto -
1 - Comando pra ver informaçoes do char | 2 - look
Demonbholder reagiu a 20cm por uma questão
Primeiro (talkaction): function onSay(cid, words, param, channel) if getPlayerByNameWildcard(param) ~= nil then cid = getPlayerByNameWildcard(param) end doPlayerPopupFYI(cid,"Informações do jogador: "..getCreatureName(cid).."\n - HP Max: "..getCreatureMaxHealth(cid).."\n - MP Max: "..getPlayerMaxMana(cid).."\n - Level: "..getPlayerLevel(cid)) return true end Segundo: creaturescripts/scripts/look.lua: function onLook(cid, thing, position, lookDistance) function getArticle(str) return isInArray({"a","e","i","o","u"},string.sub(str,0,1)) and "an" or "a" end if isPlayer(thing.uid) and thing.uid ~= cid and getPlayerAccess(thing.uid) > 4 then s = getPlayerSex(thing.uid) doPlayerSetSpecialDescription(thing.uid,'\n'..(s == 1 and "He" or "She")..' is '..getArticle(getPlayerVocationName(thing.uid))..' '..getPlayerVocationName(thing.uid)..'.') return true elseif thing.uid == cid then if getPlayerAccess(cid) > 4 then doPlayerSetSpecialDescription(thing.uid,'\nYou are '..getArticle(getPlayerVocationName(cid))..' '..getPlayerVocationName(cid)..'.') end local string = 'You see yourself.' if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end string = string..getPlayerSpecialDescription(cid)..'' if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.' end if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end tag: <event type="look" name="Look" event="script" value="look.lua"/> adiciona essa linha no login.lua: registerCreatureEvent(cid, "Look")1 ponto -
Qual erro? Delete o banco de dados, criei tudo de novo e faça a importação.1 ponto
-
Com certeza, sim, ele promete. Hoje já vai em 40 icones prontos no perfect icone system. Logo mais eu posto umas novas prints do servidor. Até agora posso adiantar três cidades prontas; Pallet town, Viridian city e Pewter town.1 ponto
-
Wodbohs (24 Horas)
narutoBIG reagiu a viniciusBIG por um tópico no fórum
Entre:http://wodbohs.hopto.org/acc/notes.php EXP. Rate_Exp = 999 Rate_Loot = 30 Rate_Skill = 30 Rate_Magic = 20 Rate_Spawn = 25 Novas Vocações Free: Bulma C-16 C-8 Turles Jenk Raditz Yancha1 ponto -
lib/pokemon moves.lua enjoy...1 ponto
-
Já consegui !_! É simples, poe na mão de Deus, renicia o pc.. da três porradas no monitor.. E pronto funfou Resolvido.1 ponto
-
/\ e isso ja n eh uma indireta neh? quem foi q te desbaniu mano --' ta loko1 ponto
-
[Encerrado] É possivel botar town 1 para todos player?
roriscrave reagiu a mkbrabsolute por um tópico no fórum
Tente: UPDATE players SET town_id=1; ou UPDATE players SET town_id=1 Ajudei? REP+1 ponto -
Alguem poderia fazer um..
Desnecessario reagiu a mkbrabsolute por uma questão
Amigo, estou sem PS faz tempo já kkkk' mas veja se posso "Quebrar seu Galho" Me Diga qual das 2 mais lhe agradou por favor! AJUDEI? REP+! Tenha um excelente Dia!1 ponto -
Xamp so acessa phpmyadmin do localhost
roriscrave reagiu a jb2 por uma questão
Antes estava assim: é só remover ali phpmyadmin e salvar e reiniciar o apache.1 ponto -
npc/Musical.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Musical" script="music.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> </npc> npc/music.lua: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 function thinkCallback(cid) local msgs = { 'Cantando um reggae do bom...', 'Eu e meu aláude por aí...', 'Thudurap thudurap daaaa!', 'Paz e amor bicho!', } if math.random(1,10) == 1 then selfSay(msgs[math.random(1,#msgs)]) end return true end function greetCallback(cid) if getPlayerMana(cid) < getPlayerMaxMana(cid) then doSendMagicEffect(getThingPos(cid),12) selfSay('A música acalma a alma.',cid) else selfSay('Deixe-me trabalhar.',cid) end return false end npcHandler:setCallback(CALLBACK_ONTHINK, thinkCallback) npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:addModule(FocusModule:new()) Ps. eu botei uma brincadeira pra ele cantar, vc pode editar as mensagens aqui: local msgs = { 'Cantando um reggae do bom...', 'Eu e meu aláude por aí...', 'Thudurap thudurap daaaa!', 'Paz e amor bicho!', } nessa parte do código. globalevents/globalevents.xml: <globalevent name="NPCMusical" interval="5000" event="script" value="npc.lua"/> globalevents/scripts/npc.lua: function onThink(interval, lastExecution) local npcpos = {x=1083,y=1057,z=7} doSendMagicEffect(npcpos,math.random(21,24)) return true end no local npcpos você põe a posição do npc, já que ele não se move, você põe a posição que ele está.1 ponto
-
Biblioteca Auxiliar String
Demonbholder reagiu a dalvorsn por um tópico no fórum
Sim, number, só que o procedimento é um pouco diferente. debug.setmetatable(0, { __index = function(self, key) print(self, key) end, __len = function(self) print(self) end, __call = function(self, ...) print(self, ...) end --etc }) local _ = #(1000) local _ = (1000)("arg1", "arg2") local _ = (1000)[500] Dependendo da sua criatividade, da pra fazer algo legal para os numeros :> Bollean, table, function não consegui fazer, userdata e thread não tentei. #Edit Corrigindo, consegui agora usar com function, mas por algum motivo que desconheço, o metodo __call não altera. debug.setmetatable(function()end, { __index = function(self, key) print(self, key) end, __len = function(self) print(self) end, __call = function(self, ...) print(self, ...) end --etc }) function new() print "vish" end local _ = new[1] local _ = #new local _ = new() Não, porque o tipo table tem metatable independente, cada tabela pode possuir sua própria metatable.1 ponto -
Design Pokemon [Exclusiva]
ChronosPKM reagiu a Maximaah por uma questão
vou fazer 1.. Ta ai, =D eu nao coloquei nenhum tipo de tipografoa, agr se vc quizer colocar edita ai. vlws. =D1 ponto -
[Encerrado] [Duvida] Problemas Com o Cliente
viniciusBIG reagiu a Gabrieltxu por um tópico no fórum
Amigo o erro pode ser da Sua PIC ou Sua DAT E SPR esta corrunpida! ve se vc acha outra Pic e testa para ver!1 ponto -
Item que da Outfit
Demonbholder reagiu a Slicer por uma questão
agora vai pegar a speed q o player ta e vai somar + a variavel speed ali...1 ponto -
Nova estrutura XTibia
dragonfight reagiu a Jvchequer por um tópico no fórum
Colunista no XTibia nunca funcionou, parece ser uma desculpa para o Colaborador ser Inativo, como foi quando isso foi implementado em 2008 ou 2009, onde todos Colunistas - Gustavo, Rafael, você(?), entre outros que realmente não me recordo - abandonaram depois de 1 mês. Não curto esse modelo onde o poder ficar centralizado nos Administradores, me pareceu que a progressão na equipe e o plano de crescimento é QUASE nulo, somente de estágio pra Moderador. E vai gerar trabalho que Admin não deveria ter, de gerenciar tudo e todos ao mesmo tempo, realmente ruim. E quando ver que não vai dar para fazer tudo, terá Moderadores especiais que vão tomar conta de outros moderadores e assim voltando os cargos de antes só que sem progressão/nome/reconhecimento visual. O Imasters também tem Coordenadores, só que lá é chamado de Moderador Global, além de Conselheiros que que seria nossa Direção sem vínculos mais claros. Por fim, Fórum não é uma Empresa, nem startup, é uma comunidade livre que trabalha por gosto, por reconhecimento, por até certo prestígio. Simples assim. Enfim, boa sorte com tudo e todos, eu dou o maior Apoio, mas critico quando necessário, pois temos que ser claros e justos.1 ponto -
Fico com pensamento incerto sobre o que vai se tornar o xTibia. Não discordo da remoção da antiga equipe, pois todos a ela pertencentes tinham mais post's no barzinho do que em qualquer outra área. Sem querer ofender, mais lendo este post acabo sendo obrigado a pensar que esse tal Anderson use algum tipo de droga. Ensinar sobre Empreendedorismo ? Sério ? Acha mesmo que isso vai trazer mais membros para o xTibia? A minha visão sobre fóruns de Tibia e coisas do gênero, é a seguinte: Membros: Debater questões abordadas em tópicos Aprender Compartilhar idéias, conteúdos e conhecimento. Equipe Promover o que for do interesse de todos Trazer conteúdos únicos para toda a comunidade Moderar áreas e Afins O que vai trazer membros para o xTibia e fazer a comunidade crescer de verdade, é disseminação de conhecimento sem mimimi e promover mais algo que seja do interesse de todos, algo que faça os usuários se sentirem a vontade, "mudar" apenas a estrutura da equipe falando pelas ventas "não muda poha nenhuma". Pelo pouco tempo que passo ativo por aqui, já cheguei a uma conclusão de que o fórum é formado basicamente por crianças, pois isso é perceptível pelos erros de português, atitudes e tudo mais, não acho problema ser criança pois na idade desse pessoal daqui, torno de 12 e 14 anos, eu faturava em torno de R$ 1200,00 em um mês montando server's, fazendo modificações em main, launcher, websites (MU) usando apenas conhecimento adquirido dentro de uma comunidade, o que eu aprendi nessa "outra comunidade" é algo que vou levar para o resto de minha vida, algo que vou aplicar não só em jogos. Aqui no Ékz ainda não vi isso, poucos aqui sabem fazer modificaçoes em distro, tem gente aqui que nem sabe o que é source, websites é uma sessão morta, concursos de sign's são uma vergonha, não porque os membros são burros, mais sim pelo fato de que neste fórum o conhecimento fica entre poucos, inclusive já falei isso em uma pm com o Gustavo, o fórum não ressalta o que realmente merece destaque, tem se tornado basicamente um portal de downloads. Complementando, quantidade de membros na equipe não é questão de escolha e sim de necessidade. Cansei de digitar... Melhoras xTibia1 ponto
-
"Ao infinito e Além..." - Novo Administrador Xtibia.com
dwhfms reagiu a SkyDangerous por um tópico no fórum
Gustavo pode responder isso por favor? Sr gustavo, você está indo para seu trabalho, você chega vai para sua sala e senta e começa a trabalhar, e o seu chefe entra na sala e pede para você ir até a sala dele. Você então sai da sua sala, e vai para a sala do seu chefe, lá ele começa a te criticar dizendo "Sr Gustavo, você não está rendendo nessa empresa, está atrasando trabalhos, e não está indo como planejado".. Quero saber qual sua atitude ao ouvir essa crítica? vai banir seu chefe? creio que não né, perder o emprego não quer .. o que você faria? posso tentar advinhar , ouviria as críticas e tentava arranjar um jeito de transforma-la em elogios certo? então cara, nada se resolve na ignorância, se tão criticando por quê algo está errado, você é um baita profissional, e não está enxergando isso gustavo, por favor cara se tem 20 pessoas falando mal, criticando é que algo está errado, não tente manipular as críticas.. bom, cara .. eu te admiro muito como profissional.1 ponto -
Oi Gustavo. Para de ser burro, cara. Tu percebeu o que acabou de fazer? Você não conhece o fórum do qual se considera administrador. Acabou de retirar e banir o melhor coordenador / scripter que o SEU fórum já viu, nos últimos anos. E por quê? Por uma bobagem, que você considera importante. Isso me lembra o ano passado, quando eu fui retirado da equipe, por dizer que o XTibia não era prioridade da minha vida. Se lembra? Pois é. Acho que o XTibia não é prioridade na sua vida também, mas isso não parece ser motivo pra você abandoná-lo, né? Peço, ou melhor, ordeno, que retire as pips do fórum. Elas estão hospedadas sob o meu copyright, e não concedo a você a minha autorização para usá-las. Se quiser saber mais, pesquise sobre os termos de uso / termos de cópia do DeviantArt e do Flickr, que oferecem esse suporte online. Se quiser continuar usando uma pip de administrador, peço que faça sua própria. Eu fiz essas pips pra um fórum que eu gostava, não pra esse XTibia. No mais, peço desculpas ao Lordfire e ao Anyur, por tomar essa decisão.1 ponto
-
1 ponto
-
New-Rad V3 (8.60)
felipeomatad reagiu a SamueLGuedes por um tópico no fórum
Entendo, eu nao sei bem as regras mais, alguem da equipe coloca na area de servidores 8.60, eu posso colocar la?´pelo que eu sei é isso.1 ponto -
[Pokemon] Servidor Gabrieltxu e suas Versões
GleisonX reagiu a Gabrieltxu por um tópico no fórum
u.u Vlw ai A todos *----*1 ponto -
Script Snow Bugado
Hamsterbob reagiu a brun123 por uma questão
o do caotic dá erro, porque ele usa o uid de um item num addevent, unique ids de itens não são estáticos. o luck faz com que o item se transforma em outro completamente diferente usando essa linha: doTransformItem(item.uid, item.itemid + 15) o certo seria + 4 Editei o script original, vê se funciona: TILE_SNOW = 670 TILE_FOOTPRINT_I = 6594 TILE_FOOTPRINT_II = 6598 function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(isPlayerGhost(cid)) then return true end if(item.itemid == TILE_SNOW) then doTransformItem(item.uid, TILE_FOOTPRINT_I) elseif(item.itemid == TILE_FOOTPRINT_I) then doTransformItem(item.uid, TILE_FOOTPRINT_II) else doTransformItem(item.uid, TILE_FOOTPRINT_I) end doDecayItem(item.uid) return true end1 ponto -
Guia Para Nature [Básico] [Part 1]
MapUzumaki reagiu a Nolis por um tópico no fórum
Guia Para Nature [básico] [PART 1] Eai galera, há um bom tempo que eu não posto então resolvi fazer um tutorial que todo mundo ja ta cansado de ler (ver), mas, como sempre, com o topico diferenciado ajuda no aprendizado do leitor (visor). Itens Utilizaveis Muitos mappers 'fuçãm' seu map editor procurando o que colocar no mapa, e olham pela beleza, não coerencia (eu faço isso as vezes, ninguém escapa), a questão é, na hora de 'produzir' seu trabalho, o que utilizar tendo certeza que vai ficar bom em nature? Walls / Paredes Segue Abaixo a lista de paredes que podem combinar com seu nature sem ter problemas com coerencia. (algumas do novo update, outras não podem ser usadas com frequencia, deve haver harmonia no uso) - Bamboo Wall - Basalt Wall - Brick Wall - Framework Wall - Frozen Wall - Fur Wall - Grass Wall - Ice Wall - Mossy Wall - Mountain Wall - Palisade Wall - Rock Wall - Stone Wall - Colossus Wall - Tendril Wall - Timber Wall - Wooden Wall Tiles / Pisos (naturais) Cuidado para não misturar muitos desses no mesmo mapa, isso pode quebrar a coerencia procurada e desejada pelo mapper. (não postarei muito os novos tiles para nao confundir) - Dirt Tile - Dirt Tile - Dry Earth Tile - Flowers Grass Tile - Grass Tile - Gravel Tile - Jungle Grass Tile - Lava Tile - Rock Tile - Sand Tile - Shaddow Water Tile - Swamp Tile Tiles / Pisos (Artificiais, para nature.) - Bridge Tile - Cobbled Pavement Tile - Drawbridge Tile - Flat Roof Tile - Wooden Floor Tile Ramps - Ladder / Rampas - Escadas Algumas sao novas e bem bonitas não acham? mas não podemos misturar, como não sao muitas são faceis de diferenciar e não dao muito problema aos mappers. - Bamboo Ramp - Earth Ramp - Ice Ramp - Mossy Ramp - Stone Ramp - Wooden Ramp - Bamboo Ladder - Rope Ladder - Wood Ladder Arbustos, Arvores e geral Então chegamos ao mais importante da nature, as arvores, arbustos, pedrinhas, etc... Muitas Desses itens não podem ser Misturados, tome cuidado ao escolher-los. (nao pude colocar imagem por imagem senão nao ia dar para criar o tutorial, há alguns itens que são novos, se nao forem em exesso podem ser utilizados) Arbustos Arvores Samambaias Flores Pantanos Pedras Conchas Cogumelos Grama (eu só utilizo estas abaixo, axo que não são tao necessarias) - Jungle Grass - High Grass Aplicando Itens Vamos começar com Bamboo wall. , Bamboo Wall é normalmente utilizada no Tibia Global em Port Hope e Liberty Bay, como todos devemos saber, são duas grandes cidades que apresentam uma grande variedade de conteúdos naturais, tendo assim objetos proprios de sua localidade, um deles é a Bamboo Wall. Como todos nós fazemos mapas para OT servers, não devemos tanto seguir um regra, mas sim um tema, bamboo é natural, é madeira, madeira é nature, então podemos misturar sem exagerar. Temos como exemplo de construção tibiana usando este item a seguinte foto retirada do google, apresentando conteúdo do Tibia Global: Percebam a Simplicidade da aplicação do item, utilizando em si outros da mesma origem, como as camas (redes), janelas e portas. Agora, para mapear usando este item precisaremos estudar, como ja foi dito acima sua origem e naturalidade, depois simplesmente aplicar o item na sua tecnica de construção, porém podemos mudar a natureza em seu redor, creio eu que não afete muito. Quem acompanha meus mapas deve saber que meu processo construtivo se baseia em partes, vamos começar determinando a area e a estrutura inicial do mapa. Em seguida, se baseando no que foi adicionado no mapa mostrado acima (tibia global) adicionei alguns itens internos na casa, poderiam ser outros objetos, em outros lugares, mas sem adicionar muito simplifiquei o tema: Agora, terminando alguns detalhes simples, com portas e janelas adicionadas, podemos adicionar algo a mais, que achamos que combine e que tenha coerencia com o tema desejado, como um tapete por exemplo. Para nosso mapa não ficar muito simples deve ter mais itens coerentes ao tema feito, como arvores e arbustos, adicionando-se em seguida pedras e flores. É Um mapa simples, nao vou exagerar nos detalhes, mas podemos observar a simplicidade e harmonia que a parede da ao mapa, pois poderia ser qualquer outra parede, mas ela ficou especial no que foi produzido, tendo como resultado final: Aplicando Itens Basalt Wall Basalt Wall é Uma parede feita de basalto com alguns cristais,. Pode ser vista em outras versões: Ultimamente o tibia global vem lançando alguns updates com itens novos, cujos mesmos são complicados de lidar, pois apresentam diversas técnicas construtivas, basalt wall como viram é feita com cristais, o que a torna natural, logico.. O Que precisamos entender é a situação em que devemos usá-la.veja esta imagem do forum tibia: Percebam que os itens ao redor da wall são diferentes dos itens naturais utilizados nas tecnicas deste tutorial, por isso não farei um tutorial complexo sobre esses novos itens mas explicarei um pouco para entende-los. Percebe-se que a natureza ao redor do item é variavel, mas toda ela esguindo o tema: cristais, a questão agora é, podemos usar esta wall em outras ocasiões? Sim! devemos, mas com cuidado, pois se colocarmos em excesso ela vai modificar a ideia que o mapa tras e você receberá muitas criticas, neste mapa por exemplo, ela só é utilizada na quele canto, depois são usadas outros tipos de paredes. Aplicando Itens Brick Wall Feita de tijolos, a brick wall é uma das paredes mais simples e utilizadas no tibia, tanto no global como em otservers (alguns), tendo o simples pensamento que ela transmite o que precisamos do nature, pois é um item simples e bonito. Além de ser um item que existe mesmo é claro, que nos faz imaginar como seria na vida real: Parecido, hehe. Allém dessas caracteristicas podemos observar a ideia de rpg (não só ela) que nos tras, como sendo útil em quests, pois é uma wall bastante utilizada. Então vamos mapear um nature com ela.. utilizando a mesma tecnica anterior, dessa vez adicionando mais detalhes na wall. Percebam com o resultado final, que a wall é simples, e não é utilizada só em florestas, nature, mas em cidades também, pelo fato de que ela fica bem em várias situações. Aplicando Itens Framework Wall Aaah, a framework, também uma das paredes mais comuns, principalmente em cidades, se observarmos algumas imagens do tibia encontraremos facilmente esta wall, veja: Perceba que ela não mudou muito desde as primeiras versões quando o item surgiu. Agora para mapear em nature é muito simples, simplesmente utilizamos a mesma tecnica do Brick Wall, vamos ver como fica: A Harmonia é a mesma, so muda a wall Ela pode ser usada de várias maneiras, sendo a mais facil de se construir pois é simples como a Brick e bastante utilizavel em varias ocasiões. Aplicando Itens Frozen Wall Frozens Walls são bastante comuns no tibia, até por que há poucas do genero e são simples de lidar, veja um mapa feito com a mesma (parede congelada) Aplicando Itens Fur Wall Parede simples, Feitas de peles de animais, são muito comuns nos arredores de Svargrond. É Uma wall natural e geralmente usada em áreas 'geladas', podemos observar claramente a repetição do seu uso: Ice é um nature simples de mexer mas precisa de um bom colocamento dos detalhes, pois qualquer erro ja tira 'muito' a coerência do mapa. Aplicando Itens Grass Wall Formadas por plantas, são vistas em regiões tropicais. Podemos utilizar principalmente em plantações ou até mesmo em floresta, se soubermos coloca-la de modo que haja harmonia. Embora seja um tema facil, não é muito utilizado. Aplicando Itens Ice Wall Assim como o Frozen wall, a ice wall é simples de aplicar, também pelo fato de ser muito utilizada em cavernas e montanhas de gelo, a ice wall apresenta várias técnicas, vejamos alguns exemplos do global. Perceba que ela é utlizada em lugares muito frios, até em baixo da água, portanto não va aplicá-la em um lugar quente hehe Aplicando Itens Mossy Wall Mossy Wall é Uma parede coberta de musgo. Ela pode ser vista em outras versões: Um dos itens mais legais que a cip ja fez (na minha opinião) é a mussy wall, pelo simples fato de apresentar um tema natural, que ja deveria existir do mesmo no game, podemos ver alguns exemplos reais do mesmo. Porém ainda existe bastante dificuldade para lidar com estes itens novos, mesmo sendo lindos, devem ser estudados, e como outros nao exagerados. É Legal observar que existem itens parecidos (não pela sprite) mas sim pelo tipo, isso mostra, que sendo nature, pode ser usado nos mapas normais, porém deve-se saber como utilizá-lo. Aplicando Itens Mountain Wall Mountain Wall é Parede rochosa que forma a maioria das montanhas. Sendo muito comum nessa utilizade, é 100% natural e utilizavel em algumas casas, certamente sempre utilizada em mapas que contém montanhas. Observe que se procurada, é encontrada em grande parte do tibia (global). (perceba que nesta foto a wall forma uma casa, vemos bastante no global, mas nao em grande frequência) Simples de mexer, todos sabem como utilizar, sem borda ou com borda, trata-se de uma wall de pedra que serve tanto para montanhas como para outra utilidades nao muito comuns, veja as fotos de mapas feitos por mim Note que em todos os mapas a wall esta presente, mas nem sempre visivel. Aplicando Itens Palisade Wall Ahh, uma bela wall, palisade wall, grande parede com função protetora, podemos ver em fortalezas de orcs e em algumas cidades, pois sendo de madeira, é natural, e pode ser utilizada sem se preocupar tanto com a coerencia da nature. Ela pode ser encontrada em Liberty Bay e Forbidden Lands. Podemos ver um exemplo da sua utilização em um mapa feito pelo Caverna: Bonita não? houve bastante mistura, mas devemos lembrar que a sua real função é essa: Mesmo tendo a função diferente (proteção), são madeiras encravadas no chão, podem ser utilizada em vários tipos de construções tibianas.1 ponto -
[Encerrado] Como Resetar Um Ot Baiak 8.60?
Darknessott reagiu a hummberM por um tópico no fórum
ow esse link nn funciona mais pf posta outro to presizando mt1 ponto -
Arrumando Bug No Map Que Vai Pro Distro.
AsLima reagiu a lovenina12 por um tópico no fórum
Vejo que muitas pessoas se veem com um bug no map que vai pro distro, ele é o famoso "Clicar-e-arrastar", você vai criar um spawn de um certo monstro e então você clicka e arrasta o mouse pra colocar o spawn de vários daquele tal monstro, então você vai lá ligar o server, e se depara com esse erro: [Warning - Spawns::loadFromXml] NOMEDOMONSTRO < CORDENADA X / CORDENADA Y / CORDENADA Z DO SPAWN > spawntime cannot be less than 1 seconds por exemplo: [Warning - Spawns::loadFromXml] Cyclops < 01197 / 00057 / 007 > spawntime cannot be less than 1 seconds A solução para este bug é simples. Veja: Vá na pasta data/world/OmapUtilizado-spawn.xml Abra como bloco de notas. Não se preocupe se estiver tudo grudado as linhas, isto é automático do RME. Aperte Ctrl+H No primeiro campo (Localizar) coloque: No segundo campo(Substituir por) coloque: Obs:O 60 é o tempo de respawn dos monstros, 60 = 60 segundos para o monstro dar respawn. Feito isso aperte o botão "Substituir tudo" Agora veja como o bug saiu do seu distro. Imagem: ~ Imagens deletadas pelo ImageShack ='( ~ Depois eu coloco novas imagens com exemplo Distro Antes: Distro Depois: Atenciosamente, Profissao PK1 ponto -
Video Aula - Aprenda Ser Um Script #1
Jakson Souza reagiu a thalia2012 por um tópico no fórum
Bom galera, tudo certo? XD Alguns podem me conhecer por aí, só que pelo meu outro nick "thalia" rs Então galera, como todo mundo me media ajuda com scripts, decidir criar um canal no youtube focado bastante em como se tornar um script, no canal vai ter videos ensinando "scriptar" e como interpretar um script... enfim! Se inscrevam no canal e ajude a divulga-lo galera! muito obrigado a sua atenção, aqui vai o link do canal junto com o primeiro vídeo! Canal: http://www.youtube.com/user/NWEnsina #1 Vídeo - OT Scripting #1 - function onUse, if/else.1 ponto -
Aii Os Mlk Entra Baixa O Mapa Nem Pra Deixa Um Coment. Nem Pra Da Um + REP Neeh !1 ponto
-
Vocation Pet System
pokemonfox123 reagiu a eduardo190696 por um tópico no fórum
Sistema por talkactions Descrição !back - remove o pet Level minimo e maximo -- para sumonar o pet Maximo Summons -- Só pode sumonar 1 pet tilepz -- em protec zone não pode summonar Talkactions/scripts function onSay(cid, words, param, itemEx, params) if isCreature(cid) then if words == "!back" then doRemoveCreature(x) return True end end local summons = getCreatureSummons(cid) local monster = { ["dragon lord hatchling"] = { Level = 10, Levelmax = 30, Voc = 1, Vocp = 5 }, ["dragon hatchling"] = { Level = 10, Levelmax = 30, Voc = 2, Vocp = 6 }, ["frost dragon hatchling"] = { Level = 10, Levelmax = 30, Voc = 3, Vocp = 7 }, ["dark dragon hatchling"] = { Level = 10, Levelmax = 30, Voc = 4, Vocp = 8 } } for k,v in pairs(monster) do if getPlayerVocation(cid) == v.Voc or getPlayerVocation(cid) == v.Vocp then if getPlayerLevel(cid) >= v.Level and getPlayerLevel(cid) <= v.Levelmax then if (table.maxn(summons) < 1)then if getTilePzInfo(getCreaturePosition(cid)) == false then x = doSummonCreature(k, getCreaturePosition(cid)) doConvinceCreature(cid, x) doCreatureSay(cid, "Go to me ,".. k,1) else doPlayerSendCancel(cid, "Sorry, You cannot create Element Pet in pz.") end else doPlayerSendCancel(cid, "Sorry, You can not create more than one Element Pet.") end else doPlayerSendCancel(cid, "Sorry, You no have Level for creat your Element Pet.") end end end return true end Talkactions.xml <talkaction words="!criar" script="vocationsummon.lua"/> <talkaction words="!back" script="vocationsummon.lua"/> Editando ["Nome do Monster"] = { Level = Level Minimo, Levelmax = Level Maximo, Voc = Vocação, Vocp = Promotion }, não esqueça de editar a flag <flag convinceable="1"/> no monster e no ultimo monster da tabela não deve ter virgula no final Tirando Lvl Max Procure por if getPlayerLevel(cid) >= v.Level and getPlayerLevel(cid) <= v.Levelmax then e Deixa assim if getPlayerLevel(cid) >= v.Level then Gosto ? Da ++rep não cai o dedo1 ponto