Задержка после выполнения команды.
Имеется скрипт бафера, как сделать задержку, дабы не флудили бафами и хилами, сервет ляжет :D :redlol:
Вот код: /* * Copyright (C) 2004-2013 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * L2J DataPack is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package handlers.bypasshandlers; import java.util.StringTokenizer; import java.util.logging.Level; import com.l2jserver.gameserver.handler.IBypassHandler; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.zone.ZoneId; /** * @author Xaras2 */ public class ArenaBuff implements IBypassHandler { private static final String[] COMMANDS = { "ArenaBuffs", "HPRecovery", "CPRecovery" }; private final int[][] BUFFS = { { // Fighter Buffs 6803, 6804, 6808, 6809, 6811, 6812, 6805, 6806, 6807 }, { // Mage Buffs 6803, 6804, 6808, 6809, 6811, 6812, 6805, 6806, 6807 } }; @Override public boolean useBypass(String command, L2PcInstance activeChar, L2Character target) { if (!target.isNpc()) { return false; } final L2Npc npc = (L2Npc) target; final StringTokenizer st = new StringTokenizer(command); try { String cmd = st.nextToken(); if (cmd.equalsIgnoreCase(COMMANDS[0])) { for (int skillId : BUFFS[activeChar.isMageClass() ? 1 : 0]) { SkillHolder skill = new SkillHolder(skillId, 1); if (skill.getSkill() != null) { npc.setTarget(activeChar); npc.doCast(skill.getSkill()); } } return true; } else if (cmd.equalsIgnoreCase(COMMANDS[1])) //Heal { if (activeChar.isInsideZone(ZoneId.PVP)) // Cannot be used while inside the pvp zone { return false; } SkillHolder skill = new SkillHolder(6817, 1); if (skill.getSkill() != null) { npc.setTarget(activeChar); npc.doCast(skill.getSkill()); } return true; } } catch (Exception e) { _log.log(Level.WARNING, "Exception in " + getClass().getSimpleName(), e); } return false; } @Override public String[] getBypassList() { return COMMANDS; } } |
Re: Задержка после выполнения команды.
Код:
Thread.sleep(ms) Или снова ждете пока сделают за вас? |
Re: Задержка после выполнения команды.
Цитата:
Можно воспользоваться обыкновенным таймером, то есть считывать системное время в переменную при бафе и прибавлять к ней некоторый промежуток времени на который вы хотите запретить повторное использование и проверять перед повторным использованием. Или же можно воспользоваться ThredPoolManager. |
Re: Задержка после выполнения команды.
Цитата:
и тут простым таймером не обойтись, я так понимаю таймер каждому игроку надо делать и в БД сохранять желательно, а то так не дождешся очереди на свой баф. |
Re: Задержка после выполнения команды.
Цитата:
|
Re: Задержка после выполнения команды.
А если баф в отдельный поток и его стопать? Или слишком затратно?
|
Re: Задержка после выполнения команды.
Цитата:
"ArenaBuffs", "HPRecovery", "CPRecovery" на каждую свой массив. + при рестарте сервера откаты пропадают, а если задумка автора делать КД раз в сутки? |
Re: Задержка после выполнения команды.
Команды две, аренабафс и хпрекавер, цпрекавер удалить забыл:)
Ну мне просто нужно сделать задержку хотя бы 30сек. |
Re: Задержка после выполнения команды.
Цитата:
Цитата:
|
Re: Задержка после выполнения команды.
Если рассуждать с точки зрения нагрузки, джентльмены, то выгоднее всего выдавать баффы бессрочно сразу при заходе чара, в пакете EnterWorld, а после смерти не обнулять их.
|
Текущее время: 05:06. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot