Рейтинг темы:
  • 1 Голос(ов) - 1 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Ёлка
#1
Сборка: first-team
Хроники: High Five
Скачано

Проблема в том что не спавнятся ёлки, не простая, не особая.. Подскажите плиз в чём проблема?
Ответ
#2
Jessy Написал:Сборка: first-team
Хроники: High Five
Скачано

Проблема в том что не спавнятся ёлки, не простая, не особая.. Подскажите плиз в чём проблема?

Какой нах спавн? там итемы, юзаешь и ёлочка появляется или я не о тех подумал?)))
Ответ
#3
Russ1aStar Написал:Какой нах спавн? там итемы, юзаешь и ёлочка появляется или я не о тех подумал?)))

Если мне память не изменяет, то есть ещё и НПС "Ёлочка"... ID уже не помню, да в принципе и не запаменал... Помню только то, что были проблемы со спавном и удалением её... Вернее даже удалением =)

Ну а к автору вопрос - как пытаетесь заспавнить? Через обычный спавн или же айтемом?
[Изображение: master.gif]
Ответ
#4
ID : 5560 ---------------------
:plus1::bananoblin:
Ответ
#5
Через итем не спавнит! щёлкаю 2 раза и ноль эмоций(
Ответ
#6
Jessy Написал:Через итем не спавнит! щёлкаю 2 раза и ноль эмоций(

Нужно смотреть хендлер итема.
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Ответ
#7
Ивент добавьте для начала

C:\!ServerHighFive\play\data\scripts\events\Christmas\Christmas.java

Код:
package events.Christmas;

import java.util.ArrayList;
import java.util.List;

import l2ee.util.util.Rnd;
import l2ee.play.Announcements;
import l2ee.play.Config;
import l2ee.play.cache.Msg;
import l2ee.play.listener.actor.OnDeathListener;
import l2ee.play.listener.actor.player.OnPlayerEnterListener;
import l2ee.play.model.Creature;
import l2ee.play.model.Player;
import l2ee.play.model.SimpleSpawner;
import l2ee.play.model.actor.listener.CharListenerList;
import l2ee.play.model.instances.NpcInstance;
import l2ee.play.network.serverpackets.MagicSkillUse;
import l2ee.play.scripts.Functions;
import l2ee.play.scripts.ScriptFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Christmas extends Functions implements ScriptFile, OnDeathListener, OnPlayerEnterListener
{
    private static int EVENT_MANAGER_ID = 31863;
    private static int CTREE_ID = 13006;
    private static final Logger _log = LoggerFactory.getLogger(Christmas.class);

    private static int[][] _dropdata = {
            { 5556, 20 },
            { 5557, 20 },
            { 5558, 50 },
            { 5559, 5 },
    };

    private static List<SimpleSpawner> _spawns = new ArrayList<SimpleSpawner>();

    private static boolean _active = false;

    @Override
    public void onLoad()
    {
        CharListenerList.addGlobal(this);
        if(isActive() && Config.XMAS_EVENT)
        {
            _active = true;
            spawnEventManagers();
            _log.info("Loaded Event: Christmas [state: activated]");
        }
        else
            _log.info("Loaded Event: Christmas [state: deactivated]");
    }

    private static boolean isActive()
    {
        return IsActive("Christmas");
    }

    public void startEvent()
    {
        Player player = getSelf();
        if(!player.getPlayerAccess().IsEventGm)
            return;

        if(SetActive("Christmas", true))
        {
            spawnEventManagers();
            System.out.println("Event 'Christmas' started.");
            Announcements.getInstance().announceByCustomMessage("scripts.events.Christmas.AnnounceEventStarted", null);
        }
        else
            player.sendMessage("Event 'Christmas' already started.");

        _active = true;

        show("admin/events/events.htm", player);
    }

    public void stopEvent()
    {
        Player player = getSelf();
        if(!player.getPlayerAccess().IsEventGm)
            return;
        if(SetActive("Christmas", false))
        {
            unSpawnEventManagers();
            System.out.println("Event 'Christmas' stopped.");
            Announcements.getInstance().announceByCustomMessage("scripts.events.Christmas.AnnounceEventStoped", null);
        }
        else
            player.sendMessage("Event 'Christmas' not started.");

        _active = false;

        show("admin/events/events.htm", player);
    }

    private void spawnEventManagers()
    {
        final int EVENT_MANAGERS[][] = {
                { 0, 0, 0, 0 },
                { 0, 0, 0, 0 }
                };

        final int CTREES[][] = {
                { 0, 0, 0, 0 },
                { 0, 0, 0, 0 }
                };

        SpawnNPCs(EVENT_MANAGER_ID, EVENT_MANAGERS, _spawns);
        SpawnNPCs(CTREE_ID, CTREES, _spawns);
    }

    private void unSpawnEventManagers()
    {
        deSpawnNPCs(_spawns);
    }

    @Override
    public void onReload()
    {
        unSpawnEventManagers();
    }

    @Override
    public void onShutdown()
    {
        unSpawnEventManagers();
    }

    @Override
    public void onDeath(Creature cha, Creature killer)
    {
        if(_active && SimpleCheckDrop(cha, killer))
        {
            int dropCounter = 0;
            for(int[] drop : _dropdata)
                if(Rnd.chance(drop[1] * killer.getPlayer().getRateItems() * Config.RATE_DROP_ITEMS * 0.1))
                {
                    dropCounter++;
                    ((NpcInstance) cha).dropItem(killer.getPlayer(), drop[0], 1);

                    if(dropCounter > 2)
                        break;
                }
        }
    }

    public void exchange(String[] var)
    {
        Player player = getSelf();

        if(!player.isQuestContinuationPossible(true))
            return;

        if(player.isActionsDisabled() || player.isSitting() || player.getLastNpc() == null || player.getLastNpc().getDistance(player) > 300)
            return;

        if(var[0].equalsIgnoreCase("0"))
        {
            if(getItemCount(player, 5556) >= 4 && getItemCount(player, 5557) >= 4 && getItemCount(player, 5558) >= 10 && getItemCount(player, 5559) >= 1)
            {
                removeItem(player, 5556, 4);
                removeItem(player, 5557, 4);
                removeItem(player, 5558, 10);
                removeItem(player, 5559, 1);
                addItem(player, 5560, 1);
                return;
            }
            player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
        }
        if(var[0].equalsIgnoreCase("1"))
        {
            if(getItemCount(player, 5560) >= 10)
            {
                removeItem(player, 5560, 10);
                addItem(player, 5561, 1);
                return;
            }
            player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
        }
        if(var[0].equalsIgnoreCase("2"))
        {
            if(getItemCount(player, 5560) >= 10)
            {
                removeItem(player, 5560, 10);
                addItem(player, 7836, 1);
                return;
            }
            player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
        }
        if(var[0].equalsIgnoreCase("3"))
        {
            if(getItemCount(player, 5560) >= 10)
            {
                removeItem(player, 5560, 10);
                addItem(player, 8936, 1);
                return;
            }
            player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
        }
        if(var[0].equalsIgnoreCase("4"))
        {
            if(getItemCount(player, 5560) >= 20)
            {
                removeItem(player, 5560, 20);
                addItem(player, 10606, 1);
                return;
            }
            player.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_REQUIRED_ITEMS);
        }
    }

    @Override
    public void onPlayerEnter(Player player)
    {
        if(_active)
        {
        }
    }
}


C:\!ServerHighFive\play\data\scripts\events\Christmas\Seed.java

Код:
package events.Christmas;

import l2ee.util.threading.RunnableImpl;
import l2ee.play.ThreadPoolManager;
import l2ee.play.cache.Msg;
import l2ee.play.data.xml.holder.NpcHolder;
import l2ee.play.model.Playable;
import l2ee.play.model.Player;
import l2ee.play.model.SimpleSpawner;
import l2ee.play.model.World;
import l2ee.play.model.instances.NpcInstance;
import l2ee.play.model.items.ItemInstance;
import l2ee.play.network.serverpackets.components.SystemMsg;
import l2ee.play.network.serverpackets.SystemMessage2;
import l2ee.play.templates.npc.NpcTemplate;
import handler.items.ScriptItemHandler;

public class Seed extends ScriptItemHandler
{
    public class DeSpawnScheduleTimerTask extends RunnableImpl
    {
        SimpleSpawner spawnedTree = null;

        public DeSpawnScheduleTimerTask(SimpleSpawner spawn)
        {
            spawnedTree = spawn;
        }

        @Override
        public void runImpl() throws Exception
        {
            spawnedTree.deleteAll();
        }
    }

    private static int[] _itemIds = { 5560,
        5561
    };

    private static int[] _npcIds = { 13006,
        13007
    };

    private static final int DESPAWN_TIME = 600000;

    @Override
    public boolean useItem(Playable playable, ItemInstance item, boolean ctrl)
    {
        Player activeChar = (Player) playable;
        NpcTemplate template = null;

        int itemId = item.getItemId();
        for(int i = 0; i < _itemIds.length; i++)
            if(_itemIds[i] == itemId)
            {
                template = NpcHolder.getInstance().getTemplate(_npcIds[i]);
                break;
            }

        for(NpcInstance npc : World.getAroundNpc(activeChar, 300, 200))
            if(npc.getNpcId() == _npcIds[0] || npc.getNpcId() == _npcIds[1])
            {
                activeChar.sendPacket(new SystemMessage2(SystemMsg.SINCE_S1_ALREADY_EXISTS_NEARBY_YOU_CANNOT_SUMMON_IT_AGAIN).addName(npc));
                return false;
            }

        if(World.getAroundNpc(activeChar, 100, 200).size() > 0)
        {
            activeChar.sendPacket(Msg.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION);
            return false;
        }

        if(template == null)
            return false;

        if (!activeChar.getInventory().destroyItem(item, 1L))
            return false;

        SimpleSpawner spawn = new SimpleSpawner(template);
        spawn.setLoc(activeChar.getLoc());
        NpcInstance npc = spawn.doSpawn(false);
        npc.setTitle(activeChar.getName());
        spawn.respawnNpc(npc);

        if(itemId == 5561)
            npc.setAI(new ctreeAI(npc));

        ThreadPoolManager.getInstance().schedule(new DeSpawnScheduleTimerTask(spawn), (activeChar.isInPeaceZone() ? DESPAWN_TIME / 3 : DESPAWN_TIME));
        return true;
    }

    @Override
    public int[] getItemIds()
    {
        return _itemIds;
    }
}

Импорты сами поправите.
[Изображение: Z.png][Изображение: S.gif]
Ответ
#8
С эвентом там вроде порядок, попробуйте с этим файлом:
\dist\gameserver\data\scripts\handler\items\ScriptItemHandler.java

Код:
package handler.items;

import l2ft.gameserver.handler.items.IItemHandler;
import l2ft.gameserver.handler.items.ItemHandler;
import l2ft.gameserver.model.Playable;
import l2ft.gameserver.model.Player;
import l2ft.gameserver.model.items.ItemInstance;
import l2ft.gameserver.scripts.ScriptFile;
import l2ft.gameserver.utils.Location;
import l2ft.gameserver.utils.Log;

public abstract class ScriptItemHandler implements ScriptFile, IItemHandler
{

    @Override
    public void dropItem(Player player, ItemInstance item, long count, Location loc)
    {
        if(item.isEquipped())
        {
            player.getInventory().unEquipItem(item);
            player.sendUserInfo(true);
        }

        item = player.getInventory().removeItemByObjectId(item.getObjectId(), count);
        if(item == null)
        {
            player.sendActionFailed();
            return;
        }

        Log.LogItem(player, Log.Drop, item);

        item.dropToTheGround(player, loc);
        player.disableDrop(1000);

        player.sendChanges();
    }

    @Override
    public boolean pickupItem(Playable playable, ItemInstance item)
    {
        return true;
    }

    @Override
    public void onLoad()
    {
        ItemHandler.getInstance().registerItemHandler(this);
    }

    @Override
    public void onReload()
    {

    }

    @Override
    public void onShutdown()
    {

    }
}
Ответ
#9
marlin Написал:С эвентом там вроде порядок, попробуйте с этим файлом:
\dist\gameserver\data\scripts\handler\items\ScriptItemHandler.java

Код:
package handler.items;

import l2ft.gameserver.handler.items.IItemHandler;
import l2ft.gameserver.handler.items.ItemHandler;
import l2ft.gameserver.model.Playable;
import l2ft.gameserver.model.Player;
import l2ft.gameserver.model.items.ItemInstance;
import l2ft.gameserver.scripts.ScriptFile;
import l2ft.gameserver.utils.Location;
import l2ft.gameserver.utils.Log;

public abstract class ScriptItemHandler implements ScriptFile, IItemHandler
{

    @Override
    public void dropItem(Player player, ItemInstance item, long count, Location loc)
    {
        if(item.isEquipped())
        {
            player.getInventory().unEquipItem(item);
            player.sendUserInfo(true);
        }

        item = player.getInventory().removeItemByObjectId(item.getObjectId(), count);
        if(item == null)
        {
            player.sendActionFailed();
            return;
        }

        Log.LogItem(player, Log.Drop, item);

        item.dropToTheGround(player, loc);
        player.disableDrop(1000);

        player.sendChanges();
    }

    @Override
    public boolean pickupItem(Playable playable, ItemInstance item)
    {
        return true;
    }

    @Override
    public void onLoad()
    {
        ItemHandler.getInstance().registerItemHandler(this);
    }

    @Override
    public void onReload()
    {

    }

    @Override
    public void onShutdown()
    {

    }
}

Заработало спасибо))
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: