Сообщений: 14
Тем: 4
Зарегистрирован: Jan 2015
Репутация:
-46
Еще раз добрый вечер уважаемые пользователи. Создаю ГвЕ сервер и вот посетила мысль реализовать Статус Героя который выдается автоматически (Сразу на поле боя) за пвп игроку у которого больше всех славы в своем классе. Все хорошо, работает но не как не могу сделать так чтобы при получения Героя у каждой Фракции был разный цвет подсветки.
(При стоздании фракции Аура не выдется, только цвет ника)
Буду рад любой помощи.
Вот код который отвечает за Героя и присваивает цвет ауры.
Heroes
Config.java
public static int STATUS_NAME_COLOR3;
public static int STATUS_NAME_COLOR4;
public static int STATUS_NAME_COLOR5;
// Статус Героя
public static int STATUS_HERO;
/**
* This class initializes all global variables for configuration.<br>
@@ -1521,6 +1523,8 @@
STATUS_NAME_COLOR3 = Integer.parseInt(Warsetting.getProperty("StatusNameColor3", "200"));
STATUS_NAME_COLOR4 = Integer.parseInt(Warsetting.getProperty("StatusNameColor4", "300"));
STATUS_NAME_COLOR5 = Integer.parseInt(Warsetting.getProperty("StatusNameColor5", "400"));
+
+ STATUS_HERO = Integer.parseInt(Warsetting.getProperty("StatusHero", "500"));
===================================================================
---
L2PcInstance.java
_pledgeClass = classId;
checkItemRestriction();
}
+
+ public void setHeroStatus(boolean hero)
+ {
+ if(hero){
+ setHero(true);
+ }else{
+ setHero(false);
+ }
+ }
public void setRang(int karma)
{
+ if (karma >= Config.STATUS_HERO) {
+ setHeroStatus(true);
+ _pledgeClass = 6;
+ return;
+ }
+ else
+ {
+ if(isHero())
+ {
+ setHeroStatus(false);
+ }
+ }
+
+
if(karma >= Config.STATUS_NAME_COLOR5)
{
_pledgeClass = 5; //Генерал
===================================================================
---
AbstractNpcInfo.java
writeD((int) _decoy.getOwner().getCurrentCp());
writeC(_decoy.getOwner().isMounted() ? 0 : _decoy.getOwner().getEnchantEffect());
+ // if(_decoy.getOwner().getTeam()==1)
+ // writeC(0x01); //team circle around feet 1= Blue, 2 = red
+ // else if(_decoy.getOwner().getTeam()==2)
+ // writeC(0x02); //team circle around feet 1= Blue, 2 = red
+ // else
+ // writeC(0x00); //team circle around feet 1= Blue, 2 = red
+ if(_decoy.getOwner().isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_decoy.getOwner().getClanCrestLargeId());
writeC(_decoy.getOwner().isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_decoy.getOwner().isHero() ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_decoy.getOwner().isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_decoy.getOwner().getFishx());
===================================================================
---
CharInfo.java
writeD(0x00); //?
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_activeChar.getFishx());
===================================================================
---
GMViewCharacterInfo.java
writeD(_activeChar.getPledgeClass()); //changes the text above CP on Status Window
writeC(_activeChar.isNoble() ? 0x01 : 0x00);
- writeC(_activeChar.isHero() ? 0x01 : 0x00);
+ writeC(0x00);
writeD(_activeChar.getAppearance().getNameColor());
writeD(_activeChar.getAppearance().getTitleColor());
===================================================================
UserInfo.java
writeD((int) _activeChar.getCurrentCp());
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }else
+ {
+ writeC(0x00);
+ }
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); //0x01: Hero Aura
+ writeC(0x00); //0x01: Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
writeD(_activeChar.getFishx()); //fishing x
Сообщений: 69
Тем: 7
Зарегистрирован: Jan 2015
Репутация:
88
01-14-2015, 10:19 PM
(Сообщение последний раз редактировалось: 01-14-2015, 10:20 PM Johnson.)
По-простому - ни как.
По-простому можно только заменить цвет свечения героя на другой (и то не совсем по-простому).
Чтобы сделать два цветам вам нужен очень хороший реверс-инженер, способный сделать из этого два разных эффекта и переделать пакет в клиенте. Будет стоить очень дорого, но сомневаюсь даже, что кто-то возьмется.
Добавлено через 1 минуту
Самое простое, что можете сделать - это присваивать сторонам свечения как при дуэли.
player.setTeam(1) и player.setTeam(2) соответственно.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Сообщений: 666
Тем: 15
Зарегистрирован: Aug 2014
Репутация:
1,790
Phantomas Написал:Еще раз добрый вечер уважаемые пользователи. Создаю ГвЕ сервер и вот посетила мысль реализовать Статус Героя который выдается автоматически (Сразу на поле боя) за пвп игроку у которого больше всех славы в своем классе. Все хорошо, работает но не как не могу сделать так чтобы при получения Героя у каждой Фракции был разный цвет подсветки.
(При стоздании фракции Аура не выдется, только цвет ника)
Буду рад любой помощи.
Вот код который отвечает за Героя и присваивает цвет ауры.
Heroes
Config.java
public static int STATUS_NAME_COLOR3;
public static int STATUS_NAME_COLOR4;
public static int STATUS_NAME_COLOR5;
// Статус Героя
public static int STATUS_HERO;
/**
* This class initializes all global variables for configuration.<br>
@@ -1521,6 +1523,8 @@
STATUS_NAME_COLOR3 = Integer.parseInt(Warsetting.getProperty("StatusNameColor3", "200"));
STATUS_NAME_COLOR4 = Integer.parseInt(Warsetting.getProperty("StatusNameColor4", "300"));
STATUS_NAME_COLOR5 = Integer.parseInt(Warsetting.getProperty("StatusNameColor5", "400"));
+
+ STATUS_HERO = Integer.parseInt(Warsetting.getProperty("StatusHero", "500"));
===================================================================
---
L2PcInstance.java
_pledgeClass = classId;
checkItemRestriction();
}
+
+ public void setHeroStatus(boolean hero)
+ {
+ if(hero){
+ setHero(true);
+ }else{
+ setHero(false);
+ }
+ }
public void setRang(int karma)
{
+ if (karma >= Config.STATUS_HERO) {
+ setHeroStatus(true);
+ _pledgeClass = 6;
+ return;
+ }
+ else
+ {
+ if(isHero())
+ {
+ setHeroStatus(false);
+ }
+ }
+
+
if(karma >= Config.STATUS_NAME_COLOR5)
{
_pledgeClass = 5; //Генерал
===================================================================
---
AbstractNpcInfo.java
writeD((int) _decoy.getOwner().getCurrentCp());
writeC(_decoy.getOwner().isMounted() ? 0 : _decoy.getOwner().getEnchantEffect());
+ // if(_decoy.getOwner().getTeam()==1)
+ // writeC(0x01); //team circle around feet 1= Blue, 2 = red
+ // else if(_decoy.getOwner().getTeam()==2)
+ // writeC(0x02); //team circle around feet 1= Blue, 2 = red
+ // else
+ // writeC(0x00); //team circle around feet 1= Blue, 2 = red
+ if(_decoy.getOwner().isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_decoy.getOwner().getClanCrestLargeId());
writeC(_decoy.getOwner().isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_decoy.getOwner().isHero() ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_decoy.getOwner().isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_decoy.getOwner().getFishx());
===================================================================
---
CharInfo.java
writeD(0x00); //?
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_activeChar.getFishx());
===================================================================
---
GMViewCharacterInfo.java
writeD(_activeChar.getPledgeClass()); //changes the text above CP on Status Window
writeC(_activeChar.isNoble() ? 0x01 : 0x00);
- writeC(_activeChar.isHero() ? 0x01 : 0x00);
+ writeC(0x00);
writeD(_activeChar.getAppearance().getNameColor());
writeD(_activeChar.getAppearance().getTitleColor());
===================================================================
UserInfo.java
writeD((int) _activeChar.getCurrentCp());
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }else
+ {
+ writeC(0x00);
+ }
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); //0x01: Hero Aura
+ writeC(0x00); //0x01: Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
writeD(_activeChar.getFishx()); //fishing x
Для вставки кода используйте Код: [CODE[color=Red]*[/color]] [color=Red]тут код(символ "*" удалить)[/color][/CODE[color=red]*[/color]]
Пример:
как надо
Код: Config.java
public static int STATUS_NAME_COLOR3;
public static int STATUS_NAME_COLOR4;
public static int STATUS_NAME_COLOR5;
// Статус Героя
public static int STATUS_HERO;
/**
* This class initializes all global variables for configuration.<br>
@@ -1521,6 +1523,8 @@
STATUS_NAME_COLOR3 = Integer.parseInt(Warsetting.getProperty("StatusNam eColor3", "200"));
STATUS_NAME_COLOR4 = Integer.parseInt(Warsetting.getProperty("StatusNam eColor4", "300"));
STATUS_NAME_COLOR5 = Integer.parseInt(Warsetting.getProperty("StatusNam eColor5", "400"));
+
+ STATUS_HERO = Integer.parseInt(Warsetting.getProperty("StatusHer o", "500"));
================================================== =================
---
L2PcInstance.java
_pledgeClass = classId;
checkItemRestriction();
}
+
+ public void setHeroStatus(boolean hero)
+ {
+ if(hero){
+ setHero(true);
+ }else{
+ setHero(false);
+ }
+ }
public void setRang(int karma)
{
+ if (karma >= Config.STATUS_HERO) {
+ setHeroStatus(true);
+ _pledgeClass = 6;
+ return;
+ }
+ else
+ {
+ if(isHero())
+ {
+ setHeroStatus(false);
+ }
+ }
+
+
if(karma >= Config.STATUS_NAME_COLOR5)
{
_pledgeClass = 5; //Генерал
================================================== =================
---
AbstractNpcInfo.java
writeD((int) _decoy.getOwner().getCurrentCp());
writeC(_decoy.getOwner().isMounted() ? 0 : _decoy.getOwner().getEnchantEffect());
+ // if(_decoy.getOwner().getTeam()==1)
+ // writeC(0x01); //team circle around feet 1= Blue, 2 = red
+ // else if(_decoy.getOwner().getTeam()==2)
+ // writeC(0x02); //team circle around feet 1= Blue, 2 = red
+ // else
+ // writeC(0x00); //team circle around feet 1= Blue, 2 = red
+ if(_decoy.getOwner().isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_decoy.getOwner().getClanCrestLargeId());
writeC(_decoy.getOwner().isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_decoy.getOwner().isHero() ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_decoy.getOwner().isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_decoy.getOwner().getFishx());
================================================== =================
---
CharInfo.java
writeD(0x00); //?
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }
+ else
+ {
+ writeC(0x00);
+ }
+
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
+ writeC(0x00); // Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
writeD(_activeChar.getFishx());
================================================== =================
---
GMViewCharacterInfo.java
writeD(_activeChar.getPledgeClass()); //changes the text above CP on Status Window
writeC(_activeChar.isNoble() ? 0x01 : 0x00);
- writeC(_activeChar.isHero() ? 0x01 : 0x00);
+ writeC(0x00);
writeD(_activeChar.getAppearance().getNameColor()) ;
writeD(_activeChar.getAppearance().getTitleColor() );
================================================== =================
UserInfo.java
writeD((int) _activeChar.getCurrentCp());
writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
+ // 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
+ if(_activeChar.isHero())
+ {
+ writeC(0x02);
+ }else
+ {
+ writeC(0x00);
+ }
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
- writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); //0x01: Hero Aura
+ writeC(0x00); //0x01: Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
writeD(_activeChar.getFishx()); //fishing x
Сообщений: 14
Тем: 4
Зарегистрирован: Jan 2015
Репутация:
-46
01-14-2015, 11:01 PM
(Сообщение последний раз редактировалось: 01-14-2015, 11:16 PM Phantomas.)
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 и так у каждой фракции будет герой. У добра свой герой - (Глад), и у Зла свой герой- (Глад) герой.
Я и так поудалял все что касается Геройства и олимпиады, повторюсь. я создаю личную олимпиаду в пвп виде.
Сообщений: 69
Тем: 7
Зарегистрирован: Jan 2015
Репутация:
88
01-14-2015, 11:20 PM
(Сообщение последний раз редактировалось: 01-14-2015, 11:32 PM Johnson.)
Свечение в клиенте организовано через 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: имхо, но делать по два героя одного класса не лучшая идея для геймплея.
Вам же нужно противостояние фракций?
Так сделайте, чтобы фракция, имеющая больше героев получала некие бонусы, а "проигрывающая" - другие бонусы, позволяющие проще получить геройства (постоянный баф, к примеру, или усиленный баф на олимпиаде).
Сыграйте на зависти и гордыне, серверу нужна драма и срач, чтобы он не протух.
Но дайте возможность игре постоянно балансировать по количеству. У Эльфов больше героев - получают бонус к экспе и/или еще чему-то, а Орки получают бафы на оли. Получится, что следующий период Орки с большим шансом наберут больше героев и ситуация изменится. В итоге срач на весь сервер, дарама и вопли. Всем интересно, все продолжают играть и задрить.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Сообщений: 14
Тем: 4
Зарегистрирован: Jan 2015
Репутация:
-46
ДА именно за это я и спрашываю): "красный/синий круг под ногами У фракции Добра/зла"
Сообщений: 69
Тем: 7
Зарегистрирован: Jan 2015
Репутация:
88
Ну, тогда ответ я дал.
В UserInfo и CharInfo сделайте, что если игрок герой - то ему присвоится свечение в зависимости от фракции.
А поля и методы, отвечающие за team вообще удалите, если не планируете их использовать в ивентах.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Сообщений: 14
Тем: 4
Зарегистрирован: Jan 2015
Репутация:
-46
Йома йо как же я сам не додумался...
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);
Сообщений: 69
Тем: 7
Зарегистрирован: Jan 2015
Репутация:
88
Phantomas;384323 Написал:if(_activeChar.getFactionId() == 1)
writeC(0x01);
else if(_activeChar.getFactionId() == 2)
А что, возможно, что _activeChar.getFactionId() будет равен 0 или 3? Если нет - то зачем второе условие? Просто else.
PS: Приучайте себя все условные операторы окружать блоком { } (как в моем примере), на много читабельнее, и это хороший тон.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Сообщений: 14
Тем: 4
Зарегистрирован: Jan 2015
Репутация:
-46
Я Java никогда не изучал, просто переписывал diff-ы около года)))) и замечательные успехи... лудше посидеть почитать мануалы, 100 раз попробовать и сделать самому и заодно изучить ядро сервера чем перечитывать кучу лишней инормации. Хорошо буду работать над этим еще раз спасибо.
|