Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Evento Super Mobs

Iniciado por Swarlog, Ago 11, 2022, 01:33 AM

Tema anterior - Siguiente tema

Swarlog

Con este script, al matar al mob indicado obtienes recompensas; heroe, nobleza, skills, items, etc.. Totalmente configurable.

package l2s.gameserver.scripts.custom;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.TimeUnit;

import l2s.commons.db.DatabaseFactory;
import l2s.gameserver.Announcements;
import l2s.gameserver.datatables.SkillTable;
import l2s.gameserver.model.L2Skill;
import l2s.gameserver.model.actor.L2Npc;
import l2s.gameserver.model.actor.instance.L2PcInstance;
import l2s.gameserver.model.quest.Quest;

/**
 * @author SoFace
 */
public class SuperMonster extends Quest
{
// Monsters's ID.
private static final int MONSTERS[] =
{
12564
};

private static final boolean REWARD_PARTY = false; // Reward party ?

private final static boolean REWARD_NOBLE = true; // Give Noblesse  ?

private final static boolean REWARD_HERO = false; // Give Hero ?
private final static int REWARD_HERO_DAYS = -1; // How many days to give the status of Hero ?
// 0 - Until relogin. -1 - Forever.

private final static boolean REWARD_SKILL = true; // Give Skill ?
private final static int REWARD_SKILL_ID = 0; // Skill's ID.
private final static int REWARD_SKILL_LVL = 0; // Skill's LvL.

private final static boolean REWARD_ITEMS = true; // Give Items ?
private final static int REWARD_ITEM_ID = 4037; // Item's ID.
private final static int REWARD_ITEM_COUNT = 5; // Count.

public SuperMonster()
{
super(-1, "SuperMonster", "custom");

for (int mobs : MONSTERS)
addKillId(mobs);
}

@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
{
L2Skill skill = SkillTable.getInstance().getInfo(REWARD_SKILL_ID, REWARD_SKILL_LVL);

Announcements.announceToAll("SuperMonster was killed.");

if (REWARD_PARTY)
{
if (player.getParty() != null)
{
for (L2PcInstance members : player.getParty().getPartyMembers())
{
members.sendMessage("Congratulations ! You killed The SuperMonster !");

if (REWARD_ITEMS)
members.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, members, true);
if (REWARD_SKILL)
members.addSkill(skill, true);
if (REWARD_HERO)
{
if (!player.isHero())
addHero(player, REWARD_HERO_DAYS);
else
player.sendMessage("You already Hero.");
}
if (REWARD_NOBLE)
{
if (!members.isNoble())
members.setNoble(true, true);
else
members.sendMessage("You already Noblesse.");
}

members.broadcastUserInfo();
}
}
else
{
player.sendMessage("Congratulations ! You killed The SuperMonster !");

if (REWARD_ITEMS)
player.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, player, true);
if (REWARD_SKILL)
player.addSkill(skill, true);
if (REWARD_HERO)
{
if (!player.isHero())
addHero(player, REWARD_HERO_DAYS);
else
player.sendMessage("You already Hero.");
}
if (REWARD_NOBLE)
{
if (!player.isNoble())
player.setNoble(true, true);
else
player.sendMessage("You already Noblesse.");
}

player.broadcastUserInfo();
}
}
else
{
player.sendMessage("Congratulations ! You killed The SuperMonster !");

if (REWARD_ITEMS)
player.addItem("Add", REWARD_ITEM_ID, REWARD_ITEM_COUNT, player, true);
if (REWARD_SKILL)
player.addSkill(skill, true);
if (REWARD_HERO)
{
if (!player.isHero())
addHero(player, REWARD_HERO_DAYS);
else
player.sendMessage("You already Hero.");
}
if (REWARD_NOBLE)
{
if (!player.isNoble())
player.setNoble(true, true);
else
player.sendMessage("You already Noblesse.");
}

player.broadcastUserInfo();
}

return null;
}

private void addHero(L2PcInstance player, int days)
{
long _heroExpire = 0L;

player.setHero(true);
player.broadcastUserInfo();

if (days == 0)
{
_heroExpire = 3L;
return;
}
_heroExpire = (days == -1 ? 1L : System.currentTimeMillis() + TimeUnit.DAYS.toMillis(days));

try (Connection con = DatabaseFactory.getConnection();
PreparedStatement stm = con.prepareStatement("UPDATE `characters` SET `hero`=? WHERE `obj_Id`=?"))
{
stm.setLong(1, _heroExpire);
stm.setInt(2, player.getObjectId());
stm.execute();
}
catch (SQLException e)
{
_log.warn("[SuperMonster] addHero(days) error: ", e);
}
}

public static void main(String args[])
{
new SuperMonster();
}
}