Перейти к содержанию
Авторизация  
DevGoD

[Awaken-Dev] Lindvior: 23.10.13

Рекомендуемые сообщения

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.

Изменено пользователем exspertxd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • Revelation Skills can be learned after Awakening from Monk of Chaos NPC in the Reliquary of the Giants.

 

Ru: Да, только я их понапихал хардину :D

En: Yes, but i do this in hardin diialog.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А скажите, тестеры, клан нормально работает, не считая алли значка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто, сижу щас, обратил внимание на заблоченные кнопки в меню клана, хотя по идее, такое не должно быть, а с 23 я клан не трогал, вот и думаю в чём дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

через админку можно нарисовать любой лвл клана

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

изменения вида брони не работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

изменения вида брони не работает

 

Подробнее:

1)Что не работает

2)Как должно работать

3)Что за процесс.

 

А не так, бросил фразу, типо баг

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

Ru: Да, только я их понапихал хардину :D

En: Yes, but i do this in hardin diialog.

а что мешало их нужному нпс пихнуть? :)

кстати я не очень понял где ты хранишь саб/дуал/ревелейшн скиллы? неужели в общей таблице скиллов персонажа? если да то как-то это не то - неудобно ими оперировать в таком случае.

 

З.Ы. и еще у тебя косяк в списке скиллов дуалкласса - неправильные цены на изучение, некототорые скиллы требуют не 1 сертификат, а больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а что мешало их нужному нпс пихнуть? :)

кстати я не очень понял где ты хранишь саб/дуал/ревелейшн скиллы? неужели в общей таблице скиллов персонажа? если да то как-то это не то - неудобно ими оперировать в таком случае.

 

З.Ы. и еще у тебя косяк в списке скиллов дуалкласса - неправильные цены на изучение, некототорые скиллы требуют не 1 сертификат, а больше.

 

Под саб, под дуал и под ревелейшн отдельные древа сделаны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я не про деревья в хмл - это само собой, я про то как у самого игрока эти выученные спецскиллы хранятся.

 

у меня вот к примеру для всех подобных скиллов, которые явно не привязаны к конкретным классам персонажа, используется отдельная таблица - так намного проще с ними работать

 

 

pre_1383237439__snap0557.png

 

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я не про деревья в хмл - это само собой, я про то как у самого игрока эти выученные спецскиллы хранятся.

 

у меня вот к примеру для всех подобных скиллов, которые явно не привязаны к конкретным классам персонажа, используется отдельная таблица - так намного проще с ними работать

 

 

pre_1383237439__snap0557.png

 

 

Я не очень понимаю, почему неудобно, т.к. операций над ними как таковых, особо не проводится, отсюда не заморачивался с местом хранения.

 

Меня больше волнует окно суммонов, когда удаленные петомцы, вновь появляются в окне, до того момента, пока не призовеш заного.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

1. Я не очень понимаю, почему неудобно, т.к. операций над ними как таковых, особо не проводится, отсюда не заморачивался с местом хранения.

 

2. Меня больше волнует окно суммонов, когда удаленные петомцы, вновь появляются в окне, до того момента, пока не призовеш заного.

1. по мне дак проще удалять или выдавать их - меньше телодвижений по определению того, с какими конкретно скиллами имеющимися у игрока надо работать.

еще один косячок у тебя с умениями откровения - у тебя только одно дерево изучения с ними есть - с обычной эссенцией, а их должно быть два почти одинаковых - во втором те еже самые скиллы но за эссенцию выдающуюся дуал классу при пробуждении. просто на основе и на дуале эти умения изучаются раздельно и за разные итемы.

 

2. ни разу с таким не сталкивался, ну хотя у меня механика работы с саммонами чуток другая (сервер у меня хоть и тоже имеет тот же первоисточник, т.е. ребелион, но уже изначально, как я начал над ним работать, являлся как бы чуток другой веткой уже - так что по сравнению с теми исходниками, которые Киллрой выложил весной и которые теперь все берут в качестве основы, имеет во многих деталях отличия).

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. по мне дак проще удалять или выдавать их - меньше телодвижений по определению того, с какими конкретно скиллами имеющимися у игрока надо работать.

еще один косячок у тебя с умениями откровения - у тебя только одно дерево изучения с ними есть - с обычной эссенцией, а их должно быть два почти одинаковых - во втором те еже самые скиллы но за эссенцию выдающуюся дуал классу при пробуждении. просто на основе и на дуале эти умения изучаются раздельно и за разные итемы.

 

2. ни разу с таким не сталкивался, ну хотя у меня механика работы с саммонами чуток другая (сервер у меня хоть и тоже имеет тот же первоисточник, т.е. ребелион, но уже изначально, как я начал над ним работать, являлся как бы чуток другой веткой уже).

 

1) Ладно с этим позже.

2) Вообще думал, что у тебя сурс First-team годовский.

А косяк с сумоном вот:

pre_1383241447__screenshot_2.png

 

Собственно 3й суммон, "оставшийся", хотя по факту его не существует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну такой косяк и я вызывал случайно, когда фиксил чуток другой баг - неосвобождение пойнтов для призыва, если саммон был не отозван, а убит (после чего помогал только рестарт или юзание /unsummon).

правда я и не стал особо разбираться как я это вызвать умудрился, т.к. при окончательном фиксе моей проблемы прошло и это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну такой косяк и я вызывал случайно, когда фиксил чуток другой баг - неосвобождение пойнтов для призыва, если саммон был не отозван, а убит (после чего помогал только рестарт или юзание /unsummon).

правда я и не стал особо разбираться как я это вызвать умудрился, т.к. при окончательном фиксе моей проблемы прошло и это.

 

Ну не знаю, посмотрю в сторону очков. 4й час сижу ковыряю, начиная от очистки HashMap с кол-вом суммонов, заканчивая Перебором методов удаления :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вобще за удаление из этого списка на экране по идее отвчеает вроде как пакет 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();
   }

 

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вобще за удаление из этого списка на экране по идее отвчеает вроде как пакет 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();
    }
}

Изменено пользователем DevGoD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну у меня класс в котором вся работа с саммонами/петами игрока - намного более объемная и основательная (почти полтысячи строк в классе SummonList) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну у меня класс в котором вся работа с саммонами/петами игрока - намного более объемная и основательная (почти полтысячи строк в классе SummonList) :)

 

спасибо, наблюдал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...