Странная работа скрипта у мобиуса

  • Автор темы Автор темы Grekk
  • Дата начала Дата начала

Grekk

Прославленный
Участник
Старожил I степени
Сообщения
281
Розыгрыши
0
Решения
1
Репутация
85
Реакции
239
Баллы
1 425
Хроники
  1. Goddess of Destruction Harmony
Сборка
mobius
В общем решил накидать простенький скрипт на увеличения уровня клана. За определенный ид монет. Все работает но есть одно "НО", почему то снимает по два раза монеты и дает сразу два лв клана а не один хотя жмешь один раз и должно на каждое нажатие забирать монеты и давать 1 уровень для клана. Не могу понять что не так может кто подскажет. Сборка мобиус.


Код:
            case "clanlevel":
            {
                htmltext = player.isClanLeader() ? "test_server_helper022.html" : "pl014.html";
                break;
            }
            case "clanlevelup":
            {
                if ((player.getClan() == null) || !player.isClanLeader())
                {
                    return null;
                }

                if (player.getClan().getLevel() >= 10)
                {
                    htmltext = "test_server_helper022a.html";
                }
                else
                {
                    int requiredItemId = 91663; 
                    long requiredItemCount = 1000; 


                    if (player.getInventory().getInventoryItemCount(requiredItemId, 0) >= requiredItemCount) {

                        player.destroyItemByItemId("ClanLevelUp", requiredItemId, requiredItemCount, player, true);


                        player.getClan().changeLevel(player.getClan().getLevel() + 1);
                        player.getClan().broadcastClanStatus();
                    } else {

                        player.sendPacket(SystemMessageId.THERE_ARE_NOT_ENOUGH_L_COINS);
                    }
                }
                break;
            }
 

Вложения

  • 1709280650983.webp
    1709280650983.webp
    7,1 КБ · Просмотры: 95
Поставь точку останова и посмотри по стеку откуда идет запрос 1 и 2. Если с одной точки то смотри в htm как там у тебя кнопка организована или что там у тебя
 
Поставь точку останова и посмотри по стеку откуда идет запрос 1 и 2. Если с одной точки то смотри в htm как там у тебя кнопка организована или что там у тебя
несколько раз проверил кнопку не чего подозрительного нету
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ClassMaster clanlevel">"Can I raise my clan level?" </Button>
 
В общем решил накидать простенький скрипт на увеличения уровня клана. За определенный ид монет. Все работает но есть одно "НО", почему то снимает по два раза монеты и дает сразу два лв клана а не один хотя жмешь один раз и должно на каждое нажатие забирать монеты и давать 1 уровень для клана. Не могу понять что не так может кто подскажет. Сборка мобиус.


Код:
            case "clanlevel":
            {
                htmltext = player.isClanLeader() ? "test_server_helper022.html" : "pl014.html";
                break;
            }
            case "clanlevelup":
            {
                if ((player.getClan() == null) || !player.isClanLeader())
                {
                    return null;
                }

                if (player.getClan().getLevel() >= 10)
                {
                    htmltext = "test_server_helper022a.html";
                }
                else
                {
                    int requiredItemId = 91663; 
                    long requiredItemCount = 1000; 


                    if (player.getInventory().getInventoryItemCount(requiredItemId, 0) >= requiredItemCount) {

                        player.destroyItemByItemId("ClanLevelUp", requiredItemId, requiredItemCount, player, true);


                        player.getClan().changeLevel(player.getClan().getLevel() + 1);
                        player.getClan().broadcastClanStatus();
                    } else {

                        player.sendPacket(SystemMessageId.THERE_ARE_NOT_ENOUGH_L_COINS);
                    }
                }
                break;
            }
ну втыкните в начало else Thread.stacktrace(); и смотрите что вызывает код по два раза.
По итогу у вас типо два ексепшина будет.
 
Скорее всего где-нибудь два раза обработчик вешаете
 
Включаете дебагер в IDEA , и смотрите , откуда приходит второе обращения , сразу все станет понятно
 
I've just had to deal with this, like the day before yesterday, and while I decided not to dig too deep to actually find the culprit because I was doing something for a client, so the source was not mine to waste time on, I still circumvented it by utilising an already existing feature.

Anyway, I solved it by creating a new custom Request, which I tied to a scheduled feature that would remove/clear/reset the request in 0.3 seconds. The request is added on the first execution, and the very first check that you do in the "SWITCH" is whether the player has this custom Request active or not. This way, the second execution stops without doing anything.
 
Последнее редактирование:

Похожие темы

  • Закрыта
  • Вопрос Вопрос
Ответы
7
Просмотры
791
Назад
Сверху Снизу