bahamus 1 Опубликовано 31 октября, 2013 How to learn skill ? http://l2wiki.com/Revelation_Skills Thank Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
exspertxd 11 Опубликовано 31 октября, 2013 (изменено) How to learn skill ? http://l2wiki.com/Revelation_Skills Thank Revelation Skills can be learned after Awakening from Monk of Chaos NPC in the Reliquary of the Giants. Изменено 31 октября, 2013 пользователем exspertxd Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 Revelation Skills can be learned after Awakening from Monk of Chaos NPC in the Reliquary of the Giants. Ru: Да, только я их понапихал хардину En: Yes, but i do this in hardin diialog. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 А скажите, тестеры, клан нормально работает, не считая алли значка? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hmell 0 Опубликовано 31 октября, 2013 вроде да Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 Просто, сижу щас, обратил внимание на заблоченные кнопки в меню клана, хотя по идее, такое не должно быть, а с 23 я клан не трогал, вот и думаю в чём дело. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hmell 0 Опубликовано 31 октября, 2013 через админку можно нарисовать любой лвл клана Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 Я не про админку. Я в общем про меню клана. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hmell 0 Опубликовано 31 октября, 2013 изменения вида брони не работает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 изменения вида брони не работает Подробнее: 1)Что не работает 2)Как должно работать 3)Что за процесс. А не так, бросил фразу, типо баг Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
hmell 0 Опубликовано 31 октября, 2013 не реклама http://l2central.info/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B2%D0%B8%D0%B4%D0%B0 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 Какой именно камень не работает? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 Ru: Да, только я их понапихал хардину En: Yes, but i do this in hardin diialog. а что мешало их нужному нпс пихнуть? кстати я не очень понял где ты хранишь саб/дуал/ревелейшн скиллы? неужели в общей таблице скиллов персонажа? если да то как-то это не то - неудобно ими оперировать в таком случае. З.Ы. и еще у тебя косяк в списке скиллов дуалкласса - неправильные цены на изучение, некототорые скиллы требуют не 1 сертификат, а больше. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 а что мешало их нужному нпс пихнуть? кстати я не очень понял где ты хранишь саб/дуал/ревелейшн скиллы? неужели в общей таблице скиллов персонажа? если да то как-то это не то - неудобно ими оперировать в таком случае. З.Ы. и еще у тебя косяк в списке скиллов дуалкласса - неправильные цены на изучение, некототорые скиллы требуют не 1 сертификат, а больше. Под саб, под дуал и под ревелейшн отдельные древа сделаны. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 (изменено) я не про деревья в хмл - это само собой, я про то как у самого игрока эти выученные спецскиллы хранятся. у меня вот к примеру для всех подобных скиллов, которые явно не привязаны к конкретным классам персонажа, используется отдельная таблица - так намного проще с ними работать Изменено 31 октября, 2013 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 я не про деревья в хмл - это само собой, я про то как у самого игрока эти выученные спецскиллы хранятся. у меня вот к примеру для всех подобных скиллов, которые явно не привязаны к конкретным классам персонажа, используется отдельная таблица - так намного проще с ними работать Я не очень понимаю, почему неудобно, т.к. операций над ними как таковых, особо не проводится, отсюда не заморачивался с местом хранения. Меня больше волнует окно суммонов, когда удаленные петомцы, вновь появляются в окне, до того момента, пока не призовеш заного. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
bahamus 1 Опубликовано 31 октября, 2013 Bug Summer meleons can't reword item. [00:16:07] ERROR Exception: RunnableImpl.run(): null java.lang.NullPointerException at sw.awaken.gameserver.model.reward.RewardData.roll(RewardData.java:158 ) at events.SummerMeleons.MeleonAI.onEvtDead(MeleonAI.java:583) at sw.awaken.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:177) at sw.awaken.gameserver.ai.AbstractAI.notifyEvent(AbstractAI.java:121) at sw.awaken.gameserver.model.GameObjectTasks$NotifyAITask.runImpl(GameO bjectTasks.java:509) at sw.awaken.commons.threading.RunnableImpl.run(RunnableImpl.java:21) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 (изменено) 1. Я не очень понимаю, почему неудобно, т.к. операций над ними как таковых, особо не проводится, отсюда не заморачивался с местом хранения. 2. Меня больше волнует окно суммонов, когда удаленные петомцы, вновь появляются в окне, до того момента, пока не призовеш заного. 1. по мне дак проще удалять или выдавать их - меньше телодвижений по определению того, с какими конкретно скиллами имеющимися у игрока надо работать. еще один косячок у тебя с умениями откровения - у тебя только одно дерево изучения с ними есть - с обычной эссенцией, а их должно быть два почти одинаковых - во втором те еже самые скиллы но за эссенцию выдающуюся дуал классу при пробуждении. просто на основе и на дуале эти умения изучаются раздельно и за разные итемы. 2. ни разу с таким не сталкивался, ну хотя у меня механика работы с саммонами чуток другая (сервер у меня хоть и тоже имеет тот же первоисточник, т.е. ребелион, но уже изначально, как я начал над ним работать, являлся как бы чуток другой веткой уже - так что по сравнению с теми исходниками, которые Киллрой выложил весной и которые теперь все берут в качестве основы, имеет во многих деталях отличия). Изменено 31 октября, 2013 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 1. по мне дак проще удалять или выдавать их - меньше телодвижений по определению того, с какими конкретно скиллами имеющимися у игрока надо работать. еще один косячок у тебя с умениями откровения - у тебя только одно дерево изучения с ними есть - с обычной эссенцией, а их должно быть два почти одинаковых - во втором те еже самые скиллы но за эссенцию выдающуюся дуал классу при пробуждении. просто на основе и на дуале эти умения изучаются раздельно и за разные итемы. 2. ни разу с таким не сталкивался, ну хотя у меня механика работы с саммонами чуток другая (сервер у меня хоть и тоже имеет тот же первоисточник, т.е. ребелион, но уже изначально, как я начал над ним работать, являлся как бы чуток другой веткой уже). 1) Ладно с этим позже. 2) Вообще думал, что у тебя сурс First-team годовский. А косяк с сумоном вот: Собственно 3й суммон, "оставшийся", хотя по факту его не существует. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 ну такой косяк и я вызывал случайно, когда фиксил чуток другой баг - неосвобождение пойнтов для призыва, если саммон был не отозван, а убит (после чего помогал только рестарт или юзание /unsummon). правда я и не стал особо разбираться как я это вызвать умудрился, т.к. при окончательном фиксе моей проблемы прошло и это. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 ну такой косяк и я вызывал случайно, когда фиксил чуток другой баг - неосвобождение пойнтов для призыва, если саммон был не отозван, а убит (после чего помогал только рестарт или юзание /unsummon). правда я и не стал особо разбираться как я это вызвать умудрился, т.к. при окончательном фиксе моей проблемы прошло и это. Ну не знаю, посмотрю в сторону очков. 4й час сижу ковыряю, начиная от очистки HashMap с кол-вом суммонов, заканчивая Перебором методов удаления Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 (изменено) вобще за удаление из этого списка на экране по идее отвчеает вроде как пакет PetDelete, но он у тебя в любом случае должен вызываться при вызове onDelete класса Summon после чего правда требуется снова отослать PetInfo по оставшимся суммонам, т.к. лично у меня клиент после получения PetDelete убирал данный список полностью @Override protected void onDelete() { Player owner = getPlayer(); Party party = owner.getParty(); if (party != null) party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this)); owner.sendPacket(new PetDelete(getSummonType(), getObjectId())); if (isDead() && owner.getSummonList().servitorsCount() > 0) for (Summon summon : owner.getSummonList().getServitors()) owner.sendPacket(new PetInfo(summon)); stopDecay(); super.onDelete(); } Изменено 31 октября, 2013 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 (изменено) вобще за удаление из этого списка на экране по идее отвчеает вроде как пакет PetDelete, но он у тебя в любом случае должен вызываться при вызове onDelete класса Summon @Override protected void onDelete() { Player owner = getPlayer(); Party party = owner.getParty(); if (party != null) party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this)); owner.sendPacket(new PetDelete(getSummonType(), getObjectId())); if (isDead() && owner.getSummonList().servitorsCount() > 0) for (Summon summon : owner.getSummonList().getServitors()) owner.sendPacket(new PetInfo(summon)); stopDecay(); super.onDelete(); } Вот сидел собирал @Override protected void onDelete() { Player owner = getPlayer(); Party party = owner.getParty(); if(party != null) { party.broadcastToPartyMembers(owner, new ExPartyPetWindowDelete(this)); } owner.removePet(this); for(Summon summons : owner.getPets()) { owner.sendPacket(new PetDelete(summons.getObjectId(), getSummonType())); owner.sendPacket(new PetInfo(summons)); owner.sendPacket(new PetStatusUpdate(summons)); } /**if (isSummon()) { Summon summons = owner.getPets(); if (summons > 0) { for (int i = summons.length - 1; i >= 0; i--) { owner.sendPacket(new PetInfo(summons[i])); } } }*/ stopDecay(); sendStatusUpdate(); super.onDelete(); } И до кучи, плеерские методы суммонерства: @Override public Collection<Summon> getPets() { if(_summons != null) { return _summons.values(); } return new ArrayList<Summon>(0); } public Summon getPet(Summon s) { return _summons.get(s); } public boolean hasPet(int objectId) { for(Summon s : _summons.values()) { if(s.getObjectId() == objectId) { return true; } } return false; } public boolean isHaveDeadPets() { for(Summon summon : getPets()) { if(summon.isDead()) { return true; } } return false; } @Override public int getPetCount() { return _summons.size(); } @Override public boolean isHaveSummonedPets() { for(Summon summon : getPets()) { if(summon.isPet()) { return true; } } return false; } @Override public Summon getFirstPet() { for(Summon summon : getPets()) { if(summon != null) { return summon; } } return null; } public boolean isHavePet(int npcId) { for(Summon currentSummon : getPets()) { if(currentSummon.getNpcId() == npcId) { return true; } } return false; } public void addPet(Summon summon) { if(summon != null) { _summons.put(summon.getObjectId(), summon); } else { for(Summon currentSummon : getPets()) { if(currentSummon.isPet()) { if(isLogoutStarted() && getPetControlItem() != null) { setVar("pet", String.valueOf(getPetControlItem().getObjectId()), -1L); setPetControlItem(null); } getEffectList().stopEffect(4140); } } } } public void removePet(Summon summon) { for (Summon s : getPets()) { s.unSummon(); _summons.remove(s.getObjectId()); _summons.clear(); s.sendPetInfo(); } } Изменено 31 октября, 2013 пользователем DevGoD Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 31 октября, 2013 ну у меня класс в котором вся работа с саммонами/петами игрока - намного более объемная и основательная (почти полтысячи строк в классе SummonList) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DevGoD 342 Опубликовано 31 октября, 2013 ну у меня класс в котором вся работа с саммонами/петами игрока - намного более объемная и основательная (почти полтысячи строк в классе SummonList) спасибо, наблюдал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты