onQuestFinish event trigger/Выполнение своих действий при завершении квеста

Deazer

Head Developer
Staff member
[EN] Added a new event that allows the player to operate at will upon completion of the quest. For example, I am attaching a code for issuing 1 Adena and launching fireworks about the completion of the Letter of Love quest. I abandoned the old listener system so as not to produce heaps of code and not hardcode them
I attach the code below


[RU] Добавил новый ивент который позволяет по своему желанию оперировать игроком при завершении квеста. К примеру прикладываю код выдачи 1 Адены и запуск фейерверка об завершении квеста Letter of Love. Вы же можете добавлять какие угодно механики и дополнения. Я отказался от старой системы листенеров, чтобы не плодить кучи кода и хардкодить.
Код прикладываю ниже

Java:
package services;

import l2.commons.listener.EventListener;
import l2.gameserver.GameServer;
import l2.gameserver.model.Player;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.network.l2.s2c.MagicSkillUse;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.utils.ItemFunctions;

public class QuestServices extends Functions implements ScriptFile, EventListener
{
  private static final String   EVENT_FINISH_QUEST = "onQuestFinish";
  private static final String[] LISTENING_EVENTS   = new String[]{EVENT_FINISH_QUEST};
  private static final int LETTER_OF_LOVE_QUEST_ID = 1;

  @Override
  public String[] listeningEventTypes()
  {
    return LISTENING_EVENTS;
  }

  private void onQuestLetterOfLoveFinish(Player player, Quest quest, Boolean aborted)
  {
    if(quest != null && !aborted && quest.getQuestIntId() == LETTER_OF_LOVE_QUEST_ID)
    {
      ItemFunctions.addItem(player, 57, 1, true);
      player.broadcastPacket(new MagicSkillUse(player, player, 2025, 1, 500, 1500));
    }
  }

  @Override
  public void onEvent(String eventType, Object... args)
  {
    if(eventType.equals(EVENT_FINISH_QUEST))
    {
      onQuestLetterOfLoveFinish((Player) args[0], (Quest) args[1], (Boolean) args[2]);
    }
  }

  @Override
  public void onLoad()
  {
    GameServer.getInstance().getListeners().addEventListener(this);
  }

  @Override
  public void onReload()
  {

  }

  @Override
  public void onShutdown()
  {

  }
}
 
Last edited:
Back
Top