Сообщений: 19
Тем: 6
Зарегистрирован: Jul 2013
Репутация:
-46
l2jserver
Подскажите, как правильно прописать, чтобы нпс бафал сразу несколько скилов, а не 1 скил. Прописан скил id 1077 (Фокусировка), а как сделать, чтобы допустим бафал еще и id 1040 (Щит)?
Цитата:public class GiftOfVitality extends LongTimeEvent
{
// Reuse between buffs
private static final int HOURS = 1;
// NPC
private static final int JACK = 4306;
public GiftOfVitality(String name, String descr)
{
super(name, descr);
addStartNpc(JACK);
addFirstTalkId(JACK);
addTalkId(JACK);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
QuestState st = player.getQuestState(getName());
if (event.equalsIgnoreCase("vitality"))
{
long _reuse = 0;
String _streuse = st.get("reuse");
if (_streuse != null)
{
_reuse = Long.parseLong(_streuse);
}
if (_reuse > System.currentTimeMillis())
{
long remainingTime = (_reuse - System.currentTimeMillis()) / 1000;
int hours = (int) (remainingTime / 3600);
int minutes = (int) ((remainingTime % 3600) / 60);
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AVAILABLE_AFTER_S1_S2_HOURS_S3_MINUTES);
sm.addSkillName(1077);
sm.addNumber(hours);
sm.addNumber(minutes);
player.sendPacket(sm);
htmltext = "4306-notime.htm";
}
else
{
npc.setTarget(player);
// Gift of Vitality
npc.doCast(SkillTable.getInstance().getInfo(1077, 1));
st.setState(State.STARTED);
st.set("reuse", String.valueOf(System.currentTimeMillis() + (HOURS * 3600000)));
htmltext = "4306-okvitality.htm";
}
Сообщений: 290
Тем: 23
Зарегистрирован: Aug 2009
Репутация:
116
можно и логику включить, смотрим в скрипте есть строка
npc.doCast(SkillTable.getInstance().getInfo(1077, 1));
и проверяем что будет если добавить ету строку еще раз только с ид другого скила
Сообщений: 130
Тем: 15
Зарегистрирован: Jan 2012
Репутация:
-12
Код: // Gift of Vitality
npc.doCast(SkillTable.getInstance().getInfo(1077, 1));
[B][size=2]npc.doCast(SkillTable.getInstance().getInfo(ИД_СКИЛЛА, УРОВЕНЬ_СКИЛЛА));[/size][/B]
st.setState(State.STARTED);
st.set("reuse", String.valueOf(System.currentTimeMillis() + (HOURS * 3600000)));
htmltext = "4306-okvitality.htm";
Сообщений: 19
Тем: 6
Зарегистрирован: Jul 2013
Репутация:
-46
Такой вариант пробовал, но бафает только один...
Возможно из за того, что инстанс?
Откат бафа 1 час стоит
// Reuse between buffs
private static final int HOURS = 1;
// NPC
private static final int JACK = 4306;
Как убрать правильно откат?
Сообщений: 290
Тем: 23
Зарегистрирован: Aug 2009
Репутация:
116
это откат не бафа, а возможности повторно бафнуть скил, насколько я понимаю. Время скила(бафа) менаем там где статы скилов.
Сообщений: 19
Тем: 6
Зарегистрирован: Jul 2013
Репутация:
-46
APKO Написал:это откат не бафа, а возможности повторно бафнуть скил, насколько я понимаю. Время скила(бафа) менаем там где статы скилов.
ну, да, я имел ввиду откат повтора...
Вот как его убрать, подскажите...
Сообщений: 177
Тем: 2
Зарегистрирован: Feb 2012
Репутация:
2,588
[Elite];314414 Написал:ну, да, я имел ввиду откат повтора...
Вот как его убрать, подскажите... Это не поможет. У вас не бафает второй скилл потому, что первый еще не докаставался. Нужно либо делать задержку, либо использовать другой метод, просто накладывать эффект без каста.
Сообщений: 19
Тем: 6
Зарегистрирован: Jul 2013
Репутация:
-46
А как прописать, чтобы эффект без каста был, на несколько баффов?
Пример текста если можно
Добавлю:
Полный текст нпс вот, вот те баффы, которые накладываются без каста, другие бафы, ну допустим бафф Ускорение - Путешественника, а обычные там не пропишешь, пробовал...
Другой вопрос, как прописать, чтобы нпс накладывал сразу несколько эффектов без каста, или в первом случае (там где 1 баф, любой можно скил ставить), или там где во втором случае (там где несколько баффом, но Путешественника, и убрать ограничение, чтобы не Путешественника бафал, а обычный баф)
Цитата:}
else
{
npc.setTarget(player);
// Gift of Vitality
npc.doCast(SkillTable.getInstance().getInfo(23179, 1));
st.setState(State.STARTED);
st.set("reuse", String.valueOf(System.currentTimeMillis() + (HOURS * 3600000)));
htmltext = "4306-okvitality.htm";
}
}
else if (event.equalsIgnoreCase("memories_player"))
{
if (player.getLevel() < 1)
{
htmltext = "4306-nolevel.htm";
}
else
{
npc.setTarget(player);
npc.doCast(SkillTable.getInstance().getInfo(5627, 1)); // Wind Walk
npc.doCast(SkillTable.getInstance().getInfo(5628, 1)); // Shield
npc.doCast(SkillTable.getInstance().getInfo(5637, 1)); // Magic Barrier
if (player.isMageClass())
{
npc.doCast(SkillTable.getInstance().getInfo(5633, 1)); // Bless the Soul
npc.doCast(SkillTable.getInstance().getInfo(5634, 1)); // Acumen
npc.doCast(SkillTable.getInstance().getInfo(5635, 1)); // Concentration
npc.doCast(SkillTable.getInstance().getInfo(5636, 1)); // Empower
}
else
{
npc.doCast(SkillTable.getInstance().getInfo(5629, 1)); // Bless the Body
npc.doCast(SkillTable.getInstance().getInfo(5630, 1)); // Vampiric Rage
npc.doCast(SkillTable.getInstance().getInfo(5631, 1)); // Regeneration
npc.doCast(SkillTable.getInstance().getInfo(5632, 1)); // Haste
}
htmltext = "4306-okbuff.htm";
}
}
else if (event.equalsIgnoreCase("memories_summon"))
{
if (player.getLevel() < 1)
{
htmltext = "4306-nolevel.htm";
}
else if (!player.hasSummon() || !player.getSummon().isServitor())
{
htmltext = "4306-nosummon.htm";
}
else
{
npc.setTarget(player.getSummon());
npc.doCast(SkillTable.getInstance().getInfo(5627, 1)); // Wind Walk
npc.doCast(SkillTable.getInstance().getInfo(5628, 1)); // Shield
npc.doCast(SkillTable.getInstance().getInfo(5637, 1)); // Magic Barrier
npc.doCast(SkillTable.getInstance().getInfo(5629, 1)); // Bless the Body
npc.doCast(SkillTable.getInstance().getInfo(5633, 1)); // Bless the Soul
npc.doCast(SkillTable.getInstance().getInfo(5630, 1)); // Vampiric Rage
npc.doCast(SkillTable.getInstance().getInfo(5634, 1)); // Acumen
npc.doCast(SkillTable.getInstance().getInfo(5631, 1)); // Regeneration
npc.doCast(SkillTable.getInstance().getInfo(5635, 1)); // Concentration
npc.doCast(SkillTable.getInstance().getInfo(5632, 1)); // Haste
npc.doCast(SkillTable.getInstance().getInfo(5636, 1)); // Empower
htmltext = "4306-okbuff.htm";
Сообщений: 1,580
Тем: 50
Зарегистрирован: Jul 2013
Репутация:
12,453
[Elite];314416 Написал:(там где несколько баффом, но Путешественника, и убрать ограничение, чтобы не Путешественника бафал, а обычный баф)
А вставить Id бафов обычных, не путешественника, не пойдёт?
Сообщений: 19
Тем: 6
Зарегистрирован: Jul 2013
Репутация:
-46
08-01-2013, 09:36 AM
(Сообщение последний раз редактировалось: 08-01-2013, 10:40 AM [Elite].)
Пробовал, эффекты накладываются, но рандом, иногда кастует, и задержка мешает.
|