Ir para conteúdo

Líderes

Conteúdo Popular

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

  1. Alissow OTS 5.0!!!!! [17/03/ 2013] Provavelmente vocês estão pensando "mas que diabo de OTS é esse?", afinal, já faz 2 anos desde que a ultima versão foi lançada (http://www.xtibia.co...10-86-completo/) e desde lá prometemos algo que não foi cumprido - até agora -, uma versão nova. ENFIM, TEMOS AGORA A MAIS NOVA VERSÃO DE UM DOS SERVIDORES MAIS AVACALHADOS JOGADOS DOS ULTIMOS TEMPOS. Mas eu tenho uma má noticia, está incompleto. Sim, o mapa está inacabado. Muitas coisas que eu planejei fazer nele eu não completei. Boa parte o Comedinha ajudou a terminar, adicionando o resto dos caminhos básicos e os monstros. mas mapa inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7, etc). A ultima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso. VAMOS BAIXAR E JOGAR, SEUS LINDOS Créditos Gerais: 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]: Atualização nº 2 [3.4]: Atualização 3.5 [06/08/2009]: Atualização Patch 3.5.1 [07/08/2009]: Atualização 3.6 [10/08/2009]: Atualização 3.7! Beta [18/12/2009]: Atualização 3.7 Patch 1 [27/12/2009]: Atualização 3.8 [17/01/2010]: Atualização 3.8 Minor Patch 1 [17/01/2010]: Atualização 3.9 [15/02/2010]: Atualização 4.0 [15/02/2010]: Atualização 4.11! [11/07/2010]: Atualização 5.0!!!!! [17/03/2013] - Atualizado para a versão 9.83 (Comedinhasss, Tfs Team) - Sistemas novos para a nova versão, montaria, war system, etc. (Comedinhasss, Tfs Team) - Rep System e Antbot Removido. (Comedinhasss) - 64 Quests reformuladas. (Comedinhasss/Alissow) - Novo sistema de dicas a cada 15 min. - (Comedinhasss) - Novo sistema de map marks ao entrar no servidor. (Comedinhasss) - Organização geral em Actions e Moveevents. (Comedinhasss) - Nova organização nos monstros agora usando os que não tem no tibia original na pasta monsters em mods. (Comedinhasss) - Npcs sem utilidade removidos (Comedinhasss) - Alavanca de runas e potions reformuladas (Comedinhasss, Alissow) - Bug PZ nas Hydras arrumado (Alissow) - Cidade principal parcialmente reformulada (Alissow) - Cidade de Flam totalmente reformulada (Alissow) - As lojas agora não são mais areas PZ (Alissow) - Corrigido erros em portas que não deveriam abrir, e portas que não deveriam fechar (Alissow) - Continente de Zao removido? (Alissow) - Arrumado bugs onde podia-se pegar items na ferumbras tower e vários outros lugares (Alissow) - Arrumado caminho da "inquisition" (Alissow) - Respawns recolocados em algumas áreas de yalahar, dragons, elfs Hydras, Dark magicians e apprentices (Alissow) - Nova entrada para arena (Svargrond) na cidade principal e funcionando! (Alissow) - Elevado nível de dificuldade da Arena (Svargrond) (Alissow) - Nova localização da Ferumbras Tower (Alissow) - Cidade de Mistyc removida (Alissow) - Novo sistema premium igual ao global. (Comedinhasss) - Sistema de bless reformulado e agora por items. (Comedinhasss) - Sistema de portais/teleports (Comedinhasss, Alissow) - Sistema offline training (Comedinhasss, TFS) - Sistema de casamento trocado (Comedinhasss, Outros) - Spells (OTX) Screenshots: Mais screenshots: Clique Aqui Download: Windows: http://www.mediafire...cap2yi5jee5e7an (Tam: 16MB) Linux (Debian): http://www.mediafire...5lu3476fd8jcnc8 (Tam: 7MB) Link Protegido Windows: http://lix.in/-d3c97c Link Protegido Linux (Debian): http://lix.in/-d5501d Scan Virus Total: https://www.virustot...sis/1363492837/ IP Changer: http://www.mediafire...6stsdskhljaa0c1 -Atenção- - Acc do God: admin/admin - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - Offline Train Level configurado no config.lua em levelToOfflineInBed - As estatuas de offline que ficam no templo não funcionam por serem enfeites - Para tirar o , previewer do nome, no config.lua em serverPreview mude para false - Todos os addons são vendidos menos o demon que o comedinha acabou esquecendo de coloca - Comandos personalizados: /ta - itens pro sv inteiro, /tp - locais do mapa, /p - tem na assinatura do comedinha ensinando, /e - abrir e fechar portal(open, close). - Para usar os portais você primeiro deve explorar a área indo até ela - Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem - Favor, não usar o nosso distro sem o nosso consenso, obrigado. - Se você gostou, clique no ali embaixo ó
    3 pontos
  2. PsyMcKenzie

    Tutorial Completo - Mapping

    Mapping Vamos aprender sobre á Arte! Contéudo do Tutorial : • Ferramentas De Uso! ( Ferramentas, Atalhos, Perguntas e Palhetas ) • Mappeando ( Aprendendo a mappear ) ( Usando Remere's Map Editor) 1. - Floresta ( natureza ) 2. - Deserto 3. - Ice - Snow ( gelo ) 4. - Detalhes ( importante ) Tá, mas Psy, já tem um monte de tutoriais aqui igual a esse. Mas nenhum completo como tal. Então, vamos lá! Para quem não sabe nada sobre Mapping : Oque é Mapping? Mapping é umas das principais áreas de desenvolvimento, basicamente, é o ato de criar mapas (mappear) para um OTserv. Oque é um Mapa? Ao pé da letra, o Mapa é o espaço geografico do jogo, aonde o player vive. Que ferramenta devo usar? Bem, para criar os seus mapas você terá de utilizar a ferramenta chamada MapEditor. Os editores de mapa popularmente conhecidos e usados são SimOne e Remere's Map Editor (RME). Saiba que não existe um MapEditor melhor ou pior, quem faz os mapas é você, não a ferramenta. Um Mapa/MapEditor é de uma versão fixa? Não, existem várias versões de MapEditors, cada um para um protocolo do Tibia. Que extenção possuí o arquivo do meu mapa? OTBM ou OTX. » Ferramentas De Uso « Bom, como alguns sabem, o Remere's Map Editor, mais conhecido como RME foi liberado já tem algum tempo e com várias correções, um editor muito mais complexo que os já liberados até hoje, apesar de todas essas facilidades que ele possui algumas pessoas tem dificuldade de usa-lo. Vamos começar pelas Palhetas. Let's Go! Terrain Pallet Nature Nesta aba/paleta temos tudo relacionado a natureza (somente pisos), como água, grama, terra, areia, gelo entre outros que vocês podem ver utilizando o editor. Cave Nesta temos o básico utilizado em cavernas, os pisos normalmente usados, lava, água, entre outros. Snow Nesta se encontram tudo relacionado a gelo, montanhas gélidas, escadas e outros pisos utilizados. Town Aqui encontramos tudo que pode se formar uma construção/cidade/vila e etc, pisos, paredes e etc. Dooadad Pallet Corpes Nesta aba lógicamente se localiza os corpos de monstros/humanos e etc. Exterior Literalmente tudo que existe no exterior (não, não me refiro a outros países), alguns exemplos de items que há nesta: Portal, alavancas, cabanas, carroças entre outros. Hangables Nesta aba encontramos tudo que pode ser usado como decorações em paredes, como blackboards, placas e outros utensilhos. Interior Literalmente tudo que existe no interior, exemplos de items que são encontrados nesta aba são: caixas, estantes, mesas, cadeias, tapetes e alguns tipos de plantas usadas em casas. Magic Fields O nome mesmo já diz, campo mágico melhor dizendo, os conhecidos fire, energy e poison field entre outros. Nature Literalmente tudo que existe na natureza, árvores, arbustos, tufos, pedras, plantas e mais. Snow Nesta aba encontramos tudo que tenha haver com o tema gelo, items como, relógios, cadeiras, alguns tipos de piso, arvores e pedras. Splash Água, sangue e outros fragmentos liquidos. Trash Literalmente, lixo. Statues Estatuas. Underwater Nesta aba só existem items áquaticos, pedras, barcos em ruínas, items áquaticos mesmo como: estrela do mar e outros. Item Pallet Containers Os compartimentos do jogo. Equipament Equipamentos, armaduras, etc... Food Comida, de todos os tipos... Ornaments Amuletos, anéis.... Runes TODAS as runas do jogo que já foram implantadas e as que não foram também. Shields Escudos. Tools Ferramentas, pá, picareta, serrote, etc... Trinkets Bom, não sei explicar direito, mas são relógios, dados, enfim, alguns objetos de "enfeite". Weapons As armas do jogo, espadas, clavas, machados... Writables Items em que você pode escrever, pergaminhos, livros etc... RAW Pallet Raw Pallete são os items, como no simone map editor, items soltos, os ids mesmo... No doodad pallete, por exemplo, você bota a "cabeça" da cama e a cama inteira aparece, aí é tudo separado, as categorias são: Boats Cave Containers Exterior Grounds Interior Nature Others Sea Splash Stairs/Ramps/Ladders... É basicamente a mesma coisa que trabalhar no SimOne's Map Editor, porém tendo as paletas mais atualizadas e organizadas. -- Ferramentas Opitional Auto Border: Aí você vai usando isso para por a "borda" nas montanhas, ele também pode ser usado para por bordas nos items como wooden floor, para pontes.... e ele é um "auto border manual". Eraser: Usado para apagar. Normal Door, Locked Door, Quest Door e Magic Door: São as portas, OBS: só voce usar numa parede que o MAP EDITOR automaticamente seleciona o tipo de porta. Hatch Window: Janelas do Update 7.92, aquelas que da para fechar. Window: Janelas normais, que não é possível fechar. PZ TOOL: Área de protection Zone. NON PVP TOOL: Igual a pz tool, só que sua mana sobe e tal... NO LOGOUT TOOL: Uma área em que você fica com battle. PVP ZONE TOOL: Área em que os players podem se atacar. -- Perguntas & Respostas Como rodar os items? Simples, com alguns items do DOODAD palette é possível rodar, apertando a tecla X Como Randomizar mapa inteiro: O Remere's Map Editor conta com uma função muito útil para os otservers em que você fez com o SimOne Map Editor, "Randomize Map" Nessa função ele randomiza quase todos os tiles, as gramas, o gelo, a terra das caves e etc... Para fazer isso vá em Edit > Border Options > e clique em Randomize Map. Como Fazer todas as bordas: Essa função permite por bordas no seu mapa inteiro de uma vez, vá nas opçoedo auto border e clique em Borderize Map, o seu mapa ficará com as bordas. Como aumentar o zoom? Simples, use a "roleta" que tem no mouse. Como mudar a versão do meu mapa? No mapa em que deseja modificar a versão, você clica em Map > Properties, ou aperta Ctrl + P. Então, no quadrado Client Version, escolha a versão necessária e aperte OK. Salve. Tenha em mente que pode não ser possível transformar mapas em versões antigas (e.g.: 8.1 para 7.8), pois alguns IDs não existirão. Como adicionar cidades? Map > Edit Towns > Add Selecione o jeito que você quer e clique em OK. Como faço para alterar andar? Use o "+" e "-". Citação: Como faço para apagar tiles de casas / PZ? Você pode apagar com qualquer "pincel", mantenha pressionada a tecla CTRL e desenhe. (Shift ainda funciona como normal) Como eu utilizo a ferramenta apagar? Selecione a ferramenta de apagar (Eraser ). Se você só clicar com o botão esquerdo do mouse, você só removerá itens na posição atual. Se você manter pressionada Ctrl ao clicar com o botão esquerdo do mouse, você apagará telhas e chão. Se você manter pressionado Shift ao clicar com o botão esquerdo do mouse você pode selecionar um espaço de onde você deseja excluir todos os itens. Se você mantenha pressionada Ctrl, Shift e o botão esquerdo do mouse você pode selecionar um espaço de onde você deseja excluir todos os itens e todo terreno. A não ser que você desmarque a opção "Eraser don't delete unique itens" no Menu preferências a borracha não exclui itens em containers ou itens com unique e / ou action ID. Como eu faço casas? Bom, para fazer casas no Remere's Map Editor você deve criar uma cidade primeiro.... Para criar uma cidade vá até MAP > EDIT TOWNS Ali você faz a cidade... Agora faça uma casa, vá no pallete de casas, selecione a cidade e clique em ADD. Selecione os Tiles da casa e depois a saída dela. Pronto, aí está sua casa. Eu não encontrar um certo item, onde está ela? Você pode encontrar todos os itens utilizando o "Raw Palette" ou procure - o pressionando "J" no teclado. Você pode procurar por ambos os nomes e IDs. A lista com todos os itens encontrados de pesquisa serão exibidos em uma lista abaixo. Como importar mapas? Abra seu mapa e vá na aba File, depois clique em Import e Import Map Vai aparecer uma imagem similar a essa: Então, você configura as coordenadas de onde vai começar a colar o mapa importado. Cuidado: ele irá importar o mapa do X=0, Y=0, Z=0. Se o seu mapa começa na coordenada X=20, Y=20, Z=7, e você importa para X=400, Y=400, o mapa começará no X=420, Y=420, Z=7. Se estiver alguma parte de mapa no local onde você vai colar, você pode escoher se remove ou não os tiles. Citação: Como ir para uma certa coordenada? Aperte Ctrl + G e escreva a posição desejada (Ex.: X=1000, Y=1000, Z=7). Então, confirme. Como faço para copiar / colar / mover uma parte do mapa? Se você tem um item ou "pincel" selecionado de um espaço para selecionar o "ponteiro" (ou o que ele é chamado). Agora mantenha pressionado shift e arraste o mouse, mantendo baixo botão esquerdo do mouse para selecionar uma área. Agora, você pode simplesmente mover a área selecionada ou pressione Ctrl + c, Ctrl + v para, em seguida, colá - lo no Editor. Você precisará clicar com o botão esquerdo do mouse antes de botar o conteúdo colado ao próprio mapa. Eu não posso colocar staglamites sobre a água! Você pode colocar doodads sobre blocking tiles, mantenha pressionada ALT. Eu quero outra árvore! Posso ver os tipos de variações? Mantenha pressionada CTRL e clique em espaço, enquanto o doodad estiver selecionado a variação mudará. As paredes têm a orientação errada! Como faço para rodar elas? Mantenha pressionado ALT com o wallbrush selecionado e clique no tile para girar a parede. -- Atalhos T - Terrain Pallete. H - House Pallete. I - Items Pallete. D - Doodad Pallete. C - Creature Pallete. R - RAW Pallete. X - Girar items. Floresta ( Natureza ) A questão da nature em si, é muito mais estética do que realismo. Ao meu ver, para um simples bosque tibiano, o correto seria como está acima, não diria correto, porém coerente. Você nunca deve se dominar pelo "realismo" quando se mappeia, você deve levar em conta sim, mas não sempre, até porque, se fosse o realismo, não existiria magia no Tibia, né galerinha. Começe sempre pelos arbustos, eles tem que estar bem randomizados (iDs: 2767, 2768) Agora sim vamos colocar algumas árvores, coloque entre os arbustos, trace um caminho imaginário, aonde o player possa andar e/ou caçar com tranquilidade, lembra da geografia? (iDs: 2700, 2701, 2702, 2703...) Agora vamos entrar no detalhes, coloque algumas pedras, deixe elas espalhadas, porém concentradas em um único ponto. (iDs: 3648, 3649, 3650, 3651...) Ainda não acabou, vamos colocar os sagrados túfos de grama, como os arbustos deixe eles randomizados mas concentrados em uma linha, um ponto. (iDs: 6216, 6217, 6218, 6219) Deserto Agora vamos falar sobre Desert, é a mais simples e curta de todas, o motivo é que a nature se consiste basicamente em cactos, pedras, e alguns coqueiros entre outros detalhes. Vamos lá? Como eu disse é bem simples, seguiremos 4 passos: Coloque o ground. (iDs: 231) Coloque um Cacto (iDs: 2727, 2733, 2734, 2735.) Em volta, coloque tufos de grama, bem randomizado. (iDs: 6216, 6217, 6218, 6219) Enfeite com Dunas, algumas Pedras, um Esqueleto, oque você achar melhor. Podemos também fazer uma área mais "morta", com esqueletos e lagos de piche. se quiser aprender fazer o lago de pixe que é bem facil, você poderá baixar o mapa. Lago de Piche (ID: 708) Tufos de Grama Seca Sagrado *___* (IDs: 10736. 10737, 10738, 10739) Snow - Ice Vamos para Snow, a vegetação de consiste em árvores e pedras, as árvores em si é facil de pegar, mas o resto dos detalhes ja é meio complicado, mas no geral é muito simples. Vamos lá? Coloque o Ground (iDs: 670) Coloque umas 2 (duas) árvores separadas. (iDs: 2697, 2698, 7020, 7021, 7022, 7023, 7024.) Agora as pedras, neste tipo de vegetação teremos várias pedras grandes, então para começar coloque uma grande, e coloque algumas bem randomizadas em volta. Coloque alguns flocos de neve em volta, randomizados, e alguns discretos nas árvores.(iDs: 6715, 6716, 6717, 6718) Agora vamos detalhar, coloque a randomização dos grounds, flocos de gelo, etc... Exemplos file:///C:/Users/Victor/AppData/Local/Temp/moz-screenshot-11.png: Detalhes Os detalhes são muito importantes em seu Mapa, porém nem todos usam os detalhes, usando eles seu mapa pode ficar muito mais "lindo e sagrado" rsrsrs.. Vamos Láh Exemplo Com 'Ice-Snow, Floresta(natureza),Deserto' Então gente esse é um exemplo, com esses exemplos faça um Mapa otimo, e bonito! Obrigado Pela Atenção! Créditos: Victor Morin
    3 pontos
  3. Informações: Bug da vip removido; 150+ Quests; Novas áreas, algumas importadas de outros mapas; Todos os items 9.81 funcionando; Erro dos NPC's corrigidos; Respawn do mapa 100% Novas áreas de Carlin, Kazz, Port Hope, que possuem Coryms, Dragons e Lost Dwarves; 33 montarias agregadas + 70 novas obtidas com mountdoll; Respawns melhorados; Diversos bugs removidos entre outras coisas melhoradas; Servidor 100% estável livre de lag e erros; Imagens: Download Server: https://mega.co.nz/#...9XlGgGeXW0oza54 http://www.mediafire.com/?828xjbusvaplaem Scan Server: Não realizei porque o tamanho ultrapassa o limite do virustotal; Importante: Servidor compilado para rodar em Windows 64Bit; Créditos: tfs Team kalyst001 NvSo BT Outros.. SmoOkeR
    2 pontos
  4. Obrigatoriamente leia tudo! Opa galera mais uma vez eu trazendo o melhor para todos. Hoje vou postar o sistema de Guild de Points que eu utilizo em meu OTserver, acredito que dificilmente será encontrado por ae um tão completo e sem bugs igual o que será postado logo abaixo, é um sistema completo que é utilizado pelo líder da guild executando um comando que, se tiver de acordo com as regras que seram feitas por você, todos os membros da guild iram receber os pontos uma unica vez, lembrando que quando os pontos são adicionados a um player ele não receberá entrando em outra guild e não receberá criando outro personagem na conta, resumindo ele só receberá uma unica vez na conta e com um player só. E um dos detalhes que me causava dor de cabeça era que quando um líder executava o comando, quem estava online recebia os pontos, mais quem estava offline não recebia, isso acontecia normalmente porque tem guilds que contém 50, 70, 100 players, portanto nem sempre todos estavam online. O comando só pode ser executado uma vez por dia cada guild, para não gerar processamentos desnecessários e assim um mal funcionamento do servidor. Cada administrador pode configurar seu sistema da forma que quiser, por ser um sistema muito simples, você pode bota que todos os players estejam no minimo level x, que a guild só possa executar o comando quando estiver quantidade x de players online, isso é bom porque traz um certa dificuldade para fraudes de pontos, e o sistema só vira bagunça dependendo do que você vai oferecer no seu shop guild, eu particularmente só utilizei esse comando porque muitas guilds grandes pediam pontos, eles me cobravam uma quantidade x de pontos e eu cobrava uma quantidade x de player então pra automatizar o processo e não ter dor de cabeça foi feito todo esse sistema. Se você analisar bem vai ver que tudo isso só gera mais crescimento ao seu servidor. Bom, vamos ao sistema: Em talkactions.xml, adicione a tag abaixo: <talkaction words="!guildpoints" event="script" value="guildpoints.lua"/> Na pasta talkactions/scripts faça um .lua com o nome guildpoints e dentro dele adicione os coder abaixo: GuildPointsConfigs = { ExecuteIntervalHours = 24, NeedPlayersOnline = 10, NeedDiferentIps = 6, MinLevel = 80, AddPointsForAcc = 9 } function getGuildPlayersValidAccIDS(GuildID, MinLevel) local RanksIDS = {} local AccsID = {} local ValidAccsID = {} Query1 = db.getResult("SELECT `id` FROM `guild_ranks` WHERE guild_id = '".. GuildID .."'") if(Query1:getID() == -1) then return ValidAccsID end for i = 1, Query1:getRows() do table.insert(RanksIDS, Query1:getDataInt("id")) Query1:next() end Query2 = db.getResult("SELECT `account_id` FROM `players` WHERE `rank_id` IN (".. table.concat(RanksIDS, ', ') ..") AND `level` >= ".. MinLevel .."") if(Query2:getID() == -1) then return ValidAccsID end for i = 1, Query2:getRows() do local AccID = Query2:getDataInt("account_id") if #AccsID > 0 then for k = 1, #AccsID do if AccID == AccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(AccsID, AccID) end else table.insert(AccsID, AccID) end Query2:next() end Query3 = db.getResult("SELECT `id` FROM `accounts` WHERE `guild_points_stats` = 0 AND `id` IN (".. table.concat(AccsID, ', ') ..")") if(Query3:getID() == -1) then return ValidAccsID end for i = 1, Query3:getRows() do local AccID = Query3:getDataInt("id") if #ValidAccsID > 0 then for k = 1, #ValidAccsID do if AccID == ValidAccsID[k] then AddAccList = false break end AddAccList = true end if AddAccList then table.insert(ValidAccsID, AccID) end else table.insert(ValidAccsID, AccID) end Query3:next() end return ValidAccsID end function onSay(cid, words, param, channel) if(getPlayerGuildLevel(cid) == 3) then local GuildID = getPlayerGuildId(cid) Query = db.getResult("SELECT `last_execute_points` FROM `guilds` WHERE id = '".. GuildID .."'") if(Query:getID() == -1) then return true end if Query:getDataInt("last_execute_points") < os.time() then local GuildMembers = {} local GuildMembersOnline = {} local PlayersOnline = getPlayersOnline() for i, pid in ipairs(PlayersOnline) do if getPlayerGuildId(pid) == GuildID then if getPlayerLevel(pid) >= GuildPointsConfigs.MinLevel then table.insert(GuildMembersOnline, pid) end end end if #GuildMembersOnline >= GuildPointsConfigs.NeedPlayersOnline then local IPS = {} for i, pid in ipairs(GuildMembersOnline) do local PlayerIP = getPlayerIp(pid) if #IPS > 0 then for k = 1, #IPS do if PlayerIP == IPS[k] then AddIPList = false break end AddIPList = true end if AddIPList then table.insert(IPS, PlayerIP) end else table.insert(IPS, PlayerIP) end end if #IPS >= GuildPointsConfigs.NeedDiferentIps then local ValidAccounts = getGuildPlayersValidAccIDS(GuildID, GuildPointsConfigs.MinLevel) db.executeQuery("UPDATE `guilds` SET `last_execute_points` = ".. os.time() +(GuildPointsConfigs.ExecuteIntervalHours * 3600) .." WHERE `guilds`.`id` = ".. GuildID ..";") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "".. #ValidAccounts .." Players received points") if #ValidAccounts > 0 then db.executeQuery("UPDATE `accounts` SET `guild_points` = `guild_points` + " ..GuildPointsConfigs.AddPointsForAcc .. ", `guild_points_stats` = ".. os.time() .." WHERE `id` IN (" .. table.concat(ValidAccounts, ',') ..");") for i, pid in ipairs(GuildMembersOnline) do local PlayerMSGAccID = getPlayerAccountId(pid) for k = 1, #ValidAccounts do if PlayerMSGAccID == ValidAccounts[k] then doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "You received "..GuildPointsConfigs.AddPointsForAcc .." guild points.") break end end end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only ".. #IPS .." players are valid, you need ".. GuildPointsConfigs.NeedDiferentIps .." players with different ips.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Has only ".. #GuildMembersOnline .." players online you need ".. GuildPointsConfigs.NeedPlayersOnline .." players online at least from level ".. GuildPointsConfigs.MinLevel ..".") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The command can only be run once every "..GuildPointsConfigs.ExecuteIntervalHours .." hours.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Only guild leader can request points.") end return true end No coder acima bem no inicio tem as linhas seguintes para configurar: ExecuteIntervalHours = 24, ( Intervalo para execução do comando, ae está de 24 em 24hrs) NeedPlayersOnline = 10, (Quantos players é preciso está online para poder executar o comando.) NeedDiferentIps = 6, (Quantos IPS diferentes são necessários para executar o comando no exemplo ae tem 6.) MinLevel = 80, (Aqui adicione o level minimo, é necessário que todos os player da guild tenha o level pedido para o lider executar o comando.) AddPointsForAcc = 9, (Aqui é a quantidade de pontos para adicionar em cada player da guild.) Certo, a parte do servidor é esta, ta feita, vamos adicionar a database o coder a seguir: ALTER TABLE `accounts` ADD `guild_points` INTEGER(11) NOT NULL DEFAULT 0; ALTER TABLE `accounts` ADD `guild_points_stats` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `last_execute_points` INT NOT NULL DEFAULT '0'; CREATE TABLE `z_shopguild_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, `pid` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) CREATE TABLE `z_shopguild_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) Olha estamos quase finalizando tudo, só precisamos terminar a parte de web. O meu GuildShop eu copiei meu shopsystem.php e fiz umas modificações, simples você pode fazer o mesmo é menos trabalhoso. Copie o shopsystem.php renomeie para shopguild.php, após abra-o e modifique como manda a seguir: shop_system para shopguild_system premium_points para guild_points premium points para guild points z_shop_offer para z_shopguild_offer shopsystem para shopguild z_shop_history_pacc para z_shopguild_history_pacc z_shop_history_item para z_shopguild_history_item Ou utilize este já pronto: shopguild.php O shopguildadmin.php esté no link abaixo, basta fazer o mesmo procedimento: shopguildadmin.php Em index.php add: case "shopguild"; $topic = "Shop Guild"; $subtopic = "shopguild"; include("shopguild.php"); break; case "shopguildadmin"; $topic = "ShopGuild Admin"; $subtopic = "shopguildadmin"; include("shopguildadmin.php"); break; Vá em config.php adicione: $config['site']['shopguild_system'] = 1; $config['site']['access_adminguild_panel'] = 9; Vá em layouts.php adicione abaixo de buypoints: <a href='?subtopic=shopguild'> <div id='submenu_shopguild' 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_shopguild' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Shop Guild</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Em layouts.php add depois do shopadmin: if($group_id_of_acc_logged >= $config['site']['access_adminguild_panel']) echo "<a href='?subtopic=shopadmin'> <div id='submenu_shopguildadmin' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)'onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_shopguildadmin' class='ActiveSubmenuItemIcon'style='background-image:url(".$layout_name."/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>! ShopGuild Admin !</font></div> <div class='RightChain' style='background-image:url(".$layout_name."/images/general/chain.gif);'></div> </div> </a>"; Finalmente terminamos! Bom todo esse processo é feito só para facilitar tudo pra você e o player e pra diferenciar o Shop System do Shop Guild, porque um sustenta as despesas do server e o outro atrai player, porque pra ter player é preciso ter player. Galera acredito que não esteja faltando nada, espero que gostem e tudo que eu poder fazer para nossas melhoras estarei postando, me desculpem meu erros de português mais o que importa aqui é o script está correto, abraços! Créditos: Natanael Beckman LukeSkywalker (Raphael Luiz) .lua 100% Não proíbo ninguém de copia o tópico só peço que onde você adicione inclua os créditos mencionados.
    2 pontos
  5. Fausto32

    PERFECT ZOMBIE SYSTEM EVENT!

    Script/Tutorial+ Php +Map +Talkaction +Portal. Ps: Antes de falar q o topico já existe no forum teste os outros scripts Então começando por informações basícas : Para abrir o evento : /zombiestart numero de players . exemplo : /zombiestart 2 Para Iniciar o evento sem o numero maximo de players: /zombiestart force. Apos aberto sempre q um player ente no portal do evento e avisado por broadcast quem entrou na arena e o numero de players restantes para o evento ser iniciado. Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena. Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo q durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel. Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros. Creditos: Me .. não criei totalmente, mais montei peguei de varios servers/topicos e corrigi os varios bugs de distro colocaria os créditos de onde peguei a maioria do script mais foi de um server sem creditos q nem era pra ter sido postado. Enfim Vamos ao Evento ! Primeiro vou estar postando a pagina classica do Zombie event no Gesior que seria a parte PHP para informar os players sobre o evento. Pagina PHP + Tutorial de como implementar ela no seu site. Agora alguns mapas para o zombie event: Então Agora vamos ao script ! data\creaturescripts\scripts\zombie – A pasta ‘zombie’ deve ser criada no diretorio citado. \data\creaturescripts\scripts\Zombie\onattack.lua function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end \data\creaturescripts\scripts\Zombie\ondeath.lua function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end \data\creaturescripts\scripts\Zombie\onthink.lua function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end \data\globalevents\scripts\zombie\ onstartup.lua function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end \data\globalevents\scripts\zombie\onthink.lua function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end \data\lib\zombie_event.lua -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end ]]-- end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" end \data\movements\scripts\zombie\ onenter.lua function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end \data\talkactions\scripts\zombie\ onsay.lua function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end data\monster\zombie_event.xml <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> Agora as Tags nos xml’s . /data/creaturescripts/creaturescripts.xml <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/monsters.xml <monster name="Zombie Event" file="zombie_event.xml"/> Script Terminado ! Next: Tutorial de como configurar o zombie event ! Estarei postando apenas as partes q podem ou devem ser editadas em cada script. data\creaturescripts\scripts\zombiez\onattack.lua Next: \data\lib\zombie_event.lua Então galera eh isso ai .-. meu primeiro post não mim crucifiquem k Duvidas, reclamações elogios chingamentos, só comentar.
    1 ponto
  6. Olá galerinha do xtibia venho aqui hoje para postar o novo modern acc editado por min eu traduzi ele todo e fiz um template massa para voçês depois falarei mais oque ele tem sem mais delongas o download está ae. Print: Download: http://www.mediafire...7zh3dtg5pznl42e Download Sql: http://www.mediafire.com/?a9549gzo7w6tmgl Scan: pesso que alguem faça para min não sou bom com isso :X PS:COMENTEM OQUE VOÇÊS QUEREM NA V2 CREDITOS: Junior001 Gabrieltxu
    1 ponto
  7. gabriloko123456

    [Encerrado] como adicionar madara

    ola queria saber como adiciono o madara de perso para escolher igual no nto shinobi pq o meu narutibia ao tem ele
    1 ponto
  8. Mayronfla

    Baiak Infinity By Mayron

    Baiak Infinity By Mayron Lembrando q esse era baiak ice by bryan Bem vamos começar, vamos ao mapa! Modifiquei o templo principal e tbm a city n é mais ice. Modifiquei tbm as area vips. Removi 100% dos bugs. Coloquei aqueles tps falantes mais com efeitos bem melhores. Adicionado Car System. Adicionado /additem. Adicionei loteria systema dando 3kk a cada 20 minutos. Criei novos treiners, eles estão aquentando bem mais pois tem muito mais vida. Criei novo Set Infinity. Criei uma area de evento para evento de bp ou de dados. Staff of baiak, vip wand e rod, infinity wand e infinity rod (Com novos efeitos muito melhores). Novo Npc Infinity Seller. Novo comando: !dance on. Novo evento em uma arena(vou explicar), o god fala, /arena x (x: é o numero de players q poderão ir para a quest) intão fika assim: por exemplo 5 players, /arena 5. Nova quest para os itens infinity. Players começando lvl 50, coloquei fast attack, mais n está tão exagerado, vocações balanceadas. Adicionei 2 novas Outfits para cada sexo, male: Rei e Montaria! Female: Borboleta e Rainha. Criei uma runa de trapar. Infinity prison rune. Todos os itens infinity no npc infinity seller. Acc do god: god/god Então vamos as Fotos do Ot! Novo templo Baiak City Tps Treiners Wands e Rods Novo Set Novo Npc Arena Nova Para Evento Loteria Novo Comando !dance on Car System Novo Comando /additem Bow e Arrow Nova Quest Account do {ADM} Mayron Colokei essas fotos para vcs baixarem para ver melhor: http://www.4shared.c...ens_baiak.html? Novo Download do Server Sem Bugs: http://www.4shared.com/rar/ZKbUat5u/Baiak_Infinity_By_Mayron.html? Vamos aos Créditos: 10% Bryaan pelo Mapa! 10% Xtibia por Algumas Scripts! 80% Pra Mim, Pelo Novo Server! Só não sei fazer scan mais n tem virus n confia ae. Se gostaram da um REP+ ae, pois sou novo e quero melhorar! Galera com certeza quero suas Opiniões! Aceito seus Elogios e suas Criticas. Obrigado a Todos.
    1 ponto
  9. vital900

    [Arquivado][Livro] Cap. 1: As Armas

    Cap. 1: As Armas Nascido em Refor, Niklaus, filho de humanos, fora criado com espada e escudo. Aos 7 anos o levaram a um centro de treinamento de cavaleiros, futuro planejado por seus pais. Nesse centro Niklaus desenvolveu seu físico, estimulado a roubar alimentos e a sobreviver em condições horríveis. Carregando pedras grandes de um lado para o outro como seu principal trabalho, o menino permaneceu em arduo treinamento até os 13 anos de idade, até ser nomeado fiel escudeiro de Amaric. Amaric era um cavaleiro que passara a vida em batalhas e arenas. Inicialmente carregava os equipamentos e as mochilas das viagens. Como escudeiro de um cavaleiro, aprendeu a consertar amassados nas armaduras, afiar as espadas, negociar produtos nos bazares e estada nos hotéis de cidades desconhecidas. Durante 4 anos, Niklaus acompanhara o cavaleiro assistindo a inúmeros combates e treinando técnicas de combate, aprendidas quando Amaric e o escudeiro descansavam das longas viagens sob as sombra das árvores. Por muito tempo o cavaleiro se matenve invicto em suas batalhas, mas não eternamente. Certa vez, quando lutava em uma arena por 100 peças de ouro, fora atingido em seu ombro esquerdo com a espada de seu adversário, passando pela armadura leve que utilizava em combate. A dor impossibilitou o manejo de seu escudo, tornando-o vulnerável a maioria dos golpes. A luta acabou com a morte de Amaric. Quando o nobre cavaleiro morreu, Niklaus assumiu o seu lugar, sendo nomeado cavaleiro por Galahad, um dos amigos de Amaric. Galahad era muito rico e organizou a cerimônia da passagem da espada para nomear Niklaus. A cerimônia representou o início de aventuras do novo cavaleiro. Em certo momento, Galahad se colocou a frente dos convidados, e com sua espada tocou os ombros do escudeiro, que se encontrava ajoelhado ao pés de Amaric. Depois de muita festa e fartura, o jovem cavaleiro saiu à estrada atrás das próprias conquistas. Niklaus manejava suas armas muito bem. Estava bem treinado e preparado para participar de seu primeiro torneio. Inscreveu-se na primeira grande cidade que ficara, conhecendo assim muitas pessoas, principalmente as mulheres que enchiam os olhos de brilho ao verem as habilidades do cavaleiro. Feria-se muito pouco em batalhas, era focado na defesa. Obviamente que as cicatrizes não escaparam, mas isso eram apenas histórias para serem contadas. Com o tempo acabou decidindo se estabalecer em uma cidade chamada Welarian, do mesmo tamanho de Refor, sua cidade natal. Foi nesse local que encontrara o amor de sua vida, Selena. Selena, tecelã contratada para costurar as roupas que ficavam por baixo das armaduras de Niklaus (e frequentemente rasgadas pelas lâminas dos oponentes), apaixonou-se pelo cavaleiro. Um dia que voltara de uma batalha difícil, a tecelã ofereceu moradia, alimento e seu amor. Tempo depois se casaram e viveram com grande aconchego por três anos. Após esse tempo as riquezas do cavaleiro começaram a ficar inviáveis de serem gastas como antes. Niklaus decide voltar a viajar, mas era um mal momento, pois Selena estava grávida e exigia a presença do marido. O amor do cavaleiro o prende a Welarian, decidindo abandonar a espada e assumindo um emprego qualquer na cidade. Começou servindo mesas em uma taverna, mas acaba sendo localizado por um halfling, que desejava realizar uma encomenda. - Que tipo de encomenda? - Pergunta Niklaus ao pequenino. - A cabeça de um elfo. - A resposta espanta o humano. - Desejo vingança. - O halfling conta a história de sua vida, endividara-se e acabou virando um escravo por dívidas. As dívidas aumentaram e sem conseguir pagar, o elfo exilou o halfling em Welarian longe de sua família. Niklaus compreendeu os males feitos pelo elfo ao pequenino e aceitou realizar o trabalho por moedas de ouro, o que possibilitava ficar um bom tempo sem trabalhar com algo extremamente vergonhoso para um cavaleiro. O humano caça o elfo e o encontra numa cidade vizinha, escondido em um porão de uma casa, como o halfling indicara. Após o executar, entrega a cabeça para o halfling, que o paga como previsto. Alguns dias depois recebera outra oferta semelhante e o cavaleiro começa a participar de frequentes assassinatos, tomando gosto pelo seu novo título de justiceiro. O próximo movimento de Niklaus foi juntar-se a uma ordem de vingadores, trabalhando incansavelmente para diferentes raças, pelo mais alto valor. Mas os trabalhos começaram a exigir muita confiabilidade e já não poderiam ser realizados sozinhos. Niklaus começara a agir com um ladino, um arqueiro e um outro cavaleiro. Os quatros ficaram conhecidos como os “capa preta”, pois agiam sempre cobertos e silenciosos. Até que um dia, um mago vestido de um manto vermelho procurou os serviços do grupo. Eles ficaram responsáveis por acharem o sequestrador da filha do mago, que já se encontrava em local seguro, mas havia sido violentada. O grupo encontrou o sequestrador e o matou lentamente. Não sabiam exatamente com quem estavam lidando e o superior do sequestrador foi atrás de cada integrante dos “capa preta”. Na noite seguinte, quando Niklaus voltara de mais um trabalho, sua casa está toda bagunçada e com os móveis quebrados. Seu filho e sua mulher não se encontravam no quarto dormindo como de costume. O cavaleiro os chama e os procura em todos os cômodos, mas não os encontra. tempo verbal Então ele volta para a ordem dos vingadores e reune os mais bravos guerreiros presentes naquele momento. Eles varrem a cidade a procura de Selena e o do filho de Niklaus, mas não o encontram em lugar algum. Ficaram horas revirando a cidade silenciosa, procurando por pistas, mas nada. Quando Niklaus decide voltar para casa, sua porta está aberta e uma caixa de madeira se encontra no meio de sua sala. Quando ele a abre, são partes dos corpos de seu filho e sua mulher. Niklaus se descontrola e chora como uma criança. Reza e implora a Banzer, deus da guerra, oferecendo sua alma. em troca de vingança? O deus o responde, entregando-lhe o poder de encantar armas e um contrato que deveria ser cumprido, caso contrário, a morte o esperava. Encantando sua espada longa, o humano parte em busca de quem matara seu filho e sua mulher. Niklaus segue pela mais longa busca de sua vida, sem saber pelo que o esperava. Quase um ano depois Niklaus encontrara o assassino de seus entes aterrorizando uma cidade. O assassino o reconhece e o desafia. Em um golpe seis homens caem mortos, inclusive aquele que esquartejara os amores do cavaleiro. Em seguida Niklaus cumpre o contrato e seus afazeres. Depois da última missão do contrato, uma transformação ocorre. O humano ganha asas e passe livre ao quinto plano. Chengando a Penten, o novo anjo recebe muitas outras tarefas do deus da guerra. O anjo realiza inúmeras tarefas, até que se depara com o comandante da sociedade oculta de assassinos, a mesma a qual pertencia o esquartejador. O anjo pede permissão a Banzer para executar o comandante, mas lhe é negada. Niklaus acaba se revoltando e cansado de seguir ordens resolve agir. Em uma das vezes que o anjo fora mandado para vigiar um dos reinos medievais, enfeitiçara uma arma que estava sendo forjada por um anão. A arma se tornara um equipamento mágico dotado de um poder angelical e entregue a quem a encomendou - não tendo ideia de suas habilidades. Logo depois, Niklaus pensou em enfeitiçar diferentes armas e assim o fez. Esperarava uma guerra acontecer, provando aos seus superiores que as raças não poderiam ser civilizadas pois eram ambiciosas demais. Queria mostrar que os deuses falharam em suas missões, chegando assim o fim dos tempos. Migrou para os outros 6 reinos e enfeitiçou mais 6 armas. Essas armas eram extraordinárias e escondiam uma habilidade mágica dentro delas. Além de extremamente fortes e efetivas contra qualquer tipo de ser, elas liberavam um dom extremamente perigoso a quem a possuísse, podendo alterar a índole de quem a tocasse. O problema estava cravado: diferentes guerreiros de diferentes raças acabaram por possuir essas armas e uma grande guerra se estabeleceu. Cada um por si: elfos, anões, humanos, halflings, meio-orcs e gnomos. Algumas vezes alianças surgiam, mas nunca duravam mais do que meses. Todos lutaram incansavelmente até Banzer notar o que desencadeara a guerra. As armas enfeitiçadas usadas em combate eram muito poderosas e matavam mais de 10 guerreiros em um só golpe. A guerra assumiu uma proporção mundial e Niklaus, enviado para garantir a ordem dos reinos, não estava interferindo e realizando suas devidas ações. Banzer começara a interrogar o anjo, mas antes que o deus acessasse sua memória, Niklaus se sacrificou de modo a garantir o sigilo dos poderes das armas. A alma do anjo foi excluída de todos os planos. O deus da guerra ficou extremamente encabulado e confuso com o que acontecera e comunicou diretamente Mier. Concluiu-se que o poder fornecido aos anjos era demasiado. Os deuses passaram a desconfiar dos anjos e sentiram medo de outros agirem como Niklaus. Assim findou-se os contratos entre deuses e anjos. Com medo de uma revolução entre os anjos, os deuses não excluiram nenhum deles. Os deuses mais próximos de Mier foram encarregados de localizar as armas, mas os mesmos apenas se progetavam no terceiro plano e não poderiam se infiltrar entres os seres de Ihoê para se apoderarem das armas. Mais uma vez os anjos foram submetidos a uma missão: encontrarem as armas, tirar das posses dos humanos e levá-las para Penten. Os anjos se espalharam pelo terceiro plano e nunca acontecera tamanha concentração de seres angelicais em uma mesma era. Em pouco tempo as armas foram encontradas na posse de dois elfos, um halfling, um anão, um humano, um gnomo e um meio-orc. Estavam bem destribuídas e isso justifica o tempo de duração da guerra. Os anjos foram instruídos a realizarem um procedimento padrão. Todos esperaram aqueles que possuíam as armas ficarem sós para serem tomadas de seus donos. Alguns aguardaram eles adormecerem, mas as armas sempre ficavam de junto ao corpo dos combatentes. No momento em que as asas dos anjos se abriram para os senhores das armas, uma luz radiante ofuscou a visão de cada ser, cegando-os por um momento e as armas foram tomadas de seus donos. O que os deuses e os anjos não imaginavam eram os efeitos das armas sobre as criatruas angelicais: todos foram possuídos por um sentimento de incompatibilidade e sentiram-se pesados. Com pouco tempo de posse das armas encantadas, os anjos foram petrificados e muitos estavam no alto. O impacto espatifou os anjos em pedaços, menos as armas que ficaram espalhadas por todo mundo. Enquanto as armas estavam de posse dos combatentes dos exércitos, fácilmente foram dectadas, mas agora elas estavam espalhadas por uma imensidão sem fim, podendo estar entre pedras, em cima das árvores, no fundo de um lago, no telhado de uma casa ou dentro de um vulcão. A grande guerra terminou depois de 200 longos anos de batalha e esse foi o marco para o início de muitos calendários. As diferentes raças resolveram os assuntos pendentes com diversos tratados e acordos. Algumas rixas ainda não resolvidas criaram desconforto na convivência de certas civilizações, isso justifica a dominação dos elfos, humanos e anões dentre os reinos. Créditos: Vítor Amaral
    1 ponto
  10. Mudando Skills Iniciais Olá Ékzordes, hoje precisei de uma script básica e notei que aqui no xTibia não tem exatamente como eu queria(a um tempo atras, eu até pedi uma dessa, mas me entregaram diferente), então, em vez de eu sugar de algum fórum, decidi eu mesmo criar e compartilhar com vocês, sendo assim meu primeiro tópico tutorial. Ela é bem simples, quando você loga com um personagem, ela identifica a classe, verifica se a skill atual é menor que a configurada por você e se for menor, ele adiciona a quantidade que você configurou menos a quantidade atual, ou seja, vai ficar com a quantidade que você configurou... Não coloquei Storage pra fazer só na primeira vez que logar, porque se você coloca esse número como skill inicial, é porque você não deseja que o player tenha menos skill que isso, então, caso ele morra e perca a skill (fique menor que a inicial) ela vai voltar pro mesmo valor da inicial. Então vamos ao que interessa. 1 - Adicionar a tag em Creaturescripts.xml Abra o creaturescripts.xml em: Pasta do seu OT\data\creaturescripts\creaturescripts.xml 1.1 - Em uma das linhas entre <creaturescripts> e </creaturescripts> adicione a tag: <event type="login" name="Start Skills" event="script" value="startskills.lua"/> 2 - Registre o CreatureEvent (Não sei se é necessário, se não for, me avisem.) Abra o login.lua em: Pasta do seu OT\data\creaturescripts\scripts\login.lua 2.1 - Procure por alguma linha que comece com "registerCreatureEvent" e logo em baixo dela coloque: registerCreatureEvent(cid, "Start Skills") 3 - Abra o bloco de notas, adicione a seguinte script dentro: function onLogin(cid) local Mages = 60 local playerVoc = getPlayerVocation(cid) local reqTries = getPlayerRequiredSkillTries local Mages = { ML = 60, Shield = 20 } local Paladin = { Distance = 80, Shield = 80, ML = 20 } local Kina = { Sword = 80, Axe = 80, Club = 80, Shield = 80, ML = 9 } if playerVoc == 1 then if getPlayerMagLevel(cid) < Mages.ML then doPlayerAddMagLevel(cid, Mages.ML - getPlayerMagLevel(cid)) end if getPlayerSkill(cid, SKILL_SHIELD) < Mages.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Mages.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end elseif playerVoc == 2 then if getPlayerMagLevel(cid) < Mages.ML then doPlayerAddMagLevel(cid, Mages.ML - getPlayerMagLevel(cid)) end if getPlayerSkill(cid, SKILL_SHIELD) < Mages.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Mages.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end elseif playerVoc == 3 then if getPlayerSkill(cid, SKILL_DISTANCE) < Paladin.Distance then doPlayerAddSkill(cid, SKILL_DISTANCE, Paladin.Distance - getPlayerSkill(cid, SKILL_DISTANCE)) end if getPlayerSkill(cid, SKILL_SHIELD) < Paladin.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Paladin.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end if getPlayerMagLevel(cid) < Paladin.ML then doPlayerAddMagLevel(cid, Paladin.ML - getPlayerMagLevel(cid)) end elseif playerVoc == 4 then if getPlayerSkill(cid, SKILL_SWORD) < Kina.Sword then doPlayerAddSkill(cid, SKILL_SWORD, Kina.Sword - getPlayerSkill(cid, SKILL_SWORD)) end if getPlayerSkill(cid, SKILL_CLUB) < Kina.Club then doPlayerAddSkill(cid, SKILL_CLUB, Kina.Club - getPlayerSkill(cid, SKILL_CLUB)) end if getPlayerSkill(cid, SKILL_AXE) < Kina.Axe then doPlayerAddSkill(cid, SKILL_AXE, Kina.Axe - getPlayerSkill(cid, SKILL_AXE)) end if getPlayerSkill(cid, SKILL_SHIELD) < Kina.Shield then doPlayerAddSkill(cid, SKILL_SHIELD, Kina.Shield - getPlayerSkill(cid, SKILL_SHIELD)) end if getPlayerMagLevel(cid) < Kina.ML then doPlayerAddMagLevel(cid, Kina.ML - getPlayerMagLevel(cid)) end end return TRUE end 3.1 - Agora salve com o nome startskills.lua na pasta: Pasta do seu OT\data\creaturescripts\scripts\login.lua 4 - Reinicie ou inicie o seu OT e pronto. Caso utilize Mysql, vá no PhpMyAdmin e tire as skills dos samples. Bem, sei que é possível diminuir essa script mas eu não tenho conhecimento pra isso, caso alguém se interesse por diminui-la fique a vontade, adiciono ela no tópico e coloco os devidos créditos. Primeiro de muitos tutoriais, no nível conforme eu for sabendo. Até logo. Créditos: Spectrus
    1 ponto
  11. Alexclusive

    Assinatura da Semana #79

    Fala ai pessoal..Tudo certinho com com vocês? Aqui estamos com mais uma edição de ADS. Esperamos mais participação dessa vez! Que todos tenham uma semana e mente produtiva. Boa sorte a todos os que vão participar. Assinatura da Semana #79 Vamos continuar com os mesmos procedimentos das edições passadas! Tema da ADS #79: GAMES Para sugerir um tema ( Clique Aqui) Regras : 1. Qualquer pessoa pode participar da ADS. (*) 2. A dimensão máxima para uma assinatura é 500x300 ou 300x500. 3. Não é permitido participar da mesma edição mais de uma vez por pessoa. 4. É proibido reaproveitar trabalhos antigos. 5. Um post sem ser o seu trabalho (Exemplo: Duvida ou comentário de alguma sign) será excluído e se continuar você perdera 1 ponto de reputação. 6. Se o post for editado após 5 minutos depois de ter postado, o membro podera ser desqualificado. 7. Em caso de comprovação de RIP (Cópia total ou parcial de um trabalho) o membro será punido, suspenso e desqualificado. 8. Uma assinatura fora do tema será ignorada e o membro será desqualificado. 9. Pedidos entregues depois da data de término do concurso serão ignorados. 10. Usuários que forem pegos com contas falsas durante a votação, serão banidos sem aviso prévio. *Nota: NENHUM (incluindo o meu) voto vai valer se o mesmo for feito depois da data/hora do Termino da Votação (encontrada mais abaixo), para evitar confusões. Premiação 1° Colocado - 5 Reps 2° Colocado - 2 Reps 3° Colocado - 1 Rep Datas: Concurso: Segunda, Terça, Quarta e Quinta - Feira (23:59) Votação: Sexta, Sábado e Domingo (Meio Dia) Resultado: Domingo (23:59) NÃO postem dúvidas aqui!! Dúvidas: (Clique aqui) As imagens devem ser postadas aqui até Quinta-Feita (23:59) Não deixe de participar!
    1 ponto
  12. Conexão: Site: www.brandegoris.com IP: brandegoris.com PORT: 7171 Versão: 9.80'9.81'9.82'9.83 Cliente Próprio Download: http://www.brandegoris.com/Brandegoris%20Client%20Installer.exe Servidor: 24 Horas Hospedado e Protegido por Limestone Networks / BRLGAMES World: PVP 50+ Sobre: *Mounts e Outfits 9.83 *Arena PVP Com Sistema de Fugir com teleports *Quirefang annd Gray Island *Mounts 100% (Taming System) *Guild Wars (Escudos) *Parcel System 100% *Mounts 100% Global *UH por level *Raids automaticas *Zombie Event *Respawns próprios e personalizado *Mapa Global Full custom *Updates constantes para melhor diversão *Bank System *Quests Global 100% *Site com recursos únicos e inéditos *Market system 100% *Magias 9.8 e custons SEM BUG DE COMBO *Munição de Pally infinita *System Aluguel de Mounts 100% *TASK System 100% *GnomeBase e Warzone 1 2 3 com prêmios *Updates constantes para melhor comodidade e diversão de vocês jogadores Eventos a ser definidos: ● Bloodshed Castle ● Infected Area ● Capture The Flag ● War of Emperium ● Defense of the Ancients ● Lightbearer Raid events: ● April's Fools Day ● Christmas ● Cooking Event ● Flower Month ● Halloween ● Lightbearer ● New Year's Season ● Rise of Devovorga ● Valentine's Day and Masquerade Day Quests: ● Demon Helmet ● Bigfoots Burden's Quest ● Quirefang Quest ● Unnatural Selection ● Crystal Warlord Outfit Quest ● Soil Guardian Outfit Quest ● Demon Outfit Quest ● Wizard Outfit Quest ● ZAO Quest ● Dreamer's Challenge ● Firewalker Boots ● In Service of Yalahar ● Koshei the Deathless ● Pits of Inferno ● Svargrond Arena ● The Ancient Tombs ● The Annihilator ● The Ice Islands ● The Inquisition ● The Demon Oak - Task 6666 Demons ● The Elemental Spheres ● The New Frontier ● The Queen of the Banshees ● The Postman Missions ● The Spirit Will Get You ● Tomes of Knowledge ● Vampire Hunter ● Wrath of the Emperor ● The Pits of Inferno Quest ● The Inquisition Quest ##--Se voce tive uma guild com mais de 10 players e trazelo para o Brandegoris cada player da guild ganhará 10 pontos em nosso shop guild para gastar como quizer. (GUILD POINTS)--## Requerimentos: ●- Todos os membros devem ser lvl 50 ou mais. ●- Poderá ter no maximo 2 mcs na guild. ●- Todos devem esta online na hora da entrega. ●- Deve ter no minimo 10 players. Brandegoris, viemos para não ser apenas mais um.
    1 ponto
  13. data/actions/ Order.lua -------- TRANSFORM ----------
    1 ponto
  14. Fala ai galera mais uma Print sobre os pokes de Sinooh" 50% ja feios e hoem 100% ja configurados mais nao com corpses ainda
    1 ponto
  15. Já viu esse aqui http://www.xtibia.com/forum/topic/198622-naruto-of-war-now-781/
    1 ponto
  16. Não é que eu estava cérto?! Realmente depois de algums minutos entrou um indivíduo "cara de pal" pra postar algo, suashuahusa' (E ainda por cima fingir que notou no tópico) Minha resposta ao seu insignificante comentário: NÃO ESTOU OBRIGANDO NIMGUEM A DEIXAR COMENTÁRIOS, ESTOU FALANDO A PURA VERDADE. VAI CAIR O SEU DEDINHO, DE POSTAR UM SIMPLES COMENTÁRIO? OQUE FALTA NAS PESSOAS É HUMILDADE E COMPANHEIRISMO, E DIVERSAS OUTRAS COISAS, QUE VOCÊS DÉVEM SABER! (EU ESPÉRO) Sem mais delongas.. Ninguém é obrigado a comentar, comenta quem gostou ou quem tem algo a acrescentar. Seus dois comentários foram hostis não havia motivos para posta-los, vou reportar espero que a equipe te de alguma punição! Quanto ao "tutorial" ele não ensina nada só está mostrando algumas partes que você fez, e falando " Não pare, continue detalhando o máximo que pudér!" isso não explica nada como um mapa (no caso um templo) deve ser feito! Sem contar que as paredes não combinam (de baixo com a de cima), tem muitos musgos e plantas nas paredes. E essa medalhinha ae que foi postado no portal do xtibia? Não vejo seu tópico la! (Pode isso equipe do Xtibia?) Sem mais!
    1 ponto
  17. masdead

    Mapping Thread

    arruma o zoom antes de posta vey --'
    1 ponto
  18. murilo103

    Recompensa lv

    Crie em creaturescripts um arquivo chamado reward45.lua E cole isto: Em Login.lua coloque: E por último em creaturescripts.xml: <event type="advance" name="reward45" event="script" value="reward45.lua"/>
    1 ponto
  19. cara se usa gerios so ir no config.php, la tem opção de por quantos dias de premium ao criar conta
    1 ponto
  20. é só você mudar o diretório (Aonde as suas imagens estão) dentro do arquivo .lua do seu mod para elas.
    1 ponto
  21. MasterDino

    Spell area errada

    tente assim: -- By Master Dino local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -100.2, 1, -100.2, 1) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionParam(condition, CONDITION_PARAM_SPEED, -800) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) local arr = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) local pos1 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y, z=getCreaturePosition(cid).z} local pos2 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z} local pos3 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y+2, z=getCreaturePosition(cid).z} local pos4 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y+3, z=getCreaturePosition(cid).z} local pos5 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y+4, z=getCreaturePosition(cid).z} local pos6 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y-1, z=getCreaturePosition(cid).z} local pos7 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y-2, z=getCreaturePosition(cid).z} local pos8 = {x=getCreaturePosition(cid).x+7, y=getCreaturePosition(cid).y-3, z=getCreaturePosition(cid).z} doSendMagicEffect(pos1, 160) doSendMagicEffect(pos2, 160) doSendMagicEffect(pos3, 160) doSendMagicEffect(pos4, 160) doSendMagicEffect(pos5, 160) doSendMagicEffect(pos6, 160) doSendMagicEffect(pos7, 160) doSendMagicEffect(pos8, 160) return doCombat(cid, combat, var) end
    1 ponto
  22. local table = { [1] = 100, [2] = 200, [3] = 300, [4] = 400, [5] = 500, [6] = 600 } function onAdvance(cid, oldLevel, newLevel) elseif getPlayerLevel(cid) == table.1 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 100") end elseif getPlayerLevel(cid) == table.2 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 200") end if getPlayerLevel(cid) == table.3 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 300") end elseif getPlayerLevel(cid) == table.4 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 400") end if getPlayerLevel(cid) == table.5 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 500") end if getPlayerLevel(cid) == table.6 then doBroadcastMessage("O jogador "..getPlayerName.." avançou para o level 600") end return true end
    1 ponto
  23. essi ta massa manu olha o cara do tempo do sqlite uaauiiaiua mto completo xow
    1 ponto
  24. Mais não é pra entrar nesse arquivo . Entre no arquivo potions.lua na pasta onde se acho o do great se procura potions.lua que se vai arrumar ai so procurar pelo nome dentro do bloco de notas .
    1 ponto
  25. Alexclusive

    [Encerrado] Wands não dão +1 de ml

    Vo ti dar um exemplo de um Short que da ml, ae tu faz com a wand e ve se da certo .. Em items.xml : </item> <item id="7464" article="a" name="VIP Shorts"> <attribute key="weight" value="150" /> <attribute key="skillDist" value="4" /> <attribute key="skillAxe" value="4" /> <attribute key="skillsword" value="4" /> <attribute key="skillclub" value="4" /> <attribute key="skillfist" value="4" /> <attribute key="magiclevelpoints" value="4" /> <attribute key="description" value="Esse short FAZ a diferenca (+4 de tds os skills)" /> <attribute key="slotType" value="legs" /> </item> <attribute key="magiclevelpoints" value="4" /> <-- Aqui voce muda quantos ela vai dar de ml. Ae adicione essa tag em movements.xml : <movevent type="Equip" itemid="7464" slot="legs" event="function" value="onEquipItem"/> <movevent type="DeEquip" itemid="7464" slot="legs" event="function" value="onDeEquipItem"/> <!-- VIP SHORTS --> Lembrando que esse foi so um exemplo..Ai voce altera os Id's e Slots!
    1 ponto
  26. AdilsonHacker

    [Encerrado] Ajuda com Tfs

    Amigo Isto Também é outra coisa simples , ta ligado que quando vc baixo o o distro veio as source né? abra a pasta das source vá em Data/npc/ copie o npc handler é substitua o seu por o do tfs é pronto só isso mesmo! TFS é meio complicado rs' Precisar Estamos Aqui!
    1 ponto
  27. WPixelHotel

    Naruto Of War - Now ( 7.81)

    Realmente surpreendente !
    1 ponto
  28. Olá Xtibianos, Estava com o mesmo problema que varios hosters enfrentam com o pedidos dos players... a famosa POT INFINITA no servidor, e resolvi, como consegui corrigir o SCRIPT final para isso sem BUGS. Lembrando que, eu simplesmente apaguei as partes que se refiriam a criação e remoção dos pot's no arquivo, não criei, não fiz nada, apenas modifiquei ao meu gosto! [TUTORIAL] Primeiramente siga este caminho na pasta do seu servidor : Data/Actions/Scripts/Liquids/Potions.lua No meu computador, neste caso o caminho é este O Script que tem que ser inserido nessa parte é local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) return TRUE end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return TRUE end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return TRUE end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end end após a inserção deste comando no servidor, se você não deseja reiniciar o servidor digite: /reload action feito isso, seu servidor estará com pot infinita, como mostro abaixo: está ai, a prova que seu servidor ficou com POT Infinita, lembrando eu não fiz este script editei de uma distro pronta. Tutorial by : LuuhIbanhi' (LuisH) Distro by : RealServer
    1 ponto
  29. Natanael Beckman

    Vip System By Mock 100%

    Executa dentro da tabela accounts.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...