Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
NPCBuffer \ NO CARRIER
#1
1. Скажите, пожалуйста, нужно убрать NO CARRIER, чтобы люди могли нормально выходить из игры без оставания там.

Пакет CharInfo

Код:
package l2p.gameserver.serverpackets;

import l2p.Config;
import l2p.gameserver.instancemanager.CursedWeaponsManager;
import l2p.gameserver.instancemanager.PartyRoomManager;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.instances.L2CubicInstance;
import l2p.gameserver.model.items.Inventory;
import l2p.util.Location;

import java.util.logging.Logger;

public class CharInfo extends L2GameServerPacket
{
    private static final Logger _log = Logger.getLogger(CharInfo.class.getName());
    private L2Player _cha;
    private Inventory _inv;
    private int _mAtkSpd, _pAtkSpd;
    private int _runSpd, _walkSpd, _swimSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd;
    private Location _loc, _fishLoc;
    private String _name, _title;
    private int _objId, _race, _sex, base_class, pvp_flag, karma, rec_have;
    private float speed_move, speed_atack, col_radius, col_height;
    private int hair_style, hair_color, face, _abnormalEffect, _abnormalEffect2;
    private int clan_id, clan_crest_id, large_clan_crest_id, ally_id, ally_crest_id, class_id;
    private byte _sit, _run, _combat, _dead, private_store, _enchant;
    private byte _noble, _hero, _fishing, mount_type;
    private int plg_class, pledge_type, clan_rep_score, cw_level, mount_id;
    private int _nameColor, _title_color, _transform, _agathion;
    private L2CubicInstance[] cubics;
    private boolean can_writeImpl = false;
    private boolean partyRoom = false;
    private boolean isFlying = false;
    private int _territoryId;

    protected boolean logHandled()
    {
        return true;
    }

    public CharInfo(L2Player cha)
    {
        if((_cha = cha) == null || _cha.isInvisible() || _cha.isDeleting())
        {
            return;
        }
        // Проклятое оружие и трансформации для ТВ скрывают имя и все остальные опознавательные знаки
        if(_cha.getTransformationName() != null || _cha.getReflection().getId() < 0 && _cha.getPrivateStoreType() != L2Player.STORE_PRIVATE_NONE)
        {
            _name = _cha.getTransformationName() != null ? _cha.getTransformationName() : _cha.getName();
            _title = "";
            clan_id = 0;
            clan_crest_id = 0;
            ally_id = 0;
            ally_crest_id = 0;
            large_clan_crest_id = 0;
            if(_cha.isCursedWeaponEquipped())
            {
                cw_level = CursedWeaponsManager.getInstance().getLevel(_cha.getCursedWeaponEquippedId());
            }
        }
        else
        {
            _name = _cha.getName();
            if(_cha.getPrivateStoreType() != L2Player.STORE_PRIVATE_NONE)
            {
                _title = "";
            }
            else if(!_cha.isConnected())
            {
                _title = "NO CARRIER";
                _title_color = 255;
            }
            else
            {
                _title = _cha.getTitle();
                _title_color = _cha.getTitleColor();
            }
            clan_id = _cha.getClanId();
            clan_crest_id = _cha.getClanCrestId();
            ally_id = _cha.getAllyId();
            ally_crest_id = _cha.getAllyCrestId();
            large_clan_crest_id = _cha.getClanCrestLargeId();
            cw_level = 0;
        }
        if(_cha.isMounted())
        {
            _enchant = 0;
            mount_id = _cha.getMountNpcId() + 1000000;
            mount_type = (byte) _cha.getMountType();
        }
        else
        {
            _enchant = (byte) _cha.getEnchantEffect();
            mount_id = 0;
            mount_type = 0;
        }
        _inv = _cha.getInventory();
        _mAtkSpd = _cha.getMAtkSpd();
        _pAtkSpd = _cha.getPAtkSpd();
        float _moveMultiplier = _cha.getMovementSpeedMultiplier();
        _runSpd = (int) (_cha.getRunSpeed() / _moveMultiplier);
        _walkSpd = (int) (_cha.getWalkSpeed() / _moveMultiplier);
        _flRunSpd = 0; // TODO
        _flWalkSpd = 0; // TODO
        if(_cha.isFlying())
        {
            _flyRunSpd = _runSpd;
            _flyWalkSpd = _walkSpd;
        }
        else
        {
            _flyRunSpd = 0;
            _flyWalkSpd = 0;
        }
        _swimSpd = _cha.getSwimSpeed();
        _loc = _cha.getLoc();
        _objId = _cha.getObjectId();
        _race = _cha.getBaseTemplate().race.ordinal();
        _sex = _cha.getSex();
        base_class = _cha.getBaseClassId();
        pvp_flag = _cha.getPvpFlag();
        karma = _cha.getKarma();
        speed_move = _cha.getMovementSpeedMultiplier();
        speed_atack = _cha.getAttackSpeedMultiplier();
        col_radius = _cha.getColRadius();
        col_height = _cha.getColHeight();
        hair_style = _cha.getHairStyle();
        hair_color = _cha.getHairColor();
        face = _cha.getFace();
        if(clan_id > 0 && _cha.getClan() != null)
        {
            clan_rep_score = _cha.getClan().getReputationScore();
        }
        else
        {
            clan_rep_score = 0;
        }
        _sit = _cha.isSitting() ? (byte) 0 : (byte) 1; // standing = 1 sitting = 0
        _run = _cha.isRunning() ? (byte) 1 : (byte) 0; // running = 1 walking = 0
        _combat = _cha.isInCombat() ? (byte) 1 : (byte) 0;
        _dead = _cha.isAlikeDead() ? (byte) 1 : (byte) 0;
        private_store = (byte) _cha.getPrivateStoreType(); // 1 - sellshop
        cubics = _cha.getCubics().toArray(new L2CubicInstance[0]);
        _abnormalEffect = _cha.getAbnormalEffect();
        _abnormalEffect2 = _cha.getAbnormalEffect2();
        rec_have = _cha.isGM() ? 0 : _cha.getRecomHave();
        class_id = _cha.getClassId().getId();
        _noble = _cha.isNoble() ? (byte) 1 : (byte) 0; // 0x01: symbol on char menu ctrl+I
        _hero = _cha.isHero() || _cha.isGM() && Config.GM_HERO_AURA ? (byte) 1 : (byte) 0; // 0x01: Hero Aura
        _fishing = _cha.isFishing() ? (byte) 1 : (byte) 0;
        _fishLoc = _cha.getFishLoc();
        _nameColor = _cha.getNameColor(); // New C5
        plg_class = _cha.getPledgeClass();
        pledge_type = _cha.getPledgeType();
        _transform = _cha.getTransformation();
        _agathion = _cha.getAgathion() != null ? _cha.getAgathion().getId() : 0;
        partyRoom = PartyRoomManager.getInstance().isLeader(_cha);
        isFlying = _cha.isInFlyingTransform();
        _territoryId = _cha.getTerritorySiege();
        can_writeImpl = true;
    }

    @Override
    protected final void writeImpl()
    {
        if(!can_writeImpl)
        {
            return;
        }
        L2Player activeChar = getClient().getActiveChar();
        if(activeChar == null)
        {
            return;
        }
        if(activeChar.equals(_cha))
        {
            _log.severe("You cant send CharInfo about his character to active user!!!");
            Thread.dumpStack();
            return;
        }
        writeC(0x31);
        writeD(_loc.x);
        writeD(_loc.y);
        writeD(_loc.z + Config.CLIENT_Z_SHIFT);
        writeD(0x00/*_loc.h*/);
        writeD(_objId);
        writeS(_name);
        writeD(_race);
        writeD(_sex);
        writeD(base_class);
        for(byte PAPERDOLL_ID : PAPERDOLL_ORDER)
        {
            writeD(_inv.getPaperdollItemId(PAPERDOLL_ID));
        }
        for(byte PAPERDOLL_ID : PAPERDOLL_ORDER)
        {
            writeD(_inv.getPaperdollAugmentationId(PAPERDOLL_ID));
        }
        writeD(0x01); // ? GraciaFinal
        writeD(0x00); // ? GraciaFinal
        writeD(pvp_flag);
        writeD(karma);
        writeD(_mAtkSpd);
        writeD(_pAtkSpd);
        writeD(pvp_flag);
        writeD(karma);
        writeD(_runSpd);
        writeD(_walkSpd);
        writeD(_swimSpd/* 0x32 */); // swimspeed
        writeD(_swimSpd/* 0x32 */); // swimspeed
        writeD(_flRunSpd);
        writeD(_flWalkSpd);
        writeD(_flyRunSpd);
        writeD(_flyWalkSpd);
        writeF(speed_move); // _cha.getProperMultiplier()
        writeF(speed_atack); // _cha.getAttackSpeedMultiplier()
        writeF(col_radius);
        writeF(col_height);
        writeD(hair_style);
        writeD(hair_color);
        writeD(face);
        writeS(_title);
        writeD(clan_id);
        writeD(clan_crest_id);
        writeD(ally_id);
        writeD(ally_crest_id);
        writeD(0);
        writeC(_sit);
        writeC(_run);
        writeC(_combat);
        writeC(_dead);
        writeC(0x00); // is invisible
        writeC(mount_type); // 1-on Strider, 2-on Wyvern, 3-on Great Wolf, 0-no mount
        writeC(private_store);
        writeH(cubics.length);
        for(L2CubicInstance cubic : cubics)
        {
            writeH(cubic == null ? 0 : cubic.getId());
        }
        writeC(partyRoom ? 0x01 : 0x00); // find party members
        writeD(_abnormalEffect);
        writeC(isFlying ? 0x02 : 0x00);
        writeH(rec_have);
        writeD(mount_id);
        writeD(class_id);
        writeD(0);
        writeC(_enchant);
        if(_cha.getTeam() < 3)
        {
            writeC((byte) _cha.getTeam()); // team circle around feet 1 = Blue, 2 = red
        }
        else if(activeChar.getTeam() == 0)
        {
            writeC(0);
        }
        else
        {
            writeC(activeChar.getTeam() == _cha.getTeam() ? 1 : 2);
        }
        writeD(large_clan_crest_id);
        writeC(_noble);
        writeC(_hero);
        writeC(_fishing);
        writeD(_fishLoc.x);
        writeD(_fishLoc.y);
        writeD(_fishLoc.z);
        writeD(_nameColor);
        writeD(_loc.h);
        writeD(plg_class);
        writeD(pledge_type);
        writeD(_title_color);
        writeD(cw_level);
        writeD(clan_rep_score);
        writeD(_transform);
        writeD(_agathion);
        writeD(0x01); // T2
        writeD(_abnormalEffect2);
        writeD(_territoryId > 0 ? 0x50 + _territoryId : 0);
        writeD(0x00); // ?
        writeD(0x00); // ?
    }

    public static final byte[] PAPERDOLL_ORDER = {Inventory.PAPERDOLL_UNDER, Inventory.PAPERDOLL_HEAD,
        Inventory.PAPERDOLL_RHAND, Inventory.PAPERDOLL_LHAND, Inventory.PAPERDOLL_GLOVES, Inventory.PAPERDOLL_CHEST,
        Inventory.PAPERDOLL_LEGS, Inventory.PAPERDOLL_FEET, Inventory.PAPERDOLL_BACK, Inventory.PAPERDOLL_LRHAND,
        Inventory.PAPERDOLL_HAIR, Inventory.PAPERDOLL_DHAIR, Inventory.PAPERDOLL_RBRACELET,
        Inventory.PAPERDOLL_LBRACELET, Inventory.PAPERDOLL_DECO1, Inventory.PAPERDOLL_DECO2, Inventory.PAPERDOLL_DECO3,
        Inventory.PAPERDOLL_DECO4, Inventory.PAPERDOLL_DECO5, Inventory.PAPERDOLL_DECO6, Inventory.PAPERDOLL_BELT // Пояс
    };
}

Что убрать нужно?


2. Можно ли как-нибудь баффера из Коммунити Боард засунуть в NPC?
И как?
Хочешь быть сильным? Спроси меня как!
Ответ
#2
NO CARRIER

отключается кажись в services.properties
Ответ
#3
К сожалению нет такого в services.properties

Код:
# Вкл/выкл котов (NPC ID 31860) для смены профессий.
# Для включения следует поставить 1,2,3
AllowClassMasters = 1,2,3
# Стоимость смены профессии.
# Для отключения установите значения 0,0,0.
ClassMastersPrice = 0,0,0
# Предмет взымаемый в качестве платы, по умолчанию адена
ClassMastersPriceItem = 57
# Квест на быстрое прохождение 2 профы за 3кк
Short2ndProfQuest = True

# У классмастеров можно покупать шоты по двойной цене (classmaster_buylists.xml)
CM_BasicShop = False
# Мультиселл №1 у классмастеров (продажа за CoL, список создается на свой вкус)
CM_CoLShop = False

# Сервис смены ника
NickChangeEnabled = False
NickChangePrice = 100
NickChangeItem = 4037

# Сервис смены имени пета
PetNameChangeEnabled = False
PetNameChangePrice = 100
PetNameChangeItem = 4037

# Сервис обмена Improved baby петов
BabyPetExchangeEnabled = False
BabyPetExchangePrice = 100
BabyPetExchangeItem = 4037

# Сервис смены пола
SexChangeEnabled = False
SexChangePrice = 100
SexChangeItem = 4037

# Сервис смены базового класса
BaseChangeEnabled = False
BaseChangePrice = 35
BaseChangeItem = 4037

# Сервис отделения саба
SeparateSubEnabled = False
SeparateSubPrice = 35
SeparateSubItem = 4037

# Сервис смены цвета ника
NickColorChangeEnabled = False
# Порядок цветов инвертирован - BBGGRR
NickColorChangeList = 00FF00;00DD00
NickColorChangePrice = 100
NickColorChangeItem = 4037

# Сервис продажи дворянства
NoblessSellEnabled = False
NoblessSellPrice = 1000
NoblessSellItem = 4037

# Продажа ноблесса за территориальные войны
NoblessTWEnabled = False

# Сервис расширения инвентаря
ExpandInventoryEnabled = False
ExpandInventoryPrice = 1000
ExpandInventoryItem = 4037
ExpandInventoryMax = 250

# Сервис расширения личного склада
ExpandWarehouseEnabled = False
ExpandWarehousePrice = 1000
ExpandWarehouseItem = 4037

# Сервис расширения кланового склада
ExpandCWHEnabled = False
ExpandCWHPrice = 1000
ExpandCWHItem = 4037

# Сервис смены имени клана
ClanNameChangeEnabled = False
ClanNameChangePrice = 1000
ClanNameChangeItem = 4037

# Сервис расширения числа окон
WindowEnabled = False
WindowPrice = 1000
WindowItem = 4037
WindowDays = 7
WindowMax = 3

# Сервис повышения рейтов
# Позволяет на время поднять рейты всем чарам на аккаунте
# В данный момент работает только если гейм имеет право записи в базу логина
RateBonusEnabled = False
# Применять ли бонус, при отключеном сервисе
RateBonusApplyRatesThenServiceDisabled = False
# Все следующие значения можно указывать списком через ;
# Количество элементов должно быть равным!
RateBonusPrice = 1500;250
RateBonusItem = 4037;4037
# Это множитель к базовым рейтам, который будет применен к рейтам на экп/сп/адены/вещи/спойл
RateBonusValue = 2;2
# Время действия в сутках
RateBonusTime = 30;2

#Делевел
AllowDelevel = False
#ID итема
DelevelItem = 57
#Кол-во итемов
DelevelCount = 1000
#Мин левел для делевела
DelevelMinLevel = 1

##### Bonus event config #####
# Альтернативный сервис повышения рейтов, позволяет повышать рейты на отдельные параметры
BONUS_ENABLED = false
BONUS_ITEM = 4037
BONUS_PRICE = 50
BONUS_RATE = 2
BONUS_DAYS = 7
##### Bonus event config end #####

# Показывать ссылку на htm с информацией по получению CoL
# Сам htm расположен в data/scripts/services/howtogetcol.htm и по умолчанию пуст
HowToGetCoL = False

# Продажа ошейников у Pet Manager'ов, полностью конфигурируемо в зависимости от пожеланий
# Пример - продажа Light Purple-Maned Horse Mounting Bracelet
# на 7 дней - 10COL, на 30 - 30COL, на всегда - 100COL
# SellPets = 4037:10->13022;4037:30->20030;4037:100->20029
SellPets =

# Сервис "Цитатник рунета" АКА bash.org.ru
# При загрузке сервера скачивает RSS канал баш орга и помещает в /data/bash.xml
# За свежим башем идти к таурину.
BashEnabled = False
# Не загружать RSS-ленту из интернета. В этом случае ее надо помещать в /data/bash.xml внешними средствами.
# Лента должна быть в кодировке UTF-8.
BashSkipDownload = False
# Время автоматической перезагрузки данных, в часах. 0 - отключено.
BashReloadTime = 1

# Использование команды .offline для оффлайнового трейда
AllowOfflineTrade = True
OfflineMinLevel = 0
# Цвет имени оффлайновых игроков
OfflineTradeNameColor = FFFFFF
# Выкидывать оффлайновых игроков после завершения трейда
KickOfflineNotTrading = False
# Брать плату за переход в оффлайн трейд
OfflineTradePrice = 0
OfflineTradePriceItem = 57
# Оффлайн торговцу разрешено сидеть не более дней, по умолчанию 14 дней
OfflineTradeDaysToKick = 53
# Восстановление после рестарта
OfflineRestoreAfterRestart = True

# Запрет на торговлю в зоне действует только на оффлайн трейдеров
NoTradeOnlyOffline = False
# Налог на торговлю в процентах
TradeTax = 0.0
# Налог на торговлю в offshore зонах
OffshoreTradeTax = 0.0
# Налог снимается только с оффлайн трейдеров
TradeTaxOnlyOffline = False
# Разрешается торговать только на расстоянии от других торговцев
TradeOnlyFar = False
# Радиус поиска торговцев
TradeRadius = 30

# Оффшорная зона в гавани Гирана
GiranHarborZone = False

# Оффшорная зона в Parnassus
ParnassusZone = False
ParnassusNoTax = False
ParnassusPrice = 500000

# В оффшорной зоне не платится налог замка (иначе налог идет замку, откуда пришел игрок)
NoCastleTaxInOffshore = False

# Сервис привязки аккаунта к IP адресу
LockAccountIP = False

# Сервис смена пароля игроком через .password
ChangePassword = False

######## Lottery Manager ###############
# Вкл\выкл менеджера лотереи
AllowLottery = True
# Приз за победу
LotteryPrize = 50000
# Установка стоимости лотерейного белета (по умолчанию 2000 аден).
AltLotteryPrice = 2000
# Стоимость билета
LotteryTicketPrice = 2000
# Рейт на приз за совпадение 5ти номеров
Lottery5NumberRate = 0.6
# Рейт на приз за совпадение 4х номеров
Lottery4NumberRate = 0.4
# Рейт на приз за совпадение 3х номеров
Lottery3NumberRate = 0.2
# Приз за совпадение одного или двух номеров
Lottery2and1NumberPrize = 200
######## Lottery Manager End ###########

# Вкл/выкл рулетки
AllowRoulette = False
# Минимальная ставка.
RouletteMinBet = 1000
# Максимальная ставка, при разнице с минимальной в 6 десятичных порядков ограничивает систему Мартингейла серией из 20 проигрышей.
RouletteMaxBet = 1000000000

# Система реферралов
AllowReferrals = False
# Награда за 1 профу (выдается обоим участникам)
ReferralsBonusId1 = 57
ReferralsBonusCount1 = 100
# Награда за 2 профу (выдается обоим участникам)
ReferralsBonusId2 = 57
ReferralsBonusCount2 = 100

Прошу помощи.
Хочешь быть сильным? Спроси меня как!
Ответ
#4
эх

L2Player.java - нужно ковырять
Ответ
#5
[-WAR-];137814 Написал:1. Скажите, пожалуйста, нужно убрать NO CARRIER, чтобы люди могли нормально выходить из игры без оставания там.

В server.properties

# Время после логаута, которое чар будет оставаться в игре
LogoutIngameTime = 0
# Время после дисконнекта, которое чар будет оставаться в игре
DisconnectedIngameTime = 0

И будет выкидывать сразу.
Ответ
#6
Спасибо огромное.

2. Чтобы баффер из коммунити боард был в NPC. Как известно, нужно всего лишь в баффере в html прописать адресс скрипта.
Если я прав, где искать точно этот адресс скрипта?

Добавлено через 46 минут
Кто знает где менять именно, в каком файле информацию выводимую через .status ?
Хочешь быть сильным? Спроси меня как!
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Сборка RT и скрипты NPCBuffer L1KDE 7 1,942 12-27-2014, 05:24 AM
Последний пост: TARAN

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)