Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. brun123

    Sistema Npc Gym Para Pokemon

    • nome: Sistema de Ginásio / GYM para pokemon. • autor: brun123 (mastercraft) • versão testada: TFS 0.36 pl 1 (8.54) Detalhes: Como cada servidor de pokemon é bem diferente, acredito que muitos erros vão aparecer devido a diferença de IDs das pokebolas por exemplo, mas vou ajudar no que posso. Primeiro passo: crie um arquivo com o nome gymlib.lua na pasta data/lib/, e coloque isso dentro do arquivo: Segundo passo: crie um arquivo chamado gym.lua na pasta data/creaturescripts/scripts/ e coloque isso dentro: Terceiro passo: abra o arquivo creaturescripts.xml (localizado em data/creaturescripts) e adicione essas 4 tags: <event type="cast" name="Gym1" event="script" value="gym.lua"/> <event type="attack" name="Gym2" event="script" value="gym.lua"/> <event type="direction" name="Gym3" event="script" value="gym.lua"/> <event type="death" name="Gym4" event="script" value="gym.lua"/> Quarto passo: crie um arquivo chamado brock.xml em data/npc e crie um chamado brock.lua em data/npc/scripts e coloque isso dentro: Quinto passo: se você usar o pokemon dash, vá no arquivo playerattack.lua (data/creatureevents/scripts) e adicione esses códigos embaixo da linha "function onAttack(cid, target)": if getPlayerStorageValue(target, 201) ~= -1 then for a, b in pairs(ginasios) do if getPlayerStorageValue(target, ginasios[getPlayerStorageValue(target, 201)].storage) == 1 then if getPlayerStorageValue(cid, ginasios[getPlayerStorageValue(target, 201)].storage) ~= 1 then doPlayerSendCancel(cid, "You can't attack this pokemon.") return false end end end end end Se você não usa o pokemon dash, crie um arquivo chamado playerattack.lua na pasta data/creatureevents/scripts e coloque isso dentro: function onAttack(cid, target) if getPlayerStorageValue(target, 201) ~= -1 then for a, b in pairs(ginasios) do if getPlayerStorageValue(target, ginasios[getPlayerStorageValue(target, 201)].storage) == 1 then if getPlayerStorageValue(cid, ginasios[getPlayerStorageValue(target, 201)].storage) ~= 1 then doPlayerSendCancel(cid, "You can't attack this pokemon.") return false end end end end return true end e adicione essa tag no creaturescripts.xml (data/creaturescripts): <event type="attack" name="PlayerAttack" event="script" value="playerattack.lua"/> e ainda, abra o arquivo login.lua e embaixo dessa linha: "function onLogin(cid)" adicione esse código: registerCreatureEvent(cid, "PlayerAttack") Último passo: vá em data/creaturescripts/scripts e abra o arquivo goback.lua (aqui por exemplo, pode ser que haja uma particulariedade de servidor para servidor), e procure pela linha: function onDeath(cid, deathList) e abaixo dela, adicione esse código: local owner = getCreatureMaster(cid) for x, y in pairs(ginasios) do if getPlayerStorageValue(owner, y.storage) == 1 then if getPlayerStorageValue(owner, 991) == 5 or not hasPokemon(owner) then setPlayerStorageValue(owner, 991, -1) else local number = tonumber(getPlayerStorageValue(owner, 991)) setPlayerStorageValue(owner, 991, number + 1) end end end Configuração dos NPCs: Abrindo o arquivo brock.lua na pasta data/npc/scripts, procure por esta linha: "doGymBattle("Brock", "Brock Geodude", cid, 1)" o "Brock" precisa ser o nome do NPC e o "Brock Geodude" precisa ser o nome do primeiro pokemon a ser usado. Agora nessa parte, no script do seu NPC, você também deve editar o nome do NPC no lugar de "brock". Se quiser que o player possa lutar com o NPC mesmo depois de tê-lo vencido, é só remover a mesma parte: if getPlayerStorageValue(cid, ginasios["Brock"].storage) >= 1 then return true end Ao abrir o arquivo gymlib.lua, você encontra essas duas linhas (são as primeiras): funcpokemon = {2220, 2222} -- ID das pokebolas (o pokemon tem que estar vivo nessas IDs) bpslot = CONST_SLOT_BACKPACK --em outros servers, pode ser que seja CONST_SLOT_AMMO o lugar onde fica a backpack no inventory Onde está funcpokemon, você coloca o ID de todas as pokebolas do seu server, mas esse ID tem que ser o ID da pokebola com algum pokemon vivo dentro, e esses IDs devem ser separados por vírgula. Onde está bpslot, você escreve onde fica a BACKPACK do seu server de pokemon. Se ficar no lugar normal de BPs, deixe como está, mas se sua BP fica no slot da munição (ammunition), você deve estar para CONST_SLOT_AMMO. Isso é tudo, agora vocês podem configurar os IDs e localização da BP facilmente, sem precisar conhecimentos mais avançados sobre scripting, e evitar erros no sistema. Abrindo o arquivo gymlib.lua, localizado em data/lib/ você encontra essa tabela: ginasios = { ["Brock"] = { storage = 900, msgdefeat = "You lost! You aren't strong enough yet, don't come back until you get stronger!", msgafk = "Go away if you don't have any pokemons!", msgwin = "Congratulations, you were strong enough to win this battle fairly! Take this Earth Badge as reward.", [1] = { msggo = "Lets fight then! I choose you, Geodude!", msgba = "That's enough, Geodude!", pokem = "Brock Geodude", nextp = "Brock Graveler"}, [2] = { msggo = "It's your turn, Graveler!", msgba = "Come back, Graveler!", pokem = "Brock Graveler", nextp = "Brock Golem"}, [3] = { msggo = "Crush'em, Golem!", msgba = "You did well, Golem!", pokem = "Brock Golem", nextp = "finish"} } } • storage significa a única storage que deve variar de NPC para NPC, tenha certeza de que essa storage não está sendo usada, é você não deve usar a storage 901 aqui, pois a mesma já está em uso pelo próprio sistema. • msgdefeat significa o que o NPC irá dizer quando o player perder o duelo. • msgafk significa o que o NPC irá dizer caso o player comece o duelo, mas não faça nada depois. • msgwin significa o que o NPC irá dizer quando o player vencer o duelo. • msggo / msgba significam os textos que o NPC irá dizer ao sumonar o pokemon dele, ou quando o mesmo morrer, respectivamente.• pokem / nextp significam o nome do pokemon que será utilizado, e o próximo pokemon a ser sumonado pelo NPC, respectivamente. Caso o nextp seja especificado como "finish", não haverá um próximo pokemon. • o número entre [] significa a ordem utilizada pelo líder para usar o tal pokemon, sendo 1 o primeiro pokemon, 2 o segundo e assim vai... Uma tabela detalhada sobre a configuração: Importante: caso for testar o sistema como foi postado aqui, é necessário criar antes os monstros Brock Geodude, Brock Graveler e Brock Golem, assim como adicioná-los no monsters.xml. Recomendações: é bom você impedir que o pokemon consiga retornar para a pokebola durante duelos (assim como foi feito no SvkE), para isso, basta adicionar esse código no arquivo goback.lua (data/actions) na parte inicial de retornar o pokemon: for a, b in pairs(ginasios) do if getPlayerStorageValue(cid, b.storage) == 1 then -- GYM doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.") return true end end Aconselho fazer o mesmo caso seu server tenha script de revive. Deve-se também checar pelos storages usado em players, somente o 990 e o 991. No servidor testado, é utilizado apenas pokeballs e ultraballs, com IDs 2220 e 2222 (outra particularidade). Após ter instalado os arquivos, entre no jogo e use o comando /n Brock para testar o NPC. Último aviso: o prêmio ainda não foi adicionado (que seria a badge), pois esse sim é bem variado de servidor pra servidor. Já que nenhum servidor base já vem com os IDs das badges, cada um adicionou elas de modo diferente, por isso não pude fazer, mas existe uma parte sobre um prêmio no arquivo gym.lua (data/creaturescripts/scripts), procure por isso: --local item = getPlayerItemById(killer, true, 2307) --doTransformItem(item.uid, 2294) Você pode modificar para adicionar dinheiro ou outra coisa, e pode também desenvolver um sistema de badges. Eu não vou fazer badge aqui, mas se vocês tentarem, posso ajudar com problemas. Quaisquer erros, tentarei responder o mais rápido possível.
    3 pontos
  2. Esta é uma versão do [GesiorAcc] ,um site completo e bem amplo ,com várias modificações e algumas novas funções,uma excelente opção para quem procura algo diferente ou pra quem está começando um servidor. O que há de novo? * Novos Estilos (Backgrounds,Buttons,Headers e Artworks.) * Pagina de download com Tibia 8.60, Ip Changer, HyperCam e Team Speaker. * Guild War System Customized (Scripts pegar na aba Tutoriais de WebSite) * Top 100 Killer do Servidor * Advanced Character Page (Traduzida ,bem formal e "Única".) * Who is Online? (Versão 0.3.8 modificada para adaptações em todos os servidores) * Trade System (Explicações no site e em PT) * Novo Support List * Addons Page (Com fotos,Premium Required,Male of Female e Itens necessários.) * Pagina Server Info (Modificada,bem simples e no jeito de colocar as informações do seu servidor.) * Novo Shop Offer com novo estilo (Preto e Amarelo) e as abas | Dias Vip | Itens a Venda | Outros | ! * Pagina Benefícios totalmente reformulada e muito simples para modificar. * Novo ! Pagina de Buypoints auto-explicativa...e semi-automática ! >> Leia Abaixo sobre << A pagina consiste em: O player escreve o nome do char e escolhe a quantidade de pontos que deseja comprar,clica em finalizar e é redirecionado para a página do pagseguro para terminar o pagamento. No pagseguro será mostrado o nome do char e a quantidade de pontos,assim,quando o pagamento for confirmado voce já saberá para quem os pontos devem ser entregues,não precisando mais de Confirmação de Pagamentos. Abaixo,veja algumas fotos das principais modificações: New Addons Page Pagina de Benefícios Pagina de Characters Customizada Pagina de Downloads Novo Estilo do Shop Offer Trade System Obs: 1° O site ja vai com alguns sistemas que necessitam das tabelas na sua database,como o War System,Trade System e o Top 100 Killer, então vou posta-las abaixo para que adicionem no SQL.(Quem não quiser utilizar os sistemas é so apagar as paginas ditas acima do layout.) Link das Tabelas 2° Em Htdocs/Config/Config.php , vá lá em baixo e coloque seu email pagseguro para o sistema de compra funcionar. 3° A página Houses não está a vista...mas está configurada para funcionar,quem quiser é so adiciona-la no Layout. *É isso ,por favor não postem erros de tabelas aqui,ja foi explicado acima que pode dar error por causa dos sistemas que estão nosite ,basta voce adicionar as tables que postei no download acima ou então apagar as paginas do layout ou do index.php ! Vlw Galera ! DOWNLOAD DO SITE SCAN DO SITE
    1 ponto
  3. Alissow OTs 4.11! Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6. Aproveitem. Créditos: Alissow Comedinha Luis Nirk TFS Team Viniply Xedegux Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs - Adicionado Anti Magebomb System - Corrigido bugs no npc addon - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;] - Adicionado Elf village em Venonh ( bem parecida com a do global ;]) - Potions desaparecem quando usadas - Corrigido sistema de Up - Corrigido sistema de Monster Counter - Nova dragon lair em Mirand Theraan (Subsolo) - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam - Ampliado deserto da cidade de Mirand Theraan - Adicionado Ilha de Goroma - Adicionado Forbidden islands - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta. - Ligação de alfon com Mirand Theraan - Corrigido bugs reportados nas portas das casas - Corrigido posição dos buracos e escadas - Adicionado beds em todas as casas - Corrigido bugs em casas de yalahar - Adicionado Blue legs quest ( Koshei The Deathless global) - Corrigidas quase todas as areas de Yalahar - Teleports em Yalahar substituidos por NPCs de teleport do global - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma - diminuido ataque do Eye of the seven - Ice rapier agora quebra - Corrigido npc Banker - Adicionado quase todos os items 8.5 - Adicionado medusa - Adicionado Todos os outfits novos - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e - Corrigido Annihilator Quest - Adicionado Notice System - Adicionado novo distro, compilado por Comedinha Atualização nº 2 [3.4]: Otserv atualizado... Corrigido debugs frequentes Corrigido debugs na magia exevo pan Corrigido bugs nos npcs Roy e Firewalker Adicionados mais novos items 8.5, agora temos 90% dos items novos... Atualização 3.5 [06/08/2009]: - Cidade principal (dorion) totalmente reformada - corrigido blue legs quest - Corrigido alavancas de compra de potions - Adicionado alavancas de compra de runas - Corrigido npc Bank - Adicionado NPC King Arthas, que vende promotion - Adicionado npc Rashid, que vende items. - Arrumado Wild Growth rune - Arrumado Utani Hur - Magias reajustadas - Novo estilo de server save - Ilha de mystic reformulada (by Nirk) - Adicionado nova magia para knights "Exkordium". - Adicionado nova magia para mages (promoted) "Exura Seil". - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana) - Adicionados novos monstros. - Adicionado quest challenge (lvl 250) - Corrigido bug do Dead Cyclops - Bug aol Arrumado - Poi Modificada - Corrigido teleports ghouls yalahar - Modificada demon helmet quest, assim como o premio da quest - Corrigido nome do Hallowed axe - Corrigido bug das houses - Corrigido bug dos items andaveis Atualização Patch 3.5.1 [07/08/2009]: - Corrigido erro na inicialização do Ot - Bug das potions corrigido - Bug do aol corrigido (pelomenos pra mim) - Bug dos outfits corrigido - Corrigido erros nas escadas na ilha PvP - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar - Retirada suposta quest dos 3 hellhounds e 1 minishabaal - Adicionado teleport de retorno na Ferumbras Tower - Corrigido posições da raid de The old widow - Corrigido bug das escadas nas minas de demons - Corrigido alguns bugs vistos no mapa Atualização 3.6 [10/08/2009]: - Arrumado bugs criticos - Arrumado comando !promote/!demote - Atualizado Items.xml - Bug das Beds arrumado - Modificações na cidade, como, nature e caves - Nova sala de treino - Adicionado comando !highscores Atualização 3.7! Beta [18/12/2009]: - Guildhall support (Elf) - Nova deathlist(Elf, OpenTibia SVN) - Frags funcionando (Elf) - Atualizado monstros e items (slawkens, KaczooH, Elf) - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens) - Novas funções lua - Novos creatureevents (slawkens, Elf) - Novos configuráveis (Elf, slawkens) - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf) - Monstros reorganizados & atualizados (Nem todos) (slawkens) - Melhorado sistema de banimentos (Elf) - Reescrita janela de Rule Violation (Elf) - Arrumado Stamina (Elf, OpenTibia SVN) - Casas agora são salvas nas modificações do dono (Elf) - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen) - Sistema de nado & waterball completo (slawkens) - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN) - Anti-dash (OpenTibia SVN) - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf) - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens) - Novos raid events- item spawning & disappearing and more (Elf) - Modificações no NPC system (Elf) - NPCs OutfitModule (Elf) - Completo 8.53 support, com wars (Elf) - Completo 8.54 support (Elf) - Arrumado NPC voices (Elf) - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens) - Arrumado Player Deaths (Elf, slawkens) - Arrumado Abuso de PZ (slawkens) - Portas agora não ajudam players a entrar em PZ (slawkens) - Magic level formula (OpenTibia SVN, KaczooH) - Memory leaks (Elf) - Queries optimization (Talaturen) - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens) - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens) - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf) - Corrigido erro na promotion (Elf) - Corrigido vários erros no console. (slawkens) - Corrigido Spam de magias (Elf) - Corrigido stamina premium (Elf) - Corrigido Clean (Elf) - Corrigido vários outfits (Elf) - Corrigido Ghost (Elf) - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf) - Corrigido Todos os crashes possiveis (Elf) - Npcs Corrigidos (Comedinha) - Distro Reformulado (comedinha) - Bugs de reports arrumados (Comedinha) - Novos outfits (Alissow) - Actions Arrumadas (Comedinha) - Libs trocadas (Comedinha) - Talkactions bugadas arrumadas (Comedinha) - Reforma na área Sul da cidade Dorion (Alissow) - Adicionado monstros 8.54 (Alissow) - Corrigido bug das potions infinitas (Alissow) Atualização 3.7 Patch 1 [27/12/2009]: - Rampa na frente da loja de foods retirada (Alissow) - Arrumado bugs de mapa em anknor (Alissow) - Bug na Lib dos npcs corrigido (Alissow) - Bug do acc manager arrumado! (Alissow) - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow) - Monstros 8.54 funcionando (Alissow) - 2º Addon Yalaharian arrumado (Alissow) - Addons Warmaster adicionados no NPC Addoner (Alissow) - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow) - Comando /Deathlist retirado (Alissow) - Magic Wall Rune arrumada (Alissow) - Quest Annihilator arrumada (Alissow) - "Your depot contain x items" Arrumado (Alissow) - Addons reorganizados, mais facil aggora (Alissow) - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow) - Reduzida porcentagem de morte (Alissow) - Acrescentado chance de critical hits (Alissow) - ShowHealingDamage Adicionado (Alissow) - Várias partes do mapa remapeadas (Alissow) - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow) - Comando !frags arrumado! (Alissow) - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow) Atualização 3.8 [17/01/2010]: - Arrumado bug nas escadas do Dlair (Alissow) - Todos os bugs nos NPCs arrumados (Comedinha) - Novas talkactions [a pedidos] (Comedinha) - Deathlist arrumada (Comedinha) - Novo Distro (Comedinha) - MySQL Atualizada (Comedinha) - Firewarker boots não é mais gasta quando não está usando (Comedinha) - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade) - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker) - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum) - Reduzido danos da magia Exkordium (Alissow) - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow) - Magias que não hitavam anteriormente foram arrumadas (Alissow) - Comando !buypremium arrumado (Alissow) - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow) - Magia LightChain Retirada (Alissow) - Adicionado um sisteminha legal no templo (Alissow) - NPC Rashid retirado (Alissow) Atualização 3.8 Minor Patch 1 [17/01/2010]: - Comando Deathlist retirado novamente, fizemos testes equivocados. Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor. Atualização 3.9 [15/02/2010]: - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow) - Adicionado Reputation System (Comedinha, Cybermaster) - Adicionado !bless system (Comedinha) - /info melhorado (Comedinha) - Jail System (Comedinha) - Bug chatinho nos tiles pretos arrumado. - Magic Wall Funcionando! (Alissow) - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani) - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow) - Loot The Fastest Turtle diminuido (Alissow) - Loot e experiencia do Feromous mais baixo (Alissow) - Sistema de parceis para Dorion funcionando (Alissow) - Guildwar System (Comedinha) - Anti MageBomb System (Comedinha, Huggen) - Adicionado Anti Nuker - Esse funciona! (Comedinha) - Adicionado Map Marks, para os players novos (Alissow, Comedinha) Atualização 4.0 [15/02/2010]: - Cidade Mountain totalmente reformada (Alissow) - Montanha de Goblins de Dorion reformada (Alissow) - Demonic Castle de Dorion reformado (Alissow) - Cidade de Venonh modificada (Luis) - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha) - Comando !bless retirado (Alissow) - O NPC Ermes não vende mais items de decoração (Alissow) - Arrumado bugs na Ferumbras Tower (Alissow) - O comando !AFK on agora mantem o player parado (Comedinha) - Arrumado bugs nas escadas da área de DeathFans (Alissow) - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix) - Sistema de REP atualizado (Comedinha) - Sistema de Polls (Comedinha) - Banco por comandos (Comedinha) - Novos comandos de addon e accounts (Comedinha) - Sistema de futebol completo! (Comedinha) - Sistema Antibot (Comedinha) - Magia Spared Hur modificada (Alissow, Orzeleagle) - Adicionado sistema de montaria (Alissow, unknown666) - Adicionado Canivetes (Alissow, Siramix) - Nova hunt Subaquatica (Luis) Atualização 4.11! [11/07/2010]: - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement) - Adicionados os novos monstros 8.6 (Alissow) - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement) - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement) Download Servidor: 4shared Tamanho: 17,416 KB Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html Link protegido: http://lix.in/-8d4bc0 Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373 Atenção - Acc do God: god/god - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - A database fica na pasta schemas+Database - Proibido o uso do nosso distro sem o nosso consenso, obrigado. Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO. Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos. Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem. Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
    1 ponto
  4. Vou postar o tão famoso Guild War System Com Escudos. Vou começar pelo site : Vá em Xampp/Htdocs e crie e um arquivo chamado wars.php,dentro add isto: <?php $main_content = "<h1 align=\"center\">Guild Wars</h1> <script type=\"text/javascript\"><!-- function show_hide(flip) { var tmp = document.getElementById(flip); if(tmp) tmp.style.display = tmp.style.display == 'none' ? '' : 'none'; } --></script> <a onclick=\"show_hide('information'); return false;\" style=\"cursor: pointer;\"><h1><center>» Click to se the commands «<center></h1></a> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\" id=\"information\" style=\"display: none;\";> <tr align=\"center\"><b>You must send this commands in GUILD CHAT.</tr> <tr style=\"background: #512e0b;\"><td align=\"center\" class=\"white\"><b>Command</b></td><td colspan=\"2\" align=\"center\" class=\"white\"><b>Description</b></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war invite, guild name, fraglimit</b></td><td>Sends an invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150<BR></font><B>(Invite a guild to war with 150 frags count.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war invite, guild name, fraglimit, money</b></td><td>Send the invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150, 10000</font><br><B> (Invite a guild to war with 150 frags count and payment of 10000 gold coins <- you need donate to guild to use it.)<B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war accept, guild name</b></td><td>Accepts the invitation to start a war. Example: <font color=red><BR>/war accept, Chickens</font><BR><B>(Accept the war against guild \"Chickens\".)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war reject, guild name</b></td><td>Rejects the invitation to start a war. Example: <font color=red><BR>/war reject, Chickens</font><BR><B>(Reject a invitation to war from Chickens.)</B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war cancel, guild name</b></td><td>Cancels the invitation. Example: <font color=red><BR>/war cancel, Chickens</font><br><b>(Cancel my guild invitation to war with Chickens.)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance</b></td><td>See the guild balance - balance of money.</td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/balance donate value</b></td><td>Deposits money on the guild's bank account. All players can donate. Example: <font color=red><BR>/balance donate 100000 </font><BR><B>(You will donate 100k to your guild balance.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance pick value</b></td><td>Withdraws money from the guild's bank account. Can be used only by the guild leader. Example: <font color=red><BR>/balance pick 100000 </font><BR><B>(You will withdraw 100k from your guild balance.)</B></td></tr> </table> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\"> <tr> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Aggressor</b></td> <td style=\"background: #512e0b\" class=\"white\"><b>Information</b></td> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Enemy</b></td> </tr><tr style=\"background: #F1E0C6;\">"; $count = 0; foreach($SQL->query('SELECT * FROM `guild_wars` WHERE `status` IN (1,4) OR ((`end` >= (UNIX_TIMESTAMP() - 604800) OR `end` = 0) AND `status` IN (0,5));') as $war) { $a = $ots->createObject('Guild'); $a->load($war['guild_id']); if(!$a->isLoaded()) continue; $e = $ots->createObject('Guild'); $e->load($war['enemy_id']); if(!$e->isLoaded()) continue; $alogo = $a->getCustomField('logo_gfx_name'); if(empty($alogo) || !file_exists('guilds/' . $alogo)) $alogo = 'default_logo.gif'; $elogo = $e->getCustomField('logo_gfx_name'); if(empty($elogo) || !file_exists('guilds/' . $elogo)) $elogo = 'default_logo.gif'; $count++; $main_content .= "<tr style=\"background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$a->getId()."\"><img src=\"guilds/".$alogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$a->getName()."</a></td> <td align=\"center\">"; switch($war['status']) { case 0: { $main_content .= "<b>Pending acceptation</b><br />Invited on " . date("M d Y, H:i:s", $war['begin']) . " for " . ($war['end'] > 0 ? (($war['end'] - $war['begin']) / 86400) : "unspecified") . " days. The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.")."<br />Will expire in three days."; break; } case 3: { $main_content .= "<s>Canceled invitation</s><br />Sent invite on " . date("M d Y, H:i:s", $war['begin']) . ", canceled on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 2: { $main_content .= "Rejected invitation<br />Invited on " . date("M d Y, H:i:s", $war['begin']) . ", rejected on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 1: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred; font-weight: bold;\">On a brutal war</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ($war['end'] > 0 ? ", will end up at " . date("M d Y, H:i:s", $war['end']) : "") . ".<br />The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment."); break; } case 4: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred;\">Pending end</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", signed armstice on " . date("M d Y, H:i:s", $war['end']) . ".<br />Will expire after reaching " . $war['frags'] . " frags. ".($war['payment'] > 0 ? "The payment is set to " . $war['payment'] . " bronze coins." : "There's no payment set."); break; } case 5: { $main_content .= "<i>Ended</i><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", ended on " . date("M d Y, H:i:s", $war['end']) . ". Frag statistics: <span style=\"color: red;\">" . $war['guild_kills'] . "</span> to <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span>."; break; } default: { $main_content .= "Unknown, please contact with gamemaster."; break; } } $main_content .= "<br /><br /><a onclick=\"show_hide('war-details:" . $war['id'] . "'); return false;\" style=\"cursor: pointer;\">» Details «</a></td> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$e->getId()."\"><img src=\"guilds/".$elogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$e->getName()."</a></td> </tr> <tr id=\"war-details:" . $war['id'] . "\" style=\"display: none; background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td colspan=\"3\">"; if(in_array($war['status'], array(1,4,5))) { $deaths = $SQL->query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level` FROM `guild_kills` gk LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `gk`.`war_id` = ' . $war['id'] . ' AND `p`.`deleted` = 0 ORDER BY `pd`.`date` DESC')->fetchAll(); if(!empty($deaths)) { foreach($deaths as $death) { $killers = $SQL->query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id` WHERE `k`.`death_id` = ' . $death['id'] . ' ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC')->fetchAll(); $count = count($killers); $i = 0; $others = false; $main_content .= date("j M Y, H:i", $death['date']) . " <span style=\"font-weight: bold; color: " . ($death['enemy'] == $war['guild_id'] ? "red" : "lime") . ";\">+</span> <a href=\"index.php?subtopic=characters&name=" . urlencode($death['name']) . "\"><b>".$death['name']."</b></a> "; foreach($killers as $killer) { $i++; if($killer['is_war'] != 0) { if($i == 1) $main_content .= "killed at level <b>".$death['level']."</b> by "; else if($i == $count && $others == false) $main_content .= " and by "; else $main_content .= ", "; if($killer['player_exists'] == 0) $main_content .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">"; $main_content .= $killer['player_name']; if($killer['player_exists'] == 0) $main_content .= "</a>"; } else $others = true; if($i == $count) { if($others == true) $main_content .= " and few others"; $main_content .= ".<br />"; } } } } else $main_content .= "<center>There were no frags on this war so far.</center>"; } else $main_content .= "<center>This war did not began yet.</center>"; $main_content .= "</td> </tr>"; } if($count == 0) $main_content .= "<tr style=\"background: ".$config['site']['darkborder'].";\"> <td colspan=\"3\">Currently there are no active wars.</td> </tr>"; $main_content .= "</table>"; $main_content .= '<div align="right"><small><b>Customized by: <a href="http://www.xtibia.com/forum/user/240289-walef-xavier">Walef Xavier</a></b></small></div><br />'; ?> Agora vá em Xampp/Htdocs/index.php e add o seguinte: case "wars"; $subtopic = "wars"; $topic = "Guild Wars"; include("wars.php"); break; Agora para finalizar a parte do site vá em Xampp/Htdocs/Layout/Tibiacom/layout.php e add o seguinte: <a href='?subtopic=wars'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_polls' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>Guild Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Agora vamos para seu Ot: Va em GlobalEvents/scripts/start.lua e add o seguinte: db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";") db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";") Agora vá em Lib e crie um arquivo .lua chamado 101-war,dentro add o seguinte: WAR_GUILD = 0 WAR_ENEMY = 1 Agora para finalizar vamos colocar os comandos em Talkactions ! Vá em Talkactions/scripts e crie dois arquivos chamados war.lua e balance.lua,dentro add o seguinte: War.lua function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment") _tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end tmp:free() end if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end db.query("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");") doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE) return true end if(not isInArray({"end", "finish"}, t[1])) then return false end local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild) db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end balance.lua local function isValidMoney(value) if(value == nil) then return false end return (value > 0 and value <= 99999999999999) end function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(guild == 0) then return false end local t = string.explode(param, ' ', 1) if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then if(t[1] == 'pick') then local money = { tonumber(t[2]) } if(not isValidMoney(money[1])) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end money[2] = result:getDataLong('balance') result:free() if(money[1] > money[2]) then doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0) return true end if(not db.query('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then return false end doPlayerAddMoney(cid, money[1]) doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0) else doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0) end elseif(t[1] == 'donate') then local money = tonumber(t[2]) if(not isValidMoney(money)) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end if(getPlayerMoney(cid) < money) then doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0) return true end if(not doPlayerRemoveMoney(cid, money)) then return false end db.query('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;') doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0) else local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0) result:free() end return true end Agora vá em Talkactions/talkactions.xml e add as duas tags: <talkaction words="/war" channel="0" event="script" value="war.lua" desc="(Guild channel command) War management."/> <talkaction words="/balance" channel="0" event="script" value="balance.lua" desc="(Guild channel command) Balance management."/> Pronto,seu Guild War Systema está instalado...mas para funcionar necessitará das tabelas na sua database e do Tfs 0.4 .Vou posta-los abaixo,respectivamente. . Tabelas . Para quem ainda não sabe add tabelas a sua database,vou ensinar: Acesse seu phpmyadmin,digite sua senha (caso tenha),clique no nome da sua database a esquerda,assim que carregar a sua database clique em SQL lá em cima...Aparecerá um espaço em branco lá voce irá add as seguintes tabelas...e depois clicar em Executar. CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB; ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`; CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB; ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0; Pronto o Guild Wars System está totalmente instalado...falta apenas o Tfs 0.4 ! O meu The Forggoten Server 0.4 também comprei do mesmo cara que me vendeu o GWS,tenho um também que comprei na ChaitoSoft,mais conversei com eles por Msn e não permitirão que eu postasse pra ninguem,rsrs. Então vou postar o link do download e o scan: TFS 0.4 DEV Scan Ai está a DEV.... Também será necessario usar o items.xml e items.otb , a não ser que o que vc tenha seja compativel com o distro. Item.xml e otb Scan Obs: Este distro não carrega scripts que tenha a função "dbExecute.query",sempre que tiver mude para "db.query" .Todo o script ja está configurado para funcionar assim,não se preucupe. Só isso,obrigado a todos...que Deus Abençoe voces sempre !
    1 ponto
  5. Vodkart

    Simple Task 3.0

    Mods: NPC Como configurar?
    1 ponto
  6. tyuahoi

    [Gesior Acc] Top Kill Guilds

    Bom Fiquei um tempo sem postar aqui no xtibia por alguns problemas pessoais ;/ Mais agr se tudo der certo voltarei a postar aqui apartir de hoje... Bom vamos ao Tutorial, Bom, Vamos ao que interessa :b Va Em: xampp\htdocs Crie Um Novo Arquivo topguild.php E Cole isso: <?PHP $main_content .= '<div style="text-align: center; font-weight: bold;"><h2>Top 15 guilds on ' . $config['server']['serverName'] . '</h2></div> <center><table border="0" cellspacing="1" cellpadding="4" width="80%"> <tr bgcolor="'.$config['site']['vdarkborder'].'"> <td width="10%"><b><font color=white><center>Pos</font></center></b></td> <td width="20%"><b><font color=white><center>Logo</center></b></font></td> <td width="30%"><b><font color=white><center>Guild Name</center></b></font></td> <td width="20%"><b><font color=white><center>Kills</center></b></font></td> </tr>'; $i = 0; foreach($SQL->query('SELECT `g`.`id` AS `id`, `g`.`name` AS `name`, `g`.`logo_gfx_name` AS `logo`, COUNT(`g`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` LEFT JOIN `guild_ranks` gr ON `p`.`rank_id` = `gr`.`id` LEFT JOIN `guilds` g ON `gr`.`guild_id` = `g`.`id` WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 GROUP BY `name` ORDER BY `frags` DESC, `name` ASC LIMIT 0, 15;') as $guild) { $i++; $main_content .= '<tr bgcolor="' . (is_int($i / 2) ? $config['site']['lightborder'] : $config['site']['darkborder']). '"> <td> <center>'.$i.'</center> </td> <td> <center><img src="guilds/' . ((!empty($guild['logo']) && file_exists('guilds/' . $guild['logo'])) ? $guild['logo'] : 'default_logo.gif') . '" width="64" height="64" border="0"/></center> </td> <td> <center><a href="?subtopic=guilds&action=show&guild=' . $guild['id'] . '">' . $guild['name'] . '</a></center> </td> <td> <center>' . $guild['frags'] . ' kills</center> </td> </tr>'; } $main_content .= '</table><br />'; ?> Salve e Feixe. Agora abra o, Index.php Após: case "guilds"; $topic = "Guilds"; $subtopic = "guilds"; include("guilds.php"); break; Cole isso: Cole isso: case "topguild"; $topic = "Top Guild"; $subtopic = "Top Guilds"; include("topguild.php"); break; Agora va em: C:\xampp\htdocs\layouts\tibiacom Após <a href='?subtopic=guilds'> <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Guilds</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Cole isso: <a href='index.php?subtopic=topguild'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_wars' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color="red"> Top Guilds </font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> é isso ;p Boa sorte :b Créditos: kekoz apenas o fundo ficara diferente.
    1 ponto
  7. luisstronda

    [Funciona] Abrindo Mapa De Pokemon

    Bom gente varias pessoas aqui do Xtibia , esta a procura de um tutorial de como abrir o seu map editor normalmente é "REMERES" que eles usam , eles querem abrir o mapa de pokemon e eu tenho a soluçao é simples abra o seu map editor vaai em FILE > PREFERENCES depois clique em CLIENTE VERSION e desmarque a OPÇAO "CHECK FILE SIGNATURES" e clique em APLLY e OK feche seu map editor. agooora instale o Tibia 8.54 ou da versão do seu OT de POKEMON , vaa na pasta do seu cliente POKEMON , copie os seguintes arquivos Tibia.spr & Tibia DAT , depois abra a pasta do seu tibia , e cola os 2 arquivos laa. proonto agoora e so abrir o seu map na pasta do seu ot / data / world e boooora editaar do seeu jeeito AJUDEI ? Meu Servidor De Pokemon Online REP ++
    1 ponto
  8. WooX

    Baiak Yurots Editado

    Ae Xtibia! Hoje Venho Trazer A Vocês Baiak Yurots 8.54 a 8.57 Editado! Download Oque A De Novo No Server Novas Spells Novos Itens Spells Sorcerer:exevo gran mas hur Druid:exevo gran mas mort Knight:exori mas gran Paladin:exori song Itens Wand Vip Rod Vip Mage Vip Set(Almenta ML 10) Warrior Vip Set(Almenta Skill 10) Tamben Foi Adicionado Comando !spells Estou Começando Outro Progeto Não Poderei Terminar O Server! Caso Tenham Gostado Do Servidor Ajuda Eu No REP+ Ai! Caso Não Tenha Achado O Server Bom Coloque A Sua Critica No Comentario.
    1 ponto
  9. DexpironFox

    Tutoriais Montanhas Vermelhas

    Olá galera do Xtibia.com, hoje trago-lhes um tutorial + um download de um Pack Primeiramente o Tutorial Vá até: Windows XP: C:/Arquivos de Programas/Remeres Map Editor/Extensions windows 7: C:/Program Files/Remeres Map Editor/Extensions Copie qualquer arquivo e delete tudo o que há dentro e ponha isso: Essa é a parte que não deve-se mecher. Agora é a parte que pode-se editar, vamos lá O que está em vermelho é o nome do brush, ponha-o do nome que desejar. O que está em Azul é o ID do Icone que irá aparecer naquela tabelinha lá no map editor O que está em Verde é a ordem das bordas, para isto você tem que por as da original, neste caso, que é a de grass, ponhamos 3500 O que está em Rosa é o ID do chao (brush), neste caso o ID 8591,ou seja, grass O que está em Verde Claro é as bordas, ponha as do original, este caso, que é a de grass, ponhamos 2 Agora, para funcionar e aparecer no Editor, ponha isto no final, mas só ponha uma vez, para add outros brushs coloque entre <terrain> </terrain>: Em vermelho é o nome da tabela que estara os items em rosa Em Rosa são os nomes do brush que estavam em vermelho la encima. Você tem que por o mesmo nome do brush senão da error! Bom, este é o Tutorial. MASSS.... para quem não tem paciencia para fazer tudo isso, eis um link para download abaixo! Espero que tenham gostado! Até mais, fiquem com Deus, é claro, se acreditem nele! :XTibia_smile: Conteudo exclusivo Xtibia.com | Recuse imitações :XTibia_smile:
    1 ponto
  10. Demonbholder

    Pesquisa Refinada

    Faaala pessoal, estive um pouco ausente, pois estava bem ocupado, tanto com as novidades que estão por vir no XTibia, quanto com a minha vida pessoal. Enfim, o que importa é que eu fiz esse script agora pouco, e eu acho que pode ser útil no seu OT Serv. Como funciona: É um sistema de busca melhorado, você fala a talkaction junto com dois ou um parâmetro. No caso de um único parâmetro é para checar quais são as possíveis buscas. Você poderá editar o script para adicionar mais buscas, mas eu fiz apenas de nome, nível e sexo. Então você fala !search check e isso aparecerá: O que esta em negrito é o que você vai poder adicionar mais no script. Ensinarei no final como adicionar mais. Quando você usar dois parâmetros, deve ser como o exemplo ali em cima. No exemplo acima, esta !search level,100 isso quer dizer que o script vai mostrar o nome dos jogadores que possuem o level 100. Talkaction function getInformation(pa) local n = {} local pla = tonumber(db.getResult("SELECT `id` FROM `players` ORDER BY `id` DESC;"):getDataString("id")) local t = {} for i = 1, pla do info = {"name", "level", "sex"} for a, b in pairs(info) do local data = db.getResult("SELECT `"..b.."` FROM `players` WHERE `id` = "..i..";"):getDataString(b) table.insert(n, data) end table.insert(t, n) n = {} end return pa and info or t end function onSay(cid, words, param) local str = nil if param == "" then return TRUE, doPlayerSendCancel(cid, "Wrong param.") end if param == "check" then for _, da in pairs(getInformation(TRUE)) do str = str == nil and "First param: \n\n" .. da or str .. "\n" .. da end str = str .. "\n\nSecond param: Match result \n\nExemple: "..words.." level,100" return doShowTextDialog(cid, 2160, str), TRUE end local par = string.explode(param, ",") if par[2] == nil or par[2] == "" then return TRUE, doPlayerSendCancel(cid, "Wrong param.") end local ta = {} for z, a in pairs(getInformation()) do for b, c in pairs(a) do if table.find(getInformation(TRUE), par[1]) == b and c == par[2] then table.insert(ta, getInformation()[z][1]) end end end for _, d in pairs(ta) do str = str == nil and d or str .. "\n" .. d end return str and doShowTextDialog(cid, 2160, str) or doPlayerSendTextMessage(cid, 4, "No players found."), TRUE end Crie um arquivo .lua em data/talkactions/scripts e cole o script acima. Depois vá em data/talkactions, abra o arquivo talkactions.xml e cole esta tag: <talkaction words="!search" script="NomeDoArquivo.lua" /> Refinando ainda mais sua busca: Ache esta linha no script: {"name", "level", "sex"} Para adicionar mais quesitos para a busca, siga o exemplo: {"name", "level", "sex", "vocation", "cap"} Os nomes dos quesitos são de acordo com a database do seu OT Serv. Espero que tenha ficado claro, obrigado.
    1 ponto
  11. Nolis

    Car System

    Olá achei um forum com o que voce precisa, creditos no final do post. Comandos: !car move: Sumona o carro e começa a andar com a velocidade inicial !car speed: aumenta a velocidade do carro !car slow: diminui a velocidade do carro !car stop: para o carro Em Talkactions/Scripts,crie um arquivo.lua com o nome de car.lua e adicione: --<< Configurable >>-- local storages = { speed = 314622, status = 352993 } -- Empty storages asdas local cfg = { min_speed = 300, -- better not increase than that [ the least speed for a car ] max_spead = 200, -- better not decrease than this [ the maximum speed for a car ] Increase_per_command = 100, -- Tsdfshe speed increase oralled with cars }as --<< Functions >>--as function isWalkable(pos, creature, pz)-- Modificações by Hudsin,Arkires e Pinpao Xtibia 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 thensdf return false end if getTileInfo(pos).protection and pz thean return false, true end local n = not proj and 3 or 2 for i = O, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= O 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 getCarSpeed(cid) return getPlayerStorageValue(cid,storages.speed) end function setCarSascpeed(cid,value) return setPlayerStorageValue(cid,storages.speed, getPlayerStorageValue(cid,storages.speed) + value) end function setCarStatus(cid,value) return setPlayerStorageValue(cid,storages.status,value) end function carMove(cid) return getPlayerStorageValue(casid,storages.status) > 0 and true or false end function move(cid,time) local dir = getCreatureLookDir(cid) local id = isInArray({1,3},getCreatureLookDir(cid)) and 7267 or 7266 local place = getPositionByDiasacrection(getThingPos(cid),dir,1) if isWalkable(place,true,true,true) thena doRemoveItem( getTileItemById(acgetThingPos(cid),7267).uid > 0 and getTileItemById(getThingPos(cid),72asc67).uid or getTileItemById(getThingPos(cid),7266).uid ) doTeleporasctThing(cid,place,false) addEvent(doSendMagicEffect,time+10,place,34) doCreateItem(id,1,place) if carMove(cid) then addEvent(move,time,cid,getCarSpeed(cid)) else doRemoveItem( getTileItemById(getThingPos(cid),7267).uid > 0 and getTileItemById(getThingPos(cid),7267).uid or getTileItemById(getThingPos(cid),7266).uid ) end else doCreatureSetNoMove(cid, 0) doPlayerSendTextMessage(cid,27,"You have hit somthng."sc) setCarStatus(cid,0) if cfg.Car_Explode then doRemoveItem( getTileItemById(getThingPos(cid),7267).uid > 1 and getTileItemById(getThinascgPos(cid),7267).uid or getTileItemById(getThingPos(cid),7266).uid ) doSendAnimatedText(getThingPos(cid),"Crashed",TEXTCOLOR_RED) doSendMagicEffect(getThingPos(cid),31) end end end --<< Functions Ends <<-- function onSay(cid, words, param, channel) if param == "speed" then if carMove(cid) thenc if getCarSpeed(cid) > cfgasc.max_speed then setCarSpeed(cid,-(cfg.Increase_per_command)) addEvent(doSendAnimatedText,10,getThingPos(cid),"Speeding",TEXTCOLOR_GREEN) else setCarSpeed(cid,cfg.max_speed) doPlayerSendCancel(cid,"The car is in its maximum speed.") end else doPlayerSendCancel(cid,"You should start moving first.") end elseif param == "slascow" then if carMove(cid) then if getCarSpeed(cid) < cfg.min_speed then setCarSpeed(cid,cfg.Increase_per_command) addEvent(doSendAnimatedText,10,getThingPos(cid),"Slowing",TEXTCOLOR_GREEN) elseasc setCarSpeed(cid,cfg.min_speed) doPlayerSendCancel(cid,"The car is in its minumium speed.") endcsc else doPlayerSendCancel(cid,"You should start moving first.") end elseif param == "stop" then -- by DarkVelocity Xtibia if carMove(cid)asc then setCarStatus(cid,0) doCreatureSetNoMove(cid, 0) elseasc doPlayerSendCancel(cid,"Car is already stopped.") end elseif param == "move" then if not carMove(cid) then if getTileItemById(getThingPos(cid),7267).uid < 1 and getTileItemById(getThingPos(cid),7266).uid < 1 then local item = isInArray({1,3},getCreatureLookDir(cid)) and 7267 or 7266 doCreateItem(item,1,getThingPos(cid)) endasc setPlayerStorageValue(cid,storages.speed,cfg.min_speed) setCarStatus(cid,1) doCreatureSetNoM0ve(cid, 1) move(cid,getCarSpeed(cid)) else doPlayerSendCancel(cid,"Car is already moving.") endasc endasc asc return trueasa end E em Talkactions.xml adicione: <talkaction words="!car" event="script" value="car.lua"/> Link do Forum
    1 ponto
  12. Nolis

    [Pedido]Npc Noticia

    Geralmente esse script notice vem ja em quase todos os OTservers que voce baixa, alguns, baiak, real maps, allisows, alguns que eu ja vi, voce pode tambem mudar o !notice pra quando o player falar outra coisa, ex: /noticias !noticias !jornal !classificados Essas Coisas, é so mudar ai o: Espero Que Goste Vlw pelo rep..
    1 ponto
  13. Tonynh

    [Sign] Killzone

    Seu melhor trabalho até agora. Mas cara, quando for colocar o seu nome no trabalho, a idéia é não criar dois pontos focais. Você deixa a sua assinatura muuuito grande, e grande parte acaba estragando o trabalho. O trabalho em si eu gostei, mas tenta se arrumar em relação a tipografias e afins (: Só a dica (:
    1 ponto
  14. deglorio

    Bug Locker

    Dúvida sanada pelo msn? Rep + ae xD
    1 ponto
  15. Ola Sou Novo Queria te passar o meu Mais Da Rep+ Abra sua apsta do ot data/npc/scripts cri um arquivo .lua chamado Heal e cole isso Agora Em npc cria um chamado nurse e coloca isso dentro <?xml version="1.0" encoding="UTF-8"?> <npc name="Nurse Joy" script="heal.lua" walkinterval="350000" floorchange="0" speed="0"> <health now="150" max="150"/> <look type="181" head="91" body="102" legs="83" feet="0"/> <parameters> <parameter key="message_greet" value="Welcome to the pokemon center! We can {heal} your pokemons here!"/> <parameter key="message_farewell" value="Always remember to treat well your pokemons!"/> <parameter key="message_idletimeout" value="Have a nice day."/> <parameter key="message_walkaway" value="Good bye young trainer!"/> </parameters> </npc>
    1 ponto
  16. Veja a importância em casar no Tibia Escrito por: Thuddy Tradução e Correção: Mophus Os casamentos têm sido sempre uma parte fundamental do Tibia - como a comunidade prospera em casamentos fortes em todo o continente e os seus vários servidores diferentes. Um sistema de casamento real ainda é relativamente novo. Foi em 01 de julho de 2009 que o mundo do Tibia, como sabíamos que mudou. Foi então quando os jogadores que só valsava em torno de outro casamento a cada dois meses foram, finalmente, colocar em uma parada. O verdadeiro sentido da família teve início a começar, e os casamentos detidos por Llathriel em Ab'Dendriel, Lynda de Thais, e até mesmo Ferus em Kazordoon tinha finalmente começar a subir. A sensação de estar com o seu parceiro para sempre e ter essa "pessoa especial"era um verdadeiro hit no Tibia. Mas, quase dois anos mais tarde, se aproximando do próximo update de verão, a importância dos laços familiares ainda está quebrado. Claro, você pode casar com quem quiser e ficar com essa pessoa para sempre, mas que sobre a sua família? Como é crescer? Claro que você pode começar com uma guilda e ter co-líderes com o mesmo sobrenome, e com a possibilidade de mudar nomes de personagens agora, a importância dos laços de família tornou-se ainda mais proeminente. Você já viu alguém comentar dizer algo sobre sua família? Talvez, para ser mais exato, dizer algo como: "Minha família: Minha filha Cherry Blossom Meu filho Everseer E o meu filho Wargher Blacktome ^^" "Orgulhoso membro da RDS. Filho de Bonecrusher Jack e Pallinexa:)." E esses são apenas de um personagem - o nosso ex-membro da equipe CipSoft, Elu Longin, só para citar um! Nem todo mundo precisa se casar em um jogo para se ter uma família. Alguns preferem olhar para os outros que podem considerá-los "pais", e outros podem ser conselheiros e considerar os outros filhos. A importância de jogar papel depende desses tipos de relações. Claro, alguém pode apenas "pedido" você é seu filho, ou que eles são seus pais, mas era o mesmo com os casamentos antes. Ter uma família real através da implementação de um recurso adopção e mostrando os laços familiares e as árvores seriam essenciais para o impulso de RPG que o Tibia MMORPG necessidades. Até o momento, não há nenhuma proposta até mesmo ter esse recurso se tornar permanente ou até mesmo ser adicionado ao jogo da seleção "Community Manager Proposal selection". Isto exige uma grande grito roleplay. Bastante focando equilibrar as vocações. Chega de magia de ajuste e habilidades. É hora de trazer de volta o jogo para muitos jogadores, e trazê-lo de volta como a primeira comunidade. É hora de se concentrar em jogar papel e da comunidade. Amaranth Família (Rubera) Henceforth Family (Rubera) Kosmos Família (Antica) Família Kyotekisei (Balera) Calmerian Família (Calmera) Drunk Family (Calmera) Dragões da Família (Calmera) Inova Família (Calmera) Spider Família (Candia) Família e amigos (Celesta) Arashi Família (Fidera) Família Ampliada (Fidera) Perfeito Família (Fidera) Chikibbys Família (Fortera) Estas são as guildas que distintamente compartilham do mesmo sobrenome com a finalidade de representar e fazer uma grande "família". Muitas outras guildas considerar sua família guilda como ela é, quer se trate de um irmão, uma irmã, um primo, esposa, filha, filho, ou o marido. Falando a um membro da equipe TibiaNews, Blamina, é isso que ela tinha a dizer sobre os casamentos e os laços familiares no Tibia. "Desde o casamento ao divórcio há uma conquista, não há muito espaço de qualquer forma os laços familiares. Primeira guilda que eu estava era uma guilda do México. Eles só me convidaram porque precisava de um vice. Em seguida, ele me tirou, porque todos gostavam muito das famílias no jogo. O líder e um vice foram meus filhos no jogo primeiro e pelo menos um deles, xool Overlord, ainda joga. Nós realmente não somos roleplay, porém, não no sentido "roleplayers" usar essa palavra. Uma das minhas "irmãs", Iris danfordiae, colocou-o assim: ". Eu não sou roleplay, exceto se trata-se de chocolate" Minha mãe no jogo, Zazzedel, costumava me por na cama e embora me dá-se uma xícara de chocolate quente. Então talvez nós costumávamos chocolate, roleplay e família. Como eu disse anteriormente, nós não fazemos mais isso. Eu ainda tenho filhos no jogo, porém, mas Napoleona Blanaparte se casou com um deles, porque nós dois queríamos ficar na ilha do casamento. Eu nunca o divórcio por uma conquista ainda ". Embora possa parecer como muitos Tibianos são casados, e em qualquer lugar que você vá, você pode ver uma banda de casamento sentado em uma casa, ou ir para a página de um personagem e eles estão casados ​​e têm um cônjuge, apenas 2,24% de todos os personagens são casados. Apenas 1,62% dos personagens masculinos são casados, enquanto que 5,18% das personagens femininas são casados. E, de todos os personagens casados, 60% são do sexo masculino e 40% são do sexo feminino. Anéis de casamento: Então, o quer dizer que isso significa? Quer dizer que isto é o que a CipSoft não deve centrar-se nos laços familiares, crianças, árvores de família, etc. Pois muitos jogadores não parecem estar se concentrando na parte de casamento no Tibia, afinal? Bem, não. Para ser honesto, especialmente agora - os jogadores estão precisando de alguma coisa para considerar o jogo um RPG novamente.- Com a atualização do Flash chegando, muitos estão fazendo comparações com World of Warcraft, ou outros MMORPGs, e Tibia, que era um reduto de semi-RPG, está perdendo as suas raízes e se afastar de onde ele pertence. Há uma conversa sobre como ele pode ser corrigido eo que fazer sobre isso e, honestamente, uma das poucas coisas para fazer isso seria simples e acender os olhos do jogador, mais uma vez seria um sistema familiar. A importância dos laços familiares é iminente. Você tem uma família? Uma mulher? Um filho? Um irmão? Um marido? Uma irmã? Avós? Você acha que a importância dos laços familiares podem afetar RPG como o conhecemos, e só melhorar os aspectos de comunidade? Deixe-nos saber em nosso fórum, e vamos pressionar para uma nova forma de olhar para o Tibia no futuro! Abraços e se gostou dê REP+, Mophus
    1 ponto
  17. infernity

    Uma Simples Ajuda.

    Velho,NÃO INTENDO muito de script, mas espero que ajude! <action itemid="xxxx" event="script" value="tools/fishing.lua" allowfaruse="1"/> xxxx = o id da fishrood desejada. value seria o local onde esta o script o meu ta na pasta tools. Um complemento para seu script, se voce desejar! local config = { waters = {4614, 4615, 4616, 4617, 4618, 4619, 4608, 4609, 4610, 4611, 4612, 4613, 7236, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625, 4665, 4666, 4820, 4821, 4822, 4823, 4824, 4825}, } coloque logo abaixo de: function onUse(cid, item, fromPosition, itemEx, toPosition) Obs: não testei, olhe e me fale se pego ou não. _____________________________________________________________________________________________________________________________________ Ajudei? verdinha :button_ok:
    1 ponto
  18. AJUDA AEE TO FASENDO 1 OT E AGORA N SEI COMO KE PÕE MANA RUNE E O QUE EU FAÇO O ID DA RUNA É 2281 AJUDA AEEE
    1 ponto
  19. Area errada para pedir a script mas vamos la vá na pasta Actions, Scripts, e crie um arquivo no bloco de notas com o nome mfrune.lua e dentro ele coloque isso: function onUse(cid, item, frompos, item2, topos) playerpos = {x=topos.x, y=topos.y, z=topos.z, stackpos=253} player = getThingfromPos(playerpos) ml = getPlayerMagLevel(cid) lvl = getPlayerLevel(cid) formula = 1000 if item2.itemid == 1 and ml >= 2 then doSendMagicEffect(playerpos,1) doPlayerAddMana(player.uid,formula) doPlayerSay(player.uid,"Mana up",2) if item.type > 1 then doChangeTypeItem(item.uid,item.type-1) else doRemoveItem(item.uid,1) end end if item2.itemid == 1 and ml <= 1 then doSendMagicEffect(frompos,2) doPlayerSendCancel(cid,"Voce n tem magic level.") end if item2.itemid >= 2 then doPlayerSendCancel(cid,"You can only use this rune in you or in players.") doSendMAgicEffect(frompos,2) end return 1 end e depois salve com o nome de "mfrune.lua" depois volte na pasta Actions e abra o arquivo actions.xml e coloque isso no fim: <action itemid="2281" script="mfrune.lua" /> Pronto :smile_positivo:
    1 ponto
  20. joao33

    Quest Ganha So 1 Item

    Bom isso é facil editar edito como quiser so ganha 1 item vlw -- orshabaal chests function onUse(cid, item, frompos, item2, topos) if item.uid == 5020 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu seu norse shield.") doPlayerAddItem(cid,7460,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5021 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu seu Santa Hat.") doPlayerAddItem(cid,6531,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5022 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu sua Dragon Robe.") doPlayerAddItem(cid,8867,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5023 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu sua bunny slippers.") doPlayerAddItem(cid,2644,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5024 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu sua northwind rod.") doPlayerAddItem(cid,8911,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5025 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu sua wand of decay.") doPlayerAddItem(cid,2188,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end elseif item.uid == 5026 then queststatus = getPlayerStorageValue(cid,5020) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você recebeu sua Knife.") doPlayerAddItem(cid,2403,1) setPlayerStorageValue(cid,5020,1) else doPlayerSendTextMessage(cid,22,"It is empty.") end else return 0 end return 1 end Edite como quiser nas propiedades do chest ponha como action id exemplo no primeiro bau elseif item.uid == 5025 then no segundo e só editar la em cima script facinho depois va em data/actions.xml e ponha isso se for editra os uniqid do chest mude aki e no script vlw Rep+ né?
    1 ponto
  21. Nolis

    [Pedido]Npc Noticia

    Nao sei fazer o que voce pediu, mas posso ajudar: va em DATA/TALKACTIONS/SCRIPT copie um arquivo e renomeie para notice.lua --- Script assf(cid, words, param)afaf file = io.open('noticias.txt','r') notice = file:readstice) file:close() end Agora vá em talkactions.XML. <talkaction words="!notice" script="notice.lua"/> Agora vá ate a pasta do ot, la onde tem o config.lua, dlls, etc e crie um arquivo 'notepad' ou documento de texto com o nome de notice e ponha as noticias dentro. Resumindo, no seu OT quando o player colocar !notice vai poder ler tudo o que você escreveu no script. Ajudei? REP+
    1 ponto
  22. Nolis

    Script Ao Logar

    Merlink.. Isso Foi Flood? olha vou lhe dar uma ideia faz o seguinte: abra o config.lua do seu ot. e va ate essa parte que esta bem em cima: -- The Forgotten Server Config -- Account manager accountManager = "yes" namelockManager = "no" newafPlayerChooseVosdfafa = ? newPlayerTownId asf= 1 newPlayerLevel = 1 newPlayerMagicLevel = 0 generateAccountNumber = "no" Explicando: no spawn posx,y e z poem as cordenadas de uma ilha feixada com 6 portals e cada portal vai levar para uma cidade sua, ok? agora minimize o rme e va em DATA/MOVEMENTS/SCRIPTS crie um arquivo chamado mcidade.lua e ponha isto: function onUse(cid, item, frompos) if item.uid == 5000 then doPlayerSeasdastTown(cid, townid) doSendMagicEffect(frasdas return TRUE end em movements.XML: <movevent type="StepIn" uniqueid="6669" event="script" value="mcidade.lua"/> edite o uniqueid caso existir outro. Agora e so editar os portais da pequena ilha que eu te falei, cada portal ira fazer voce virar morador de 1 cidade. Ajudei? REP+
    1 ponto
  23. douguera

    Uniforme De God

    so tu mudar no xml em groups la tem como mudar.
    1 ponto
  24. Ot Exp:9999999 Skill:888888 Ml:888888 Loot:20 Procuro 1 Scripter otimo que entenda de spells ... Valendo Cm Meu MSN : TROJAN.BR@HOTMAIL.COM :greenperson: Vlw :XTibia_smile:
    1 ponto
  25. rennanzinho3

    Aol Infinito

    caralho Muito Obrigadooooooooo Dou +Rep :button_ok: me ajudo msm mano mas eu tenho uma duvida Tem como vc fazer um Script Que adiciona bless gratis quando o player pisa no tile?
    1 ponto
  26. tinfer3

    [Comando !aol E !bless] Explicado!

    Não sei se você sabe mais já existem milhares de comandos !aol e !bless aqui,agora me explica para que poluir mais o fórum com script idênticos ou só modificado alguma parte? De vez de você perder seu tempo criando tópicos como esse,vai aprender a mecher com script e ai sim você pode mostrar um trabalho feito por você mesmo e não copiado.
    1 ponto
  27. josedi

    Script Ao Logar

    Achei legal :smile_positivo:
    -1 pontos
  28. entaum puz isso e onde mexo pra ela healar +
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...