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

Abnormal Effect

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

Кто может пояснить как добавлять абнормалы в ядро!? И где их искать в клиенте!

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


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

1. ты даже сборку не сказал, но обычно абнормалы лежат в классе называющемся AbnormalEffect или типа того.

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

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

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


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

1. ты даже сборку не сказал, но обычно абнормалы лежат в классе называющемся AbnormalEffect или типа того.

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

1 я знаю, мне вот интересно как их доставать и перекручивать к ядру

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


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

а зачем доставать?

их можно узнать банальным перебором ид абнормалов - отсылая их скажем в пакете с инфой о персонаже/нпс и смотря как это выглядит, благо ид у них идут последовательно. точнее до GoD Tauti не ид, а значения для битовых карт (в виде которых и слались клиенту наложенные на объект абнормалы), а уже дальше просто в виде обычных ид.

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

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

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


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

а зачем доставать?

их можно узнать банальным перебором ид абнормалов - отсылая их скажем в пакете с инфой о персонаже/нпс и смотря как это выглядит, благо ид у них идут последовательно. точнее до GoD Tauti не ид, а значения для битовых карт (в виде которых и слались клиенту наложенные на объект абнормалы), а уже дальше просто в виде обычных ид.

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

Ну вот к примеру в клиенте нашел как сделать в сервере?

73 a,d_tali_deco_c\0 a,FX_RHAND_01\0 1 0 0 0.00000000 1.00000000

74 a,d_tali_deco_d\0 a,FX_RHAND_01\0 1 0 0 0.00000000 1.00000000

75 a,d_tali_deco_e\0 a,FX_RHAND_01\0 1 0 0 0.00000000 1.00000000

76 a,d_tali_deco_f\0 a,FX_RHAND_01\0 1 0 0 0.00000000 1.00000000

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


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

TALISMAN_POWER1("talismanpower1", 72, true, false),
TALISMAN_POWER2("talismanpower2", 73, true, false),
TALISMAN_POWER3("talismanpower3", 74, true, false),
TALISMAN_POWER4("talismanpower4", 75, true, false),
TALISMAN_POWER5("talismanpower5", 76, true, false),

 

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

 

private AbnormalEffect(String name, int mask)
{
 _name = name;
 _mask = mask;
 _special = false;
 _event = false;
}
private AbnormalEffect(String name, int mask, boolean special)
{
 _name = name;
 _mask = mask;
 _special = special;
 _event = false;
}
private AbnormalEffect(String name, int mask, boolean special, boolean event)
{
 _name = name;
 _mask = mask;
 _special = special;
 _event = event;
}

 

Ну или как там у вас сделано

  • Upvote 1

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


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

2 BrainEater:

 

в глори/линдвиоре ж уже не нужно конкретизировать тип абнормала (я про special и event) - вполне достаточно просто ид.

  • Upvote 1

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


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

2 Gaikotsu:

 

Ну просто как бы структура была заготовленная, я ее и оставил.

  • Upvote 1

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


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

тоесть вы имеете ввиду просто надо из клиента взять id и пихнуть в сервак???

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


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

ну типа того.

только учти что в AbnormalDefaultEffect перечислены всего несколько специальных абнормалов и все.

  • Upvote 1

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


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

ну типа того.

только учти что в AbnormalDefaultEffect перечислены всего несколько специальных абнормалов и все.

Если ты имееш ввиду которые в клиенте это да я заметил их мало но всетаки спасибо за помошь!

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


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

ну типа того.

только учти что в AbnormalDefaultEffect перечислены всего несколько специальных абнормалов и все.

Слушай, раз такое дело, не вспомнишь в каком файлике они, вподряд ли прописаны и чем открывать? :)

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


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

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

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

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


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

Слушай, раз такое дело, не вспомнишь в каком файлике они, вподряд ли прописаны и чем открывать? :)

AbnormalDefaultEffect.dat

Лежит в папке system, ну как и говорил гайкотсу там их мало т.е не все!

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


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

Явно не все. Но с 78 по 82 меняют внешний вид шмоток, соответственно от нг до ы.

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


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

ну там так-то на 82 не заканчивается

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

 

   CLOAK_AND_DIADEM("cloak_and_diadem", 77),    // одевает диадему и черный плащ
   SHAPE_D("shape_d", 78),    // меняет вид брони и оружия на D Grade
   SHAPE_C("shape_c", 79),    // меняет вид брони и оружия на C Grade
   SHAPE_B("shape_b", 80),    // меняет вид брони и оружия на B Grade
   SHAPE_A("shape_a", 81),    // меняет вид брони и оружия на A Grade
   SHAPE_S("shape_s", 82),    // меняет вид брони и оружия на S Grade
   SHAPE_BIKINI_A("shape_bikini_a", 83),    // меняет вид брони на белый купальник
   SHAPE_BIKINI_B("shape_bikini_b", 84),    // меняет вид брони на сине-белый купальник
   SHAPE_WEDDING("shape_wedding", 85),    // меняет вид брони на свадебное платье
   SHAPE_NINJA("shape_ninja", 86),    // меняет вид брони на одежду ниндзя
   SHAPE_TAIWAN("shape_taiwan", 87),    // меняет вид брони на тайваньскую национальную одежду
   SHAPE_MILITARY("shape_military", 88),    // меняет вид брони на военную форму
   SHAPE_METAL_SUIT("shape_metal_suit", 89),    // меняет вид брони на металлический костюм
   SHAPE_MAID_UNIFORM("shape_maid_uniform", 90),    // меняет вид брони на костюм горничной
   SHAPE_BIKINI_C("shape_bikini_c", 91),    // меняет вид брони на бело-фиолетовый купальник
   SHAPE_LIGHT_WEAPON("shape_light_weapon", 94),    // меняет вид оружия в руках на световое
   SHAPE_JAPAN_WEAPON("shape_japan_weapon", 95); // меняет вид оружия в руках на японское

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

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


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

Можите мне подсказать? Все абнормалы имеют вид Пример

VASPER_S("vasper_s", 0x0000800, 60)

если в ядро добавить абнормал без переменой типа

NxNNNNNNNN

то ядро начинает ругаться благим матом.

Чем это вызвано?

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

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


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

Это вызвано конструктором класса AbnormalEffect который имеет именно указанный формат.

 

но вот это вот 0x0000800 имеет определенную закономерность(могу ошибаться, т.к. вывел сам)

 

К примеру первый в списке идет 0x0000001, второй 0x0000002, третий 0x0000004, четвертый 0x0000008.

 

А вот пятый уже имеет 0x0000010, шестой 0x0000020 и так далее, с каждой 4кой абнормалов число сдвигается ближе к "0x", и далее сначала.

  • Upvote 1

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


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

это называется битовой маской, если что, и задает, какой бит в переменной, хранящей абнормалы будет выставлен в 1 или 0.

и эти значения являются степенями двойки, от 2^0 до 2^31.

 

к примеру эти битовые операции зададут значение переменной _abnormal в котором третий и десятый биты равны 1.

_abnormal = 0x00000004 | 0x00000200

именно таким образом до таути передавались наложенные абнормалы клиенту, в виде 3 32-битных переменных, выставленные биты в которых и указывали какой абнормал задействовать. таким образом несложно подсчитать, что максимальное количество абнормалов не могло быть больше 96.

 

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

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

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


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

Я с этой битовой маской встретился только в исходниках ФТ/L2jEurope, посему даже не вникал, просто некий 'DXVSI' попросил ему талики вписать ^^

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

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