Ir para conteúdo

redmax1596

Campones
  • Total de itens

    51
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    redmax1596 deu reputação a devotti2 em [Tutorial] Resetando Ot Sem Deletar Players   
    Bom Galera , este é meu primeiro tutorial sobre websites.
    Só vai funcionar com database phpmyadmin
    Que pode ser muito útil para aqueles que gostam de resetar mas nao quer devolver items. =D
     
    Vamos lá.
     
    1) Acesse seu localhost/phpmyadmin
    2) Vá na sua database e depois em SQL
    3) Vai aparecer "Faser consulta no banco de dados"
    4) Nele voce escreve os codigos correspondentes á açao que voce quer faser.
    -AS açoes vou listar elas abaixo
     
    Para resetar os lvl e a life:

    UPDATE `players` SET `level` = '8', `health` = '180', `healthmax` = '180', `experience` = '4200', `mana` = '35', `manamax` = '35', `cap` = '400'
     
    Para resetar os skills:

    UPDATE `ot`.`players_skills` SET `value` = '10'
     
    Remover Premium Dos players: (serve para vip system que vende premmy no gesior)

    UPDATE account SET premdays=0;
     
    Adicionar 3 dias de Premium:

    UPDATE accounts SET premdays = premdays + 3;
     
    Mandar Geral po templo:

    UPDATE players SET posx = X, posy = Y, posz = Z;
     
    Criar Account Manager:

    INSERT INTO `players` VALUES (1, 'Account Manager', 1, 1, 1, 0, 150, 150, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 50, 50, 7, '', 400, 0, 0, 0, 0, 0, 0, 0, '', 0, 0, 0, 0, 10, 10, 10, 0, 0);
     
    Remover Red skulls , Black Skuls e Frags de todos:

    UPDATE `players` SET `redskulltime`=0;
     
    Dar bless para todos:

    UPDATE `players` SET `blessings`=31;
     
    Remover um Item especifico: (exemplo 2160= crystal coin) ótimo para casos de clonadores.

    DELETE FROM player_depotitems, player_items, tile_items WHERE itemtype = 2160;
     
    Deletar players lvl 50- (CUIDADO, EXECUTANDO ESSA AÇAO VOCE IRÁ DELETAR OS SAMPLES. AUMENTE O LVL DOS SAMPLES E DEPOIS VOLTE AO NOMRAL)

    DELETE FROM players WHERE level < 50 AND lastlogin < UNIX_TIMESTAMP() - 20*24*60*60
     
    Deletar houses de players que foram deletados:

    UPDATE `houses` SET `owner` = '0' WHERE `houses`.`owner` NOT IN ( SELECT `players`.`id` FROM `players` WHERE `players`.`id` = `houses`.`owner` );
     
    Trocar Outifit de all players:

    UPDATE players SET lookbody =61, lookfeet =93, lookhead =127, looktype =128
     
    Deletar players que nunca logaram:

    DELETE FROM `players` WHERE `lastlogin`=0;
     
    É isso galera, espero ter ajudado. fmz?
    Se nao for muito para vcs , dao REP +
    Thanks. é para o xtibia. :XTibia_smile:
  2. Upvote
    redmax1596 deu reputação a Administrador em Instabilidades E Ataques De DDoS   
    @Tryller
    Já rastreado e encontramos as máquinas deles na limestone, o datacenter já enviou uma notificação de desligamento. Não vou dar mais detalhes para não atrapalhar as investigações dos caras mas já encontramos mais de 7 projetos deles e estamos indo em cima de todos. Todos os projetos tem um responsável aqui do RJ. A "empresa" deles já foi notificada e se até hoje não cooperarem serão processados.
  3. Upvote
    redmax1596 deu reputação a Alissow em Alissow Ots 4.11 [11/07/2010] 8.6 Completo!   
    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.
     
  4. Upvote
    redmax1596 deu reputação a HeartBreak em Warsystem   
    WarSystem para TFS 0.3.5 ou TFS 0.3.6.
    Precisa de Gesior.
     
    Para quem usa TFS 0.4 , veja o tópico :Warsystem Para TFS 0.4 [apenas o arquivo MOD]
     
    Bom , chega de enrolar , vamos começar o "tutorial":
     
    *Nota : é extremamente recomendavel que você limpe a tabela 'deaths_in_wars' antes de usar o sistema.
     
    1) Adicione o arquivo a seguir , a pasta mods (OTServer/data/mod) basta criar um arquivo XML ou copiar algum outro e apagar tudo que tiver dentro , coloque o nome do arquivo de: guildWarSystem.xml:
     

    <?xml version="1.0" encoding="UTF-8"?> <mod name="Guild War System" version="0.3.5+" author="Xampy and Nahruto" contact="otland.net" enabled="yes"> <config name="function_config"><![CDATA[ DelayToCancel = 24 -- HOURS <-> [max: 47 -- min: 24] --> default: 24 hours [1 day] Maps = { ["map1"] = { Guild1Pos = {x=238, y=442, z=12}, Guild2Pos = {x=244, y=442, z=12} }, ["map2"] = { Guild1Pos = {x=994, y=1004, z=6}, Guild2Pos = {x=1000, y=1003, z=6} } } TimeToTeleport = 1 --minutes, when start a challenge StopBattle = TRUE --Stop battle after X time ? TRUE / FALSE TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE. --Cancel messages~ CancelMessagesWar = { --Message when player try accept/reject/cancel a war but there is no a invitation. [1] = "Not pending invitations.", --Message when the player is not the guild leader. [2] = "Only Guild Leader can execute this command.", --Message when try Cancel the invitation but the war is already accepted. [3] = "The war is already accepted.", --MEssage when the invited guild name is not correct or does not exist. [4] = "Not correct guild name.", --Message when try invite any guild to a war but his guild already have a war or a pending invitation. [5] = "Your guild is already in war or have a pending invitation.", --Same of the cancel message 5 but the the enemy guild. [6] = "This guild is already in war or have a pending invitation.", --Message when use invite command but not write guild name. [7] = "Command needs param.", --Message when try invite his guild. [8] = "You can\'t invite you guild.", --Message when the map name is not correct. [9] = "Please write a correct name.", --Message when try go to any map but the guild is have no received/sent any war invitation [10] = "Your guild is not in any war.", --When try to cancel a war before the delay [11] = "You should wait ".. DelayToCancel .." hours to cancel the war" } --Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces. BroadCast_Type = MESSAGE_EVENT_ADVANCE BroadCast = { --Message when inviting [1] = { "Guild ", --Here will be the guild name " have invited guild ", --Here will be the invited guild name " to have a war." }, --Message when accept. [2] = { "Guild ", --Here will be the guild name " have accepted the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when reject. [3] = { "Guild ", --Here will be the guild name " have rejected the invitation of the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message when cancel. [4] = { "Guild ", --Here will be the guild name " have canceled the invitation to the guild " , --Here will be the name of the guild who have invited em. " to have a war." }, --Message whenstar a battle.. [5] = { "Guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " will have a battle in the map :" }, --message when a battle ends. [6] = { "The battle betwen guild ", --Here will be the guild name " and guild " , --Here will be the name of the guild who have invited em. " its over." }, } --Functions ~. function getShowInfo(id) local Info = db.getResult("SELECT `show` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local showy = Info:getDataInt("show") Info:free() return showy end return -1 end function getKills(name) local Info = db.getResult("SELECT `kills` FROM `guilds` WHERE `name` = '"..name.."'") if Info:getID() ~= -1 then local killy = Info:getDataInt("kills") Info:free() return killy end return -1 end function getGuildWarInfo(id) local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time") Info:free() return {To = invTo, By = invBy, With = warWith, T = Time} end return -1 end function getGuildNameById(id) local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "") if Info:getID() ~= -1 then local Name = Info:getDataString("name") Info:free() return Name end return -1 end function GuildIsInPEace(id) local Info = getGuildWarInfo(id) return (Info.To == 0 and Info.By == 0 and Info.With == 0) end function doInviteToWar(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild ..", `war_time` = ".. StartTime .." WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."") end function WarAccept(myGuild, enemyGuild) local StartTime = os.time() db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."") db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function cleanInfo(myGuild) db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."") end function registerDeathOne(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 1, 0);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function registerDeathTwo(myGuild, enemyGuild, cid, target) db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 0, 1);") db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."") end function removeDeaths(id) db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";") end function StopWar(myGuild, enemyGuild) cleanInfo(myGuild) cleanInfo(enemyGuild) removeDeaths(myGuild) removeDeaths(enemyGuild) end function WeAreInWar(myGuild, enemyGuild) local myGuildInfo = getGuildWarInfo(myGuild) local enemyGuildInfo = getGuildWarInfo(enemyGuild) if myGuild == enemyGuildInfo.With and enemyGuild == myGuildInfo.With then if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then return TRUE end end return FALSE end function getOnlineMembers(id) local PlayersOnline = getPlayersOnline() local MembersOnline = {} for i, pid in ipairs(PlayersOnline) do if id == getPlayerGuildId(PlayersOnline[i]) then table.insert(MembersOnline, PlayersOnline[i]) end end return MembersOnline end function teleportGuild(id, pos) local Members = getOnlineMembers(id) if #Members > 0 then for i = 1, #Members do if #Members > 1 then if getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then doTeleportThing(Members[i], pos, FALSE) doSendMagicEffect(pos, CONST_ME_TELEPORT) doSendMagicEffect(getCreaturePosition(Members[i]), CONST_ME_POFF) doPlayerSendTextMessage(Members[i], 22, 'Prepare to fight!') else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guild members must stay in Protection Zone.') end else doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guilds must have more than one player online (leader & any member, at least).') end end end end function getGuildsWithWar() local res = db.getResult("SELECT `id` FROM `guilds` WHERE `in_war_with` > 0") local GuildW = {} if res:getID() ~= -1 then while true do table.insert(GuildW, res:getDataInt "id") if not res:next() then break end end res:free() end return GuildW end function guildExist(nom) local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";") if Get:getID() ~= -1 then local ret = Get:getDataInt("id") Get:free() return ret end return -1 end function StartWar(x) teleportGuild(x.myGuild, Maps[x.map].Guild1Pos) teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos) if StopBattle == TRUE then addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild}) end end function StopWarNow(c) StopWar(c.myGuild, c.enemyGuild) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(c.myGuild).. BroadCast[6][2] ..getGuildNameById(c.enemyGuild).. BroadCast[6][3], BroadCast_Type) end function putWarOn(myGuild, enemyGuild) db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. myGuild .."") db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. enemyGuild .."") end]]></config> <talkaction words="!disband; /war-invite; /war-accept; /war-reject; /war-cancel-invite; /war-cancel" event="script"><![CDATA[ domodlib('function_config') function onSay(cid, words, param, channel) if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then local myGuild = getPlayerGuildId(cid) if words == "/war-invite" then if GuildIsInPEace(myGuild) == true then if param ~= "" then if guildExist(param) ~= -1 then local invitedGuild = getGuildId(param) if invitedGuild ~= -1 then if invitedGuild ~= myGuild then if GuildIsInPEace(invitedGuild) == true then if getPlayerStorageValue(cid, 65570) <= os.time() then doInviteToWar(myGuild, invitedGuild) doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type) setPlayerStorageValue(cid, 65570, os.time()+(20*60)) else local waitTime = (getPlayerStorageValue(cid, 65570) - os.time()) doPlayerSendCancel(cid, "You must wait " .. os.date("%M", waitTime) .. " minutes and " .. os.date("%S", waitTime) .. " seconds until declare another war.") end else doPlayerSendCancel(cid, CancelMessagesWar[6]) end else doPlayerSendCancel(cid, CancelMessagesWar[8]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[4]) end else doPlayerSendCancel(cid, CancelMessagesWar[7]) end else doPlayerSendCancel(cid, CancelMessagesWar[5]) end elseif words == "/war-accept" then if getGuildWarInfo(myGuild).By ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).By doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type) WarAccept(myGuild, enemyGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-reject" then if getGuildWarInfo(myGuild).By ~= 0 then doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).By) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-cancel-invite" then if getGuildWarInfo(myGuild).To ~= 0 then if getGuildWarInfo(myGuild).With == 0 then doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type) cleanInfo(getGuildWarInfo(myGuild).To) cleanInfo(myGuild) else doPlayerSendCancel(cid, CancelMessagesWar[3]) end else doPlayerSendCancel(cid, CancelMessagesWar[1]) end elseif words == "/war-challenge" then local map = Maps[param] if map then if enemy ~= 0 then local enemyGuild = getGuildWarInfo(myGuild).With addEvent(StartWar, 15000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param}) doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type) else doPlayerSendCancel(cid, CancelMessagesWar[10]) end else doPlayerSendCancel(cid, CancelMessagesWar[9]) end elseif words == "/war-cancel" then local enemy = getGuildWarInfo(myGuild).With if enemy ~= 0 then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, CancelMessagesWar[10]) end elseif words == "!disband" then local enemy = getGuildWarInfo(myGuild).With if enemy > 0 then if channel == CHANNEL_GUILD then if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then StopWar(myGuild, enemy) doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type) else local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel) local timeLeft = timeEnd - os.time() local hours = (os.date("%H", timeLeft) + 23) doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.") end else doPlayerSendCancel(cid, "You have to say this command in your guild channel.") end else return FALSE end return FALSE end else doPlayerSendCancel(cid, CancelMessagesWar[2]) end local file = io.open("data/logs/Wars.txt", "a") file:write("".. os.date("%d %B %Y %X ", os.time()) .." --> "..getCreatureName(cid)..": "..words.." "..param.."\n") file:close() return TRUE end]]></talkaction> <event type="login" name="WarLogin" event="script"><![CDATA[ domodlib('function_config') function onLogin(cid) registerCreatureEvent(cid, "WarKill") return true end]]></event> <event type="kill" name="WarKill" event="script"><![CDATA[ domodlib('function_config') local PZ = createConditionObject(CONDITION_INFIGHT) setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime')) function onKill(cid, target, lastHit) if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then local config = { removeFrags = true -- If 'true' player won't gain frags from a player that is versus him; else, player will gain frags as normal. } local GUID = getPlayerGUID(cid) local namec = getPlayerName(cid) local namet = getPlayerName(target) local skull = getCreatureSkullType(cid) local skullend = getPlayerSkullEnd(cid) local playerPos = getPlayerPosition(cid) local targetPos = getPlayerPosition(target) local cidd = cid local timeA = os.time() local timesA = {today = (timeA - 86400), week = (timeA - (7 * 86400))} local contentsA, resultA = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeA - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultA:getID() ~= -1) then repeat local contentA = { name = resultA:getDataString("name"), level = resultA:getDataInt("level"), date = resultA:getDataInt("date") } if(contentA.date > timesA.today) then table.insert(contentsA.day, contentA) elseif(contentA.date > timesA.week) then table.insert(contentsA.week, contentA) else table.insert(contentsA.month, contentA) end until not resultA:next() resultA:free() end local sizeA = { day = table.maxn(contentsA.day), week = table.maxn(contentsA.week), month = table.maxn(contentsA.month) } local function removeFrag(cid) local timeB = os.time() local timesB = {today = (timeB - 86400), week = (timeB - (7 * 86400))} local contentsB, resultB = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. GUID .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeB - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(resultB:getID() ~= -1) then repeat local contentB = { name = resultB:getDataString("name"), level = resultB:getDataInt("level"), date = resultB:getDataInt("date") } if(contentB.date > timesB.today) then table.insert(contentsB.day, contentB) elseif(contentB.date > timesB.week) then table.insert(contentsB.week, contentB) else table.insert(contentsB.month, contentB) end until not resultB:next() resultB:free() end local sizeB = { day = table.maxn(contentsB.day), week = table.maxn(contentsB.week), month = table.maxn(contentsB.month) } if sizeB.day > sizeA.day or sizeB.week > sizeA.week or sizeB.month > sizeA.month then db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = "..GUID..") ORDER BY `death_id` DESC LIMIT 1;") doPlayerSendTextMessage(cidd, 21, "Frag from "..namet.." wasn't counted.") end if skull == SKULL_RED then if getCreatureSkullType(cidd) == SKULL_BLACK then doPlayerSetSkullEnd(cidd, skullend, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_RED) end elseif skull == SKULL_WHITE then if getCreatureSkullType(cidd) == SKULL_RED then doPlayerSetSkullEnd(cidd, timeB, SKULL_RED) doCreatureSetSkullType(cidd, SKULL_WHITE) end end end local myGuild = getPlayerGuildId(cid) local enemyGuild = getPlayerGuildId(target) if myGuild ~= 0 and enemyGuild ~= 0 then if enemyGuild == getGuildWarInfo(myGuild).With then local guildc = getPlayerGuildName(cid) local guildt = getPlayerGuildName(target) doAddCondition(cid, PZ) if lastHit == TRUE then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then if getShowInfo(myGuild) == 1 then registerDeathOne(myGuild, enemyGuild, cid, target) else registerDeathTwo(myGuild, enemyGuild, cid, target) end else doPlayerSendTextMessage(cid, 19, "Remember: in PvP zone the system doesn't register the frag.") end end if config.removeFrags == true then addEvent(removeFrag, 150) end local gsim = getShowInfo(myGuild) local gsie = getShowInfo(enemyGuild) if gsim > gsie then resulta = getKills(guildc) resultb = getKills(guildt) else resulta = getKills(guildt) resultb = getKills(guildc) end local players = getOnlinePlayers() for i,playerName in ipairs(players) do local player = getPlayerByName(playerName); if getPlayerGuildId(player) == myGuild then if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then doPlayerSendChannelMessage(player, "", "Opponent "..namet.." of the "..guildt.." was killed by "..namec..". The new score is "..resulta..":"..resultb.." frags.", TALKTYPE_CHANNEL_W, CHANNEL_GUILD) end end end end end end return TRUE end]]></event> </mod>
     
    2) Adicione isso a database (no phpMyAdmin):

    ALTER TABLE `guilds` ADD `invited_to` INT( 11 ) NOT NULL , ADD `invited_by` INT( 11 ) NOT NULL , ADD `in_war_with` INT( 11 ) NOT NULL , ADD `kills` INT( 11 ) NOT NULL , ADD `show` SMALLINT( 1 ) NOT NULL , ADD `war_time` INT( 11 ) NOT NULL ;
     
    e isso:
     

    CREATE TABLE `deaths_in_wars` ( `guild_id` INT( 11 ) NOT NULL , `player_id` INT( 11 ) NOT NULL , `killer_guild` INT( 11 ) NOT NULL , `killer` INT( 11 ) NOT NULL , `date` INT( 11 ) NOT NULL , `result1` INT( 11 ) NOT NULL , `result2` INT( 11 ) NOT NULL ) ENGINE = MYISAM ;
     
    e finalmente isso:
     

    UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0;
     
    não sabe como adicionar ? basta abrir o bloco de notas , copiar o conteudo acima e colar e salvar como "nome.sql" apos isso va a http://localhost/phpmyadmin , loga-se escolha a database clique em importar e selecione o arquivo que você salvou.
     
    3) Va até xampp/htdocs. Crie um arquivo chamado wars.php: [copie um arquivo php e apague tudo que tiver dentro ou abra o bloco de notas coloque o conteudo e salve como "wars.php"]
     

    <?PHP //Litle Config $MaxShow = 100; //END if($action == '') { $main_content .= ' <P ALIGN=CENTER> <br> <FONT SIZE=4 COLOR=#8A0808> How to use... </FONT> <br> <br> <FONT SIZE=2 COLOR=#DF0101> * <b>/war-invite</b> : <FONT SIZE=1 COLOR=green> Send an invitation to start a war.<br> <u>Example</u>: /war-invite Death Hard </FONT><br> * <b>/war-accept</b> : <FONT SIZE=1 COLOR=green> Accept the invitation to start a war. </FONT><br> * <b>/war-reject</b> : <FONT SIZE=1 COLOR=green> Reject the invitation to start a war. </FONT><br> * <b>/war-cancel-invite</b> : <FONT SIZE=1 COLOR=green> Cancel the invitation already sent to start a war. </FONT><br> * <b>/war-cancel</b> : <FONT SIZE=1 COLOR=green> Finish the current war: it can only be used after 1 day of war. </FONT><br> </FONT> <br> <FONT SIZE=2 COLOR=#8A0808> Those commands can only be executed by guild leaders.<br><br> <table border="1"><tr border="1"><td border="1"><h3>Remember:</h3> <ul> <li>You won\'t get any frag if you kill someone that is VERSUS you.</li> <li>If you kill someone that is in your guild, you will get a frag.</li> </ul></td></tr></table> </FONT> </P> '; $wars = $SQL->query(" SELECT g.name AS gname, wg.name AS wgname, g.war_time AS gtime, wg.war_time AS wgtime, g.kills AS kills, wg.kills AS ekills, g.show AS s, g.id AS gid, wg.id AS wgid, g.logo_gfx_name AS glogo, wg.logo_gfx_name AS wglogo FROM guilds AS g INNER JOIN guilds AS wg ON wg.id = g.in_war_with ORDER BY s DESC LIMIT 50; "); foreach ($wars as $k=>$v) { if ($v[s] == 1) { $glogo = "default_logo.gif"; $wglogo = "default_logo.gif"; if(!empty($v[glogo])) $glogo = $v[glogo]; if(!empty($v[wglogo])) $wglogo = $v[wglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $stats .=" <TR BGCOLOR=".$bgcolor."> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[gname] . "'><font color='#5A2800'>$v[gname]</font></a></center></TD> <TD WIDTH=40%><center><a href='index.php?subtopic=wars&action=show&war=" . $v[gid] . "'><font color='#5A2800'>{$v[kills]} - {$v[ekills]}</font></a></center></TD> <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgname] . "'><font color='#5A2800'>$v[wgname]</font></a></center></TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD><center><img border=1 src='guilds/".$glogo."' width='64px' height='64px'/></center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $v[gtime]) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $v[wgtime]) . "</center></TD> <TD><center><img border=1 src='guilds/".$wglogo."' width='64px' height='64px'/></center></TD> </TR> "; } } $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Active Wars</blink></b></font></td></tr></tbody></table> '; if(!$stats) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No active wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $stats </TABLE> "; } ?> <?PHP $invitations = $SQL->query(" SELECT ig.name AS igname, i.name AS iname, i.id AS iid, ig.id AS igid, i.war_time AS itime, i.logo_gfx_name AS ilogo, ig.logo_gfx_name AS iglogo FROM guilds AS i INNER JOIN guilds AS ig ON ig.id = i.invited_to ORDER BY itime ASC LIMIT 50; "); foreach ($invitations as $k=>$v) { $ilogo = "default_logo.gif"; $iglogo = "default_logo.gif"; if(!empty($v[ilogo])) $ilogo = $v[ilogo]; if(!empty($v[iglogo])) $iglogo = $v[iglogo]; if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++; $invi .=" <TR BGCOLOR=".$bgcolor."> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[iname] . "'><font color='#5A2800'>$v[iname]</font></a> </b> </center> </TD> <TD width=40%><center>0-0</center></TD> <TD width=30%> <center> <b> <a href='index.php?subtopic=guilds&action=show&guild=" . $v[igname] . "'><font color='#5A2800'>$v[igname]</font></a> </b> </center> </TD> </TR> <TR BGCOLOR=".$bgcolor."> <TD> <center> <img border=1 src='guilds/".$ilogo."' width='64px' height='64px'/> </center> </TD> <TD><center><b>Declared on:</b><br />" . date("d/m/y H:i:s", $v[itime]) . "</center></TD> <TD> <center> <img border=1 src='guilds/".$iglogo."' width='64px' height='64px'/> </center> </TD> </TR> "; } $main_content .= '<br><br><br> <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Declared Wars</blink></b></font></td></tr></tbody></table>'; if(!$invi) { $main_content .= ' <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> No declared wars in '.$config['server']['serverName'].' yet. </TD> </TR> </TABLE> <br> '; } else { $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> $invi </TABLE> "; } } //SHOW FRAGS ~~ if($action == 'show') { $guild = $ots->createObject('Guild'); $guild->load($_REQUEST['war']); $ranks = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild->getId() ." ORDER BY level DESC; "); foreach ($ranks as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths = $q[n]; } if($totDeaths > 1 || $totDeaths == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths1 .="<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths $deathL</td> </tr> "; $totFrags = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags = $p[m]; } if($totFrags > 1 || $totFrags == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags1 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags $fragL</td> </tr> "; } } $guild2 = $ots->createObject('Guild'); $guild2->load($guild->getCustomField(in_war_with)); $ranks2 = $SQL->query(" SELECT * FROM guild_ranks WHERE guild_id = ". $guild2->getId() ." ORDER BY level DESC; "); foreach ($ranks2 as $y) { $Players = $SQL->query(" SELECT * FROM players WHERE rank_id = ". $y[id] ." ORDER BY name ASC;"); foreach ($Players as $v) { $totDeaths2 = 0; $deaths = $SQL->query(" SELECT COUNT(player_id) AS n FROM deaths_in_wars WHERE player_id = ". $v[id] ." GROUP BY player_id DESC LIMIT 1;"); foreach ($deaths as $q) { $totDeaths2 = $q[n]; } if($totDeaths2 > 1 || $totDeaths2 == 0){ $deathL = "deaths"; } else{ $deathL = "death"; } $membersDeaths2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totDeaths2 $deathL</td> </tr> "; $totFrags2 = 0; $frags = $SQL->query(" SELECT COUNT(killer) AS m FROM deaths_in_wars WHERE killer = ". $v[id] ." GROUP BY killer DESC LIMIT 1;"); foreach ($frags as $p) { $totFrags2 = $p[m]; } if($totFrags2 > 1 || $totFrags2 == 0){ $fragL = "frags"; } else{ $fragL = "frag"; } $membersFrags2 .= "<tr bgcolor=#D4C0A1> <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td> <td width=30%>$totFrags2 $fragL</td> </tr> "; } } $deaths3 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." OR killer_guild = ". $guild2->getId() .") ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG1 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $deathsG2 = $SQL->query(" SELECT * FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." ORDER BY date DESC LIMIT ". $MaxShow .";"); $Topfragger1 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger1 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName = $name->getName(); $numTop1 = $y[maximo]; } $Topfragger2 = $SQL->query(" SELECT killer, COUNT(killer) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY killer ORDER BY maximo DESC LIMIT 1;"); foreach ($Topfragger2 as $y) { $name = $ots->createObject('Player'); $name->load($y[killer]); $TopFraggerName2 = $name->getName(); $numTop2 = $y[maximo]; } $mostDead = $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName = $name->getName(); $mostDeadNum = $y[maximo]; } $mostDead2= $SQL->query(" SELECT player_id, COUNT(player_id) maximo FROM deaths_in_wars WHERE killer_guild = ". $guild2->getId() ." GROUP BY player_id ORDER BY maximo DESC LIMIT 1;"); foreach ($mostDead2 as $y) { $name = $ots->createObject('Player'); $name->load($y[player_id]); $mostDeadName2 = $name->getName(); $mostDeadNum2= $y[maximo]; } foreach ($deaths3 as $a=>$b) { $killed3 = $ots->createObject('Player'); $killed3->load($b[player_id]); $killedName3 = $killed3->getName(); $killer3 = $ots->createObject('Player'); $killer3->load($b[killer]); $killerName3 = $killer3->getName(); $guild3 = $ots->createObject('Guild'); $guild3->load($b[killer_guild]); $guildName3 = $guild3->getName(); $totKills1 = 0; $killss1 = $SQL->query(" SELECT COUNT(result1) AS m FROM deaths_in_wars WHERE (killer_guild = ". $guild->getId() ." AND date <= ". $b[date] .") GROUP BY result1 DESC LIMIT 1;"); foreach ($killss1 as $p) { $totKills1 = $p[m]; } $totKills2 = 0; $killss2 = $SQL->query(" SELECT COUNT(result2) AS n FROM deaths_in_wars WHERE (killer_guild = ". $guild2->getId() ." AND date <= ". $b[date] .") GROUP BY result2 DESC LIMIT 1;"); foreach ($killss2 as $q) { $totKills2 = $q[n]; } $kills3 .=" <TR BGCOLOR=#D4C0A1> <TD> <a href='index.php?subtopic=characters&name=" . $killerName3 . "'><u>$killerName3</u></a> </TD> <TD> <a href='index.php?subtopic=characters&name=" . $killedName3 . "'><u>$killedName3</u></a> </TD> <TD> $guildName3 </TD> <TD> $totKills1:$totKills2 </TD> <TD> " . date("d/m/y H:i:s", $b[date]) . " </TD> </TR> "; } if(!empty($mostDeadNum)){$mostDeadNum = $mostDeadNum;}else{$mostDeadNum = 0 + $mostDeadNum;} if(!empty($mostDeadNum2)){$mostDeadNum2 = $mostDeadNum2;}else{$mostDeadNum2 = 0 + $mostDeadNum2;} if(!empty($numTop1)){$numTop1 = $numTop1;}else{$numTop1 = 0 + $numTop1;} if(!empty($numTop2)){$numTop2 = $numTop2;}else{$numTop2 = 0 + $numTop2;} foreach ($deathsG1 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } foreach ($deathsG2 as $k=>$v) { $killed = $ots->createObject('Player'); $killed->load($v[player_id]); $killedName = $killed->getName(); $killer = $ots->createObject('Player'); $killer->load($v[killer]); $killerName = $killer->getName(); $kills2 .=" <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\"> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a> </b> </center> </TD> <TD> <center> <b> <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a> </b> </center> </TD> <TD> <center> " . date("d/m/y H:i:s", $v[date]) . " </center> </TD> </TR> "; } if($numTop1 > 1 || $numTop1 == 0){$fragl1 = "frags";}else{$fragl1 = "frag";} if($numTop2 > 1 || $numTop2 == 0){$fragl2 = "frags";}else{$fragl2= "frag";} if($mostDeadNum > 1 || $mostDeadNum == 0){$deathl1 = "deaths";}else{$deathl1 = "death";} if($mostDeadNum2 > 1 || $mostDeadNum2 == 0){$deathl2 = "deaths";}else{$deathl2 = "death";} $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>War Information</b></font></td></tr></tbody></table> '; $logo = "default_logo.gif"; $logo2 = "default_logo.gif"; $a = $guild->getCustomField(logo_gfx_name); $b = $guild2->getCustomField(logo_gfx_name); if(!empty($a)) $logo = $a; if(!empty($b)) $logo2 = $b; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR='#D4C0A1'> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild->getName()."'><font color='#5A2800'>".$guild->getName()."</font></a></center></TD> <TD WIDTH='30%'><center><font color='#5A2800'><b>".$guild->getCustomField(kills)." - ".$guild2->getCustomField(kills)."</b></font></center></TD> <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild2->getName()."'><font color='#5A2800'>".$guild2->getName()."</font></a></center></TD> </TR> <TR BGCOLOR='#D4C0A1'> <TD><center><img border=1 src='guilds/".$logo."' width='64px' height='64px'/><p><b><u>Top fragger:</b></u><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName."'>".$TopFraggerName."</a> (".$numTop1." ".$fragl1.")<p><b><u>Most dead:</b></u><br /><a href='index.php?subtopic=characters&name=".$mostDeadName2."'>".$mostDeadName2."</a> (".$mostDeadNum2." ".$deathl2.")</center></TD> <TD><center><b>Declared at:</b><br />" . date("d/m/y H:i:s", $guild->getCustomField(war_time)) . "<p><b>Started at:</b><br />" . date("d/m/y H:i:s", $guild2->getCustomField(war_time)) . "</center></TD> <TD><center><img border=1 src='guilds/".$logo2."' width='64px' height='64px'/><p><b><u>Top fragger:</u></b><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName2."'>".$TopFraggerName2."</a> (".$numTop2." ".$fragl2.")<p><b><u>Most dead:</u></b><br /><a href='index.php?subtopic=characters&name=".$mostDeadName."'>".$mostDeadName."</a> (".$mostDeadNum." ".$deathl1.")</center></TD> </TR> </TABLE> "; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Kills - '.$guild->getName().' vs '.$guild2->getName().'</b></font></td></tr></tbody></table> '; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD><b>Killer</b></TD> <TD><b>Victim</b></TD> <TD><b>Fragging Guild</b></TD> <TD><b>Result</b></TD> <TD><b>Date</b></TD> </TR> $kills3 </TABLE>"; $main_content .= ' <br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Frags</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1/> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1/> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersFrags2 </TABLE> "; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><font color="white" size=1>.</font></td></tr></tbody></table>'; $main_content .= ' <table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Deaths</b></font></td></tr></tbody></table>'; $main_content .= " <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%> <TR BGCOLOR=#D4C0A1> <TD width=50%> <div align='right'> <B> ". $guild->getName() ." </B> </div> </TD> <TD width=50%> <div align='left'> <B> ". $guild2->getName() ." </B> </div> </TD> </TR> <TR BGCOLOR=#D4C0A1> <TD> <div align='right'> <img src=guilds/".$logo." width='64px' height='64px' border=1 /> </div> </TD> <TD> <div align='left'> <img src=guilds/".$logo2." width='64px' height='64px'border=1 /> </div> </TD> </TR> </TABLE> <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths1 </TABLE> <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%> $membersDeaths2 </TABLE> "; } $main_content .= " <table border='0' CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><div style='text-align: right; margin: 20px auto; font-size: 10px;'> Created by <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a></div></td></tr></tbody></table>"; ?>
     
    4) Abra o arquivo guilds.php [da pasta htdocs] e DEPOIS de (linha 1740~):
     

    if($guild_leader) { if($_POST['todo'] == 'save') { delete_guild($guild->getId()); $saved = TRUE; }
     
    adicione isso:
     

    $war = $guild->getCustomField("in_war_with"); if($war == 0) {
     
    e depois de :
     

    else { $guild_errors[] = 'You are not a leader of guild!'; } }
     
    adicione:
     

    else { $guild_errors[] = 'You are in war with with some other guild!'; } }
     
    5) Abra o arquivo index.php [na pasta htdocs] e depois ou antes de:(não faz diferença):
     

    case "buypoints"; $subtopic = "buypoints"; $topic = "Buy Points"; include("buypoints.php");
    break;
     
    coloque:
     

    case "wars"; $subtopic = "wars"; $topic = "Wars"; include("wars.php"); break;
     
    6) Abra xampp/htdocs/layouts/tibiacom/ e depois layout.php. Depois de:
     

    <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>
     
    coloque isso:
     

    <a href='index.php?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_wars' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color="red">Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a>
     
    7) Agora entre na seção Wars do seu Site -> Localhost - Wars
     

     

     

     
    Por favor , rep +
     
    Creditos:
     
    Recuso Imitações , Proibido Copia [Peço a um moderador que arrume o Topico se possivel]
  5. Upvote
    redmax1596 deu reputação a MatheusGlad em Como Editar Magias [Novo Update]   
    Versao 0.1b Tutorial
    Voce nao Sabe nada sobre scripts e nem mesmo como funcionao e quer criar uma magia
    Voce pode ir no classico copy/paste:
    Primeiro Passo:
    Copie uma tag no spells.xml Exemplo:


    E cole logo a baixo uma identica.
    Agora edite certos campos:



    Vermelho Palavras a serem ditas para a magia sair
    Verde Level para Usar a magia
    Amarelo Mana pra Usar a magia

    Negrito Voce deve mudar para o nome do seu script, no caso usaremos eternal extreme winter

    Procure na pasta scripts/attack o bloco de notas chamado eternal winter copieo e cole renomeie-o para eternal extreme winter, abaixo ensino como editar.


    Em seguida voce pode editar certas coisas



    Azul Minimo Dano -- Leve em base que dakele geito que esta 2.7 ira dar 500 de dano se voce multiplicar por 2 o 2.7 ira ficar 5.4 e ira dar 1000 de dano
    Rosa Maximo Dano -- mesmo conceito de cima

    Laranja se voce nao conhece o comando pode ser !z 1,2,3...66 ou /z 1,2,3...66 useo no seu ot e veja um bem legal e apague toda a parte laranja e bote o efeito que voce quer no meu caso irei botar 61

    Conclusao a magia ira ficar com a forma do exevo gran mas frigo com otro dano e com otro efeito

    ___________
    Update 0.2a

    Usando tambem o comando !x ou /x 1,2,3...41

    Na linha da sua magia vai estar assim:




    Para usar os efeitos do /x ou !x voce deve botar antes do EFFECT a palavra DISTANCE e ficara assim:




    Negrito Como devera ficar para utilizar o comando !x ou /x

    Listinha de efeitos e seus devidos nomes:


    ___________________
    Update 0.2b

    Mudando a area da sua spell:

    Repare a linha da nossa primeira spell la em cima




    Neste local voce edita a area da sua magia vamos começar:

    Apague toda akela linha acima em negrito e bote isto:






    Legenda dos numeros:
    0 = nao vai acertar a magia
    1 = aonde a magia vai acertar
    2 = centro que eh o player (nao acertara tambem)

    Agora voce pode fazer uma area que voce queira de qualquer forma
    ___________________
    Update 0.3a

    Como Trocar o Dano da sua Magia:

    Para trocar o tipo de dano repare a linha da magia:



    Vermelho Eh o tipo de dano que ira dar eh so mudalo para outro tipo

    Listinha de Danos:

    COMBAT_PHYSICALDAMAGE - 1COMBAT_ENERGYDAMAGE - 2COMBAT_EARTHDAMAGE - 4COMBAT_POISONDAMAGE - 4COMBAT_FIREDAMAGE - 8COMBAT_UNDEFINEDDAMAGE - 16COMBAT_LIFEDRAIN - 32COMBAT_MANADRAIN - 64COMBAT_HEALING - 128COMBAT_DROWNDAMAGE - 256COMBAT_ICEDAMAGE - 512COMBAT_HOLYDAMAGE - 1024COMBAT_DEATHDAMAGE - 2048PS:Voce pode usar os numeros no lugar das palavras

    ___________________
    Update 0.3b
    Botando em pratica tudo que aprendemos!

    Neste update nos iremos usar todo o conteudo do tutorial para fazer uma magia com varios efeitos,danos e areas diferentes

    Aqui esta o script que criei para trabalharmos em cima dele:


    Legenda:
    Azul Dano de cada wave (onda) da sua magia
    Negrito Area das magias (arr)
    Vermelho Pausa de uma wave para outra, se quizer aumente bote 100,300,500...

    Pronto agora se voce viu os outros updates sabera mudar dano efeito e fazer uma otima magia bem louca

    Video de Demonstraçao:




    __________
    Fim dos Updates (Se voce tiver alguma opniao de update MP para mim que eu faço mais updates)
  6. Upvote
    redmax1596 deu reputação a joaohd em Minha Spell Ta Sem Exausted. Ajuda.   
    Caso sejão as chamadas "enchanted spells", ou seja, com muitas waves, tente adicionar um "return TRUE" antes do último "end" na spell. Exemplo:
     

    ... Aqui estão as configurações da spell, área, dano ... function onCastSpell(cid, var) addEvent(doCombat, 1000, combat1, var) addEvent(doCombat, 2000, combat2, var) addEvent(doCombat, 3000, combat3, var) end
     
    Ficaria assim:
     

    ... Aqui estão as configurações da spell, área, dano ... function onCastSpell(cid, var) addEvent(doCombat, 1000, combat1, var) addEvent(doCombat, 2000, combat2, var) addEvent(doCombat, 3000, combat3, var) return TRUE end
     
     
    flw
  7. Upvote
    redmax1596 deu reputação a DevilMoon em [ Action ]Pokeball System   
    PokeBall System!
     
    Ola Xtibianos, Vim hoje postar um Famoso Script de Pokeball System feito pelo Genioso Nahruto, claro pedi a autorização dele para postar.
    A Todos que forem pegar Scripts de outras Pessoas, lembre-se de sempre pedir autorização e claro colocar os creditos.
     
    Para Tfs: 0.34 , 0.35 e 0.36 Essas Forao Testadas E Funfo.
    Versoes: 8.42 - 8.50 - 8.52 - 8.54 - 8.6.
    Ots Testados: Snowz Yurots - Alissow Server - Styller Yurots
     
     
    Primeiramente Vamos Fuçar em Function.lua, se voce nao Sabe onde fica vá em:
    Data>Lib>Function.lua
     
    Abra e Coloque Isto:
     

    _warpzone = 2147483648 -- start storing strings here (THIS IS THE ABSOLUTE MAXIMUM VALUE FOR THIS) _maxlength = 1024 -- multiply by 3 to get the true length. setPlayerStorageInteger = setPlayerStorageValue getPlayerStorageInteger = getPlayerStorageValue function setPlayerStorageString(cid, key, value) if #value > (_maxlength-1) * 3 - 1 then -- Last word is reserved for 0 termination of the string. error("Storage string is too long") end if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local word = 0 local wordwrap = 0 local wordcount = 0 local i = 1 while i <= #value do local byte = string.byte(string.sub(value, i, i)) word = bit.bor(word, bit.lshift(byte, wordwrap)) wordwrap = wordwrap + 8 if wordwrap == 24 then --[[ In the ideal world we would be able to store 4 characters per word, however, as the default return value for getPlayerStorageValue is -1, we cant use the last bit. ]]-- setPlayerStorageInteger(cid, key + wordcount, word) word = 0 wordwrap = 0 wordcount = wordcount + 1 end i = i + 1 end -- store the last word setPlayerStorageInteger(cid, key + wordcount, word) end function getPlayerStorageString(cid, key) if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local wordcount = 0 local str = "" while true do if wordcount >= _maxlength then break end local word = getPlayerStorageInteger(cid, key + wordcount) if word == -1 then -- end of string break else -- Extract the 3 characters from the value byte = bit.band(word, 255) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 65280), 8) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 16711680), 16) if byte == 0 then break else str = str .. string.char(byte) end end wordcount = wordcount + 1 end return str end
     
    E Isso!

    function doConvinceSummon(cid, creature, amount, pos) summonplayerpos = {x=pos.x, y=pos.y, z=pos.z, stackpos=253} summonplayer = getThingfromPos(summonplayerpos) if(summonplayer ~= nil and summonplayer.itemid > 0) then doPlayerSendCancel(cid,"There is not enough room to summon here.") ret = 0 else convince = doSummonCreature(creature, pos) doConvinceCreature(cid, convince) ret = 1 end return ret end
     
    Agora Vamos Fazer o Script Vá em Pasta do Seu Ot > Data > Actions > Scripts Crie uma Pasta chamada pokeball.lua
    e bote isso dentro
     

    local notAllowed = {"Ferumbras", "Demon"} local storage = { status = 25650, pokeName = 25651 } local actionid_used = 7510 function onUse(cid, item, fromPos, item2, toPos) local pokeballStatus = getPlayerStorageValue(cid, storage.status) local pokeName = getPlayerStorageString(cid, storage.pokeName) pos = getPlayerPosition(cid) pos.stackpos = 0 if pokeballStatus == -1 then toPos.stackpos = 253 local pokeThing = getThingfromPos(toPos) if isCreature(pokeThing.uid) == TRUE then if isPlayer(pokeThing.uid) == FALSE then local pokename_ = getCreatureName(pokeThing.uid) if item.actionid ~= actionid_used then -- local maxHealth = 400 -- local creatureHealth = getCreatureHealth(pokeThing.uid) -- local divNum = (string.len(maxHealth)-1)^2 -- local result = math.floor((creatureHealth/divNum)/10) -- local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7)))) -- if chance == result then if isInTable(notAllowed, pokename_) == TRUE then doPlayerSendCancel(cid, "You cannot catch this creature") else setPlayerStorageString(cid, storage.pokeName, pokename_) doRemoveCreature(pokeThing.uid) doSendDistanceShoot(fromPos, toPos, 37) setPlayerStorageValue(cid, storage.status, 1) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") doSetItemActionId(item.uid, actionid_used) end -- else -- doSendMagicEffect(fromPos, 2) -- doPlayerSendCancel(cid, "The Pokemom Escaped") -- end elseif item.actionid == actionid_used and pokename_ == pokeName then doPlayerSay(cid, pokeName .. " Back!!", TALKTYPE_SAY) doRemoveCreature(pokeThing.uid) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") setPlayerStorageValue(cid, storage.status, 1) doSendDistanceShoot(fromPos, toPos, 37) else doSendMagicEffect(fromPos, 2) doPlayerSendCancel(cid, "This pokeball is already used") end else doPlayerSendCancel(cid, "You cannot catch this creature") end else doPlayerSendCancel(cid, "Creature not found") end elseif pokeballStatus == 1 then summons = getCreatureSummons(cid) -- if #summons >= 2 then -- doPlayerSendCancel(cid, "You cannot call more pokemons") -- else doConvinceSummon(cid, pokeName, 0, toPos) doSendDistanceShoot(fromPos, toPos, 37) doPlayerSay(cid, pokeName .. " Go!!", TALKTYPE_SAY) setPlayerStorageValue(cid, storage.status, -1) doSetItemSpecialDescription(item.uid, "it is empty.") -- end end else return 1 end function isInTable(t, val) for _, v in pairs(t) do if v == val then return TRUE end end return LUA_ERROR end
     
    para TFS
     

    local notAllowed = {"Ferumbras", "Demon"} local storage = { status = 15244, pokeName = 15212 } local actionid_used = 7510 function onUse(cid, item, fromPos, item2, toPos) local pokeballStatus = getPlayerStorageValue(cid, storage.status) local pokeName = getPlayerStorageString(cid, storage.pokeName) pos = getPlayerPosition(cid) pos.stackpos = 0 if pokeballStatus <= 0 then toPos.stackpos = 253 local pokeThing = getThingfromPos(toPos) if isCreature(pokeThing.uid) == TRUE then if isPlayer(pokeThing.uid) == FALSE then local pokename_ = getCreatureName(pokeThing.uid) if item.actionid ~= actionid_used then -- local maxHealth = 400 -- local creatureHealth = getCreatureHealth(pokeThing.uid) -- local divNum = (string.len(maxHealth)-1)^2 -- local result = math.floor((creatureHealth/divNum)/10) -- local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7)))) -- if chance == result then if isInTable(notAllowed, pokename_) == TRUE then doPlayerSendCancel(cid, "You cannot catch this creature") else setPlayerStorageString(cid, storage.pokeName, pokename_) doRemoveCreature(pokeThing.uid) doSendDistanceShoot(fromPos, toPos, 37) setPlayerStorageValue(cid, storage.status, 1) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") doSetItemActionId(item.uid, actionid_used) end -- else -- doSendMagicEffect(fromPos, 2) -- doPlayerSendCancel(cid, "The Pokemom Escaped") -- end elseif item.actionid == actionid_used and pokename_ == pokeName then doCreatureSay(cid, pokeName .. " Back!!", TALKTYPE_SAY) doRemoveCreature(pokeThing.uid) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") setPlayerStorageValue(cid, storage.status, 1) doSendDistanceShoot(fromPos, toPos, 37) else doSendMagicEffect(fromPos, 2) doPlayerSendCancel(cid, "This pokeball is already used") end else doPlayerSendCancel(cid, "You cannot catch this creature") end else doPlayerSendCancel(cid, "Creature not found") end elseif pokeballStatus == 1 then -- summons = doCreatureSummons(cid) -- if #summons >= 2 then -- doPlayerSendCancel(cid, "You cannot call more pokemons") -- else doConvinceSummon(cid, pokeName, 0, toPos) doSendDistanceShoot(fromPos, toPos, 37) doCreatureSay(cid, pokeName .. " Go!!", TALKTYPE_SAY) setPlayerStorageValue(cid, storage.status, 0) doSetItemSpecialDescription(item.uid, "it is empty.") -- end end return 1 end function isInTable(t, val) for _, v in pairs(t) do if v == val then return TRUE end end return LUA_ERROR end
     
    Agora Vamos Adicionar as Tags, vá em Data>Actions.xml e Adicione as Tags Corretas´
     

    <action itemid="xxxx" script="pokeball.lua" allowfaruse="1" blockwalls="1" />
     
    [font-"Georgia"]em <action itemid="xxxx" nos 4 X voce coloca o Number Id Do seu Item que Será como uma "Pokeball"[/font]
     
     
    Oque o Script Faz Realmente:
     
    - Guarda monstros dentro de objetos e salva seu status, você pode colocar pra salvar em qlqr objeto.. seria ótimo para projetos pokemons..
     
     
    Creditos:
    Nahruto
     
     
    Print Screen's:
     
    Snorlax Saindo da Pokeball:
     

     
    Snorlax Voltando para a Pokeball
     

     
    Look da Pokeball ( o Player so Ve assim You See a Pokeball , Have Snorlax )]
     

     
     
    Lembrando que eu nao Adicionei o Efeito da Pokeball Abrindo e Jogando o Monstro.
    Para fazer este Tipo de efeito voce vai ter que saber direitinho o LookType da Pokeball Fechando e Saindo, e transformar para um efeito e depois modificar no Script, aqui no xtibia Existe varios Tutoriais explicando isto, é so procurar!
     
     
     

    Gostou? Clica no
    Ali em Baicho para me Ajudar!
     
     
     
    Abraços..
  8. Upvote
    redmax1596 deu reputação a safra em Otmapeditor Excluindo Npc's !   
    Talvez o seu map editor não seja compatível com seu sistema operacional!
     
    Tente usar o melhor map editor :]
     
    Site Official ~> Clique_Aqui
  9. Upvote
    redmax1596 deu reputação a luisfe23 em [Encerrado] Nao Consigo Entra No Meu Ot !   
    Seguinte, vc precisa libera a porta 7171 e 7172 TCP/UDP.
    E dependendo da net, para entrar no sv vc vai usa o ip do modem, por exemplo o site do modem é 10.1.1.1 se vc for ver seu endereço ip, normalmente é 10.1.1.2, esse vai ser o seu ip apenas vc entra nesse.
     
    Tenta ai, espero ter ajudado.
     
    Abraços.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...