Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
npc и player
#1
Всем привет, в учебных целях хочу реализовать итем при юзе которого ставиться нпс, сделал хендлер для моего итема, нпс создаётся всё крутяк, но хочу сделать чтобы при релоге чара который его ставил этот нпс удалялся
Сборка люцера шара
Вот кусок кода хедлера самого итема, который ставит нпс
[SRC="java"] L2NpcTemplate template;
template = NpcTable.getInstance().getTemplate(50050);
L2NpcInstance testNPC = new L2NpcInstance(IdFactory.getInstance().getNextId(),template);
testNPC.spawnMe(_activeChar.getX(),_activeChar.getY(),_activeChar.getZ());[/SRC]
Как вобще можно реализовать чтобы при релоге игрока которые поставит этот нпс , то он удалялся. Нужно ли лесть в ядро в обработку когда чар релог\дисконект? и какое название файла примерно, и как вобще можно связать в данном случае нпс и игрока которые его заспавнил.
Ответ
#2
Нужно "привязать" NPC к персонажу и при дисконнекте отзывать NPC. Не забываем про то, что можно попробовать вызвать несколько NPC.
Ответ
#3
Zubastic Написал:Нужно "привязать" NPC к персонажу и при дисконнекте отзывать NPC. Не забываем про то, что можно попробовать вызвать несколько NPC.

А вот как это примерно можно реализовать
Если например в хендлере после спавна делать запись в базу с ИДигрока и обектИД(нпс)
и при релоге проверять если чарИд есть в базе то удалять обектИД который соответствует этому ЧарИД, ну и запись саму в базе тоже удалять
Как думаете, или это совсем колхоз будет?
Ответ
#4
DakChe Написал:А вот как это примерно можно реализовать
Если например в хендлере после спавна делать запись в базу с ИДигрока и обектИД(нпс)
и при релоге проверять если чарИд есть в базе то удалять обектИД который соответствует этому ЧарИД, ну и запись саму в базе тоже удалять
Как думаете, или это совсем колхоз будет?
Вариантов реализации много. Делайте так, как умеете. Можно через списки и listener какой-нибудь.
Ответ
#5
Zubastic Написал:Вариантов реализации много. Делайте так, как умеете. Можно через списки и listener какой-нибудь.

Понятно, а как получить getObjectId только что созданого нпс
вот так не работает

[SRC="java"] L2NpcTemplate template;
template = NpcTable.getInstance().getTemplate(50050);
L2NpcInstance testNPC = new L2NpcInstance(IdFactory.getInstance().getNextId(),template);
testNPC.setTitle(_activeChar.getName());
//testNPC.getStatus().setCurrentHpMp(testNPC.getMaxHp(), testNPC.getMaxMp());
testNPC.spawnMe(_activeChar.getX(),_activeChar.getY(),_activeChar.getZ());
obID = testNPC.getObjectId();
[/SRC]
Ответ
#6
Посмотрите как елки создаются.
Ответ
#7
Zubastic Написал:Посмотрите как елки создаются.

Да я глядел, особо ничего не нашёл
вот кусок кода, если это он, ёлки кстати при релоге не исчезают, или вы имеете ввиду они как то привязываются к игроку?

[SRC="java"] switch (sitem.getType())
{
case 0: // static summons (like christmas tree)
try
{
L2Spawn spawn = new L2Spawn(npcTemplate);

spawn.setId(IdFactory.getInstance().getNextId());
spawn.setLocx(activeChar.getX());
spawn.setLocy(activeChar.getY());
spawn.setLocz(activeChar.getZ());
L2World.getInstance().storeObject(spawn.spawnOne(true));
activeChar.destroyItem("Summon", item.getObjectId(), 1, null, false);
activeChar.sendMessage("Created " + npcTemplate.getName() + " at x: " + spawn.getLocx() + " y: " + spawn.getLocy() + " z: " + spawn.getLocz());
}
catch (Exception e)
{
activeChar.sendPacket(SystemMessageId.TARGET_CANT_FOUND);
}

break;[/SRC]
Ответ
#8
На оффе привязываются, у Вас нет...
Ответ
#9
Zubastic Написал:На оффе привязываются, у Вас нет...

А вы не в курсе ли в шаре есть исходы где это реализовано и можно глянуть хоть примерно?в какой сборке

И всё же как можно получить getObjectId() нпс который мы только что создали
Ответ
#10
spawn.getLastSpawn().getObjectId()
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  player.getLevel() - похожий аналог. finfan 9 2,665 11-13-2013, 02:43 PM
Последний пост: GOODPower
  Функции player. SkAvenger 8 3,190 12-30-2010, 02:24 PM
Последний пост: Tsunamikus

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


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