Написание сервера для lineage 2 chronicle 1 на node.js

Есть если нужно, старый допотопный java, эмуль. Понимаю что тогда только начинали мучать их, но возможно какую то полезную информацию можно достать.
 
Выкладывай) Если это конечно не l2jserver 0.4)))
 
Подскажите что с анимацией скилов ? Почему у одних есть конечная анимация а у других нет.


Разобрался.
Не хватало пакета MagicSkillLaunched
JavaScript:
function MagicSkillLaunched(player, skill) {
    this._packet = new ServerPacket(21);
    this._packet.writeC(0x8e)
        .writeD(player.objectId)
        .writeD(skill.id)
        .writeD(skill.level)
        .writeD(1) // data ???
        .writeD(player.target)
        
    return this._packet.getBuffer();
}

В сборке на java нет инфы по поводу ".writeD(1) // data ???".
Хотя в сборке от l2jbasic c4

writeD(_dat2); // failed or not

И при этом значение в переменной железно прописано 1 и никак не меняется.

Наверное пакет MagicSkillUse на запуск скила а MagicSkillLaunched гарантия что скил отработал. Потому как в видео выше я только использовал MagicSkillUse. Тогда все логично.


P.S. Какая-то странная анимация у Body To Mind. Анимация как у бафа.
P.S.S. Все же не логично то, что у некоторых скилов конечная анимация работает без MagicSkillLaunched. Ладно бы типы были разные но взять два бафа на крит и акумен. Конечная анимация бафа на крит работает а акумен только через MagicSkillLaunched.
P.S.S.S. Забавно, что боевые скилы можно на себя кастовать) суицидальные скилы)

writeD(_dat2); // failed or not
UPD: 1 - скилл проходит, 0 - не проходит. Вроде понятно зачем но в готовой сборке C4 l2jbasic там железно прописано 1.

Хотя это анимация. Анимация должна быть 100% а уже потом прошел эффект ice bolt или нет решается потом.Теперь не понятно зачем этот параметр))

P.S. Кажется, что 5 минут маловато для того, чтобы успеть отредактировать сообщение))
 
Последнее редактирование модератором:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Почитал тему с 1 поста до последнего 8 раз
на 9 раз из головы вышла черепаха, позвонил друг сказал что выйграл в лото, я сел на пылесос и полетел к нему.
 

С анимацией Body To Mind все ок, она такая и есть на C1.
Клиент никак не регламентирует каст скилов по таргету, это работа сервера. Мучаемся и прописываем условия ручками.
P.S: Зачекай параметр coolTime у скилов, он значительно влияет на анимацию, но не уверен что в C1 он был.
 
там по идее массив 1 это число таргетов
Какой ещё массив в пакете?))

Это были бы логично если б не одно но, которое я описал выше) два бафа но у одного есть конечная анимация а у другого нет)

А почему про анимацию я спрашиваю так как на я нашёл видео на ютубе где пвпшатся в c1 и тёмный эльф заливал себе ману этим скилом и анимация была как в c4

там по идее массив 1 это число таргетов
То есть ты имеешь ввиду если скилл массовой атаки там idшники тех кого коснулся скилл? Я прошёлся по другим сборка и там везде железно еденица прописана.

Извиняюсь за ошибки пишу с телефона)
 
Последнее редактирование модератором:

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

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

Согласно IDA: ваш параметр - affectedObjectsCount
Код:
  else if ( creature2->m_v.m_v.base.IsUser(creature) )
  {
    if ( affectedObjects._First )
    {
      affectedObjectsCount = affectedObjects._Last - affectedObjects._First;
    }
    else
    {
      affectedObjectsCount = 0;
    }
    user = creature->vtable->m_v.CastToUser(creature);
    CServerSocketBase::Send(user->m_d.m_userSocket, "cddddb", ServerToClientPacket_MagicSkillLaunched, creature->m_o_d.m_smartId.id, skillId, skillLevel, affectedObjectsCount, packetSize, buffer);
  }

Кстати, как я писал уже на этом форуме - у меня есть много тестов, которые покрываюту работ оригинального С1 сервера (формулы, пакеты, их очередность и содержимое, все ActionFailures и тд). Если действительно заинтересованы - прошу в приват
 
когда ожидать миграцию с1 птс на жс?
Специфика раннего L2 сервера - это 32х битные машины, в то время, как одних только НПС было около 22к в мире. 3 гигов RAM'a не хватало, были реальные технические ограничения. И ребята достойно потрудились, чтобы их обойти. Это все темные трюки с++, которые в жс не пойдут. У меня хобби - восстановить Л2 "as is" а не портировать для чего либо. То, что они сделали в 2002м без StackOverflow, без google'а, без принятых на сегодня стандартов в ИТ индустрии - это реально был топ инженерной мысли. Я на это смотрю просто как археолог
 

    kick

    Баллов: 78
    Так досих пор никто не смог и приблизиться к их уровню). Но зато ярые жабисты утверждают обратное и не понимают работу того же кешеда и кучи полезных плюх. Зато пытаются парсить в жсон, без реализации многих механик и возможностей :D.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обидно конечно что появились 64 машины
 
TC пошел в школу?
 
да за пару дней 5 страниц на форуме, а потом 1 сентября и тишина 8 дней.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Как мы могли забыть про scratch ? Я кароче на нем начинаю писать.