На коленочке сделал скрипт для инстов. Идея такая: убиваем моба -> режется стат ласт босу, и спавнится пак мобов
Все работает кроме спавна.
private static final String BP = "[firstRoom29]";
Спавн есть, <spawn name="[kartia_first_room_29]" event_name="[firstRoom29]">
Проблема в том, что когда убиваешь РБ происходит спавн мобов, но происходит он вне зоны (в этой же локе, но реальный мир) а не в текущей зоне где игроки
Как реализовать спавн внутри зоны, мб кто-то ткнет носом в пример или есть готовый ответ
Code:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package npc.model;
import l2.gameserver.instancemanager.SpawnManager;
import l2.gameserver.instancemanager.ReflectionManager;
import l2.gameserver.model.Creature;
import l2.gameserver.model.instances.DoorInstance;
import l2.gameserver.model.instances.MonsterInstance;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.instances.ReflectionBossInstance;
import l2.gameserver.stats.Stats;
import l2.gameserver.stats.funcs.FuncSet;
import l2.gameserver.templates.npc.NpcTemplate;
import java.util.Iterator;
public class Kartia29Instance extends MonsterInstance {
private static final String BP = "[firstRoom29]";
private static final String BQ = "[secondRoom29]";
private static final int DOOR_ID_1 = 16180032;
private static final int DOOR_ID_2 = 16180033;
private static final int DOOR_PROTECT_ID_1 = 41009;
private static final int DOOR_PROTECT_ID_2 = 41010;
public Kartia29Instance(int var1, NpcTemplate var2) {
super(var1, var2);
}
protected void onDeath(Creature var1) {
super.onDeath(var1);
if (this.getReflection() == var1.getReflection() && this.getReflection() != ReflectionManager.DEFAULT) {
DoorInstance var2;
switch (this.getNpcId()) {
case DOOR_PROTECT_ID_1:
var2 = this.getReflection().getDoor(DOOR_ID_1);
if (var2 != null) {
SpawnManager.getInstance().spawn(BP);
this.o().addStatFunc(new FuncSet(Stats.MAGIC_DEFENCE, 48, this, (double)this.o().getTemplate().baseMDef * 0.66));
this.o().addStatFunc(new FuncSet(Stats.POWER_DEFENCE, 48, this, (double)this.o().getTemplate().basePDef * 0.66));
var2.openMe();
}
break;
case DOOR_PROTECT_ID_2:
var2 = this.getReflection().getDoor(DOOR_ID_2);
if (var2 != null) {
SpawnManager.getInstance().spawn(BQ);
this.o().addStatFunc(new FuncSet(Stats.POWER_ATTACK, 48, this, (double)this.o().getTemplate().basePAtk * 0.66));
var2.openMe();
}
}
}
}
private NpcInstance o() {
Iterator var1 = this.getReflection().getNpcs().iterator();
NpcInstance var2;
do {
if (!var1.hasNext()) {
return null;
}
var2 = (NpcInstance)var1.next();
} while(!(var2 instanceof ReflectionBossInstance));
return var2;
}
}
Все работает кроме спавна.
private static final String BP = "[firstRoom29]";
Спавн есть, <spawn name="[kartia_first_room_29]" event_name="[firstRoom29]">
Проблема в том, что когда убиваешь РБ происходит спавн мобов, но происходит он вне зоны (в этой же локе, но реальный мир) а не в текущей зоне где игроки
Как реализовать спавн внутри зоны, мб кто-то ткнет носом в пример или есть готовый ответ