Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/13/11 em todas áreas
-
Como Jogar Um Otserv
trunks06 reagiu a comedinhasss por um tópico no fórum
Como Jogar um OTServ Então galera, esse tutorial foi feito pelo Ot Red shot com a idéia do nosso Diretor JV Chequer. Então, como era antigo eu estou renovando... Ok, agora iremos ao tutorial. Eu já vi muitos tutoriais ensinando a como montar, por online, hospedar OTservers e tudo mais... Mas nesse irei ensinar a como se conectar e como criar account em um OTserv. Pois bem, já expliquei agora iremos ao tutorial. Antes de tudo, eu irei explicar a vocês o que é um OTserv. OTserv é um servidor de licença Open-Source que foi criado por jogadores de tibia que queriam conhecer melhor os sistemas do Tibia. Ele é usado na maioria das vezes por pessoas que querem 'se afastar' um pouco da vida monótona do Tibia e partir pra algo mais 'livre' e divertido. Foi lançado em 2001. Hoje em dia o OTserv ou como também pode ser chamado OPENTIBIA, tem um grande sucesso e deixou de ser uma ' tentativa de conhecer os sistemas ' e acabou virando(para algumas pessoas) como se fosse uma verdadeira obrigação. Isso em alguns casos é bom e em outros é ruim . Ok, agora você já sabe o que é um OTserv. Vamos continuar o tutorial. Como se conectar a um OTserv (7.6+)? Primeiramente, você deve ter o tibia instalado no seu computador (Aqui). Caso você use linux (Aqui). E também o ip changer instalado no seu computador (Aqui). Eu recomendo usar o Syn IP Changer que nunca me decepcionou e tem melhor configuração... Depois de baixar o ip changer você deve entrar na lista de servidores (Aqui) e procurar o tipo de servidor que você goste... Eu recomendo procurar por Exp (Experiencia) ou por players online... Após escolher o servidor que melhor o satisfaz vamos a configuração... Esse é o ip changer, ao olhar parece complicado, mas é super fácil de usar... Legenda: Onde está contornado de vermelho é o ip do servidor (Adderess Ip). Onde está contornado de marrom eu recomendo não mudar pois dificilmente a porta do servidor sera outra (port é o nome que está na lista de servidores). Onde está contornado de azul é a versão do servidor, você terá que comparar com o tibia que você tem instalado, a lista de servidores e o ip changer... Para entrar no cliente clique em Change Ip e você já estará pronto para criar uma account... Como crio minha conta (Somente para versões 8.20+)? Para entrar no account manager você somente precisa apertar enter... E começada um dialogo: Como crio minha conta (em versões 8.11-)? A padrão é : Account 111111 Senha Tibia Agora você entra no Tibia com ela e loga no Account Manager. Agora eu ensinarei a como conversar com ele e criar sua account. Dialogo de criação de uma account normal: Primeiro ele lhe pergunta se você quer criar uma account. Você diz ACCOUNT . Ele irá perguntar qual account você deseja usar. Você irá dizer a account que você quer . Ele irá perguntar se é aquela mesma que você quer. Você dirá que sim . (yes) Agora ele irá dizer seu password. Na maioria dos casos é serv alguma coisa exemplo: serv542 Agora, ele perguntará se você deseja trocar seu password ou criar um character. Nós iremos criar um character então diga CHARACTER Ele perguntará o nome que seu character vai ter. Diga o nome . Agora ele irá perguntar o sexo do seu character. Diga male para homem e female para mulher. Ele irá perguntar a vocação de seu character. Você pode escolher por: Knight -> Cavaleiros. Melhores no combate corpo a corpo Paladin -> Arqueiros. Melhores no combate de longa distância Druid -> Feiticeiros. São eles que tem o maior poder de natureza e de cura Sorcerer -> Magos. Mestres da Magia Diga a sua vocação e logo em seguida diga YES. Pronto. Agora é só você fechar o account manager, entrar normalmente com a account criada e jogar no seu char õ/ Mas você pode também trocar o password que o account manager te dá. Para isso, basta você falar com ele desse jeito: Fale password Ele irá perguntar se você deseja realmente mudar sua senha. Diga yes. Ele pedirá para que você escreva seu novo password. Escreva seu novo password. Repita o novo password. Pronto, seu password foi trocado. Tutorial Bonus: Como verificar a versão do seu tibia Bom, para verificar a versão do tibia que você está usando é fácil... Abra o tibia e clique em info, e terá Version ( = numero da versão) Depois compare com o ip changer e a lista de servidores Creditos: Ot Red shot Last Souls Comedinhasss JV Chequer Refeito do artigo: Este aqui1 ponto -
Informações Do Mapa O mapa foi criado por : No Love Stanislal Ammy Data de lançamento : 28 de dezembro de 2010 Conteudo Do Mapa Nesse mapa tem 2 novas cidades. Novas hunt. Novas Ilhas. Pokemons shiny. (Porfavor se você não tiver os pokemons baixe o servidor PKM-Rush EDITED By Thulio ou flash que são compativel Pode funcionar em outro tambem.) Varios pokemons adicionado no mapa. (Aconcelho a balancear bem os pokemons para ficar divertido) Comunicado Se tiver bugs no mapa porfavor reportar aqui no xtibia no post! (Melhor site de comunicação de Otserv) Eu Postarei aqui 1 Mes ou mais a nova atualização do mapa. A nova versão será mais detalhada e corrigido os bugs que vocês postarem. Contato! Servidores que gostárão do meu trabalho e que faça parte da equipe podem postár o msn no tropico.! OBS : Somente servidores Serios que não estragão ou que tenhão equipe competente que não sejão dirigido por criançãs. (Não interessa a idade tendo cabeça serve!) Participarei de bom grado por servidores 24 hs. Servidores que estáo iniciando (Se for 24hs e serio) Fotos Do Servidor! Download do Mapa No Link Abaixo: http://www.megaupload.com/?d=UVCW73Z0 Sei que teria que por vereficação de virus. Mas Podem Confiar So Mapper.! Não faço esse tipo de coisa. Creditos: PORFAVOR POSTEM OS CREDITOS NOS SERVIDORES! Stanislal No Love Ammy Obrigado A todos Quem gosto: Resp ++ Fiquem ligados que logo postarei a versão mais detalhada. Se eu postei na seção errada pesso disculpa Adiministradores do forum poderia mover para a seção correta? Obrigado dnovo!1 ponto
-
Advanced Reset System'
LeoTK reagiu a MarcelloMendes por um tópico no fórum
~~ Advanced Reset System 1.0 ~~ By: MarcelloMkez Bom, vi alguns Sistemas de Reset como o do Marcryzius, Yunie, e etc. E sempre vi Muitos pedidos como por exemplo: OBS: NÂO FUNCIONA EM 8.60 Reset no Look; Mudar Vocação ao Resetar; Limite em Resets; e etc... Então, resolvi Criar o Meu 'Reset System' com todas essas funções acima, e com a opção de Abilitar ou Desabilitar as Funções. Testado em TFS 0.3.6 - 8.50 e 8.60, o Script Funcionou Perfeitamente. Funções do Sistema: - Reset No Look; - Mudar Vocação ao Resetar; - Limite de Resets; - Premium Account; Ja vi sistemas de Reset, cada um com alguma dessas Funções, então resolvi junta-las em Apenas um 'Advanced Reset System'... Espero Por Críticas e Elogios. Abra a pasta data/Talkactions, crie um arquivo .lua e coloque: advancedReset.lua e Adicione Isso: --[[ SCRIPTING> MarcelloMkez <scriptING ]] --[[ [Advanced Reset System] Autor: MarcelloMkez Versão: 1.0 TFS: 0.3.6 Testado em: 8.50 Fórum: www.xtibia.com/forum/topic/138026-talk-action-advanced-reset-system/ [Características] ~ Versão 1.0 ~ - Resets no Look; - Premium Account ou não; - Mudar Vocação; - Limite de Resets; - Opções para Abilitar e Desabilitar Condições; [Em Construção] - Stages Free e Premium; - 'Talvez' um novo sistema de mudar Vocação; sem data para postagem. ]] function onSay(cid, words, param) --[Configurações de Condição]__ config = { --[[verdadeiro / Falso]] needPa = false, -- Precisa de Premium Account? [true / false] needPz = true, -- Precisa estar em Protection Zone? [true / false] battle = false, -- Precisa estar sem Batlle para Resetar? [true / false] withe = false, -- Players PK Withe pode Resetar? [true / false] red = false, -- Players PK Red pode Resetar? [true / false] tp = true, -- Teleportar para o Templo após o reset? [true / false] look = true, -- Mostrar Resets no Look do Player? [true / false] addLimite = false, -- Abilitar Limite de Resets? [true / false] setClasse = true, -- Mudar Vocação do player quando resetar? [true / false] storage = 2310, -- Storage [valor] --[Configurações do Reset]__ resetStatus = { player = getPlayerGUID(cid), -- Não Mude. lvl = 350 , -- Level Necessário para Resetar. [valor] lvlreset = 8, -- Level que retornará após o Reset. [valor] limite = 114, -- Máximo de resets que um player pode chegar. [valor] newClasse = 1, -- Id da Nova Vocação após o Reset. [valor] tempo= 5 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor] }, } --[Funções]__ function Reseting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function noAll(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noTeleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noLook(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) return TRUE end function noClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function setClasse(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doPlayerSetVocation(cid, config.resetStatus.newClasse) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function look(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function teleporting(cid) resets = getResets(cid) setPlayerStorageValue(cid,config.storage,resets+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player) db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player) return TRUE end function getResets(cid) resets = getPlayerStorageValue(cid,config.storage) if resets < 0 then resets = 0 end return resets end local resets = getResets(cid) local needLvl ="Você precisa de "..config.resetStatus.lvl-getPlayerLevel(cid).." level's para resetar." local msg ="~~[Reset: "..getResets(cid).."]~~ 'Sucesso ao Resetar! Você será deslogado em "..config.resetStatus.tempo.." Segundos." --[Condiçoes]__ if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"Você Precisa estar em Protection Zone Para Resetar.") return TRUE elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then doPlayerSendTextMessage(cid, 22, "Você ja atingiu o Limite de Resets.") return TRUE elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"Você ta PK White, por isso não pode resetar.") return TRUE elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"Você ta PK Red, por isso não pode resetar.") return TRUE elseif(config.needPa == true) and not isPremium(cid) then doPlayerSendTextMessage(cid,22,"Você Precisa ser Premium Account para Resetar.") return TRUE elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"Você Precisa estar sem Battle para Resetar.") return TRUE elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then addEvent(Reseting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then addEvent(noAll, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then addEvent(noLook, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then addEvent(noClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then addEvent(setClasse, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then addEvent(look, config.resetStatus.tempo* 1000, cid) elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then addEvent(teleporting, config.resetStatus.tempo* 1000, cid) elseif doPlayerSendCancel(cid, needLvl) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return TRUE end if doPlayerPopupFYI(cid, msg) then end return TRUE end --[by: MarcelloMkez]__ E em Talkactions.xml adicione isso: <talkaction words="!resetar" event="script" value="advancedReset.lua"/> Configurações: em --[Configurações de Condição]__ Para você Abilitar ou Desabilitar uma Função, você usa " true " para Verdadeiro," false " para falso, como ta Explicando no script. Em --[Configurações do Reset]__ Você colocará os Valores desejados, como: Level necessário para Resetar; Level que o Player Retornara após o Reset; Vocação para qual o player irá mudar caso esteja Abilitado a Função; Limite de Resets, caso esteja Abilitada a Função; E tempo em 'Segundos', para o Player Deslogar ao Resetar; Agora, para resetar, basta usar o comando "!resetar". Espero que Gostem e Entendam, Obrigado. by: MarcelloMkez'1 ponto -
[Talkaction]System Moves [15/151]
SamueLGuedes reagiu a meubk por um tópico no fórum
Moves System Pokemon O meu script de moves, foi atualizado, por enquanto está com esses pokemons, eu estárei adicionando os 151, aos pouco não tenha pressa e acompanhe todos dias avera atualização. Novidades : Crie um arquivo com nome de moves.lua e cole o new script : function getTime(s) local n = math.floor(s / 600) s = s - (600 * n) return n, s end function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers) local creaturesList = {} for x = -radiusx, radiusx do for y = -radiusy, radiusy do if not (x == 0 and y == 0) then creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z, stackpos = STACKPOS_TOP_CREATURE}) if (creature.type == 1 and showPlayers == 1) or (creature.type == 2 and showMonsters == 1) then table.insert(creaturesList, creature.uid) end end end end return creaturesList end -- CONDITIONS function Confused(inconfuse, rounds) if rounds == 0 then return false end if not inconfuse then return false end local c = {[1] = {x = 1, y = 0}, [2] = {x = 0, y = 1}, [3] = {x = -1, y = 0}, [4] = {x = 0, y = -1}} local p = getCreaturePosition(inconfuse) doSendMagicEffect(p, 31) local s = math.random(4) doTeleportThing(inconfuse, {x = p.x + c[s].x, y = p.y + c[s].y, z = p.z}) return addEvent(Confused, 400, inconfuse, rounds-1) end local paralize = createConditionObject(CONDITION_PARALYZE) setConditionParam(paralize, CONDITION_PARAM_TICKS, 5*1000) setConditionFormula(paralize, -0.7, 0, -0.8, 0) function Paralize(inparalize) doSendAnimatedText(getCreaturePosition(inparalize), "PAZ", 210) doAddCondition(inparalize , paralize) return true end local sleep = createConditionObject(CONDITION_PARALYZE) setConditionParam(sleep, CONDITION_PARAM_TICKS, 5*1000) setConditionFormula(sleep, -1.7, 0, -1.8, 0) function Sleep(insleep) doAddCondition(insleep , sleep) p = getCreaturePosition(insleep) doSendAnimatedText(p, "SLEEP", 154) for i = 1, 5 do if i == 1 then doSendMagicEffect(p, 32) else addEvent(doSendMagicEffect, i * 1000, p, 32) end end return true end function Poison(inpoison, ef, rounds) if rounds == 0 then return false end if not inpoison then return false end local p = getCreaturePosition(inpoison) doAreaCombatHealth(pet, COMBAT_EARTHDAMAGE, p, 0, -5, -10, ef) return addEvent(Poison, 800, inpoison, ef, rounds-1) end -- END CONDITIONS function getPosToStorm(posdecay) b = {x = posdecay.x-20, y = posdecay.y-20, z = posdecay.z} return b end local area1 = createCombatArea{ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 2, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} } local area2 = createCombatArea{ {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 2, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } local area3 = createCombatArea{ {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 1, 2, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0} } local areadirecion1 = { [2] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {2, 1, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 1, 2}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } } local areadirecion2 = { [2] = createCombatArea{ {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {2, 1, 1, 1, 1}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {1, 1, 1, 1, 2}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} } } local areadirecion3 = { [2] = createCombatArea{ {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {2, 1, 1, 1, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 2}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0} } } local areadirecion4 = { [2] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 2, 0, 0} }, [3] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {2, 1, 1, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} }, [0] = createCombatArea{ {0, 0, 2, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} }, [1] = createCombatArea{ {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 1, 1, 2}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0} } } local d = { ["Bulbasaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 20, st = 2000, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 20, st = 2001, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 20, st = 2002, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 20, st = 2003, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 20, st = 2004, cd = 3, min = 100, max = 200, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 20, st = 2005, cd = 3, min = 200, max = 400, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 20, st = 2006, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 20, st = 2007, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2008, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Ivysaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 40, st = 2009, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 40, st = 2010, cd = 3, min = 300, max = 400, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 40, st = 2011, cd = 3, min = 300, max = 440, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 40, st = 2012, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 40, st = 2013, cd = 3, min =300, max = 400, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 40, st = 2014, cd = 3, min = 300, max = 400, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 40, st = 2015, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 40, st = 2016, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2017, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Venusaur"] = { ["m1"] = {atk = "Quick Attack", minlvl = 80, st = 2018, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Razor Leaf", minlvl = 80, st = 2019, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Vine Whip", minlvl = 80, st = 2020, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Headbutt", minlvl = 80, st = 2021, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Leech Seed", minlvl = 80, st = 2022, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Solar Beam", minlvl = 80, st = 2023, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Stun Spore", minlvl = 80, st = 2024, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Poison Powder", minlvl = 80, st = 2025, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Sleep Powder", minlvl = 20, st = 2026, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m10"] = {atk = "Leaf Storm", minlvl = 80, st = 2027, cd = 3, min = 1000, max = 2000, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, }, ["Charmander"] = { ["m1"] = {atk = "Scratch", minlvl = 20, st = 2028, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 20, st = 2029, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 20, st = 2030, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 20, st = 2031, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 20, st = 2032, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 20, st = 2033, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Fire Fang", minlvl = 20, st = 2034, cd = 3, min = 100, max = 200, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, }, ["Charmeleon"] = { ["m1"] = {atk = "Scratch", minlvl = 40, st = 2035, cd = 3, min = 300, max = 400, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 40, st = 2036, cd = 3, min = 300, max = 400, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 40, st = 2037, cd = 3, min = 400, max = 500, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 40, st = 2038, cd = 3, min = 300, max =400, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 40, st = 2039, cd = 3, min = 300, max = 400, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 40, st = 2040, cd = 3, min = 100, max = 300, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Fire Fang", minlvl = 40, st = 2041, cd = 3, min = 400, max = 800, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, }, ["Charizard"] = { ["m1"] = {atk = "Dragon Claw", minlvl = 80, st = 2042, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Ember", minlvl = 80, st = 2043, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Flamethrower", minlvl = 80, st = 2044, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Fire Ball", minlvl = 80, st = 2045, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Fire Blast", minlvl = 80, st = 2046, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Rage", minlvl = 80, st = 2047, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m7"] = {atk = "Magma Storm", minlvl = 80, st = 2048, cd = 3, min = 1000, max = 2000, damage = COMBAT_FIREDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Wing Attack", minlvl = 80, st = 2049, cd = 3, min = 1000, max = 2000, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, }, ["Squirtle"] = { ["m1"] = {atk = "Headbutt", minlvl = 20, st = 2050, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 20, st = 2051, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 20, st = 2052, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 20, st = 2053, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 20, st = 2054, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 20, st = 2055, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 20, st = 2056, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 20, st = 2057, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Wartortle"] = { ["m1"] = {atk = "Headbutt", minlvl = 40, st = 2058, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 40, st = 2059, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 40, st = 2060, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 40, st = 2061, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 40, st = 2062, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 40, st = 2063, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 40, st = 2064, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 40, st = 2065, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Blastoise"] = { ["m1"] = {atk = "Headbutt", minlvl = 40, st = 2066, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Bubbles", minlvl = 40, st = 2067, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Water Gun", minlvl = 40, st = 2068, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m4"] = {atk = "Waterball", minlvl = 40, st = 2069, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Aqua Tail", minlvl = 40, st = 2070, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Hydro Cannon", minlvl = 40, st = 2071, cd = 3, min = 200, max = 400, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Harden", minlvl = 40, st = 2072, cd = 60, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, ["m8"] = {atk = "Surf", minlvl = 40, st = 2073, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, ["m9"] = {atk = "Hydropump", minlvl = 40, st = 2074, cd = 3, min = 100, max = 200, damage = COMBAT_ICEDAMAGE, target = false, pz = false}, }, ["Caterpie"] = { ["m1"] = {atk = "Headbutt", minlvl = 1, st = 2075, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 1, st = 2076, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Bug Bite", minlvl = 1, st = 2077, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, ["Metapod"] = { ["m1"] = {atk = "Headbutt", minlvl = 10, st = 2078, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2079, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Bug Bite", minlvl = 10, st = 2080, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Harden", minlvl = 10, st = 2081, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = true}, }, ["Butterfree"] = { ["m1"] = {atk = "Headbutt", minlvl = 30, st = 2082, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "Whirlwind", minlvl = 30, st = 2083, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, ["m3"] = {atk = "Super Sonic", minlvl = 30, st = 2084, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Stun Spore", minlvl = 30, st = 2085, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m5"] = {atk = "Poison Powder", minlvl = 30, st = 2086, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m6"] = {atk = "Sleep Powder", minlvl = 30, st = 2087, cd = 3, min = 0, max = 0, damage = COMBAT_EARTHDAMAGE, target = false, pz = false}, ["m7"] = {atk = "Psybeam", minlvl = 30, st = 2088, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, ["m8"] = {atk = "Confusion", minlvl = 30, st = 2089, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = false, pz = false}, }, ["Weedle"] = { ["m1"] = {atk = "Horn Attack", minlvl = 1, st = 2090, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 1, st = 2091, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 1, st = 2092, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, ["Kakuna"] = { ["m1"] = {atk = "Bug Bite", minlvl = 10, st = 2093, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2094, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 10, st = 2095, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Harden", minlvl = 10, st = 2096, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = true}, }, ["Beedrill"] = { ["m1"] = {atk = "Fury Cutter", minlvl = 10, st = 2097, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m2"] = {atk = "String Shot", minlvl = 10, st = 2098, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m3"] = {atk = "Poison Sting", minlvl = 10, st = 2099, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m4"] = {atk = "Pin Missile", minlvl = 10, st = 2100, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m5"] = {atk = "Rage", minlvl = 10, st = 2101, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, ["m6"] = {atk = "Strafe", minlvl = 10, st = 2102, cd = 3, min = 100, max = 200, damage = COMBAT_PHYSICALDAMAGE, target = true, pz = false}, }, } function onSay(cid, words, param) if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You do not have any pokemon.") end local poke = d[getCreatureName(getCreatureSummons(cid)[1])][words] if not poke then return true end local storage = poke.st local exst = 16265 local cdexst = 0.5 local cd = math.ceil(poke.cd/2) local pet = getCreatureSummons(cid)[1] local target = getCreatureTarget(cid) local look = getCreatureLookDir(pet) local position = getThingPos(pet) if getTilePzInfo(getCreaturePosition(pet)) and poke.pz == false then return doPlayerSendCancel(cid, "Not Attack in protection zone.") end if getPlayerLevel(cid) < poke.minlvl then return doPlayerSendTextMessage(cid, 19, "Your need level "..poke.minlvl.." to use " ..poke.atk..".") end if os.time()-getPlayerStorageValue(cid, storage) <= cd then minutes,seconds = getTime(cd-(os.time()-getPlayerStorageValue(cid, storage))) return doPlayerSendTextMessage(cid, 27, "Wait "..seconds.." seconds to use "..poke.atk..".") end if target == 0 and poke.target then return doPlayerSendTextMessage(cid, 19, "This Pokemon Attack need any target.") end if os.time()-getPlayerStorageValue(cid, exst) <= cdexst then minutes,seconds = getTime(cdexst-(os.time()-getPlayerStorageValue(cid, exst))) return doPlayerSendCancel(cid, "Poke exhausted") end local critico = math.random(100) < 10 and 2 or 1 --ATTACKS if poke.atk == "Quick Attack" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 148) elseif poke.atk == "Razor Leaf" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 4) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 79) elseif poke.atk == "Vine Whip" then local effects = { [0] = 80, [1] = 83, [2] = 81, [3] = 82 } doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion1[look], -poke.min, -poke.max * critico, effects[look]) elseif poke.atk == "Headbutt" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 111) elseif poke.atk == "Leech Seed" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 6) doSendAnimatedText(getCreaturePosition(target), "POISON", 66) addEvent(Poison, 500, target, 45, 5) elseif poke.atk == "Solar Beam" then local a = { [0] = {x = 0, y = -1, effect={[1]=94,[2]=93,[3]=93,[4]=95}}, [1] = {x = 1, y = 0, effect={[1]=86,[2]=88,[3]=88,[4]=87}}, [2] = {x = 0, y = 1, effect={[1]=91,[2]=93,[3]=93,[4]=92}}, [3] = {x = -1, y = 0, effect={[1]=89,[2]=88,[3]=88,[4]=90}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Stun Spore" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do Paralize(pid) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 85) elseif poke.atk == "Poison Powder" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do doSendAnimatedText(getCreaturePosition(pid), "POISON", 66) Poison(pid, 8, 5) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 84) elseif poke.atk == "Sleep Powder" then local d = getCreaturesInRange(getThingPos(pet), 1, 1, 1, 0) for _,pid in pairs(d) do Sleep(pid) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 27) elseif poke.atk == "Leaf Storm" then local d = getCreaturesInRange(getThingPos(pet), 3, 3, 1, 0) for _,pid in pairs(d) do for i = 1, 4 do if i == 1 then addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(pid), 0, -poke.min, -poke.max * critico, 79) doSendDistanceShoot(getPosToStorm(getCreaturePosition(pid)), getCreaturePosition(pid), 4) else addEvent(doAreaCombatHealth, i*800 ,pet, poke.damage, getThingPos(pid), 0, -poke.min, -poke.max * critico, 79) addEvent(doSendDistanceShoot, i*600, getPosToStorm(getCreaturePosition(pid)), getCreaturePosition(pid), 4) end end end elseif poke.atk == "Scratch" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) elseif poke.atk == "Ember" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 15) elseif poke.atk == "Flamethrower" then local effects = { [0] = 55, [1] = 58, [2] = 56, [3] = 57 } doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion1[look], -poke.min, -poke.max * critico, effects[look]) elseif poke.atk == "Fire Ball" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 3) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 5) elseif poke.atk == "Fire Blast" then local a = { [0] = {x = 0, y = -1, effect= 60}, [1] = {x = 1, y = 0, effect= 61}, [2] = {x = 0, y = 1, effect= 62}, [3] = {x = -1, y = 0, effect= 63} } for i = 1,8 do if i == 1 then doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 15) else addEvent(doSendMagicEffect, i*300, {x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) addEvent(doAreaCombatHealth, i*300, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 15) end end elseif poke.atk == "Rage" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1,4 do if i == 1 then doSendMagicEffect(position, 168) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) else addEvent(doAreaCombatHealth, i*500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 142) end end elseif poke.atk == "Fire Fang" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 146) addEvent(doAreaCombatHealth, 200, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 15) addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 15) elseif poke.atk == "Dragon Claw" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 141) elseif poke.atk == "Magma Storm" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 36) addEvent(doAreaCombatHealth, 800, pet, poke.damage, getThingPos(pet), area1, -poke.min, -poke.max * critico, 6) elseif poke.atk == "Wing Attack" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 115) addEvent(doAreaCombatHealth, 500, pet, poke.damage, getThingPos(pet), area1, -poke.min, -poke.max * critico, 42) elseif poke.atk == "Bubbles" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 2) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) elseif poke.atk == "Water Gun" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=73}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Waterball" then for i = 1,5 do if i == 1 then addEvent(doAreaCombatHealth, 200 ,pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) doSendDistanceShoot(getPosToStorm(getCreaturePosition(target)), getCreaturePosition(target), 2) else addEvent(doAreaCombatHealth, i*700 ,pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 68) addEvent(doSendDistanceShoot, i*500, getPosToStorm(getCreaturePosition(target)), getCreaturePosition(target), 2) end end elseif poke.atk == "Aqua Tail" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area2, -poke.min, -poke.max * critico, 160) elseif poke.atk == "Hydro Cannon" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[8]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=73}} } for i = 1,8 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Harden" then function Harden(cid, rounds) if rounds == 0 then return false end if #getCreatureSummons(cid) == 0 then return false end doSendMagicEffect(getCreaturePosition(getCreatureSummons(cid)[1]), 144) return addEvent(Harden, 1000, cid, rounds-1) end addEvent(Harden, 500, cid, 40) elseif poke.atk == "Surf" then local a = { [0] = {x = 0, y = -1, effect= 66}, [1] = {x = 1, y = 0, effect= 67}, [2] = {x = 0, y = 1, effect= 64}, [3] = {x = -1, y = 0, effect= 65} } for i = 1,8 do if i == 1 then doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) else addEvent(doSendMagicEffect, i*300, {x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect) addEvent(doAreaCombatHealth, i*300, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) end end elseif poke.atk == "Hydropump" then local a = { [0] = {x = 0, y = -1, effect={[1]=74,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[8]=76}}, [1] = {x = 1, y = 0, effect={[1]=69,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=71}}, [2] = {x = 0, y = 1, effect={[1]=77,[2]=75,[3]=75,[4]=75,[5]=75,[6]=75,[7]=75,[4]=78}}, [3] = {x = -1, y = 0, effect={[1]=72,[2]=70,[3]=70,[4]=70,[5]=70,[6]=70,[7]=70,[8]=73}} } for i = 1,8 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 68) addEvent(doAreaCombatHealth, 400, pet, poke.damage, getThingPos(pet), areadirecion3[look], -poke.min, -poke.max * critico, 33) elseif poke.atk == "String Shot" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 23) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) Paralize(target) elseif poke.atk == "Bug Bite" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 146) elseif poke.atk == "Whirlwind" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion4[look], -poke.min, -poke.max * critico, 42) elseif poke.atk == "Super Sonic" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1, 3 do if i == 1 then doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 24) else addEvent(doSendDistanceShoot, i * 200, getCreaturePosition(pet), getCreaturePosition(target), 24) end end addEvent(doSendAnimatedText, 500, getCreaturePosition(target), "CONF", 210) addEvent(Confused, 500, target, 15) elseif poke.atk == "Psybeam" then local a = { [0] = {x = 0, y = -1, effect={[1]=108,[2]=109,[3]=109,[4]=108}}, [1] = {x = 1, y = 0, effect={[1]=106,[2]=107,[3]=107,[4]=106}}, [2] = {x = 0, y = 1, effect={[1]=109,[2]=108,[3]=108,[4]=109}}, [3] = {x = -1, y = 0, effect={[1]=107,[2]=106,[3]=106,[4]=107}} } for i = 1,4 do doSendMagicEffect({x = position.x + a[look].x*i, y = position.y + a[look].y*i, z = position.z}, a[look].effect[i]) end doAreaCombatHealth(pet, poke.damage, getThingPos(pet), areadirecion2[look], -poke.min, -poke.max * critico, 59) elseif poke.atk == "Confusion" then doAreaCombatHealth(pet, poke.damage, getThingPos(pet), area3, -poke.min, -poke.max * critico, 136) elseif poke.atk == "Horn Attack" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 111) elseif poke.atk == "Poison Sting" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 15) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 9) elseif poke.atk == "Fury Cutter" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 110) addEvent(doAreaCombatHealth, 500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 110) elseif poke.atk == "Pin Missile" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 5 then return doPlayerSendCancel(cid, "Target is far away.") end for i = 1, 3 do if i == 1 then doSendDistanceShoot(getCreaturePosition(pet), getCreaturePosition(target), 13) doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) else addEvent(doSendDistanceShoot, i * 200, getCreaturePosition(pet), getCreaturePosition(target), 13) addEvent(doAreaCombatHealth, i * 200, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, 137) end end elseif poke.atk == "Strafe" then if getDistanceBetween(getCreaturePosition(pet), getCreaturePosition(target)) > 1 then return doPlayerSendCancel(cid, "Target is far away.") end local dd = {142, 111, 110, 148} for i = 1,6 do af = math.random(4) if i == 1 then doAreaCombatHealth(pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, dd[af]) else addEvent(doAreaCombatHealth, i*500, pet, poke.damage, getThingPos(target), 0, -poke.min, -poke.max * critico, dd[af]) end end end -- END ATTACKS doPlayerSay(cid, getCreatureName(pet)..", use "..poke.atk..".", 1) setPlayerStorageValue(cid, storage, os.time()+cd) setPlayerStorageValue(cid, exst, os.time()+cdexst) local atknotcritic = {"Harden", "Poison Powder", "Sleep Powder", "Super Sonic", "Stun Spore"} if critico == 2 and not isInArray(atknotcritic, poke.atk) then doSendAnimatedText(getCreaturePosition(cid), "CRITICAL", 144) end return true end New Tag : <talkaction words="m1;m2;m3;m4;m5;m6;m7;m8;m9;m10;m11;m12" hide="yes" event="script" value="moves.lua"/> Pokemons Configurados [15/151] :1 ponto -
Gesior Traduzido(50%) Compatível 0.2+
Redemption reagiu a rod_doidim por um tópico no fórum
Boa Tarde XTibianos, agora são 17:22, do dia 08/01/11. Vim deixar um download útil para alguns. É o Gesior compatível com TFS 2.0+ ( Traduzido por partes por mim e fixado alguns bugs. ) Abaixo a Screen com o menu traduzido: Clique no link abaixo para DOWNLOAD. :down: Caso o link expirar, mande PM. Estarei aqui para ajudar! PS: Eu sei que não fiz nada muito grande, porém como não vi nenhuma versão que presta-se! Este site é compatível com TFS 0.2.9 (8.7) Quem baixar, me digam se ajudou hehehe! Fiquei curioso que quem baixou este Gesior, gostou. Obrigado1 ponto -
Aprendendo A Modificar Extensions
RulezKnight reagiu a Koddy por um tópico no fórum
Saudações XTibianos! Bom, depois de muitos pedirem, insistirem, e beijarem meus pés; cá estou eu. Mas não para lhe dar uma extension de mão beijada, e sim para lhe ensinar a como fazer a sua própria. É isso mesmo! Agora você vai aprender a customizar seu Palette, criar um novo Palette; enfim, colocar os atalhos para os itens que você quiser, onde você quiser e na ordem que você quiser. Sem contar também que agora os novos itens da versão 8.6 poderão ser juntados aos diferentes pisos/paredes para facilitar na hora de mappear. Espero que ajude muita gente, e que todos possam entender com clareza. Lembrando que eu ainda não aprendi todos as funções de cada palavra, mas independente delas, consegui fazer o que quis, então vamos lá (se conserguir fazer de um jeito melhor, fique a vontade para fazer, e se quiser poste aqui sua sugestão). Aprendendo a modificar extensions Índice/Partes: •Introdução •Alterando posições de itens no Palette •Criando seu próprio Piso, com direito a borda •Criando sua própria parede, com todos os 'quatro cantos' •Criando Doodads 'Espaçosos' (estilo Fontes) •Criando Doodads 'Aleatórios' (estilo Flores) •Frequently Asked Questions - FAQ Introdução A. Alterando posições de itens no Palette B. Criando seu próprio Piso, com direito a borda C. Criando sua própria parede, com todos os 'quatro cantos' D. Criando Doodads 'Espaçosos' (estilo Fontes) E. Criando Doodads 'Aleatórios' (estilo Flores) --- Obs: Não sabe o que significa uma opção? Tente alterá-la e veja no que dá (mas por favor, não esqueça do 'BackUp'). (: --- Dicionário: 'AB' = Auto Border --- Frequently Asked Questions - FAQ (Leia antes de postar uma Dúvida): --- No mais, desejo boa sorte para o que quer que você faça modificando suas "Extensions". Ensinei tudo que eu sei, e espero continuar aprendendo para que eu possa compartilhar com vocês. Acho que este foi o tutorial mais cansativo longo (que levou alguns dias) que já fiz até hoje. Espero que tenham gostado, e por favor, agradeçam para que eu possa continuar fazendo meus tutoriais ver que meu esforço valeu a pena. Obrigado por lerem até aqui. Não deixem de continuar visitando o XTibia. Atenciosamente, Koddy.1 ponto -
Informações Do Mapa O mapa foi criado por : No Love Stanislal Ammy Data de lançamento : 28 de dezembro de 2010 Conteudo Do Mapa Nesse mapa tem 2 novas cidades. Novas hunt. Novas Ilhas. Pokemons shiny. (Porfavor se você não tiver os pokemons baixe o servidor PKM-Rush EDITED By Thulio ou flash que são compativel Pode funcionar em outro tambem.) Varios pokemons adicionado no mapa. (Aconcelho a balancear bem os pokemons para ficar divertido) Comunicado Se tiver bugs no mapa porfavor reportar aqui no xtibia no post! (Melhor site de comunicação de Otserv) Eu Postarei aqui 1 Mes ou mais a nova atualização do mapa. A nova versão será mais detalhada e corrigido os bugs que vocês postarem. Contato! Servidores que gostárão do meu trabalho e que faça parte da equipe podem postár o msn no tropico.! OBS : Somente servidores Serios que não estragão ou que tenhão equipe competente que não sejão dirigido por criançãs. (Não interessa a idade tendo cabeça serve!) Participarei de bom grado por servidores 24 hs. Servidores que estáo iniciando (Se for 24hs e serio) Fotos Do Servidor! Download do Mapa No Link Abaixo: http://www.megaupload.com/?d=UVCW73Z0 Sei que teria que por vereficação de virus. Mas Podem Confiar So Mapper.! Não faço esse tipo de coisa. Creditos: PORFAVOR POSTEM OS CREDITOS NOS SERVIDORES! Stanislal No Love Ammy Obrigado A todos Quem gosto: Resp ++ Fiquem ligados que logo postarei a versão mais detalhada. Se eu postei na seção errada pesso disculpa Adiministradores do forum poderia mover para a seção correta? Obrigado dnovo!1 ponto
-
Aprenda A Usa Rme Map Editor
SkyTheKing reagiu a Vilden por um tópico no fórum
Remere's Map Editor Tópico meu para download do Rme 8.54 Download clique aqui! -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- Remere's map editor veio para revolucionar, tornando mais fácil de se fazer mapas e em pouco tempo, remeres facilitou a vida dos mappers por ter suas bordas automáticas e muitas funções adicionais, entre todos os mappers editores remeres é o melhor. Primeiro passo O primeiro passo para usa-lo é preencher uma boa área com agua assim você poderá colocar algum solo como grama, gelo, terra etc.. lembrando que o remeres faz as bordas automaticamente. Palette Palette é aquela janelinha onde fica várias opções e agora irei explicar cada uma delas.. Terrain palette Cave: Aqui você acha os tiles básicos para começar uma caverna, como chão, parede de caverna, lava, buracos etc.. Nature Aqui você tem várias coisas, tiles de grama, terra, gelo, montanhas, você também acha alguns opções para da um look em seu tile, as 'poeiras' temos 3 opções, areia, terra, pedra. Roofs Neste local você acha os telhados, tem vários tipos de telhados, os mais usado é o primeiro. Snow Aqui você encontra quase tudo para fazer uma área de gelo, escadas, tiles, montanhas de gelo, cave de gelo Stairs Vários tipos de escadas, não tem todos mais os mais usados estão aqui. Town Coisas necessárias para montar uma cidade, pisos diferentes, ruas, paredes, grades etc.. -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- Doodad Palette Architecture Pilastras, colunas, postes de luz Beds Vários tipos de Cama Corpses Corpos de humanos, monstros etc.. Exterior Tochas, portal, alavancas, caixa de correio, enfeites, caixões, carroças etc.. Hangables Coisas que ficam na parede como, lampadas, relogio, cortinas etc.. Interior Cadeiras, mesas, balcões, baús, caixas, vazo, tapetes etc.. Magic fields Os famosos fields, de fire, energy, poison, também magic wall, lembrando que algumas ficam permanentes e outros não Nature Tudo de natureza, arvores, pedas, flores etc.. Signs Todos os tipos de placas. Smithing Items para monta sua loja de forjamento Snow Já aqui é a natureza de gelo, arvores, pedras, etc.. Splash Agua, sangue.. Statues Muitos tipos de Estátuas Trash Lixo Underwater Caso queira montar algo no estilo fundo do mar, pedras, estrelas do mar, conchas etc.. -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- Item palette Tudo que é considerado objeto você encontra aqui, não é preciso nem explica os próprios nomes já dizem, segue as categorias: House palette, Waypoint palette e Creature palette House palette ~> Aqui é onde você monta as houses, e vê as que já estão montadas (Tutorial de como criar house no final do tópico) Waypoint palette ~> Não sei exatamente para que serve. Creature palette ~> Aqui você encontra todas as criaturas do tibia, você pode monta respaws. (Tutorial de como criar respaw no final do tópico) RAW palette Aqui você vai encontra tudo como veio ao mundo, exemplo se no doodad você clicava na cama e ela ja vinha montadinha aqui não, você tem que monta ela por partes, aqui você encontrara tudo, tudo mesmo tudo que existe no tibia estará aqui, são um total de 30 categorias. .::Tutoriais::. Como criar um respaw: Vá em creature palette la embaixo tem uma opção a Brushes e la tem spawn time/spawn size, deixe como está e tem um botão assim -> Place respaw, clique nele e logo após no local aonde você quer colocar um monster a área ira ficar vermelha no map editor então você procura um monster a sua escolha, clicar no nome do monster e coloca ele nessa área em vermelho. Como criar house: Entre neste link para ler um tutorial feito por Filippe Ferreira, http://www.xtibia.com/forum/topic/114854-fazendo-casas-no-rme/ Como adicionar um novo monster/Npc: Entre neste link para ler um tutorial feito por Vilden http://www.xtibia.com/forum/topic/122238-adicionando-npcsmonster-no-palette-rme/ -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- Ferramentas do Map Editor Vá no Terrain pallete, repare que existe uns ícones la embaixo Opitional Auto Border: Aí você vai usando isso para por a "borda" nas montanhas, ele também pode ser usado para por bordas nos items como wooden floor, para pontes.... e ele é um "auto border manual". Eraser: Usado para apagar. Normal Door, Locked Door, Quest Door e Magic Door: São as portas, OBS: só você usar numa parede que o MAP EDITOR automaticamente seleciona o tipo de porta. Hatch Window: Janelas do UPdate 7.92, aquelas que da para fechar. Window: Janelas normais, que não é possível fechar. PZ TOOL: Área de protection Zone. NON PVP TOOL: Igual a pz tool, só que sua mana sobe e tal... NO LOGOUT TOOL: Uma área em que você fica com battle. PVP ZONE TOOL: Área em que os players podem se atacar. -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- FAQ- Como rodar os items? Simples, com alguns items do DOODAD palette é possível rodar, apertando a tecla X Como Randomizar mapa inteiro: O RME MAP EDITOR conta com uma função muito útil para os otservers em que você fez com o SIMONE MAP EDITOR, "Randomize Map" Nessa função ele randomiza quase todos os tiles, as gramas, o gelo, a terra das caves e etc... Para fazer isso vá em Edit > Border Options > e clique em Randomize Map. Como Fazer todas as bordas: Essa função permite por bordas no seu mapa inteiro de uma vez, vá nas opçoes do auto border e clique em Borderize Map, o seu mapa ficará com as bordas. Como aumentar o zoom? Simples, use a "roleta" que tem no mouse. Como adicionar cidades? Map > Edit Towns > Add Selecione o jeito que você quer e clique em OK. Como faço para alterar andar? Use o "+" e "-". Como faço para apagar tiles de casas / PZ? Você pode apagar com qualquer "pincel", mantenha pressionada a tecla CTRL e desenhe. (Shift ainda funciona como normal) Como eu utilizo a ferramenta apagar? Selecione a ferramenta de apagar. Se você só clicar com o botão esquerdo do mouse, você só removerá itens na posição atual. Se você manter pressionada Ctrl ao clicar com o botão esquerdo do mouse, você apagará telhas e chão. Se você manter pressionado Shift ao clicar com o botão esquerdo do mouse você pode selecionar um espaço de onde você deseja excluir todos os itens. Se você mantenha pressionada Ctrl, Shift e o botão esquerdo do mouse você pode selecionar um espaço de onde você deseja excluir todos os itens e todo terreno. A não ser que você desmarque a opção "Eraser não deleta unique itens" no Menu preferências a borracha não exclui itens em containers ou itens com unique e / ou action ID. Como eu faço casas? Bom, para fazer casas no RME MAP EDITOR você deve criar uma cidade primeiro.... Para criar uma cidade vá até MAP > EDIT TOWNs Ali você faz a cidade... Agora faça uma casa, vá no pallete de casas, selecione a cidade e clique em ADD. Selecione os Tiles da casa e depois a saída dela. Pronto, aí está sua casa. Eu não encontrar um certo item, onde está ela? Você pode encontrar todos os itens utilizando o "Raw Palette" ou procure - o pressionando "J" no teclado. Você pode procurar por ambos os nomes e IDs. A lista com todos os itens encontrados de pesquisa serão exibidos em uma lista abaixo. Como faço para copiar / colar / mover uma parte do mapa? Se você tem um item ou "pincel" selecionado de um espaço para selecionar o "ponteiro" (ou o que ele é chamado). Agora mantenha pressionado shift e arraste o mouse, mantendo baixo botão esquerdo do mouse para selecionar uma área. Agora, você pode simplesmente mover a área selecionada ou pressione Ctrl + c, Ctrl + v para, em seguida, colá - lo no Editor. Você precisará clicar com o botão esquerdo do mouse antes de botar o conteúdo colado ao próprio mapa. Eu não posso colocar staglamites sobre a água! Você pode colocar doodads sobre blocking tiles, mantenha pressionada ALT. Eu quero outra árvore! Posso ver os tipos de variações? Mantenha pressionada CTRL e clique em espaço, enquanto o doodad estiver selecionado a variação mudará. As paredes têm a orientação errada! Como faço para rodar elas? Mantenha pressionado ALT com o wallbrush selecionado e clique no tile para girar que parede. Como fazer montanhas de neve/gelo? Bom, primeiro você deve baixar isso AQUI, quando substituir os arquivos, vá até a terrain pallete, e depois snow. Irá perceber que há 2 novos ícones, snowy mountain e icy mountain. Agora clique neles, faça a montanha que quiser, ficara meio "bugado", agora vá na ferramente "optional auto border", e faça as bordas da montanha de gelo. Quando eu abro meu mapa a tela fica branca!! Não é em qualquer pc que o remeres funciona, caso aconteça isso no seu pc apenas reabra o mapa caso ainda fique com a tela branca tente reinstala o remeres, tente abrir apenas o remeres. -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~- Atalhos Lembrando que existem outros, mais não são importantes igual aos citados. Video auxiliar: -------------------------------------------------------------- http://www.youtube.com/watch?v=vHnw9VTv3C8&feature=player_embedded -------------------------------------------------------------- Qualquer dúvida pode postar, atualizarei o tópico sempre que puder, caso encontre algum erro poste. Obrigado. Tópico original (desatualizado) ~> clique aqui!1 ponto -
1 ponto
-
[Mysql] The Brazilian Server V0.1.4
Natanael Beckman reagiu a kosicki123 por um tópico no fórum
Ae agora saiu o update com os bugs corrigidos Vlw pelo update continua atualizando que ajuda muita gente!1 ponto -
vai em creaturescript/script/login.lua antes do ultimo "return true" adicione: if getPlayerStorageValue(cid, 99456) <= 0 then addVipDays(cid, 3) setPlayerStorageValue(cid, 99456, 1) end flw1 ponto
-
Problemas Sérios Com Vocações!
Doon Dragon reagiu a churupetinha por um tópico no fórum
hm... mano ja aconteceu isso com migo posta sua vocation.xml aki pra eu ver uma coisa ta, pq meu colega fez um system de reset de vocation pra me quando eu reseta e moria valtava pra msm vocation ou ficava sem vocation entao posta ae flw1 ponto -
Material de Apoio Loops Antes de começarmos, o que vem a ser um loop em programação? Um loop é a repetição de um bloco de código por diversas vezes, com a finalidade de verificar uma condição, economizar linhas e alterar estados de variáveis. Em lua, temos três estruturas capazes de realizar loops, o comando while, o comando repeat e o comando for veremos agora como proceder para fazer um loop usando o while. Compreendendo o WHILE: O comando while, pode ser entendido como "enquanto" e deve vir junto a uma condição. Ou seja, ele executa e testa a condição enquanto esta não for satisfeita. Vejamos um exemplo: i = 10 while i>0 do print(i) i = i-1 end Como podemos observar no exemplo acima, temos uma variável i com o valor 10 e a estrutura while comparando i a 0, mostrando o valor de i e decrementando seu valor em 1 (subtraindo 1 do valor). Logo, neste exemplo teremos uma contagem regressiva de 10 até 0, quando a condição será obedecida e o laço terminado. Podemos ainda fazer uso do comando break para terminar o laço em algum ponto de sua execução: a = 1 while true do print(a) a = a + 1 if a > 10 then break end end Neste segundo exemplo, o while está configurado para executar infinitamente, entretanto, dentro do bloco de execução, temos uma condição if que caso a seja maior que 10, ele encerra o laço. Neste segundo exemplo, nos será mostrado os números de 1 a 10 em ordem crescente. A estrutura REPEAT: O comando repeat, é a segunda estrutura que podemos usar para fazer loops. Sempre vem acompanhado de outro comando, o until. Pode ser compreendido como "repita até que". Sua sintaxe é parecida ao do while, e também obedece a uma condição. Enquanto falsa, ele executa. Quando verdadeira, o laço é interrompido. Observem um exemplo: i = 3 repeat print(i) i = i-1 until i==0 Como vemos, no início, definimos a variável que será usada para controlar o laço e colocamos um decremento. É importante ressaltar a condição que o until impõe: caso i seja igual a 0, interrompa. O comando acima, deverá mostrar-nos os números de 3 a 0 em ordem decrescente. O comando repeat também pode ser usado junto ao break: i = 1 repeat print(i) i = i+1 if i>10 then break end until false Caso não tivessemos o if para controlar o ponto de interrupção, o comando executaria infinitamente, pois no until, não temos condição, logo será sempre falsa. O todo poderoso FOR: Este comando, apesar de sua simplicidade, é complicado de se entender completamente, hoje darei apenas uma pincelada. Haverá outro tutorial somente usando o for. O for em lua, apresenta dois usos possíveis para fazermos laços. A primeira, é a forma numérica e a segunda, chama-se sequencial. Não explicarei a diferença funcional entre elas, somente mostrarei como fazer loops usando-as. A forma numérica é bem direta: for i = 1, 3 do print(i) end A variável i não precisa ser declarada anteriormente. No caso desta estrutura, a variável assume os valores de 1 a 3 e repete o bloco com estes valores. Em sua forma sequencial, precisamos fazer uso de tabelas. Observe: for i, x in pairs({"Indice 1", "Indice 2", "Indice 3"}) do print(i, x) end No caso acima, será mostrada uma estrutura mais ou menos assim: 1 Indice 1 2 Indice 2 3 Indice 3 Bom, acho que isso é tudo. flw1 ponto
-
Como Trocar O Preco Do !buypremium Por X Item?
rafaelleme reagiu a iagsousa por uma questão
BOm tente fazer assim: <?xml version="1.0" encoding="UTF-8"?> <mod name="Buy premium command" version="1.0" author="The Forgotten Server" contact="otland.net" enabled="yes"> <config name="buypremium_config"><![CDATA[ config = { days = 90, maxDays = 360 } ]]></config> <talkaction words="!buypremium; !pacc" event="buffer"><![CDATA[ domodlib('buypremium_config') if(getPlayerPremiumDays(cid) > config.maxDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You can not buy more than " .. config.days + config.maxDays .. " days of Premium Account.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return end if(not doPlayerRemoveItem(cid, 10306, 1)) then doPlayerSendCancel(cid, "You don't have enough money, " .. config.days .. " days premium account costs " .. config.cost .. " gold coins.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) return end doPlayerAddPremiumDays(cid, config.days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought " .. config.days .. " days of premium account.") ]]></talkaction> </mod> Agora explicando, onde tinha if(not doPlayerRemoveMoney(cid, config.cost)) then trocamos por: if(not doPlayerRemoveItem(cid, ID DO ITEM, QUANTIDADE)) then se vc desejar pode tbm trocar aqui onde tem "gold coins" colocar o nome do objeto Se ajudei rep + ae (:1 ponto -
Tipo, vai em Map/Edit Towns, encontre ai a coordenada de Thais/Carlin, depois de ter as coordenadas aperte Ctrl+G e as coloqui ali, se você conseguir achar o mapa bom se não reinstale o Remere.1 ponto
-
[Patrimônio XTibia] Sua última Foto - Mapping
koalawopit reagiu a Gremiista por um tópico no fórum
@ DretiDemon Valeu, não tinha visto xD Meu primeiro DP ''''''''''''''''\/ não reparem a falta da mini parede aqui Aceito sugestões e críticas !1 ponto -
Cara, então eu vou fazer o Upload do meu Who Is Online e você substitui ai! Abraços. whoisonline.php1 ponto
-
[Arquivado]XXXXX
rogerespindula reagiu a iagopuma por um tópico no fórum
Ja estou jogando, o servidor é muito bom. pena que os membros do Xtibia são mongols e nunca visitam a seção geral1 ponto -
1 ponto
-
0 pontos