Сообщений: 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 разных пакета, типо в систем чат один, а на экран другой?
	 
	
	
	
	
 
 
	
 |