Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/28/12 em todas áreas
-
Hiho! Bom, fiz uma calculadora em Lua pra ser usada InGame um tempo atrás pra dar uma diversão aos players do meu server e pra eles não saírem do jogo quando fizerem dever de matemática. Nada muito grande, é um script simples, mas anyway é útil. talkactions.xml: <talkaction words="/calcular" event="script" value="calculadora.lua"/> calculadora.lua: Tutorial: Para fazer uma conta, escreva: • /calcular + um dos parâmetros abaixo: - somar, - subtrair, - multiplicar, - dividir, - potenciar, - porcentagem, - raiz, - produto notavel, • primeiro número,segundo número • Exemplo: /calcular somar,1,24 pontos
-
Entrevista Com O Vital900 Iae galera to aki com uma entrevista com o vital900 vamos descobrir mais sobre ele Skyligh : Qual Seu Nome ? Vital900 : me chamo arthur vital.. meus amigos rl me chamam de viih (apelido de infancia e uma merda) Skyligh : Quantos Anos ? Vital900 : tenho 19 anos Skyligh : Agora Vamos ao que interessa como foi sua iniciativa no tibia ? Vital900 : pow, comecei a jogar tibia em 2003~2004..desde entao nunca parei.. lembro que na época eu comecei a jogar pq via a galera do meu curso de inglês jogar e me interessei pelo jogo. Skyligh : Quem Lhe incentivo a jogar tibia ? Vital900 : apos ter matado minha curiosidade de jogar o 'joguinho' da galera do inglês.. descobri que meu primo (lucas) jogava e era lvl 127 ek.. isto naquela época era tipo um god.. ae comecei a jogar pelo incentivo dele.. Skyligh : Como Você Conheceu o Xtibia ? Vital900 : eu conheci o xtibia bem no inicio dele.. qndo ele era apenas um site para se procurar server, acho q existia ate um servidor do xtibia se não me engano.. axo q era 2x.. não sei ao certo Skyligh : Como e seu trabalho no mapping ? Vital900 : bom eu considero o meu trabalho em mapping, como mapper um trabalho regular. tem gente que acha que sou bom, mas comparado aos old members eu sou um nada (para nao dizer outra coisa). Skyligh : Como Você Entrou Na Equipe Do Xtibia ? Vital900 : cara foi algo ate meio estranho a minha entrada.. eu sempre só usei o fórum do xtibia.. e ficava nervoso pq como só usava este fórum e a seção estava abandonada, direto eu reclamava. ate que um dia resolveram me atender, lembro q o erymith ate pediu demicao. e eu fui posto junto com o left4dead como colaborador (esta nunca dora minha intenção) mas ja que 'pintou' a oportunidade pq não.. Skyligh : Quando Que Você Começo Amostrar Seus Trabalhos Pro Xtibia ? Vital900 : logo quando aprendi oque e mappear e a upar imagem nos sites.. eu sou uma tragedia no pc. creio que foi a 1ano atrás (qndo realmente comecei a mappear), gostaria de aproveitar e agradecer ao LuquitosML que foi o meu 'professor e inspiracao' em mapping.. poucos sabem deste lado mapper do lucas. Skyligh : Como Foi Seu Primeiro Nome Do Tibia ? Vital900 : cara meu primero nome no tibia foi Utopia Skyligh : Qual Foi Seu Lvl Max No Tibia ? Vital900 : so joguei tibia global por 1 ano (era lvl 40~50) oque era muito naquela época, sempre fui mais de ot.. Skyligh : Em Que Ano Você Começou A Jogar Tibia ? Vital900 : como já disse não sei bem a data.. mas foi entre 2003~2004. Skyligh : A Quanto Tempo Se Joga Tibia ? Vital900 : não sei a diferença desta pergunta para as outras mas faz 8~9 anos q jogo tibia Skyligh : Desde De Quando Você Praticar Mapping ? Vital900 : eu pratico mapping ha 1.2anos (eu quem comecei o projeto damarium como luquitosML, só que na época tinha outro nome [o nome mudou 2x] ate chegar neste ultimo nome), ate entao eu so ficava no pc jogando, foi desta forma q conheci o lucas e nos pensamos vamos montar um ot? e começamos a 'estudar' tudo de ot.. Skyligh : Qual A Versão do tibia que você mais gostou ? Vital900 : a versão que mais gostei foram 2 em diferentes formas.. em mapping foi a 8.70 (que sera a versão do elysium) e para jogar a versão 8.60 pa rola o elf.. Skyligh : Qual Parte Do Fórum Que Você Mais Gosta ? Vital900 : os usuários, pois sem eles o fórum morria.. coordenação, colaboração, direção.. tudo e substituído, agora como se substitui ou mantém algo sem membros.. Perguntas Rápidas . Skyligh : Qual O Membro Que Você Mais Odeia Do Xtibia ? Vital900 : não odeio ninguém, a galera daqui msm tendo umas pessoas xatas.. em geral são não odiáveis.. uahauah Skyligh : Qual Membro Que Você Mais Aprecia ? Vital900 : o lordzezim, pois pra mim este projeto elysium foi algo a mudou e vai mudar ainda a vida de muita gente trazendo diversão, como eu tenho organizando e mappeando neste. Skyligh : Você Gosta Do Anyur ? Vital900 : depende, tem hora que da vontade de bater nele.. e tem hora que quero bater nele.. mas no fundo no fundo eu sei q ele me ama e eu também amo ele, so que não. Skyligh : Qual Sua Comida Predileta ? Vital900 : pow a minha comida preferida e uma parada de frango que minha namo faz (não sei o nome, axo a nem ela sabe) uahauah Skyligh : Gostou Da Entrevista ? Vital900 : gostei sim, foi bem legal reviver meu passado 'obscuro' Então galera so isso ate a próxima prometo um banner ahuahuahu3 pontos
-
Entrevista Com Yan18 Galera ainda to sem o banner mais pode deixar que jaja eu tenho 1 huahuaauhahua Iae galera do xtibia to de volta com mais uma entrevista so que agora com o nosso estagiário yan18 Skyligh : Qual Seu Nome ? Yan18 : Yan Luccas Oliveira Skyligh : Qual A Sua Idade? Yan18 : 15 anos Skyligh : Que Ano Que você Começo A Jogar Tibia ? Yan18 : não jogo tibia so joguei 1x q foi ano passado mas poketibia em 2010 Skyligh : Interessante , Qual Parte do fórum você mais gosta? Yan18 : script - mapping se for escolhe uma só script Skyligh : Como foi sua entrada na equipe do xtibia? Yan18 : bom eu tava falano com o caotic ae ele disse Yan vc quer entra pra staff ae disse sim ae ele falo manda pm pro won ae mandei ae eu podia ate entra pra colaboraodr mas won preferiu stagio pra pega exp Skyligh : Como você conheceu o xtibia ? Yan18 : busca no google e amigos me falaram Skyligh : Como você conheceu o caotic ? Yan18 : bom antes eu tinha alerta ae resolvi ajudar os outros ae fui ajudano ae umas 2 semana caotic tiro meu alerta e me disse q esto fazendo otimo trabalho ae nois fomo se conhecendo ae ele me add no msn e falo q qria me coloca com estagiário ae fui conhecendo ele. Skyligh : O Alerta Que você tinha foi como ? Yan18 : reviver tópico morto quando eu era newfag ae quase levei outro quando briguei com anyur kk Skyligh : Qual Otserv Se Mais Gosta De Tibia Ou Poke ? Yan18 : Pokexgames 2011 ( parei de joga esse ano por causa do update) PeRgUnTaS RaPiDaS Skyligh : Qual O Membro Mais Chato Do Fórum ? Yan18 : Dark-X Skyligh : Qual O Membro Que Você Mais Gosta Do Fórum ? Yan18 : Não tem 1 só q eu mais goste, mais gosto do caotic do stigal e do won Skyligh : Qual O Membro Que Mais Te Pertuba ? Yan18 : dark-x me irrita Skyligh : Qual sua comida predilecta? Yan18 : arroz,feijao e parmeggianna Então Galera So Isso Em Breve irei editar com perguntas novas que ja estou de saída2 pontos
-
[8.6] Global Full + War System 100% + Tfs 0.4
Diaxx reagiu a betox13025 por um tópico no fórum
Olá Galera, vim compartilhar com vocês mais um servidor Global que encontrei em outro fórum. • Algumas Features do Servidor • ├ Servidor livre de qualquer tipo de bug de dinheiro, Npcs e etc. ├ War system 100% ├ WoE Events [ totalmente configurado no servidor ]. ├ Único Servidor com Zao realmente completa, Razzachai, Drakens, Novas áreas de Ghastly dragons, Souleaters , Banuta 8.6 ├ Sistemas de invasões completas. ├ NPC de Task com algumas já configuradas. ├ Items VIPS configurados. ├ 2 cidades Vips [ Ethnor e Gengia ] ├ 50% de Exp para VIPs; ├ Servidor configurado para Mysql e Sqlite. ├ Distro The Forgotten Server 0.4_SVN [ Totalmente estável ] ├ Map com 89 MB ├ Principais Quests: • POI • Inquisition Quest • Demon Helmet • Anihilator • Demon Oak • Blue Legs Quest • Zao Quest Entre muitas outras, todas 100%. Foto base do servidor: Obs: Não é preciso mais imagens pois todos já conhecem o global Abaixo o link para download + scan do Servidor e Dlls ├Server ├DLLs ├Scans: • Servidor • DLLs Créditos: Exchange Sociopata Adm Vinny Rullez Betox13025 ( Por trazer o conteúdo ao xTibia. ) Se gostou, REP+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
-
Antes de mais nada execute essas querys no seu banco de dados ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0; Não sabe executar a query? abra o spoiler e aprenda! Sistema Por Mod Npc (obs: o NPC funciona caso você use MOD tbm) Configuração1 ponto
-
[Windows 7] Criando Um Servidor + Ip Fixo + Conta God.
Waldragon reagiu a Blazingfire por um tópico no fórum
Bom, fis esse tutorial completo de como criar o seu servidor com ip fixo, especialmente para os usuários do windows 7, o tutorial é rápido e fácil de se entender, vamos lá: Caso a sua internet seja via-rádio ou compartilhada, pegue a marca do seu roteador, o número de série e procure um tutorial de como desbloquear as portas do seu roteador clicando aqui. 1º- Deve baixar um servidor que lhe agrade clicando aqui, e que também não seja muito antiga, eu recomendo as versões de 8.60 até 8.70. 2º- Deve ter um IP Changer com suporte á versão do seu servidor, um programa chamado Sqlite Studio para editar as contas do servidor e caso você queira fazer mudanças no Mapa do seu servidor deverá baixar o Remeres Map Editor com suporte a sua versão, para baixar tudo isso clique aqui e dê uma procurada. :smile_positivo: 3º- Depois de ter feito tudo isso, vamos começar a aprontar tudo para ligar o seu servidor, primeiro, vá até o Menu Iniciar e abra o Painel de Controle, como mostra a imagem abaixo: Depois, entre em Sistema e Segurança, Firewall do Windows, Configurações Avançadas e em Regras de Entrada, como mostram as próximas imagens: Agora clique em Nova Regra e faça exatamente oque as imagens mostram: Agora chegou a hora de criar o ip fixo do seu servidor, entre no site www.no-ip.com, cadastre-se e confirme a sua conta através do seu e-mail: Depois, entre na conta, aparecerá uma página com várias opções, clique em Add a Host, aparecerá a seguinte página: Em Hostname, coloque um nome para o seu ip fixo, ao lado, clique na setinha e escolha o final do ip fixo, depois clique em Create Host. Pronto, o ip fixo para o seu servidor está feito! Agora, vamos ligar o ip fixo para os outros poderem entrar no servidor por ele, para isso vamos precisar instalar um simples programa, volte até o site www.no-ip.com, clique na aba Download, clique em Windows e em Download, como mostram as figuras a seguir: Quando terminar de baixá-lo, instale-o, abra-o e faça o login, quando fizer o login automaticamente surgirá uma tela com o seu ip fixo, ótimo, marque a caixinha ao lado dele e clique em Save, pronto, o seu ip fixo está ligado! Entre na pasta do servidor, abra o arquivo config.lua Pressione CTRL + F e no espaço vazio digite ip =, depois clique em Localizar Próxima, substitua o ip entre as aspas por 127.0.0.1, vai ficar assim: Agora somente você conseguirá entrar no servidor para fazer os seus ajustes, pelo ip 127.0.0.1 Quando você quiser deixá-lo online para o público, substitua o 127.0.0.1 pelo ip fixo que você criou, deverá ficar assim: Agora vamos criar a sua conta GOD, abra o Sqlite Studio: Clique no botão Add Database e clique na pastinha ao lado: Apareceu uma tela, certo? Através dela, entre na pasta do seu servidor, selecione o arquivo .s3db e clique em Ok Uma aba apareceu no espaço vazio do lado esquerdo, certo? Abra ela, abra a aba Tables, a aba accounts e a aba players: Caso só tenha 1 conta na lista (1/1), você deve criar outra pelo seu servidor, voltar no Sqlite Studio e dar Refresh (O primeiro botão). Caso tenha uma segunda conta, em name você deve colocar a sua account name para entrar no jogo e em password a senha da conta, depois você clica no botão :button_ok: . Depois, na aba players, em name você deve colocar o nome do seu GOD, aí você pergunta: mas oquê bota em group_id? Fácil: 6 - GOD 5 - Comunity Manager (CM) 4 - Game Master (GM) 3 - Senior Tutor 2 - Tutor 1 - Player Então você deve colocar 6 em group_id, depois você clica no botão :button_ok: . Pronto, agora é só você entrar na sua conta GOD! Bom, isso é tudo pessoal! Boa sorte com o servidor, até mais!1 ponto -
Fala Ae Galera Do [X-TIBIANA] Hoje Venho Lhes Trazer Uma Baiak Edited Com Varias Quest e Muita Diversão Com Novas Hunts e Novos Items Edited Muito Top Varios Amigos Meu Vem Pedindo Este Mapa Mas Falei Que Ia Postar Ele Para Todos Para Não Se Injusto Com Ninguem Vamos as s's . Templo Hunts Quests Novas Areas Novos Depots Bem O Mapa Tem Ainda Carlin e Thais Com Woe Dota e Zm e Muito Mais . ..» Download Do Mapa «.. ..» Skan Do Mapa «.. apesar do meu mapa ter mais de 32 mb não foi possivel Passar ao virus total mas tenho uma printe com skan. Creditos Há Mad Rats On Deaths. MatheusVidaLoka1 ponto
-
[Systems] Pokemon Systems
VaizardX reagiu a MatheusGlad por um tópico no fórum
Scripts para TFS 0.3.6pl1 NAO FOI TESTADO EM OUTRA! Preview: Antes de tudo, va na pasta data/lib e adicione um script.lua com o nome de pokeLib e adicione isso: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- pokein, pokeout = 2222,2223 function doRemoveTile(pos)-- Script by mock pos.stackpos = 0 local sqm = getTileThingByPos(pos) doRemoveItem(sqm.uid,1) end function doCreateTile(id,pos) -- By mock doAreaCombatHealth(0,0,pos,0,0,0,CONST_ME_NONE) doCreateItem(id,1,pos) end function getPosDirs(p, dir) -- By MatheusMkalo return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function doItem(pos,a,d)-- Script by mock doCreateTile(460,pos) pos.stackpos = 0 local c = getTileThingByPos(pos) doItemSetAttribute(c.uid, "aid", a) end function getDescription(uid) for i,x in pairs(getItemDescriptions(uid)) do if i == "special" then return x end end end function findLetter(string, letter) for i = 1, #string do if string:sub(i, i) == letter then return i end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function canSummon(cid) local pos = getCreaturePosition(cid) local state = false for i = 1, 8 do if isWalkable(getPosDirs(getCreaturePosition(cid), i)) then state = true end end return state end function isPlayerSummon(cid, uid) if getCreatureMaster(uid) == cid then return TRUE end return FALSE end function getSummonLifes(cid) for _,x in pairs(getCreatureSummons(cid)) do return getCreatureHealth(x), getCreatureMaxHealth(x) end end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function addPokeball(cid, pokename, maxh) local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..pokename.."'s pokeball. HP = ["..maxh.."/"..maxh.."]") doItemSetAttribute(s, "description", "Contains a " .. pokename) end function getPokeOutLive(cid) dat = {} for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then table.insert(dat, ui) end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then table.insert(dat, item.uid) end end end return dat end Go/Back Pokeball System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de goback.lua Depois de ter feito isso, adicione o seguinte script no arquivo goback.lua: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, go = "Vai Dragon", back = "Volte Dragon."}, ["Demon"] = {level = 8, go = "Vai Demon", back = "Volte Demon."}, ["Dragon Lord"] = {level = 8, go = "Vai Dragon Lord", back = "Volte Dragon Lord."}, ["Rat"] = {level = 8, go = "Vai Rat", back = "Volte Rat."}, } local msgunica = false function onUse(cid, item, frompos, item2, topos) local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) local health = tonumber(getItemAttribute(item.uid, "poke"):match("%[(.-)/")) if item.itemid == pokeout then if health ~= nil and health <= 0 then return doPlayerSendCancel(cid, "This pokemon is dead.") end if #getCreatureSummons(cid) >= 1 then for _,z in pairs(getCreatureSummons(cid)) do if getItemAttribute(item.uid, "poke"):find(getCreatureName(z)) then doTransformItem(item.uid, pokein) if msgunica then doCreatureSay(cid, "Back, " .. getCreatureName(z), TALKTYPE_SAY) else doCreatureSay(cid, pokes[getCreatureName(z)].back, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..getCreatureHealth(z).."/"..getCreatureMaxHealth(z).."]") setPlayerStorageValue(cid, 61204, 0) doSendMagicEffect(getCreaturePosition(z), 10) return doRemoveCreature(z) end end end elseif item.itemid == pokein then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You can't use pokeball in Protection Zones.") end if not canSummon(cid) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end if getPlayerStorageValue(cid, 63215) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while surfing.") end if getPlayerStorageValue(cid, 62314) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while flying.") end if getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendCancel(cid, "You can't use pokeball while riding.") end for i,x in pairs(pokes) do if #getCreatureSummons(cid) >= 1 then return doPlayerSendCancel(cid, "You already summoned a pokemon.") end if i == getItemAttribute(item.uid, "poke"):sub(9, findLetter(getItemAttribute(item.uid, "poke"), "'")-1) then if getPlayerLevel(cid) >= x.level then pk = doSummonCreature(i, getThingPosition(cid)) doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]"))) doCreatureAddHealth(pk, maxh) doCreatureAddHealth(pk, health-maxh) doTransformItem(item.uid, pokeout) if msgunica then doCreatureSay(cid, "Go, " .. i, TALKTYPE_SAY) else doCreatureSay(cid, x.go, TALKTYPE_SAY) end doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), "."))) doSendMagicEffect(getCreaturePosition(pk), 10) setPlayerStorageValue(cid, 61204, 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") break else doPlayerSendCancel(cid, "Only players level "..x.level.." or higher can use this pokemon.") end end end end return TRUE end Depois, va em actions.xml e adicione a seguinte tag: <action itemid="2222;2223" event="script" value="goback.lua"/> Sendo que 2222 e 2223 são, respectivamente, o id da pokeball que ira "chamar" o pokemon, e o outro o id da pokeball que ira retirar o pokemon. (Seriam as pokebolas acesas e apagadas do PO) Agora, para evitar alguns bugs, va em data/creaturescripts/scripts e crie um arquivo.lua com o nome goback.lua e bote o seguinte script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onLogout(cid) local health,maxhealth = getSummonLifes(cid) if getPlayerStorageValue(cid, 61204) >= 1 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then pos = getCreaturePosition(cid) for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end doRemoveTile(getCreaturePosition(cid)) setPlayerStorageValue(cid, 61941, pos.x) setPlayerStorageValue(cid, 61942, pos.y) setPlayerStorageValue(cid, 61943, pos.z) end return TRUE end function onLogin(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } local pokesfly = { ["Dragon"] = {lookType = 216, speed = 500}, } local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if getPlayerStorageValue(cid, 62314) >= 1 then doCreateTile(460, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) doTeleportThing(cid, {x=getPlayerStorageValue(cid, 61941), y=getPlayerStorageValue(cid, 61942), z=getPlayerStorageValue(cid, 61943)}) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesfly[tostring(a)], -1) doChangeSpeed(cid, pokesfly[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 63215) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokes[tostring(a)], -1) doChangeSpeed(cid, pokes[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 59987) >= 1 then local item = getPokeOutLive(cid)[1] local a = getItemAttribute(item, "poke"):match("This is (.-)'s pokeball.") doSetCreatureOutfit(cid, pokesride[tostring(a)], -1) doChangeSpeed(cid, pokesride[tostring(a)].speed) registerCreatureEvent(cid, "PlayerPokeDeath") end if getPlayerStorageValue(cid, 61207) >= 1 then local item = getPokeOutLive(cid)[1] doTransformItem(item, pokein) doRemoveCondition(cid, CONDITION_OUTFIT) doItemSetAttribute(item, "poke", getItemAttribute(item, "poke"):sub(#getItemAttribute(item, "poke")) ~= "]" and getItemAttribute(item, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]" or getItemAttribute(item, "poke")) setPlayerStorageValue(cid, 61207, 0) end return TRUE end function onDeath(cid, deathList) local owner = getCreatureMaster(cid) doPlayerSendTextMessage(owner, 22, "Your pokemon died.") for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(owner, slot) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for _, ui in pairs(items) do if getItemAttribute(ui, "poke"):sub(#getItemAttribute(ui, "poke")) == "." then local maxh = tonumber(getItemAttribute(ui, "poke"):match("/(.+)]")) doItemSetAttribute(ui, "poke", getItemAttribute(ui, "poke"):sub(1, findLetter(getItemAttribute(ui, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end if item.itemid == pokeout then if getItemAttribute(item.uid, "poke"):sub(#getItemAttribute(item.uid, "poke")) == "." then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = [0/"..getCreatureMaxHealth(cid).."]") end end end doRemoveCreature(cid) setPlayerStorageValue(owner, 61207, 0) setPlayerStorageValue(owner, 61204, 0) return FALSE end Agora adicione outro arquivo.lua na pasta data/creaturescripts/scripts com o nome de playerpdeath e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onDeath(cid) local health,maxhealth = getSummonLifes(cid) if #getCreatureSummons(cid) >= 1 then setPlayerStorageValue(cid, 61205, health) setPlayerStorageValue(cid, 61206, maxhealth) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 63215) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61210)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61209)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 63215, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 62314) >= 1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 61262)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 61263)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 62314, 0) setPlayerStorageValue(cid, 61207, 1) end if getPlayerStorageValue(cid, 59987) >=1 then setPlayerStorageValue(cid, 61205, getPlayerStorageValue(cid, 59988)) setPlayerStorageValue(cid, 61206, getPlayerStorageValue(cid, 59989)) setPlayerStorageValue(cid, 61204, 0) setPlayerStorageValue(cid, 59987, 0) setPlayerStorageValue(cid, 61207, 1) end return TRUE end Depois va em creaturescripts.xml e adicione as seguintes TAGS: <event type="death" name="PlayerPokeDeath" event="script" value="playerpdeath.lua"/> <event type="death" name="DiePoke" event="script" value="goback.lua"/> <event type="logout" name="LogoutPoke" event="script" value="goback.lua"/> <event type="login" name="LoginPoke" event="script" value="goback.lua"/> Catch Pokemon System By: MatheusMkalo Vá em data/actions/scripts e adicione um arquivo.lua com o nome de catch.lua Depois adicione o seguinte script dentro dele: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {corpseid = 5973, chance = 100, health = 12200, maxhealth = 12200}, ["Dragon Lord"] = {corpseid = 5984, chance = 100, health = 12200, maxhealth = 12200}, ["Demon"] = {corpseid = 5995, chance = 100, health = 12200, maxhealth = 12200}, } local time = 4 -- Tempo para mandar as mensagens e adiciona item function onUse(cid, item, frompos, item2, topos) for i,x in pairs(pokes) do if item2.itemid == x.corpseid then doRemoveItem(item.uid, 1) doRemoveItem(item2.uid, 1) if math.random(1,100) <= x.chance then function add() local s = doPlayerAddItem(cid, pokein) doItemSetAttribute(s, "poke", "This is "..i.."'s pokeball. HP = ["..x.health.."/"..x.maxhealth.."]") doItemSetAttribute(s, "description", "Contains a " .. i) end doSendMagicEffect(topos, 24) addEvent(add, time*1000) return addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "You catch a " .. i .. ".") else addEvent(doPlayerSendTextMessage, time*1000, cid, 27, "Your pokeball broke.") return doSendMagicEffect(topos, 23) end end end return TRUE end Depois adicione a seguinte TAG no actions.xml: <action itemid="2147" event="script" value="catch.lua"/> Sendo 2147, o id da sua pokebola para capturar pokemons (NAO A DE CHAMAR O POKEMON) Npc Healler By: MatheusMkalo Vá em data/npc/scripts e adicione um arquivo.lua com o seguinte script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'heal') then if #getCreatureSummons(cid) >= 1 then return selfSay('Voce precisa botar seus pokemons dentro da pokebola.', cid) end for slo = CONST_SLOT_FIRST, CONST_SLOT_LAST do local item = getPlayerSlotItem(cid, slo) if isContainer(item.uid) then local items = getItemsInContainerById(item.uid, pokeout) for i,x in pairs(items) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(x, pokein) end local items2 = getItemsInContainerById(item.uid, pokein) for i,x in pairs(items2) do local maxh = tonumber(getItemAttribute(x, "poke"):match("/(.+)]")) doItemSetAttribute(x, "poke", getItemAttribute(x, "poke"):sub(1, findLetter(getItemAttribute(x, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") end elseif item.itemid == pokeout or item.itemid == pokein then local maxh = tonumber(getItemAttribute(item.uid, "poke"):match("/(.+)]")) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke"):sub(1, findLetter(getItemAttribute(item.uid, "poke"), ".")) .. " HP = ["..maxh.."/"..maxh.."]") doTransformItem(item.uid, pokein) end end selfSay('Pronto, voce e seus pokemons estao com a life maxima.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Depois va ate a pasta data/npc e adicione um arquivo.xml e bote isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Pokemon Healer" script="pokehealer.lua" walkinterval="2000" 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="Ola, diga {heal} para recuperar sua vida e a vida dos seus pokemons."/> </parameters> </npc> Surf System By: MatheusMkalo Vá em data/actions/scripts e crie um arquivo.lua com o nome de surf e bote esse script dentro: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onUse(cid, item, frompos, item2, topos) local configs = { [4647] = {x = -2, y = 0}, -- 4647 é o id da borda oeste (lado esquerdo do player) [4645] = {x = 2, y = 0}, -- 4645 é o id da borda leste (lado direito do player) [4646] = {x = 0, y = 2}, -- 4646 é o id da borda sul (abaixo do player) [4644] = {x = 0, y = -2}, -- 4644 é o id da borda norte (acima do player) } local playerpos = getCreaturePosition(cid) local pokes = { ["Dragon"] = {lookType=267, speed = 1500}, ["Rat"] = {lookType=267, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to surf.") end l = false for i,x in pairs(pokes) do if getPlayerStorageValue(cid, 63215) <= 0 and i:lower() == getCreatureName(getCreatureSummons(cid)[1]):lower() then l = true end end if not l and getPlayerStorageValue(cid, 63215) <= 0 then return doPlayerSendCancel(cid, "This pokemon can't surf.") end if getPlayerStorageValue(cid, 63215) <= 0 then doTeleportThing(cid, {x=playerpos.x+configs[item2.itemid].x, y=playerpos.y+configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 1) doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doCreatureSay(cid, "Let's surf, "..getCreatureName(getCreatureSummons(cid)[1]), 1) setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1])) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) doRemoveCreature(getCreatureSummons(cid)[1]) else doTeleportThing(cid, {x=playerpos.x-configs[item2.itemid].x, y=playerpos.y-configs[item2.itemid].y, z=playerpos.z}) setPlayerStorageValue(cid, 63215, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of surf, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61209)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61210)-getPlayerStorageValue(cid, 61209)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Depois va em actions.xml e adicione essa tag: <action itemid="4647;4645;4646;4644" event="script" value="surf.lua"/> Ensinarei nos tutorias como adicionar novas bordas e botar cada pokemon com seu proprio outfit na agua. OBS:Todos os scripts mudaram para implementar o surf, atualize-os OBS2: Para funcionar o id da agua tem que ser 4820. Para usar basta clicar na borda da agua. Evolution System By: MatheusMkalo Vá em data/actions/scripts e adicione um script.lua com o nome de evolution.lua e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon System By Mkalo 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 Pokemon System By Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- local pokes = { ["Dragon"] = {level = 1, evolution = "Dragon Lord", maxh = 2000}, } local types = { ["Water"] = {itemid = 2277, "Horsea", "Goldeen", "Magikarp"}, ["Venom"] = {itemid = 2278, "Zubat", "Ekans"}, ["Thunder"] = {itemid = 2279, "Magnemite", "Pikachu"}, ["Rock"] = {itemid = 2280, "Geodude", "Graveler"}, ["Punch"] = {itemid = 2281, "Machop", "Machoke"}, ["Leaf"] = {itemid = 2276, "Ivysaur"}, ["Fire"] = {itemid = 2283, "Charmander", "Charmeleon", "Dragon"}, ["Coccon"] = {itemid = 2284, "Caterpie", "Metapod"}, ["Crystal"] = {itemid = 2285, "Dratini", "Dragonair"}, ["Darkness"] = {itemid = 2286, "Gastly", "Haunter"}, ["Earth"] = {itemid = 2287, "Cubone"}, ["Enigma"] = {itemid = 2288, "Abra", "Kadabra"}, ["Heart"] = {itemid = 2289, "Rattata", "Pidgey"}, ["Ice"] = {itemid = 2290, "Seel"}, } function onUse(cid, item, frompos, item2, topos) for i,x in pairs(types) do if item.itemid == x.itemid then if isCreature(item2.uid) then if isPlayerSummon(cid, item2.uid) then if table.find(x, getCreatureName(item2.uid)) then if getPlayerLevel(cid) >= pokes[getCreatureName(item2.uid)].level then local pokeball = getPokeOutLive(cid)[1] local slo = pokes[getCreatureName(item2.uid)].maxh local sle = pokes[getCreatureName(item2.uid)].evolution doItemSetAttribute(pokeball, "description", "Contains a " .. pokes[getCreatureName(item2.uid)].evolution) doPlayerSendTextMessage(cid, 27, "Your "..getCreatureName(item2.uid).." evolued to a "..pokes[getCreatureName(item2.uid)].evolution) doSendMagicEffect(topos, 18) doItemSetAttribute(pokeball, "poke", "") doItemSetAttribute(pokeball, "poke", "This is "..pokes[getCreatureName(item2.uid)].evolution.."'s pokeball. HP = ["..pokes[getCreatureName(item2.uid)].maxh.."/"..pokes[getCreatureName(item2.uid)].maxh.."]") doRemoveCreature(item2.uid) local pk = doSummonCreature(sle, topos) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") doConvinceCreature(cid, pk) setCreatureMaxHealth(pk, slo) setPlayerStorageValue(cid, 61204, 1) doCreatureAddHealth(pk, slo) doRemoveItem(item.uid, 1) break else return doPlayerSendCancel(cid, "You need to be level "..pokes[getCreatureName(item2.uid)].level.." or higher to use this stone in this pokemon.") end end end end end end return TRUE end Depois vá em actions.xml e adicione esta tag: <action itemid="2276;2277;2278;2279;2280;2281;2283;2284;2285;2286;2287;2288;2289;2290" event="script" value="evolution.lua" allowfaruse="1"/> Fly System By: MatheusMkalo, Credits: Mock Vá em data/talkactions/scripts e adicione um arquivo.lua com o nome de fly e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon Systems by Mkalo 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 Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words, param) local pokes = { ["Dragon"] = {lookType = 216, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 62314) <= 0 then doPlayerSendCancel(cid, "You need a pokemon to fly.") end if getPlayerStorageValue(cid, 62314) <= 0 and not pokes[getCreatureName(getCreatureSummons(cid)[1])] then return doPlayerSendCancel(cid, "This pokemon can't fly.") end if getPlayerStorageValue(cid, 62314) <= 0 then doSetCreatureOutfit(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])], -1) doChangeSpeed(cid, pokes[getCreatureName(getCreatureSummons(cid)[1])].speed) setPlayerStorageValue(cid, 61263, getCreatureMaxHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 61262, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 62314, 1) registerCreatureEvent(cid, "LogoutPoke") doCreatureSay(cid, "Let's fly, "..getCreatureName(getCreatureSummons(cid)[1]), 1) doRemoveCreature(getCreatureSummons(cid)[1]) local ppos = getCreaturePos(cid) local newpos = {x=ppos.x, y=ppos.y, z = 0} doCreateTile(460, newpos) doTeleportThing(cid, newpos) for i = 1,8 do doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end elseif getPlayerStorageValue(cid, 62314) >= 1 then local ppos = getCreaturePosition(cid) p = true for i = 1,17 do if getTileThingByPos({x=ppos.x, y=ppos.y, z=ppos.z+i}).itemid ~= 0 and not isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then p = false break end if isWalkable({x=ppos.x, y=ppos.y, z=ppos.z+i}) then l = ppos.z + i break end end if not p or getTileThingByPos({x=ppos.x, y=ppos.y, z=l}).itemid == 4820 then return doPlayerSendCancel(cid, "You can't down in there.") end for i = 1,8 do doRemoveTile(getPosDirs(getCreaturePosition(cid), i)) end setPlayerStorageValue(cid, 62314, 0) doTeleportThing(cid, {x=ppos.x, y=ppos.y, z=l}) doRemoveTile(ppos) local item = getPokeOutLive(cid)[1] pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) doCreatureSay(cid, "I'm tired of fly, "..getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61263)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 61262)-getPlayerStorageValue(cid, 61263)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) doRemoveCondition(cid, CONDITION_OUTFIT) end return TRUE end Depois bote essa tag no talkaction.xml: <talkaction words="!fly" event="script" value="fly.lua"/> Va em data/movements/scripts e crie um arquivo.lua com o nome de fly.lua e bote: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon Systems by Mkalo 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 Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onStepIn(cid, item, position, fromPosition) local actions = { [65120] = {del = {4,5,6}, add = {1,2,8}}, [65121] = {del = {8,7,6,5,4}, add = {8,1,2,3,4}}, [65122] = {del = {8,7,6}, add = {2,3,4}}, [65123] = {del = {2,1,8,7,6}, add = {6,5,4,3,2}}, [65124] = {del = {2,1,8}, add = {4,5,6}}, [65125] = {del = {8,1,2,3,4}, add = {8,7,6,5,4}}, [65126] = {del = {2,3,4}, add = {8,7,6}}, [65127] = {del = {6,5,4,3,2}, add = {6,7,8,1,2}}, } local configs = actions[item.actionid] for i = 1,8 do if table.find(configs.del, i) then doRemoveTile(getPosDirs(fromPosition, i)) end doItem(getPosDirs(getCreaturePosition(cid), i), 65119+i) end return TRUE end Depois va em movements.xml e adicione essa tag: <movevent type="StepIn" actionid="65120;65121;65122;65123;65124;65125;65126;65127" event="script" value="fly.lua"/> Para usar o fly diga !fly para descer e subir Ride System By: MatheusMkalo Vá em talkactions/scripts e crie um arquivo.lua com o nome de ride e bote esse script: --[[ This file is part of Pokemon Systems by Mkalo. Pokemon Systems by Mkalo 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. Pokemon Systems by Mkalo 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 Pokemon Systems by Mkalo. If not, see <http://www.gnu.org/licenses/>. ]]-- function onSay(cid, words) local pokesride = { ["Dragon Lord"] = {lookType=4, speed = 3000}, ["Dragon"] = {lookType=4, speed = 500}, } if #getCreatureSummons(cid) <= 0 and getPlayerStorageValue(cid, 59987) <= 0 then return doPlayerSendCancel(cid, "You need a pokemon to ride.") end if not canSummon(cid) and getPlayerStorageValue(cid, 59987) >= 1 then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHROOM) end local sname = #getCreatureSummons(cid) >= 1 and getCreatureName(getCreatureSummons(cid)[1]) or nil if sname ~= nil and pokesride[sname] and getPlayerStorageValue(cid, 59987) <= 0 then doSetCreatureOutfit(cid, pokesride[sname], -1) doChangeSpeed(cid, pokesride[sname].speed) doCreatureSay(cid, "Let's ride, " .. sname, 1) setPlayerStorageValue(cid, 59987, 1) setPlayerStorageValue(cid, 59988, getCreatureHealth(getCreatureSummons(cid)[1])) setPlayerStorageValue(cid, 59989, getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) elseif getPlayerStorageValue(cid, 59987) >= 1 then setPlayerStorageValue(cid, 59987, 0) doRemoveCondition(cid, CONDITION_OUTFIT) local item = getPokeOutLive(cid)[1] doCreatureSay(cid, "Im tired of ride, " .. getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), 1) pk = doSummonCreature(getItemAttribute(item, "poke"):match("This is (.-)'s pokeball."), getThingPosition(cid)) doConvinceCreature(cid, pk) registerCreatureEvent(pk, "DiePoke") registerCreatureEvent(cid, "PlayerPokeDeath") registerCreatureEvent(cid, "LogoutPoke") setCreatureMaxHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59989)) doCreatureAddHealth(pk, getPlayerStorageValue(cid, 59988)-getPlayerStorageValue(cid, 59989)) doChangeSpeed(cid, getCreatureBaseSpeed(cid)-getCreatureSpeed(cid)) end return TRUE end Agora bote essa tag em talkactions.xml: <talkaction words="!ride" event="script" value="ride.lua"/> Pra usar o ride é so falar !ride. Para configurar os pokemons é praticamente igual ao surf. Configurando os scripts Como adicionar mais pokemons no go/back: No inicio do script, tem essa tabela com as informaçoes: Copie a ultima linha (vermelha) e cole logo abaixo, editando os nomes e as mensagens ficando assim: Voce pode configurar o level para usar o poke mudando o valor de level. Configurando pokemons para o catch:[/b] Olhe a tabela no inicio do script: Faça o mesmo processo do acima de copiar e colar embaixo e editar: Aonde as informaçoes corpseid, chance, health, maxhealth serao, respectivamente: Id do corpo do monstro, Chance de capturar em %, health que o pokemon iria ir pro player, e health maxima que o poke iria ir para o player. Como trocar os ids das pokebolas, acesas e apagadas. Para trocar o id da pokebola "acesa" e "apagada" basta mudar os ids 2222,2223 na lib sendo que 2222 eh o da acesa e o 2223 eh o id da apagada Mude tambem na tag do action.xml que seu script ira funcionar perfeitamente. Como adicionar mais bordas ao surf. Primeiramente va em actions.xml e adicione os ids das bordas na tag do surf: (Eu fiz com a borda de areia) Depois va no script surf.lua em actions e repare nessa parte: Copie todas as 4 bordas e cole abaixo ficando: Depois mude os ids das bordas do lado << conforme as informaçoes do lado >>, ficando: Como adicionar mais pokes ao surf: Va no script surf.lua em actions e repare nessa parte: Ai voce pode adicionar o pokemon pra surf e o outfit que ele vai te dar na agua copiando o de cima e colando logo abaixo e editando algumas coisas: Lembre-se de depois que acabar de editar toda a tabela no surf.lua, va no goback.lua em creaturescripts e substitua a tabela pokes, pela que esta na actions surf.lua: Como adicionar mais pokes no evolution: Repare nessa parte do script evolution.lua em actions: Bem voce deve copiar o primeiro monstro da tabela "pokes", e adicionar no final e mudar as configuraçoes: Sendo level,evolution,maxh respectivamente, o level pra evoluir o poke, o nome da evoluçao, e a health maxima do pokemon evoluido. Depois eh so adicionar o Nome do monstro que foi adicionado a tabela "pokes" na tabela "types", no lugar do type dele: Como adicionar mais pokes no fly: Repare nas partes iguais no fly.lua (talkaction) e no goback.lua(creaturescripts): fly.lua: goback.lua: A unica coisa que mudou foi o nome da tabela, "pokes" e "pokesfly", para adicionar mais pokes no fly basta adicionar no fly.lua e botar igual no goback.lua. Informaçoes Importantes!!! Para testar o script de catch que esta no topico, voce deve deletar as tags de encantamento de armas. Para poder summonar os pokemons com o go/back, voce precisa ir no arquivo.xml do monstro e editar essa linha: Se estiver convinceable="0", mude para convinceable="1" ficando: Creditos Especiais: Kydrai pela funçao "getItemsInContainerById" MarcelloMkez Mock por algumas funçoes do fly system dele. Agradecimentos: D3rs00n (Me ajudou a fazer sumir o corpo do pokemon) Julio Cezar (Ajudou reportando bugs e testando scripts) Miih (Ajudou reportando bugs e testando scripts) Arth3miS (Ajudou reportando bugs e testando scripts) E para todos que reportaram bugs. Bugs, erros, duvidas, elogios no topico[/b]1 ponto -
Pokemon Emerald Version
hakkanalan reagiu a hakkan224 por um tópico no fórum
Ola apresento a vocês um servidor que esta a cada dia mais perto de se tornar, um jogo parecido com a pxg Alguns sistemas que o servidore contem EU CREIO QUE SEJA O UNICO OT QUE ESTA 24HRS ONLINE,NÃO SEI SE TEM ALGUM QUE FIQUE POREM ESTE É 24 HORAS =] •Surf - 100% •Ride - 100% •Fly - 100% •rder - 100% •Addons System - 100% •Barra Igual Da PxG - 100% •Systema HeadButt - 100% •Systema De Police E Equipe Rocket Igual PxG - 100% •Systema De Evento - 100% •Systema De Clan - 100% •Headbutt System - 100% •Novos Systemas - 100% •Pokemons Envuluiem Por Stones - 100% •Pokemons Sem Level - 100% •Ditto System - 100% •Tv/CaM - 100% •!Love - 100% •Nursa Joy - Heala Todos Os Pokemons - 100% •PvP System - 100% •Loot - 100% •Kit Inicial - 100% •Pokemons - Kanto E Jhoto •M1 Ao M12 - 100% •Gynasio System - 100% •Ataks De Pokemons - 100% •Pode Jogar Ball De Longe - 100% •Houses - 100% •Dex - 100% •Boost - 100% •Aura System - 100% •Novas Oufits - 100% •Novos Ataks - 100% •Potion - 100% •Revive - 100% •Pokemons Sem level Temos outland tambem, com um continente aberto somente, teremos mais com o passar do tempo,estam muito bem balanceados. BUGS SENDO RETIRADOS TODOS OS DIAS. Para saber mais confira: https://www.facebook.com/PokexEmerald?ref=ts&fref=ts e pra você que ja quer baixar: http://www.4shared.com/rar/Ddm_Me6C/Pokemon_Emerald_Client_V3.html? Pessoal espero que ninguem faça comentarios desnecessarios sem conhecer o jogo.1 ponto -
[Arquivado]Entrevista Com O Yan18
Yan Oliveira reagiu a Stigal por um tópico no fórum
Legal cara, parabens pela entrevista... Bem informativa e montada. Acho que poderia ser maior, ter mais assuntos pessoais e etc. Mas gostei! Parabens ao Sky e ao Yan18. Abraço.1 ponto -
Dota E Coliseum
Piabeta Kun reagiu a LTKReturns por uma questão
Baixe O Website Do Servidor DO Link Abaixo Que Tem AS Paginas.php Dota E Coliseum http://www.xtibia.com/forum/topic/183671-global-extreme-gesior-extreme-db-100/1 ponto -
[Encerrado] [Dúvida Pda] É Possível Criar Pokebola Com Pokemon Dentro?
BrunooMaciell reagiu a Yan Oliveira por um tópico no fórum
Pra cria Ball com Pokemon dentro só fazer comando /cb nome do pokemon.1 ponto -
Modificação SPELL
gtms reagiu a Yan Oliveira por uma questão
Tenta assim: local acombat = createCombatObject() local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDSWORD) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -4.0, -260, -4.0, 240) local arr = { {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 2, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(acombat, area) function onTargetTile(cid, pos) doCombat(cid,combat,positionToVariant(pos)) end setCombatCallBack(acombat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, acombat, var) end Se não funcionar avisa.1 ponto -
1 ponto
-
Bom nesse tópico você irá aprender a fazer uma area de gelo , esse tutorial nao muito indicado para iniciantes, mais dá pra pegar boa parte dele como um exemplo para você conseguir subir na carreira de mapper. Parte #1 Parte#2 Parte#3 Parte#4 Parte#51 ponto
-
[Encerrado] Boost Stone
Chapalirous reagiu a Mulizeu por um tópico no fórum
EDITED O POSTE function onUse(cid, item, frompos, item2, topos) if not isCreature(item2.uid) or not isSummon(item2.uid) then doPlayerSendCancel(cid, "You can only give this Boost to trainers' pokemons.") return true end if getCreatureHealth(item2.uid) == 0 then return true end local pb = getPlayerSlotItem(getCreatureMaster(item2.uid), 8) --doPlayerSendTextMessage(cid, 27, "You gave a Boost Stone to "..getPokeName(item2.uid)..".") local level = getItemAttribute(pb.uid, "level") local exp = getItemAttribute(pb.uid, "exp") local neededexp = getItemAttribute(pb.uid, "nextlevelexp") local boost = getItemAttribute(pb.uid, "boost") or 0 if boost >= 200 then doPlayerSendCancel(cid, "Your pokemon is already at maximum boost.") return true end doRemoveItem(item.uid, 1) if getHappiness(item2.uid) < 50 then doSendMagicEffect(getThingPos(item2.uid), 168) return true end doCreatureSay(item2.uid, "BOOST+.", TALKTYPE_ORANGE_1) doSetItemAttribute(pb.uid, "boost", boost + 1) doPlayerSendTextMessage(getCreatureMaster(item2.uid), 27, "Your "..getPokeName(item2.uid).." has eaten a Boost Stone!") doSendFlareEffect(getThingPos(item2.uid)) doSendAnimatedText(getThingPos(item2.uid), "B O O S T!", 215) doCreatureSay(cid, getPokeName(item2.uid)..", take this Boost!", TALKTYPE_SAY) return false end1 ponto -
Pra quem não me conhece a muito mapeio e posto coisas aqui no xtibia.. umas muito ruins (meus primeiros trabalhos, coisas como mapa baiak, entre outros, mas isto e uma etapa de todo mapper.. <mapear um mapa 'modinha'>) com o tempo de mapping me ingressei no Elysium, onde continuo, porem neste minhas habilidades tem tomado um outro rumo (de rpg maker), como daqui um tempo terei de retomar a mapear neste projeto (pois ja faz quase 2meses que estou criando rpg, e mapeando muito pouco, resolvi fazer um test.. pus o cronometro para 20min, e neste tempo mapeei uma muralha.. ela ficou incompleta (obvio 20min), por isto a chamei de muralha da iluminaçao.. pois sera nela quem eu irei me dedicar um certo tempo até voltar as minhas antigas habilidades de mapping (que não eram muito boas mas davam pro gasto).. E não só por isto, pois irei compartilha-la com vocês oque eu fiz neste 20min, pelo fato dela estar incompleta, porém bonitinha (meio bem editadinha) alguns mappers irão se interessar por esta e continuar meu trabalho.. Se você não gostou, não critique, baixe-a e a refasse.. Se você gostou +Rep.. -Nisto que dá 2meses de "atoisse" Dl- mini muralha incompleta.rar1 ponto
-
http://www.xtibia.com/forum/topic/195228-tutorial-instalando-rme-map-editor-87/ de uma olhada esse ae é pra 8.7 mais deve servir assim mesmo ainda não tem o rme 9.7 então dificulta um pouco mais acho que passar para 9.7 é meio inútil porque acho que não tem nenhuma sprite nova que sirva para mapping1 ponto
-
1 ponto
-
Duvida Vocations.xml
Akatsukyi reagiu a LTKReturns por uma questão
Vou Tentar Ajudar gainmanaamount = Quanto De Mana O Player Vai Ganhar Por Segundo gainmanaticks = Quantos Segundos O Player Vai Ganha A Mana gainhpamount = Quanto De HP O Player Vai Ganha Por Segundo gainhpticks = Quantos Segundos O Player Vai Ganhar O HP E Sobre Isso <formula meleedamage="1.0" distdamage="1.0" wanddamage="1.0" magdamage="1.0" maghealingdamage="1.0" defense="1.0" magdefense="1.0" armor="1.0"> Cada Vez Que Você Modifica Tipo EX: wanddamage="1.0" Para wanddamage="2.0" Ela Vai Hitar O Dobro ! E O Os Mesma Coisa1 ponto -
Erro No Ot
Subhe reagiu a LTKReturns por uma questão
Vá Em data/globalevents E Dps Abra Globalevents.xml E Remova A Tag Que Tem O No SHOP !1 ponto -
Tenta Esse http://www.xtibia.com/forum/topic/198165-radbr-banishment-system-atualizado/1 ponto
-
Introdução Chama-se vulgarmente de telhado qualquer tipo de cobertura em uma edificação. Porém, o telhado, rigorosamente, é apenas uma categoria de cobertura, em geral caracterizado por possuir um ou mais planos inclinados em relação à linha horizontal (diferente, por exemplo, das lajas planas ou das cúpulas). A cada um destes planos inclinados, dá-se o nome de água. Fonte: wikipedia 1. Primeiramente, vamos aos exemplos de telhados comuns: - I - II > Para fazê-los é muito fácil, basta ir em RAW> Roofs para fazer o seguinte tipo de telhado: > Mas se quiser fazer os demais vá em (se for iniciante) Terrain Pallete> Roofs: 2. Passo a passo de como fazer o telhado (IDS 9092~): - I - II - III - FINAL/RESULTADO Bom é isto, eu queria apenas mostrar o básico para depois aprofundar, isto é, mostrar como fazer o mix/randomização dos telhados, como nesta foto do Skywar: Bom galera, é isto; espero que tenham gostado/aprendido! Créditos: 100% Left4dead1 ponto
-
Acampamento Elf's - Árvore Sagrada
p5lukas157 reagiu a RarTnE por um tópico no fórum
Olá XTibianos, esse mapa que criei, é baseado em uma história. Então antes de criticarem leiam a história: Os Elf's tinham muitas superstições. Uma delas era a árvore sagrada. Gigantesca, grande, bonita e deslumbrante, uma árvore onde ocorria vários rituais elfos. Informações: • Versão: 8.6 • Tema: Acampamento Elf's / Árvore Sagrada • Erros: Esqueci de por o telhado, ai você escolhe entre telhado de bambu ou de folhas. Não coloquei segundo andar pois ai fica a critério de vocês. • Adicionais: Coloquei uma quest na casinha de lá ( > ), ela será uma quest facil pois é para matar elf's. Download: http://www.4shared.c...xP/Mapa_2.html? Scan: https://www.virustot...sis/1350347692/1 ponto -
tenta assim seeles tentarem trocar os outfits dos outros a outfit deles que será trocada... function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local t = string.explode(param, ",") t[1] = tonumber(t[1]) if(not t[1]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires numeric param.") return true end local failout = {"66","302","56","45","10"} -- outfits proibidas for i = 1, #failout do if string.find(tostring(param), failout[i]) then doPlayerSendCancel(cid,"Não pode usar estas outfit.") return TRUE end end if(t[1] <= 1 or t[1] == 135 or (t[1] > 160 and t[1] < 192) or t[1] > 351) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Such outfit does not exist.") return true end local tmp = getCreatureOutfit(cid) tmp.lookType = t[1] doCreatureChangeOutfit(cid, tmp) return true end1 ponto
-
-1 pontos
-
-1 pontos
-
Represa
vital900 reagiu a p5lukas157 por um tópico no fórum
Achei bem legal Parabens Só acho que Falto detalhes na Ponte-1 pontos -
[Encerrado] [Dúvida] Meu server não tem sistema
Skymagnum reagiu a JooPedr24027461 por um tópico no fórum
Removido-1 pontos -
Ola gostaria de aprende umas coisa sobre o poketibia, eu gostaria de saber como faço umas script de como fazer m1 m2 m3 e que tenho alguns pokemon sem m1 etc e também gostaria de saber como faço pra fazer pokedex dele também porque não tem também se poderem ajuda agradeço. Sou novato se coloquei o tópico no lugar errado me desculpe; Obrigado se poder ajuda agradeço.-1 pontos