Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Player Pull Action Fiz esse script para concorrer no OMS 1 edicao. Descricao: Um jogador puxa um outro para sua frente (Possui restricoes: nao pode puxar na diagonal, nao pode puxar em paredes, players, itens nao "andaveis" ou pz). A chance do jogador conseguir puxar o outro eh configuravel. Quando um jogador puxa o outro, tem chance de vir junto um monstro (configuravel). Quando o item falha, tem uma chance de o jogador puxar um Bandit ao inves do player. Tem um intervalo (exhaustition) configuravel entre os usos Tem varios efeitos legais. Como instalar: crie um arquivo chamado ppaction.lua em data/actions/scripts e coloque esse codigo: Em data/actions/actions.xml coloque essa tag: <action itemid="8306" event="script" value="ppaction.lua" allowfaruse="1"/> Eu escolhi o item com id 8306 pq ele combina com o efeito que tem quando o jogador eh puxado. Como o efeito eh configuravel, vc pode mudar o item que vai ser usado. Mas lembre-se: o item deve ser de "Use with" e nao se pode tirar o allowfaruse="1" da tag. Espero que tenham gostado Jaja vou postar um video mostrando ele em acao. PS: Nao estou conseguindo por Spoiler, alguem sabe pq?
    3 pontos
  2. Pluzetti

    Insignias em Otclient

    -Muitas pessoas devem querer as insignias no Ot Client, eu estava procurando na net e achei esse sistema, fui logo colocar no meu Ot Client, porém deu erro e fui caçar o erro...está 100% funcional, bora começar? 1º Edições no server: Vá em: talkactions/scripts...crie um arquivo lua com o nome: talkGym.lua: e coloque isso dentro do arquivo: function onSay(cid, words, param) if gymbadges[param] then doPlayerSendCancel(cid, "#getBadges# "..param.." "..getPlayerItemCount(cid, gymbadges[param])) end return true end Em Xml: <talkaction words="#getGym#" event="script" value="talkGym.lua"/> PARA QUEM QUISER QUE ATUALIZE NA HORA QUE GANHAR O GYM npc/scripts/todos os npcs de gym: doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)])) Embaixo dessa linha if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end Ficando assim: local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local a = gymbadges[getCreatureName(this)] + 8 doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1) local b = getPlayerItemById(cid, true, a) if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)])) end No server é apenas isso, agora vamos em: Otclient>modules>game_skills: Skills Otui: Em baixo de tudo la em ultimo coloque SkillButton id: pokeGym size: 143 69 margin-top: 8 UIButton id: gymBrock size: 32 32 anchors.top: parent.top anchors.right: parent.right margin-right: 120 UIButton id: gymMisty anchors.top: gymBrock.top anchors.left: gymBrock.right margin-left: 3 UIButton id: gymSurge anchors.top: gymBrock.top anchors.left: gymMisty.right margin-left: 3 UIButton id: gymErika anchors.top: gymBrock.top anchors.left: gymSurge.right margin-left: 3 UIButton id: gymSabrina anchors.top: gymBrock.bottom anchors.left: gymBrock.left margin-top: 6 UIButton id: gymKoga anchors.top: parent.top anchors.top: gymBrock.bottom anchors.left: gymMisty.left margin-top: 6 UIButton id: gymBlaine anchors.top: parent.top anchors.top: gymBrock.bottom anchors.left: gymSurge.left margin-top: 6 UIButton id: gymKira anchors.top: parent.top anchors.top: gymBrock.bottom anchors.left: gymErika.left margin-top: 6 Skills.Lua: Inicio do Script: local gyms = { ["Brock0"] = "/images/game/pokemon/clan/brock", ---- terminados em 0 apagado, terminados em 1 aceso ["Brock1"] = "/images/game/pokemon/clan/brock", ["Misty0"] = "/images/game/pokemon/clan/misty", ["Misty1"] = "/images/game/pokemon/clan/misty", ["Surge0"] = "/images/game/pokemon/clan/surge", ["Surge1"] = "/images/game/pokemon/clan/surge", ["Erika0"] = "/images/game/pokemon/clan/erika", ["Erika1"] = "/images/game/pokemon/clan/erika", ["Sabrina0"] = "/images/game/pokemon/clan/sabrina", ["Sabrina1"] = "/images/game/pokemon/clan/sabrina", ["Koga0"] = "/images/game/pokemon/clan/koga", ["Koga1"] = "/images/game/pokemon/clan/koga", ["Blaine0"] = "/images/game/pokemon/clan/blaine", ["Blaine1"] = "/images/game/pokemon/clan/blaine", ["Kira0"] = "/images/game/pokemon/clan/kira", ["Kira1"] = "/images/game/pokemon/clan/kira", } Em baixo de: connect(g_game, { onGameStart = refresh, onGameEnd = offline }) Coloque: connect(g_game, 'onTextMessage', getGym) Ficando: connect(g_game, { onGameStart = refresh, onGameEnd = offline }) connect(g_game, 'onTextMessage', getGym) Em baixo de: g_keyboard.unbindKeyDown('Ctrl+S') skillsWindow:destroy() skillsButton:destroy() end Coloque: function autoUpdateTalks() local player = g_game.getLocalPlayer() if not player then return end ---------- g_game.talk("#getGym# Brock") g_game.talk("#getGym# Misty") g_game.talk("#getGym# Surge") g_game.talk("#getGym# Erika") g_game.talk("#getGym# Sabrina") g_game.talk("#getGym# Koga") g_game.talk("#getGym# Blaine") g_game.talk("#getGym# Kira") ---------- end function getGym(mode, text) local t = string.explode(text, " ") local badges = skillsWindow:recursiveGetChildById("gym"..t[2]) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if text:find("#getBadges#") then badges:setImageSource(gyms[t[2]..""..tonumber(t[3])]) end end end Ficando: g_keyboard.unbindKeyDown('Ctrl+S') skillsWindow:destroy() skillsButton:destroy() end function autoUpdateTalks() local player = g_game.getLocalPlayer() if not player then return end ---------- g_game.talk("#getGym# Brock") g_game.talk("#getGym# Misty") g_game.talk("#getGym# Surge") g_game.talk("#getGym# Erika") g_game.talk("#getGym# Sabrina") g_game.talk("#getGym# Koga") g_game.talk("#getGym# Blaine") g_game.talk("#getGym# Kira") ---------- end function getGym(mode, text) local t = string.explode(text, " ") local badges = skillsWindow:recursiveGetChildById("gym"..t[2]) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if text:find("#getBadges#") then badges:setImageSource(gyms[t[2]..""..tonumber(t[3])]) end end end Em baixo de: function refresh() local player = g_game.getLocalPlayer() if not player then return end Coloque: autoUpdateTalks() Ficando: function refresh() local player = g_game.getLocalPlayer() if not player then return end autoUpdateTalks() Espero que gostem. PS: O erro que dava no meu era que não aparecia a opção skills no OTC. Créditos: Noninhouh
    3 pontos
  3. Maroak

    Cursos gratuitos para WebDesign.

    Bom dia, XTibianos, é com imenso prazer que lhes apresento a Escola Virtual da Fundação Bradesco. Introdução: Venho aqui em nome dos iniciantes que estão afim de aprender ou até mesmo aprimorar suas habilidades em WebDesign. O que trago pra vocês são cursos online da Fundação Bradesco (Clique aqui), chamado de Escola Virtual. Esses cursos, apesar de serem gratuitos são sérios, dão certificados e tudo mais, portanto, só recomendo para aqueles que levarão a sério e estão empenhados a terem, em média, 30h de aula. É preciso determinação e comprometimento, mas garanto que o resultado será maravilhoso! Cursos disponíveis: A Escola Virtual oferece uma grande quantidade de cursos em diversas áreas diferentes mas as que quero trazer a vocês é referente a WebDesign (Clique nos nomes para mais informações): • WebDesign Inicial - Neste curso você aprenderá os diversos conceitos e guias para projetar páginas web. Dicas para o perfil da empresa, informação pessoal, assunto de interesse e publicação são alguns dos temas apresentados. • Introdução a JavaScript - Neste curso você vai aprender a criar páginas Web interativas utilizando o código JavaScript. • Ilustração e Design Gráfico para Web - Este curso é uma introdução às tecnologias e ferramentas associadas ao webdesign. - Programadores devem ter um conhecimento básico de arte e design, a fim de que estejam aptos a criar sites com um design mais atrativo. Da mesma forma, designers também devem conhecer um pouco de linguagem de programação, para entender uma discussão sobre o assunto, quando for necessário participar dela. Informações: Bom galera, tecnicamente é isso, se vocês quiserem mais informações a respeito da Fundação Bradesco e da Escola Virtual, clique nas imagens a baixo. Se vocês tiverem com qualquer dificuldade, basta perguntar que estarei disponível para ajudar. Créditos: • VictorWebMaster - (Me mostrou o curso) • Maroak - (Compartilha-lo) Victor Att, Maroak.
    2 pontos
  4. SmiX

    AutoTask System - SmiX

    Olá, hoje venho postar um sistema que bolei ontem e terminei hoje – ele se chama: Auto Task System. O que faz? O player pode escolher qualquer monstro, definido no script, para fazer a task. No final da mesma ele ganha Experiência, de acordo com o nível que está. Exemplo: Se o player escolher a task de rat, no nível 1, ele vai precisar matar 60, no nível 2, ele mata 120 e assim prossegue. COMANDOS: !autoTask – aparece a janela com todos os comandos !autoTask info – mostra todos os monstros na autoTask !autoTask i – mostra em qual autoTask você está registrado !autoTask sair/leave – sai da autoTask atual Vamos aos códigos: Primeiro vá em (data/talkactions/scripts) e crie um arquivo chamado “autoTask.lua” e cole isto dentro: Cole está tag em (data/talkactions/talkactions.XML): <talkaction words="!autoTask" event="script" value="autoTask.lua"/> Agora em (data/creaturescripts/scripts) crie um arquivo chamado “autoTask.lua” e cole isto dentro: Cole está tag em (data/creaturescript/creaturescripts.XML): <event type="kill" name="autoTask" script=" autoTask.lua "/> Agora em (data/creaturescripts/scripts/login.lua) cole isso, antes do ultimo “return true”: registerCreatureEvent(cid, " autoTask ") Agora em (data/lib) crie um arquivo chamado “autoTask.lua” e cole isto dentro: OBS: Todas as suas configurações são feitas na LIB. Para adicionar mais monstros basta copiar uma linha e mudar os valores. Espero que tenham gostado. Até mais.
    2 pontos
  5. Eae Galera , Blz? Hoje vim Postar um Servidor de War Proprio com Varios Sistemas proprias na VERSAO [2.0] ! Entao Vamos La! • [ VERSAO 2.0 ] • Melhor Servidor De War • Suport MYSQL • Servidor Estavel Sem bugs 100% • Distro Usado: Tfs 0.3.6 • Vocaçoes nao esta Balanceado Direito • 8 Mapas • 4 Mini Games [Modes] : CTF - DOTA - TDM - LEADER • Retirado todos os Monster do OT para ficar mais Leve [•] Sistemas [•] • IMAGENS DO SERVER • (•) Donwload Link (•) Bug do ChangeMap - Arrumado https://mega.co.nz/#!FV9yHaDQ!B8B_MiR0eR_4KX9scNPfWwuwo6hBqbmLsWbFbwz_Ykw [•] Creditos: Nextbr
    1 ponto
  6. Lordbaxx

    [Pokemon] PoKeMon Steel

    Iae galerinha firmezinha tudo na paz?? Bom Tava editando um servidor pro meu amigo fiz várias coisas acabou que ele n quis mais então perdeu né ;P. O Servidor Tem Várias Novidades e Edições feitas por mim.... Menu - Informações - Erros/Bugs - Prints - Download Informações -Nick System 100% -Outlands 100% [ Com Todos Pokemons de Outland 100% Balanceados ] -Evolutions 100% - Moves m1 / m12 99% [ Só falta os moves de alguns lendario como , Celebi, Raikou , Suicune, Entei.] -Pokeballs [ Normal Ball - Super Ball - Great Ball - Ultra Ball] -Fly, Surf, Ride, Dig, Cut e as demais Order's 100% -Control Mind 100% -Sem Lvl System - Mapa by PxG -Tv System 100% -Box's 1 , 2 , 3 , 4 - 100% -PokeDex 100% -Quests 100% - Boost System 100% -Pokes Iniciais 100% - Markt 100% -Sprites Todas que Consegui - Vocês Verão nos Print's -Novo Shiny Adicionado - Shiny Scizor 100% - Moves, Dex , Foto , Corpse , Catch 100% Erros Print's Dowload's Créditos Gostou??? É proibido pedir pontos de reputação (likes) em troca de qualquer atividade dentro do fórum. ALÉM DE PROIBIDO É FEIO! Conteúdo á esqc de colocar o print do novo shiny dragonite vejam no jogo...
    1 ponto
  7. ScythePhantom

    [Show Off] ScythePhantom

    Eis aqui "prints" dos meus mapas... Espero que gostem
    1 ponto
  8. Maroak

    Arton - Galeria (Imagens e Vídeos)

    ' Bom dia galera do XTibia, aqui postaremos algumas Imagens e Vídeos do Arton para vocês! Sintam-se a vontade para feedbacks. Curta-nos no Facebook! Imagens: Mage Outfit Remake + Addons. Um construtor e um bardo. Remake do Rato. Nós trabalhando inGame. Attributes + Look System Transparency System Video do Sistema de Chaos Machine Automatico Video do Sistema de Look e Attributes Aqui vai um video, bem antigozinho, porém da pra mostrar um pouco dos sistemas ja existentes no mundo de Arton. Em breve mais imagens.
    1 ponto
  9. Piabeta Kun

    Global Gesior By PiabetaMan01 2.0

    Global Gesior By PiabetaMan01 2.0 Bem Galera demorou mais saiu a ultima verção do meu Gesior! Novidades -Site 90% automatizado, ou seja, não precisa ficar mudando nome do seu servidor e caracteristicas no serverinfo por exemplo! - Pagina de criaturas mostrando os loots! - Pagina de montarias completa! - Achievements 1.0 (Em breve a versão mais completa do sistema)! - Pagina de houses automatica (Carrega todas houses do seu servidor e gera busca pelas cidades)! - Outifis em tempo real na pagina de characters! - Pagina de Vantagens Premium ou vip automatizada! - Top players 5 Adicionado! - Feature Article Adicionado! - Video Gallery (Não completo)! - Map view do Tibia ML (Mostra o mapa do tibia global em java)! - Painel Admin com atualizadores de criaturas, magias e outros sistemas (Alguns ainda não terminados)! - Pagina de Market Offers (mostra em tempo real todas as ofertas do market)! - Sistema de like facebook page! - e Layout de Manutenção 100% travado e igual do tibia global! Compatibilidade Servidores tfs 0.3.6, 0.3.7 e 0.4 (8x e 9x) Modificações - Correção no last login (estava dizendo que os chares que nunca logaram haviam logado em x data). - Correção no premium last days (account Management.php ( antes dava uma data errada e nao dizia qndo acabava a premium)). - Characters.php mais fiel ao global! (com achievement system by PiabetaMan01). - Retirado botões não funcionais do Shopadmin.php (sistema de Pacc somente). - Tibiarules.php mais bonita! 100% by PiabetaMan01 - Ranking Igual Tibia.com Sem (sem cores diferenciando quem está online e nao mostrando vocação do char) Download do Acc Maker + Database completa! http://www.4shared.c...I8224/site.html Créditos Gesior.pl VictorWebMaster Aleh Archez WalefXavier 1tyi PiabetaMan01 Em Breve ScreenShoots! OBS: não me responsabilizo por modificações no site, pois estará colocando em risco a proteção do mesmo e será por sua conta, e depois não venha vir aqui dizer que o site é falho!
    1 ponto
  10. Tony Araujo

    Arton - Ats

    Introdução Arton é um server pensado no RPG onde iram ter várias quest e sistemas inovadores. Ás classes principais são Mage/ Warrior / Elf. Os jogadores deveram encontrar seus próprios caminhos, traçar seu caminho á glória e honra. O server irá trazer grandes novidades no setor de sistemas, os itens do personagem influenciaram muito. História Fundado no dia 2 de Novembro de 2012, jogo baseado no RPG contemporâneo. Buscando um server perfeito, a equipe do Arton decidiu tomar a iniciativa e criar um serve onde os jogadores poderiam escrever a sua história. Alguns Videos #Teasers Criação de Asa -- Arton Sistema de Durabilidade + NPC Reparador -- Arton Sistema de Cooldown v1 (Update sem video Teaser Ainda) -- Arton [MAGIA] Gale -- Arton Mount System v1 (Update sem video Teaser Ainda) -- Arton New Look System -- Arton Bot System -- Arton Channels System -- Arton Cast System V0.5 (TV System) -- Arton Passive Skill (Automatic Spell) -- Arton Algumas Imagens Emoticon System: [MAGIA] Creature Push [MAGIA] Frozen Pet Estatua de Valkaria Remakes Graficos : Progamaçao Client Mais informaçoes no nosso facebook aqui
    1 ponto
  11. Olá de novo Xtibia ^^ Quanto tempo que eu não entro, depois que meu notebook não aguentou o meu server desisti de tudo e agora estou aqui, vendo se existe alguém com sonhos iguais aos meus: ter o maior poketibia de todos. E para isto nada mais nada menos que uma geração nova, não? e.e Agora que a geração 6 já tem seus dados eu imaginei que se eu fizesse sprites deles, nem se for de alguns, já chamaria a atenção um bucado, então, queria saber se vocês tem interesse em me chamar para trabalhar como spriter de Pokémon's, os sprites que tinha feito estão no pen drive e neste note não tem dat editor =/ mas se precisar eu baixo para mostrar a vocês... Mas eu fiz o sprite do Dedenne bem rápido para não postar sem imagem alguma. (A imagem está ampliada) Estou disposto a trabalhar todos os dias, mas também quero receber algo em troca, porque fazer sprites vocês sabem que não é fácil, ainda mais em grande quantidade.
    1 ponto
  12. kttallan

    [ Show Off ] Kttallan

    Ola bom dia meus amigos hoje é meu primeiro dia que me esforço pra mappear em tibia, eu comesei mappeando em derivados como poketibia , percebi um fato no poketibia sempre usa "Auto Bord" coisa que normalmente muita gente usa, Ai eu vendo uns servidores de tibia achei muito interesante a forma aonde se mappea ai pensei , Eu aprendendo a mappear no tibia poderei mappear no pokemon pois pra mudar o fato de todo pokemon ter um mapa mal feito é com auto bord, Quero mudar isso começando com alguns respawn que eu fiz. Respawn Nature Ghost Subterania Espero Dicas De Vocês Logo Logo Posto Mais, Aceito Criticas Construtivas De Preferencia Com Imagem Pra Expesificar Melhor .
    1 ponto
  13. GuhPk

    Como Vender Itens Por Talkactions

    Olá, eu sou GuhPk e hoje estou vindo aqui para ensinar vocês a vender itens por Talkactions... Estou aprendendo agora também sobre script's, então o unico modo que eu sei é criando 1 script para 1 item a venda... Caso eu descobra outra maneira de criar em 1 script só eu posto aqui!!! =] ========================================================================== Vai em data/talkactions/scripts copie 1 arquivo.lua, renomeie, apague tudo dentro e coloco isso: (editando da maneira que você quizer) function onSay(cid, words, param, channel) local dinheiro = 1000000 -- quanto vai custar o item local recompensa = 2548 -- qual item sera vendido if doPlayerRemoveMoney(cid, dinheiro) then doPlayerAddItem(cid, recompensa, 1) -- o 1 é o tanto de itens que vai ganhar doPlayerSendTextMessage(cid, 19, "Você acabou de receber x item") else doPlayerSendTextMessage(cid, 19, "Você não tem dinheiro suficiente para comprar o item") end return true end Depois, vá até data/talkactions/talkactions.xml e adicione esta seguinte tag: (editando da maneira que você quizer) <talkaction log="yes" words="!comando-para-comprar-o-item" event="script" value="nome-do-arquivo.lua"> Observação: Caso você queira vender com mais de 1 comando você faria os comandos separados sempre por " ; ", veja no exemplo a seguir: <talkaction log="yes" words="!comando1;!comando2;!comando3;!comando4;!comando5" event="script" value="nome-do-arquivo.lua"> ========================================================================== Agora eu irei postar aqui uns print's dos script's!!! ;] ========================================================================== Agora eu irei postar aqui uns print's do poketibia!!! ;] Ajudei? REP +++!!!
    1 ponto
  14. Pluzetti

    /Name

    Galera estou com esse script, mas eu ja tentei mudar para ele remover um item mas nao consigo, poderiam me ajudar? Item ID= 2145
    1 ponto
  15. Maenilse

    Removido

    vlw manolo, eu resolvi postar esse script pois, a area nao tem muito movimento, e nao estao trazendo muito conteudo para ela, ou nao estao podendo, entao eu vou tentar trazer o maximo de conteudos possivel, pra movimentar a area, e tbm pra ajudar os ekz que precisam.
    1 ponto
  16. Maenilse

    Removido

    mt obrigado por comentar, e sim é um script simples sim, eu criei ele pra testar como eu estou com, os.time e os.data. entao resolvi posta-lo aqui no xtibia.
    1 ponto
  17. vc ta compilando com Stian's Repack Dev-Cpp se tiver aperta ALT + P e vai na aba "Parameters" substitui tudo o que esta nele por esse; -D__USE_MYSQL__ -D__USE_SQLITE__ -D__ENABLE_SERVER_DIAGNOSTIC__ -O2 -D__WAR_SYSTEM__
    1 ponto
  18. Para desligar o Anti-MC kill vai no creaturescripts.xml Apague essa Linha: <event type="Kill" name="reward" event="script" value="ssa.lua"/> Para mudar De mapa vai no Globalevents.xml e altera essa linha <globalevent name="mudarmapa" interval="1800" event="script" value="mudarmapa.lua"/> obs: O change Map esta configurado 30 Minutos [ interval="1800" ] é so mudar A configuraçao do Exp é no Arquivo creaturescripts/scripts/ctfkill.lua olha dentro do arquivo vai ta assim > local expRate = 3 so aumenta a Rate ou se preferir exp Normal de War é so deletar a linha desse Script : <event type="death" name="upfrag" event="script" value="ctfkill.lua"/> e aumenta a rate Normal do Server!
    1 ponto
  19. SmiX

    AutoTask System - SmiX

    FlamesAdmin Tenta copiar a lib outra vez, pois tinha esquecido uma ",". Adriano Swatt Na verdade é por falta de uma ",".
    1 ponto
  20. Maroak

    Cursos gratuitos para WebDesign.

    Que isso galera, o curso é gratuito, tem mais que ser explorado e divulgado mesmo. Espero que todos façam bom proveito.
    1 ponto
  21. gonorreiaswat

    Ak-Gold

    Galera, demorei um pouco pois estava ocupado. O script não está 100% limpo, mas como estou iniciando em scripts, foi o que consegui fazer de forma funcional. Sem falar que do jeito que estavam seus scripts, mesmo se estivesse sem alvo, gastava a munição ao clicar tentar atirar. Ainda há alguns bugs no scripts, que já vieram de vocês, que é o tiro atingir monstros mesmo atrás de paredes e de que não precisa clicar exatamente no monstro para atirar nele quando o mesmo já está selecionado como alvo. Mas como não sei se já sabiam disso, a minha parte de mudar munição por talkactions e só poder atirar ela se estiver ativo, eu consegui fazer (y). Sem mais delongas, abaixo seguem os scripts... Em talkactions.xml adicione a tag abaixo: <talkaction words="!ak" event="script" value="ak_ammo.lua"/> Agora crie um arquivo chamado "ak_ammo.lua" em scripts e adicione o código abaixo: local storage = 30012 function onSay(cid, words, param) if getPlayerStorageValue(cid, storage) == 1 then setPlayerStorageValue(cid, storage, 2) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Agora sua Ak-47 pode atirar chumbos.") else setPlayerStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Agora sua Ak-47 pode atirar bullets.") end return true end Pronto, em talkactions já finalizamos. Agora vamos em Spells, adicione esta tag em seu spells.xml: <rune name="AK-47" id="2088" allowfaruse="1" charges="1" lvl="1" maglv="0" exhaustion="1000" blocktype="solid" script="ak_ammo.lua"/> E em "ak_ammo.lua" da pasta scripts de spells, adicione o script abaixo: Pronto, agora é só abrir o server e testá-la. Para configurar é simples, pois deixei todas configurações no início... mas caso haja necessidade, clique no spoiler abaixo e veja como fazer: Eu testei várias e várias vezes com cautela e não houve erros, pois corrigi todos que encontrei. Qualquer erro ou dúvida, favor postar para que possamos solucionar juntos. Boa sorte.
    1 ponto
  22. ArticFox

    Preciso de um Vocations.xml

    Área errada reportado, correto seria Scripts
    1 ponto
  23. Brother, basta que baixe um server global 9.60+ e poderá utilizá-lo.
    1 ponto
  24. ScythePhantom

    ID das Profissões

    nome: Sorcerer Id: 1 nome: Druid Id: 2 nome: Paladin Id: 3 nome: Knight id: 4 nome: Master Sorcerer Id: 5 nome: Elder Druid Id: 6 nome: Royal Paladin Id: 7 nome: Elite Knight Id: 8
    1 ponto
  25. Omega

    Tile de Aviso

    Fiz aqui, mas não sei se vai aparecer no chatbox. Na verdade, acho que todos os tipos aparecem, mas você pode tentar mudar assim: doPlayerSendTextMessage(cid, 20, msg) Trocando o 20 de cima por qualquer um desses abaixo: Script movements/scripts/msgtile.lua TAG movements.xml: <movevent type="StepIn" actionid="4339" script="msgtile.lua"/> Aí é só colocar esse actionid no piso.
    1 ponto
  26. Em configuration.lua na pasta lib, vai ter uma tabela chamada movestable. Nela, você procura por Acarnine e Shiny Arcanine, e, na linha do flamethrower, deve estar assim: move4 = {name = "Flamethrower", level = 90, cd = 20, dist = 1, target = 0, f = 0, t = "fire"}, *não exatamente assim, mas mais ou menos* É só editar onde está "f = 0", editando 0 para o número desejado. A força normal do flamethrower é 80, nos outros pokémons.
    1 ponto
  27. Vou ti dar um exemplo de um Short que da ml, ai você faz com seus items e vê se da certo .. Em items.xml : </item> <item id="7464" article="a" name="VIP Shorts"> <attribute key="weight" value="150" /> <attribute key="skillDist" value="4" /> <attribute key="skillAxe" value="4" /> <attribute key="skillsword" value="4" /> <attribute key="skillclub" value="4" /> <attribute key="skillfist" value="4" /> <attribute key="magiclevelpoints" value="4" /> <attribute key="description" value="Esse short FAZ a diferenca (+4 de tds os skills)" /> <attribute key="slotType" value="legs" /> </item> <attribute key="magiclevelpoints" value="4" /> <-- Aqui voce muda quantos ela vai dar de ml. Ai adicione essa tag em movements.xml : <movevent type="Equip" itemid="7464" slot="legs" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="7464" slot="legs" event="function" value="onDeEquipItem"/> <!-- VIP SHORTS --> Lembrando que esse foi só um exemplo..Ai você altera os Id's e Slots!
    1 ponto
  28. viniciusdrika

    Viniciusdrika Show Off .

    Sword Banhada : Uma espada, passa de geraçao por geraçao, sendo renovada em ouro e seu coro a cada geraçao, ficando melhor mais brilhante e cada vez mais resisente e potente . Ela foi causadora de varias mortes em sua existencia é uma espada "lendaria" dos Reis .
    1 ponto
  29. Zaruss

    ITENS EDITADOS NÃO FUNCIONA

    Em movements.xml: <movevent type="DeEquip" itemid="IDDOITEM" slot="head" event="function" value="onDeEquipItem"/> <movevent type="Equip" itemid="IDDOITEM" slot="head" event="function" value="onEquipItem"/>
    1 ponto
  30. faltou usar o 'return' nas mensagens function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { s = 11128, -- storage level = 50, -- level minimo time = 60, -- tempo em minutos para voltar a abrir a chest item = {{2160, 1},{2152, 25},{2148, 50} } -- items sortiados(pode adicionar mais) } if getPlayerLevel(cid) < config.level then return doPlayerSendCancel(cid, "Você deve ter pelo menos level ".. config.level .." para abrir a Chest.") elseif getPlayerStorageValue(cid, config.s) >= os.time() then local minutos = math.floor((getPlayerStorageValue(cid, config.s) - os.time())/(60)) return doPlayerSendCancel(cid, "Você deve esperar ".. (minutos < 0 and 0 or minutos) .." minutos para voltar a abrir o Bau.") end local r = math.random(1, #config.item) doPlayerAddItem(cid, config.item[r][1], config.item[r][2]) setPlayerStorageValue(cid, config.s, os.time()+config.time*60) return true end
    1 ponto
  31. espero todos vocês jogando na alpha test ^.^ talvez será amanhã
    1 ponto
  32. Utilize este donate.php donate.php
    1 ponto
  33. caotic

    Sistema de TV Em Lua

    Ola galera xtibiaaana!. Então meus amigos resolvi fazer um TV system aquele famoso sistema que o player cria uma channel(canal) e outros players poderão ver ele batalhando. Estou retirando o máximo de bugs possíveis se você viu um bug não deixe de falar. Vamos as explicações: Primeiro o player cria uma channel usando o comando /tv(nome da channel) depois outro player ve sua channel na lista usando o comando /channel(list) logo ele quer entrar em sua channel então ele fala /channel(nome da channel). Logo apos ele falar ele entra e começa a assistir mais depois ele quer sair então ele "desloga" e ele volta ao tempo. Vamos a instalação. Execute este comandos na sua database: CREATE TABLE "tv" ( "name" Text NOT NULL, "player" INT NOT NULL, "conec" INT NOT NULL ) Vá em lib e crie um arquivo lua chamado de tv e coloque isto: function createTv(cid, name) db.executeQuery("INSERT INTO `tv` (`name`, `player`, `conec`, `watch`) VALUES ('" .. name .. "', " .. getPlayerGUID(cid) .. ", 1, 0);") setPlayerStorageValue(cid, 23423, 1) doPlayerSave(cid) end function isTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getID() ~= -1 and true or false end function getChannelPlayer(cid) return getPlayerStorageValue(cid, 23423) == 1 and true or getPlayerStorageValue(cid, 23423) == -1 and false end function getWatchingNameChannel(cid) return getPlayerStorageValue(cid, 44670) end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local conditi = createConditionObject(CONDITION_MUTED) setConditionParam(conditi, CONDITION_PARAM_TICKS, 10000*10000) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) function enterInTv(cid, name) local function comparePos(pos, post) local pos = getThingPos(pos) local post = getThingPos(post) return pos.x == pos.x or pos.y == pos.y or pos.z == pos.z and false or true end local function fallowPlayer(cid, player) if not isPlayer(cid) or getPlayerStorageValue(cid, 44670) == -1 then return true end if comparePos(cid, player) then doTeleportThing(cid, getThingPos(player)) doAddCondition(cid, condition) doAddCondition(cid, conditi) setCombatCondition(combat, condition) end return addEvent(fallowPlayer, 1800, cid, player) and doPlayerSave(cid) end setPlayerStorageValue(cid, 44670, name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") local guid = tv:getDataInt("player") local player = getPlayerByNameWildcard(getPlayerNameByGUID(guid)) return fallowPlayer(cid, player) end function exitChannel(cid) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_MUTED) doRemoveCondition(cid, COMBAT_PARAM_AGGRESSIVE) doTeleportThing(cid, getPlayerMasterPos(cid)) setPlayerStorageValue(cid, 44670, -1) doPlayerSave(cid) end function doShowListChannel(cid) local tv = db.getResult("SELECT * FROM `tv` WHERE `player` ORDER BY `conec`") str = "Channel Disponiveis:\n\n" if tv:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha channel disponiveis") return true end while true do local conect = tv:getDataInt("conec") local player = tv:getDataInt("player") local channel = tv:getDataString("name") local players = getPlayerNameByGUID(player) str = str .. channel .. " -("..players..")\n\n" if not tv:next() then doShowTextDialog(cid, 1397, str) break end end end function getConectTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getDataInt("conec") == 1 and true or tv:getDataInt("conec") == 0 and false end function setStatusTv(cid, on) if on == "on" then return db.executeQuery("UPDATE `tv` SET `conec` = 1 WHERE `player` = "..getPlayerGUID(cid)) end if on == "off" or on ~= "on" then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end end end Vá em talkactions crie um arquivo Lua chamado de tv coloque isto: function onSay(cid, words, param, channel) local item = 1949 ----Item que você precisa local bloqued = {"sair", "list", "on", "off"} ----- Nomes de channel que não pode ser usado if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o nome da channel que você quer") and false end if param == "on" or param == "off" then return setStatusTv(cid, param) end for i = 1, #bloqued do str = "Nomes não podem ser ultlizados" str = ""..str.."\n"..bloqued[i].."" if param == bloqued[i] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este nome não pode ser ultilizado porque e um comando do sistema") and false end end if #param <= 4 and #param >= 10 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O nome da sua channel deve ser maior que 4 caracteres e menor que 10 caracters") and false end if getPlayerItemCount(cid, item) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de um "..getItemNameById(item).."") and false end if getChannelPlayer(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja tem uma channel") and false end createTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns sua channel "..param.." foi criada") return true end Vá em talkactions e crie um arquivo lua chamado de channel e coloque isto: function onSay(cid, words, param, channel) if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga /channel(nome da channel para se conectar)\n/channel(list) Lista das channels\n/channel(sair para sair da channel)") and false end if param ~= "list" and param ~= "sair" then if not isTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe esta channel") and false end if not (getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você so pode entrar em uma channel quando estiver em pz") return true end if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode entrar uma tv porque você ja tem uma") return true end if getWatchingNameChannel(cid) ~= -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta conectado a uma channel") return true end if not getConectTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esta channel esta desativada") and false end enterInTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta assitindo a channel "..param.."") return true end if param == "list" then return doShowListChannel(cid) end if param == "sair" then if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode sair de sua propria tv use o comando /tv off para desativar sua channel") return true end if getWatchingNameChannel(cid) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não esta conectado a uma channel") return true end exitChannel(cid) return true end return true end Vá em talkactions.xml e coloque estas tags: Vá em creaturescripts e crie um arquivo lua chamado tv e coloque isto: function onLogout(cid) if getChannelPlayer(cid) then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "Sua channel foi desativado ao você logar religue dizendo /tv on") return true end if getWatchingNameChannel(cid) ~= -1 then exitChannel(cid) return true end return true end function onAttack(cid, target) if getWatchingNameChannel(cid) ~= 1 then return false end return true end Registre o evento colocando isto antes do ultimo return true: Coloque esta tags em creaturescripts.xml: Configurações Midia: Ajude o tv system dizendo ideias e bugs para o sistema. Estarei optimizando o sistema e retirandos bugs.
    1 ponto
  34. S3TZ3N

    Digitibia Server

    Dahora, tem até ppkebola ali no meio kkkk vai que aparece um pikachu por ai... nunca se sabe!
    1 ponto
  35. MatheusGlad

    [Systems] Pokemon Systems

    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
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...