[овероподобные] Фикс дюпа на фортах

Enmity

Гений мысли
Проверенный
Победитель в номинации 2017
За знание ядра
Почетный знак Модератора (III степени)
Победитель в номинации 2016
За заслуги перед форумом
Медаль за активность на Форуме
Разработчик
Сообщения
1 707
Розыгрыши
0
Репутация
2 909
Реакции
1 688
Баллы
1 843
[USERSID=] [/USERSID]когда-то в давние времена, чуть позже шары сурсов фт, Гринд зашарил на форуме фт фикс этого дюпа.

времени прошло много, форум фт уже пал смертью храбрых, но фикс особо в паблике не появлялся.

ps: хайд от лампы. если кому-то нужно и вы не только что зарегались - пишите в личку, дам личный. тупо защита от личинга дебилами-новорегами, хоть они зачастую и обитают в разделе халявных пдсх и тап дизигнов.

кидать сюда

3ebb1-clip-17kb.png


Код:
//====================пофикшено в [А по щам?] знает какие времена Гриндом.
//====================первое появление - forum first-team.

public class LogisticsOfficerInstance extends FacilityManagerInstance
{
    private static final int[] SUPPLY_NPC = new int[]
    {
        35665,
        35697,
        35734,
        35766,
        35803,
        35834
    };

    private static final int ITEM_ID = 9910; // Blood Oath
    public LogisticsOfficerInstance(int objectId, NpcTemplate template)
    {
        super(objectId, template);
    }
    @Override
    public void onBypassFeedback(Player player, String command)
    {
        if(!canBypassCheck(player, this))
            return;
        Fortress fortress = getFortress();
        if(!player.isClanLeader() || fortress.getOwnerId() != player.getClanId())
        {
            showChatWindow(player, "residence2/fortress/fortress_not_authorized.htm");
            return;
        }
        if(command.equalsIgnoreCase("guardInfo"))
        {
            if(fortress.getContractState() != Fortress.CONTRACT_WITH_CASTLE)
            {
                showChatWindow(player, "residence2/fortress/fortress_supply_officer005.htm");
                return;
            }
            showChatWindow(player, "residence2/fortress/fortress_supply_officer002.htm", "%guard_buff_level%", fortress.getFacilityLevel(Fortress.GUARD_BUFF));
        }
        else if(command.equalsIgnoreCase("supplyInfo"))
        {
            if(fortress.getContractState() != Fortress.CONTRACT_WITH_CASTLE)
            {
                showChatWindow(player, "residence2/fortress/fortress_supply_officer005.htm");
                return;
            }
            showChatWindow(player, "residence2/fortress/fortress_supply_officer009.htm", "%supply_count%", fortress.getSupplyCount());
        }
        else if(command.equalsIgnoreCase("rewardInfo"))
        {
            showChatWindow(player, "residence2/fortress/fortress_supply_officer010.htm", "%blood_oaths%", fortress.getRewardCount());
        }
        else if(command.equalsIgnoreCase("receiveSupply"))
        {
            String filename;
            if(fortress.getSupplyCount() > 0)
            {
                if(player.getVar("FortSupply") != null)
                {
                    if(player.getVarLong("FortSupply") > System.currentTimeMillis())
                    {
                        player.sendMessage(player.isLangRus() ? "Данное действие доступно 1-н раз в 6 часов." : "This action is available 1-n every 6 hours.");
                        return;
                    }
                }
                player.setVar("FortSupply", System.currentTimeMillis() + 21600000, -1);
                filename = "residence2/fortress/fortress_supply_officer016.htm";
                NpcInstance npc = NpcHolder.getInstance().getTemplate(SUPPLY_NPC[fortress.getSupplyCount() - 1]).getNewInstance();
                npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp());
                npc.spawnMe(new Location(getX() - 23, getY() + 41, getZ()));
            }
            else
                filename ="residence2/fortress/fortress_supply_officer017.htm";
            NpcHtmlMessage html = new NpcHtmlMessage(player, this);
            html.setFile(filename);
            player.sendPacket(html);
        }
        else if(command.equalsIgnoreCase("receiveRewards"))
        {
            String filename;
            int count = fortress.getRewardCount();
            if(count > 0)
            {
                filename = "residence2/fortress/fortress_supply_officer013.htm";
                fortress.setRewardCount(0);
                fortress.setJdbcState(JdbcEntityState.UPDATED);
                fortress.update();
                Functions.addItem(player, ITEM_ID, count);
            }
            else
                filename ="residence2/fortress/fortress_supply_officer014.htm";
            NpcHtmlMessage html = new NpcHtmlMessage(player, this);
            html.setFile(filename);
            player.sendPacket(html);
        }
        else if(command.equalsIgnoreCase("toLevel1"))
            buyFacility(player, Fortress.GUARD_BUFF, 1, 100000);
        else if(command.equalsIgnoreCase("toLevel2"))
            buyFacility(player, Fortress.GUARD_BUFF, 2, 150000);
        else
            super.onBypassFeedback(player, command);
    }
    @Override
    public void showChatWindow(Player player, int val, Object... arg)
    {
        showChatWindow(player, "residence2/fortress/fortress_supply_officer001.htm");
    }
}



ps:
 
Последнее редактирование модератором:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
фикс именно какого дюпа?

в фортах как мне известно есть 2 типа дюпа)
 
Последнее редактирование модератором:

Баги/Дюпы/Недоработки овера(лостворлда) И вообще пишим сюда

А вообще вы бы занялись серьезными делами вида синхронизации осад, семи печатей

А не мусолили тему которой 4 года и любой вменяемый человек давно поправил это у себя
 
Последнее редактирование:
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
А вообще вы бы занялись серьезными делами вида синхронизации осад, семи печатей
ну 7 печатей я сделал пока вроде всё ок но нужны тесты.
Осады нужна полная проверка на тестах проблем не было, но нужны глобал тесты...
 
ну 7 печатей я сделал пока вроде всё ок но нужны тесты.
Осады нужна полная проверка на тестах проблем не было, но нужны глобал тесты...
:Spitt: Как бы там нужно вынести весь спавн, и впилить заного нормально.
 

    Ancient

    Баллов: 1
    Респект
Изящно сделано, респект, я даже не смотрел на этот момент, так как нарикании на счёт этого не было
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
:Spitt: Как бы там нужно вынести весь спавн, и впилить заного нормально.
Это то понятно , но всё делается сразу, основное я вывел уже, вот теперь тестирую всю серию 7 печатей, так что гарантии пока не даю что он сделан верно.
 
Это то понятно , но всё делается сразу, основное я вывел уже, вот теперь тестирую всю серию 7 печатей, так что гарантии пока не даю что он сделан верно.
:Am: Так зачем говорить что 7 печатей сделано ?
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
:Am: Так зачем говорить что 7 печатей сделано ?
я отписал что я сделал, у вас тоже 7 печатей не сделан как нужно)
так что после глобал тестов будет понятно что не так...
 
я отписал что я сделал, у вас тоже 7 печатей не сделан как нужно)
так что после глобал тестов будет понятно что не так...
Сделай так, чтобы я удивился.

Screenshot_9.png

И да... Квесты там тоже почти все переписаны. Разве только что синхронизацию с осадами сделать.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Я точно видел такую сборку, т.к. в голове это засело у меня не просто так.

З.Ы. Хотелось бы посмотреть варианты фиксов.

там тупейшая ошибка - при спавне сундука не обнуляется количество собранных товаров.
так что тупо делаем так и все.

fortress.setSupplyCount(0);

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


а, вижу уже написали ранее - обновлять блин страницу надо чаще...
 
Крепости заключают контракт с замком в случае, когда лидер клана делает подобный выбор в разговоре со Special Envoy. Если клан присягнул на верность лорду замка, то он обязуется уплачивать определенный налог этому замку каждые шесть часов. Данный налог автоматически изымается из клановой казны. Если денег в казне клана не хватает для уплаты налога, то крепость автоматически переходит в разряд независимых. Подчиненная замку крепость наделяется всеми возможностями управления, однако лишается подземной темницы. Замок, заключивший контракт с крепостью, обязуется снабжать её особыми товарами, которые могут быть приобретены у Офицера снабжения. Уровень (качество) данных товаров повышается каждые шесть часов.

Владеющий замком клан лишается двух очков репутации при каждой поставке товара для крепости. Если количество очков репутации клана, управляющего замком становится меньше двух, то поставка товаров в крепость прекращается, а лидер клана, владеющего крепостью, получает системное уведомление об этом.

Максимальный уровень поставляемого товара — шестой. Если клан, владеющий крепостью, приобретает товары у Офицера снабжения, то уровень поставки вновь сбрасывается на нулевой. Если владеющий замком клан имеет на своей территории крепость, присягнувшую ему на верность — он наделяется возможностью спускаться в подземелье замка.
 
там тупейшая ошибка - при спавне сундука не обнуляется количество собранных товаров.
так что тупо делаем так и все.

fortress.setSupplyCount(0);

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


а, вижу уже написали ранее - обновлять блин страницу надо чаще...
Все таки запарился и прочитал, как должно работать. Так получается, что в первом посте вообще не фикс, т.к. раз в 6 часов повышается уровень снабжения. В который раз удостоверился, что перед фиксами нужно изучить, как все должно работать=)))
 
Все таки запарился и прочитал, как должно работать. Так получается, что в первом посте вообще не фикс, т.к. раз в 6 часов повышается уровень снабжения. В который раз удостоверился, что перед фиксами нужно изучить, как все должно работать:))
Как может говно код работать верно?
 
Как может говно код работать верно?
Смотря что подразумевать под говнокодом:) Я когда залез у себя править вывод списка для заточки скиллов, так вообще офигел. При каждом запросе на список он гонял вложенные циклы с проверками в общей сложности 400к раз, но при том чтобы он заработал надо было только проверку добавить и говнокод заработает=) Пришлось сносить и переделывать=)
 
Назад
Сверху Снизу