• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

JTS 2018 2018-05-26

Нет прав для скачивания
Добрый вечер уважаемые, не подскажите как на этой сборке включить режим разработчика, в конфигах есть , чтото вроде отладки в режимах, пвп,пве, дуэли, непонял как это работает, консоль молчит, нужно, чтото родного снифера, который показывает в гс отправку и прием пакетов, тут такое имеется?
 
Если не ошибаюсь, то вроде как эта возможность тут выпилена.
Если надо, то добавляй снова этот функционал в GamePacketHandler и т.д.
 
Кто то работает над данными исходами?
 

Если хотите видеть пакеты которые приходят от клиента, вот такой вот вариант (наверно не самый лучший).:
в файле jts_src_last/gameserver/src/main/java/org/mmocore/gameserver/network/lineage/GamePacketHandler.java добавьте методы
Код:
private void debugPacket(ByteBuffer buff) {
        int buffSize = buff.remaining();
        byte[] bytes = new byte[buffSize];
        buff.get(bytes);

        StringBuilder hex = new StringBuilder();

        int counter = 0;

        for (int i = 0; i < buffSize; i++) {
            if (counter % 16 == 0) {
                hex.append("\n" + fillHex(i, 4) + ": ");
            }

            hex.append(fillHex(bytes[i] & 0xff, 2) + " ");

            counter++;
            if (counter == 16) {
                hex.append("   ");
                int charPoint = i - 15;
                for (int a = 0; a < 16; a++) {
                    final int t1 = bytes[charPoint++];
                    if (t1 > 0x1f && t1 < 0x80) {
                        hex.append((char) t1);
                    } else {
                        hex.append('.');
                    }
                }
                hex.append("\n");
                counter = 0;
            }
        }

        final int rest = bytes.length % 16;
        if (rest > 0) {
            for (int i = 0; i < 17 - rest; i++) {
                hex.append("   ");
            }

            int charPoint = bytes.length - rest;
            for (int a = 0; a < rest; a++) {
                final int t1 = bytes[charPoint++];
                if (t1 > 0x1f && t1 < 0x80) {
                    hex.append((char) t1);
                } else {
                    hex.append('.');
                }
            }
            hex.append("\n");
        }

        _log.debug( hex.toString() );
    }

    private static String fillHex(final int data, final int digits) {
        String number = Integer.toHexString(data);

        for (int i = number.length(); i < digits; i++) {
            number = "0" + number;
        }

        return number;
    }

в метод handlePacket после
Код:
ReceivablePacket<GameClient> msg = null;
добавьте
Код:
ByteBuffer duplicateBuf = buf.duplicate();
и после этого вы можете добавлять в нужных вам кейсах какие пакеты снифать
Код:
debugPacket(duplicateBuf);
 
Всем привет, может кто нибудь подскажет куда копать
наблюдаю небольшой рассинхрон положения мобов между сервером и клиентом
хорошо заметно в ближнем бою, чар подходит и ждёт несколько секунд перед ударом
или сбегается с мобом очень странно
 
Начинаешь с Creature.moveToLocation и правишь все расчеты перемещений и текущей локации
 
Начинаешь с Creature.moveToLocation и правишь все расчеты перемещений и текущей локации
Я в свое время "дебажил" этот баг с рассинхроном в следующий способ - на каждый тик по перемещению в сервере (там где координаты чара меняются) дропал монету без анимации - тогда рассинхрон хорошо виден в клиенте и сервере - со временем при частых кликах мыши погрешность в таймере росла и монеты падали не там, где был перс на экране (клиенте)
 
Собственно, годы идут - ничего не меняется ))
Я хилки маленькие бросаю, они меньше и лучше видно)
 
Всем привет!
На грации, после изучения трансформации и скила для сбора кристаллов,
при переходе в трансформацию скил сбора кристаллов не добавляется, он есть только без трансформации
пытался найти какой параметр отвечает за добавление скила, но так ничего не нашел
может кто нибудь подскажет где искать что копать)
 
Смотрите в скилах самой трансформации.

Так сделано на овероподобных (как сделано в этой jts я незнаю):
Код:
<skill id="842" levels="1" name="Aura Bird - Owl" >
        <!--
            Last modify:    03.08.2009

            Description:    Mounts the Aura Bird - Owl.
        -->
        <set name="magicType" val="SPECIAL" />
        <set name="icon" val="icon.skill0842" />
        <set name="reuseDelay" val="10000" />
        <set name="hitTime" val="2500" />
        <set name="mpConsume2" val="72" />
        <set name="target" val="TARGET_SELF" />
        <set name="skillType" val="TRANSFORMATION" />
        <set name="isReuseDelayPermanent" val="true" />
        <set name="addSkills" val="884;-2;887;-2;889;-2;892;-2;911;-2;885;1;932;0;619;1;5491;1" />
        <set name="npcId" val="13145" />
        <set name="operateType" val="OP_ACTIVE" />
        <set name="isCommon" val="true" />
        <for>
            <effect count="1" name="Transformation" time="18000" val="9">
                <set order="0x40" stat="STR" val="41" />
                <set order="0x40" stat="DEX" val="33" />
                <set order="0x40" stat="CON" val="31" />
                <set order="0x40" stat="INT" val="29" />
                <set order="0x40" stat="WIT" val="11" />
                <set order="0x40" stat="MEN" val="25" />
                <add order="0x40" stat="runSpd" val="25" />
            </effect>
        </for>
    </skill>

Как мы видим, после трансформации добавляется скилл 932 (Сбор Камней Звезд | Star Stone Gathering).
 
в jts сделано так

Код:
<------><skill id="842" levels="1" name="Aura Bird - Owl" >^M                                                                                                                                                     
<------><------><set name="magicType" val="SPECIAL" />^M                                                                                                                                                           
<------><------><set name="icon" val="icon.skill0842" />^M                                                                                                                                                         
<------><------><set name="reuseDelay" val="10000" />^M                                                                                                                                                           
<------><------><set name="hitTime" val="2500" />^M                                                                                                                                                               
<------><------><set name="mpConsume2" val="72" />^M                                                                                                                                                               
<------><------><set name="target" val="TARGET_SELF" />^M                                                                                                                                                         
<------><------><set name="skillType" val="TRANSFORMATION" />^M                                                                                                                                                   
<------><------><set name="isReuseDelayPermanent" val="true" />^M                                                                                                                                                 
<------><------><set name="operateType" val="OP_ACTIVE" />^M                                                                                                                                                       
<------><------><cond>^M                                                                                                                                                                                           
<------><------><------><and>^M                                                                                                                                                                                   
<------><------><------><------><pts can_transform="9"/>^M                                                                                                                                                         
<------><------><------></and>^M                                                                                                                                                                                   
<------><------></cond>^M                                                                                                                                                                                         
<------><------><for>^M                                                                                                                                                                                           
<------><------><------><!-- TODO: transform -->^M                                                                                                                                                                 
<------><------><------><effect count="1" time="18000" name="p_transform" stackOrder="1" stackType="transform">^M                                                                                                 
<------><------><------><------><def name="argument" val="9" />^M                                                                                                                                                 
<------><------><------></effect>^M                                                                                                                                                                               
<------><------></for>^M                                                                                                                                                                                           
<------></skill>^M

очень похоже что нужно править pts скрипты, но я не уверен
 
вроде бы нашел в птс скриптах
Код:
                        skill = {[s_air_assault1];[s_air_blink1];[s_air_hold_bomb1];[s_air_energy_flare_shooting1];[s_air_energy_shot_shooting1];[s_air_energy_burster1];[s_transform_dispel1]}
                        additional_skill = {{76;[s_air_assault2];[s_air_hold_bomb2];[s_air_energy_flare_shooting2];[s_air_energy_shot_shooting2];[s_air_energy_burster2]};{77;[s_air_assault3];[s_air_hold_bomb3];[s_air_energy_flare_shooting3];[s_air_energy_shot_shooting3];[s_air_energy_burster3]};{78;[s_air_assault4];[s_air_hold_bomb4];[s_air_energy_flare_shooting4];[s_air_energy_shot_shooting4];[s_air_energy_burster4]};{79;[s_air_assault5];[s_air_hold_bomb5];[s_air_energy_flare_shooting5];[s_air_energy_shot_shooting5];[s_air_energy_burster5]};{80;[s_air_assault6];[s_air_hold_bomb6];[s_air_energy_flare_shooting6];[s_air_energy_shot_shooting6];[s_air_energy_burster6]};{81;[s_air_assault7];[s_air_hold_bomb7];[s_air_energy_flare_shooting7];[s_air_energy_shot_shooting7];[s_air_concentration_energy_shot7];[s_air_energy_burster7]};{82;[s_air_assault8];[s_air_hold_bomb8];[s_air_energy_flare_shooting8];[s_air_energy_shot_shooting8];[s_air_concentration_energy_shot8];[s_air_energy_burster8]};{83;[s_air_assault9];[s_air_hold_bomb9];[s_air_energy_flare_shooting9];[s_air_energy_shot_shooting9];[s_air_concentration_energy_shot9];[s_air_release_ability_shooting1];[s_air_energy_burster9]};{84;[s_air_assault10];[s_air_hold_bomb10];[s_air_energy_flare_shooting10];[s_air_energy_shot_shooting10];[s_air_concentration_energy_shot10];[s_air_energy_burster10]};{85;[s_air_assault11];[s_air_hold_bomb11];[s_air_energy_flare_shooting11];[s_air_energy_shot_shooting11];[s_air_concentration_energy_shot11];[s_air_energy_burster11]}}

можно добавить скил сбора кристаллов, но скорее всего он будет появляться без изучения этого скила(


скорее всего есть какой то параметр, но найти его так и не удалось
нашел часть кода отвечающий за выдачу скилов в трансформации, но закономерности для этого скила не нашел


Код:
    public void addGiveAllSkills(final int level) {^M                                                                                                                                                            
        lock.lock();^M                                                                                                                                                                                            
        try {^M                                                                                                                                                                                                  
            if (level > giveLevelSkill)^M                                                                                                                                                                        
                giveLevelSkill = level;^M                                                                                                                                                                        
            else if (allSkill.size() > 0)^M                                                                                                                                                                      
                allSkill.values().stream().filter(s -> tSkills.containsKey(s.getId()) || tAdditionalSkill.containsKey(s.getId())).forEach(player::removeSkill);^M                                                
            //Обновим мап скилов которые зависят от уровня игрока.^M                                                                                                                                              
            fillAdditionalSkills(level, true);^M                                                                                                                                                                  
            //Тут полюбому нужно зачистить мап.^M                                                                                                                                                                
            allSkill.clear();^M                                                                                                                                                                                  
            player.getSkills().stream().filter(s -> s != null && s.getTemplate().isPassive()).forEach(s -> allSkill.put(s.getId(), s));^M                                                                        
            //Добавляем все скилы трансформации которые не зависят от уровня игрока.^M                                                                                                                            
            allSkill.putAll(tSkills);^M                                                                                                                                                                          
            // Добавляем все скилы трансформации которые зависят от уровня игрока.^M                                                                                                                              
            allSkill.putAll(tAdditionalSkill);^M                                                                                                                                                                  
            // Теперь добавим все скилы игроку.^M                                                                                                                                                                
            allSkill.values().stream().forEach(s -> player.addSkill(s, false));^M                                                                                                                                
            stateUpdate.set(false);^M                                                                                                                                                                            
        } finally {^M                                                                                                                                                                                            
            lock.unlock();^M                                                                                                                                                                                      
        }^M                                                                                                                                                                                                      
    }^M
 
xlr, тогда смотрите хенделы/обработчики p_transform, эффекты скиллов и все что связано с трансформацией в ядре.
 
Если добавить его в transform.txt сюда, то появляется только если изучен
 
Вопрос, в первые просто с таким сталкиваюсь - eclipse попросту отказывается показывать ошибки, точнее как - он показывает их, но только во время компила. Сколько не компилировал через еклипс, такое вижу в первый раз) возможно кто-то знает, где в настройках проекта, это исправляется?
Или возможно у кого-то есть правильные настройки для еклипса?
 
Последнее редактирование:
Юзать идею можно)
 
Юзать идею можно)
Я понимаю) но уже работая с еклипсом более 5+ лет, как-то привык именно к нему, и нету желания менять что-то) возможно просто кто-то делал настройки именно под еклипс для jts. Я как бы вроде все остальное +- настроил, но вот даже если переместить куда-то класс, оно не покажет что его нету, пока просто не начнешь компилировать - тогда ошибки показывает.