Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Ветка 7 семи печатей (https://forum.zone-game.info/showthread.php?t=29087)

sakson 26.05.2013 21:13

Ветка 7 семи печатей
 
Здравствуйте!
Помогите решить данные 3 ошибки.Их было всего 7,своими силами исправил только 4,а вот остальные 3 не получается,что только не пробовал.
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 152)
        ThreadPoolManager.schedule(new MovieStartTask(player,24),7000L); //playe                       
r.showQuestMovie(24)
                         
The method schedule(Q10294_SevenSignToTheMonastery.MovieStartTask, long) is unde
fined for the type ThreadPoolManager
----------
2. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 370)
        L2Npc npcTag = player.getKnownList().getKnownNpc(AbyssalSaintessElcadia2
);
                           
The method getKnownNpc(int) is undefined for the type PcKnownList
----------
3. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 373)
        npcTag.teleToLocationDelayed(x, y, z, 0, false);
                 
The method teleToLocationDelayed(int, int, int, int, boolean) is undefined for t
he type L2Npc
----------
3 problems (3 errors)The method schedule(quests.Q10294_SevenSignToTheMonastery.Q
10294_SevenSignToTheMonastery.MovieStartTask, long) is undefined for the type l2
.brick.gameserver.ThreadPoolManager
The method getKnownNpc(int) is undefined for the type l2.brick.gameserver.model.
actor.knownlist.PcKnownList
The method teleToLocationDelayed(int, int, int, int, boolean) is undefined for t
he type l2.brick.gameserver.model.actor.L2Npc
Failed executing script: D:\Server\game\data\scripts\quests\Q10294_SevenSignToTh
eMonastery\Q10294_SevenSignToTheMonastery.java. See Q10294_SevenSignToTheMonaste
ry.java.error.log for details.

Красным выделил тот код,в котором сама ошибка
Помогите пожалуйста решить данные ошибки.Буду очень признателен!

Код 1-ой ошибки:
Код:

                                {
                                        ThreadPoolManager.schedule(new MovieStartTask(player,24),7000L); //player.showQuestMovie(24)
                                        st.set("movie", "1");
                                }
                                return null;

Код 2-ой ошибки:
Код:

        }

        private void teleportWithTag(L2PcInstance player, int x, int y, int z) {
                L2Npc npcTag = player.getKnownList().getKnownNpc(AbyssalSaintessElcadia2);
                player.teleToLocation(x, y, z);
                if (npcTag != null)
                        npcTag.teleToLocationDelayed(x, y, z, 0, false);
        }

Код 3-ей ошибки,элемент код 2-го кода.Сама линия,на которую ссылается сервер:
Код:

npcTag.teleToLocationDelayed(x, y, z, 0, false);

KID 27.05.2013 12:02

Re: Ветка 7 семи печатей
 
1. скорее всего у тебя пулменеджер на синглтоне, и там нужно сделать нечто .getInstance().schedule
2. возможно нет функционала по определениею нпц, но поиск объекта там точно есть. возьми его и проверь принадлежность к классу нпц
3. замени на teleToLocation(x, y, z);

sakson 28.05.2013 10:43

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 301586)
1. скорее всего у тебя пулменеджер на синглтоне, и там нужно сделать нечто .getInstance().schedule
2. возможно нет функционала по определениею нпц, но поиск объекта там точно есть. возьми его и проверь принадлежность к классу нпц
3. замени на teleToLocation(x, y, z);

Спасибо тебе добрый человек,счас буду пробовать :)

Добавлено через 1 час 19 минут
Эм.. добавил ".getInstance().",и все ровно ссылается на schedul

Код:

1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 152)
        ThreadPoolManager.getInstance().schedule(new MovieStartTask(player,24),7
000L);                                                               
                                                   
The method schedule(Q10294_SevenSignToTheMonastery.MovieStartTask, long) is unde
fined for the type ThreadPoolManager

Квесты правлю 1 раз,вопросик еще можно вам?
Можно поинтересоваться как сделать "Функционал по определению НПС"?

KID 28.05.2013 13:22

Re: Ветка 7 семи печатей
 
Скинь код ThreadPoolManager

sakson 28.05.2013 14:09

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302008)
Скинь код ThreadPoolManager

Вот держите:
Код:

public class ThreadPoolManager
{
    private static class SingletonHolder
    {

        protected static final ThreadPoolManager _instance = new ThreadPoolManager();


        private SingletonHolder()
        {
        }
    }

    private class PurgeTask
        implements Runnable
    {

        public void run()
        {
            _effectsScheduledThreadPool.purge();
            _generalScheduledThreadPool.purge();
            _aiScheduledThreadPool.purge();
        }

        final ThreadPoolManager this$0;

        private PurgeTask()
        {
            this$0 = ThreadPoolManager.this;
            super();
        }

    }

    private static class PriorityThreadFactory
        implements ThreadFactory
    {

        public Thread newThread(Runnable r)
        {
            Thread t = new Thread(_group, r);
            t.setName((new StringBuilder()).append(_name).append("-").append(_threadNumber.getAndIncrement()).toString());
            t.setPriority(_prio);
            return t;
        }

        public ThreadGroup getGroup()
        {
            return _group;
        }

        private int _prio;
        private String _name;
        private AtomicInteger _threadNumber;
        private ThreadGroup _group;

        public PriorityThreadFactory(String name, int prio)
        {
            _threadNumber = new AtomicInteger(1);
            _prio = prio;
            _name = name;
            _group = new ThreadGroup(_name);
        }
    }

    private static final class RunnableWrapper
        implements Runnable
    {

        public final void run()
        {
            try
            {
                _r.run();
            }
            catch(Throwable e)
            {
                Thread t = Thread.currentThread();
                Thread.UncaughtExceptionHandler h = t.getUncaughtExceptionHandler();
                if(h != null)
                    h.uncaughtException(t, e);
            }
        }

        private final Runnable _r;

        public RunnableWrapper(Runnable r)
        {
            _r = r;
        }
    }


    public static ThreadPoolManager getInstance()
    {
        return SingletonHolder._instance;
    }

    private ThreadPoolManager()
    {
        _effectsScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECTS, new PriorityThreadFactory("EffectsSTPool", 5));
        _generalScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.THREAD_P_GENERAL, new PriorityThreadFactory("GeneralSTPool", 5));
        _ioPacketsThreadPool = new ThreadPoolExecutor(Config.IO_PACKET_THREAD_CORE_SIZE, 0x7fffffff, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("I/O Packet Pool", 6));
        _generalPacketsThreadPool = new ThreadPoolExecutor(Config.GENERAL_PACKET_THREAD_CORE_SIZE, Config.GENERAL_PACKET_THREAD_CORE_SIZE + 2, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("Normal Packet Pool", 6));
        _generalThreadPool = new ThreadPoolExecutor(Config.GENERAL_THREAD_CORE_SIZE, Config.GENERAL_THREAD_CORE_SIZE + 2, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue(), new PriorityThreadFactory("General Pool", 5));
        _aiScheduledThreadPool = new ScheduledThreadPoolExecutor(Config.AI_MAX_THREAD, new PriorityThreadFactory("AISTPool", 5));
        scheduleGeneralAtFixedRate(new PurgeTask(), 0x927c0L, 0x493e0L);
    }

    public static long validateDelay(long delay)
    {
        if(delay < 0L)
            delay = 0L;
        else
        if(delay > 0x431bde82d7bL)
            delay = 0x431bde82d7bL;
        return delay;
    }

    public ScheduledFuture scheduleEffect(Runnable r, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            return _effectsScheduledThreadPool.schedule(new RunnableWrapper(r), delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    public ScheduledFuture scheduleEffectAtFixedRate(Runnable r, long initial, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            initial = validateDelay(initial);
            return _effectsScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(r), initial, delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    /**
    * @deprecated Method removeEffect is deprecated
    */

    @Deprecated
    public boolean removeEffect(RunnableScheduledFuture r)
    {
        return _effectsScheduledThreadPool.remove(r);
    }

    public ScheduledFuture scheduleGeneral(Runnable r, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            return _generalScheduledThreadPool.schedule(new RunnableWrapper(r), delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    public ScheduledFuture scheduleGeneralAtFixedRate(Runnable r, long initial, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            initial = validateDelay(initial);
            return _generalScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(r), initial, delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    /**
    * @deprecated Method removeGeneral is deprecated
    */

    @Deprecated
    public boolean removeGeneral(RunnableScheduledFuture r)
    {
        return _generalScheduledThreadPool.remove(r);
    }

    public ScheduledFuture scheduleAi(Runnable r, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            return _aiScheduledThreadPool.schedule(new RunnableWrapper(r), delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    public ScheduledFuture scheduleAiAtFixedRate(Runnable r, long initial, long delay)
    {
        try
        {
            delay = validateDelay(delay);
            initial = validateDelay(initial);
            return _aiScheduledThreadPool.scheduleAtFixedRate(new RunnableWrapper(r), initial, delay, TimeUnit.MILLISECONDS);
        }
        catch(RejectedExecutionException e)
        {
            return null;
        }
    }

    public void executePacket(Runnable pkt)
    {
        _generalPacketsThreadPool.execute(pkt);
    }

    public void executeCommunityPacket(Runnable r)
    {
        _generalPacketsThreadPool.execute(r);
    }

    public void executeIOPacket(Runnable pkt)
    {
        _ioPacketsThreadPool.execute(pkt);
    }

    public void executeTask(Runnable r)
    {
        _generalThreadPool.execute(r);
    }

    public void executeAi(Runnable r)
    {
        _aiScheduledThreadPool.execute(new RunnableWrapper(r));
    }

    public String[] getStats()
    {
        return (new String[] {
            "STP:", " + Effects:", (new StringBuilder()).append(" |- ActiveThreads:  ").append(_effectsScheduledThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_effectsScheduledThreadPool.getCorePoolSize()).toString(), (new StringBuilder()).append(" |- PoolSize:        ").append(_effectsScheduledThreadPool.getPoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_effectsScheduledThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- CompletedTasks:  ").append(_effectsScheduledThreadPool.getCompletedTaskCount()).toString(), (new StringBuilder()).append(" |- ScheduledTasks:  ").append(_effectsScheduledThreadPool.getTaskCount() - _effectsScheduledThreadPool.getCompletedTaskCount()).toString(), " | -------", " + General:",
            (new StringBuilder()).append(" |- ActiveThreads:  ").append(_generalScheduledThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_generalScheduledThreadPool.getCorePoolSize()).toString(), (new StringBuilder()).append(" |- PoolSize:        ").append(_generalScheduledThreadPool.getPoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_generalScheduledThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- CompletedTasks:  ").append(_generalScheduledThreadPool.getCompletedTaskCount()).toString(), (new StringBuilder()).append(" |- ScheduledTasks:  ").append(_generalScheduledThreadPool.getTaskCount() - _generalScheduledThreadPool.getCompletedTaskCount()).toString(), " | -------", " + AI:", (new StringBuilder()).append(" |- ActiveThreads:  ").append(_aiScheduledThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_aiScheduledThreadPool.getCorePoolSize()).toString(),
            (new StringBuilder()).append(" |- PoolSize:        ").append(_aiScheduledThreadPool.getPoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_aiScheduledThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- CompletedTasks:  ").append(_aiScheduledThreadPool.getCompletedTaskCount()).toString(), (new StringBuilder()).append(" |- ScheduledTasks:  ").append(_aiScheduledThreadPool.getTaskCount() - _aiScheduledThreadPool.getCompletedTaskCount()).toString(), "TP:", " + Packets:", (new StringBuilder()).append(" |- ActiveThreads:  ").append(_generalPacketsThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_generalPacketsThreadPool.getCorePoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_generalPacketsThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- LargestPoolSize: ").append(_generalPacketsThreadPool.getLargestPoolSize()).toString(),
            (new StringBuilder()).append(" |- PoolSize:        ").append(_generalPacketsThreadPool.getPoolSize()).toString(), (new StringBuilder()).append(" |- CompletedTasks:  ").append(_generalPacketsThreadPool.getCompletedTaskCount()).toString(), (new StringBuilder()).append(" |- QueuedTasks:    ").append(_generalPacketsThreadPool.getQueue().size()).toString(), " | -------", " + I/O Packets:", (new StringBuilder()).append(" |- ActiveThreads:  ").append(_ioPacketsThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_ioPacketsThreadPool.getCorePoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_ioPacketsThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- LargestPoolSize: ").append(_ioPacketsThreadPool.getLargestPoolSize()).toString(), (new StringBuilder()).append(" |- PoolSize:        ").append(_ioPacketsThreadPool.getPoolSize()).toString(),
            (new StringBuilder()).append(" |- CompletedTasks:  ").append(_ioPacketsThreadPool.getCompletedTaskCount()).toString(), (new StringBuilder()).append(" |- QueuedTasks:    ").append(_ioPacketsThreadPool.getQueue().size()).toString(), " | -------", " + General Tasks:", (new StringBuilder()).append(" |- ActiveThreads:  ").append(_generalThreadPool.getActiveCount()).toString(), (new StringBuilder()).append(" |- getCorePoolSize: ").append(_generalThreadPool.getCorePoolSize()).toString(), (new StringBuilder()).append(" |- MaximumPoolSize: ").append(_generalThreadPool.getMaximumPoolSize()).toString(), (new StringBuilder()).append(" |- LargestPoolSize: ").append(_generalThreadPool.getLargestPoolSize()).toString(), (new StringBuilder()).append(" |- PoolSize:        ").append(_generalThreadPool.getPoolSize()).toString(), (new StringBuilder()).append(" |- CompletedTasks:  ").append(_generalThreadPool.getCompletedTaskCount()).toString(),
            (new StringBuilder()).append(" |- QueuedTasks:    ").append(_generalThreadPool.getQueue().size()).toString(), " | -------", " + Javolution stats:", (new StringBuilder()).append(" |- FastList:        ").append(FastList.report()).toString(), (new StringBuilder()).append(" |- FastMap:        ").append(FastMap.report()).toString(), (new StringBuilder()).append(" |- FastSet:        ").append(FastSet.report()).toString(), " | -------"
        });
    }

    public void shutdown()
    {
        _shutdown = true;
        try
        {
            _effectsScheduledThreadPool.awaitTermination(1L, TimeUnit.SECONDS);
            _generalScheduledThreadPool.awaitTermination(1L, TimeUnit.SECONDS);
            _generalPacketsThreadPool.awaitTermination(1L, TimeUnit.SECONDS);
            _ioPacketsThreadPool.awaitTermination(1L, TimeUnit.SECONDS);
            _generalThreadPool.awaitTermination(1L, TimeUnit.SECONDS);
            _effectsScheduledThreadPool.shutdown();
            _generalScheduledThreadPool.shutdown();
            _generalPacketsThreadPool.shutdown();
            _ioPacketsThreadPool.shutdown();
            _generalThreadPool.shutdown();
            _log.info("All ThreadPools are now stopped");
        }
        catch(InterruptedException e)
        {
            _log.log(Level.WARNING, "", e);
        }
    }

    public boolean isShutdown()
    {
        return _shutdown;
    }

    public void purge()
    {
        _effectsScheduledThreadPool.purge();
        _generalScheduledThreadPool.purge();
        _aiScheduledThreadPool.purge();
        _ioPacketsThreadPool.purge();
        _generalPacketsThreadPool.purge();
        _generalThreadPool.purge();
    }

    public String getPacketStats()
    {
        StringBuilder sb = new StringBuilder(1000);
        ThreadFactory tf = _generalPacketsThreadPool.getThreadFactory();
        if(tf instanceof PriorityThreadFactory)
        {
            PriorityThreadFactory ptf = (PriorityThreadFactory)tf;
            int count = ptf.getGroup().activeCount();
            Thread threads[] = new Thread[count + 2];
            ptf.getGroup().enumerate(threads);
            StringUtil.append(sb, new String[] {
                "General Packet Thread Pool:\r\nTasks in the queue: ", String.valueOf(_generalPacketsThreadPool.getQueue().size()), "\r\nShowing threads stack trace:\r\nThere should be ", String.valueOf(count), " Threads\r\n"
            });
            Thread arr$[] = threads;
            int len$ = arr$.length;
            for(int i$ = 0; i$ < len$; i$++)
            {
                Thread t = arr$[i$];
                if(t == null)
                    continue;
                StringUtil.append(sb, new String[] {
                    t.getName(), "\r\n"
                });
                StackTraceElement arr$[] = t.getStackTrace();
                int len$ = arr$.length;
                for(int i$ = 0; i$ < len$; i$++)
                {
                    StackTraceElement ste = arr$[i$];
                    StringUtil.append(sb, new String[] {
                        ste.toString(), "\r\n"
                    });
                }

            }

        }
        sb.append("Packet Tp stack traces printed.\r\n");
        return sb.toString();
    }

    public String getIOPacketStats()
    {
        StringBuilder sb = new StringBuilder(1000);
        ThreadFactory tf = _ioPacketsThreadPool.getThreadFactory();
        if(tf instanceof PriorityThreadFactory)
        {
            PriorityThreadFactory ptf = (PriorityThreadFactory)tf;
            int count = ptf.getGroup().activeCount();
            Thread threads[] = new Thread[count + 2];
            ptf.getGroup().enumerate(threads);
            StringUtil.append(sb, new String[] {
                "I/O Packet Thread Pool:\r\nTasks in the queue: ", String.valueOf(_ioPacketsThreadPool.getQueue().size()), "\r\nShowing threads stack trace:\r\nThere should be ", String.valueOf(count), " Threads\r\n"
            });
            Thread arr$[] = threads;
            int len$ = arr$.length;
            for(int i$ = 0; i$ < len$; i$++)
            {
                Thread t = arr$[i$];
                if(t == null)
                    continue;
                StringUtil.append(sb, new String[] {
                    t.getName(), "\r\n"
                });
                StackTraceElement arr$[] = t.getStackTrace();
                int len$ = arr$.length;
                for(int i$ = 0; i$ < len$; i$++)
                {
                    StackTraceElement ste = arr$[i$];
                    StringUtil.append(sb, new String[] {
                        ste.toString(), "\r\n"
                    });
                }

            }

        }
        sb.append("Packet Tp stack traces printed.\r\n");
        return sb.toString();
    }

    public String getGeneralStats()
    {
        StringBuilder sb = new StringBuilder(1000);
        ThreadFactory tf = _generalThreadPool.getThreadFactory();
        if(tf instanceof PriorityThreadFactory)
        {
            PriorityThreadFactory ptf = (PriorityThreadFactory)tf;
            int count = ptf.getGroup().activeCount();
            Thread threads[] = new Thread[count + 2];
            ptf.getGroup().enumerate(threads);
            StringUtil.append(sb, new String[] {
                "General Thread Pool:\r\nTasks in the queue: ", String.valueOf(_generalThreadPool.getQueue().size()), "\r\nShowing threads stack trace:\r\nThere should be ", String.valueOf(count), " Threads\r\n"
            });
            Thread arr$[] = threads;
            int len$ = arr$.length;
            for(int i$ = 0; i$ < len$; i$++)
            {
                Thread t = arr$[i$];
                if(t == null)
                    continue;
                StringUtil.append(sb, new String[] {
                    t.getName(), "\r\n"
                });
                StackTraceElement arr$[] = t.getStackTrace();
                int len$ = arr$.length;
                for(int i$ = 0; i$ < len$; i$++)
                {
                    StackTraceElement ste = arr$[i$];
                    StringUtil.append(sb, new String[] {
                        ste.toString(), "\r\n"
                    });
                }

            }

        }
        sb.append("Packet Tp stack traces printed.\r\n");
        return sb.toString();
    }


    protected static final Logger _log = Logger.getLogger(l2/brick/gameserver/ThreadPoolManager.getName());
    private ScheduledThreadPoolExecutor _effectsScheduledThreadPool;
    private ScheduledThreadPoolExecutor _generalScheduledThreadPool;
    private ScheduledThreadPoolExecutor _aiScheduledThreadPool;
    private ThreadPoolExecutor _generalPacketsThreadPool;
    private ThreadPoolExecutor _ioPacketsThreadPool;
    private ThreadPoolExecutor _generalThreadPool;
    private static final long MAX_DELAY = 0x431bde82d7bL;
    private boolean _shutdown;




}


KID 28.05.2013 14:14

Re: Ветка 7 семи печатей
 
schedule смени на scheduleGeneral

sakson 28.05.2013 14:19

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302026)
schedule смени на scheduleGeneral

Огромное тебе спасибО!!!!
Все вроде ошибочка исчезла
Код:

getInstance().scheduleGeneral
Добавлено через 9 минут
Цитата:

Сообщение от KID (Сообщение 301586)
1. скорее всего у тебя пулменеджер на синглтоне, и там нужно сделать нечто .getInstance().schedule
2. возможно нет функционала по определениею нпц, но поиск объекта там точно есть. возьми его и проверь принадлежность к классу нпц
3. замени на teleToLocation(x, y, z);


А как сделать принадлежность к классу НПС?Подскажи пожалуйста.

KID 28.05.2013 15:59

Re: Ветка 7 семи печатей
 
Скинь код l2.brick.gameserver.model.actor.knownlist.PcKnownL ist

sakson 28.05.2013 16:02

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302061)
Скинь код l2.brick.gameserver.model.actor.knownlist.PcKnownL ist

PcKnownList
Код:

:
public class PcKnownList extends PlayableKnownList
{

    public PcKnownList(L2PcInstance activeChar)
    {
        super(activeChar);
    }

    public boolean addKnownObject(L2Object object)
    {
        if(!super.addKnownObject(object))
            return false;
        if(object.getPoly().isMorphed() && object.getPoly().getPolyType().equals("item"))
        {
            getActiveChar().sendPacket(new SpawnItem(object));
        } else
        {
            object.sendInfo(getActiveChar());
            if(object instanceof L2Character)
            {
                L2Character obj = (L2Character)object;
                if(obj.hasAI())
                    obj.getAI().describeStateToPlayer(getActiveChar());
            }
        }
        return true;
    }

    protected boolean removeKnownObject(L2Object object, boolean forget)
    {
        if(!super.removeKnownObject(object, forget))
            return false;
        if(object instanceof L2AirShipInstance)
        {
            if(((L2AirShipInstance)object).getCaptainId() != 0 && ((L2AirShipInstance)object).getCaptainId() != getActiveChar().getObjectId())
                getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance)object).getCaptainId()));
            if(((L2AirShipInstance)object).getHelmObjectId() != 0)
                getActiveChar().sendPacket(new DeleteObject(((L2AirShipInstance)object).getHelmObjectId()));
        }
        getActiveChar().sendPacket(new DeleteObject(object));
        if(Config.CHECK_KNOWN && (object instanceof L2Npc) && getActiveChar().isGM())
            getActiveChar().sendMessage((new StringBuilder()).append("Removed NPC: ").append(((L2Npc)object).getName()).toString());
        return true;
    }

    public final L2PcInstance getActiveChar()
    {
        return (L2PcInstance)super.getActiveChar();
    }

    public int getDistanceToForgetObject(L2Object object)
    {
        if(object instanceof L2Vehicle)
            return 10000;
        int knownlistSize = getKnownObjects().size();
        if(knownlistSize <= 25)
            return 4000;
        if(knownlistSize <= 35)
            return 3500;
        return knownlistSize > 70 ? 2310 : 2910;
    }

    public int getDistanceToWatchObject(L2Object object)
    {
        if(object instanceof L2Vehicle)
            return 8000;
        int knownlistSize = getKnownObjects().size();
        if(knownlistSize <= 25)
            return 3400;
        if(knownlistSize <= 35)
            return 2900;
        return knownlistSize > 70 ? 1700 : 2300;
    }

    public volatile L2Playable getActiveChar()
    {
        return getActiveChar();
    }

    public volatile L2Character getActiveChar()
    {
        return getActiveChar();
    }
}


KID 28.05.2013 16:10

Re: Ветка 7 семи печатей
 
и еще PlayableKnownList

sakson 28.05.2013 16:13

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302065)
и еще PlayableKnownList

PlayableKnownList
Код:

public class PlayableKnownList extends CharKnownList
{

    public PlayableKnownList(L2Playable activeChar)
    {
        super(activeChar);
    }

    public L2Playable getActiveChar()
    {
        return (L2Playable)super.getActiveChar();
    }

    public volatile L2Character getActiveChar()
    {
        return getActiveChar();
    }
}


KID 28.05.2013 16:23

Re: Ветка 7 семи печатей
 
Эх, пробуй заменить на
Код:

L2Npc npcTag = (L2Npc)player.getKnownList().getKnownObject(AbyssalSaintessElcadia2);

sakson 28.05.2013 16:28

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302071)
Эх, пробуй заменить на
Код:

L2Npc npcTag = (L2Npc)player.getKnownList().getKnownObject(AbyssalSaintessElcadia2);

Странно..
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 370)
        L2Npc npcTag = (L2Npc)player.getKnownList().getKnownObject(Ab
ssElcadia2);
                                                   
The method getKnownObject(int) is undefined for the type PcKnownList


KID 28.05.2013 16:31

Re: Ветка 7 семи печатей
 
скинь библиотеку ядра

sakson 28.05.2013 17:06

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302078)
скинь библиотеку ядра

Эм..в какой папке она должна находится?

KID 28.05.2013 17:13

Re: Ветка 7 семи печатей
 
это gameserver.jar или как-то так, он будет много весить, по отношению к другим.
если не найдешь - перечисли все библиотеки, объемом больше 3мб

sakson 28.05.2013 21:26

Re: Ветка 7 семи печатей
 
Я так понял,что библиотека ядра находится в самой сборке,в папке gameserver/libs ?
Если да,то через какой обменник можно ее залить суда?

uzola 28.05.2013 21:45

Re: Ветка 7 семи печатей
 
Залейте на rghost.
Странные у вас вопросы.

sakson 28.05.2013 22:29

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от uzola (Сообщение 302135)
Залейте на rghost.
Странные у вас вопросы.

Дружу с интернетом не очень,и очень редко захожу в него
А так спасибо

Добавлено через 4 минуты
Цитата:

Сообщение от KID (Сообщение 302100)
это gameserver.jar или как-то так, он будет много весить, по отношению к другим.
если не найдешь - перечисли все библиотеки, объемом больше 3мб

Вот держите http://www.fayloobmennik.net/2892047

KID 29.05.2013 00:23

Re: Ветка 7 семи печатей
 
Код:

L2Npc npc = (L2Npc) pc.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);

sakson 29.05.2013 09:08

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302160)
Код:

L2Npc npc = (L2Npc) pc.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);

Вот черт...
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 370)
        L2Npc npc = (L2Npc) pc.getKnownList().getKnownObjects().get(AbyssalSaint
essElcadia2);
                           
pc cannot be resolved
----------
2. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 372)
        if (npcTag != null)
           
npcTag cannot be resolved to a variable
----------
3. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 373)
        npcTag.teleToLocation(x, y, z);
       
npcTag cannot be resolved
----------


[STIGMATED] 29.05.2013 09:10

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от sakson (Сообщение 302186)
Вот черт...
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 370)
        L2Npc npc = (L2Npc) pc.getKnownList().getKnownObjects().get(AbyssalSaint
essElcadia2);
                           
pc cannot be resolved
----------
2. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 372)
        if (npcTag != null)
           
npcTag cannot be resolved to a variable
----------
3. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 373)
        npcTag.teleToLocation(x, y, z);
       
npcTag cannot be resolved
----------


Вам бы подучить java, не объявлены переменные pc(Player), npcTag(NPC).

sakson 29.05.2013 09:22

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от [STIGMATED] (Сообщение 302188)
Вам бы подучить java, не объявлены переменные pc(Player), npcTag(NPC).

Надо бы,не спорю.(не сокразм)
Вы написали "pc(Player)",когда стоит переменная "pc(Player)",так тоже ошибку выдает.Поставил "Player" вроде заработало,а вот "npcTag(NPC)" теперь ссылается на переменную (NPС) что в в первой ошибки,что в во второй.
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 372)
        if (npcTag(NPC) != null)
                 
NPC cannot be resolved to a variable
----------
2. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 373)
        npcTag(NPC).teleToLocation(x, y, z);
             
NPC cannot be resolved to a variable
----------
2 problems (2 errors)NPC cannot be resolved to a variable
NPC cannot be resolved to a variable
Failed executing script: D:\Server\game\data\scripts\quests\Q10294_SevenSignToTh
eMonastery\Q10294_SevenSignToTheMonastery.java. See Q10294_SevenSignToTheMonaste
ry.java.error.log for details.


[STIGMATED] 29.05.2013 09:24

Re: Ветка 7 семи печатей
 
Во блин, не принимайте всё буквально :)

В скобках я написал объекты, на которые должны быть переменные, я не знаю как точно они у вас названы в вашей сборке.

sakson 29.05.2013 09:25

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от [STIGMATED] (Сообщение 302192)
Во блин, не принимайте всё буквально :)

В скобках я написал объекты, на которые должны быть переменные, я не знаю как точно они у вас названы в вашей сборке.

А я то думал:)
Спасибо:)
Щас гляну в других квестах.

[STIGMATED] 29.05.2013 09:28

Re: Ветка 7 семи печатей
 
Я не знаю, как у вас, но должно быть что-то похожее на Player pc = bla.bla.bla.

KID 29.05.2013 09:35

Re: Ветка 7 семи печатей
 
Код:

L2Npc npcTag  = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
это жесть, включите хотя-бы начальную логику!!

sakson 29.05.2013 09:47

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302198)
Код:

L2Npc npcTag  = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
это жесть, включите хотя-бы начальную логику!!

Включил,и поправил уже давно.

Добавлено через 1 час 7 минут
Пиндос...
Все перерыл,не нашел нечего похожего
Вот только "if (player.getPet() != null)"

Ребят где можно глянуть в ядре ,правильное написание это переменной?
Код:

(npcTag != null)

KID 30.05.2013 11:53

Re: Ветка 7 семи печатей
 
Не ну ты травишь, читай книжки, стать и прочее, с такими познаниями делать сервер не надо.
Покажи последнюю актуальную ошибку

sakson 30.05.2013 13:52

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302422)
Не ну ты травишь, читай книжки, стать и прочее, с такими познаниями делать сервер не надо.
Покажи последнюю актуальную ошибку

Информации много,сразу все не перечитаешь...
Всегда что то в первый раз
Код:

----------
1. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 372)
        if (npcTag != null)
            ^^^
npcTag cannot be resolved to a variable
----------
2. ERROR in \Q10294_SevenSignToTheMonastery.java (at line 373)
        npcTag.teleToLocation(x, y, z);
        ^^^^
npcTag cannot be resolved
----------


KID 30.05.2013 16:05

Re: Ветка 7 семи печатей
 
тьма и ужас. скинь этот квест :\

sakson 30.05.2013 18:27

Re: Ветка 7 семи печатей
 
http://www.fayloobmennik.net/2897802

KID 30.05.2013 23:22

Re: Ветка 7 семи печатей
 
Код:

        private void teleportWithTag(L2PcInstance player, int x, int y, int z) {
                L2Npc npc = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
                player.teleToLocation(x, y, z);
                if (npcTag != null)
                        npcTag.teleToLocation(x, y, z);
        }

сменить на
Код:

        private void teleportWithTag(L2PcInstance player, int x, int y, int z) {
                L2Npc npc = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
                player.teleToLocation(x, y, z);
                if (npc != null)
                        npc.teleToLocation(x, y, z);
        }


sakson 31.05.2013 13:24

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 302560)
Код:

        private void teleportWithTag(L2PcInstance player, int x, int y, int z) {
                L2Npc npc = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
                player.teleToLocation(x, y, z);
                if (npcTag != null)
                        npcTag.teleToLocation(x, y, z);
        }

сменить на
Код:

        private void teleportWithTag(L2PcInstance player, int x, int y, int z) {
                L2Npc npc = (L2Npc) player.getKnownList().getKnownObjects().get(AbyssalSaintessElcadia2);
                player.teleToLocation(x, y, z);
                if (npc != null)
                        npc.teleToLocation(x, y, z);
        }


Спасибо вроде кв работает

KID 31.05.2013 14:11

Re: Ветка 7 семи печатей
 
Читай больше, ты сталкиваешься со слишком простыми ошибками

sakson 05.06.2013 08:42

Re: Ветка 7 семи печатей
 
Help!!
Не получается написать правельную переменную
Код:

----------
3. ERROR in \Q10295_SevenSignSolinaTomb.java (at line 218)
        for (L2DoorInstance d : world.getDoors())
                                      ^^^^^^^^
The method getDoors() is undefined for the type InstanceManager.InstanceWorld

Вот сам код
Код:

private void openEnterDoors(L2PcInstance player)
        {
               
                InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);
                for (L2DoorInstance d : world.getDoors())
                {
                        for (int i = 0;i < enterDoors.length; i++)
                        {
                                if (d.getDoorId() == enterDoors[i])
                                        d.openMe();
                        }
                }
        }

Помогите пожалуйста
Вот если кому нужно gameserver\model\actor\instance\L2DoorIns tance
http://www.fayloobmennik.net/2900705

Буду очень признателен вам!

KID 05.06.2013 14:10

Re: Ветка 7 семи печатей
 
Скинь InstanceWorld.java

sakson 06.06.2013 15:38

Re: Ветка 7 семи печатей
 
Цитата:

Сообщение от KID (Сообщение 303797)
Скинь InstanceWorld.java

Интернет не работал.
Есть только InstanceManager$InstanceWorld
Код:

package l2.brick.gameserver.instancemanager;

import javolution.util.FastList;

public static class InstanceManager$InstanceWorld
{

    public boolean isLocked;
    public int instanceId;
    public int templateId;
    public FastList allowed;
    public volatile int status;

    public InstanceManager$InstanceWorld()
    {
        isLocked = false;
        templateId = -1;
        allowed = new FastList();
    }
}

И на всякий случай InstanceManager
Код:

// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov  Date: 06.06.2013 20:37:49
// Home Page: http://members.fortunecity.com/neshkov/dj.html  http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3)
// Source File Name:  InstanceManager.java

package l2.brick.gameserver.instancemanager;

import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javolution.io.UTF8StreamReader;
import javolution.text.CharArray;
import javolution.util.FastList;
import javolution.util.FastMap;
import javolution.xml.stream.XMLStreamException;
import javolution.xml.stream.XMLStreamReaderImpl;
import l2.brick.Config;
import l2.brick.L2DatabaseFactory;
import l2.brick.gameserver.model.actor.instance.L2PcInstance;
import l2.brick.gameserver.model.entity.Instance;

public class InstanceManager
{
    private static class SingletonHolder
    {

        protected static final InstanceManager _instance = new InstanceManager();


        private SingletonHolder()
        {
        }
    }

    public static class InstanceWorld
    {

        public boolean isLocked;
        public int instanceId;
        public int templateId;
        public FastList allowed;
        public volatile int status;

        public InstanceWorld()
        {
            isLocked = false;
            templateId = -1;
            allowed = new FastList();
        }
    }


    public long getInstanceTime(int playerObjId, int id)
    {
        if(!_playerInstanceTimes.containsKey(Integer.valueOf(playerObjId)))
            restoreInstanceTimes(playerObjId);
        if(((Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId))).containsKey(Integer.valueOf(id)))
            return ((Long)((Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId))).get(Integer.valueOf(id))).longValue();
        else
            return -1L;
    }

    public Map getAllInstanceTimes(int playerObjId)
    {
        if(!_playerInstanceTimes.containsKey(Integer.valueOf(playerObjId)))
            restoreInstanceTimes(playerObjId);
        return (Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId));
    }

    public void setInstanceTime(int playerObjId, int id, long time)
    {
        Connection con;
        if(!_playerInstanceTimes.containsKey(Integer.valueOf(playerObjId)))
            restoreInstanceTimes(playerObjId);
        con = null;
        con = L2DatabaseFactory.getInstance().getConnection();
        PreparedStatement statement = con.prepareStatement("INSERT INTO character_instance_time (charId,instanceId,time) values (?,?,?) ON DUPLICATE KEY UPDATE time=?");
        statement.setInt(1, playerObjId);
        statement.setInt(2, id);
        statement.setLong(3, time);
        statement.setLong(4, time);
        statement.execute();
        statement.close();
        ((Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId))).put(Integer.valueOf(id), Long.valueOf(time));
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_186;
        Exception e;
        e;
        _log.log(Level.WARNING, (new StringBuilder()).append("Could not insert character instance time data: ").append(e.getMessage()).toString(), e);
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_186;
        Exception exception;
        exception;
        L2DatabaseFactory.close(con);
        throw exception;
    }

    public void deleteInstanceTime(int playerObjId, int id)
    {
        Connection con = null;
        con = L2DatabaseFactory.getInstance().getConnection();
        PreparedStatement statement = con.prepareStatement("DELETE FROM character_instance_time WHERE charId=? AND instanceId=?");
        statement.setInt(1, playerObjId);
        statement.setInt(2, id);
        statement.execute();
        statement.close();
        ((Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId))).remove(Integer.valueOf(id));
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_137;
        Exception e;
        e;
        _log.log(Level.WARNING, (new StringBuilder()).append("Could not delete character instance time data: ").append(e.getMessage()).toString(), e);
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_137;
        Exception exception;
        exception;
        L2DatabaseFactory.close(con);
        throw exception;
    }

    public void restoreInstanceTimes(int playerObjId)
    {
        Connection con;
        if(_playerInstanceTimes.containsKey(Integer.valueOf(playerObjId)))
            return;
        _playerInstanceTimes.put(Integer.valueOf(playerObjId), new FastMap());
        con = null;
        con = L2DatabaseFactory.getInstance().getConnection();
        PreparedStatement statement = con.prepareStatement("SELECT instanceId,time FROM character_instance_time WHERE charId=?");
        statement.setInt(1, playerObjId);
        ResultSet rset;
        for(rset = statement.executeQuery(); rset.next();)
        {
            int id = rset.getInt("instanceId");
            long time = rset.getLong("time");
            if(time < System.currentTimeMillis())
                deleteInstanceTime(playerObjId, id);
            else
                ((Map)_playerInstanceTimes.get(Integer.valueOf(playerObjId))).put(Integer.valueOf(id), Long.valueOf(time));
        }

        rset.close();
        statement.close();
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_227;
        Exception e;
        e;
        _log.log(Level.WARNING, (new StringBuilder()).append("Could not delete character instance time data: ").append(e.getMessage()).toString(), e);
        L2DatabaseFactory.close(con);
        break MISSING_BLOCK_LABEL_227;
        Exception exception;
        exception;
        L2DatabaseFactory.close(con);
        throw exception;
    }

    public String getInstanceIdName(int id)
    {
        if(_instanceIdNames.containsKey(Integer.valueOf(id)))
            return (String)_instanceIdNames.get(Integer.valueOf(id));
        else
            return "UnknownInstance";
    }

    private void loadInstanceNames()
    {
        InputStream in = null;
        in = new FileInputStream((new StringBuilder()).append(Config.DATAPACK_ROOT).append("/data/instancenames.xml").toString());
        XMLStreamReaderImpl xpp = new XMLStreamReaderImpl();
        xpp.setInput((new UTF8StreamReader()).setInput(in));
        for(int e = xpp.getEventType(); e != 8; e = xpp.next())
            if(e == 1 && xpp.getLocalName().toString().equals("instance"))
            {
                Integer id = Integer.valueOf(xpp.getAttributeValue(null, "id").toString());
                String name = xpp.getAttributeValue(null, "name").toString();
                _instanceIdNames.put(id, name);
            }

        FileNotFoundException e;
        try
        {
            in.close();
        }
        // Misplaced declaration of an exception variable
        catch(FileNotFoundException e) { }
        break MISSING_BLOCK_LABEL_222;
        e;
        _log.warning("instancenames.xml could not be loaded: file not found");
        try
        {
            in.close();
        }
        // Misplaced declaration of an exception variable
        catch(FileNotFoundException e) { }
        break MISSING_BLOCK_LABEL_222;
        XMLStreamException xppe;
        xppe;
        _log.log(Level.WARNING, (new StringBuilder()).append("Error while loading instance names: ").append(xppe.getMessage()).toString(), xppe);
        try
        {
            in.close();
        }
        // Misplaced declaration of an exception variable
        catch(XMLStreamException xppe) { }
        break MISSING_BLOCK_LABEL_222;
        Exception exception;
        exception;
        try
        {
            in.close();
        }
        catch(Exception e) { }
        throw exception;
    }

    public void addWorld(InstanceWorld world)
    {
        _instanceWorlds.put(Integer.valueOf(world.instanceId), world);
    }

    public InstanceWorld getWorld(int instanceId)
    {
        return (InstanceWorld)_instanceWorlds.get(Integer.valueOf(instanceId));
    }

    public InstanceWorld getPlayerWorld(L2PcInstance player)
    {
        for(Iterator i$ = _instanceWorlds.values().iterator(); i$.hasNext();)
        {
            InstanceWorld temp = (InstanceWorld)i$.next();
            if(temp != null && temp.allowed.contains(Integer.valueOf(player.getObjectId())))
                return temp;
        }

        return null;
    }

    private InstanceManager()
    {
        _instanceList = new FastMap();
        _instanceWorlds = new FastMap();
        _dynamic = 0x493e0;
        _playerInstanceTimes = new FastMap();
        _log.info("Initializing InstanceManager");
        loadInstanceNames();
        _log.info((new StringBuilder()).append("Loaded ").append(_instanceIdNames.size()).append(" instance names").toString());
        createWorld();
    }

    public static final InstanceManager getInstance()
    {
        return SingletonHolder._instance;
    }

    private void createWorld()
    {
        Instance themultiverse = new Instance(-1);
        themultiverse.setName("multiverse");
        _instanceList.put(Integer.valueOf(-1), themultiverse);
        _log.info("Multiverse Instance created");
        Instance universe = new Instance(0);
        universe.setName("universe");
        _instanceList.put(Integer.valueOf(0), universe);
        _log.info("Universe Instance created");
    }

    public void destroyInstance(int instanceid)
    {
        if(instanceid <= 0)
            return;
        Instance temp = (Instance)_instanceList.get(Integer.valueOf(instanceid));
        if(temp != null)
        {
            temp.removeNpcs();
            temp.removePlayers();
            temp.removeDoors();
            temp.cancelTimer();
            _instanceList.remove(Integer.valueOf(instanceid));
            if(_instanceWorlds.containsKey(Integer.valueOf(instanceid)))
                _instanceWorlds.remove(Integer.valueOf(instanceid));
        }
    }

    public Instance getInstance(int instanceid)
    {
        return (Instance)_instanceList.get(Integer.valueOf(instanceid));
    }

    public FastMap getInstances()
    {
        return _instanceList;
    }

    public int getPlayerInstance(int objectId)
    {
        for(Iterator i$ = _instanceList.values().iterator(); i$.hasNext();)
        {
            Instance temp = (Instance)i$.next();
            if(temp != null && temp.containsPlayer(objectId))
                return temp.getId();
        }

        return 0;
    }

    public boolean createInstance(int id)
    {
        if(getInstance(id) != null)
        {
            return false;
        } else
        {
            Instance instance = new Instance(id);
            _instanceList.put(Integer.valueOf(id), instance);
            return true;
        }
    }

    public boolean createInstanceFromTemplate(int id, String template)
    {
        if(getInstance(id) != null)
        {
            return false;
        } else
        {
            Instance instance = new Instance(id);
            _instanceList.put(Integer.valueOf(id), instance);
            instance.loadInstanceTemplate(template);
            return true;
        }
    }

    public int createDynamicInstance(String template)
    {
        do
        {
            if(getInstance(_dynamic) == null)
                break;
            _dynamic++;
            if(_dynamic == 0x7fffffff)
            {
                _log.warning("InstanceManager: More then 2147183647 instances created");
                _dynamic = 0x493e0;
            }
        } while(true);
        Instance instance = new Instance(_dynamic);
        _instanceList.put(Integer.valueOf(_dynamic), instance);
        if(template != null)
            instance.loadInstanceTemplate(template);
        return _dynamic;
    }


    private static final Logger _log = Logger.getLogger(l2/brick/gameserver/instancemanager/InstanceManager.getName());
    private FastMap _instanceList;
    private FastMap _instanceWorlds;
    private int _dynamic;
    private static final Map _instanceIdNames = new FastMap();
    private Map _playerInstanceTimes;
    private static final String ADD_INSTANCE_TIME = "INSERT INTO character_instance_time (charId,instanceId,time) values (?,?,?) ON DUPLICATE KEY UPDATE time=?";
    private static final String RESTORE_INSTANCE_TIMES = "SELECT instanceId,time FROM character_instance_time WHERE charId=?";
    private static final String DELETE_INSTANCE_TIME = "DELETE FROM character_instance_time WHERE charId=? AND instanceId=?";

}


bot2b 06.06.2013 16:01

Re: Ветка 7 семи печатей
 
В Вашем ядре нет метода getDoors у класса InstanceWorld.
Если Вам нужно в квесте открывать определенные двери, реализуйте это независимо от инстанса.

Если нужна помощь - пишите в лс, скайп или icq, помогу :)


Текущее время: 00:26. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot