Небольшая хелпа со скриптами

BlueBarsik

Heir
Customer
На коленочке сделал скрипт для инстов. Идея такая: убиваем моба -> режется стат ласт босу, и спавнится пак мобов

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]">

Проблема в том, что когда убиваешь РБ происходит спавн мобов, но происходит он вне зоны (в этой же локе, но реальный мир) а не в текущей зоне где игроки

Как реализовать спавн внутри зоны, мб кто-то ткнет носом в пример или есть готовый ответ
 
Может кому пригодится:

В коде:
Code:
this.getReflection().spawnByGroup(BP);

В xml инсты: <group name="[firstRoom29]" spawned="false"/> В <spawns></spawns>

Спавн лист: <spawn name="[kartia_first_room_29]" event_name="[firstRoom29]">
 
Back
Top