Перейти к содержанию

GUSTAVO

Постоялец
  • Публикаций

    228
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1
  • Отзывы

    0%

Сообщения, опубликованные GUSTAVO


  1. Значит давай сначала.

    В конфигах пpописал ip 0.0.0.0 , а внешний с сайта 2ip.ru

    Сеpв запускается.

    В ини пишу айпи внешний, а зайти и сам немогу.

     

    Когда пишу внутpенний то я захожу а дpуг нет.

     

    Вот и беда..

    Ты порты в фаерволе винды открыл?

  2.  

    в конфиге логгера выставить

    java.util.logging.ConsoleHandler.encoding=UTF-8
    или если используется log4j:
    log4j.appender.encoding=UTF-8 (в зависимости от имеющихся appender'ов
    если логгер другой, то гуглить решение по нему
    

    Пробывал добавить строчку java.util.logging.ConsoleHandler.encoding=UTF-8

    но это не помогло.

    вот конфиг логера

    [spoiler=cfg]############################################################

    # Global properties

    ############################################################

     

    # "handlers" specifies a comma separated list of log Handler

    # classes. These handlers will be installed during VM startup.

    # Note that these classes must be on the system classpath.

    # By default we only configure a ConsoleHandler, which will only

    # show messages at the INFO and above levels.

    #handlers= java.util.logging.ConsoleHandler

     

    # To also add the FileHandler, use the following line instead.

    handlers = java.util.logging.FileHandler,\

    java.util.logging.ConsoleHandler,\

    com.l2jserver.log.handler.ErrorLogHandler

    chat.handlers = com.l2jserver.log.handler.ChatLogHandler

    chat.useParentHandlers = false

    gmaudit.handlers = com.l2jserver.log.handler.GMAuditLogHandler

    gmaudit.useParentHandlers = false

    item.handlers = com.l2jserver.log.handler.ItemLogHandler

    item.useParentHandlers = false

    audit.handlers = com.l2jserver.log.handler.AuditLogHandler

    audit.useParentHandlers = false

    enchant.handlers = com.l2jserver.log.handler.EnchantItemLogHandler,\

    com.l2jserver.log.handler.EnchantSkillLogHandler

    enchant.useParentHandlers = false

    olympiad.handlers = com.l2jserver.log.handler.OlympiadLogHandler

    olympiad.useParentHandlers = false

    damage.handlers = com.l2jserver.log.handler.AllDamageLogHandler,\

    com.l2jserver.log.handler.PDamageLogHandler,\

    com.l2jserver.log.handler.MDamageLogHandler

    damage.useParentHandlers = false

    accounting.handlers = com.l2jserver.log.handler.AccountingLogHandler

    accounting.useParentHandlers = false

     

    # Default global logging level.

    # This specifies which kinds of events are logged across

    # all loggers. For any given facility this global level

    # can be overridden by a facility specific level

    # Note that the ConsoleHandler also has a separate level

    # setting to limit messages printed to the console.

    .level= CONFIG

     

    ############################################################

    # Handler specific properties.

    # Describes specific configuration info for Handlers.

    ############################################################

     

    # default file output is in user's home directory.

    java.util.logging.FileHandler.pattern = log/java%g.log

    java.util.logging.FileHandler.count = 20

    java.util.logging.FileHandler.limit = 0

    java.util.logging.FileHandler.formatter = com.l2jserver.log.formatter.FileLogFormatter

    java.util.logging.FileHandler.level = CONFIG

     

    # Limit the message that are printed on the console to INFO and above.

    java.util.logging.ConsoleHandler.level = FINER

    java.util.logging.ConsoleHandler.formatter = com.l2jserver.log.formatter.ConsoleLogFormatter

     

    # log errors (exceptions)

    com.l2jserver.log.handler.ErrorLogHandler.pattern = log/error%g.log

    com.l2jserver.log.handler.ErrorLogHandler.count = 20

    com.l2jserver.log.handler.ErrorLogHandler.limit = 0

    com.l2jserver.log.handler.ErrorLogHandler.formatter = java.util.logging.SimpleFormatter

    com.l2jserver.log.handler.ErrorLogHandler.filter = com.l2jserver.log.filter.ErrorFilter

    com.l2jserver.log.handler.ErrorLogHandler.level = CONFIG

     

    # log chats

    com.l2jserver.log.handler.ChatLogHandler.pattern = log/chat.log

    com.l2jserver.log.handler.ChatLogHandler.formatter = com.l2jserver.log.formatter.ChatLogFormatter

    com.l2jserver.log.handler.ChatLogHandler.filter = com.l2jserver.log.filter.ChatFilter

    com.l2jserver.log.handler.ChatLogHandler.append = true

    com.l2jserver.log.handler.ChatLogHandler.level = INFO

     

    # log GM Audit

    com.l2jserver.log.handler.GMAuditLogHandler.pattern = log/gmaudit.log

    com.l2jserver.log.handler.GMAuditLogHandler.formatter = com.l2jserver.log.formatter.GMAuditFormatter

    com.l2jserver.log.handler.GMAuditLogHandler.filter = com.l2jserver.log.filter.GMAuditFilter

    com.l2jserver.log.handler.GMAuditLogHandler.append = true

    com.l2jserver.log.handler.GMAuditLogHandler.level = INFO

     

    # log items

    com.l2jserver.log.handler.ItemLogHandler.pattern = log/item.log

    com.l2jserver.log.handler.ItemLogHandler.formatter = com.l2jserver.log.formatter.ItemLogFormatter

    com.l2jserver.log.handler.ItemLogHandler.filter = com.l2jserver.log.filter.ItemFilter

    com.l2jserver.log.handler.ItemLogHandler.append = true

    com.l2jserver.log.handler.ItemLogHandler.level = INFO

     

    # audit

    com.l2jserver.log.handler.AuditLogHandler.pattern = log/audit.log

    com.l2jserver.log.handler.AuditLogHandler.formatter = com.l2jserver.log.formatter.AuditFormatter

    com.l2jserver.log.handler.AuditLogHandler.filter = com.l2jserver.log.filter.AuditFilter

    com.l2jserver.log.handler.AuditLogHandler.append = true

    com.l2jserver.log.handler.AuditLogHandler.level = INFO

     

    # enchant item log

    com.l2jserver.log.handler.EnchantItemLogHandler.pattern = log/enchantitem.log

    com.l2jserver.log.handler.EnchantItemLogHandler.formatter = com.l2jserver.log.formatter.EnchantFormatter

    com.l2jserver.log.handler.EnchantItemLogHandler.filter = com.l2jserver.log.filter.EnchantItemFilter

    com.l2jserver.log.handler.EnchantItemLogHandler.append = true

    com.l2jserver.log.handler.EnchantItemLogHandler.level = INFO

     

    # enchant skill log

    com.l2jserver.log.handler.EnchantSkillLogHandler.pattern = log/enchantskill.log

    com.l2jserver.log.handler.EnchantSkillLogHandler.formatter = com.l2jserver.log.formatter.EnchantFormatter

    com.l2jserver.log.handler.EnchantSkillLogHandler.filter = com.l2jserver.log.filter.EnchantSkillFilter

    com.l2jserver.log.handler.EnchantSkillLogHandler.append = true

    com.l2jserver.log.handler.EnchantSkillLogHandler.level = INFO

     

    # olympiad log

    com.l2jserver.log.handler.OlympiadLogHandler.pattern = log/olympiad.csv

    com.l2jserver.log.handler.OlympiadLogHandler.formatter = com.l2jserver.log.formatter.OlympiadFormatter

    com.l2jserver.log.handler.OlympiadLogHandler.append = true

    com.l2jserver.log.handler.OlympiadLogHandler.level = INFO

     

    # damage logs

    com.l2jserver.log.handler.AllDamageLogHandler.pattern = log/game/_all.txt

    com.l2jserver.log.handler.AllDamageLogHandler.formatter = com.l2jserver.log.formatter.DamageFormatter

    com.l2jserver.log.handler.AllDamageLogHandler.append = true

    com.l2jserver.log.handler.AllDamageLogHandler.level = INFO

     

    com.l2jserver.log.handler.PDamageLogHandler.pattern = log/game/damage_pdam.txt

    com.l2jserver.log.handler.PDamageLogHandler.formatter = com.l2jserver.log.formatter.DamageFormatter

    com.l2jserver.log.handler.PDamageLogHandler.filter = com.l2jserver.log.filter.PDamageFilter

    com.l2jserver.log.handler.PDamageLogHandler.append = true

    com.l2jserver.log.handler.PDamageLogHandler.level = INFO

     

    com.l2jserver.log.handler.MDamageLogHandler.pattern = log/game/damage_mdam.txt

    com.l2jserver.log.handler.MDamageLogHandler.formatter = com.l2jserver.log.formatter.DamageFormatter

    com.l2jserver.log.handler.MDamageLogHandler.filter = com.l2jserver.log.filter.MDamageFilter

    com.l2jserver.log.handler.MDamageLogHandler.append = true

    com.l2jserver.log.handler.MDamageLogHandler.level = INFO

     

    # accounting

    com.l2jserver.log.handler.AccountingLogHandler.pattern = log/accounting.log

    com.l2jserver.log.handler.AccountingLogHandler.formatter = com.l2jserver.log.formatter.AccountingFormatter

    com.l2jserver.log.handler.AccountingLogHandler.append = true

    com.l2jserver.log.handler.AccountingLogHandler.level = CONFIG

     

    ############################################################

    # Facility specific properties.

    # Provides extra control for each logger.

    ############################################################

     

    # For example, set the com.xyz.foo logger to only log SEVERE

    # messages:

    com.l2jserver.gameserver.level = CONFIG

    com.l2jserver.loginserver.level = CONFIG

    #com.l2jserver.gameserver.Connection.level = CONFIG

    com.l2jserver.gameserver.network.serverpackets.level = FINER

    com.l2jserver.gameserver.network.clientpackets.level = FINER

    com.l2jserver.gameserver.model.actor.L2Character.level = FINER

    com.l2jserver.gameserver.engines.DocumentEngine.level = INFO

     

    # Alt Privileges Administration

    AltPrivilegesAdmin.pattern = log/admin-commands.log

    AltPrivilegesAdmin.formatter = com.l2jserver.log.formatter.FileLogFormatter

    AltPrivilegesAdmin.append = true

    AltPrivilegesAdmin.level = CONFIG

     

    # c3p0 Logging

    com.mchange.v2.level = WARNING

     

     

    Вот скрин батника и что выходит в консоли если русские смиволы (маленькие красные выделения - вместо пустоты должно быть слово "ноя" и вот большое выделение красным должно быть "Привет Хозяин")

    post-22657-0-94906300-1511502301_thumb.jpg


  3. в гсе запуск utf8 указан?

    Вот так в гсе, я так понял нет не указан:

    [spoiler=тык]@@Echo off

    title Private Game Server Console

     

    :start

    echo Starting Private Game Server.

    echo.

     

    java -Dpython.cachedir=../cachedir -Xms512m -Xmx1212m -jar PrivateGS.jar

     

    REM NOTE: If you have a powerful machine, you could modify/add some extra parameters for performance, like:

    REM -Xms1536m

    REM -Xmx3072m

    REM -XX:+AggressiveOpts

    REM Use this parameters carefully, some of them could cause abnormal behavior, deadlocks, etc.

    REM More info here: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

     

    if ERRORLEVEL 2 goto restart

    if ERRORLEVEL 1 goto error

    goto end

     

    :restart

    echo.

    echo Admin Restarted Game Server.

    echo.

    goto start

     

    :error

    echo.

    echo Game Server Terminated Abnormally!

    echo.

     

    :end

    echo.

    echo Game Server Terminated.

    echo.

    pause

     

     

     

    Изменил на:

    [spoiler=ТыК]@@Echo off

     

    title Private Game Server Console

     

    :start

    echo Starting Private Game Server.

    echo.

    ChCp 65001

    java -Dconsole.encoding=UTF-8 -Dfile.encoding=UTF-8 -Dpython.cachedir=../cachedir -Xms512m -Xmx1212m -jar PrivateGS.jar

     

    REM NOTE: If you have a powerful machine, you could modify/add some extra parameters for performance, like:

    REM -Xms1536m

    REM -Xmx3072m

    REM -XX:+AggressiveOpts

    REM Use this parameters carefully, some of them could cause abnormal behavior, deadlocks, etc.

    REM More info here: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

     

    if ERRORLEVEL 2 goto restart

    if ERRORLEVEL 1 goto error

    goto end

     

    :restart

    echo.

    echo Admin Restarted Game Server.

    echo.

    goto start

     

    :error

    echo.

    echo Game Server Terminated Abnormally!

    echo.

     

    :end

    echo.

    echo Game Server Terminated.

    echo.

    pause

     

    В итоге в игре показывать стало нормально русский язык, а в консоли не показывает нормально, на скрине  выделил что выходит, а должен быть ник ХОЗЯИН

    post-22657-0-07701400-1511448773_thumb.jpg


  4. Всем привет!

    Возникла проблема с кодировкой в скриптах. Если пишу русский язык с коде скрипта, вместо него в игре появляются кракозябры.

    Кодировка стоит UTF8 БЕЗ Boom. Так же и в гс кракозябры вместо русского высвечивает. С этим давно сталкнулся, поправить ума не хватает, надеюсь на вашу помощь.

     

    post-22657-0-77333800-1511446891_thumb.jpg


  5. Решил, нужно было по порядку добавить скилы начиная с первого уровня, например:

     

    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="1" getLevel="1" />
    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="2" getLevel="2" />
    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="3" getLevel="3" />
    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="4" getLevel="4" />
    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="5" getLevel="5" />
    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="6" getLevel="6" />

  6. Всем привет!

    Ребят сделал сертификацию чтоб автоматом скилы все учились, добавил их в xml файл - ClassSkillTrees.xml

    Добавляются все скилы кроме этих 4-х:

    <skill skillName="Emergent Ability - Attack" skillId="631" skillLvl="6" getLevel="1"/>
    <skill skillName="Emergent Ability - Defense" skillId="632" skillLvl="6" getLevel="1"/>
    <skill skillName="Emergent Ability - Empower" skillId="633" skillLvl="6" getLevel="1"/>
    <skill skillName="Emergent Ability - Magic Defense" skillId="634" skillLvl="6" getLevel="1"/>
    Кто подскажет в чем может быть проблема?
    Они прописаны так же как и все остальные (Например вот рабочий: <skill skillName="Master Ability - Focus" skillId="640" skillLvl="1" getLevel="1"/>)
    Сборка l2jserver high five.

  7. Всем ку ) 

    Такая проблема после рестарта заспавленные НПЦ пропадают.

    В Конфига не нашел ничего. Что делать?)

    Сборка люцера.

    В базе прописываются? Если в табоицу Custom_spawnlist сохраняется то В конфигах посмотри настройку загрузки спавн листа


  8. Я же написал, поиск таблицы по исходниками...

    Я нашел в исходниках где таблица Characters применяется, там только использование таблицы этой, а про инвентарь и бафы ничего не нашел, что бы поменять подгрузку местами.

    класс com.l2jserver.gameserver.network.serverpackets.CharSelectionInfo

    [spoiler=CharSelectionInfo]package com.l2jserver.gameserver.network.serverpackets;

     

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.util.ArrayList;

    import java.util.List;

    import java.util.logging.Level;

    import java.util.logging.Logger;

     

    import com.l2jserver.Config;

    import com.l2jserver.commons.database.pool.impl.ConnectionFactory;

    import com.l2jserver.gameserver.data.json.ExperienceData;

    import com.l2jserver.gameserver.data.sql.impl.ClanTable;

    import com.l2jserver.gameserver.model.CharSelectInfoPackage;

    import com.l2jserver.gameserver.model.L2Clan;

    import com.l2jserver.gameserver.model.itemcontainer.Inventory;

    import com.l2jserver.gameserver.network.L2GameClient;

     

    public class CharSelectionInfo extends L2GameServerPacket

    {

    private static Logger _log = Logger.getLogger(CharSelectionInfo.class.getName());

    private final String _loginName;

    private final int _sessionId;

    private int _activeId;

    private final List _characterPackages;

     

    /**

    * Constructor for CharSelectionInfo.

    * @param loginName

    * @param sessionId

    */

    public CharSelectionInfo(String loginName, int sessionId)

    {

    _sessionId = sessionId;

    _loginName = loginName;

    _characterPackages = loadCharacterSelectInfo(_loginName);

    _activeId = -1;

    }

     

    public CharSelectionInfo(String loginName, int sessionId, int activeId)

    {

    _sessionId = sessionId;

    _loginName = loginName;

    _characterPackages = loadCharacterSelectInfo(_loginName);

    _activeId = activeId;

    }

     

    public List getCharInfo()

    {

    return _characterPackages;

    }

     

    @@override

    protected final void writeImpl()

    {

    writeC(0x09);

    int size = (_characterPackages.size());

    writeD(size);

     

    // Can prevent players from creating new characters (if 0); (if 1, the client will ask if chars may be created (0x13) Response: (0x0D) )

    writeD(Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT);

    writeC(0x00);

     

    long lastAccess = 0L;

     

    if (_activeId == -1)

    {

    for (int i = 0; i < size; i++)

    {

    final CharSelectInfoPackage charInfoPackage = _characterPackages.get(i);

    if (lastAccess < charInfoPackage.getLastAccess())

    {

    lastAccess = charInfoPackage.getLastAccess();

    _activeId = i;

    }

    }

    }

     

    for (int i = 0; i < size; i++)

    {

    final CharSelectInfoPackage charInfoPackage = _characterPackages.get(i);

     

    writeS(charInfoPackage.getName());

    writeD(charInfoPackage.getObjectId());

    writeS(_loginName);

    writeD(_sessionId);

    writeD(charInfoPackage.getClanId());

    writeD(0x00); // Builder Level

     

    writeD(charInfoPackage.getSex());

    writeD(charInfoPackage.getRace());

    writeD(charInfoPackage.getBaseClassId());

     

    writeD(0x01); // active ??

     

    writeD(charInfoPackage.getX());

    writeD(charInfoPackage.getY());

    writeD(charInfoPackage.getZ());

     

    writeF(charInfoPackage.getCurrentHp());

    writeF(charInfoPackage.getCurrentMp());

     

    writeD(charInfoPackage.getSp());

    writeQ(charInfoPackage.getExp());

    writeF(ExperienceData.getInstance().getPercentFromCurrentLevel(charInfoPackage.getExp(), charInfoPackage.getLevel()));

     

    writeD(charInfoPackage.getLevel());

     

    writeD(charInfoPackage.getKarma());

    writeD(charInfoPackage.getPkKills());

    writeD(charInfoPackage.getPvPKills());

     

    writeD(0x00);

    writeD(0x00);

    writeD(0x00);

    writeD(0x00);

    writeD(0x00);

    writeD(0x00);

    writeD(0x00);

     

    for (int slot : getPaperdollOrder())

    {

    writeD(charInfoPackage.getPaperdollItemId(slot));

    }

     

    writeD(charInfoPackage.getHairStyle());

    writeD(charInfoPackage.getHairColor());

    writeD(charInfoPackage.getFace());

     

    writeF(charInfoPackage.getMaxHp()); // hp max

    writeF(charInfoPackage.getMaxMp()); // mp max

     

    writeD(charInfoPackage.getDeleteTimer() > 0 ? (int) ((charInfoPackage.getDeleteTimer() - System.currentTimeMillis()) / 1000) : 0); // days left before

    // delete .. if != 0

    // then char is inactive

    writeD(charInfoPackage.getClassId());

    writeD(i == _activeId ? 0x01 : 0x00); // c3 auto-select char

     

    writeC(Math.min(charInfoPackage.getEnchantEffect(), 127));

    writeD(charInfoPackage.getAugmentationId());

     

    writeD(0x00); // Currently on retail when you are on character select you don't see your transformation.

     

    // Implementing it will be waster of resources.

    writeD(0x00); // Pet ID

    writeD(0x00); // Pet Level

    writeD(0x00); // Pet Max Food

    writeD(0x00); // Pet Current Food

    writeF(0x00); // Pet Max HP

    writeF(0x00); // Pet Max MP

     

    // High Five by Vistall:

    writeD(charInfoPackage.getVitalityPoints()); // H5 Vitality

    }

    }

     

    private static List loadCharacterSelectInfo(String loginName)

    {

    final List characterList = new ArrayList<>();

    try (Connection con = ConnectionFactory.getInstance().getConnection();

    PreparedStatement statement = con.prepareStatement("SELECT * FROM characters WHERE account_name=? ORDER BY createDate"))

    {

    statement.setString(1, loginName);

    try (ResultSet charList = statement.executeQuery())

    {

    while (charList.next())// fills the package

    {

    CharSelectInfoPackage charInfopackage = restoreChar(charList);

    if (charInfopackage != null)

    {

    characterList.add(charInfopackage);

    }

    }

    }

    }

    catch (Exception e)

    {

    _log.log(Level.WARNING, "Could not restore char info: " + e.getMessage(), e);

    }

    return characterList;

    }

     

    private static void loadCharacterSubclassInfo(CharSelectInfoPackage charInfopackage, int ObjectId, int activeClassId)

    {

    try (Connection con = ConnectionFactory.getInstance().getConnection();

    PreparedStatement statement = con.prepareStatement("SELECT exp, sp, level FROM character_subclasses WHERE charId=? && class_id=? ORDER BY charId"))

    {

    statement.setInt(1, ObjectId);

    statement.setInt(2, activeClassId);

    try (ResultSet charList = statement.executeQuery())

    {

    if (charList.next())

    {

    charInfopackage.setExp(charList.getLong("exp"));

    charInfopackage.setSp(charList.getInt("sp"));

    charInfopackage.setLevel(charList.getInt("level"));

    }

    }

    }

    catch (Exception e)

    {

    _log.log(Level.WARNING, "Could not restore char subclass info: " + e.getMessage(), e);

    }

    }

     

    private static CharSelectInfoPackage restoreChar(ResultSet chardata) throws Exception

    {

    int objectId = chardata.getInt("charId");

    String name = chardata.getString("char_name");

     

    // See if the char must be deleted

    long deletetime = chardata.getLong("deletetime");

    if (deletetime > 0)

    {

    if (System.currentTimeMillis() > deletetime)

    {

    L2Clan clan = ClanTable.getInstance().getClan(chardata.getInt("clanid"));

    if (clan != null)

    {

    clan.removeClanMember(objectId, 0);

    }

     

    L2GameClient.deleteCharByObjId(objectId);

    return null;

    }

    }

     

    CharSelectInfoPackage charInfopackage = new CharSelectInfoPackage(objectId, name);

    charInfopackage.setAccessLevel(chardata.getInt("accesslevel"));

    charInfopackage.setLevel(chardata.getInt("level"));

    charInfopackage.setMaxHp(chardata.getInt("maxhp"));

    charInfopackage.setCurrentHp(chardata.getDouble("curhp"));

    charInfopackage.setMaxMp(chardata.getInt("maxmp"));

    charInfopackage.setCurrentMp(chardata.getDouble("curmp"));

    charInfopackage.setKarma(chardata.getInt("karma"));

    charInfopackage.setPkKills(chardata.getInt("pkkills"));

    charInfopackage.setPvPKills(chardata.getInt("pvpkills"));

    charInfopackage.setFace(chardata.getInt("face"));

    charInfopackage.setHairStyle(chardata.getInt("hairstyle"));

    charInfopackage.setHairColor(chardata.getInt("haircolor"));

    charInfopackage.setSex(chardata.getInt("sex"));

     

    charInfopackage.setExp(chardata.getLong("exp"));

    charInfopackage.setSp(chardata.getInt("sp"));

    charInfopackage.setVitalityPoints(chardata.getInt("vitality_points"));

    charInfopackage.setClanId(chardata.getInt("clanid"));

     

    charInfopackage.setRace(chardata.getInt("race"));

     

    final int baseClassId = chardata.getInt("base_class");

    final int activeClassId = chardata.getInt("classid");

     

    charInfopackage.setX(chardata.getInt("x"));

    charInfopackage.setY(chardata.getInt("y"));

    charInfopackage.setZ(chardata.getInt("z"));

     

    if (Config.L2JMOD_MULTILANG_ENABLE)

    {

    String lang = chardata.getString("language");

    if (!Config.L2JMOD_MULTILANG_ALLOWED.contains(lang))

    {

    lang = Config.L2JMOD_MULTILANG_DEFAULT;

    }

    charInfopackage.setHtmlPrefix("data/lang/" + lang + "/");

    }

     

    // if is in subclass, load subclass exp, sp, lvl info

    if (baseClassId != activeClassId)

    {

    loadCharacterSubclassInfo(charInfopackage, objectId, activeClassId);

    }

     

    charInfopackage.setClassId(activeClassId);

     

    // Get the augmentation id for equipped weapon

    int weaponObjId = charInfopackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND);

    if (weaponObjId < 1)

    {

    weaponObjId = charInfopackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND);

    }

     

    if (weaponObjId > 0)

    {

    try (Connection con = ConnectionFactory.getInstance().getConnection();

    PreparedStatement statement = con.prepareStatement("SELECT augAttributes FROM item_attributes WHERE itemId=?"))

    {

    statement.setInt(1, weaponObjId);

    try (ResultSet result = statement.executeQuery())

    {

    if (result.next())

    {

    int augment = result.getInt("augAttributes");

    charInfopackage.setAugmentationId(augment == -1 ? 0 : augment);

    }

    }

    }

    catch (Exception e)

    {

    _log.log(Level.WARNING, "Could not restore augmentation info: " + e.getMessage(), e);

    }

    }

     

    // Check if the base class is set to zero and also doesn't match with the current active class, otherwise send the base class ID. This prevents chars created before base class was introduced from being displayed incorrectly.

    if ((baseClassId == 0) && (activeClassId > 0))

    {

    charInfopackage.setBaseClassId(activeClassId);

    }

    else

    {

    charInfopackage.setBaseClassId(baseClassId);

    }

     

    charInfopackage.setDeleteTimer(deletetime);

    charInfopackage.setLastAccess(chardata.getLong("lastAccess"));

    return charInfopackage;

    }

    }

     

     

    Может что еще подскажете, где может применяться. Вообще в старых ревах в L2PcInstance есть такое:

    [spoiler=public static L2PcInstance load(int objectId)]public static L2PcInstance load(int objectId)

    {

    return restore(objectId);

    }

     

     

    [spoiler=private static L2PcInstance restore(int objectId)] private static L2PcInstance restore(int objectId)

    {

    L2PcInstance player = null;

    double currentCp = 0;

    double currentHp = 0;

    double currentMp = 0;

    try (Connection con = L2DatabaseFactory.getInstance().getConnection();

    PreparedStatement statement = con.prepareStatement(RESTORE_CHARACTER))

    {

    // Retrieve the L2PcInstance from the characters table of the database

    statement.setInt(1, objectId);

    try (ResultSet rset = statement.executeQuery())

    {

    if (rset.next())

    {

    final int activeClassId = rset.getInt("classid");

    final boolean female = rset.getInt("sex") != Sex.MALE;

    final L2PcTemplate template = CharTemplateTable.getInstance().getTemplate(activeClassId);

    PcAppearance app = new PcAppearance(rset.getByte("face"), rset.getByte("hairColor"), rset.getByte("hairStyle"), female);

     

    player = new L2PcInstance(objectId, template, rset.getString("account_name"), app);

    player.setName(rset.getString("char_name"));

    restorePremServiceData(player, rset.getString("account_name"));

    player._lastAccess = rset.getLong("lastAccess");

     

    player.getStat().setExp(rset.getLong("exp"));

    player.setExpBeforeDeath(rset.getLong("expBeforeDeath"));

    player.getStat().setLevel(rset.getByte("level"));

    player.getStat().setSp(rset.getInt("sp"));

     

    player.setWantsPeace(rset.getInt("wantspeace"));

     

    player.setHeading(rset.getInt("heading"));

     

    player.setKarma(rset.getInt("karma"));

    player.setFame(rset.getInt("fame"));

    player.setPvpKills(rset.getInt("pvpkills"));

    player.setPkKills(rset.getInt("pkkills"));

    player.setOnlineTime(rset.getLong("onlinetime"));

    player.setNewbie(rset.getInt("newbie"));

    player.setNoble(rset.getInt("nobless") == 1);

     

    player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time"));

    if (player.getClanJoinExpiryTime() < System.currentTimeMillis())

    {

    player.setClanJoinExpiryTime(0);

    }

    player.setClanCreateExpiryTime(rset.getLong("clan_create_expiry_time"));

    if (player.getClanCreateExpiryTime() < System.currentTimeMillis())

    {

    player.setClanCreateExpiryTime(0);

    }

     

    int clanId = rset.getInt("clanid");

    player.setPowerGrade(rset.getInt("power_grade"));

    player.setPledgeType(rset.getInt("subpledge"));

    // player.setApprentice(rset.getInt("apprentice"));

     

    if (clanId > 0)

    {

    player.setClan(ClanTable.getInstance().getClan(clanId));

    }

     

    if (player.getClan() != null)

    {

    if (player.getClan().getLeaderId() != player.getObjectId())

    {

    if (player.getPowerGrade() == 0)

    {

    player.setPowerGrade(5);

    }

    player.setClanPrivileges(player.getClan().getRankPrivs(player.getPowerGrade()));

    }

    else

    {

    player.setClanPrivileges(L2Clan.CP_ALL);

    player.setPowerGrade(1);

    }

    player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));

    }

    else

    {

    if (player.isNoble())

    {

    player.setPledgeClass(5);

    }

     

    if (player.isHero())

    {

    player.setPledgeClass(8);

    }

     

    player.setClanPrivileges(L2Clan.CP_NOTHING);

    }

     

    player.setDeleteTimer(rset.getLong("deletetime"));

     

    player.setTitle(rset.getString("title"));

    player.getAppearance().setTitleColor(rset.getInt("title_color"));

    player.setAccessLevel(rset.getInt("accesslevel"));

    player.setFistsWeaponItem(player.findFistsWeaponItem(activeClassId));

    player.setUptime(System.currentTimeMillis());

     

    currentHp = rset.getDouble("curHp");

    currentCp = rset.getDouble("curCp");

    currentMp = rset.getDouble("curMp");

     

    player._classIndex = 0;

    try

    {

    player.setBaseClass(rset.getInt("base_class"));

    }

    catch (Exception e)

    {

    // TODO: Should this be logged?

    player.setBaseClass(activeClassId);

    }

     

    // Restore Subclass Data (cannot be done earlier in function)

    if (restoreSubClassData(player))

    {

    if (activeClassId != player.getBaseClass())

    {

    for (SubClass subClass : player.getSubClasses().values())

    {

    if (subClass.getClassId() == activeClassId)

    {

    player._classIndex = subClass.getClassIndex();

    }

    }

    }

    }

    if ((player.getClassIndex() == 0) && (activeClassId != player.getBaseClass()))

    {

    // Subclass in use but doesn't exist in DB -

    // a possible restart-while-modifysubclass cheat has been attempted.

    // Switching to use base class

    player.setClassId(player.getBaseClass());

    _log.warning("Player " + player.getName() + " reverted to base class. Possibly has tried a relogin exploit while subclassing.");

    }

    else

    {

    player._activeClass = activeClassId;

    }

     

    player.setApprentice(rset.getInt("apprentice"));

    player.setSponsor(rset.getInt("sponsor"));

    player.setLvlJoinedAcademy(rset.getInt("lvl_joined_academy"));

    player.setIsIn7sDungeon(rset.getInt("isin7sdungeon") == 1);

    player.setPunishLevel(rset.getInt("punish_level"));

    if (player.getPunishLevel() != PunishLevel.NONE)

    {

    player.setPunishTimer(rset.getLong("punish_timer"));

    }

    else

    {

    player.setPunishTimer(0);

    }

     

    CursedWeaponsManager.getInstance().checkPlayer(player);

     

    player.setDeathPenaltyBuffLevel(rset.getInt("death_penalty_level"));

     

    player.setVitalityPoints(rset.getInt("vitality_points"), true);

     

    // Set the x,y,z position of the L2PcInstance and make it invisible

    player.setXYZInvisible(rset.getInt("x"), rset.getInt("y"), rset.getInt("z"));

     

    // Set Teleport Bookmark Slot

    player.setBookMarkSlot(rset.getInt("BookmarkSlot"));

     

    // character creation Time

    player.getCreateDate().setTime(rset.getDate("createDate"));

     

    // Pc Bang

    player.setPcBangPoints(rset.getInt("pccafe_points"));

     

    // Language

    player.setLang(rset.getString("language"));

     

    // Prime

    player.setprime_points(rset.getLong("prime_points"));

     

    // Retrieve the name and ID of the other characters assigned to this account.

    try (PreparedStatement stmt = con.prepareStatement("SELECT charId, char_name FROM characters WHERE account_name=? AND charId<>?"))

    {

    stmt.setString(1, player._accountName);

    stmt.setInt(2, objectId);

    try (ResultSet chars = stmt.executeQuery())

    {

    while (chars.next())

    {

    player._chars.put(chars.getInt("charId"), chars.getString("char_name"));

    }

    }

    }

    }

    }

     

    if (player == null)

    {

    return null;

    }

     

    // Set Hero status if it applies

    if (Hero.getInstance().isHero(objectId))

    {

    player.setHero(true);

    }

     

    // Retrieve from the database all items of this L2PcInstance and add them to _inventory

    player.getInventory().restore();

    player.getFreight().restore();

    if (!Config.WAREHOUSE_CACHE)

    {

    player.getWarehouse();

    }

     

    // Retrieve from the database all secondary data of this L2PcInstance

    // Note that Clan, Noblesse and Hero skills are given separately and not here.

    // Retrieve from the database all skills of this L2PcInstance and add them to _skills

    player.restoreCharData();

     

    // Buff and status icons

    if (Config.STORE_SKILL_COOLTIME)

    {

    player.restoreEffects();

    }

     

    // Reward auto-get skills and all available skills if auto-learn skills is true.

    player.rewardSkills();

     

    player.restoreItemReuse();

     

    // Restore current Cp, HP and MP values

    player.setCurrentCp(currentCp);

    player.setCurrentHp(currentHp);

    player.setCurrentMp(currentMp);

     

    if (currentHp < 0.5)

    {

    player.setIsDead(true);

    player.stopHpMpRegeneration();

    }

     

    // Restore pet if exists in the world

    player.setPet(L2World.getInstance().getPet(player.getObjectId()));

    if (player.hasSummon())

    {

    player.getSummon().setOwner(player);

    }

     

    // Update the overloaded status of the L2PcInstance

    player.refreshOverloaded();

    // Update the expertise status of the L2PcInstance

    player.refreshExpertisePenalty();

     

    player.restoreFriendList();

     

    if (Config.STORE_UI_SETTINGS)

    {

    player.restoreUISettings();

    }

     

    player.restoreZoneRestartLimitTime();

     

    player._account = new L2Account(player.getAccountName());

    }

    catch (Exception e)

    {

    _log.log(Level.SEVERE, "Failed loading character.", e);

    }

    return player;

    }

     

     

    В новой реве которая у меня в L2PcInstance все иначе:

    Тут сразу в методе Load все, метода restore нет.

    [spoiler=public static L2PcInstance load(int objectId)] public static L2PcInstance load(int objectId)

    {

    try

    {

    final L2PcInstance player = DAOFactory.getInstance().getPlayerDAO().load(objectId);

    if (player == null)

    {

    return null;

    }

     

     

    // Retrieve from the database all items of this L2PcInstance and add them to _inventory

    player.getInventory().restore();

    player.getFreight().restore();

    if (!Config.WAREHOUSE_CACHE)

    {

    player.getWarehouse();

    }

     

    // Retrieve from the database all secondary data of this L2PcInstance

    // Note that Clan, Noblesse and Hero skills are given separately and not here.

    // Retrieve from the database all skills of this L2PcInstance and add them to _skills

    DAOFactory.getInstance().getSkillDAO().load(player);

     

    player._macros.restoreMe();

     

    player._shortCuts.restoreMe();

     

    DAOFactory.getInstance().getHennaDAO().load(player);

     

    DAOFactory.getInstance().getTeleportBookmarkDAO().load(player);

     

    DAOFactory.getInstance().getRecipeBookDAO().load(player, true);

     

    if (Config.STORE_RECIPE_SHOPLIST)

    {

    DAOFactory.getInstance().getRecipeShopListDAO().load(player);

    }

     

    DAOFactory.getInstance().getPremiumItemDAO().load(player);

     

    DAOFactory.getInstance().getItemDAO().loadPetInventory(player);

     

    // Reward auto-get skills and all available skills if auto-learn skills is true.

    player.rewardSkills();

     

    DAOFactory.getInstance().getItemReuseDAO().load(player);

     

    // Buff and status icons

    if (Config.STORE_SKILL_COOLTIME)

    {

    player.restoreEffects();

    }

     

    // Restore current CP, HP and MP values

    if (player.getCurrentHp() < 0.5)

    {

    player.setIsDead(true);

    player.stopHpMpRegeneration();

    }

     

    // Restore pet if exists in the world

    player.setPet(L2World.getInstance().getPet(player.getObjectId()));

    if (player.hasSummon())

    {

    player.getSummon().setOwner(player);

    }

     

    // Update the overloaded status of the L2PcInstance

    player.refreshOverloaded();

    // Update the expertise status of the L2PcInstance

    player.refreshExpertisePenalty();

     

    DAOFactory.getInstance().getFriendDAO().load(player);

     

    if (Config.STORE_UI_SETTINGS)

    {

    player.restoreUISettings();

    }

     

    if (player.isGM())

    {

    final long masks = player.getVariables().getLong(COND_OVERRIDE_KEY, PcCondOverride.getAllExceptionsMask());

    player.setOverrideCond(masks);

    }

    DAOFactory.getInstance().getPlayerDAO().loadCharacters(player);

     

    return player;

    }

    catch (Exception e)

    {

    LOG.error("Failed loading character.", e);

    }

    return null;

    }

     

    Но как я исказал, видимо сам разглядеть не могу что менять, мб кто знает?


  9. Знаю точно на хрониках ит стоит проверка на skillid =>9900 и дальше он не выдает эти пасивки при входе. Лечится комментированием или исправлением ид у пасивок сетов.

    он дает значения хп мп сп из базы данных, но тут в том то и дело что когда персонаж заходит в игру на стороне сервера сначало идет загрузка параметро персонажа из таблицы characters из бд (там же хп мп сп) , а поотом только он учитывает статы от бафов и эквика, вот мне и нужно поменять местами загрузку бафа и эквипа с характеристиками персонажа которые бурется из бд, где это сделать я так и не могу понять. Про enterworld писал, а скилл о котором вы говорите не причем здесь

  10. Попробуйте для начала после выхода чаром из мира посмотреть сколько хп сохранилось в бд

    Возможно оно сначала загружает хп, а потом добавляет баффы, сеты итд

    Так я это и сказал - "Судя по тому, что если не бафаться и не одевать вещи, хп сп и мп нормально показывают как и было до релога.

    Как я понимаю нужно где то поменять местами загрузку эквипа, бафа с подгрузкой данных о персонаже из бд при входе в мир."

    Я не могу найти где это менять местами.


  11. Добрый день!

    Сборка L2JServer последняя из репы.

    Проблема с HP MP CP после релога.

    Она возникает если надеты вещи которые повышают HP CP MP или наложен баф.

    Перед релогом делаю heal и потом делаю релог и у персонажа HP CP MP становится меньше.

    Судя по тому, что если не бафаться и не одевать вещи, хп сп и мп нормально показывают как и было до релога.

    Как я понимаю нужно где то поменять местами загрузку эквипа, бафа с подгрузкой данных о персонаже из бд при входе в мир.

    Сразу говорю в EnterWorld.java не нашел ничего. В L2PcInstance возможно не разглядел, может кто уже правил, поделитесь где конкретно это лежит. В старых ревизиях все запросы на БД есть в L2PcInstance, в последней (которую юзаю) не увидел таковых.


  12. Добрый день форумчанам!

    Проблема такая:  После открытия мультисела в кб , сама кб сообжает долго, пока определенное количество времени не пройдет кнопки не реагируют. Если переоткрыть вкладку в кб (где главная, регионы, клан и тд..) или переоткрыть кб то все работает,  но если снова открыть мультиисел, то все повторяется

    Код

    if (command.startsWith("_bbsmultisell;"))
    {
    StringTokenizer st = new StringTokenizer(command, ";");
    st.nextToken();
    parseCommunityBoardCommand("_bbsshop;" + st.nextToken(), activeChar);
    int multisell = Integer.parseInt(st.nextToken());
    MultisellData.getInstance().separateAndSend(multisell, activeChar, null, false);
    }
    Что сделать чтоб исправить? 

    parseCommunityBoardCommand("_bbsshop;" + st.nextToken(), activeChar);

×
×
  • Создать...