Сообщений: 1,326
Тем: 10
Зарегистрирован: Apr 2010
Репутация:
2,078
FriendlyGhost Написал:Azaghtot, я вот тоже помнится во времена Интерлюда делал показ урона на экране, а в поздних хрониках уже не работало, подскажите что изменилось в клиенте, и реально ли сделать такое во Фрее к примеру? Вывод правьте. Смотрите код, и добавляйте/убирайте параметры
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
Azagthtot Написал:Открываете исходники. Ищите создание SystemMessage с вашим SystemMessageId
И постите его сюда. Надеюсь это то, о чем вы просите:
systemmessageid.java
Код: /**
* ID: 2261<br>
* Message: $c1 has given $c2 damage of $s3.
*/
public static final SystemMessageId C1_GAVE_C2_DAMAGE_OF_S3;
ниже Код: C1_GAVE_C2_DAMAGE_OF_S3 = new SystemMessageId(2261);
далее идем в:
L2PcInstance
Код: sm = SystemMessage.getSystemMessage(SystemMessageId.C1_GAVE_C2_DAMAGE_OF_S3);
if (Config.SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN)
sendPacket(new ExShowScreenMessage(1,0,Config.SCREEN_POSITION,0,1,0,0,false,3000,1,"You have given " + damage + " damage."));
как оказалось в конфиге уже есть что-то подобное Код: public static boolean SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN;
SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN = Boolean.parseBoolean(misc.getProperty("EnableAdvanceSystemMessage", "false"));
напоследок лезем в конфиг:
misc.properties
Код: # Enable advance system message via ExShowScreenMessage
# Default: false
EnableAdvanceSystemMessage = true
# Enable advance system message via ExShowScreenMessage
# 1 = small
# 0 = big
# Default: 1
FontSizeCriticalMessage = 1 [color=Red](ставил 0 не помогло)[/color]
# Screen position message
# THIS OPTIONS NOT WORKING FOR CRITICAL DMG MESSAGE
# 1 = POSITION_TOP_LEFT
# 2 = POSITION_TOP_CENTER
# 3 = POSITION_TOP_RIGHT
# 4 = POSITION_MIDDLE_LEFT
# 5 = POSITION_MIDDLE_CENTER
# 6 = POSITION_MIDDLE_RIGHT
# 7 = POSITION_LOW_CENTER
# 8 = POSITION_LOW_RIGHT
# Default: 2
ScreenPositionMessage = 2 [color=Red](тоже менял не помогает)[/color]
В итоге всеравно сообщения не показываются ( . Возможно нужно копаться в ExShowScreenMessage ?
Сообщений: 1,326
Тем: 10
Зарегистрирован: Apr 2010
Репутация:
2,078
Вы мягкое с теплым не путайте. Что идет после
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_GAVE_C2_DAMAGE_OF_S3);
Типа
sm.addNumber(10000);
Сообщений: 18
Тем: 5
Зарегистрирован: Mar 2010
Репутация:
0
PHP код: <?php
C1_GAVE_C2_DAMAGE_OF_S3 = new SystemMessageId(2261);
вот оно и есть...в исходниках все верно вроде прописано. Но почему не выводит именно дамаг.
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
Azagthtot Написал:Вы мягкое с теплым не путайте. Что идет после
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_GAVE_C2_DAMAGE_OF_S3);
Типа
sm.addNumber(10000); sm.addPcName(this);
sm.addCharName(target);
sm.addNumber(damage);
это?
вот кусок целиком, если нужно:
многа букав ))
Код: @Override
public final void sendDamageMessage(L2Character target, int damage, boolean mcrit, boolean pcrit, boolean miss)
{
// Check if hit is missed
if (miss)
{
if (target instanceof L2PcInstance)
{
SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_EVADED_C2_ATTACK);
sm.addPcName((L2PcInstance) target);
sm.addCharName(this);
target.sendPacket(sm);
}
sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_ATTACK_WENT_ASTRAY).addPcName(this));
if (Config.SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN)
sendPacket(new ExShowScreenMessage(1,0,Config.SCREEN_POSITION,0,1,0,0,false,3000,1,"Your attack went astray !"));
return;
}
// Check if hit is critical
if (pcrit)
sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_HAD_CRITICAL_HIT).addPcName(this));
{
if (target instanceof L2Npc && getSkillLevel(467) > 0)
{
L2Skill skill = SkillTable.getInstance().getInfo(467,getSkillLevel(467));
if (Rnd.get(100) < skill.getCritChance())
{
absorbSoul(skill,((L2Npc)target));
}
}
}
if (mcrit)
sendPacket(SystemMessage.getSystemMessage(SystemMessageId.CRITICAL_HIT_MAGIC));
if (isInOlympiadMode() &&
target instanceof L2PcInstance &&
((L2PcInstance)target).isInOlympiadMode() &&
((L2PcInstance)target).getOlympiadGameId() == getOlympiadGameId())
{
OlympiadGameManager.getInstance().notifyCompetitorDamage(this, damage);
}
final SystemMessage sm;
if (target.isInvul() && !(target instanceof L2Npc))
{
sm = SystemMessage.getSystemMessage(SystemMessageId.ATTACK_WAS_BLOCKED);
}
else if (target instanceof L2DoorInstance || target instanceof L2ControlTowerInstance)
{
sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_DID_S1_DMG);
sm.addNumber(damage);
}
else
{
sm = SystemMessage.getSystemMessage(SystemMessageId.C1_GAVE_C2_DAMAGE_OF_S3);
if (Config.SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN)
sendPacket(new ExShowScreenMessage(1,0,Config.SCREEN_POSITION,0,1,0,0,false,3000,1,"You have given " + damage + " damage."));
if (Config.SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN)
if(mcrit)
//"Excellent! You has given " + damage + " magic critical damage."
sendPacket(new ExShowScreenMessage(1,0,2,0,Config.FONT_SIZE_CRITICAL,0,0,true,3000,1,"Excellent! You have given " + damage + " magic critical damage."));
if (Config.SHOW_DAMAGE_MESSAGE_ON_CENTER_TOP_SCREEN)
if(pcrit)
//"Excellent! You has given " + damage + " critical damage."
sendPacket(new ExShowScreenMessage(1,0,2,0,Config.FONT_SIZE_CRITICAL,0,0,true,3000,1,"Excellent! You have given " + damage + " critical damage."));
sm.addPcName(this);
sm.addCharName(target);
sm.addNumber(damage);
}
sendPacket(sm);
}
Сообщений: 805
Тем: 21
Зарегистрирован: Apr 2008
Репутация:
1,605
Каг бе начиная с гф возможность выводить урон систем меседжами на экран убрана.
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
Какбе мы это знаем, но мы же не про ПТС, исходник явы на руках, кто мешает реализовать? Если конечно в клиенте это не вырезано начиная с ГФ, так что не приклеить на место.
Сообщений: 805
Тем: 21
Зарегистрирован: Apr 2008
Репутация:
1,605
FriendlyGhost Написал:Какбе мы это знаем, но мы же не про ПТС, исходник явы на руках, кто мешает реализовать? Если конечно в клиенте это не вырезано начиная с ГФ, так что не приклеить на место.
нет слов одни эмоции...
да именно в клиенте и вырезано.
каг бе можно было и так догадаться что серв как давал значения урона так и дает а вот клиент их просто не отображает.
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
выводить можно, но толкьо извратным способом, т.е. формировать полностью и отслылать клиенту всю строку для показа на экране, через ExShowScreenMessage.
Сообщений: 498
Тем: 9
Зарегистрирован: Jun 2011
Репутация:
1,101
Gaikotsu, для этого тема и создана ) , чтобы объяснили как это сделать. Вы сможете? Все сообщения не нужны, нужны только сообщения именно урона.
Если я правильно понял - в вашем случае нужно будет еще отдельно править файлик systemmessage-e.dat, чтобы там не было "Вася нанес XXX урона Пете", а чисто оставить одну цифру. Тогда и в систем чате будет писаться только урон без слов, но и в центре экрана будет выводиться вся фраза, в нашем случае - только оставшееся число?
Или же можно сделать чтобы отсылало 2 разных пакета, типо в систем чат один, а на экран другой?
|