Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 10/29/11 em todas áreas
-
Criando Um Cliente 100% Proprio
LuisMatheuziin e 2 outros reagiu a Tony por um tópico no fórum
Olá pessoal do Xtibia! Hoje vou ensinar a vocês como criar um cliente 100% próprio para seu servidor de tibia. :forward: Créditos :back: :star2: Jakiin :star2: Trazer ao x-tibia :star2: TiraDuvidas :star2: Fazer o Tutorial Este tópico recebeu destaque em nosso portal!3 pontos -
[Creaturescript] Kill Monster Win Item
jlimacoelho1 e um outro reagiu a SkyDangerous por um tópico no fórum
Script: Você mata um monstro e ganha um item. Cria um arquivo lua chamada monster.lua em creaturescript. local sky = { monster = "Nome do Monstro", item = {item, item1,item2,item3}, storage = 15000 } function onKill(cid, target, lastHit) if getPlayerStorageValue(cid, sky.storage) < 1 then if isPlayer(cid) and getCreatureName(target) == sky.monster then doPlayerAddItem(cid, sky.item[math.random(1, #sky.item)]) setPlayerStorageValue(cid, sky.storage, 1) end end return true end em seguida abra creaturescript.xml e colaca essa tag <event type="kill" name="killmonster" event="script" value="monster.lua"/> abra login.lua e cole isso: registerCreatureEvent(cid, "killmonster") agora abra o monstro que vai ter esse efeito e cola isso: <script> <event name="killmonster"/> </script> Editando: Nome do monstro que você quer. monster = "Nome do Monstro", Onde está o nome item coloca-o id dos item , se quiser acrescentar mais pode. item = {item, item1,item2,item3}, Agradecimentos: OneShot e Apocarai E Tutorial do Outro forum por dar a ideia.2 pontos -
Styller Yourots 8.60 Original (PLATINUM) RPG (Compilado para Linux e para Windows) Mapa Base: Yourots 1.2 Editado por Leonardo. Informações: Versão 0.6 17/07/09 -Novo Visual do Templo. -95% a City 8.50 -Novas Quest\\\'s -Depot com novo Visual -SD igual a do Global. -Novos Monstros do 8.5 com respawn. -Novas Houses -Addons Funcionando. -Married Outfit -Firewalker Boots 100%. -Adicionada Itens 8.50 100%. -GOD 100%. -Adicionado Change Log -Soft Boots Funfando -Dual Hit -Npc System 100%.. -Questdoors. -Novas areas de Hunt -Respawn de Medusa Adicioando. -Demon Oak Quest 100%. -Guardian Halberd Quest. -Algumas Casas com novas Paredes. -Novo Outfit (KinG). -Inquisition 100% -Melhorei o Respawn de Bog Raider da Hydras -Sem o bug dos Grim Reapers -Npc Bless 100% -Novas Magias 8.5 -Sem o Icone de Pz e da Red Sword (por enquanto) -Ferumbras Tower (Igual a do Global) Agora Completada e com caminho para ir até ela. -Agora a Sudden Death (SD) após dar seu hit deixa um elemento de Morte tirando \\\"50\\\" -Remodelei o Amazon Camp. -Agora o Player pode recarregar sua Soft Boots e Firewalker Boots, clicando na \\\"Worn\\\" -Area de Vampiros. -Area de Infernalist. -Seais da Poi igual ao Tibia Global. -Novas Paredes. -Quest Firewalker Boots para quem fizer Demon Helmet Quest. (By Leo) -Nova Runa do tibia Global (Wild Growth). -Mais casas na cidade. -Mais pvp influenciando player jogar o Servidor. -Novo Visual do Temple. -Agora o Player ao soltar uma magia de Buff é adicionado Status. -Mais Estabilidade do Server. -Auto-clean de 2 em 2hrs. -Adicionado respawn de Faraó em Nargor. -Adicionado Great Shield Quest. -Novo respawn de Behemoth em Nargor. -Adicionado Yalahar City Full -Adicionado o Captain Eddy para levar o player à Yalahar. -Agora os players podem comprar BPS de PoTIonS e RuNAS por meio do "Buy with backpacks" no npc Dark Rodo! -Helmet of The Ancients Quest (HOTA) -Adicionado a Quest da Obsidian Knife -Adicionado o sistema de !ranks sem bug! --Melhorei a Arquitetura da Cidade. -Agora o player pode usar a enchated small ruby no Helmet of the Ancients (By LeozeraRox 100%) -Adicionado o NPC Bank sem bugs. -Foi retirado alguns Bugs. Rev 02 6/08/09 -Novo Visual do Templo. -98% a City 8.50 -Alavanca de Bp de Potions 100% -Adicionado Justice Seeker Quest -Depot com novo Visual -Sem o Bug dos Grim Reaper. -Novas Hydras. -Novos Frost Dragons, agora maior. -Adicionado o Icone de Protection Zone. -Adicionado a Black Skull -Nova Worn Soft Boots. -Nova Worn Firewalker Boots. -Loot Mensagem 100%. -Agora após o player criar o character no Acc Manager ele recebe os itens da sua Vocação. -Adicionado o Dark Cemiter (Nightstaker,Lich,Necromancer) -Adicionado uma Igreja mais por inquanto sem Casamento -Melhorei o sul da Cidade.. -Visual da City muito Bonito. -Novos demons. -Arena PvP 100%. -Loot do hellspawn agora igual do do Tibia Global. -Mais Estabilidade. -Mais Casas. -Retirei o "lixo" do mapa, pois pesava bastante os OT Servers. -!rank agora atualiza de 5 em 5min. -O preço da Yalahi Armor subiu para 600k -Melhorei o Respawn de Bog Raider da Hydras -Adicionei uma cave de Giant Spider e Hydra na Hydra Land. -Npc Bless 100% e agora mais completo. -NPC Bank sem bugs. -Adicionei o comando /ban -Bar para se diverir com amigos. -Nova Magia pra Royal Paladins "exevo con san" -Arrumado o Exhausted. -Rust Remover System -Para quem não quiser black skull basta por "no" no conf.lua >> " useBlackSkull = "yes" " -Agora o Npc Betoven não leva pro temple e sim para o Barco. -Foi retirado alguns Bugs. Rev 03 9/08/09 -Depot Com visual 8.50. -Arrumado o Bug do Outfit -Novo Exe. -Agora A Riona vende Rusty Remover. -Novo visual do cemitério -Adicionado o Married Outfit. -Removi Yalahar, pois era uma cidade inútil no servidor e servia só para pesar o server. -Hellgorak com loot igual do Tibia Global. -Mais estabilidade do que antes. -Retirado todas as camas por enquanto, pois quando o player dormia o server caia. -Foi retirado alguns Bugs. Rev 04 13/08/09 -Novo Distro. -Arrumado o Bug das camas. -Camas em todas as Casas. -Agora nem na Inquisition e nem na Demon Oak os players podem pegar os itens da amostra. (Obrigado usuários) -Clean não trava o server. -Server não cai mais, por erros. -Agora temos !notice. -Para banir Ctrl+Y -Todos itens 8.50 com seus nomes. -Mais estabilidade no servidor do que antes. -Foi retirado alguns Bugs. New Version 0.6.1 20/09/09 -Cave de Rotwoms reformulada. -Cave de Demos Reformulada. -Magias agora mais reais (sem aquelas exageradas). -Agora a Inquisition possui mais uma Sala. -Parte da Poi foi reformulada. -Adicionado o NPC Raphael, que vende buffer por 20min (nada exagerado) para os players. -Agora um cadeia para os players infratores. -Para Prender um player /jail "tempo,nome do player (apenas GMs e GODs) -Agora o player pode chamar players para quest através do comando- !service Pits of Inferno Quest, 5000 (o 5000 é o preço para os interessados). -Player agora pode trocar 200 demonic essences por um Nighmare ou Necromancer Shield (!necromancer-!nightmare). -Premia City toda Reformulada e com mais um hunt de Demons. -Adicionado os NPCs na Blue City. -Temos agora um Broadcast para dar informações aos players. -Adicionado um Hunt de Medusa e Defiler na Pits Prison. -Adicionado Demona na Hunt de Warlock. -Cave de Warlock toda reformulada. -Adicionado quest do noble axe nos Cyclops. -Adicionado um cave de Wyrms. -Pequenas edições no Temple. -Agora o Demon Oak sumona um Demodras no Lugar do Necropharus. -Foi retirado alguns Bugs. Rev 01 (0.6.1) 10/10/09 -Edições na pasta creaturescripts. -Bug do player não morrer arrumado. -Arrumado os Bugs da Premia City. -Novo Exe. foi adicionado e agora serve para Tibia 8.50 e 8.52. -Agora ficou mais dificiu derrubar o server e acho que impossivel. -Adicionado o NPC Hagar no temple, para dar boas vindas. -Bug do utito tempo san arrumado. -Bugs foram retirados. Rev 02 (0.6.1) 28/10/09 -Novo Exe. -Agora 100% Estável, devido aos vários testes. -Adicionado o NPC Aldo para recarregar a Soft Boots, segundo os players são mais RPG. -Ediçoes no mapa. -Edições no NPC Henricus. -Bugs foram retirados. Rev 03 (0.6.1) 31/10/09 -Retirado o NPC de recarregar a Soft Boots. -Permaneceu o Antigo jeito de recarregar. -Edições na Inquisition. -Bug da Arena PVP Arrumado. -Bug do NPC Henricus arrumado. -Adicionado a Quest do Blessed Shield na Fermbras Tower, onde o player escolhe apenas um Item. -Bugs foram retirados. Rev 04 (0.6.1) 02/11/09 -Novo Exe. -Mudei o Acc Manager de Lugar. -Adicionei o Npc Aldo (Recarrega Soft Boots). -Systema de Tapete Voador. -Systema de Jumper. -Uma atividade básica de mapping na cidade. -Systema de VIP: (Utilizando Database. Para mais informações: /vip) -Expandi 3 novas Hunts à Leste da Cidade. -Adicionei a Serpent Coat Quest. -Raid do The Mutated Pumkin ( /raid The Mutated Pumpkin ) -Nova Hunt de Frost Dragon na V.I.P City. -Nova Cidade Criada "Tiquanda Island" -Adicionei Systema de Refinamento para V.I.Ps. (Sem exagero) -Algumas Edições na POI. -Adicionei um Npc que leva o Player a Svargrond -Adicionei Arena Quest (greenshore - scrapper - warlord) 100% Igual ao Tibia Global. -Melhorei a Performaçe do Demon Oak. -Agora na Arena-PVP o player não perde item e nem level. -Nova Entrada para a Blood Land. -Um sistema de Invasão que o Boss invasor causa um incêndio nas Florestas de Nargor. -Adicionei a Quest da Giant Sword. -Sistema de Poll: (Via Database). *!createpoll PERGUNTA? *!activatepoll ID *!cancelpoll *!seepoll *!seeresults ID *!remvotes ID *!rempoll ID *!votepoll Option - Quando uma enquete está ativa, esse é o comando que os jogadores irão utilizar para votar na opção desejada. O número de opções pode variar. -Sistema de Afk (!afk on - !afk off). -Agora os Lideres de Guild podem mandar uma mensagem em Vermelho para os Membros. ( /guild ). -O membro de uma guild pode escolher ser atacado ou não por um outro membro de uma guild. ( /attackguild on - /attackguild off ) -Married System 100% (Via Database) *Como Casar: PLAYER1: Hi PLAYER1: marry PLAYER1: yes PLAYER1: Nome do PLayer 2 PLAYER2: Hi PLAYER2: marry PLAYER2: yes PLAYER2: proceed Os casais também podem se separar. -Adicionei o NPC Morgan em Blood City (Vende e compra Anéis) -Algumas Edições no Spells.xml -Colocamos um Sistema de quando a V.I.P do Player acabar, ele ser teleportado para a Cidade Principal. -Criei um Hunt de Destroyer e Demon. -Adicionei o Npc Old Jeff que vende outros tipos de Munição. -Bugs Foram Retirados. Versão de Reveillon (0.6.5) 16/12/09 -Novo Exe. -Mudei o Acc Manager. -Protocolo 8.54 -Outfits e Addons 8.54 (Warmaster) -95% dos Itens já foram Adicionados. -90% features -/unban funcionando 100% -Addons do Warmaster sendo vendido no Varkhal. -Adicionei a Magia "exana flam" -Agora o player começa com a "expedition backpack" -Suporte Para Mapas 8.54. -Bugs Foram Retirados. Versão de Retomada (0.7.0) 24/04/10 -Novo Distro totalmente estável. (LeozeraRox) -Proteção contra MageBomb. -Protocolo 8.54-8.55 -Lugares de Caça para todos os monstros 8.54 -Mais de 10 Quest dos novos itens foram adicionadas. -99% features. -Regularição das Spells. -Bank system via talkaction adicionado. -Comando para adiquirir bless igual a do global adicionado "!bless" -Novas Backpacks sendo vendidas na Riona. -Cidade toda reformulada. -Npc "A Ghostly Sage" para aquisição da permição para Pits Of Inferno. -Pits of Inferno mais similar ao do Tibia Global. -Nova Hunt de Infernalist adicionada. -Novo local da Igreja. -Adicionado o NPC Erisk (vendedor de alguns itens 8.54 para quem fez Pits of Inferno) -Adicionado Nightmare Doll quest. -Bugs Foram Retirados... (account manager - instabilidade). Versão de Retomada (0.7.0) Rev 01 08/05/10 -Novo Distro totalmente estável. (LeozeraRox) -Sem bug do Deathlist (foi retirado por segurança). -Novo andar na Trainer Room. -Sem bug que dava crash no Server. -Algumas Mudanças. -Bugs Foram Retirados... Versão de Retomada (0.7.2) Rev 02 15/05/10 -Novo Distro 8.54/8.55/8.56/8.57. (LeozeraRox- Techloko) -Bug dos protocolos arrumados. -Algumas Mudanças. -Bugs Foram Retirados... Versão 0.7.5 30/07/10 -Novo Distro 8.60. (LeozeraRox - Robson) -Potions em Cargas sem Bugs. -Runas em Cargas sem Bugs. -Itens 8.60 Adicionados. -Monstros 8.60 Adicionados. -Itens 8.54/8.60 sendo vendidos no Npc Esrik após completar Missão. -Novo Outfit e Addons Wayfarer. -Estabilidade. -Itens 8.60 com suas funções em perfeito funcionamento. -Bugs Foram Retirados... Versão 0.7.5 Rev 01 31/07/10 -Novo Distro. (LeozeraRox - Robson) -Sem bug das Houses. -Edições no Itens.xml. -Pequenas mudanças em Nargor. -Edições na Pasta Monsters. Versão 0.7.5 Rev 02 31/07/10 -Bug das Runas Arrumado. -Edições no Itens.xml. -Jogabilidade 100% Nova Versão (0.7.5) Rev 03 12/07/11 -Adicionado o Npc Jonny ano Norte de Blood City. -Todas as Magias do Tibia 8.70. -Agora o refinador é vendido no NPC Dufi. -Alavancas agora vendem cargas nas Bps. -Bugs Foram Retirados... Nova Versão (0.7.5) Rev 04 17/07/11 -Adicionado Frag System. -Hagar agora é útil no servidor. -Quando o player é assassinado ele perde seu coração -Alguns npcs foram mudados de lugar. -A Jogabilidade foi melhorada... Versão Definitiva (0.8) 20/12/11 -Adicionado VIP Vocation. -Completamente Sem Bugs. -Novo Distro. -Suporte Para War System -Adicionado !stamina. -Boas mudanças na Cidade Principal. -Bug de Runas e Potions corrigidos. -Trainers Modificados. -Novas Hunts, tanto VIP quanto Free. -Balanceamento de Vocações. -Adicionado a Light City para adquirir os itens de Addon. -Corrigido o Ex-Key Ring. -Sem Bug da Soya e Dark Rodo -Adicionada Darashia, totalmente Full. -Ferumbras, Ghazbaran e Morgaroth com seus Loots 100% iguais ao Tibia Global. -POI ficou mais Real. -Melhorou a Estabilidade. -Adicionada Novas Quests. -Adicionado o Addon Doll, (Ex: !addon first warrior) Versão Completa (0.9) 17/01/12 -Mudanças no Depot. -Novo Distro "muito melhor" -Addons dão atributos agora. -Anti-Push dos BOTS (Elf e Cya) -Frag arrumado. -Sem bug das Guilds. -Adicionado Refinaria em Baixo do Temple. -Na versão com teleports, foi feito uma nova area. -Boas mudanças na Cidade Principal. -Novidade nos prêmios da POI. -Sem Bugs Versão Completa (1.0) 01/03/13 -Retirei o bug da contagem de frags -melhorei a jogabilidade. -Sem Bugs Versão Completa (1.1) 03/03/13 -Coloquei sistema anti-magebomb -Pode se comprar VIP no NPC Hagar. Versão Completa (1.2) 16/03/13 -Nova Distro "Muito Melhor", pois nao da lag no server. -Não tem mais as dll's infectadas (virus). -Coloquei mais areas de caça no OT -Novos Npcs -Npc Esrik em cima do ponto de venda do NPC Raphael -Modifiquei o Templo -Sistema anti-divulgação de OT-Server -Adicionei o comando !promotion -Deixei a database mais segura. -Verifiquei se havia alguns bugs. Versão Premium 26/04/13 -War System com Escudos 100% sem utilizar database sql (BY LeozeraRox) -War of Emperium sem utilizar database sql /woe on(Configurado para todas as quartas e sabados as 18 horas) -Edições na cidade -Edições na Hunt de Cyclops -Edições na Hunt de GS -Edições na Hunt de Demon -Vocações Balancead -SD Igual tibia global -Adicionei uma Hunt de Hero -Novo Comando para informações do server !expinfo -Novos Npcs: Alice -Guia do War System !infowar -Removi Bugs de mapping -Removi Bugs da Database -Pronto para deixar online. -Sistemas de Pontos /atributos -Adicionado o NPC Scrutinon -Adicionado Lottery System, sorteando addon dolls -Retirei bug maps. Versão GOLD 2016: OBS: Primeiramente gostaria de explicar a minha volta. Depois de muito tempo sem postar, atualizar, encontrei no meu computador uma versão do Styller unica, sem bugs e a qual eu nunca havia compartilhado, pois eu utilizava esta para fazer meus OTs. Agora estou disponibilizando abaixo. -Cidade toda reformulada (Procurei valorizar o PVP) -Sistema de venda de itens offline -Training Offline -Edições na Hunt de Draggy -Sistema de exp guild, a exp de todos aumentam em 1% para cada membro online -Sistema de casamento, marido e esposa ao caçar juntos ganham mais exp. (!marriage info) -Vocações Balanceadas -Regulagem das Spells -Sistema de Itens VIP -Vip agora pode ser comprada com !buyvip -Novos Npcs. -Area de Trainer toda reformulada -Incorporei a database sql, para quem preferir -Castelo de respawns e npcs exclusivos para quem terminar Inquisition Quest -Barco oferecendo viagens para 5 cidades -Area de teleports reformulada -Adicionei o removedor de frags para quem terminar Inquisition Quest -Adicionei o sistema de montaria para quem terminar Inquisition Quest -Nova quest para level 250+ -Sistema de presentes para os players -Auto bless para players 40- (Anti power abuser) -Novas areas de hunt -É possivel ver os inimigos do Guild War System que estão online (!warmembers) -Otimizei para que não ficasse pesado e prejudicasse a jogabilidade -Informações randomicas no broadcast -War of Emperium reformulada. -Deathcast. (Estimular a War e o Revanchismo). -Sistema de recuperação de stamina, basta deixar treinando nos trainers. -Retirei bug maps. Versão 2017: -Senha do GOD corrigida -Otimização. -Removi alguns bugs. Versão PLATINUM [03/03/2017]: -Nova distro bem mais otimizada -Adicionado Cast System. (!cast on) -Adicionado o CASTLE WAR 24Hrs -Battle sai ao entrar em Protection Zone. -Não é possivel jogar lixo nas casas. -!disband corrigido -Adicionado 2 cidades (Ghala e Belisy) -Auto Loot Adicionado. -Remoção de bug maps. Acc do GOD Raymond: god/styller ScreenShots Novo Visual do Templo Castle War 24Hrs War of Emperium Novo Visual dos Trainers. Barco para as Cidades cheias de Hunts Novo Visual do Depot Novos Teleports. Firewalker Boots Quest. Trainers Offline. Blue Legs Quest Real. Refinaria. War System 100%. Vocation VIP - Second Promotion. Inquisition Castle para quem terminou a Inquisition. Download Styller Yourots Platinum "2017" (8.60) https://www.4shared.com/rar/NtjBLvNyei/86_Styller_Yourots_Platinum_20.html? Scan.\\\"/// --> https://www.virustot...sis/1363451248/ Mapa Editor ---> Clique Aqui Postem ae o que Acharam Galera!!! Obrigado RME pela perfeição e por ser um Exelente Map Editor!!! Gogo Up LeveL!1 ponto
-
Ot Pokemon
Akuuure reagiu a thiago2300 por um tópico no fórum
PokémonServer Update Versão 4.1 Como o Pokémon V3 foi atualizado, estou trazendo a versão V4.1 para vocês. Primeiramente vamos ao o que o SERVIDOR V4.1 possui, vou colocar algumas informações sobre a nova Versão V4.1 Adicionados ao Servidor -Adicionado pack de pokemons, agora sem sangue. -Adicionado correção no horsea. -Adicionado correção no kingler -Adiconado POKEDEX 100% -Adicionado "portrait system" BETA -Todos monstros dando catch 100% -Todos os monstros com seus devidos corpos 100% -Stones Funcionando 100% -Elder Charizard agora da pra dar catch e usar fly. Adicionados e corrigidos ao Servidor. -Adicionado Pokemons Shynes BETA -Adicionado "Surf system" 99% quando sai do surf pokemon volta pra pokebola -Adicionado "Potion system" 100% creditos: -Adicionado "Cut system" 90% falta só o pokemon ir -Adicionado "Rock Smash system" 90% falta só o pokemon ir -corrigido gastly e kingler -retirado o bug do scyter -corrigido pokedex elder charizard -corrigido cath aerodactyl -Corrigido Console.exe agora está 100% -Corrigido a lamp que dava pokebolas -Corrigido cath do grimer -Retirado sistema portrait Metas de adições ao Servidor. * TV System , Cam System. * Duel System. * Npc Pra Pinta As Ball's * Ordem system (Move) * Surf System. * Atack SvKe(m1,m2,m3...) * HP de alguns Pokemons. * Limite 6 Pokemon. * Limite level para evolução. * Heal todos os pokemons quando falar hi. * Quando voce sobe de um buraco seu pokemon nao teleporta pra cima ele continua la embaixo. Turn (Virar o Pokémon pro lado.., ex: t1, t2, t3 * Potrait System. * PvP Sytem * Teleport com pokemon * Safari * Cassino * Ditto system * cut system system BETA * rock smash system BETA * Deixar os itens iniciais imovable pokedex, a bag, rod <--! LINKS !--> Download do Client http://www.4shared.com/file/WJbs8I8O/PBF_10.html Scan do Server http://www.virustotal.com/file-scan/report.html?id=c36230d526f29bfea9b11243b35f6ec22d1594ca4b8dee32c958bd918376920c-1289182274 Download do Servidor: http://www.4shared.com/file/_qH-69yy/PokeServer_V41_-_854__Edited_F.html Espero ter ajudado, lembrando eu já tinha postado esse tópico antes, mas como fui reprovado o fiz de novo dentro dos conformes requisitados pelos Administradores do Otserver.com, é isso pessoal se você achou o meu tópico bom por favor Agradeçam, grato,caiquef >Creditos Finais <- By:thalia By:roymustang By:Reizan By:david498 By:yahooABC By:skinaa By:slicer By:lucashgas ByrakyLucas1 ponto -
Guild War System Com Escudos
Vilden reagiu a Leoprotons por um tópico no fórum
Bom vamos 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: 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 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; Para finalizar é necessário que o seu .exe tenha incluído na compilação o parâmetro, -D__WAR_SYSTEM__. Como adiciono? Para adicionar é necessário ter a source do otserver que você utiliza. Abra a source em um dev-cpp aperte alt+p na coluna paraments add -D__WAR_SYSTEM__ da ok e compila. Se você não souber compilar existem tutorias bem explicativas que tornam fácil aprender a compilar, veja abaixo: Compilando no Windows Compilando no Linux ubuntu Pronto o Guild Wars System está totalmente instalado! Para os preguiçosos Ocupados coloquei o download do sistema completo. Download Aqui Link do Scan Creditos: Walef Xavier - War System AgaSsI - Tópico original Gm Beckman - Completou o tópico1 ponto -
[ ~> Fazendo Seu Próprio Client <~ ] Fala Tibianos , Pokemianos , WODBOianos do Xtibia, Hoje estou aqui com o meu primeiro tutorial , com o objetivo de explicar tim tim por tim tim como fazer um Client.. Como eh meu primeiro tutorial estou começando com algo facil , espero que todos gostem: 1° passo , criando o executar do seu client com ip proprio : 2° passo , mudando a Pic do Client: 3° passo , mudando o icone do seu client: 4° passo , traduzindo seu client: 5° passo , criando um instalador para seu client: Link dos Programas usados: Então eh isso pessoal , espero ajudar alguem com esse Tutorial. Fico Devendo Imagens , + logo colocarei para facilitar Thx Edit: Imagens Adicionadas , espero que fique + facil de compreender.1 ponto
-
Perfect Vip system 3.0 Última atualização: 14/08/12 Versão Testada:TFS 0.3.6 - 8.54 - 8.6 - 9.6 Créditos pelas modificações: Kydrai,Vodkart e Marcryzius Oque Contém no Sistema vip 3.0? Comandos: Query Primeiro passado execute essa query na sua DB: ALTER TABLE `players` ADD `vipacess` INT(15) NOT NULL DEFAULT 0; Agora vá em Data/lib/050-function e adicione essas funções: function getCharacterAcess(cid) local query = db.getResult("SELECT `vipacess` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) if query:getID() ~= -1 then return query:getDataInt("vipacess") end end function getCharacterDays(cid) local acess = math.ceil((getCharacterAcess(cid) - os.time())/(86400)) return acess <= 0 and 0 or acess end function HaveCharaterAcess(cid) return getCharacterDays(cid) > 0 and true or false end function setAcessTime(cid, time) return db.executeQuery("UPDATE `players` SET `vipacess` = "..time.." WHERE `id` = "..getPlayerGUID(cid)) end function addCharacterAcess(cid, days) local add = (days <= 0 and 1 or days)*86400 local time = getCharacterDays(cid) == 0 and (os.time() + add) or (getCharacterAcess(cid) + add) return setAcessTime(cid, time) end function doRemoveCharacterAcess(cid, days) local remove = days*86400 local time = getCharacterAcess(cid) - remove return setAcessTime(cid, (time <= 0 and 1 or time)) end function getVipAcessDate(cid) if HaveCharaterAcess(cid) then return os.date("%d/%m/%y %X", getCharacterAcess(cid)) end return false end Talkactions agora em talkactions/scripts vipsystemplayer.lua function onSay(cid, words, param) if(words == "!buyvip") then local days = 10 local price = 50000 if not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.") addCharacterAcess(cid, days) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) elseif(words == "!vipdays") then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP. "..(getCharacterDays(cid) > 0 and "ela acaba em "..getVipAcessDate(cid).."." or "")) end return true end vipsystemgod.lua function onSay(cid, words, param) if(words == "/checkvip") then if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.") return true end local player = getPlayerByName(param) if not isPlayer(player) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player "..player.." not found.") return true end return doPlayerPopupFYI(cid, "O jogador tem "..getCharacterDays(player).." dias de VIP no character.") elseif(words == "/addvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end addCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você adicionou "..tonumber(t[2]).." dias de VIP no player "..getCreatureName(player)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..tonumber(t[2]).." dias de VIP no seu character.") elseif(words == "/delvip") then local t = string.explode(param, ",") if not tonumber(t[2]) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(t[1]) if(not player)then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") end doRemoveCharacterAcess(player, tonumber(t[2])) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você removeu "..tonumber(t[2]).." dias de VIP do jogador "..getCreatureName(player)..".") end return true end em talkactions.xml adicione as tags: <talkaction words="!buyvip;!vipdays" event="script" value="vipsystemplayer.lua"/> <talkaction words="/addvip;/delvip;/checkvip" access="4" event="script" value="vipsystemgod.lua"/> Item Vip item que adiciona vip no character actions/script addvipdays.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local days = 15 addCharacterAcess(cid, (days <= 0 and 1 or days)) doRemoveItem(item.uid,1) return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem "..getCharacterDays(cid).." dias de VIP, ela acaba em "..getVipAcessDate(cid)) end Actions.xml <action itemid="ID DO SEU ITEM" script="addvipdays.lua"/> Vip Door actions/script perfectvipdoor.lua function onUse(cid, item, frompos, item2, topos) if not HaveCharaterAcess(cid) then return doPlayerSendTextMessage(cid,22,"Você precisa ser vip para passar aqui.") end doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, topos, true) return true end actions.xml <action actionid="7779" script="perfectvipdoor.lua"/> Tile VIP em movements/scripts crie um arquivo.lua e renomeie para vipe.lua function onStepIn(cid, item, position, fromPosition) if item.actionid == 13700 and not HaveCharaterAcess(cid) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você não é vip.") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"bem vindo.") return true end Em movements.xml adicione a tag: <movevent type="StepIn" actionid="13700" event="script" value="vipe.lua"/> no seu piso coloque ACTIONID 13700 Fim Vip em creaturescript/script endvip.lua function onLogin(cid) if getCharacterDays(cid) > 0 then setPlayerStorageValue(cid, 9898, 1) elseif getPlayerStorageValue(cid, 9898) == 1 and getCharacterDays(cid) <= 0 then doPlayerSetTown(cid, 1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerPopupFYI(cid, "Sua vip Account acabou.") setPlayerStorageValue(cid, 9898, -1) end return true end em creaturescript.xml adicione a tag: <event type="login" name="CheckVip" script="endvip.lua"/>1 ponto
-
1º de tudo quer pedir um favor ^^ COMENTEM Bom como o titulo la diz: "CRIE SEU CLIENT PROPRIO Bom vamos começar neah Baixe esse pacote 90% meu o resto vai pra quem sabe que merece(porque achei os items aki no meu pc ja faz tempo) BAIXE AKI >> http://www.4shared.com/file/FWmCfwdB/KeepStill_client_Maker.htm depois de baixado vao ter 4 arquivos Client maker Pic editor Quest Maker Sprite editor Explicando Bem o Client maker neim presiso explica. Pic editor serve para voce extrair a imagem de fundo do client do tibia,por exemplo em vez de estar escrito TIBIA pode estar escrito NOME DO SEU OT.(muda a imagem de fundo) quest makerCreio que nao presiso explicar Sprite editor Ele muda as imagens dentro do jogo,vamos supor: Voce pode trasformar uma sword em uma wand editando apenas o desenho. Bom Nao tenho tempo pra explica tudo mais quem sabe daqui alguns dias (link para procurar topicos.www.xtibia.com valeu galera Comenta1 ponto
-
1 ponto
-
Olá Pessoal Do :XTibia_smile: Vinho Aki Dnv No Meu 3 Topico Trazendo O Mapa Baiakzik Mas Novo De Todos!! Templo Free Templo Vip1 Templo Vip2 Templo Vip3 Vip4 Cassino Então o novo mapa tem comandos novos e claro movements novos tbm tem cassino magia exevo gran trap tem /vip q é igual um /b pra players vip2 então baixe o mapa e saibe mas no ot!! [download]http://www.4shared.com/file/VyQNYqM_/860_Baiak_Edited_By_Baiakzik_V.html[/download] Meus Trabalhos http://www.xtibia.com/forum/topic/170732-mapa-baiak-com-vip4/ Cré http://www.xtibia.com/forum/topic/170408-mapa-baiak-com-vip3/ http://www.xtibia.com/forum/topic/171439-baiak-zik-vip4/ http://www.xtibia.com/forum/topic/171823-baiakzik-com-vip5-agr/#entry1128624 Créditos Baiak Yurots 5 % Bryan 10 % Matheusalvez 15 ¨% Baiakzik 75 % ip do meu ot baiak-zik.servegame.com Scan Do Ot: http://www.virustotal.com/file-scan/report.html?id=d680fab2e2d727ca4a1df6f88bf882836cab28b89ff3d53a15c23a47a141f9cb-13197574021 ponto
-
Zodiak City. Versão 8.61 Feito por mim. (Algumas partes copiadas do global) ALBUM COM MAIS PRINTS 4SHARED Meu Primeiro Post, Espero que gostem Areas de Hunt: Dragon Lord Hydra Spectre Demon Hellhound Sea Serpent Frost Dragon Undead Dragon Undead's(em geral) Behemoth Monstros da Poi Massive Elementals(todos) Warlocks Heros Black Knight Orcs Serpent Spawn Medusa Giant Spider Pharaos Wyrm Ancient Scarab Entre outros Eu passei esse mapa pra um amigo.. e ele falo que o itens.otb dele não bateu com o meu. então estou postando o meu junto. Obs: tem uma quest inacabada na parte sul do mapa.1 ponto
-
Lista De Efeitos 8.54 E Como Usá-Los
Exgamesjoao reagiu a Antharaz por um tópico no fórum
Como todos sabem, saber qual é o número do efeito que você deseja é difícil... ainda mais com tant lista de efeitos desatualizadas por aew. :fist: Então resolvi fazer uma lista atualizada de 68 efeitos (8.54) que está abaixo: Para usar os efeitos basta colocar o comando doSendMagicEffect(posição,efeito). Aonde posição é as coordenadas aonde o efeito será aplicado e o efeito é o próprio efeito. Vamos supor que eu queira usar o efeito de fumacinha no player como se tivesse dado algo errado quando usasse um item em outro. Eu colocaria assim: function onUse(cid, item, frompos, item2, topos) doSendMagicEffect(cid,2) return FALSE end Caso não funcione o código acima por algum motivo, troque o cid do doSendMagicEffect por frompos.1 ponto -
Poke Online V2
loleo77 reagiu a PokeOnlinel por um tópico no fórum
Saudações, não sei se será considerado duplo post, devido a já haver uma apresentação deste server aqui, porem foi feita por um Player e não por mim, por isso estou repostando com os detalhes corretos. Servidor PokeOnline está completando 2 meses desde a data do seu anuncio inicial, projeto está andando exatamente como gostariamos, sucesso em vários quesitos, prezamos principalmente a qualidade. Para nós o mais importante não é lotar o servidor de players, mas sim qualidade, pelo simples fato de que alem de ser um projeto muito sério é tambem um Hobby. A cada dia buscamos acrescentar coisas novas. Tornar o servidor o mais completo possivel é a nossa principalmente meta a cumprir. Após o completo sucesso da V1 lançamos o V2, com novidades em massa. Estamos inovando melhorando e concertando a cada dia, não tarderemos em lançar outro mega pacote de atualizações. Equipe pequena porem dedicada. Mapa totalmente remasteriazado, autoria de Matheus(Chapolin). Sistemas eu(uso nick News no game) e Iago, hoster, administrator e Web-master Ghost. Saber mais sobre o mapa usado no servidor este link: http://www.xtibia.com/forum/topic/170008-mapa-de-pokemon/ Uma breve apresentação dos sistemas: Sistemas implementados até o momento: (aguardem novidades :smile_positivo: ) Cliente com Update automático: Eliminando a necessidade de ficar refazendo o download do cliente a cada atualização. Level e Sexo M-F no Pokemon: Estatisticas do Pokemon (Digite /status com o Pokemon fora da Ball): Pokemon Aprende Ataques com o próprio level: Escolha de número Pokemons para Balhatar: Rank de Duel: Saffari Time: !Love (cura seu Pokemon aos poucos): Pintar Balls: ------------------------------------------------------------ V1 sistemas mantidos: Duel: 8 Mestres de ginásio Slot Poke ball, Facilitando a captura: Sistema de Insígnias Sistema de Troféus Cassino Pescaria inovador: Inovador Saffari com saffari ball Ditto Fly/Ride/Surf Magias de 1 á 12 (M1 -M12) Poke Ball – Mega Ball – Super Ball – Saffari Ball – Ultraball Vip: Level by Level System Sistema de elementos: Evolução: Este tópico recebeu destaque em nosso portal!1 ponto -
[Turital] Banner Para Gesior Account.
Trivelatos reagiu a ADMJuan por um tópico no fórum
Pessoal sem querer errei o Nome lá em cima: é TUTORIAL quem puder a jeitar fico grato! 1 tutor aki ^^ Bom galera é seguinte, eu venho aqui mostrar como colocar esse banner aki: É bem simples e fácil. basta você adicionar o code que vou posta logo abaixo em C:\xampp\htdocs <div id="LayerPop" style="display:block; position:absolute; left:0px; top:0px; background-color:#1e1e22; width:100%; height:180%; z-index:100;margin:0px;opacity:0.75;"></div> <div id="LayerPop2" style="position: absolute; left: 330px; top: 80px; z-index: 5000;"><a href="?subtopic= "LINK PARA REDIRECIONAR" target="_BLANK"><img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPO .PNG ou .GIF" class="imgBorder"></a><br><a href="javascript:void();" onClick="document.getElementById('LayerPop').style.display = 'none';document.getElementById('LayerPop2').style.display = 'none'"> <b>Fechar</b></a></div> Já ia me esquecendo.. onde tem: ?subtopic= "LINK PARA REDIRECIONAR" ~~> Bota o link onde quer ele seja redirecinado tipo: latestnews onde tem: <img src="PASTA EM QUE SE ENCONTRA A IMG NO HTDOCS.TIPO .PNG ou .GIF" ~~> você colocar onde está sua imagem do banner! Exemplo se você que apareça em latestnews.php é só você colocar o código acima dentro do latestnews.php. Obs: Você tem que colocar o código acima antes de <?php[/size] [size=2]/////[/size] [size=2]/////////[/size] [size=2]////// porque se você colocar dentro do php vai da um erro! blz? créditos: naneer SkyDangerous E embaixo tá o tutor do SkyDangerous também. http://www.xtibia.com/forum/topic/167629-pop-up-especial/ é quase a mesma coisa só muda, porque esse a tela foca no banner. Abraços Tem mais gente, não lembro os nomes. Quando eu achar eu editor e o tópico. Se gostou da um ! Obrigado!1 ponto -
[Mod]Teleport Rune V.2
Gabriel Couto reagiu a angeldoido por um tópico no fórum
Primeiro vai na pasta MOD do seu OT e cria 1 arqvuivo XML com o nome de teleport rune.xml Depois coloke isso dentro... <?xml version="1.0" encoding="UTF-8"?> <mod name="teleport rune" version="1.0" author="Snokiuthu" contact="mar_cos75" enabled="yes"> <action itemid="2357" event="script" override="yes"><![CDATA[ function onUse(cid, item, frompos, item2, topos) local storage = 11548 -- n mexa local exhausted = 250 -- tempo em segundos if (getPlayerStorageValue(cid, storage) >= os.time()) then return doPlayerSendCancel(cid, "Você tem que esperar " .. getPlayerStorageValue(cid, storage) - os.time() .. " segundos para usar novamente.") end local effect = 10 local message = "You were teleported to "..getTownName(getPlayerTown(cid)).." town." local errormessage = "Sorry, you cannot use this scroll in a battle." local town = getTownTemplePosition(getPlayerTown(cid)) --- if getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, errormessage) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, message) doTeleportThing(cid,town) doSendMagicEffect(town,effect) setPlayerStorageValue(cid,storage,os.time()+exhausted) return end ]]></action> </mod> Você pode altera o item q usa como teleporte, ali no item 2357 (so altera pra um id desponivel) é isso galera vllw (:1 ponto -
Skydangerous - Voltando Forte :p
Slayersg reagiu a SkyDangerous por um tópico no fórum
Oi Amores , voltando a fazer meus mapas toscos Critiquem , Elogiem , Opinem Quem quiser os mapas , eu disponibilizo para download só pedir1 ponto -
ae tem uma script aque no xtibia só não sei se e do jeito que você quer Premium Tile Por God Vine1 ponto
-
Fiz o script aqui para você utilizar com o tile. Pode colocar um portal (ou não) no tile para ter uma aparência melhor. Coloque no portal a coordenada para onde o player vai ser transportado. No tile, embaixo do portal, coloque o actionid. Quando o player passar naquele tile, vai ser cidadão de uma determinada cidade e transportado. Crie o arquivo newtown.lua dentro da pasta data/movements/scripts/ e cole este código: -- Escolha o [actionid], id da cidade, "nome" e posição local config = { [12101]={1, "Nome da Cidade", {x=111, y=222, z=7}}, [12102]= {2, "Outra Cidade", {x=222, y=222, z=7}}, [12102]= {3, "Outra Cidade", {x=333, y=222, z=7}} -- O último não possui vírgula. Pode adicionar mais nesta mesma estrutura } function onStepIn(cid, item, pos) -- Verifica se é um player (para monstros e npcs não passarem) if isPlayer(cid) == TRUE then -- Define a nova cidade do player doPlayerSetTown(cid, config[item.actionid][1]) -- Teleporta ele para a determinada posição doTeleportThing(cid, config[item.actionid][3]) -- Mensagem informando sua nova cidade doPlayerSendTextMessage(cid, 24, "Agora você é cidadão de " .. config[item.actionid][2]) end end Adicione o seguinte código no arquivo movements.xml que está na pasta data/movements/: <movevent type="StepIn" actionid="12101;12102;12103" event="script" value="newtown.lua"/> Agora edite seu mapa e coloque o ActionId no seu portal (ou tile) de acordo com suas configurações. Espero ter ajudado1 ponto
-
Como Edita Mapa Dos Ots?
CastielRx reagiu a mdgabrielzim por um tópico no fórum
@up se você não sabe ajudar por que comentou então isso podera ser considerado flood. Reportado para moverem. Topic Bem se você digitasse no google o que você queria você concerteza acharia. http://www.youtube.com/watch?v=LwVIlCUIbYU @edit você baixa o rme o mapa fica na pasta world. Nesse link você baixa o rme:http://www.remeres.com/1 ponto -
o jeito mais facil eh pelo rme, eh so tu colocar um bau qualquer, clica com o botao direito nele, ai vai ter: actionid e uniqueid ai tu coloca actionid: 2000 e uniqueid: 20001 ai depois tu clica em uns quadrados pretos que vai ter, e add os items q tu quer mas lembre a proxima quest vai ter q ser assim: actionid: 2000 uniqueid: 200021 ponto
-
Idade: 13 Cargo desejado: Scripter/Webmaster Algum trabalho já feito: ja tive um ot que lotou 200 + players E-mail: andersongr98@hotmail.com Tempo Disponível: estou dísponivel pela manhã e noite pois estudo à tarde mas de manhã é raro pois eu durmo hushaushas! Porque entrar Para equipe? Ajudar o OT a crescer e com os scripts e com o site!1 ponto
-
Vá no items.xml procure o item e adicione UMA dessas linhas acima de </item> (adicione a referente ao que você quiser) <attribute key="skillDist" value="X" /> <attribute key="skillAxe" value="X" /> <attribute key="skillShield" value="X"/> <attribute key="skillClub" value="X" /> <attribute key="skillSword" value="X" /> <attribute key="speed" value="X"/> <attribute key="absorbPercentDeath" value="X" /> <attribute key="absorbPercentPhysical" value="X"/> <attribute key="absorbPercentEnergy" value="X" /> <attribute key="absorbPercentEarth" value="X" /> <attribute key="absorbPercentIce" value="X" /> <attribute key="absorbPercentFire" value="X" /> <attribute key="absorbPercentHoly" value="X" /> No Lugar de X você coloca a porcentagem que você quer. Exemplo: <attribute key="absorbPercentHoly" value="5" /> Ele vai ser 5% mais resistente à Holy <attribute key="absorbPercentHoly" value="-5" /> Ele vai ser 5% mais fraco à Holy Abraços1 ponto
-
Bom, vou passar alguns tutoriais de como colocar a talkaction: http://www.xtibia.com/forum/topic/159417-script-para-buyvip/ http://www.xtibia.com/forum/topic/137639-comando-buyvip-plz-gente/ * As respostas estão ao longo dos tópicos, se não ajudar peso que de mais informações de qual System VIP você usa... Ajudei, +REP1 ponto
-
tente criar um nome da database em espaço1 ponto
-
Como Criar Um Otserver 8.60 Tibia
jonhvictor reagiu a HeelNox por um tópico no fórum
Boa lek ... Eu tava proucurando 8.54 mais assim mesmo REP+ :button_ok:1 ponto