Создать новый скрипт:
package net.sf.l2j.gameserver.instancemanager.newai;
import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.Announcements;
import net.sf.l2j.gameserver.model.actor.appearance.PcAppearance;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.quest.Quest;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.logging.Level;
/**
* @author TpaM
*/
public class RaidBossAddHero extends Quest {
private int BOSS_ID = Config.RB_HERO_NPC_ID;
private int ITEM_ID = Config.RB_HERO_REWARD_ITEM_ID;
private int ITEM_COUNT = Config.RB_HERO_REWARD_ITEM_COUNT;
private long HERO_TIME = Config.RB_HERO_TIME_HERO;
public RaidBossAddHero(int questId, String name, String descr)
{
super(questId, name, descr);
addKillId(BOSS_ID);
}
@ Override
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)
{
Announcements.getInstance().announceToAll("Хиро РБ был только что убит! Следующий респаун через 24 часа!");
if(Config.RB_HERO_REWARD_PARTY)
{
if(killer.getParty() != null)
{
for(L2PcInstance member : killer.getParty().getPartyMembers())
{
member.addItem("ADD PARTY ITEM", ITEM_ID, ITEM_COUNT, member, false);
updateDatabase(member);
member.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", ITEM_ID, ITEM_COUNT, killer, false);
updateDatabase(killer);
killer.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", ITEM_ID, ITEM_COUNT, killer, false);
updateDatabase(killer);
killer.sendMessage("Вы получили награду за РБ!");
}
return null;
}
private void updateDatabase(L2PcInstance player)
{
Connection con = null;
try
{
if(player == null)
return;
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement stmt = con.prepareStatement("REPLACE INTO hero_custom_data (obj_Id, char_name, hero, hero_end_date) VALUES (?,?,?,?)");
stmt.setInt(1, player.getObjectId());
stmt.setString(2, player.getName());
stmt.setInt(3, 1);
stmt.setLong(4, System.currentTimeMillis() + (60000 * Config.RB_HERO_TIME_HERO));
stmt.execute();
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
_log.log(Level.SEVERE, "Error: could not update database: ", e);
}
finally
{
try {con.close();} catch(Exception e) {e.printStackTrace();}
}
}
}
Добавить строки в Config.java:
// Хиро РБ
public static int RB_HERO_NPC_ID;
public static int RB_HERO_REWARD_ITEM_ID;
public static int RB_HERO_REWARD_ITEM_COUNT;
public static boolean RB_HERO_REWARD_PARTY;
public static long RB_HERO_TIME_HERO;
// Хиро РБ
RB_HERO_NPC_ID = Integer.parseInt(TPAM.getProperty("RbHeroNpcId", "0"));
RB_HERO_REWARD_ITEM_ID = Integer.parseInt(TPAM.getProperty("RbHeroRewardItemId", "57"));
RB_HERO_REWARD_ITEM_COUNT = Integer.parseInt(TPAM.getProperty("RbHeroRewardItemCount", "1"));
RB_HERO_REWARD_PARTY = Boolean.parseBoolean(TPAM.getProperty("RbHeroRewardParty", "False"));
RB_HERO_TIME_HERO = Long.parseLong(TPAM.getProperty("RbHeroTimeHero", "615"));
И в зависимости от того, в какой блок Config.java ты скопировал строки, написанные выше, прописать в нужный cfg/properties файл (не знаю, как там на пв софт):
# ===== ХИРО РБ ==== #
# ID Босса за которое будет награждение?
RbHeroNpcId = 0
# ID Предмета за убийство босса?
RbHeroRewardItemId = 57
# Количество предметов за убийство боссов?
RbHeroRewardItemCount = 1
# Выдавать всему пати? Или игроку?
# False - выдавать одному игроку.
RbHeroRewardParty = True
# На сколько выдавать геройство за убийство босса?
# Указывать время в минутах!
RbHeroTimeHero = 1
Автор скрипта: Tpam
Автор шары: kick
Найдено на форуме l2local