Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''eventos''.

Atualmente, o índice de pesquisa está sendo processado. Os resultados atuais podem não estar completos.
  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Anunciantes
    • Fox CHEATS
    • 🔗 store.rubiproject.com
    • WYD LOST
  • Anúncios e Feedbacks
    • Regras
    • Anúncios e Novidades
    • Área do Usuário
    • Apresente-se aqui!
    • Tutoriais WC
    • Seja um Membro Vip
  • Beta Zone - Áreas Temporárias
    • Lineage 2
    • Inteligência Artificial
    • Segurança e Investigação
    • Desenvolvimento
  • MMO Zone
    • WYD - With Your Destiny
    • Grand Chase
    • League of Legends
    • Outros MMO em Geral
    • RPG Zone - Lixão
  • Shooter Zone
    • Counter Strike
    • Blood Strike
    • Valorant
    • Cross Fire
    • Point Blank
    • Outros Shooters em Geral
    • Battle Royale
    • Shooter Zone - Lixão
  • Outros Games Zone
    • Minecraft
    • Outros Games
    • Outros Games Zone - Lixão
  • Mobile
    • Mobile - Downloads de Cheats / Utilitários
    • Mobile - Tutoriais
    • Mobile - Servidores Privados
    • Mobile - Dúvidas / Pedidos
    • Mobile - Bate Papo
  • Info Zone
    • Programação
    • Cracking
    • Tech
    • Info Zone - Lixão
  • Design Zone
    • Galeria
    • Fábricas
    • Tutoriais
    • Recursos
    • Presentes, Leilões, Vendas e Doações
    • Suporte Design
    • Bate Papo Design
    • Depósito
  • Entretenimento & Diversão
    • Serviços Pagos
    • Notícias do Mundo
    • Bate Papo
    • Discussões
    • Mangás & Animes
    • Mídia
  • MarketPlace
    • Divulgação de Serviços
    • Contrate Serviços de Freelancer
    • Contas, Skins e Cheats
    • Outros
  • Old WC's Bate Papo
  • 【FREE FIRE】▄︻┻┳═一's Fórum do Clube
  • Bug Abuser's Tópicos

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Discord


TItulo de usuário


Data de Criação

Entre e ganha o

Encontrado 9 registros

  1. HC CURSOS E TUTORIAIS 🎬 ▶️ PLAYLIST "PROGRAMAÇÃO PARA LINEAGE 2" DO MEU CANAL NO YOUTUBE 🎬 ▶️ ## 📝 Introdução Eventos são fundamentais para manter os jogadores engajados e criar momentos especiais no servidor. Este tutorial ensina como criar um sistema completo de eventos automáticos com agendamento, mecânicas variadas e recompensas. ## 🎯 O que você vai aprender - Sistema de agendamento de eventos - Eventos PvP automáticos - Eventos PvE cooperativos - Sistema de recompensas dinâmicas - Interface de gerenciamento de eventos ## 🏗️ Sistema Base de Eventos ### Event Manager Framework ```java // EventManager.java public class EventManager { private static final Map<String, AutomaticEvent> REGISTERED_EVENTS = new HashMap<>(); private static final Map<String, EventSchedule> EVENT_SCHEDULES = new HashMap<>(); private static final ScheduledExecutorService SCHEDULER = Executors.newScheduledThreadPool(3); private static AutomaticEvent currentEvent = null; private static long lastEventEnd = 0; static { registerEvents(); startEventScheduler(); } private static void registerEvents() { // Registrar todos os tipos de evento REGISTERED_EVENTS.put("team_vs_team", new TeamVsTeamEvent()); REGISTERED_EVENTS.put("treasure_hunt", new TreasureHuntEvent()); REGISTERED_EVENTS.put("boss_raid", new BossRaidEvent()); REGISTERED_EVENTS.put("capture_flag", new CaptureFlagEvent()); REGISTERED_EVENTS.put("monster_invasion", new MonsterInvasionEvent()); REGISTERED_EVENTS.put("race_event", new RaceEvent()); REGISTERED_EVENTS.put("survival_challenge", new SurvivalChallengeEvent()); } private static void startEventScheduler() { // Verificar eventos a cada minuto SCHEDULER.scheduleAtFixedRate(() -> { checkScheduledEvents(); }, 1, 1, TimeUnit.MINUTES); // Anunciar próximos eventos SCHEDULER.scheduleAtFixedRate(() -> { announceUpcomingEvents(); }, 5, 5, TimeUnit.MINUTES); } public static void scheduleEvent(String eventType, String cronExpression, EventConfig config) { EventSchedule schedule = new EventSchedule(eventType, cronExpression, config); EVENT_SCHEDULES.put(eventType + "_" + System.currentTimeMillis(), schedule); System.out.println("Evento agendado: " + eventType + " - " + cronExpression); } public static boolean startEvent(String eventType, EventConfig config) { if (currentEvent != null && currentEvent.isActive()) { return false; // Já há evento ativo } AutomaticEvent event = REGISTERED_EVENTS.get(eventType); if (event == null) { System.out.println("Tipo de evento desconhecido: " + eventType); return false; } try { // Configurar evento event.configure(config); // Verificar se há players suficientes if (!hasMinimumPlayers(event.getMinPlayers())) { announceToAll("Evento " + event.getName() + " cancelado por falta de jogadores!"); return false; } // Iniciar evento currentEvent = event; event.start(); // Log do evento logEventStart(eventType, config); return true; } catch (Exception e) { System.err.println("Erro ao iniciar evento " + eventType + ": " + e.getMessage()); return false; } } public static void endCurrentEvent(boolean forced) { if (currentEvent != null) { try { currentEvent.end(forced); logEventEnd(currentEvent.getEventType(), forced); lastEventEnd = System.currentTimeMillis(); } catch (Exception e) { System.err.println("Erro ao finalizar evento: " + e.getMessage()); } finally { currentEvent = null; } } } private static void checkScheduledEvents() { long currentTime = System.currentTimeMillis(); // Cooldown entre eventos (mínimo 15 minutos) if (currentTime - lastEventEnd < 15 * 60 * 1000) { return; } for (EventSchedule schedule : EVENT_SCHEDULES.values()) { if (schedule.shouldTrigger(currentTime)) { startEvent(schedule.getEventType(), schedule.getConfig()); break; // Apenas um evento por vez } } } private static void announceUpcomingEvents() { long currentTime = System.currentTimeMillis(); long nextHour = currentTime + 60 * 60 * 1000; // Próxima hora for (EventSchedule schedule : EVENT_SCHEDULES.values()) { long nextTrigger = schedule.getNextTriggerTime(currentTime); if (nextTrigger > currentTime && nextTrigger <= nextHour) { long minutesUntil = (nextTrigger - currentTime) / (60 * 1000); AutomaticEvent event = REGISTERED_EVENTS.get(schedule.getEventType()); if (event != null) { announceToAll(String.format("🎪 %s começará em %d minutos!", event.getName(), minutesUntil)); } } } } // Métodos auxiliares private static boolean hasMinimumPlayers(int minPlayers) { int onlinePlayers = L2World.getInstance().getAllPlayersCount(); return onlinePlayers >= minPlayers; } private static void logEventStart(String eventType, EventConfig config) { System.out.println(String.format("[EVENT] %s iniciado - Config: %s", eventType, config.toString())); } private static void logEventEnd(String eventType, boolean forced) { System.out.println(String.format("[EVENT] %s finalizado %s", eventType, forced ? "(forçado)" : "(normal)")); } // Getters public static AutomaticEvent getCurrentEvent() { return currentEvent; } public static boolean hasActiveEvent() { return currentEvent != null && currentEvent.isActive(); } } ``` ### Base Event Class ```java // AutomaticEvent.java public abstract class AutomaticEvent { protected String eventType; protected String eventName; protected EventConfig config; protected boolean active = false; protected long startTime; protected long duration; protected List<L2PcInstance> participants = new ArrayList<>(); protected EventState currentState = EventState.WAITING; public AutomaticEvent(String eventType, String eventName) { this.eventType = eventType; this.eventName = eventName; } public void configure(EventConfig config) { this.config = config; this.duration = config.getDurationMinutes() * 60 * 1000; } public final void start() { this.startTime = System.currentTimeMillis(); this.active = true; this.currentState = EventState.REGISTRATION; // Anunciar início announceEventStart(); // Período de registro ThreadPoolManager.getInstance().scheduleGeneral(() -> { if (active) { beginEvent(); } }, config.getRegistrationTimeMinutes() * 60 * 1000); // Auto-finalizar após duração ThreadPoolManager.getInstance().scheduleGeneral(() -> { if (active) { end(false); } }, duration); // Chamada específica do evento onEventStart(); } public final void end(boolean forced) { this.active = false; this.currentState = EventState.FINISHED; try { // Finalizar lógica específica onEventEnd(forced); // Distribuir recompensas finais distributeRewards(); // Teleportar participantes de volta teleportParticipantsBack(); // Anunciar fim announceEventEnd(forced); } catch (Exception e) { System.err.println("Erro ao finalizar evento: " + e.getMessage()); } } protected void beginEvent() { this.currentState = EventState.ACTIVE; if (participants.size() < getMinPlayers()) { announceToAll("Evento cancelado: jogadores insuficientes!"); end(true); return; } // Teleportar participantes teleportParticipantsToEvent(); // Iniciar lógica específica onEventBegin(); } public boolean registerPlayer(L2PcInstance player) { if (currentState != EventState.REGISTRATION) { player.sendMessage("Período de registro encerrado!"); return false; } if (participants.contains(player)) { player.sendMessage("Você já está registrado neste evento!"); return false; } if (!canPlayerParticipate(player)) { return false; } participants.add(player); onPlayerRegister(player); player.sendMessage("Você se registrou para o evento: " + eventName); announceToAll(player.getName() + " se registrou! (" + participants.size() + " participantes)"); return true; } protected boolean canPlayerParticipate(L2PcInstance player) { // Verificações básicas if (player.getLevel() < config.getMinLevel()) { player.sendMessage("Level mínimo necessário: " + config.getMinLevel()); return false; } if (player.getLevel() > config.getMaxLevel()) { player.sendMessage("Level máximo permitido: " + config.getMaxLevel()); return false; } if (player.isInOlympiadMode() || player.isInDuel()) { player.sendMessage("Você não pode participar durante olympiad ou duel!"); return false; } if (player.getKarma() > 0 && !config.allowsKarmaPlayers()) { player.sendMessage("Jogadores com karma não podem participar!"); return false; } return true; } protected void teleportParticipantsToEvent() { EventLocation eventLoc = getEventLocation(); for (L2PcInstance player : participants) { // Salvar localização anterior player.setVar("event_return_x", String.valueOf(player.getX())); player.setVar("event_return_y", String.valueOf(player.getY())); player.setVar("event_return_z", String.valueOf(player.getZ())); // Teleportar para evento player.teleToLocation(eventLoc.getX(), eventLoc.getY(), eventLoc.getZ()); player.sendMessage("Você foi teleportado para o evento!"); // Aplicar proteções applyEventProtections(player); } } protected void teleportParticipantsBack() { for (L2PcInstance player : participants) { // Remover proteções removeEventProtections(player); // Teleportar de volta try { int returnX = Integer.parseInt(player.getVar("event_return_x")); int returnY = Integer.parseInt(player.getVar("event_return_y")); int returnZ = Integer.parseInt(player.getVar("event_return_z")); player.teleToLocation(returnX, returnY, returnZ); // Limpar variáveis player.unsetVar("event_return_x"); player.unsetVar("event_return_y"); player.unsetVar("event_return_z"); } catch (Exception e) { // Fallback para cidade segura player.teleToLocation(83400, 147943, -3404); // Giran } } } protected void applyEventProtections(L2PcInstance player) { // Proteção contra logout player.setEventParticipant(true); // Buffs de evento se configurado if (config.providesBuffs()) { applyEventBuffs(player); } // Heal completo player.setCurrentHp(player.getMaxHp()); player.setCurrentMp(player.getMaxMp()); player.setCurrentCp(player.getMaxCp()); } // Métodos abstratos que cada evento deve implementar protected abstract void onEventStart(); protected abstract void onEventBegin(); protected abstract void onEventEnd(boolean forced); protected abstract void onPlayerRegister(L2PcInstance player); protected abstract void distributeRewards(); protected abstract EventLocation getEventLocation(); public abstract int getMinPlayers(); // Getters public String getEventType() { return eventType; } public String getName() { return eventName; } public boolean isActive() { return active; } public EventState getCurrentState() { return currentState; } public List<L2PcInstance> getParticipants() { return new ArrayList<>(participants); } // Enums public enum EventState { WAITING, REGISTRATION, ACTIVE, FINISHED } } ``` ## ⚔️ Eventos PvP ### Team vs Team Event ```java // TeamVsTeamEvent.java public class TeamVsTeamEvent extends AutomaticEvent { private List<L2PcInstance> teamRed = new ArrayList<>(); private List<L2PcInstance> teamBlue = new ArrayList<>(); private Map<L2PcInstance, Integer> playerKills = new HashMap<>(); private Map<L2PcInstance, Integer> playerDeaths = new HashMap<>(); private int redTeamScore = 0; private int blueTeamScore = 0; private final int SCORE_TO_WIN = 50; public TeamVsTeamEvent() { super("team_vs_team", "Team vs Team"); } @Override protected void onEventStart() { announceToAll("🔥 TEAM VS TEAM iniciando!"); announceToAll("Primeiro time a fazer " + SCORE_TO_WIN + " kills ganha!"); announceToAll("Digite .join para participar!"); } @Override protected void onEventBegin() { // Dividir players em times dividePlayersIntoTeams(); // Teleportar times para lados opostos teleportTeamsToPositions(); // Iniciar contagem regressiva startCountdown(); } private void dividePlayersIntoTeams() { Collections.shuffle(participants); for (int i = 0; i < participants.size(); i++) { L2PcInstance player = participants.get(i); if (i % 2 == 0) { teamRed.add(player); player.setTeam(1); // Red team player.setTitle("Red Team"); player.getAppearance().setNameColor(0xFF0000); } else { teamBlue.add(player); player.setTeam(2); // Blue team player.setTitle("Blue Team"); player.getAppearance().setNameColor(0x0000FF); } player.broadcastUserInfo(); playerKills.put(player, 0); playerDeaths.put(player, 0); } announceToAll("Times formados: Red (" + teamRed.size() + ") vs Blue (" + teamBlue.size() + ")"); } private void teleportTeamsToPositions() { // Posições do evento (exemplo: Coliseum) EventLocation redSpawn = new EventLocation(150086, 46733, -3412); EventLocation blueSpawn = new EventLocation(150986, 46733, -3412); // Teleportar time vermelho for (L2PcInstance player : teamRed) { int x = redSpawn.getX() + Rnd.get(-100, 100); int y = redSpawn.getY() + Rnd.get(-100, 100); player.teleToLocation(x, y, redSpawn.getZ()); } // Teleportar time azul for (L2PcInstance player : teamBlue) { int x = blueSpawn.getX() + Rnd.get(-100, 100); int y = blueSpawn.getY() + Rnd.get(-100, 100); player.teleToLocation(x, y, blueSpawn.getZ()); } } private void startCountdown() { // Congelar players for (L2PcInstance player : participants) { player.setIsImmobilized(true); } // Countdown 5 segundos for (int i = 5; i >= 1; i--) { final int count = i; ThreadPoolManager.getInstance().scheduleGeneral(() -> { announceToParticipants("Começando em: " + count); }, (5 - i) * 1000); } // Liberar movimento e iniciar batalha ThreadPoolManager.getInstance().scheduleGeneral(() -> { for (L2PcInstance player : participants) { player.setIsImmobilized(false); } announceToParticipants("🚀 LUTA COMEÇOU! BOA SORTE!"); }, 5000); } public void onPlayerKill(L2PcInstance killer, L2PcInstance victim) { if (!participants.contains(killer) || !participants.contains(victim)) { return; } // Aumentar kills do assassino int kills = playerKills.get(killer) + 1; playerKills.put(killer, kills); // Aumentar deaths da vítima int deaths = playerDeaths.get(victim) + 1; playerDeaths.put(victim, deaths); // Aumentar score do time if (teamRed.contains(killer)) { redTeamScore++; announceToParticipants(killer.getName() + " (Red) matou " + victim.getName() + "! Score: Red " + redTeamScore + " - Blue " + blueTeamScore); } else { blueTeamScore++; announceToParticipants(killer.getName() + " (Blue) matou " + victim.getName() + "! Score: Red " + redTeamScore + " - Blue " + blueTeamScore); } // Verificar vitória if (redTeamScore >= SCORE_TO_WIN) { endEventWithWinner("Red Team"); } else if (blueTeamScore >= SCORE_TO_WIN) { endEventWithWinner("Blue Team"); } // Ressuscitar vítima em local seguro ThreadPoolManager.getInstance().scheduleGeneral(() -> { revivePlayer(victim); }, 3000); } private void revivePlayer(L2PcInstance player) { if (player.isDead()) { player.doRevive(); // Teleportar para spawn do time if (teamRed.contains(player)) { player.teleToLocation(150086, 46733, -3412); } else { player.teleToLocation(150986, 46733, -3412); } // Heal completo player.setCurrentHp(player.getMaxHp()); player.setCurrentMp(player.getMaxMp()); player.setCurrentCp(player.getMaxCp()); } } private void endEventWithWinner(String winningTeam) { announceToAll("🏆 " + winningTeam + " VENCEU!"); // Dar recompensas extras para o time vencedor List<L2PcInstance> winners = winningTeam.equals("Red Team") ? teamRed : teamBlue; for (L2PcInstance winner : winners) { giveWinnerRewards(winner); } end(false); } @Override protected void distributeRewards() { for (L2PcInstance player : participants) { int kills = playerKills.get(player); int deaths = playerDeaths.get(player); // Recompensa base int baseReward = 50000; // 50k adena // Bonus por kills int killBonus = kills * 10000; // 10k por kill // Penalty por deaths (máximo 50% da recompensa) int deathPenalty = Math.min(baseReward / 2, deaths * 5000); int totalReward = Math.max(10000, baseReward + killBonus - deathPenalty); // Dar recompensa player.addItem("EventReward", 57, totalReward, null, true); player.sendMessage(String.format("Recompensa TvT: %d adena (K:%d D:%d)", totalReward, kills, deaths)); } } private void giveWinnerRewards(L2PcInstance player) { // Recompensas extras para vencedores player.addItem("EventWinner", 6577, 1, null, true); // Blessed scroll player.addItem("EventWinner", 57, 100000, null, true); // 100k bonus player.sendMessage("🎉 Recompensa de vitória recebida!"); } @Override protected void onEventEnd(boolean forced) { // Limpar teams for (L2PcInstance player : participants) { player.setTeam(0); player.setTitle(""); player.getAppearance().setNameColor(0xFFFFFF); player.broadcastUserInfo(); } if (!forced) { announceToAll("Team vs Team finalizado! Obrigado pela participação!"); } } @Override protected void onPlayerRegister(L2PcInstance player) { // Preparação específica para TvT } @Override protected EventLocation getEventLocation() { return new EventLocation(150536, 46733, -3412); // Centro do coliseum } @Override public int getMinPlayers() { return 4; // Mínimo 2 vs 2 } } ``` ### Capture the Flag Event ```java // CaptureFlagEvent.java public class CaptureFlagEvent extends AutomaticEvent { private L2NpcInstance redFlag; private L2NpcInstance blueFlag; private L2PcInstance redFlagCarrier; private L2PcInstance blueFlagCarrier; private int redCapturePoints = 0; private int blueCapturePoints = 0; private final int POINTS_TO_WIN = 3; public CaptureFlagEvent() { super("capture_flag", "Capture the Flag"); } @Override protected void onEventBegin() { // Dividir em teams dividePlayersIntoTeams(); // Spawnar bandeiras spawnFlags(); // Iniciar mecânica de captura startFlagMechanics(); } private void spawnFlags() { try { // Bandeira vermelha (base azul deve capturar) L2NpcTemplate redTemplate = NpcTable.getInstance().getTemplate(35001); // Custom flag NPC redFlag = new L2NpcInstance(IdFactory.getInstance().getNextId(), redTemplate); redFlag.spawnMe(150000, 46500, -3412); redFlag.setTitle("Red Flag"); // Bandeira azul (base vermelha deve capturar) L2NpcTemplate blueTemplate = NpcTable.getInstance().getTemplate(35002); blueFlag = new L2NpcInstance(IdFactory.getInstance().getNextId(), blueTemplate); blueFlag.spawnMe(151000, 46500, -3412); blueFlag.setTitle("Blue Flag"); announceToParticipants("Bandeiras spawnadas! Capture a bandeira inimiga!"); } catch (Exception e) { System.err.println("Erro ao spawnar bandeiras: " + e.getMessage()); } } public void onFlagClick(L2PcInstance player, L2NpcInstance flag) { if (!participants.contains(player)) return; if (flag == redFlag && player.getTeam() == 2) { // Blue player clicking red flag captureFlag(player, "red"); } else if (flag == blueFlag && player.getTeam() == 1) { // Red player clicking blue flag captureFlag(player, "blue"); } else { player.sendMessage("Você não pode capturar sua própria bandeira!"); } } private void captureFlag(L2PcInstance player, String flagColor) { if (flagColor.equals("red") && redFlagCarrier != null) { player.sendMessage("A bandeira vermelha já foi capturada!"); return; } if (flagColor.equals("blue") && blueFlagCarrier != null) { player.sendMessage("A bandeira azul já foi capturada!"); return; } // Capturar bandeira if (flagColor.equals("red")) { redFlagCarrier = player; redFlag.deleteMe(); player.setTitle("Carrying Red Flag"); } else { blueFlagCarrier = player; blueFlag.deleteMe(); player.setTitle("Carrying Blue Flag"); } player.broadcastUserInfo(); announceToParticipants(player.getName() + " capturou a bandeira " + flagColor + "!"); // Marcar visualmente o portador player.startAbnormalEffect(L2Character.ABNORMAL_EFFECT_MAGIC_CIRCLE); // Verificar se chegou na base para pontuar startFlagDeliveryCheck(player, flagColor); } private void startFlagDeliveryCheck(L2PcInstance player, String flagColor) { ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(() -> { if (!participants.contains(player)) return; // Verificar se jogador morreu ou deslogou if (player.isDead() || !player.isOnline()) { dropFlag(player, flagColor); return; } // Verificar se chegou na base boolean atBase = false; if (flagColor.equals("red") && player.getTeam() == 2) { // Blue team atBase = player.getDistance(151000, 46500, -3412) < 100; // Blue base } else if (flagColor.equals("blue") && player.getTeam() == 1) { // Red team atBase = player.getDistance(150000, 46500, -3412) < 100; // Red base } if (atBase) { scorePoint(player, flagColor); } }, 1000, 1000); // Verificar a cada segundo } private void scorePoint(L2PcInstance player, String flagColor) { // Pontuação if (player.getTeam() == 1) { // Red team redCapturePoints++; } else { blueCapturePoints++; } announceToParticipants(String.format("%s pontuou! Red: %d - Blue: %d", player.getName(), redCapturePoints, blueCapturePoints)); // Reset flag resetFlag(player, flagColor); // Verificar vitória if (redCapturePoints >= POINTS_TO_WIN) { endEventWithWinner("Red Team"); } else if (blueCapturePoints >= POINTS_TO_WIN) { endEventWithWinner("Blue Team"); } } private void dropFlag(L2PcInstance player, String flagColor) { player.setTitle(""); player.stopAbnormalEffect(L2Character.ABNORMAL_EFFECT_MAGIC_CIRCLE); player.broadcastUserInfo(); announceToParticipants(player.getName() + " dropou a bandeira " + flagColor + "!"); // Respawnar bandeira na posição original após 10 segundos ThreadPoolManager.getInstance().scheduleGeneral(() -> { resetFlag(player, flagColor); }, 10000); } private void resetFlag(L2PcInstance player, String flagColor) { player.setTitle(""); player.stopAbnormalEffect(L2Character.ABNORMAL_EFFECT_MAGIC_CIRCLE); player.broadcastUserInfo(); if (flagColor.equals("red")) { redFlagCarrier = null; // Respawnar bandeira vermelha try { L2NpcTemplate template = NpcTable.getInstance().getTemplate(35001); redFlag = new L2NpcInstance(IdFactory.getInstance().getNextId(), template); redFlag.spawnMe(150000, 46500, -3412); redFlag.setTitle("Red Flag"); } catch (Exception e) { e.printStackTrace(); } } else { blueFlagCarrier = null; // Respawnar bandeira azul try { L2NpcTemplate template = NpcTable.getInstance().getTemplate(35002); blueFlag = new L2NpcInstance(IdFactory.getInstance().getNextId(), template); blueFlag.spawnMe(151000, 46500, -3412); blueFlag.setTitle("Blue Flag"); } catch (Exception e) { e.printStackTrace(); } } } @Override protected void onEventEnd(boolean forced) { // Limpar bandeiras if (redFlag != null) redFlag.deleteMe(); if (blueFlag != null) blueFlag.deleteMe(); // Limpar efeitos dos players for (L2PcInstance player : participants) { player.setTitle(""); player.setTeam(0); player.stopAbnormalEffect(L2Character.ABNORMAL_EFFECT_MAGIC_CIRCLE); player.broadcastUserInfo(); } } // Implementar métodos abstratos restantes... @Override protected void onEventStart() { announceToAll("🏴 CAPTURE THE FLAG iniciando!"); } @Override protected void distributeRewards() { // Distribuir recompensas baseadas na pontuação for (L2PcInstance player : participants) { int baseReward = 40000; player.addItem("CTFReward", 57, baseReward, null, true); } } @Override protected void onPlayerRegister(L2PcInstance player) {} @Override protected EventLocation getEventLocation() { return new EventLocation(150500, 46500, -3412); } @Override public int getMinPlayers() { return 4; } }
  2. HC CURSOS E TUTORIAIS 🎬 ▶️ PLAYLIST "PROGRAMAÇÃO PARA LINEAGE 2" DO MEU CANAL NO YOUTUBE 🎬 ▶️ [Hidden Content]
  3. Rapaziada fui banido por usar o bug dos tickets tempo: 7 dias pelo que parece e ainda sim os pontos diários bugados pra quem uso isso tbm como se não bastasse né? é aquela coisa mexeu no bolço da Kog tomou BAN. então por tanto irei soltar um outro BUG que descobri mexendo.. OBS: Até a data de ontem isso estava funcionando como tomei ban não pude testa e não tenho conta fake pra testar. usem com sabedoria. 1 - altere sua data do computador ou notebook pro dia 14 (final de semana) 2 - esteja com o game aberto de preferência ou tente fazer o método com ele fechado. 3 - logue, selecione o servidor e voa-la vá em todas as missões de eventos estarão liberadas! quem souber entrar com conta banida comenta ai ou me ensina quero aprender KKKKK usem com sabedoria nobres guerreiros, a guerra só acaba quando a defesa suporta o ataque!
  4. Olá Atiradores, A Ouroboros representada por uma serpente, simboliza a eternidade e a evolução, tudo que os Atiradores do Point Blank buscam, sendo assim, preparamos a Mega Operação O.U.R.O.B.O.R.O.S! A operação está repleta de missões, desafios, atualizações, etc., tudo para que nestas férias vocês evoluam e se eternizem no campo de batalha do Point Blank! Confiram abaixo o Logue e Ganhe Mensal: Data: 06/07 à 02/08 Duração: 24h Premiação: Token Vermelho (1UN) Como participar: Basta entrar no jogo durante o periodo do evento e receber o Token! Os Tokens serão trocados por itens no dia 03/08 durante a Manutenção Periódica. Segue abaixo a tabela de troca: 10 Tokens Vermelhos: Gold Bomb (3UN) + P90 Ext Ongame (3D) 20 Tokens Vermelhos: Gold Bomb (3UN) + P90 Ext Ongame (3D) + Hide Strike (7D) + Viper Kopassus (7D) 28 Tokens Vermelhos: Gold Bomb (3UN) + P90 Ext Ongame (3D) + Hide Strike (7D) + Viper Kopassus (7D) + AUG A3 Ongame (10D) By.Ongame
  5. Mas o que é o DungeonRO? O DungeonRO é um servidor modificado, com jogabilidade diferente dos outros servidores. Ele é inspirado em The Legend of Zelda, após a introdução customizada, você é levado para o mapa central, e nos 4 cantos do mapa (norte,sul,leste e oeste) você tem uma aventura para percorrer! A oeste é uma densa floresta cheia de criaturas, a sul é um deserto colossal, ao norte é a casa da morte e a leste é um oceano profundo. Rates: 1x/1x/0.50% Level Máximo: 175 Max Stats: 150 Pack Amigos Disponível CP : - Download : -
  6. APRESENTAÇÃO Olá, vim anunciar a abertura do mais novo servidor de factions brasileiro, pirata e original! Contamos com diversos sistemas únicas, plugins próprios e bastante coisa divertida, dê uma conferida. O servidor abriu hoje como fase de testes, porém NÃO TERÁ RESET! SISTEMAS Temos bastante coisa divertida, tais como tesouro, caixas, baú pandora, sistema de ALMA e pontos. Além de vários eventos bacanas... O servidor é MUITO bem configurado, o mais otimizado possível. Conta com uma tradução para português-BR de aproximadamente 75% do servidor, para aqueles que não entendem muito. Vou deixar algumas prints do servidor para despertar a vontade de jogar. ALGUNS SISTEMAS E PRINTS: ★ Caixas com prêmios Tesouros (Serão encontrados durante a mineração) Boss Diversos eventos bacanas 3 Tipos de Moedas (Dinheiro, Almas e Pontos) Loja Mágica McMMO (Configurado e traduzido por mim) Menu para o jogador Um mercado rápido e prático Mercado Global aonde poderão vender tudo rapidamente Roleta Diária para prêmios irados Um mapa simpático e atraente [Engarrafar XP Pegar Spawner com toque suave Elevadores Teleporte aleatório Craft de TNT bloqueado (Consegue apenas nas caixas, para dificultar invasões) Sistema de trade Loteria [Report Suporte rápido e muitos outros.... Temos uma economia bastante equilibrada, para não termos problemas com gente rica ou pobre demais. O servidor conta com bastantes menus, para mais praticidade. Todas as lojas do servidor são feitas em menus. Entre e dê uma conferida. Valeu! Atenção! Estamos necessitando de equipe! Cagos necessitados: - Mods - Ajudantes - CDC (Criador de conteúdo para o fórum) - Construtor www.adventurecraft.com.br jogar.adventurecraft.com.br (1.8-1.10)
  7. Fatalit - PvP Pets Rankup Arenas Vips Mina PvP E Muito mais , Confira :) 1.7.2 / IP : FatalitFactions.hostgamebr.com site : [Hidden Content]
  8. Faça conteúdo, não faça bagunça! Que tal uma "campanha-evento"? Algo que unisse o útil - a criação de conteúdo - ao agradável - uma campanha voluntária na qual os membros participam com o objetivo de conscientizar os outros membros. Podemos criar essa campanha-evento com uma breve duração de um (1) mês - sempre cogitando mais tempo, afinal, ninguém é de ferro -, cada cinco dias úteis corresponderiam as datas livres para a criação de tópicos correlacionados as fases do evento e os dias restantes [sábado e Domingo] seriam os dias em que se realizam as análises e os ganhadores de cada microcampanha. Inicialmente o evento poderia ser de nível "global", isto é, poderia estar abrangendo todas as áreas do Fórum - aliás, seria necessário que assim o fosse: queremos não só um evento, queremos, igualmente, uma campanha conscientizadora. Todo tópico criado teria que ter uma mensagem inicial incentivando os membros a obedecerem as legislações vigentes e evitarem os floods (ou criação de toda e qualquer forma conteúdo inútil), essa mensagem pode ser criada antecipadamente pela Staff e os membros só colarem ela no começo do tópico ou pode ser criada pelo membro participante da campanha-evento. Os membros que quiserem participar poderão se inscrevem na área de eventos e para confirmarem sua participação teriam que criar um tópico com um nome e o subtítulo "Faça (x), não faça (x)". Ela seria dividida em quatro fases diferentes, cada uma dando uma resultando num conteúdo diferente. Fase Um - Faça tutoriais, não fala flood! Do dia quatro (4) ao dia oito (8) de julho seriam criados tutoriais pelos membros participantes da campanha-evento, com o subtítulo "Faça tutoriais, não faça floods!". Os membros poderiam escolher uma área de tutoriais de sua predileção e, depois, criar um tópico tutorial para ajudar a área. Fase Dois - Faça debates, não crie brigas! Do dia onze (11) ao dia quinze (15) de julho seriam criados debates pelos membros participantes da campanha-evento, com o subtítulo "Faça debates, não faça brigas!". Os membros poderiam escolher qual assunto abordar e o membro que criar uma briga na criação ou no desenvolvimento do tópico seria penalizado com subtração de pontos na campanha-evento. Ou seja: Debater saudavelmente = mais pontos. Criar brigas = menos pontos. Fase Três - Dê ajuda, não dê sumiços! Do dia dezoito (18) ao diz vinte e dois (22) de julho os membros participantes da campanha-evento criariam tutoriais de vida na área Bate Papo ou criariam tópicos de problemas pessoais enfrentados em suas vidas no presente momento, os tópicos teriam que conter o subtítulo "Dê ajuda, não dê sumiços!" os membros poderiam auferir pontos de duas formas: 1- Criando tutoriais informando como enfrentar problemas na vida. 2- Ajudando aqueles que precisam de conselhos de vida. A pontuação se daria assim: Criar tópicos sobre como ajudar os outros = mais pontos. Dar conselhos de vida nos tópicos dos necessitados = mais pontos. Satirizar os problemas dos alheios = menos pontos. Dar "sumiço" - não participar de nenhum tópico -: menos pontos. Fase Quatro (final) - Faça nostalgia, não faça desarmonia! Nessa parte os membros poderiam criar tópicos lembrando seus momentos mais nostálgicos, sejam estes dentro ou fora do tópico, podendo abordar desde um momento que os marcou na infância ou até mesmo um desenho ou outra coisa que lhe cause nostalgia. Os subtítulos teriam que conter a frase "Faça nostalgia, não faça desarmonia!". Rolaria entre o dia vinte e cinco (25) ao dia vinte e nove (29) de julho. Os pontos se dariam assim: Fez um tópico sobre o tema = mais pontos. Recordou junto com um amigo = mais pontos. Satirizou o tópico do amigo = menos pontos. Não participou = menos pontos. *** Essa campanha-evento poderia servir de material de estudo (experiência) para a possível criação de outras campanhas-eventos futuras, todas com o objetivo de criar uma competição saudável em que os membros competem para ver quem ajuda mais os outros membros do Fórum.
  9. ██████████ CabalParanoic ████████ █ Servidor Medium/Hard █ Servidor NOVO █ Npcs Editada █ Farm Estação Ruina █ Evento App é Preciso █ Ao cadastra Ganha Fantasias .. █ 1000 bônus Por Hora █ Drops de Oric 3ss █ EXP BASE: x90 █ EXP SKILL: x70 █ PET EXP: x50 █ ITEM DROP: x2 █ Novas Fantasias █ Iremos Add Paladino para DROPS Em Breve █ Entre Muitos.... █ AntHack Servidor com TS3 : CabalParanoic.servegame.com Pagina: [Hidden Content] Grupo: [Hidden Content] Site: www.cabalparanoic.com Venham Fazer parte dessa Família!!
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.