Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Hero Aura (https://forum.zone-game.info/showthread.php?t=37497)

Phantomas 14.01.2015 22:05

Hero Aura
 
Еще раз добрый вечер уважаемые пользователи. Создаю ГвЕ сервер и вот посетила мысль реализовать Статус Героя который выдается автоматически (Сразу на поле боя) за пвп игроку у которого больше всех славы в своем классе. Все хорошо, работает но не как не могу сделать так чтобы при получения Героя у каждой Фракции был разный цвет подсветки.
(При стоздании фракции Аура не выдется, только цвет ника)
Буду рад любой помощи.



Вот код который отвечает за Героя и присваивает цвет ауры.


Heroes:
Свернуть ↑Развернуть ↓

Johnson 14.01.2015 22:19

Re: Hero Aura
 
По-простому - ни как.
По-простому можно только заменить цвет свечения героя на другой (и то не совсем по-простому).

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

Добавлено через 1 минуту
Самое простое, что можете сделать - это присваивать сторонам свечения как при дуэли.
player.setTeam(1) и player.setTeam(2) соответственно.

Influence 14.01.2015 22:42

Re: Hero Aura
 
Цитата:

Сообщение от Phantomas (Сообщение 384297)
Еще раз добрый вечер уважаемые пользователи. Создаю ГвЕ сервер и вот посетила мысль реализовать Статус Героя который выдается автоматически (Сразу на поле боя) за пвп игроку у которого больше всех славы в своем классе. Все хорошо, работает но не как не могу сделать так чтобы при получения Героя у каждой Фракции был разный цвет подсветки.
(При стоздании фракции Аура не выдется, только цвет ника)
Буду рад любой помощи.



Вот код который отвечает за Героя и присваивает цвет ауры.


Heroes:
Свернуть ↑Развернуть ↓


Для вставки кода используйте
Код:

[CODE*] тут код(символ "*" удалить)[/CODE*]
Пример:
как надо:
Свернуть ↑Развернуть ↓

Phantomas 14.01.2015 23:01

Re: Hero Aura
 
Johnson, самое простое я и делал вот 2 кода отвечающих за цвет 2-ум фракциям
if(_activeChar.getFactionId()==1)
writeC(0x01);
else if(_activeChar.getFactionId()==2)
writeC(0x02);
else
writeC(0x00);
-----
if(_decoy.getOwner().getFactionId()==1)
writeC(0x01);
else if(_decoy.getOwner().getFactionId()==2)
writeC(0x02);
else
writeC(0x00);
потому и прошу о помощи.
Добавлено через 8 минут
и зачем лезть в клиент? нельзя убрать твт и хиро свечение в Серверпакете

// if(_activeChar.getTeam()==1)
// writeC(0x01); //team circle around feet 1= Blue, 2 = red
// else if(_activeChar.getTeam()==2)
// writeC(0x02); //team circle around feet 1= Blue, 2 = red
// else
// writeC(0x00); //team circle around feet 1= Blue, 2 = red
и
- writeC(_activeChar.isHero() ? 0x01 : 0x00);
+ writeC(0x00);
и сделать 2 цвета?
if(_decoy.getOwner().isHero())
{
writeC(0x01);
}
else
{
writeC(0x00);
}
и
if(_decoy.getOwner().isHeroTwo())
{
writeC(0x02);
}
else
{
writeC(0x00);
}
и привизать их к каждой фракции к герою? и по аналогичному принцыпу Хиро менеджера 2 и так у каждой фракции будет герой. У добра свой герой - (Глад), и у Зла свой герой- (Глад) герой.
Я и так поудалял все что касается Геройства и олимпиады, повторюсь. я создаю личную олимпиаду в пвп виде.

Johnson 14.01.2015 23:20

Re: Hero Aura
 
Свечение в клиенте организовано через L2Effect.
В клиенте только один вариант свечения, он использует свою текстуру для создания партиклов.
Эту текстуру по-простому можно только заменить, получив другой цвет (и в небольших пределах вид) свечения.
Можно переделать l2effect.u, чтобы сделать свечение совсем с другим эффектом.
Но чтобы добавить второй (третий/пятый/десятый) тип свечения по выбору - придется engine.dll научить понимать выбор этого типа в пакете - сейчас он понимает только 0x00 (выкл) и 0x01 (вкл).

Теперь понятнее?

Добавлено через 1 минуту
Либо я совсем не понимаю, что вам требуется.

Если под "цветом свечения героя" вы понимаете светящийся красный/синий круг под ногами - то я не понимаю в чем сложность?

Добавлено через 4 минуты
Если просто нужно, чтобы одна фракция светила синим под ногами, а вторая красным - то просто уберите L2PCInstance.team и используйте для определения свою фракцию и условие, что персонаж - герой.

Код:

if (player.isHero(){
        if (player.getFactionId() == 1){
                writeC(0x01);
        } else {
                writeC(0x02);
        }
} else {
        writeC(0x00);
}

Добавлено через 7 минут
PS: имхо, но делать по два героя одного класса не лучшая идея для геймплея.
Вам же нужно противостояние фракций?
Так сделайте, чтобы фракция, имеющая больше героев получала некие бонусы, а "проигрывающая" - другие бонусы, позволяющие проще получить геройства (постоянный баф, к примеру, или усиленный баф на олимпиаде).
Сыграйте на зависти и гордыне, серверу нужна драма и срач, чтобы он не протух.
Но дайте возможность игре постоянно балансировать по количеству. У Эльфов больше героев - получают бонус к экспе и/или еще чему-то, а Орки получают бафы на оли. Получится, что следующий период Орки с большим шансом наберут больше героев и ситуация изменится. В итоге срач на весь сервер, дарама и вопли. Всем интересно, все продолжают играть и задрить.

Phantomas 14.01.2015 23:29

Re: Hero Aura
 
ДА именно за это я и спрашываю): "красный/синий круг под ногами У фракции Добра/зла"

Johnson 14.01.2015 23:33

Re: Hero Aura
 
Ну, тогда ответ я дал.
В UserInfo и CharInfo сделайте, что если игрок герой - то ему присвоится свечение в зависимости от фракции.
А поля и методы, отвечающие за team вообще удалите, если не планируете их использовать в ивентах.

Phantomas 15.01.2015 00:18

Re: Hero Aura
 
Йома йо как же я сам не додумался...
Johnson, спасибо что направил на путь истины, все работает))))

//Faction Good = 1 Blue, Faction Evil = 2 Red
if(_activeChar.isHero()){
if(_activeChar.getFactionId() == 1)
writeC(0x01);
else if(_activeChar.getFactionId() == 2)
writeC(0x02);
}
else
writeC(0x00);

Johnson 15.01.2015 00:23

Re: Hero Aura
 
Цитата:

Сообщение от Phantomas (Сообщение 384323)
if(_activeChar.getFactionId() == 1)
writeC(0x01);
else if(_activeChar.getFactionId() == 2)

А что, возможно, что _activeChar.getFactionId() будет равен 0 или 3? Если нет - то зачем второе условие? Просто else.
PS: Приучайте себя все условные операторы окружать блоком { } (как в моем примере), на много читабельнее, и это хороший тон.

Phantomas 15.01.2015 00:35

Re: Hero Aura
 
Я Java никогда не изучал, просто переписывал diff-ы около года)))) и замечательные успехи... лудше посидеть почитать мануалы, 100 раз попробовать и сделать самому и заодно изучить ядро сервера чем перечитывать кучу лишней инормации. Хорошо буду работать над этим еще раз спасибо.


Текущее время: 02:11. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot