12-02-2013, 10:51 PM
Хроники: Interlude
Доброго времени суток дорогие друзья!
Вникаю в систему регенерации и нихрена толкового пока не получается понять и освоить.
-Есть метод - отвечающий за период регенерации (время через которое мы будем регениться)
-Он возвращает int значение 3000 (3sec)
Моя задача вывести регенерационный период для персонажа отдельно от мобов, что я делаю:
Фаза 1:
- Создаю переменную int REGEN = 10000(10sec)
- Вбиваю условие на проверку (char instanceof L2PcInstance)
- Метод теперь возвращает int значение в зависимости от того, кто это: L2Character или же L2PcInstance
- Всё работает.
Фаза 2:
Усложняю задачу с проверкой на то, сидит ли чар. Если сидит, то:
[return REGEN - 7000]; //3s
Если же чар стоит на месте, то:
[return REGEN - 4000]; //6s
- Запускаю это дело и вот тут возникает проблема. Персонаж начинает регениться, запускается метод startHpMpRegeneration(); И если я сяду, то метод startHpMpRegeneration() продолжит свой "ход" и будет продолжать регенить с той скоростью, с которой запускался. Иными словами, он игнорирует условие в метооде getRegeneratePeriod() проверку if(player.isSitting())
Вопрос: Каким путём пойти? Как заставить его обрабатывать isSitting()/isMoving() методы, даже тогда, когда сам реген запустился. Т.е. останавливать его, и запускать заново?
Спасибо большое!
Доброго времени суток дорогие друзья!
Вникаю в систему регенерации и нихрена толкового пока не получается понять и освоить.
-Есть метод - отвечающий за период регенерации (время через которое мы будем регениться)
-Он возвращает int значение 3000 (3sec)
Моя задача вывести регенерационный период для персонажа отдельно от мобов, что я делаю:
Фаза 1:
- Создаю переменную int REGEN = 10000(10sec)
- Вбиваю условие на проверку (char instanceof L2PcInstance)
- Метод теперь возвращает int значение в зависимости от того, кто это: L2Character или же L2PcInstance
- Всё работает.
Фаза 2:
Усложняю задачу с проверкой на то, сидит ли чар. Если сидит, то:
[return REGEN - 7000]; //3s
Если же чар стоит на месте, то:
[return REGEN - 4000]; //6s
- Запускаю это дело и вот тут возникает проблема. Персонаж начинает регениться, запускается метод startHpMpRegeneration(); И если я сяду, то метод startHpMpRegeneration() продолжит свой "ход" и будет продолжать регенить с той скоростью, с которой запускался. Иными словами, он игнорирует условие в метооде getRegeneratePeriod() проверку if(player.isSitting())
Вопрос: Каким путём пойти? Как заставить его обрабатывать isSitting()/isMoving() методы, даже тогда, когда сам реген запустился. Т.е. останавливать его, и запускать заново?
Спасибо большое!