2019-11-19 08:01:20,997 Shutdown ERROR Ignoring log event after Log4j has been shut down.
2019-11-19 08:01:21,009 Shutdown ERROR Ignoring log event after Log4j has been shut down.
2019-11-19 08:01:21,017 Shutdown ERROR Ignoring log event after Log4j has been shut down.
Баг логгера. Во время рестарта / выключения Shutdown hook закрывает логгер, но евенты для логгирования с разных потоков ещё продолжают поступать. Считай это уведомлением или обнови логгер с зависимостямиВозможно кто сталкивался с ошибкой?
Код:2019-11-19 08:01:20,997 Shutdown ERROR Ignoring log event after Log4j has been shut down. 2019-11-19 08:01:21,009 Shutdown ERROR Ignoring log event after Log4j has been shut down. 2019-11-19 08:01:21,017 Shutdown ERROR Ignoring log event after Log4j has been shut down.
if (activeChar.isFlying() || activeChar.isInWater())
activeChar.teleToLocation(_lastServerPosition);
else
activeChar.validateLocation(1);
в гео нужно внести фикс, так как движок не полностью обрабатывает некоторые ситуации, также в каты прыжок выносит персонажа на верх и он в тектурах.Вопрос по синхронизации...
Интересует вопрос, что делает activeChar.teleToLocation(_lastServerPosition);Код:if (activeChar.isFlying() || activeChar.isInWater()) activeChar.teleToLocation(_lastServerPosition); else activeChar.validateLocation(1);
Т.к с этим участком персонажа то и дело, что бесконечно кидает вверх и вниз (когда спрыгиваешь с виверны с высоты). Каковы будут последствия, если удалить данную строку?
Кстати на Brawery такая же ситуация - сегодня тестил на тест сервере.
А че не так с названием?Я конечно все понимаю, пущай это будет оффтопом, но даже меня (слабо шарящего человека в java) знатно подпалило начало этого треда.
Не название, а начало. Первые страницы.А че не так с названием?
<!--First room-->
<spawn group="first_room_group" count="1" respawn="0" respawn_random="0" period_of_day="none">
<point x="147842" y="179837" z="-6117" h="0"/>
<npc id="22264"/>
<!--Black Stone Monolith-->
</spawn>
<!--First room-->
<spawn group="first_room_group" count="1" respawn="0" respawn_random="0" period_of_day="none">
<point x="147711" y="179708" z="-6117" h="0"/>
<npc id="22264"/>
<!--Black Stone Monolith-->
</spawn>
<!--First room-->
<spawn group="first_room_group" count="1" respawn="0" respawn_random="0" period_of_day="none">
<point x="147842" y="179552" z="-6117" h="0"/>
<npc id="22264"/>
<!--Black Stone Monolith-->
</spawn>
<!--First room-->
<spawn group="first_room_group" count="1" respawn="0" respawn_random="0" period_of_day="none">
<point x="147964" y="179708" z="-6117" h="0"/>
<npc id="22264"/>
<!--Black Stone Monolith-->
</spawn>
заменить правую часть, на ту как здесь.
public static Map<Integer, NpcLocation> _shadowSpawns = new HashMap<Integer, NpcLocation>();
public static Map<Integer, NpcLocation> _mysteriousBoxSpawns = new HashMap<Integer, NpcLocation>();
public static Map<Integer, List<NpcLocation>> _dukeFinalMobs = new HashMap<Integer, List<NpcLocation>>();
public static Map<Integer, List<NpcLocation>> _emperorsGraveNpcs = new HashMap<Integer, List<NpcLocation>>();
public static Map<Integer, List<NpcLocation>> _magicalMonsters = new HashMap<Integer, List<NpcLocation>>();
public static Map<Integer, List<NpcLocation>> _physicalMonsters = new HashMap<Integer, List<NpcLocation>>();
public static Map<Integer, Location> _startHallSpawns = new HashMap<Integer, Location>();
public static Map<Integer, Boolean> _hallInUse = new HashMap<Integer, Boolean>();
public static List<GateKeeper> _GateKeepers = new ArrayList<GateKeeper>();
public static Map<Integer, Integer> _keyBoxNpc = new HashMap<Integer, Integer>();
public static Map<Integer, Integer> _victim = new HashMap<Integer, Integer>();
public static Map<Integer, Boolean> _archonSpawned = new HashMap<Integer, Boolean>();
в этой функции переместить объявление переменной locations ниже без final
private static int loadSpawn(Map<Integer, List<NpcLocation>> table, int type) {
int count = 0;
try {
/* final List<NpcLocation> locations = new ArrayList<NpcLocation>();
*/
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setIgnoringComments(true);
final File file = new File(ServerConfig.DATAPACK_ROOT, "data/xmlscript/static/four_sepulchers_spawnlist.xml");
final Document document = factory.newDocumentBuilder().parse(file);
for (Node firstNode = document.getFirstChild(); firstNode != null; firstNode = firstNode.getNextSibling()) {
if ("list".equalsIgnoreCase(firstNode.getNodeName())) {
for (Node secondNode = firstNode.getFirstChild(); secondNode != null; secondNode = secondNode.getNextSibling()) {
if ("npc".equalsIgnoreCase(secondNode.getNodeName())) {
/*locations.clear();
*/
List<NpcLocation> locations = new ArrayList<NpcLocation>();
final NamedNodeMap attrs = secondNode.getAttributes();
final int npcKeyId = Integer.parseInt(attrs.getNamedItem("keyId").getNodeValue());
final int spawnType = Integer.parseInt(attrs.getNamedItem("spawnType").getNodeValue());
if (spawnType == type) {
for (Node thirdNode = secondNode.getFirstChild(); thirdNode != null; thirdNode = thirdNode.getNextSibling()) {
if ("data".equalsIgnoreCase(thirdNode.getNodeName())) {
final NamedNodeMap attrs1 = thirdNode.getAttributes();
final int templateId = Integer.parseInt(attrs1.getNamedItem("templateId").getNodeValue());
final String[] spawnLocationData = attrs1.getNamedItem("location").getNodeValue().split(",");
final int heading = Integer.parseInt(attrs1.getNamedItem("heading").getNodeValue());
final int x = Integer.parseInt(spawnLocationData[0]);
final int y = Integer.parseInt(spawnLocationData[1]);
final int z = Integer.parseInt(spawnLocationData[2]);
locations.add(new NpcLocation(x, y, z, heading, templateId));
count++;
}
}
table.put(npcKeyId, locations);
}
}
}
}
}
} catch (Exception e) {
_log.error("Error loading four_sepulchers_spawnlist.xml {}", e.getLocalizedMessage());
}
return count;
}
public boolean addSubClass(final int classId, final boolean storeOld, final int certification) {
if (classList.size() >= 4 + AllSettingsConfig.ALT_GAME_SUB_ADD) {
return false;
}
@Override
protected void onEvtDead(Creature killer) {
final NpcInstance actor = getActor();
if (_task != null) {
_task.cancel(false);
_task = null;
}
NpcUtils.spawnSingle(Batracos, Location.findPointToStay(actor, 250, 300), actor.getReflection());
actor.getReflection().startCollapseTimer(180000L);
if (killer.isPlayable()) {
final QuestState qs = killer.getPlayer().getQuestState(288);
if (qs != null && qs.getCond() == 1) {
if (abyss) {
qs.giveItems(15497, 1);
qs.setMemoState("take_care_please", String.valueOf(2), true);/* <------------*/
qs.setCond(3);
} else {
qs.giveItems(15498, 1);
qs.setMemoState("take_care_please", String.valueOf(2), true);/* <------------*/
qs.setCond(2);
}
}
}
super.onEvtDead(killer);
}
в 76 строку добавить
st.giveItems(voucher_of_trial, 1);
привести метод onKill к такому виду
@Override
public String onKill(NpcInstance npc, QuestState st) {
int GetMemoState = st.getInt("the_legendary_heroes");
int GetMemoStateEx = st.getInt("the_legendary_heroes_ex");
int npcId = npc.getNpcId();
if(GetMemoState == 1)
{
int mask = 1;
for (int i = 0; i < raids.length; i++)
{
if (raids[i] == npcId)
break;
mask = mask << 1;
}
npcId = st.getInt("RaidsKilled");
if ((npcId & mask) == 0) // этого босса еще не убивали
{
npcId |= mask;
st.setMemoState("RaidsKilled", String.valueOf(npcId), true);
st.giveItems(great_dragon_bone, 1);
}
}
return null;
}
в методе onKill все st.takeItems заменить на st.giveItems
Снимает только физический рут (арест) и вроде ловушку арбыТут имеется еще такой момент, скил у дагеров - Escape Shackle / Разорвать Оковы , кастуется, но не снимает рут с персонажа(дагера который находится в состоянии рута), может я чего то не понимаю в хрониках хф, на ит снимает многновенно рут. Сравнивал с другими сборками статы примерно одинаковы, где то в сурсах проблема
Всем привет!
На грации, после изучения трансформации и скила для сбора кристаллов,
при переходе в трансформацию скил сбора кристаллов не добавляется, он есть только без трансформации
пытался найти какой параметр отвечает за добавление скила, но так ничего не нашел
может кто нибудь подскажет где искать что копать)
Короче все хрень, это можно использовать только как временное решение, пока ищешь нормальный фикс. Так как если выставить этот скил в скриптах, появляется вне зависимости от того, изучен он или нет у персонажа, так же уровень скилла будет зависеть от того, какой мы указали в скриптах.работает, спасибо!
Rozhek знает, он работает над сборкой и оперативно делает фиксыКороче все хрень, это можно использовать только как временное решение, пока ищешь нормальный фикс. Так как если выставить этот скил в скриптах, появляется вне зависимости от того, изучен он или нет у персонажа, так же уровень скилла будет зависеть от того, какой мы указали в скриптах.
Может Rozhek уже знает метод решения)
Основная разница в том что при атаке или каком то действии сервер шлет stopmove packet. Это принудительная остановка для клиента. При обычном передвижении не шлет и ты сам добегаешь до точки.Что то до меня как до жирафа. При обычных перемещениях все нормально. Проблемы при атаке мобов, когда используется followToCharacter. Если кидать по своим координатам монетку, то получается что атака происходит на нормально расстоянии от моба (по серверу), по клиенту атакуем воздух. Сам моб вроде как стоит где нужно, даже удивляется что кто то его атакует "клинком воздушной ярости". Я уже подзапутался в коде, но вроде расчет передвижений для обычного перемещения и фоллов одинаков, где же собака зарыта?
Там дерьмо не фикшеное с 2009го.Многие хвалят овер геодвиг, в данной сборке он явно не доработан
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?