Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Все искал, спавн не нашелДа скорее всего слетели позиции спавна. Не знаю, что за сборка но могут быть следующие варианты правки:
- В датапаке( как советуют выше)
- В базе, если все базируется на ней
- В базе в кастомных спавнах, если есть сохранение спава от gm действий
Узнаешь id рб и поиском находишь, где проблема. А дальше все должно быть интуитивно
В скриптах АИ глянь или мож в ядре.Все искал, спавн не нашел
Не знаю, что за сборка
Они не могли уехать со своих мест из-за отсутствия геодаты?Хроники: High Five, Сборка: l2gw, Исходники: Присутствуют
нетОни не могли уехать со своих мест из-за отсутствия геодаты?
Можно и так сказатьНулевая координата?
Используйте обычное действие "Аттака" с зажатой клавишей "Шифт" и посмотрите где находится файл спавна данного НПС, или стандартные кординаты респа.Может кто объяснить как их вернуть на свои места? Почему они все заспавнены тут?
Посмотреть вложение 43973
Благодарю, забыл об этой функции, надеюсь поможет. Отпишусь если чтоИспользуйте обычное действие "Аттака" с зажатой клавишей "Шифт" и посмотрите где находится файл спавна данного НПС, или стандартные кординаты респа.
package ai;
import ru.l2gw.commons.math.Rnd;
import ru.l2gw.gameserver.ai.CtrlIntention;
import ru.l2gw.gameserver.model.Creature;
import ru.l2gw.gameserver.model.L2Skill;
import ru.l2gw.gameserver.model.entity.category.CategoryManager;
import ru.l2gw.gameserver.model.instances.L2NpcInstance;
import ru.l2gw.gameserver.serverpackets.PlaySound;
import ru.l2gw.gameserver.tables.SkillTable;
import ru.l2gw.gameserver.util.Util;
import ai.base.DefaultNpc;
public class QueenAnt extends DefaultNpc
{
public L2Skill different_level_9_attacked = SkillTable.getInstance().getInfo(295895041);
public L2Skill different_level_9_see_spelled = SkillTable.getInstance().getInfo(276234241);
public L2Skill skill01 = SkillTable.getInstance().getInfo(279052289);
public L2Skill skill02 = SkillTable.getInstance().getInfo(263323649);
public L2Skill skill03 = SkillTable.getInstance().getInfo(263389185);
public L2Skill skill04 = SkillTable.getInstance().getInfo(263258113);
public QueenAnt(Creature actor)
{
super(actor);
}
@Override
protected void onEvtSpawn()
{
if (Rnd.get(100) < 33)
{
Util.teleportInMyTerritory(_thisActor, -19480, 187344, -5600, 200);
}
else if (Rnd.get(100) < 50)
{
Util.teleportInMyTerritory(_thisActor, -17928, 180912, -5520, 200);
}
else
{
Util.teleportInMyTerritory(_thisActor, -23808, 182368, -5600, 200);
}
_thisActor.broadcastPacket(new PlaySound("BS01_A"));
_thisActor.i_ai0 = 0;
_thisActor.i_ai1 = 0;
_thisActor.weight_point = 10;
_thisActor.createOnePrivate(29002, "QueenAntLarva", 0, 0, -21600, 179482, -5846, Rnd.get(360), 0, 0, 0);
_thisActor.spawnMinions();
addTimer(1001, 10000);
}
@Override
protected void onEvtTimer(int timerId, Object arg1, Object arg2)
{
if (timerId == 1001)
{
if ((Rnd.get(100) < 30) && (_intention == CtrlIntention.AI_INTENTION_ACTIVE))
{
if (Rnd.get(100) < 50)
{
addEffectActionDesire(3, (50 * 1000) / 30, 30);
}
else
{
addEffectActionDesire(4, (50 * 1000) / 30, 30);
}
}
addTimer(1001, 10000);
}
else
{
super.onEvtTimer(timerId, arg1, arg2);
}
}
@Override
protected void onEvtPartyDead(L2NpcInstance victim)
{
if (victim != _thisActor)
{
if (victim.getNpcId() == 29003)
{
_thisActor.respawnPrivate(victim, victim.weight_point, 10);
}
else
{
_thisActor.respawnPrivate(victim, victim.weight_point, 280 + Rnd.get(40));
}
}
}
@Override
protected void onEvtAttacked(Creature attacker, int damage, L2Skill skill)
{
if (((attacker.getZ() - _thisActor.getZ()) > 5) || ((attacker.getZ() - _thisActor.getZ()) < -500))
{
}
else if (attacker.getLevel() > (_thisActor.getLevel() + 8))
{
if (SkillTable.getAbnormalLevel(attacker, different_level_9_attacked) == -1)
{
if (different_level_9_attacked.getId() == 4515)
{
_thisActor.altUseSkill(different_level_9_attacked, attacker);
_thisActor.addDamageHate(attacker, damage, 0);
removeAttackDesire(attacker);
return;
}
_thisActor.altUseSkill(different_level_9_attacked, attacker);
}
}
if ((attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId())) && (SkillTable.getAbnormalLevel(attacker, 295895041) == -1))
{
if (attacker.getPlayer().getMountEngine().isMounted() && (SkillTable.getAbnormalLevel(attacker, 279052289) <= 0))
{
if ((skill01.getMpConsume() < _thisActor.getCurrentMp()) && (skill01.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill01.getId()))
{
addUseSkillDesire(attacker, skill01, 0, 1, 1000000);
}
}
if ((skill != null) && (skill.getElement() == L2Skill.Element.FIRE) && ((Rnd.get(100) < 70) && _thisActor.inMyTerritory(attacker)))
{
if ((skill02.getMpConsume() < _thisActor.getCurrentMp()) && (skill02.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill02.getId()))
{
addUseSkillDesire(attacker, skill02, 0, 1, 1000000);
}
}
else if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 500) && (Rnd.get(100) < 10))
{
if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, skill03, 0, 0, 1000000);
}
}
else if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 150) && (Rnd.get(100) < 10))
{
if ((Rnd.get(100) < 80) && (_thisActor.getLoc().distance3D(attacker.getLoc()) < 500))
{
if ((skill02.getMpConsume() < _thisActor.getCurrentMp()) && (skill02.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill02.getId()))
{
addUseSkillDesire(attacker, skill02, 0, 0, 1000000);
}
}
else if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, skill03, 0, 0, 1000000);
}
}
else if ((Rnd.get(100) < 5) && (_thisActor.getLoc().distance3D(attacker.getLoc()) < 250))
{
if ((skill04.getMpConsume() < _thisActor.getCurrentMp()) && (skill04.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill04.getId()))
{
addUseSkillDesire(_thisActor, skill04, 0, 1, 1000000);
}
}
else if (Rnd.get(100) < 1)
{
addEffectActionDesire(1, (60 * 1000) / 30, 3000000);
}
if (attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId()))
{
_thisActor.addDamageHate(attacker, damage, (long) ((damage / _thisActor.getMaxHp() / 0.050000) * damage * 100));
_thisActor.callFriends(attacker, damage);
addAttackDesire(attacker, 0, DEFAULT_DESIRE);
}
}
}
@Override
protected void onEvtPartyAttacked(Creature attacker, Creature victim, int damage)
{
if ((attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId())) && (victim != _thisActor))
{
if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 500) && (Rnd.get(100) < 5))
{
if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, skill03, 0, 0, 1000000);
}
}
else if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 150) && (Rnd.get(100) < 5))
{
if (Rnd.get(100) < 80)
{
if ((skill02.getMpConsume() < _thisActor.getCurrentMp()) && (skill02.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill02.getId()))
{
addUseSkillDesire(attacker, skill02, 0, 0, 1000000);
}
}
else if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, skill03, 0, 0, 1000000);
}
}
else if ((Rnd.get(100) < 2) && (_thisActor.getLoc().distance3D(attacker.getLoc()) < 250))
{
if ((skill04.getMpConsume() < _thisActor.getCurrentMp()) && (skill04.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill04.getId()))
{
addUseSkillDesire(_thisActor, skill04, 0, 1, 1000000);
}
}
if (attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId()))
{
_thisActor.addDamageHate(attacker, 0, (long) ((damage / _thisActor.getMaxHp() / 0.050000) * ((L2NpcInstance) victim).weight_point * damage * 100));
}
}
}
@Override
protected void onEvtClanAttacked(Creature attacked_member, Creature attacker, int damage)
{
if (attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId()))
{
if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 500) && (Rnd.get(100) < 3))
{
if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, 263389185, 0, 0, 1000000);
}
}
else if ((_thisActor.getLoc().distance3D(attacker.getLoc()) > 150) && (Rnd.get(100) < 3))
{
if (Rnd.get(100) < 80)
{
if ((skill02.getMpConsume() < _thisActor.getCurrentMp()) && (skill02.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill02.getId()))
{
addUseSkillDesire(attacker, 263323649, 0, 0, 1000000);
}
}
else if ((skill03.getMpConsume() < _thisActor.getCurrentMp()) && (skill03.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill03.getId()))
{
addUseSkillDesire(attacker, 263389185, 0, 0, 1000000);
}
}
else if ((Rnd.get(100) < 2) && (_thisActor.getLoc().distance3D(attacker.getLoc()) < 250))
{
if ((skill04.getMpConsume() < _thisActor.getCurrentMp()) && (skill04.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill04.getId()))
{
addUseSkillDesire(_thisActor, 263258113, 0, 1, 1000000);
}
}
if (attacker.isPlayer() || CategoryManager.isInCategory(12, attacker.getNpcId()))
{
_thisActor.addDamageHate(attacker, 0, (long) ((damage / _thisActor.getMaxHp() / 0.050000) * 500));
}
}
}
@Override
protected void onEvtSeeSpell(L2Skill skill, Creature speller)
{
if (((speller.getZ() - _thisActor.getZ()) > 5) || ((speller.getZ() - _thisActor.getZ()) < -500))
{
}
else if (speller.getLevel() > (_thisActor.getLevel() + 8))
{
if (SkillTable.getAbnormalLevel(speller, different_level_9_see_spelled) == -1)
{
if (different_level_9_see_spelled.getId() == 4515)
{
_thisActor.altUseSkill(different_level_9_see_spelled, speller);
removeAttackDesire(speller);
return;
}
_thisActor.altUseSkill(different_level_9_see_spelled, speller);
}
}
if ((skill != null) && (skill.getEffectPoint() > 0) && (Rnd.get(100) < 15))
{
if ((skill02.getMpConsume() < _thisActor.getCurrentMp()) && (skill02.getHpConsume() < _thisActor.getCurrentHp()) && !_thisActor.isSkillDisabled(skill02.getId()))
{
addUseSkillDesire(speller, skill02, 0, 0, 1000000);
}
}
}
@Override
protected void onEvtOutOfMyTerritory()
{
removeAllAttackDesire();
teleportHome();
}
@Override
protected void onEvtDead(Creature killer)
{
super.onEvtDead(killer);
_thisActor.broadcastPacket(new PlaySound("BS02_D"));
}
}
Попробуй взять id, например антквин: 29001. И сделай поиск этого числа по всему датапаку, таблицам спавна(если оно в бд), просмотри галазми, что содержит ключевые слова spawn, npc и т.д. Или же аналогичный поиск но по координатам(какой-то одной или нескольким сразу), которые ты можешь получить через shift+click(если это не 0 конечно)Ничего не нашел по совету
Попробуй взять id, например антквин: 29001. И сделай поиск этого числа по всему датапаку, таблицам спавна(если оно в бд), просмотри галазми, что содержит ключевые слова spawn, npc и т.д. Или же аналогичный поиск но по координатам(какой-то одной или нескольким сразу), которые ты можешь получить через shift+click(если это не 0 конечно)
"13103" "" "1" "29001" "-21598" "181448" "-5720" "0" "0" "49648" "30" "0" "0" "Local" \N \N \N \N \N "0"
Судя по Location/Spawn : n/a n/a (со скрина) настройки спавна вообще отсутствуют. Найти NPC, а лучше РБ у которых такой параметр есть. Найди инфу о таком NPC/RB аналогичным способом как ты уже нашел по своему спавну(или в датапаке) и по образу и подобию восстанови для всех у кого таких нетПосмотреть вложение 44011
Посмотреть вложение 44012
Нашел вот такое в таблицеSQL:"13103" "" "1" "29001" "-21598" "181448" "-5720" "0" "0" "49648" "30" "0" "0" "Local" \N \N \N \N \N "0"
Но это то что я добавил 5 минут назад, заспавнил точнее
Нет такого ни у одного босса, так же и у мобаСудя по Location/Spawn : n/a n/a (со скрина) настройки спавна вообще отсутствуют. Найти NPC, а лучше РБ у которых такой параметр есть. Найди инфу о таком NPC/RB аналогичным способом как ты уже нашел по своему спавну(или в датапаке) и по образу и подобию восстанови для всех у кого таких нет
Ну самый простой вариант найти NPC или RB, кто спавнятся на своих местах и на их основе их сделать по аналогии. Прошерстить где харнится информация об их спавне, изучить и заполнить для недостающих. Если у тебя вообще нет ни одного npc/рб на сервере, то по исходникам понять формат, в котором должно храниться и восстанавливать все(например, написать парсер какой-нибудь базы знаний по l2 и прогнать, чтобы заполнить спавны под твой формат). Возможно, определить вид сборки(может стартовала от какой-то шары) и поискать готовые спавны всех мобов в этих сборках.Было бы прекрасно узнать как поменять спавн локации мобам, я готов
Нет такого ни у одного босса, так же и у моба
По поводу твоего вопроса, я думаю что не уверен в этом, что все правильно залилосьНу самый простой вариант найти NPC или RB, кто спавнятся на своих местах и на их основе их сделать по аналогии. Прошерстить где харнится информация об их спавне, изучить и заполнить для недостающих. Если у тебя вообще нет ни одного npc/рб на сервере, то по исходникам понять формат, в котором должно храниться и восстанавливать все(например, написать парсер какой-нибудь базы знаний по l2 и прогнать, чтобы заполнить спавны под твой формат). Возможно, определить вид сборки(может стартовала от какой-то шары) и поискать готовые спавны всех мобов в этих сборках.
Чтобы определить вид, наверное, нужно зашарить какой-то кусок кода, который обо всем расскажет, тут нужны форумчане поопытнее и смогут определить
upd. Ты уверен, что корректно установил базу и залил в неё все? Все из датапака попало в нужное место?
вот же оно ?if (Rnd.get(100) < 33) { Util.teleportInMyTerritory(_thisActor, -19480, 187344, -5600, 200); } else if (Rnd.get(100) < 50) { Util.teleportInMyTerritory(_thisActor, -17928, 180912, -5520, 200); } else { Util.teleportInMyTerritory(_thisActor, -23808, 182368, -5600, 200); }