Работа по поднятию и понижению пакетки на OverWorld

sergebaz

Прославленный
Местный
Сообщения
509
Розыгрыши
0
Решения
1
Репутация
230
Реакции
99
Баллы
1 443
Хроники
  1. Chaotic Throne: High Five
  2. Goddess of Destruction Tauti
Исходники
Присутствуют
Сборка
OverWorld
Доброго времени коллеги, не могу разобраться где находятся опкоды пакетов в сурсах OverWorld
 
пакет SendTradeDone.java:

package l2p.gameserver.serverpackets;

public class SendTradeDone extends L2GameServerPacket
{
public static final L2GameServerPacket SUCCESS = new SendTradeDone(1);
public static final L2GameServerPacket FAIL = new SendTradeDone(0);

private int _response;

private SendTradeDone(int num)
{
_response = num;
}

@Override
protected final void writeImpl()
{
writeC(0x1c);
writeD(_response);
}
}
где в нем опкод?
 
для поддержки клиента таути надо сначала поправить пакетку loginserver,? потом править пакетку gameserver? сравниваю по пакетом хф с таути похожи на 90 проц
 
для поддержки клиента таути надо сначала поправить пакетку loginserver,? потом править пакетку gameserver? сравниваю по пакетом хф с таути похожи на 90 проц
тяжко тебе будет в твоих начинаниях)
 
А че, всё, нетпро прикрыли на битбакете?
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
ДА, инфа была про это.
 

Вложения

  • netpro.7z
    2 МБ · Просмотры: 128
для поддержки клиента таути надо сначала поправить пакетку loginserver,? потом править пакетку gameserver? сравниваю по пакетом хф с таути похожи на 90 проц

Чем тебе логин не угодил?
 
Да, в конце декабря вроде как.
Прикреплю последнюю версию (или одну из последних).
Такой вопрос, а если я юнити гк до хф захочу опустить, какие там пакеты менялись для захода на сервер?
 
а ты сам сравни хф и таути логин серв, на несколько пакетов отличие...
Это был намек что логин трогать необязательно (если ты имеешь ввиду именно логин, а не пакеты что идут после коннекта к гейм). Все что ниже IO поднимается за один плотный вечер обычной сверкой пакетов и выставлением нулей в отсутствующие механики.

А так меняем клиент-пакеты в хандлере, пробегаемся по серверным меняя попутно опкоды и подгоняя структуру. Точно не помню но вроде бы появились маски в пакетах UserInfo, CharInfo и т.д для частичной (не полной) отправки пакета.

Такой вопрос, а если я юнити гк до хф захочу опустить, какие там пакеты менялись для захода на сервер?

На вскидку - для коннекта LoginFail поменялся на LoginResult (соотв. меняем в коде отправку этого пакета, где точно не помню), добавились ExIsCharNameCreatable с соотв. клиент-пакетом и пожалуй CharSelectionInfo. Может быть что-то еще, а дальше идет уже ингейм и там достаточно много различий начиная с того как теперь хранятся скилы (skill_sublevel) и заканчивая теми же масками которых в хф нет.
 
Такой вопрос, а если я юнити гк до хф захочу опустить, какие там пакеты менялись для захода на сервер?
ServerList точно помню, что меняли. По остальному не помню, но в любом случае - можно свиснуть отличающиеся с той же лыжи :D
 
ServerList точно помню, что меняли. По остальному не помню, но в любом случае - можно свиснуть отличающиеся с той же лыжи :D
Да я так и собирался, просто не знал куда смотреть)

Ну да, норм так разница:
Код:
package com.l2jmobius.gameserver.network.serverpackets;

import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;

public class LoginFail implements IClientOutgoingPacket
{
    public static final int NO_TEXT = 0;
    public static final int SYSTEM_ERROR_LOGIN_LATER = 1;
    public static final int PASSWORD_DOES_NOT_MATCH_THIS_ACCOUNT = 2;
    public static final int PASSWORD_DOES_NOT_MATCH_THIS_ACCOUNT2 = 3;
    public static final int ACCESS_FAILED_TRY_LATER = 4;
    public static final int INCORRECT_ACCOUNT_INFO_CONTACT_CUSTOMER_SUPPORT = 5;
    public static final int ACCESS_FAILED_TRY_LATER2 = 6;
    public static final int ACOUNT_ALREADY_IN_USE = 7;
    public static final int ACCESS_FAILED_TRY_LATER3 = 8;
    public static final int ACCESS_FAILED_TRY_LATER4 = 9;
    public static final int ACCESS_FAILED_TRY_LATER5 = 10;
    
    private final int _reason;
    
    /**
     * @param reason
     */
    public LoginFail(int reason)
    {
        _reason = reason;
    }
    
    @Override
    public boolean write(PacketWriter packet)
    {
        OutgoingPackets.LOGIN_FAIL.writeId(packet);
        packet.writeD(_reason);
        return true;
    }
}
Код:
package org.l2junity.loginserver.network.serverpackets;

/**
 * Fromat: d d: the failure reason
 */
public final class LoginFail extends L2LoginServerPacket
{
    public enum LoginFailReason
    {
        REASON_NO_MESSAGE(0x00),
        REASON_SYSTEM_ERROR_LOGIN_LATER(0x01),
        REASON_USER_OR_PASS_WRONG(0x02),
        REASON_ACCESS_FAILED_TRY_AGAIN_LATER(0x04),
        REASON_ACCOUNT_INFO_INCORRECT_CONTACT_SUPPORT(0x05),
        REASON_ACCOUNT_IN_USE(0x07),
        REASON_UNDER_18_YEARS_KR(0x0C),
        REASON_SERVER_OVERLOADED(0x0F),
        REASON_SERVER_MAINTENANCE(0x10),
        REASON_TEMP_PASS_EXPIRED(0x11),
        REASON_GAME_TIME_EXPIRED(0x12),
        REASON_NO_TIME_LEFT(0x13),
        REASON_SYSTEM_ERROR(0x14),
        REASON_ACCESS_FAILED(0x15),
        REASON_RESTRICTED_IP(0x16),
        REASON_WEEK_USAGE_FINISHED(0x1E),
        REASON_SECURITY_CARD_NUMBER_INVALID(0x1F),
        REASON_AGE_NOT_VERIFIED_CANT_LOG_BEETWEEN_10PM_6AM(0x20),
        REASON_SERVER_CANNOT_BE_ACCESSED_BY_YOUR_COUPON(0x21),
        REASON_DUAL_BOX(0x23),
        REASON_INACTIVE(0x24),
        REASON_USER_AGREEMENT_REJECTED_ON_WEBSITE(0x25),
        REASON_GUARDIAN_CONSENT_REQUIRED(0x26),
        REASON_USER_AGREEMENT_DECLINED_OR_WITHDRAWL_REQUEST(0x27),
        REASON_ACCOUNT_SUSPENDED_CALL(0x28),
        REASON_CHANGE_PASSWORD_AND_QUIZ_ON_WEBSITE(0x29),
        REASON_ALREADY_LOGGED_INTO_10_ACCOUNTS(0x2A),
        REASON_MASTER_ACCOUNT_RESTRICTED(0x2B),
        REASON_CERTIFICATION_FAILED(0x2E),
        REASON_TELEPHONE_CERTIFICATION_UNAVAILABLE(0x2F),
        REASON_TELEPHONE_SIGNALS_DELAYED(0x30),
        REASON_CERTIFICATION_FAILED_LINE_BUSY(0x31),
        REASON_CERTIFICATION_SERVICE_NUMBER_EXPIRED_OR_INCORRECT(0x32),
        REASON_CERTIFICATION_SERVICE_CURRENTLY_BEING_CHECKED(0x33),
        REASON_CERTIFICATION_SERVICE_CANT_BE_USED_HEAVY_VOLUME(0x34),
        REASON_CERTIFICATION_SERVICE_EXPIRED_GAMEPLAY_BLOCKED(0x35),
        REASON_CERTIFICATION_FAILED_3_TIMES_GAMEPLAY_BLOCKED_30_MIN(0x36),
        REASON_CERTIFICATION_DAILY_USE_EXCEEDED(0x37),
        REASON_CERTIFICATION_UNDERWAY_TRY_AGAIN_LATER(0x38);
        
        private final int _code;
        
        LoginFailReason(int code)
        {
            _code = code;
        }
        
        public final int getCode()
        {
            return _code;
        }
    }
    
    private final LoginFailReason _reason;
    
    public LoginFail(LoginFailReason reason)
    {
        _reason = reason;
    }
    
    @Override
    protected void write()
    {
        writeC(0x01);
        writeC(_reason.getCode());
    }
}
 
Ну да, норм так разница:
Код:
package com.l2jmobius.gameserver.network.serverpackets;

import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.network.OutgoingPackets;

public class LoginFail implements IClientOutgoingPacket
{
    public static final int NO_TEXT = 0;
    public static final int SYSTEM_ERROR_LOGIN_LATER = 1;
    public static final int PASSWORD_DOES_NOT_MATCH_THIS_ACCOUNT = 2;
    public static final int PASSWORD_DOES_NOT_MATCH_THIS_ACCOUNT2 = 3;
    public static final int ACCESS_FAILED_TRY_LATER = 4;
    public static final int INCORRECT_ACCOUNT_INFO_CONTACT_CUSTOMER_SUPPORT = 5;
    public static final int ACCESS_FAILED_TRY_LATER2 = 6;
    public static final int ACOUNT_ALREADY_IN_USE = 7;
    public static final int ACCESS_FAILED_TRY_LATER3 = 8;
    public static final int ACCESS_FAILED_TRY_LATER4 = 9;
    public static final int ACCESS_FAILED_TRY_LATER5 = 10;
   
    private final int _reason;
   
    /**
     * @param reason
     */
    public LoginFail(int reason)
    {
        _reason = reason;
    }
   
    @Override
    public boolean write(PacketWriter packet)
    {
        OutgoingPackets.LOGIN_FAIL.writeId(packet);
        packet.writeD(_reason);
        return true;
    }
}
Код:
package org.l2junity.loginserver.network.serverpackets;

/**
* Fromat: d d: the failure reason
*/
public final class LoginFail extends L2LoginServerPacket
{
    public enum LoginFailReason
    {
        REASON_NO_MESSAGE(0x00),
        REASON_SYSTEM_ERROR_LOGIN_LATER(0x01),
        REASON_USER_OR_PASS_WRONG(0x02),
        REASON_ACCESS_FAILED_TRY_AGAIN_LATER(0x04),
        REASON_ACCOUNT_INFO_INCORRECT_CONTACT_SUPPORT(0x05),
        REASON_ACCOUNT_IN_USE(0x07),
        REASON_UNDER_18_YEARS_KR(0x0C),
        REASON_SERVER_OVERLOADED(0x0F),
        REASON_SERVER_MAINTENANCE(0x10),
        REASON_TEMP_PASS_EXPIRED(0x11),
        REASON_GAME_TIME_EXPIRED(0x12),
        REASON_NO_TIME_LEFT(0x13),
        REASON_SYSTEM_ERROR(0x14),
        REASON_ACCESS_FAILED(0x15),
        REASON_RESTRICTED_IP(0x16),
        REASON_WEEK_USAGE_FINISHED(0x1E),
        REASON_SECURITY_CARD_NUMBER_INVALID(0x1F),
        REASON_AGE_NOT_VERIFIED_CANT_LOG_BEETWEEN_10PM_6AM(0x20),
        REASON_SERVER_CANNOT_BE_ACCESSED_BY_YOUR_COUPON(0x21),
        REASON_DUAL_BOX(0x23),
        REASON_INACTIVE(0x24),
        REASON_USER_AGREEMENT_REJECTED_ON_WEBSITE(0x25),
        REASON_GUARDIAN_CONSENT_REQUIRED(0x26),
        REASON_USER_AGREEMENT_DECLINED_OR_WITHDRAWL_REQUEST(0x27),
        REASON_ACCOUNT_SUSPENDED_CALL(0x28),
        REASON_CHANGE_PASSWORD_AND_QUIZ_ON_WEBSITE(0x29),
        REASON_ALREADY_LOGGED_INTO_10_ACCOUNTS(0x2A),
        REASON_MASTER_ACCOUNT_RESTRICTED(0x2B),
        REASON_CERTIFICATION_FAILED(0x2E),
        REASON_TELEPHONE_CERTIFICATION_UNAVAILABLE(0x2F),
        REASON_TELEPHONE_SIGNALS_DELAYED(0x30),
        REASON_CERTIFICATION_FAILED_LINE_BUSY(0x31),
        REASON_CERTIFICATION_SERVICE_NUMBER_EXPIRED_OR_INCORRECT(0x32),
        REASON_CERTIFICATION_SERVICE_CURRENTLY_BEING_CHECKED(0x33),
        REASON_CERTIFICATION_SERVICE_CANT_BE_USED_HEAVY_VOLUME(0x34),
        REASON_CERTIFICATION_SERVICE_EXPIRED_GAMEPLAY_BLOCKED(0x35),
        REASON_CERTIFICATION_FAILED_3_TIMES_GAMEPLAY_BLOCKED_30_MIN(0x36),
        REASON_CERTIFICATION_DAILY_USE_EXCEEDED(0x37),
        REASON_CERTIFICATION_UNDERWAY_TRY_AGAIN_LATER(0x38);
       
        private final int _code;
       
        LoginFailReason(int code)
        {
            _code = code;
        }
       
        public final int getCode()
        {
            return _code;
        }
    }
   
    private final LoginFailReason _reason;
   
    public LoginFail(LoginFailReason reason)
    {
        _reason = reason;
    }
   
    @Override
    protected void write()
    {
        writeC(0x01);
        writeC(_reason.getCode());
    }
}
Ну я бы на твоем месте эти коды потестил, возможно подойдут некоторые и под ХФ. Хотя хз.
 
Все что ниже IO поднимается за один плотный вечер обычной сверкой пакетов и выставлением нулей в отсутствующие механики.
почему именно ниже IO?
если подразумевается гемморой с пакетами имеющими динамическую структуру, задающуюся маской, то такие пакеты появились намного раньше - вроде как еще в линде, после 531 потокола.
 
Назад
Сверху Снизу