Скамейки

Violence

Гений мысли
Проверенный
Победитель в номинации 2019
Мастер реакций
Любитель реакций
Знаток великого письма
Знаток письма
Куратор Данных
Старожил I степени
Медаль за активность на Форуме
Преподаватель
За веру и верность форуму
За заслуги перед форумом
Сообщения
1 046
Розыгрыши
1
Репутация
2 245
Реакции
1 275
Баллы
1 808
Уважаемые пользователи , все прекрасно знают что Java - это ООП , и вот у меня появился вопрос в связи с этим.
Можно ли описать объект таким образом а в данном случаи речь о скамейках на "Острове фантазий" hf хроник таким образом что бы к примеру тот фикс который выкладывал респект был совсем не обязателен , вить социальное действие как "сесть на трон / сесть" присутствует , к чему тогда этот самый клиентский фикс ?. Или это уже траблы самого клиента ?.
 

Уважаемые пользователи , все прекрасно знают что Java - это ООП , и вот у меня появился вопрос в связи с этим.
Можно ли описать объект таким образом а в данном случаи речь о скамейках на "Острове фантазий" hf хроник таким образом что бы к примеру тот фикс который выкладывал респект был совсем не обязателен , вить социальное действие как "сесть на трон / сесть" присутствует , к чему тогда этот самый клиентский фикс ?. Или это уже траблы самого клиента ?.
ну, на скамейку можно усадить и без фикса, проблема в том, что он будет сидеть как на троне\земле, что совсем не подходит для скамейки
 
ну, на скамейку можно усадить и без фикса, проблема в том, что он будет сидеть как на троне\земле, что совсем не подходит для скамейки
Значит скорее всего просто не реализована сама эмуляция посадки на скамейку раз у меня не хочет садится чар :(.
А без лазанья в клиент можно как то установить его width / height для присидания ?
 
Что за фикс?
Ну сядете Вы на сервере, а клиент не сможет (если у него в статиках не описано, что можно сесть на этот объект и точки, куда он опустит свою жопу) и что дальше?:)
 
Что за фикс?
Ну сядете Вы на сервере, а клиент не сможет (если у него в статиках не описано, что можно сесть на этот объект и точки, куда он опустит свою жопу) и что дальше?:)
Дык об этом и речь , т.к использую N/a и чёт по средствам клиента сесть не получается , а как кастом допил не хочу замарачиватся по этому и спрашиваю в какую сторону рыть , или писать в серверной части саму эмуляцию посадки , или всё же лазить в клиент и просматривать доступные точки для приземления чьей либо задницы
 
Дык об этом и речь , т.к использую N/a и чёт по средствам клиента сесть не получается , а как кастом допил не хочу замарачиватся по этому и спрашиваю в какую сторону рыть , или писать в серверной части саму эмуляцию посадки , или всё же лазить в клиент и просматривать доступные точки для приземления чьей либо задницы
Клиент в любом случае надо править. А на сервере, статикам-лавочкам, просто можно выдать тип, как у тронов или запилить новый инстанс а-ля:
Код:
/**
* @author PointerRage
*
*/
public final class ThroneObject extends StaticActor {
    private final Lock lock = new PrimitiveAtomicLock();
    private WeakReference<L2PcInstance> sitter;
    public ThroneObject(int objectId, CharacterTemplate template, int staticId) {
        super(objectId, template, staticId);
    }
   
    @Override
    public void onAction(L2PcInstance player) {
        if (player.getTarget() != this) {
            player.setTarget(this);
            player.sendPacket(new MyTargetSelected(getObjectId(), 0));
            return;
        }

        player.sendPacket(new MyTargetSelected(getObjectId(), 0));

        if (!player.isInsideRadius(this, getInteractionDistance(), false, false)) {
            player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
            player.sendPacket(ActionFailed.STATIC_PACKET);
            return;
        }
       
        lock.lock();
        try {
            L2PcInstance actualSitter = sitter != null ? sitter.get() : null;
            if(actualSitter != null && actualSitter.getSittingObject() == this) {
                player.sendPacket(ActionFailed.STATIC_PACKET);
                return;
            }
           
            if(!isAllowSitting(player)) {
                player.sendPacket(ActionFailed.STATIC_PACKET);
                return;
            }
           
            sitter = player.getWeakReference();
        } finally {
            lock.unlock();
        }
       
        player.sitDown(false, this);
        player.broadcastPacket(new CharSit(player, getStaticId()));
    }
   
    private boolean isAllowSitting(L2PcInstance player) {
        Castle throneCastle = CastleManager.getInstance().getCastle(this);
        if(throneCastle == null) {
            return true;
        }
       
        L2Clan clan = player.getClan();
        if(clan == null) {
            return false;
        }
       
        Castle playerCastle = CastleManager.getInstance().getCastleById(clan.getHasCastle());
        if(playerCastle != throneCastle) {
            return false;
        }
       
        if(Config.ONLY_CLANLEADER_CAN_SIT_ON_THRONE && !player.isClanLeader()) {
            return false;
        }
       
        return true;
    }
   
    @Override
    public boolean isThrone() {
        return true;
    }
   
    @Override
    public ThroneObject getThrone() {
        return this;
    }
   
    @SuppressWarnings("unchecked")
    @Override
    public WeakReference<ThroneObject> getWeakReference() {
        if(weakReference == null)
            weakReference = new WeakReference<StaticActor>(this);
        return (WeakReference<ThroneObject>) weakReference;
    }
   
    @SuppressWarnings("unchecked")
    @Override
    public SoftReference<ThroneObject> getSoftReference() {
        if(softReference == null)
            softReference = new SoftReference<ThroneObject>(this);
        return (SoftReference<ThroneObject>) softReference;
    }
}
Только убрать проверки на замок.
 
Назад
Сверху Снизу