Ir para conteúdo
  • Cadastre-se

Classificação de Membros

Popular Content

Showing content with the highest reputation on 05/06/18 em todas as áreas

  1. Olá meus jovens, eu não gosto de deixar coisas pela metade, quando eu ainda tinha um tempinho pra jogar, comecei a montar um patch meu, terminei agora e quem sabe eu continue atualizando ele. Antes eu só compartilhava com amigos, agora com todos vocês. Nem tudo está listado aqui, mas garanto que 99% está, se faltou algo, foram poucos detalhes. Tudo aqui listado pode ser visto nas imagens abaixo, mas primeiro LEIA, não seja preguiçoso, conheça o patch e tudo que ele tem a oferecer. SKILLS: Angelic Icon com uma Phoenix do lado do personagem enquanto estiver ativo. Celestial shield com o ícone em cima da cabeça do personagem enquanto estiver ativo. Frenzy com o ícone em cima da cabeça do personagem enquanto estiver ativo. Zealot com o ícone em cima da cabeça do personagem enquanto estiver ativo. Ultimate Evasion com efeito nos pés do personagem enquanto estiver ativo. Death Spike igual das versões mais atuais do L2. Flames of Invincibility com efeito mais visível azul. Flames of Invincibility com efeito mais visível vermelho em seus ultimos segundos. Hydro Blast com efeito diferente do comum (um jato d'água parecido com Wind Strike). Hot Spring debuffs com Ícone indicando o level. Major Group Heal com efeito de Body Avatar. Greater Battle Heal com efeito de Body Avatar. The Heart of Pa'agrio sem efeito (Aparece apenas no caster). The Honor of Pa'agrio sem efeito (Aparece apenas no caster). Balance Life sem efeito. Noblesse Blessing com aparência de Debuff. Noblesse Blessing com "toogle" ativo na barra quando buffado. Aura Flash com som igual do Aura Flare. Dominator debuffs mostrando AoE com efeito verde. GAMEPLAY / COMANDOS Click Scroll do mouse ativa Visão através da parede. Alt+Home desativa/ativa neblina. Page Down desativa efeito de todas as Skills. TEMA / LOBBY Tema fiel ao do Classic. Tela de Login do C1, leve, diferente e bonito. Giran Town Customizada. Mapa do jogo em HD. Mostra Cooldown das skills em %. Ícones customizados para as macros. Tamanho dos Buffs editável na nova aba de opções. CRÉDITOS PELO CONTEÚDO GERAL viRUS Elfen L2Patch Hool1gan Neophron PROGRAMMING Qualquer dúvida entrem em contato. IMAGENS (CONTÉM TODA A EVOLUÇÃO DO PATCH ATÉ A VERSÃO 2.0). [Hidden Content] DOWNLOAD 89,650 KB
    1 point
  2. Bom pessoal vim hoje postar aquelas tattoos antigas que usavam muito em servidores de 2 a 5 anos atraz, ajeitei umas coisas aqui, outras ali, e bem ficaram otimas pra server pvp, estao com os devidos creditos que sao da ncsoft pois as imagens sao de dyes, entao ta ai as prints pra conferir! ps: elas vem completas e ainda com multisell Download: [Hidden Content] Novo link: [Hidden Content] Creditos: NcSoft Creditos: Postagem e adaptaçao para L2jFrozen Leandro-Souza Se gostou clicka em curtir
    1 point
  3. Bom, Aqui eu vou explicar para vocês como editar o Splash Screen, aquela imagem que aparece quando você inicia o l2 do zero pelo photoshop, bom sem mais palavras. Você vai precisar baixa esses arquivos e ter o photoshop instalado [Hidden Content],_Decrypt.rar 1. Extraia os arquivos posto para download. 2. Em seguida abra seu photoshop, apos abri use as teclas CTRL + N para cria um novo projeto, ira abri uma tela para inserir a largura e altura do mesmo você poe a largura em 640 e a altura em 480, (selecione o conteudo transparente como mostra na imagem abaixo) [Hidden Content] 2,1. Apos cria, se caso você tiver um logo poupara tempo, mas aqui usarei a logo do l2jbrasil [Hidden Content] 3. abra a imagem no photoshop e copie a mesma para dentro do projeto que criamos, dar para fazer isso com o velho CTRL + A (PARA SELECIONA) CTRL + C (PARA COPIA) , CTRL + V (PARA COLA NO PROJETO QUE CRIAMOS) [Hidden Content] 4. Apos logo já colado no projeto, iremos cria uma nova camada para fazer isso basta clica onde ta em vermelho na imagem ou use o atalho CTRL+Shift+N [Hidden Content] 5. Nova camada criada, iremos leva-la para baixo agora, arraste segurando com o mouse ela para baixo ou use o comando Ctrl+[ (a parte transparente tem que ta embaixo). [Hidden Content] 6. Iremos ter que deixa o fundo dessa nova camada preto, para isso vá até aonde marcado em vermelho e mude as cores conforme esta na imagem. [Hidden Content] 7. Depois de ter mudado a cor do plano de fundo tem que inserir a cor na camada, para isso aperte ALT + DELETE e ficara assim. [Hidden Content] 7.1. Calma já esta chegando ao final rs, agora vamos cria um canal alpha 1 8. Vá até a aba canais, selecione o canal vermelho e clique nele com botão direito e escolha a opção duplicar canal [Hidden Content] 9. ira abri um caixa pedindo o novo nome do canal, no canal você coloca o nome "alpha 1" e da ok , canal alpha criado [Hidden Content] 10. volte para aba camada, clique na camada da logo para seleciona ela, em seguida com o botão direito e selecione a opção "Seleciona pixels como mostra na imagem" [Hidden Content] 11. vai cria uma seleção no logo, volte em canais e na caixinha onde ta o nome alpha 1 para visualiza o canal alpha 1 como mostra na imagem [Hidden Content] 12. apos clica para visualiza o alpha 1 a tela ficara com umas partes vermelhas é normal, para finaliza com o canal alpha 1 com ele selecionado aperte no seu teclado o botão DELETE e pronto! splash screen criada 13. feito tudo isso tem que salva obviamente, vai em salvacomo no photoshop e salve na pasta "Texture Encrypter, Decrypt que você extraiu do download feito aqui" com o nome sp_32b_01 , lembrando que tem que ser no formato BMP como mostra na imagem abaixo [Hidden Content] 14. ira aparecer as opções BMP, Escolha 32 bits e der OK como mostra na imagem: [Hidden Content] 15. agora temos que encryptar o sp_32b_01.bmp, Clique duas vezes no arquivo "Encriptar_UTX -h" para abri-lo, apos abri-lo ele vai cria um arquivo com nome enc-sp_32b_01 que significa que foi encryptado [Hidden Content] 16. pode deleta o sp_32b_01 dentro da pasta Texture Encrypter, Decrypt e renomei o enc-sp_32b_01 para sp_32b_01 removendo o "enc-" do texto 17. copie o sp_32b_01.bmp já renomeado para a systextures do seu cliente e substitua pelo existente [Hidden Content] 18. Abra o Lineage e ta ai a magica '-' : [Hidden Content] Eu pensei em fazer outro topico até porque esse é diferente, porém esse que ta postado ai não funciona por conta do canal alpha, o tutorial ta completo e mastigado, qualquer duvida eu resppondo aqui mesmo (se caso for necessario cria outro topico me avisem) Creditos Pelo Tutorial: Hawkspirit
    1 point
  4. Venho compartilhar com vocês um projeto inicial que venho trabalhando nele há algum tempo. Base: aCis. Projeto: L2Waves ( l2jdev Nome usado internamente por min ) Nada na base foi alterado em relação a quest, classes, skills e grand boss. Security: Proteções padrões aCis + Over Enchant: Proteção de max enchant, punição configurável. + Bots Prevention: Proteção contra bots, sistema tipo captcha, punição configurável. + Safe Admin: Proteção contra admins indesejados, se true é necessário registrar seu personagem na pasta de configuração, caso contrario será punido conforme configurado. Security.properties Enchanting: Todo sistema enchant foi modificado e com maior precisão de configuração. Ex: 3-0.66,4-0.55 +3 = 66% +4 = 55% Enchanting.properties Characters AIO: Privilégios: Transforme seu personagem em um suporte buffer, itens e skills configurável, title personalizado configurável. Restrição: Skills restritas fora de uma cidade, olympiad, subclasse e change class. Time: Sistema em task funciona como um cronômetro, privilégios são removidos em tempo real após término sem a necessidade de restart do personagem ou do servidor. Use: Ação pode ser transmitida através de 3 caminhos: NPC, item, admin comando, também é possível configurar o período de tempo. Update: Via NPC, admin comando ou se o item for usado mais de uma vez, sera somado seu tempo restante + novo período. SQL: character_aio Characters Premium: Privilégios: Bônus rates diferenciado, itens e skills configurável, name/title color configurável. Time: Sistema em task funciona como um cronômetro, privilégios são removidos em tempo real após término sem a necessidade de restart do personagem ou do servidor. Use: Ação é transmitida através de um determinado item escolhido, também é possível configurar o período de tempo. Update: Se o item for usado mais de uma vez, sera somado seu tempo restante + novo período. SQL: character_premium Characters CHero: Privilégios: Torna-se um herói por um período de 30 dias. Restrição: Restrito para heróis olímpicos. Time: Sistema em task funciona como um cronômetro, privilégios são removidos em tempo real após término sem a necessidade de restart do personagem ou do servidor. Use: Ação é transmitida através de um determinado item escolhido, período de tempo fixo. Update: Se o item for usado mais de uma vez, sera somado seu tempo restante + 30 dias. SQL: character_chero Mods: Team VS Team Event ( TvT) PvP color system + skills reward PvP Reward system PvP /PK announce kills Armor e Weapon protection except cupid bow Comandos: .menu / Banking Skills duration list NPC Attackable except training dummy Offline trade/craft Custom start: spawn, level, itens OUTROS [ gameserver\config\l2jdev ] New admin comando: Donate: //senddonate - //givedonate AIO: //add_aio - //update_aio - //remove_aio TvT: //tvt_add - //tvt_remove Olympiada: //addolypoints - //removeolypoints - //setolypoints - //getolypoints Itens services: INFO: [ gameserver/config/l2jdev/item.txt ] WipePk CleanKarma FullRec ChangeSex Premium AIO Noble ClanFull CHero NPCs: ID 60010 - Magic Support [ gameserver\data\html\l2jdev\magicsupport ] ID 60011 - TvT Event [ gameserver\data\html\l2jdev\tvtevent ] ID 60012 - AIO Manager [ gameserver\data\html\l2jdev\aio ] ID 60013 - Merchant [ gameserver\data\html\merchant ] ID 60014 - Statistics [ gameserver\data\html\l2jdev\statistics ] ID 60015 - Gatekeeper [ gameserver\data\html\teleporter ] ID 60016 - Protector [ gameserver\data\html\l2jdev\protector ] ID 60017 - Bug Report [ gameserver\data\html\l2jdev\bugreports ] ID 60017 - Raid Boss Info [ gameserver\data\html\l2jdev\raidbossinfo ] ID 60019 - Vote Reward [ gameserver\data\html\l2jdev\votemanager ] NPC Imagens: Wondrous Cubic: Funciona como um item Smarth, muito visto em CB, com um duplo click em um determinado item selecionado, você terá as opções abaixo de serviços: Features: Onde poderá adicionar todas informações do servidor. General: Com opções de Refusal Messages e Trades. Item Store: Venda de weapons, armors, jewels, miscellaneous, Apply SA e SELL. Magical Support: myself e mypet, podendo se buffar manualmente ou automaticamente. Symbol Maker: Adicionar e remover. Teleporter: Newbie zones, Kingdoms, Arenas, Hunting Grounds. Trainer: Make augment, cancel augment, enchant skills. ITEM: [ <set name="handler" val="Cubic" /> ] Wondrous Imagem: Files: Java JDK8: [Hidden Content] Server: [Hidden Content] System recomendada protocolo 846: [Hidden Content] MySQL: 5.5/5.7 Custom: Dual aio: [Hidden Content] Download: [Hidden Content]
    1 point
  5. Olá jovens jogadores de lineage 4ever :D Passando aqui só para deixar um arquivo que eu achei muito top, em fim, não sei se funciona para outras versões além de interlude e se for testar em outras versões, POR FAVOR, façam o backup! Já testei em interlude e a print ta ai abaixo! Imagem: Vídeo: [Hidden Content] Esse arquivo fica dentro da pasta Systextures :D Download: Mega | Google Drive Créditos: l2exp Deixa like ai e comenta na bagaça para me fazer ser um membro famoso e ganhar uma plaquinha de amigos l2jbr, Vlw, flw!
    1 point
  6. Oi pessoal demorou mais chegou! Ate que enfin chegou o meu servidor Pré-Configurado L2jFree Interlude! Custon Itens: *Amors: -Dark Knight; -Dynasty; -Titanium; -Ice Crusader (todas [Light, Robe, Have]); -Helms custon; *Weapons: -Dynasty; -Epic; -Ice; -Dusk; -Icarus; -Dual *AIO*; *Itens: -Tatoo's LvL: 2, 3 ,4 ,5 e 6, AIO; -Asas; -Escudos : Blue Dragon, Wing, Gold, Dark, e etc...; -Mascaras +200 e +300 de Mdef e Pdef; e Muito mais!! *NPC's: -Madalena( Donator Trader); -Gato de Classe(Troca de Classe[assim que troca de classe ganha um book of giant]); -GK Global -Cheetara(Thandera's GK); -GM Shop -Minnie(Shop B); -Pateta(Shop D); -Fiona(Shop C); -Mickey(Shop A); -Dumbo(Shop S); -Dunga(Potions e Dyes); -Tais(Donator Itens); -NPC BUFFER -Andromeda(Wedding Priester); -Bento XVI(Papa); -Habilidades(Enchant Skill); -Joana(Donator Weapons); -Jack Sparrow(Trader Moedas); -ChucK Norris(Crafter Trader). Isso e o Basico!! Obs.: Sobre os Npc Donator e so usar a Madalena que ela serve como uma só para todos! Obs².: Os Npc's estão spawnados em Giram! ACCESSLEVEL DE ADM = 200 ID TICKET(PEDIDOS): 11111 DOWNLOA'S: Back-Up: DOWNLOAD Back-Up Srv-L2j-Il: DOWNLOAD Srv-L2j-Il Patch PT¹: DOWNLOAD Patch PT¹ Patch PT²: DOWNLOAD Patch PT² Obs.: É obrigado baixar as 2 partes do Patch para poder descompactar pois dará erro ao tentar descompactar sem as 2 partes! Valeu pessoal breve versao Kamael, Hellbound e Gracia(Só quando sair a parte final) LINKS ON NOVAMENTE!! BUGS CORRIGIDOS E NOVOS ADD'S! Resolvendo erro npc Buffer: dentro da pasta: GAMESERVER\dist\data\jscript\quests apagar as pastas: 7777_overvip e 9998_NPCBuffer altere o arquivo __init__.py deixando assim no final do include de quests! '653_WildMaiden', '9999_NPCBuffer'
    1 point
  7. Ola Pessoal, vim aqui postar esse evento que encontrei em outro site não sei se tem aqui pois nao encontrei, e um evento de corrida de Strider, mais Gostaria que alguém adapitar-se ele para L2jFrozen, eu ate tentei varias vezes adapitar, mais não conseguir.! Ficarei muito grato.! Video do Evento Abaixo [Hidden Content] ### Eclipse Workspace Patch 1.0 Index: java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java =================================================================== --- java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (revision 1) +++ java/net/sf/l2j/gameserver/handler/AdminCommandHandler.java (working copy) @@ -62,6 +62,7 @@ import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn; +import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminStriderRace; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTarget; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTeleport; import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminUnblockIp; @@ -127,6 +128,8 @@ registerAdminCommandHandler(new AdminTeleport()); registerAdminCommandHandler(new AdminUnblockIp()); registerAdminCommandHandler(new AdminZone()); + //custom + registerAdminCommandHandler(new AdminStriderRace()); } public void registerAdminCommandHandler(IAdminCommandHandler handler) Index: java/net/sf/l2j/gameserver/custom/striderrace/StriderRace.java =================================================================== --- java/net/sf/l2j/gameserver/custom/striderrace/StriderRace.java (revision 0) +++ java/net/sf/l2j/gameserver/custom/striderrace/StriderRace.java (working copy) @@ -0,0 +1,236 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <[Hidden Content];. + */ +package net.sf.l2j.gameserver.custom.striderrace; + +import java.util.ArrayList; +import java.util.List; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.datatables.MapRegionTable; +import net.sf.l2j.gameserver.datatables.NpcTable; +import net.sf.l2j.gameserver.datatables.SpawnTable; +import net.sf.l2j.gameserver.model.L2Spawn; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; +import net.sf.l2j.gameserver.skills.AbnormalEffect; +import net.sf.l2j.gameserver.util.Broadcast; + +/** + * @author Bluur + * @version 1.1 + */ +public class StriderRace +{ + private static StriderRace INSTANCE; + private StriderRaceState srState = StriderRaceState.DESACTIVED; + private List<L2PcInstance> players = new ArrayList<>(); + + private StriderRace(){} + + public void startEvent() + { + srState = StriderRaceState.REGISTER; + announceEvent("The event started! Commands .joinsr or .leavesr"); + announceEvent("Registration time: 5 minutes!"); + sleep(60); + announceEvent("[4] minutes to the end of the record!"); + sleep(60); + announceEvent("[3] minutes to the end of the record!"); + sleep(60); + announceEvent("[2] minutes to the end of the record!"); + sleep(60); + announceEvent("[1] minutes to the end of the record!"); + sleep(60); + if (!minPlayers()) + { + abortEvent(); + return; + } + srState = StriderRaceState.WAIT; + announceEvent("closed registration! Total number of registered players: "+ players.size()); + announceEvent("The players will be teleported in 10 seconds!"); + sleep(10); + teleportPlayers(); + mountPlayer(true); + paralizedPlayer(true); + announceEvent("The event will start in 15 seconds!"); + sleep(15); + srState = StriderRaceState.ATIVED; + announceEvent("The race is on! Go Go Go!"); + spawnNpc(); + paralizedPlayer(false); + sleep(300); // duração do evento em segundos + if (srState == StriderRaceState.ATIVED) + finishEvent(); + } + + private void paralizedPlayer(boolean value) + { + if (value) + { + for (L2PcInstance player : players) + { + player.setIsParalyzed(true); + player.startAbnormalEffect(AbnormalEffect.HOLD_2); + } + } + else + { + for (L2PcInstance player : players) + { + player.setIsParalyzed(false); + player.stopAbnormalEffect(AbnormalEffect.HOLD_2); + } + } + } + + private void mountPlayer(boolean value) + { + if (value) + { + for (L2PcInstance player : players) + { + if (player != null) + { + player.getRadar().addMarker(Config.EVENT_SR_LOC_ARRIVAL_X, Config.EVENT_SR_LOC_ARRIVAL_Y, Config.EVENT_SR_LOC_ARRIVAL_Z); + player.mount(12526, 0, false); + } + } + } + else + { + for (L2PcInstance player : players) + { + if (player != null) + { + player.getRadar().removeMarker(Config.EVENT_SR_LOC_ARRIVAL_X, Config.EVENT_SR_LOC_ARRIVAL_Y, Config.EVENT_SR_LOC_ARRIVAL_Z); + player.dismount(); + } + } + } + } + + private void abortEvent() + { + srState = StriderRaceState.DESACTIVED; + announceEvent("The event was terminated for lack of participants!"); + players.clear(); + } + + public void finishEvent() + { + srState = StriderRaceState.DESACTIVED; + announceEvent("The event duration time is up! Thank all..."); + teleportPlayersToTown(); + mountPlayer(false); + players.clear(); + } + + private static void announceEvent(String sendMessage) + { + Broadcast.announceToOnlinePlayers("[Strider Race]: " + sendMessage, true); + } + + private void teleportPlayers() + { + for (L2PcInstance player : players) + player.teleToLocation(Config.EVENT_SR_LOC_PLAYER_X, Config.EVENT_SR_LOC_PLAYER_Y, Config.EVENT_SR_LOC_PLAYER_Z, 60); + } + + private void teleportPlayersToTown() + { + for (L2PcInstance player : players) + player.teleToLocation(MapRegionTable.TeleportWhereType.Town); + } + + private boolean minPlayers() + { + if (players.size() < Config.EVENT_SR_MINIMUM_PLAYERS) + return false; + + return true; + } + + public boolean maxPlayers() + { + if (players.size() >= Config.EVENT_SR_MAXIMUM_PLAYERS) + return false; + + return true; + } + + public boolean containsPlayer(L2PcInstance player) + { + return players.contains(player); + } + + public void registerPlayer(L2PcInstance player) + { + players.add(player); + } + + public void removePlayer(L2PcInstance player) + { + players.remove(player); + } + + private static void spawnNpc() + { + NpcTemplate tp = NpcTable.getInstance().getTemplate(Config.EVENT_SR_LOC_ID_NPC); + try + { + L2Spawn spawn = null; + + spawn = new L2Spawn(tp); + spawn.setLocx(Config.EVENT_SR_LOC_ARRIVAL_X); + spawn.setLocy(Config.EVENT_SR_LOC_ARRIVAL_Y); + spawn.setLocz(Config.EVENT_SR_LOC_ARRIVAL_Z); + spawn.setHeading(0); + + SpawnTable.getInstance().addNewSpawn(spawn, false); + spawn.init(); + spawn.stopRespawn(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + public StriderRaceState getStriderRaceState() + { + return srState; + } + + private static void sleep(int value) + { + try + { + Thread.sleep(1000 * value); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + public static StriderRace getInstance() + { + if (INSTANCE == null) + INSTANCE = new StriderRace(); + + return INSTANCE; + } +} Index: java/net/sf/l2j/gameserver/network/clientpackets/Logout.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (revision 1) +++ java/net/sf/l2j/gameserver/network/clientpackets/Logout.java (working copy) @@ -15,6 +15,8 @@ package net.sf.l2j.gameserver.network.clientpackets; import net.sf.l2j.Config; +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival; import net.sf.l2j.gameserver.model.L2Party; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; @@ -44,6 +46,16 @@ return; } + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.ATIVED) + { + if (StriderRace.getInstance().containsPlayer(player)) + { + player.sendMessage("[Strider Race]: You can't logout in strider race!"); + player.sendPacket(ActionFailed.STATIC_PACKET); + return; + } + } + if (player.isLocked()) { if (Config.DEBUG) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -50,6 +50,8 @@ import net.sf.l2j.gameserver.ai.NextAction.NextActionCallback; import net.sf.l2j.gameserver.communitybbs.BB.Forum; import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager; +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; import net.sf.l2j.gameserver.datatables.AccessLevels; import net.sf.l2j.gameserver.datatables.CharNameTable; import net.sf.l2j.gameserver.datatables.CharTemplateTable; @@ -5012,6 +5014,16 @@ { sendPacket(new SetupGauge(3, 0, 0)); int petId = _mountNpcId; + + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.ATIVED) + { + if (petId == 12526 && StriderRace.getInstance().containsPlayer(this)) + { + sendMessage("[Strider Race]: You can't unmount in strider race!"); + return false; + } + } + if (setMount(0, 0, 0)) { stopFeed(); Index: java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java (revision 1) +++ java/net/sf/l2j/gameserver/model/actor/stat/PcStat.java (working copy) @@ -15,6 +15,8 @@ package net.sf.l2j.gameserver.model.actor.stat; import net.sf.l2j.Config; +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; import net.sf.l2j.gameserver.datatables.NpcTable; import net.sf.l2j.gameserver.datatables.PetDataTable; import net.sf.l2j.gameserver.model.actor.L2Character; @@ -334,6 +336,9 @@ if (penalty > 0) val *= Math.pow(0.84, penalty); + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.ATIVED && StriderRace.getInstance().containsPlayer(getActiveChar())) + val *= Config.EVENT_SR_SPEED; + return val; } Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 1) +++ java/net/sf/l2j/Config.java (working copy) @@ -226,6 +226,20 @@ public static int ALT_FISH_CHAMPIONSHIP_REWARD_4; public static int ALT_FISH_CHAMPIONSHIP_REWARD_5; + /** Strider Race */ + public static int EVENT_SR_MINIMUM_PLAYERS; + public static int EVENT_SR_MAXIMUM_PLAYERS; + public static int[][] EVENT_SR_REWARD_TOP1; + public static int[][] EVENT_SR_REWARD_TOP2; + public static int[][] EVENT_SR_REWARD_TOP3; + public static double EVENT_SR_SPEED; + public static int EVENT_SR_REWARD_COUNT; + public static int EVENT_SR_LOC_ARRIVAL_X; + public static int EVENT_SR_LOC_ARRIVAL_Y; + public static int EVENT_SR_LOC_ARRIVAL_Z; + public static int EVENT_SR_LOC_PLAYER_X; + public static int EVENT_SR_LOC_PLAYER_Y; + public static int EVENT_SR_LOC_PLAYER_Z; + public static int EVENT_SR_LOC_ID_NPC; + // -------------------------------------------------- // HexID // -------------------------------------------------- @@ -879,6 +893,18 @@ ALT_FISH_CHAMPIONSHIP_REWARD_4 = events.getProperty("AltFishChampionshipReward4", 200000); ALT_FISH_CHAMPIONSHIP_REWARD_5 = events.getProperty("AltFishChampionshipReward5", 100000); + EVENT_SR_LOC_ID_NPC = events.getProperty("EventSRnpcID", 10); + EVENT_SR_MINIMUM_PLAYERS = events.getProperty("EventSRminimumPlayers", 2); + EVENT_SR_MAXIMUM_PLAYERS = events.getProperty("EventSRmaximumPlayers", 2); + EVENT_SR_REWARD_TOP1 = parseItemsList(events.getProperty("EventSRrewardsTop1", "57,300")); + EVENT_SR_REWARD_TOP2 = parseItemsList(events.getProperty("EventSRrewardsTop2", "57,200")); + EVENT_SR_REWARD_TOP3 = parseItemsList(events.getProperty("EventSRrewardsTop3", "57,100")); + EVENT_SR_SPEED = events.getProperty("EventSRspeedBoost", 1.0); + EVENT_SR_LOC_PLAYER_X = events.getProperty("EventSRlocPlayerX", 0); + EVENT_SR_LOC_PLAYER_Y = events.getProperty("EventSRlocPlayerY", 0); + EVENT_SR_LOC_PLAYER_Z = events.getProperty("EventSRlocPlayerZ", 0); + EVENT_SR_LOC_ARRIVAL_X = events.getProperty("EventSRlocArrivalX", 0); + EVENT_SR_LOC_ARRIVAL_Y = events.getProperty("EventSRlocArrivalY", 0); + EVENT_SR_LOC_ARRIVAL_Z = events.getProperty("EventSRlocArrivalZ", 0); Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminStriderRace.java =================================================================== --- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminStriderRace.java (revision 0) +++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminStriderRace.java (working copy) @@ -0,0 +1,60 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <[Hidden Content];. + */ +package net.sf.l2j.gameserver.handler.admincommandhandlers; + +import net.sf.l2j.gameserver.ThreadPoolManager; +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; +import net.sf.l2j.gameserver.handler.IAdminCommandHandler; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; + +/** + * @author Bluur + * + */ +public class AdminStriderRace implements IAdminCommandHandler +{ + private static final String[] ADMIN_COMMANDS = {"admin_startsr"}; + + @Override + public boolean useAdminCommand(String command, L2PcInstance activeChar) + { + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.DESACTIVED) + initEvent(); + else + activeChar.sendMessage("[Strider Race]: The event this already in progress!"); + + return true; + } + + private static void initEvent() + { + ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() + { + @Override + public void run() + { + StriderRace.getInstance().startEvent(); + } + + }, 1); + } + + @Override + public String[] getAdminCommandList() + { + return ADMIN_COMMANDS; + } +} Index: java/net/sf/l2j/gameserver/custom/striderrace/StriderRaceState.java =================================================================== --- java/net/sf/l2j/gameserver/custom/striderrace/StriderRaceState.java (revision 0) +++ java/net/sf/l2j/gameserver/custom/striderrace/StriderRaceState.java (working copy) @@ -0,0 +1,27 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <[Hidden Content];. + */ +package net.sf.l2j.gameserver.custom.striderrace; + +/** + * @author Bluur + * + */ +public enum StriderRaceState +{ + DESACTIVED, + REGISTER, + WAIT, + ATIVED; +} Index: java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (revision 1) +++ java/net/sf/l2j/gameserver/network/clientpackets/RequestRestart.java (working copy) @@ -15,6 +15,8 @@ package net.sf.l2j.gameserver.network.clientpackets; import net.sf.l2j.Config; +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; import net.sf.l2j.gameserver.instancemanager.SevenSignsFestival; import net.sf.l2j.gameserver.model.L2Party; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; @@ -47,6 +49,16 @@ return; } + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.ATIVED) + { + if (StriderRace.getInstance().containsPlayer(player)) + { + player.sendMessage("[Strider Race]: You can't restart in strider race!"); + sendPacket(RestartResponse.valueOf(false)); + return; + } + } + if (player.isLocked()) { sendPacket(RestartResponse.valueOf(false)); Index: java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/RegStriderRace.java =================================================================== --- java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/RegStriderRace.java (revision 0) +++ java/net/sf/l2j/gameserver/handler/voicedcommandhandlers/RegStriderRace.java (working copy) @@ -0,0 +1,83 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <[Hidden Content];. + */ +package net.sf.l2j.gameserver.handler.voicedcommandhandlers; + +import net.sf.l2j.gameserver.custom.striderrace.StriderRace; +import net.sf.l2j.gameserver.custom.striderrace.StriderRaceState; +import net.sf.l2j.gameserver.handler.IVoicedCommandHandler; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; + +/** + * @author Bluur + */ +public class RegStriderRace implements IVoicedCommandHandler +{ + private static final String[] voiced_commands = + { + "joinsr", + "leavesr" + }; + + @Override + public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params) + { + if (command.equals("joinsr")) + { + if (register(activeChar)) + { + StriderRace.getInstance().registerPlayer(activeChar); + activeChar.sendMessage("[Strider Race]: You have been successfully registered!"); + } + } + else if (command.equals("leavesr")) + { + remove(activeChar); + } + return true; + } + + private static boolean register(L2PcInstance p) + { + if (!StriderRace.getInstance().maxPlayers()) + { + p.sendMessage("[Strider Race]: Limit of players was reached."); + return false; + } + else if (StriderRace.getInstance().getStriderRaceState() != StriderRaceState.REGISTER || p.getKarma() > 0 || p.isInCombat() || p.isInOlympiadMode() || p.inObserverMode() || StriderRace.getInstance().containsPlayer(p)) + { + p.sendMessage("[Strider Race]: conditions for registration are inappropriate !!!"); + return false; + } + + return true; + } + + private static boolean remove(L2PcInstance p) + { + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.REGISTER && StriderRace.getInstance().containsPlayer(p)) + { + StriderRace.getInstance().removePlayer(p); + p.sendMessage("[Strider Race]: you have been successfully removed!"); + } + + return true; + } + + @Override + public String[] getVoicedCommandList() + { + return voiced_commands; + } +} Index: java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java =================================================================== --- java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (revision 0) +++ java/net/sf/l2j/gameserver/handler/VoicedCommandHandler.java (working copy) import java.util.Map; +import net.sf.l2j.gameserver.handler.voicedcommandhandlers.RegStriderRace; protected VoicedCommandHandler() { + registerVoicedCommandHandler(new RegStriderRace()); \ No newline at end of file Index: java/net/sf/l2j/gameserver/model/actor/instance/L2StriderRaceEventInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2StriderRaceEventInstance.java (revision 0) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2StriderRaceEventInstance.java (working copy) @@ -0,0 +1,102 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <[Hidden Content];. + */ +package net.sf.l2j.gameserver.model.actor.instance; + +import net.sf.l2j.Config; +import net.sf.l2j.gameserver.ai.CtrlIntention; +import net.sf.l2j.gameserver.datatables.MapRegionTable; +import net.sf.l2j.gameserver.datatables.SpawnTable; +import net.sf.l2j.gameserver.model.L2Object; +import net.sf.l2j.gameserver.model.L2Spawn; +import net.sf.l2j.gameserver.model.actor.L2Npc; +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; +import net.sf.l2j.gameserver.model.striderrace.StriderRace; +import net.sf.l2j.gameserver.model.striderrace.StriderRaceState; +import net.sf.l2j.gameserver.util.Broadcast; + +public class L2StriderRaceEventInstance extends L2NpcInstance +{ + public L2StriderRaceEventInstance(int objectId, NpcTemplate template) + { + super(objectId, template); + } + + private static int rankPlayer = 0; + + @Override + public void onAction(L2PcInstance player) + { + if (player.getTarget() != this) + player.setTarget(this); + else + { + if (!canInteract(player)) + player.getAI().setIntention(CtrlIntention.INTERACT, this); + else + { + if (StriderRace.getInstance().getStriderRaceState() == StriderRaceState.ATIVED && StriderRace.getInstance().containsPlayer(player)) + { + if (rankPlayer < 2) + { + rankPlayer++; + Broadcast.announceToOnlinePlayers("[Strider Race]: [" + rankPlayer + "] to arrive was -> " + player.getName(), true); + rewardPlayer(player); + StriderRace.getInstance().removePlayer(player); + player.teleToLocation(MapRegionTable.TeleportWhereType.Town); + player.dismount(); + return; + } + rankPlayer += 1; + Broadcast.announceToOnlinePlayers("[Strider Race]: [3] to arrive was -> " + player.getName(), true); + rewardPlayer(player); + StriderRace.getInstance().finishEvent(); + rankPlayer = 0; + + L2Object obj = player.getTarget(); + if (obj != null && obj instanceof L2Npc) + { + L2Npc target = (L2Npc) obj; + target.deleteMe(); + + L2Spawn spawn = target.getSpawn(); + if (spawn != null) + { + spawn.stopRespawn(); + SpawnTable.getInstance().deleteSpawn(spawn, true); + } + } + } + } + } + } + + private static void rewardPlayer(L2PcInstance player) + { + switch (rankPlayer) + { + case 1: + for (int[] item : Config.EVENT_SR_REWARD_TOP1) + player.addItem("", item[0], item[1], player, true); + break; + case 2: + for (int[] item : Config.EVENT_SR_REWARD_TOP2) + player.addItem("", item[0], item[1], player, true); + break; + default: + for (int[] item : Config.EVENT_SR_REWARD_TOP3) + player.addItem("", item[0], item[1], player, true); + } + } +} Index: config/events.properties =================================================================== --- config/events.properties (revision 1) +++ config/events.properties (working copy) gameserver/data/xml/admin_commands_rights.xml + <aCar name="admin_startsr" accessLevel="1" /> gameserver/data/xml/npcs <npc id="9106" idTemplate="35062" name="Strider Race Event" title="[ARRIVAL HERE]"> <set name="level" val="75"/> <set name="radius" val="10"/> <set name="height" val="80"/> <set name="rHand" val="0"/> <set name="lHand" val="0"/> <set name="type" val="L2StriderRaceEvent"/> <set name="exp" val="0"/> <set name="sp" val="10"/> <set name="hp" val="2676.65854"/> <set name="mp" val="1507.8"/> <set name="hpRegen" val="8.5"/> <set name="mpRegen" val="3"/> <set name="pAtk" val="794.70901"/> <set name="pDef" val="319.24623"/> <set name="mAtk" val="542.68324"/> <set name="mDef" val="233.61053"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="30"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="50"/> <set name="runSpd" val="120"/> <set name="dropHerbGroup" val="0"/> <set name="attackRange" val="40"/> <ai type="default" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" clan="door_clan;dion_siege_clan" clanRange="600" canMove="false" seedable="false"/> <skills> <skill id="4045" level="1"/> <skill id="4416" level="19"/> </skills> </npc> Broadcast.ann Broadcast.announceToOnlinePlayers("[Strider Race]: The event ends with the winner -> " +player.getName(), true); Broadcast.announceToOnlinePlayers("[Strider Race]: " + sendMessage, true);
    1 point
  8. rrsrsr, agora eu não me descuido mais não rs
    1 point
  9. Bom dia tarde noite, venho aqui só comunicar que as atualizações no momento não estão acontecendo devido alguns bugs encontrado nas novas atualizações da aCis ! Asim que for corrigido vou esta atualizando ...
    1 point
  10. Dual aio. Download: [Hidden Content]
    1 point
  11. Mais um NPC hoje! :) Esse aqui eu não testei, apenas editei as xmls e htmls, compactei e estou postando pra vocês. Se alguém quiser e me fizer o favor de testar, eu agradeço. Images? Bem, eu não irei postar imagens, pois não é nada novo. Simplesmente um NPC que vende somente armas "S" e também disponibiliza a opção de adicionar "SA", cobrando alguns itens e a arma sem a habilidade. Está bem simples e resumido. [...] Hoje eu postei um NPC adaptado somente para aCis, porém eu vi que muitos usam Frozen, então este NPC vai adaptado para os dois projetos, os arquivos encontram-se dentro do "file.rar". Qualquer duvida, sugestão ou erro, por favor postem aqui que estarei sanando/lendo ou corrigindo. Grande abraço a todos e bom uso! Obs. Lembrando que o NPC não possui créditos embutidos nas htmls, sei que muitos tiram e outros não gostam desse trabalho, então não se preocupem, apenas carreguem os arquivos e aproveitem! ^_^ --> ATENÇÃO: AO ADICIONAR O 'SA' O ENCANTO (ENCHANT) DA ARMA É MANTIDO <-- Link para download: Obrigado Smallz por postar a imagem. Se gostou, não deixe de curtir! ;)
    1 point
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.