Показать сообщение отдельно
Непрочитано 15.02.2010, 16:17   #12
Аватар для MetaWind
Герой

По умолчанию Re: Делаем ТП в бездну

Цитата:
Сообщение от ViAl Посмотреть сообщение
Так рифты не юзабельные же вроде?
Открываем в исходниках
AE-go_GameServer\src\com\aionemu\gameserver\spawnengi ne\RiftSpawnManager.java


Сейчас обьясню по блокам что к чему
Этот блок отвичает за респ рифтов, а конкретно за количество респающихся одновременно. Добавим один свой рифт в Абисс.

{
RiftEnum rift1 = RiftEnum.values()[Rnd.get(0, 6)];
RiftEnum rift2 = RiftEnum.values()[Rnd.get(7, 13)];
RiftEnum rift3 = RiftEnum.values()[Rnd.get(14, 20)];
RiftEnum rift4 = RiftEnum.values()[Rnd.get(21, 27)];
RiftEnum rift5 = RiftEnum.values()[Rnd.get(28,29)];

spawnRift(rift1);
spawnRift(rift2);
spawnRift(rift3);
spawnRift(rift4);
spawnRift(rift5);
}


Теперь у нас есть рифт и мы должны указать точку респауна

Обратите внимание - Последняя указанная точка спауна - это конец перечисления и после нее всегда ставится не точка, а точка с запятой(!)

Теперь мы напишем спаун одного своего рифта(в блоке перечисления private enum RiftEnum):

ELTENENABYSS_VHOD("ELTENENABYSS_VHOD", "ELTENENABYSS_VIHOD", 99, 50);

у нас получилось примерно так:

ELTNEN_AM("ELTNEN_AM", "MORHEIM_AS", 12, 28),
ELTNEN_BM("ELTNEN_BM", "MORHEIM_BS", 20, 32),
ELTNEN_CM("ELTNEN_CM", "MORHEIM_CS", 35, 36),
ELTNEN_DM("ELTNEN_DM", "MORHEIM_DS", 35, 37),
ELTNEN_EM("ELTNEN_EM", "MORHEIM_ES", 45, 40),
ELTNEN_FM("ELTNEN_FM", "MORHEIM_FS", 50, 40),
ELTNEN_GM("ELTNEN_GM", "MORHEIM_GS", 50, 45),

HEIRON_AM("HEIRON_AM", "BELUSLAN_AS", 24, 35),
HEIRON_BM("HEIRON_BM", "BELUSLAN_BS", 36, 35),
HEIRON_CM("HEIRON_CM", "BELUSLAN_CS", 48, 46),
HEIRON_DM("HEIRON_DM", "BELUSLAN_DS", 48, 40),
HEIRON_EM("HEIRON_EM", "BELUSLAN_ES", 60, 50),
HEIRON_FM("HEIRON_FM", "BELUSLAN_FS", 60, 50),
HEIRON_GM("HEIRON_GM", "BELUSLAN_GS", 72, 50),

MORHEIM_AM("MORHEIM_AM", "ELTNEN_AS", 12, 28),
MORHEIM_BM("MORHEIM_BM", "ELTNEN_BS", 20, 32),
MORHEIM_CM("MORHEIM_CM", "ELTNEN_CS", 35, 36),
MORHEIM_DM("MORHEIM_DM", "ELTNEN_DS", 35, 37),
MORHEIM_EM("MORHEIM_EM", "ELTNEN_ES", 45, 40),
MORHEIM_FM("MORHEIM_FM", "ELTNEN_FS", 50, 40),
MORHEIM_GM("MORHEIM_GM", "ELTNEN_GS", 50, 45),

BELUSLAN_AM("BELUSLAN_AM", "HEIRON_AS", 24, 35),
BELUSLAN_BM("BELUSLAN_BM", "HEIRON_BS", 36, 35),
BELUSLAN_CM("BELUSLAN_CM", "HEIRON_CS", 48, 46),
BELUSLAN_DM("BELUSLAN_DM", "HEIRON_DS", 48, 40),
BELUSLAN_EM("BELUSLAN_EM", "HEIRON_ES", 60, 50),
BELUSLAN_FM("BELUSLAN_FM", "HEIRON_FS", 60, 50),
BELUSLAN_GM("BELUSLAN_GM", "HEIRON_GS", 72, 50),


ELTENENABYSS_VHOD("ELTENENABYSS_VHOD", "ELTENENABYSS_VIHOD", 99, 50);

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

наша добавленная строчка будет стоять в конце, потому ставим после нее ; а перед предыдущей строчкой меняем ; на ,

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

в этой строке меняем множитель

private static final int RIFT_LIFETIME = 26 * 60 * 1000;
на
private static final int RIFT_LIFETIME = 99 * 60 * 1000;

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

И так всё готово, нам осталось только прописать координаты рифтов, для этого открываем фаил
data\static_data\spawns\Rifts\rifts.xml

прописываем туда свой рифты... таким методом
Первый рифт этот тот в который мы войдем

<spawn map="210020000" npcid="700137" pool="1" handler="RIFT" anchor="ELTENENABYSS_VHOD">
<object x="икс рифта" y="У рифта" z="З рифта" h="0"/>
</spawn>

Где anchor обозначает тип рифта (вход или выход)

Второй это тот из которого выйдем

<spawn map="400010000" npcid="700137" pool="1" handler="RIFT" anchor="ELTENENABYSS_VIHOD">
<object x="икс рифта" y="У рифта" z="З рифта" h="0"/>
</spawn>


Компилируем, врубаем, радуемся своему новому, рабочему, рифту.
__________________

Последний раз редактировалось MetaWind; 15.02.2010 в 17:40.
MetaWind вне форума Отправить сообщение для MetaWind с помощью ICQ Отправить сообщение для MetaWind с помощью Skype™ Ответить с цитированием
Сказали спасибо: