Jump to content

Search the Community

Showing results for tags 'script'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Recursos
    • Suporte
    • Pedidos
    • Downloads
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Categories

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

Found 14.538 results

  1. Player loga e logo em seguida desloga login.lua 050-function.lua
  2. Fala galera do xtibia, Hoje estou trazendo um servidor que estava editando para meu amigo Por no Vps dele, Mais ele Disse que Não Queria mais então resolvi Postar ele Para download AQ no xTibia.. alguns pensaram que é meu servidor mais não é, só usei como base e adicionei varios outros systemas como vocês veram nas Printscrens .. ex:: Held items com Tier, novas Remakes para os Pokemons, Novas quests e etc.. • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PokéxMaster: http://www.4shared.com/rar/Mti3uzUoce/PokxMaster.html? OtClient: http://www.4shared.com/rar/XmIpCJKWba/OtClient_Master.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) Gristony (Pelo Module do Shop no OTC ) Xtibia (por alguns scripts) antes que alguém venha Fala merda no Tópico, dizendo que o servidor é somente uma copia do Meu, vou logo avisando a base sim realmente foi a minha antiga v1 mais tem Varios systemas adicionados e Varias outra coisas como sistema de Torneio só faltando configurar os horarios..
  3. Tibia Server Mapa Global Eae pessoal, venho trazer a vocês um servidor de Tibia com mapa igualzissimo ao do Tibia Original. Com Rookgard e muito mais, claro não fui eu quem fiz este servidor magnifico. Mais venho traze-lo para vocês fazerem dele sua base e ter um servidor muito melhor de Tibia. Como nós sabemos nenhum servidor vem sem bugs, então é issu vo postar algumas imagems e espero que gostem. Muitas coisas ainda vocês terão de configurar como onde o player ínicial irá nascer e etc.. Este servidor estava sendo utilizado com site então você terá de fazer suas auterações. Cidades Newbie Island (Rookgaard) + Island of Destiny Ankrahmun Ab'Dendriel Carlin Darashia Edron Yalahar Kazordoon Liberty Bay Port Hope Svargrond Thais Venore Farmine Zao Cormaya Algumas imagems: Como eu ja disse este servidor não foi eu em que fui, mais venho pelo o menos trazer a vocês. Créditos Dener Diegoli Team e ao Membro Shekys do xtibia por contribuições enorme no projeto. Kurobisu (Por Trazer aqui pro Xtibia) Downloads OTServer Completo: >>( Kurobisu Download Otserv )<< Download Client Normal de Tibia 8.6: >>( Kurobisu Download Client )<< Download do SqliteStudio para quem for usar via account manager: >>(Kurobisu Download SqliteStudio)<< O 4Shared ja tem seu proprio ( Scanner ) então pelo visto não precisa. Estou também abrindo este tópico para caso alguém tenha alguma dúvida ou ache algum bug possa reporta-lo para mim, e eu concerteza tentarei ajuda-lo. Então como muitos sabem o tópico deve ter regras, e aqui não será diferente. Regras Poste suas dúvida aqui caso tenha alguma, caso acho algum bug poste aqui também. Tentarei ajudar o maximo possivel. Gosto do tópico? Lhe ajudei?Rep+ Não ajudei? Tentarei melhorar
  4. Informações Suport: (MYSQL E SQL) Base: (PGALAXY) - GabrielTXU Executavel (Distro): TFS 0.3.6 Versao: 8.54 + IP Changer Mapa Proprio (120 Hunts + 5 Quests) Servidor Estavel Uptime de (580 hrs) Testado Player EXP: 10x Pokemon EXP: 15x Catch System Inovado (Rate Por Skill "Catching" + Rate normal) Catch Esta Balanceado Catch Channel System (Veja todos os Catch do Servidor Pelo Canal Catch-Channel) Bonus Level System (Marca na Ball a quantia de Level que voce Upou Nesse Pokemon, Assim mudando o Comercio de Pokemons) Pokemon Level Max : 300 Pokemon Boost Max FREE: +50 Pokemon Boost Max VIP: +80 + (Bonus Boost) Novo Balanceamentos dos Pokemons Goback Surf Fly 6 Pokemons (na bag) Dive Order Pokedex Respaw de Shiny Aleatorio (1%) Configuraçoes 100% do PokeDashAdvanced na Lib/Configuration.lua e etc... Passive (Alguns Shinys nao apareçem o Passivo) Torneio Win e Lose Score PVP e PVP Team Teleport Potions e Revives Apricorns e Vitaminas Nuse Joy Cassino Invasao automatica (09:00 as 21:00) Npcs (Aura,mark,Pokemon Collector,lock ball e etc.....) Aura Task System (NPC MEGA TASK) 7 BALL Clan Look Score Rare Candy Evoluçao (Automatica e Por Stones) 90% Automatico e 10 % Stones Fome e Sentimento 1-2 Geraçao Full 3-6 Geraçao Imcompleta Shinys (1-2 Geraçao Full) Shinys (3-6 Geraçao Imcompleta) Erros [14/12/2014 18:12:37] [Error - CreatureScript Interface] [14/12/2014 18:12:37] data/creaturescripts/scripts/atk.lua:onAttack [14/12/2014 18:12:37] Description: [14/12/2014 18:12:37] (luaDoMonsterSetTarget) Monster not found [Esse Erro acontece na arena pvp e nao sei como arrumar, se tirar esse script buga o ataque dos pokemons "Wild" eles começam a atacar o jogador ao inves de Seu Pokemon] Alguns Erros vão surgir durante o Jogo: Erro no Exp.lua Erro Na hora de Evoluir (Automatico) erro de MaxHealth, algo assim Bugs gerais Os Pokemons Uniques Fazem Crashar o Servidor (Se voce pegar uma Pokeball Unique e jogar no Teleport, o Servidor Crasha) Os Pokemon Lock Fazem Crashar o Servidor (Se voce pegar uma Pokeball Lock e jogar no Teleport, o Servidor Crashar) Pode ser que + Alguns Atributos do PDA fazem Crashar o Servidor e estamos a Procura Disso Retirem o NPC SR.SPLIT (Segundo Andar do CP) Prints Downloads Server + Client Sources Utilitário: Map Padventures S/Respawns Scans Server + Client Sources Créditos Aberos Gristony GabrielTXU NextBR Valaquinhas Sukito TFS Team
  5. Olá galera do :XTibia_smile: , estou com este tutorial para iniciantes! Adicionando novos monstros em seu OT! Isto é bastante simples, e muitas pessoas quando começa a mecher com OTserver's não sabe. (Eu não sabia ) Vá na seção de Scripting - Npcs e Monsters! (CLIQUE AQUI) Encontre um monstro que você goste ou crie um você mesmo! (CLIQUE AQUI E SAIBA TUDO SOBRE NPCS, MONSTER E SPELLS) Sim, você pegou ou criou um monstro... Sim, você pegou ou criou um monstro...Só que na hora de sumona-lo deu um erro, e o monstro não apareceu! Simples, na pasta <data/monster> tem um arquivo monsters, e nele precisa ser adicionado o novo monstro de seu OT! Para adiciona-lo adicione esta linha: monster name="Amazon" (Basta colocar o nome do novo monstro!) file="Amazon.xml" (Coloque o nome do arquivo XML, arquivo do monstro) Espero que gostem deste meu tutorial! Comentem!!!
  6. Gente, gostaria se puderem claro, de um script que ao matar um player tenha x(%)[Exemplo: 30% de ganhar o item] de chance de cair um determinado item. Poréms: Players com mesmo ip não ganharia este item (Anti mc) E intervalo de kill ao player para ganhar o item ( Amigos não ficarem se matando toda hora para tentar conseguir o item) ou seja um intervalo de +- 10 min entre cada kill nesse player para poder ganhar o item. To com 1 script aqui do VODKART, que ao matar um player o item aparece no inventário, porém ta sem o intervalo citado acima. SCRIPT Obrigado gente, não sei se é possível esse script, já que ao meu modo de ver teria que adicionar um storage para cada player... não sei..
  7. Mods: NPC Como configurar?
  8. queria um rank de reset.. eu achei um aqui já mais não funciona.. no meu ot.. meu ot é um alissow 8.50 queria um sistema de rank de reset que não sejam iguais aos outros que não passa do 9° no rank.. tipo tem ums que o rank só vai até o 9° reset pLeASE
  9. Nome: Item Treiner Autor: Shoguns Tipo: Moveevents Oque ele faz? Quando o player equipar tal item, esse item vai servir como um treiner e ficara upando o skill de acordo com o item que tiver no seu Sloot Esquerdo e direito, que no caso é aonde se colocam a arma de atk e o shield Oque mas tem? O Player não poderá se mover enquanto estiver equipado com o item e ficara aparecendo uma mensagem "Treinando". Va em data/movements/scripts e crie um arquivo com nome de itemtreiner.lua e coloque isso lá dentro Agora em movements.lua cole essas 2 tags: <movevent type="Equip" itemid="1234" slot="feet" event="script" value="itemtreiner.lua"/> <movevent type="DeEquip" itemid="1234" slot="feet" event="script" value="itemtreiner.lua"/> Como configurar: No itemtreiner.lua local porcent = 4 Porcentagem que ira dar de skill local tempo = 3 * 1000 Intervalos para subir o skill local lock = 0 Se quiser colocar algo tipo um exausted antes de comecar nas tags: 1234 Id do item que ao equipar vai upar skill feet Tipo do item (usei feet = boots ) como um exemplo Alguma dúvida deixe um comentário que irei dar suporte.
  10. Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês Nome: Map IconDescrição: Adiciona um icone no minimapAutor: Eduardo Vicente (Banana Fight)Website: www.xtibia.com Versão 1.0 Features: Criar Icones no minimap Instalação dentro de modules/game_minimap/minimap.lua embaixo de : function toggle()if minimapButton:isOn() thenminimapWindow:close()minimapButton:setOn(false)elseminimapWindow:open()minimapButton:setOn(true)endend Você adiciona a função : function setMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:addFlag(pos, icon, description)endfunction removeMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:removeFlag(pos, icon, description)end Como usar setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem. Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira : setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave") Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png. Obs 2: Sua imagem tem que ter o fundo transparente Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo. Exemplo de uso : arquivo : minimap.lua function init()minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)minimapButton:setOn(true)minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())minimapWindow:setContentMinimumHeight(64)minimapWidget = minimapWindow:recursiveGetChildById('minimap')local gameRootPanel = modules.game_interface.getRootPanel()g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)g_keyboard.bindKeyDown('Ctrl+M', toggle)g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)minimapWindow:setup()connect(g_game, {onGameStart = online,onGameEnd = offline,})connect(LocalPlayer, {onPositionChange = updateCameraPosition})if g_game.isOnline() thenonline()setMonsterCave(32239, 32240, 7, "dragon", "hihi")removeMonsterCave(32239, 32240, 7, "dragon", "hihi")endend
  11. Alguém me ajuda pelo amor de Deus É o executável do pokemon master x Vou explicar Você tá lá jogando de boa E do nada o jogo crasha e aparece isso
  12. Bom Galerinha , a pouco tempo postei um mapa aqui e vendo as criticas tentei melhora-lo, no meu ponto de vista até que melhorou... Screen Shoot's: TEMPLO: http://img41.imagesh...144/templok.png TELEPORTS: http://img69.imagesh...3/teleports.png EVENTOS: http://img402.images...65/eventosn.png ARENA: http://img51.imagesh...3416/arenaf.png NÃO COLOQUEI O RESTO PORQUE O RME TA BUGANDO AQUI.. Credits: 80% BAIAK TECH (desenvolvidor do mapa) 20% ANDSHOW (retirar bugs, edit map, ant-nuker, scripts) GOSTOU? REP + ACC GOD: god / god DOWNLOADS: http://depositfiles....files/0o1kwa2p9 http://www.4shared.com/rar/XEKEQrqg/860_Baiak_TECH_Edit_By_ANDSHOW.html? SCAN: http://virusscan.jot...aacd909007e2f5d
  13. Bom, vamos começar vá em weapons/scripts copie e cole qualquer arquivo, renomeie para "sd" apague tudo que tem dentro e coloque isto local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.4, -50, -1.9, 0) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end agora vá em weapons.Xml e coloque esse tag <wand id="7414" lvl="7" range="6" mana="2" enabled="1" script="sd.lua"><vocation name="Knight"/><vocation name="Elite Knight"/><vocation name="Sorcerer"/><vocation name="Master Sorcerer"/></wand> agora vá em intems.Xml aperte Ctrl+F e ponha 7414 e procure! coloque o nome de Wand of Death e em baixo disso coloque esse seguinte tag <attribute key="description" value="Lendaria Wand of Death"/> <attribute key="weight" value="3050"/> <attribute key="weaponType" value="wand"/> <attribute key="range" value="3"/> Acho q é só!! Créditos a mim!!! Obrigado, gutb Qlqr coisa me avisem d algum BUG! COMENTEM, PLZ
  14. Killua Task Sytem Versões testadas: tfs 0.3.6 e 0.4 Eu sei que já existem vários task systems, inclusive aqui no fórum, mas do jeitinho que eu queria, não consegui achar nenhum. Por isso, resolvi fazer um eu mesmo. O que ele tem de diferente? • É totalmente simplificado. • Não precisa "pegar" as tasks. Elas já são todas automáticas, ou seja, os monstros são contados desde sempre. • É tudo configurado em uma única tabela, de forma muito simples. • Tem um NPC que somente entra as recompensas. • Seu progresso pode ser visto pelo comando !task Atualização do sistema: Refiz os códigos pois existia uma possibilidade de bug. Otimizei eles, deixando o código mais limpo, eficiente e rápido. Aconselho a todos que usam o sistema que instalem a nova versão. Instalação: Tags: Em talkacions.xml adicione: <talkaction log="yes" words="!task" event="script" value="amoebaTask.lua"/> Em creaturescripts.xml adicione: <event type="kill" name="AmoebaTask" event="script" value="amoebaTaskCreature.lua"/> Em data/creaturescritps/scripts/login.lua adicione: registerCreatureEvent(cid, "AmoebaTask") Scripts: Lib: Crie amoebaTask.lua em data/lib e coloque Talkaction: Crie amoebaTask.lua em data/talkactions/scripts e coloque Creaturescripts: Crie amoebaTaskCreature.lua em data/creaturescripts/scripts e coloque NPC: Em data/npc crie Task Man.xml e coloque Configuração: A configuração é feita unicamente na tabela da lib: amoebaTask = { ["Jabuti"] = {creatures = {"Jabuti","Jabuti Hatchling"}, storage = 2312112, storagecount = 890120, count = 300, exp = 0, money = 0, premios = {{6527, 10},{10133, 1}}}, ["Thenebreus"] = {creatures = {"Thenebreus"}, storage = 2312113, storagecount = 890121, count = 250, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}}, ["Demon"] = {creatures = {"Demon"}, storage = 2312114, storagecount = 890122, count = 5, exp = 0, money = 0, premios = {{6527, 4},{10134, 1}}} } Em [""] vc coloca o nome que vai aparecer no !task e que também será usado para pega a recompensa no NPC. Em creatures vc coloca todos os monstros que vão contabilizar para tal task. Em storage vc coloca o storage de task completa, que garante que o premio só será pego uma vez. Esse storage nunca pode ser repetido! Em storagecount vc coloca o storage de contagem de monstros. Esse também nunca pode ser repetido! Em count vc coloca o número de monstros necessários pra completar a task. Em exp vc coloca a exp que ganha completando. Em money vc coloca o dinheiro que ganha completando. Em premios vc coloca os itens que ganham completando, seguido de sua quantidade. Ex: {6527, 4} o player vai receber 4 itens de id 6527. Espero que façam bom uso do sistema. Vou ficar feliz em atender qualquer tipo de dúvida e também aceito sugestões. Caso queira que as tasks possam ser feitas repetidas vezes, me peça que eu ponho aqui. Pois basta mudar duas linhas.
  15. Esse é um pacote com actions úteis para se usar nos servidores e, a menos que esteja indicado o contrário, são de minha autoria. [Testado em servidor 8.6] Para colocar essas actions no jogo, você deve colocar uma TAG no arquivo actions.xml do seu servidor, com um actionid e o nome do arquivo .lua (contendo o script) na pasta de scripts. Então, você deve colocar um item com aquele actionid no mapa. [ACTION #1] Baús de quests completos Descrição: Com essa action, você pode colocar vários baús simples de quest em apenas um script de forma rápida e organizada. Basta apenas registrar diferentes actionIDs no actions.xml, colocar eles em cada baú e depois inserir no script, conforme o padrão. [ACTION #2] Summon simples Descrição: Dessa forma você pode criar um pequeno sistema de summon com um monstro. No primeiro uso, ele invoca o monstro à comando do jogador, gastando a mana definida. Então, caso outro uso seja realizado até o exhaust terminar, o monstro será removido. Quando o jogador usar novamente, se o monstro invocado existir, ele será removido e outro monstro será invocado, reiniciando o ciclo. OBS.: os ataques em área do summon ainda vão tirar vida do jogador. Para uma correção, vide final do tópico. [ACTION #3] Fome Zero Descrição: Script simples: você registra o actionID dele em algum item e então o jogador ganhará uma comida sorteada entre as que constam em foodID (deve ser configurado) Pode ser usado à vontade pelo jogador para conseguir comida. [ACTION #4] Alavanca do Cassino Descrição: Um script de alavanca: nesse você define as possíveis recompensas, o quanto de dinheiro a pessoa vai precisar e as chances! [ACTION #5] Fantasias de Monstros Descrição: Quando o jogador clicar em um item, será sorteada uma outfit entre as definidas. [ACTION #6] Passagem Secreta Descrição: Ao puxar a alavanca, o jogador removerá uma parede do lugar, abrindo uma passagem secreta. Ela se fechará em alguns segundos. [ACTION #7] Baús de vocações Descrição: Bem óbvio pelo nome, essa action dá prêmios diferentes para cada vocação [ACTION #8] SUSTO! Descrição: Essa action super engraçada fará o seguinte: o jogador se transformará num cadáver e aparecerá a mensagem You were downgraded from level... (igual a msg do tibia mesmo). Depois de TRÊS segundos, o jogador voltará a sua outfit normal e receberá a mensagem Gotcha! (te peguei em inglês) [ACTION #9] Painel informativo Descrição: Com essa action você pode fazer aparecer uma mensagem em popup para o jogador contendo as informações que você quiser. [ACTION #10] Armários realistas! Autor: Avronex Descrição: Colocando esse script em armários, os jogadores irão receber a janela de trocar outfit quando clicarem! [ACTION #11] Fogos de Artifício Descrição: Um novo script para fogos de artifício, com efeitos, número de explosões e tempo entre as explosões configuráveis. E aqui a lista termina por enquanto. Me avise se você achar/tiver uma action útil que possa entrar para a lista. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Correção para que o summon não dê dano em quem o invocou:
  16. Oneshot

    Dual Wield

    Tendo visto a crescente quantidade de pedidos por armas que possam ser usadas simultaneamente nas duas mãos, resolvi criar um tutorial apenas para esclarecer que esse código já existe compilado nas mais recentes revisões do The Forgotten Server. Você pode escolher quais itens poderão ser equipamentos nas duas mãos e claro restringir esses itens depois para apenas uma vocação. 1. Para criar seu item que pode ser equipado nas duas mãos, abra o items.xml e navegue até o ID do item desejado. Por exemplo, mostrarei abaixo o ID da Magic Sword: <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> </item> 2. Adicione o atributo dualwield com valor 1 no código XML do item. <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> <attribute key="dualwield" value="1" /> </item> Pelo que pude testar os danos não se somam, mas sim são causados dois ataques ao invés de um, ou seja a velocidade de ataque do jogador aumenta. Funciona com qualquer tipo de arma, desde swords até rods e wands. Funcional em: The Forgotten Server 0.4 rev3777 em diante
  17. Pequena atualização da Demon Oak para funcionar nos novos The Forgotten Server 0.4 Alguns scripts foram basedos na função do mazen Eu tentei fazer ela o mais simples possivel de adicionar Porém ficou ainda um pouco complicado mais tentarei simplificar ao maximo a explicação dela... Coloquei 2 tiles de gelo no mapa O tile mais acima é a posição do starting e o mais baixo e a direita é o ending. Porém esse tem uma borda A Unica coisa que falta no mapa é a gravestone que vc terá que fazer e colocar a uniqueid 32194 e configurar a newnposition Quando for passar para seu mapa, retire já que ele é apenas para saber. Spoiler 1º Para começar a quest você deve andar nas 5 posições que no meu mapa tem um treco amarelo nelas... 2º Depois vai até o npc oldrak e fale 3º Agora vá até a arena do demon oak e use o machado na arvore que bloquea o caminho. 4º Agora bata 9x em cada lugar da arvore. 5º Ao final ande no teleport. Se você andar nele antes de matar as quatro partes, vc terá que entrar e mata-la novamente as 4x. 6º Ao sair vai ao Oldrak e Fale : 7º Agora procure a gravestone de use nela E seja feliz com seu loot. Mudançass Aqui os uid, actions e storages usados : Ele é dividido em quatro arquivos : Para mapear crie uma area mais ou menos assim : Nessa area deverá haver apenas os items descritos e nomeados. De preferencia use o mapa do download. Na Tree Base adicione o actionids 32193 O tp 1 deve ter o uniqueid 32195 e deverá ter as coordenadas de saida, pois se o player não matar a arvore ele, sairá e terá que mata-la novamente. Também adicione a gosto a actionid 15001 ao redor da arvore do mal, esse actionids faz o player toma dano da arvore, como se ela batesse nele. Se vc conhece a quest, vc pode verificar que em certos pontos ao redor da arvore, ela "grita", vc deve adicionar os actionids 15002 até o 15006, em sentido anti horario. Começando a oeste. O resto está explicado nos arquivos. Você entenderá melhor se ver o spoil ou assistir algum video. Porém ela é muito simples de ser feita. A sala de recompensa vc deve adicionar os uids 2358 até 2361 nos baus, da esquerda para direita. Também não esqueça de colocar a gravestone com o uid 32194. Ao clicar nela vc irá para a sala de recompensa. Download do mapa Incrementando Em functions.lua ou global.lua adicione ao final: function doCreatureSayWithDistance(cid, position, text, type) oldPosX = setPlayerStorageValue(cid, 10000, getCreaturePosition(cid).x) oldPosY = setPlayerStorageValue(cid, 10001, getCreaturePosition(cid).y) oldPosZ = setPlayerStorageValue(cid, 10002, getCreaturePosition(cid).z) oldPos = { x = getPlayerStorageValue(cid, 10000), y = getPlayerStorageValue(cid, 10001), z = getPlayerStorageValue(cid, 10002) } doTeleportThing(cid, position, 0) doCreatureSay(cid, text, type) doTeleportThing(cid, oldPos, 0) return end function doSummonCreatures (monsters,positions) for _, positions in pairs (positions) do doSummonCreature(monsters, positions) end end function setPlayerMultiplyStorageValues(cid, storage, value) for _, storage in pairs(storage) do setPlayerStorageValue(cid, storage, value) end end Na pasta npc adicione oldrak.lua : <npc name="Oldrak" script="data/npc/scripts/oldrak.lua" walkinterval="2000" floorchange="0" access="3" level="1" maglevel="1"> <health now="150" max="150"/> <look type="57" head="115" body="113" legs="31" feet="38" addons="3" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|!" /> <parameter key="message_needmoremoney" value="Try again when you have more money."/> <parameter key="message_decline" value="Why would you tease me like that?"/> </parameters> </npc> Em npcs/scripts adicione oldrak.lua : -- Demon Oak 2.1 by ta4e-- -- Paradox 1.0-- 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 local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'demon oak') then if getPlayerStorageValue(cid, 15006) < 4 and getPlayerStorageValue(cid, 15005) == -1 then selfSay('You need know exactly location, go local and research more...' ,cid) elseif getPlayerStorageValue(cid, 15006) == 4 and getPlayerStorageValue(cid, 15005) == -1 then selfSay('You found the demon oak ? For kill it\'s you need a {Hallowed Axe}.', cid) elseif getPlayerStorageValue(cid, 15005) == -1 and getPlayerStorageValue(cid, 15006) <= 4 then selfSay('This a old demon , but we don\'t know where it\'s live.', cid) elseif getPlayerStorageValue(cid, 15005) == 3 then selfSay('Go defeat demon oak. When you do this report me.', cid) talkState[talkUser] = 0 elseif getPlayerStorageValue(cid, 15005) == 7 then selfSay('I can\'t believe, you really defeat the demon oak. Now is possible you get you reward. Search near cemitery.', cid) setPlayerStorageValue(cid,15005,8) talkState[talkUser] = 0 else selfSay('You need get a {Hallowed Axe}', cid) end elseif msgcontains(msg, 'mission') then if getPlayerStorageValue(cid, 15005) <= 8 then selfSay('First you need defeat the demon oak. Later you make next mission.', cid) elseif getPlayerStorageValue(cid, 15005) == 9 and getPlayerStorageValue(cid, 15031) ~= 2 then selfSay('The next mission, you need kill the demon, as named {Ungreez}. He\'s located in Hero Cave.', cid) setPlayerStorageValue(cid,15031,1) elseif getPlayerStorageValue(cid, 15031) == 2 then selfSay('Congratulations. Now you receive your outfit {Demon Hunter}.', cid) setPlayerStorageValue(cid,15031,2) if getPlayerSex(cid) == 0 then setPlayerStorageValue(cid,40288,1) else setPlayerStorageValue(cid,40289,1) end end elseif msgcontains(msg, 'hallowed axe') then if getPlayerStorageValue(cid, 15005) == -1 then selfSay('I can forge this but i need {1000 gold coins} and a {axe}. You interessed ?', cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 15005) == 1 then selfSay('Great. You have 1000 gold coins to give me ?.', cid) talkState[talkUser] = 2 elseif getPlayerStorageValue(cid, 15005) == 2 then selfSay('Great. Now you have a {axe} to me ?.', cid) talkState[talkUser] = 3 end elseif msgcontains(msg, 'hugo') then selfSay('Ah, the curse of the Plains of Havoc, the hidden beast, the unbeatable foe. I\'ve been living here for years and I\'m sure this is only a {myth}.', cid) talkState[talkUser] = 4 elseif talkState[talkUser] == 4 then if msgcontains(msg, 'myth') then selfSay('There are many tales about the fearsome Hugo. It\'s said it\'s an abnormality, accidentally created by {Yenny the Gentle}. It\'s half demon, halfsomething else and people say it\'s still alive after all these years.', cid) talkState[talkUser] = 5 end elseif talkState[talkUser] == 5 then if msgcontains(msg, 'yenny the gentle') then selfSay('Yenny, known as the Gentle, was one of the most powerful wielders of magic in ancient times. She was known throughout the world for her mercy and kindness.', cid) setPlayerStorageValue(cid,15200,1) end elseif talkState[talkUser] == 1 then if msgcontains(msg, 'yes') then selfSay('Great. You have 1000 gold coins to give me ?.', cid) setPlayerStorageValue(cid,15005,1) talkState[talkUser] = 2 else selfSay('When you prepared regress to me.', cid) end elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') then if(doPlayerRemoveMoney(cid, 1000) == TRUE) then selfSay('Great. Now you have a {axe} to me ?.', cid) setPlayerStorageValue(cid,15005,2) talkState[talkUser] = 3 else selfSay('You don\'t have a money.', cid) end end elseif talkState[talkUser] == 3 then if msgcontains(msg, 'yes') then if doPlayerRemoveItem(cid,2386,1) == TRUE then selfSay('Great. Now go and defeat a Demon Oak. Later report me.', cid) doPlayerAddItem(cid,8293,1) setPlayerStorageValue(cid,15005,3) talkState[talkUser] = 3 else selfSay('You don\'t have a axe.', cid) end else selfSay('When you prepared regress to me.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vamos em actions/scripts e adicione hallowed axe.lua : Nos monster vc escolhe os monstros que a arvore irá sumonar. Em monstros alternativos se vc ativar o altmo, os monstros listado ali abaixo Serão sorteados com o acima, gerando mais emoção e também sorte ou azar ao player. --Demon Oak 2.1 by Ta4e-- --Some scripts based in script of Mazen-- function onUse(cid, item, frompos, item2, topos) local monster1 = "Crypt Shambler" local monster2 = "Lich" local monster3 = "bone beast" local monster4 = "banshee" local monster5 = "giant spider" local boss1 = "Blightwalker" local boss2 = "Betrayed Wraith" local boss3 = "diabolic imp" local boss4 = "demon" basepos = {x=1867, y=975, z=7} local starting={x=1856, y=966, z=7, stackpos=253} local ending={x=1883, y=982, z=7, stackpos=253} local trash= {x=1169, y=725, z=13} --Alternative Monsters--------------------------------------------------------------- local altmo = 0 -- If it 0 monsters not randomize. If it 1 randomize with this \/ local altmonst1 = "braindeath" local altmonst2 = "necromancer" local altmonst3 = "vampire" local altmonst4 = "giant spider" local altmonst5 = "demon skeleton" local altboss1 = "plaguesmith" local altboss2 = "phantasm" local altboss3 = "hellhound" local altboss4 = "behemoth" ----------------------------------------------------------------------------------------------- if altmo == 1 then if math.random (1,5) == 1 or math.random (1,5) == 5 then monster1 = altmonst1 monster2 = altmonst2 monster5 = altmonst5 boss1 = altboss1 boss3 = altboss3 else monster3 = altmonst3 monster4 = altmonst4 boss2 = altboss2 boss4 = altboss4 end end local fourposition1 = {x=basepos.x-4, y=basepos.y-4, z=7} local fourposition2 = {x=basepos.x-4, y=basepos.y+1, z=7} local fourposition3 = {x=basepos.x+3, y=basepos.y-4, z=7} local fourposition4 = {x=basepos.x+3, y=basepos.y+1, z=7} local modpos1 = {x=basepos.x-3, y=basepos.y-5, z=7} local modpos2 = {x=basepos.x, y=basepos.y-4, z=7} local modpos3 = {x=basepos.x+2, y=basepos.y-5, z=7} local threeposition1 = {x=basepos.x+3, y=basepos.y+4, z=7} local threeposition2 = {x=basepos.x+5, y=basepos.y+4, z=7} local threeposition3 = {x=basepos.x+3, y=basepos.y+5, z=7} local twopos ={x=basepos.x+5, y=basepos.y+1, z=7} local twopos1 = {x=basepos.x+2, y=basepos.y+2, z=7} local doublepos = {x=basepos.x-3, y=basepos.y-1, z=7} local leftpos = {x=basepos.x-4, y=basepos.y-5, z=7} local crepos = {x=basepos.x-3, y=basepos.y-7, z=7} local gopos = {x=basepos.x-2, y=basepos.y-17, z=7} ------------------------------------------------------------------------------------------------------------------------------ local gtotal = getPlayerStorageValue(cid, 15005) local gcorvo = getPlayerStorageValue(cid, 15001) local gleft = getPlayerStorageValue(cid, 15002) local gright = getPlayerStorageValue(cid, 15003) local gface = getPlayerStorageValue(cid, 15004) checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos} if item2.itemid == 2717 and item2.uid == 32193 then if getPlayerLevel(cid) >= 120 then players=0 totalmonsters=0 monster = {} repeat creature= getThingfromPos(checking) if creature.itemid > 0 then if getPlayerAccess(creature.uid) == 0 then players=players+1 end if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then totalmonsters=totalmonsters+1 monster[totalmonsters]=creature.uid end end checking.x=checking.x+1 if checking.x>ending.x then checking.x=starting.x checking.y=checking.y+1 end until checking.y>ending.y if players==0 then current=0 repeat current=current+1 doTeleportThing(monster[current],trash) until current>=totalmonsters doTeleportThing(cid, topos, 0) setPlayerMultiplyStorageValues(cid,{15001,15002,15003,15004},1) doTransformItem(item2.uid, 3669) doCreateTeleport(1387, gopos, crepos) local getrem1 = getThingfromPos({x=basepos.x-3, y=basepos.y-7, z=7, stackpos = 3}) doSetItemActionId(getrem1.uid,32195) end else doPlayerSendTextMessage(cid, "You need level 120 to enter in arena.", result) end elseif item2.itemid == 8288 then if gcorvo <10 then effect (cid,15001,gcorvo,topos) if gcorvo == 3 then doSummonCreatures(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gcorvo == 5 then doSummonCreatures(monster2, {threeposition1,threeposition2,threeposition3}) elseif gcorvo == 7 then doSummonCreature(boss1, fourposition3) elseif gcorvo == 9 then gtotal = gtotal + 1 setPlayerStorageValue(cid, 15005,gtotal) end else doSendMagicEffect(topos, 2) end elseif item2.itemid == 8289 then if gleft <10 then effect (cid,15002,gleft,topos) if gleft == 3 then doSummonCreature(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gleft == 4 then doSummonCreatures(monster3, {modpos1,modpos2,modpos3}) doSummonCreature(monster3, fourposition2) elseif gleft == 7 then doSummonCreatures(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gleft == 9 then doSummonCreature(boss2, leftpos) gtotal = gtotal + 1 setPlayerStorageValue(cid, 15005,gtotal) end else doSendMagicEffect(topos, 2) end elseif item2.itemid == 8290 then if gright <10 then effect (cid,15003,gright,topos) if gright == 2 then doSummonCreatures(monster4, {twopos,twopos1}) elseif gright == 4 then doSummonCreatures(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gright == 7 then doSummonCreatures(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gright == 9 then doSummonCreature(boss3,leftpos) gtotal = gtotal + 1 setPlayerStorageValue(cid, 15005,gtotal) end else doSendMagicEffect(topos, 2) end elseif item2.itemid == 8291 then if gface <10 then effect (cid,15004,gface,topos) if gface == 1 then doSummonCreature(monster2, doublepos) doSummonCreature(monster5, fourposition2) elseif gface == 4 then doSummonCreatures(monster1, {fourposition1,fourposition2,fourposition3,fourposition4}) elseif gface == 6 then doSummonCreature(boss4, leftpos) elseif gface == 9 then gtotal = gtotal + 1 setPlayerStorageValue(cid, 15005,gtotal) end else doSendMagicEffect(topos, 2) end end end local function effect (cid,storage,valor,topos) valor = getPlayerStorageValue(cid, storage) doTargetCombatHealth(0, cid, COMBAT_EARTHDAMAGE, -300, -300, CONST_ME_BIGPLANTS) valor = valor + 1 setPlayerStorageValue(cid, storage,valor) doSendMagicEffect(topos, 0) end Na mesma pasta adicione o Demon oak.lua : --Demon Oak 2.1 by Ta4e-- --Some scripts based in script of Mazen-- function onUse(cid, item, fromPosition, itemEx, toPosition) newnPosition = {x=1904, y=1006, z=8} -- Aqui a posição da sala de recompensa if item.uid == 32194 and getPlayerStorageValue(cid,15005) == 8 then doTeleportThing(cid,newnPosition) doSendMagicEffect(newnPosition,10) elseif item.uid == 2358 then if getPlayerStorageValue(cid,2358) == -1 and getPlayerStorageValue(cid,15005) == 8 then if getPlayerFreeCap(cid) >= 54.00 then doPlayerSendTextMessage(cid,24,"You have found demon legs.") doPlayerAddItem(cid,2495,1) setPlayerMultiplyStorageValues (cid,{2358,15005},1) else doPlayerSendTextMessage(cid,24,"You have found a demon legs. Weighing 54.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 2359 then if getPlayerStorageValue(cid,2358) == -1 and getPlayerStorageValue(cid,15005) == 8 then if getPlayerFreeCap(cid) >= 69.00 then doPlayerSendTextMessage(cid,24,"You have found rainbow shield.") doPlayerAddItem(cid,8905,1) setPlayerMultiplyStorageValues (cid,{2358,15005},1) else doPlayerSendTextMessage(cid,24,"You have found a rainbow shield. Weighing 69.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 2360 then if getPlayerStorageValue(cid,2358) == -1 and getPlayerStorageValue(cid,15005) == 8 then if getPlayerFreeCap(cid) >= 12.00 then doPlayerSendTextMessage(cid,24,"You have found royal crossbow.") doPlayerAddItem(cid,8851,1) setPlayerMultiplyStorageValues (cid,{2358,15005},1) else doPlayerSendTextMessage(cid,24,"You have found a royal crossbow. Weighing 12.00 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end elseif item.uid == 2361 then if getPlayerStorageValue(cid,2358) == -1 and getPlayerStorageValue(cid,15005) == 8 then if getPlayerFreeCap(cid) >= 28.50 then doPlayerSendTextMessage(cid,24,"You have found a spellbook of dark mysteries.") doPlayerAddItem(cid,8918,1) setPlayerMultiplyStorageValues (cid,{2358,15005},1) else doPlayerSendTextMessage(cid,24,"You have found spellbook of dark mysteries. Weighing 28.50 oz it is too heavy.") end else doPlayerSendTextMessage(cid,24,"The chest is empty.") end end end E em actions.xml adicione : <action itemid="8293" script="Hallowed Axe.lua"/> <action uniqueid="32194" script="demon oak.lua" /> <action uniqueid="2358" script="demon oak.lua" /> <action uniqueid="2359" script="demon oak.lua" /> <action uniqueid="2360" script="demon oak.lua" /> <action uniqueid="2361" script="demon oak.lua" /> Finalmente em movements/scripts adicione demon oak.lua : --Demon Oak 2.1 by Ta4e-- --Some scripts based in script of Mazen-- function onStepOut(cid, item, position, fromPosition) if item.uid == 32193 and item.itemid == 3669 then doTransformItem(item.uid,2717) end end function onStepIn(cid, item, position, fromPosition) local yell = getPlayerStorageValue(cid, 15006) local pos1= {x=1866, y =973, z=7} if item.actionid == 32195 and item.itemid == 1387 then if getPlayerStorageValue(cid, 15005) == 7 then doPlayerSendTextMessage(cid,21,"Tell Oldrak about your great victory against the demon oak.") else doPlayerSendTextMessage(cid,21,"You have escaped of Demon Oak.") setPlayerMultiplyStorageValues (cid,{15001,15002,15003,15004,15005},1) end end if getPlayerStorageValue(cid, 15006) < 4 then if isPlayer(cid) == TRUE then yell = yell + 1 if item.actionid == 15005 and getPlayerStorageValue(cid, 15006) == -1 then setPlayerStorageValue(cid, 15006,yell) doCreatureSayWithDistance(cid, pos1, "Find a way in here and release me! Pleeeease hurry!",TALKTYPE_ORANGE_1 ) elseif item.actionid == 15002 and getPlayerStorageValue(cid, 15006) == 0 then setPlayerStorageValue(cid, 15006,yell) doCreatureSayWithDistance(cid, pos1, "I can bring your beloved back from the dead,just release me!",TALKTYPE_ORANGE_1 ) elseif item.actionid == 15003 and getPlayerStorageValue(cid, 15006) == 1 then setPlayerStorageValue(cid, 15006,yell) doCreatureSayWithDistance(cid, pos1, "What is this? Demon legs lying here? Someone might have lost them.",TALKTYPE_ORANGE_1 ) elseif item.actionid == 15004 and getPlayerStorageValue(cid, 15006) == 2 then setPlayerStorageValue(cid, 15006,yell) doCreatureSayWithDistance(cid, pos1, "I'm trapped come here and free me, fast!!!",TALKTYPE_ORANGE_1 ) elseif item.actionid == 15005 and getPlayerStorageValue(cid, 15006) == 3 then setPlayerStorageValue(cid, 15006,yell) doCreatureSayWithDistance(cid, pos1, "What a nice and shinny golden armor. Come to me and you can have it!",TALKTYPE_ORANGE_1 ) end end elseif item.actionid == 15001 then if isPlayer(cid) == TRUE then if getPlayerStorageValue(cid, 15005) <=7 then if math.random(1,4) == 1 then doTargetCombatHealth(0, cid, COMBAT_EARTHDAMAGE, -500, -500, CONST_ME_BIGPLANTS) end end end end end Em movements.xml adicione : <movevent event="StepOut" uniqueid="32193" script="demon oak.lua" /> <movevent event="StepIn" uniqueid="32195" script="demon oak.lua" /> <movevent event="StepIn" actionid="15000" script="demon oak.lua" /> <movevent event="StepIn" actionid="15001" script="demon oak.lua" /> <movevent event="StepIn" actionid="15002" script="demon oak.lua" /> <movevent event="StepIn" actionid="15003" script="demon oak.lua" /> <movevent event="StepIn" actionid="15004" script="demon oak.lua" /> <movevent event="StepIn" actionid="15005" script="demon oak.lua" /> <movevent event="StepIn" actionid="15006" script="demon oak.lua" /> Caso seja The Forgotten Server 0.4.2 <movevent type="StepOut" uniqueid="32193" event="script" value="dotile.lua" /> <movevent type="StepIn" actionid="32195" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15000" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15001" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15002" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15003" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15004" event="script" value="demon oak.lua" /> <movevent type="StepIn" actionid="15005" event="script" value="demon oak.lua" /> --UPDATE-- Eu acabei esquecendo de uma coisa que arruma alguns bugs caso o player empacote (morra) Em creaturescripts/scritps no player death.lua depois de: function onDeath(cid, corpse, killer) Adicione : setPlayerStorageValue(cid,5002,0) setPlayerStorageValue(cid,5001,0) setPlayerStorageValue(cid,5000,0) Isso evita que o player não possa entrar na quest e desfaz alguns bugs... Se você é anormal como eu, pode querer adicionar no Quest Log essa quest para ajudar os players Então em XML/quests.xml depois de: <quests> Adicione : <quest name="The Ultimate Challenges" startstorageid="15005" startstoragevalue="1"> <mission name="The Demon Oak" storageid="15005" startvalue="1" endvalue="9"> <missionstate id="1" description="You need give 1000 gold coins for Oldrak make a Hallowed Axe"/> <missionstate id="2" description="Now give axe to Oldrak make a Hallowed Axe"/> <missionstate id="3" description="Go defeat the Demon Oak."/> <missionstate id="4" description="You now killing The Demon Oak. Left 3 of 4 Parts."/> <missionstate id="5" description="You now killing The Demon Oak. Left 2 of 4 Parts."/> <missionstate id="6" description="You now killing The Demon Oak. Left 1 of 4 Parts."/> <missionstate id="7" description="Now the Demon Oak are dead. Report to oldrak."/> <missionstate id="8" description="Found a gravestone to choose your reward."/> <missionstate id="9" description="Congratulations. You have finished the quest"/> </mission> </quest> Pra adicionar o encantamento do rainbow shield entre em http://www.xtibia.com/forum/84-Enchant-Sys...ld-t103742.html
  18. Base: PokeStorm Bom dia Queria um Sistema de Usar Potion na Pokeball ou na Portrait se possivel. Aqui esta meu Potion.lua local potions = { [8783] = {baseHeal = 1800, healTimes = 10, msgColor = 175}, --Full Potion [2112] = {baseHeal = 950, healTimes = 8, msgColor = 181}, --Hyper Potion [2113] = {baseHeal = 600, healTimes = 7, msgColor = 23}, --Ultra Potion [2115] = {baseHeal = 350, healTimes = 6, msgColor = 30}, --Great Potion [2114] = {baseHeal = 200, healTimes = 5, msgColor = 177}, --Small Potion [9270] = {baseHeal = 225, healTimes = 5, msgColor = 177}, --Starter's Small Potion } local texts = { [PORTUGUESE] = {"Use isso em você mesmo ou em seu pokémon.", "Você já está se curando.", "Seu pokémon já está sendo curado."}, [ENGLISH] = {"Use it in your pokemon or in yourself.", "You are already healing yourself.", "Your pokemon is already being healed."}, } local potionState = {} local function potionHeal(cid, heal, healed, maxHeal) if isCreature(cid) and healed <= maxHeal then doCreatureAddHealth(cid, heal) doSendMagicEffect(getCreaturePosition(cid), 12) addEvent(potionHeal, 1000, cid, heal, healed+1, maxHeal) else potionState[cid] = nil end end function onUse (cid,item,frompos,item2,topos) local txt = texts[getPlayerLanguage(cid)] local potion = potions[item.itemid] if not isCreature(item2.uid) or getCreatureMaster(item2.uid) ~= cid then doPlayerSendCancel(cid, txt[1]) return true end if not potionState[item2.uid] then if isPokeballIn(item2.itemid) then healQuant = potion.baseHeal*(1+getPlayerSkillLevel(cid, SKILL_FIRSTAID)*0.05) elseif isSummon(item2.uid) then healQuant = potion.baseHeal*(1+getPlayerSkillLevel(cid, SKILL_FIRSTAID)*0.05) else healQuant = potion.baseHeal*(1+getPlayerSkillLevel(cid, SKILL_FIRSTAID)*0.05/2) end potionState[item2.uid] = true doRemoveItem(item.uid, 1) doSendAnimatedText(getCreaturePosition(item2.uid), 'HEALING!', potion.msgColor) potionHeal(item2.uid, healQuant, 1, potion.healTimes) else if isPlayer(item2.uid) then doPlayerSendCancel(cid, txt[2]) else doPlayerSendCancel(cid, txt[3]) end end return true end
  19. Adaptação pra source 8.54+ LEMBRE-SE, ISSO É NA SOURCE DO SERVIDOR Vamos ao código. protocolgame.h Embaixo de void AddShopItem(NetworkMessage_ptr msg, const ShopInfo item); Adicione void parseExtendedOpcode(NetworkMessage& msg);void sendExtendedOpcode(uint8_t opcode, const std::string& buffer); protocolgame.cpp Embaixo de uint32_t key[4] = {msg.GetU32(), msg.GetU32(), msg.GetU32(), msg.GetU32()};enableXTEAEncryption();setXTEAKey(key); Adicione // notifies to otclient that this server can receive extended game protocol opcodesif(operatingSystem >= CLIENTOS_OTCLIENT_LINUX)sendExtendedOpcode(0x00, std::string()); Embaixo de void ProtocolGame::AddShopItem(NetworkMessage_ptr msg, const ShopInfo item){const ItemType& it = Item::items[item.itemId];msg->AddU16(it.clientId);if(it.isSplash() || it.isFluidContainer())msg->AddByte(fluidMap[item.subType % 8]);else if(it.stackable || it.charges)msg->AddByte(item.subType);elsemsg->AddByte(0x01);msg->AddString(item.itemName);msg->AddU32(uint32_t(it.weight * 100));msg->AddU32(item.buyPrice);msg->AddU32(item.sellPrice);} Adicione void ProtocolGame::parseExtendedOpcode(NetworkMessage& msg){uint8_t opcode = msg.GetByte();std::string buffer = msg.GetString();// process additional opcodes via lua script eventaddGameTask(&Game::parsePlayerExtendedOpcode, player->getID(), opcode, buffer);}void ProtocolGame::sendExtendedOpcode(uint8_t opcode, const std::string& buffer){// extended opcodes can only be send to players using otclient, cipsoft's tibia can't understand themNetworkMessage_ptr msg = getOutputBuffer();if(msg){TRACK_MESSAGE(msg);msg->AddByte(0x32);msg->AddByte(opcode);msg->AddString(buffer);}} Embaixo de case 0x1E: // keep alive / ping responseparseReceivePing(msg);break; Adicione case 0x32: // otclient extended opcodeparseExtendedOpcode(msg);break; enums.h Embaixo de enum GuildLevel_t{GUILDLEVEL_NONE = 0,GUILDLEVEL_MEMBER,GUILDLEVEL_VICE,GUILDLEVEL_LEADER}; Substitua o OperatingSystem por este enum OperatingSystem_t{CLIENTOS_LINUX = 0x01,CLIENTOS_WINDOWS = 0x02,CLIENTOS_OTCLIENT_LINUX = 0x0A,CLIENTOS_OTCLIENT_WINDOWS = 0x0B,CLIENTOS_OTCLIENT_MAC = 0x0C,};/ player.h Embaixo de void sendCreatureShield(const Creature* creature) Adicione void sendExtendedOpcode(uint8_t opcode, const std::string& buffer){if(client) client->sendExtendedOpcode(opcode, buffer);} luascript.cpp Embaixo de void LuaScriptInterface::registerFunctions(){ Adicione //doSendPlayerExtendedOpcode(cid, opcode, buffer)lua_register(m_luaState, "doSendPlayerExtendedOpcode", LuaScriptInterface::luaDoSendPlayerExtendedOpcode); Embaixo de SHIFT_OPERATOR(int32_t, LeftShift, <<)SHIFT_OPERATOR(int32_t, RightShift, >>)SHIFT_OPERATOR(uint32_t, ULeftShift, <<)SHIFT_OPERATOR(uint32_t, URightShift, >>)#undef SHIFT_OPERATOR Adicione int32_t LuaScriptInterface::luaDoSendPlayerExtendedOpcode(lua_State* L){//doSendPlayerExtendedOpcode(cid, opcode, buffer)std::string buffer = popString(L);int opcode = popNumber(L);ScriptEnviroment* env = getEnv();if(Player* player = env->getPlayerByUID(popNumber(L))) {player->sendExtendedOpcode(opcode, buffer);lua_pushboolean(L, true);}lua_pushboolean(L, false);return 1;} luascript.h Embaixo de virtual void registerFunctions(); Adicione static int32_t luaDoSendPlayerExtendedOpcode(lua_State* L); creatureevent.h . Substitua CREATURE_EVENT_PREPAREDEATH Por isso CREATURE_EVENT_PREPAREDEATH,CREATURE_EVENT_EXTENDED_OPCODE // otclient additional network opcodes Embaixo de uint32_t executePrepareDeath(Creature* creature, DeathList deathList); Adicione uint32_t executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer); creatureevent.cpp Embaixo de else if(tmpStr == "death")m_type = CREATURE_EVENT_DEATH; Adicione else if(tmpStr == "extendedopcode")m_type = CREATURE_EVENT_EXTENDED_OPCODE; Embaixo de case CREATURE_EVENT_DEATH:return "onDeath"; Adicione case CREATURE_EVENT_EXTENDED_OPCODE:return "onExtendedOpcode"; Embaixo de case CREATURE_EVENT_DEATH:return "cid, corpse, deathList"; Adicione case CREATURE_EVENT_EXTENDED_OPCODE:return "cid, opcode, buffer"; Embaixo de std::cout << "[Error - CreatureEvent::executeFollow] Call stack overflow." << std::endl;return 0;}} Adicione uint32_t CreatureEvent::executeExtendedOpcode(Creature* creature, uint8_t opcode, const std::string& buffer){//onExtendedOpcode(cid, opcode, buffer)if(m_interface->reserveEnv()){ScriptEnviroment* env = m_interface->getEnv();if(m_scripted == EVENT_SCRIPT_BUFFER){env->setRealPos(creature->getPosition());std::stringstream scriptstream;scriptstream << "local cid = " << env->addThing(creature) << std::endl;scriptstream << "local opcode = " << (int)opcode << std::endl;scriptstream << "local buffer = " << buffer.c_str() << std::endl;scriptstream << m_scriptData;bool result = true;if(m_interface->loadBuffer(scriptstream.str())){lua_State* L = m_interface->getState();result = m_interface->getGlobalBool(L, "_result", true);}m_interface->releaseEnv();return result;}else{#ifdef __DEBUG_LUASCRIPTS__char desc[35];sprintf(desc, "%s", player->getName().c_str());env->setEvent(desc);#endifenv->setScriptId(m_scriptId, m_interface);env->setRealPos(creature->getPosition());lua_State* L = m_interface->getState();m_interface->pushFunction(m_scriptId);lua_pushnumber(L, env->addThing(creature));lua_pushnumber(L, opcode);lua_pushlstring(L, buffer.c_str(), buffer.length());bool result = m_interface->callFunction(3);m_interface->releaseEnv();return result;}}else{std::cout << "[Error - CreatureEvent::executeRemoved] Call stack overflow." << std::endl;return 0;}} game.h Embaixo de int32_t getLightHour() {return lightHour;}void startDecay(Item* item); Adicione void parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer); game.cpp Embaixo de player->sendTextMessage(MSG_INFO_DESCR, buffer);} Adicione void Game::parsePlayerExtendedOpcode(uint32_t playerId, uint8_t opcode, const std::string& buffer){Player* player = getPlayerByID(playerId);if(!player || player->isRemoved())return;CreatureEventList extendedOpcodeEvents = player->getCreatureEvents(CREATURE_EVENT_EXTENDED_OPCODE);for(CreatureEventList::iterator it = extendedOpcodeEvents.begin(); it != extendedOpcodeEvents.end(); ++it)(*it)->executeExtendedOpcode(player, opcode, buffer);} /creaturescripts/creaturescrips.xml <event type="extendedopcode" name="ExtendedOpcode" event="script" value="extendedopcode.lua"/> /creaturescripts/extendedopcode.lua OPCODE_LANGUAGE = 1function onExtendedOpcode(cid, opcode, buffer)if opcode == OPCODE_LANGUAGE then-- otclient languageif buffer == 'en' or buffer == 'pt' then-- example, setting player language, because otclient is multi-language...--doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer)endelse-- other opcodes can be ignored, and the server will just work fine...endend Créditos : MaXwEllDeN 100% por adaptar o código
  20. Snowz Thyranic Versão 3.3 (Perfect Edition) Ola para os fans do Thyranic vim trazer para vocês uma nova atualização!! espero que gostem! • 9 Cidades: ├ Rookgaard ├ Thyran ├ Murnia ├ Saaha ├ Icya ├ Venga ├ Mandrin ├ Talas └ Maltera(Vip) Agora vamos ver todas as atualizações! • Snowz Thyranic Versão 1: • Snowz Thyranic Versão 1.1: • Snowz Thyranic Versão 2: • Snowz Thyranic Versão 2.1: • Snowz Thyranic Versão 3.0: • Snowz Thyranic Versão 3.1 (Especial Edition): • Snowz Thyranic Versão 3.2 (King Edition): • Snowz Thyranic Versão 3.3 (Perfect Edition): Nesta atualização varios bugs foram arrumados ├ Bug do elf bot auto buy items!! ├ Inquisition Quest monstro com nomes errados não dava tp para continuar a quest! ├ Bug de alavancas de monsters! ├ FireWalker boots Quest! ├ Arena Icya tps bugados! ├ Algumas Quests bugadas! ├ Rings com % acima do normal! ├ A Demon Oak Quest !! ├ Npc de joias! └ Sql 100% funcionando para site Gesior! Oque tem de novo? ├ Items Vip ├ Cidade Vip ├ Novas hunts └ Npcs de addons espalhados pelo map Algumas fotos! Templo! Depot! Npcs! Thyrania almentada! Vip city! Areas Vip! Novas hunts para free!(OBS: tem outras alem dessas) Link download thyranic 3.3! Scan! ACC GOD loguin:god senha:god Créditos: - Maleski (eu) - Bizzani - Matheus - luisfe23 - Delton - Kaotar - RenanSdc - Thyranic - TFS Team Nessa ultima Atualização foi editado,etc!! por Maleski e Bizzani! Achou Bugs? Reporte !
  21. Ae galera do xtibia vo postar para voces o bronson server nao esta completo mais vo posta aki mesmo asim tem algumas hunts /ir ja entegrado espero que gostem --------- Map e Proprio --------- Boss e exclusivo do bronson server Hunt's bem elaboradas para nao tornar mt facil nem muito dificil --------- Atualizaçoes --------- Sempre que tiver tempo vou continuar atualizando corrigindo bugs E completanto o Ot server ate que fique 100% Vou postar alguns print's Mapa 70% full Hunt de cyc City principal Boss the necromancer Download Scan nao consegui fazer o scan entao vai o print mesmo' rs Creditos: Mixsoft Criador do map "nao sei o nome" Samurela Por posta o map todos aqueles que peguei scripts E a mim Gosto RP+
  22. RIANLHP

    script Script WODBO

    Pessoal, como adiciona RACE ao meu Wodbo, Só existe dois tipos, Blood e Energy, Queria encontrar outras, não estou conseguindo nem tirar blood dos treiners, alguém pode ajudar? Encontrei solução, se tiver como fechar o tópico agradeço!
  23. Informações: Server 8.6 Oque Mudou? 1-Adicionada 3 Novas Quests 2-Adicionado Set Brutal 3-Adicionada Novas Runas 4-Diminui um pouco o Exausted..Assim o server Nao tera Mt lag..Obs:continua fast attack so diminui um poco. 5-Novo Visual 6-Adicionei Novos Scripts 7-Livre De Bugs 8-Vocações Balanceadas Baixe E confira o Resto senha do adm god/god thanks! ~~~~~~~~~~~~~~~~~~~~Algumas Imagens~~~~~~~~~~~~~~~~ DOWNLOAD: http://www.4shared.c...D13M12A12.html? Scan: VirusTotal Gostou?Da +REP Seu Dedo Num Vai Cai Eu Juro..Obs: Pelo menos Eu acho Que num vai ne ;D Em Breve Nova Atualização ^^
  24. Opa gente beleza? bom seguinte eu tenho o codigo que quando voce sai da cidade ou entra ele informa se esta saindo ou entrando, como do OtPokemon, segue código. Ele está configurado pra quando sair para o lado de celadon do mapa, agora eu queria saber, eu fui colocar na posicao do norte, pensei comigo 1 e 3 é pra celadon, entao cerulean resta 2 e 4, tentei mudar, porém ele só mostra a mensagem de eu saindo e nao entrando. (SIM) ja coloquei uma tag especifica pra ele no xml. Resumindo pra oeste (celadon) ele vai normal, pra sair de saffron ao norte aparece tbm a mensagem, agr para entrar nao...alguem poderia me dar uma ajudinha por favor? obrigado desde já.
  25. Estou com um bug no meu sistema de fishing, o player quando pesca e anda acaba bugando e burlando o tempo de pesca, assim fazendo um spam de pokemons pescando sem parar. Pensei em uma solução mas gostaria da ajuda de vocês para realizar, se for possível colocar quando o player estiver pescando não puder andar. Abaixo meu script de fishing (base huatson):
×
×
  • Create New...