Зачем парсеры? Зачем вручную дропать айтемы? Вы совсем
ебсошли с ума? Обычный обработчик, который добавит дроп всему существующему спауну при старте сервера:
Код:
@Override public void onLoad() {
List<L2NpcTemplate> templates = new ArrayList<>();
for(L2Spawn spawn : SpawnTable.getInstance().getSpawnTable()) {
if(templates.contains(spawn.getTemplate()))
continue;
spawn.getTemplate().getDropData().addDrop(new L2DropData(5027, 1, 1, L2Drop.MAX_CHANCE, 60));
templates.add(spawn.getTemplate());
}
templates.clear();
}
В данном случае решена проблема шифт-клика.
Добавлено через 50 секунд
Цитата:
Сообщение от Xample
Мне тут посоветовали на другом форуме сделать так:
Свернуть ↑
Код:
package events.CoLDrop;
import l2r.commons.util.Rnd;
import l2r.gameserver.Config;
import l2r.gameserver.listener.actor.OnDeathListener;
import l2r.gameserver.model.Creature;
import l2r.gameserver.model.actor.listener.CharListenerList;
import l2r.gameserver.model.instances.MonsterInstance;
import l2r.gameserver.model.instances.NpcInstance;
import l2r.gameserver.model.instances.RaidBossInstance;
import l2r.gameserver.scripts.Functions;
import l2r.gameserver.scripts.ScriptFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CoLDrop extends Functions implements ScriptFile, OnDeathListener
{
public static boolean SimpleCheckDropWithMonster(Creature mob, Creature killer)
{
return mob != null && mob.isMonster() && killer != null && killer.getPlayer() != null && killer.getLevel() - mob.getLevel() < 9;
}
private static final Logger _log = LoggerFactory.getLogger(CoLDrop.class);
protected static int CoL = 6673;//Вписать ID CoL
protected static int min = 1;//Вписать минимум
protected static int max = 3;//Вписать максимум
@Override
public void onLoad()
{
CharListenerList.addGlobal(this);
_log.info("Loaded Event: CoLDrop [state: activated]");
}
@Override
public void onReload()
{
//dummy
}
@Override
public void onShutdown()
{
//dummy
}
@Override
public void onDeath(Creature cha, Creature killer)
{
int count = Rnd.get(min,max);
if (SimpleCheckDropWithMonster(cha, killer))
{
if(cha.getLevel() >= 60)
{
if (Rnd.chance(100))//Шанс
{
((NpcInstance) cha).dropItem(killer.getPlayer(), CoL, count);
((RaidBossInstance) cha).dropItem(killer.getPlayer(), CoL, count);
}
}
}
}
}
Свернуть ↑Развернуть ↓
|
У Вас будет вылетать Class Cast Exception в таком коде