Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Праздничный Торт
#1
Привет всем.У меня возникла проблема.Решил по тестить праздничные торты которые дают баф "Эффект Праздничного Торта".Заметил то что торт не спавнится а только кидается баф на чара на 4 минуты.Вопрос:"Может ли кто помочь сделать так чтоб спавнился сам торт,стоял ровно час,давал каждые 2 секунды баф на не большом растоянии?"
Хроники High Five 5
[Изображение: sigpic24077_1.gif]
Ответ
#2
посмотри напримере нубо бафера. мимо него пробегаешь он бафает
так же с тортом
Ответ
#3
ChipWarl Написал:посмотри напримере нубо бафера. мимо него пробегаешь он бафает
так же с тортом

Хм..На сколько я знаю нубо бафер бафает при нажатии на баф кнопочку.
Забыл указать хроники Т_Т (ХФ5)
[Изображение: sigpic24077_1.gif]
Ответ
#4
По аналогии Ёлки сделайте =)
[Изображение: Z.png][Изображение: S.gif]
Ответ
#5
Krasavella Написал:По аналогии Ёлки сделайте =)

Как я понимаю должен быть скрипт той же ёлки.Хотелось бы узнать где он находитсяSmileЕсли конечно не сложно ответить)

Добавлено через 7 минут
</etcitem>
<etcitem id="5561" name="Special Christmas Tree">
<set name="class" value="CONSUMABLE"/>
<set name="crystal_type" value="NONE"/>
<set name="icon" value="icon.etc_x_mas_tree_i00"/>
<set name="price" value="1"/>
<set name="stackable" value="true"/>
<set name="type" value="POTION"/>
<cond msgId="1508">
<not>
<player olympiad="true"/>
</not>
</cond>
Вот сам код ёлки.
Я так понимаю спавн происходит в самом скилле который привязывается к нему?
[Изображение: sigpic24077_1.gif]
Ответ
#6
play\data\scripts\events\Christmas\Seed.java

[SRC="java"] private static int[] _itemIds = { 5560, // Christmas Tree
5561 // Special Christmas Tree
};

private static int[] _npcIds = { 13006, // Christmas Tree
13007 // Special Christmas Tree
};

private static final int DESPAWN_TIME = 600000; //10 min

@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()); //FIXME Почему-то не устанавливается
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;
}[/SRC]
[Изображение: Z.png][Изображение: S.gif]
Ответ
#7
Krasavella Написал:play\data\scripts\events\Christmas\Seed.java

[SRC="java"] private static int[] _itemIds = { 5560, // Christmas Tree
5561 // Special Christmas Tree
};

private static int[] _npcIds = { 13006, // Christmas Tree
13007 // Special Christmas Tree
};

private static final int DESPAWN_TIME = 600000; //10 min

@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()); //FIXME Почему-то не устанавливается
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;
}[/SRC]

Благодарю Wink

Добавлено через 3 минуты
Krasavella Написал:play\data\scripts\events\Christmas\Seed.java

[SRC="java"] private static int[] _itemIds = { 5560, // Christmas Tree
5561 // Special Christmas Tree
};

private static int[] _npcIds = { 13006, // Christmas Tree
13007 // Special Christmas Tree
};

private static final int DESPAWN_TIME = 600000; //10 min

@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()); //FIXME Почему-то не устанавливается
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;
}[/SRC]

Кстати.По примеру ёлки не получиться.Там даётся эффект бафа 10 минут подрят но после ёлка не исчезает.Так же будет скорее всего с тортом.
[Изображение: sigpic24077_1.gif]
Ответ
#8
private static final int DESPAWN_TIME = 600000; //10 min
[Изображение: Z.png][Изображение: S.gif]
Ответ
#9
Krasavella Написал:private static final int DESPAWN_TIME = 600000; //10 min

Да вот в том-то и дело)Я сейчас поставил ёлку.Прошло 20 минут и только слетел эффект бафа,а сама ёлка не удалилась)Кстати.Сейчас ещё нужно будет писать AI для тортика.Так как там записан баф который будут получать люди)

Добавлено через 6 минут
AI нашёл.Теперь нужно привязать эти файлы друг к другу)

Добавлено через 16 минут
Сейчас Тестанём)Всё написал.Поправил немножко и посмотрим отспавнится ли торт через час.
[Изображение: sigpic24077_1.gif]
Ответ
#10
Tr1v1um Написал:посмотрим отспавнится ли торт через час.

Лучше через минуту для проверки.
[Изображение: Z.png][Изображение: S.gif]
Ответ


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


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