Пользователь
Регистрация: 17.10.2013
Адрес: Киев
Сообщений: 104
Отблагодарили 2 раз(а)
Рейтинг мнений:
|
Лаг На Сервере. Проблема С Мобами И Нпц.
Всем привет. Перейду сразу к делу, а дела обстоят плохо ;[
Открываюсь я уже 2-ой раз на сборке l2jlovely и второй раз меня настигают неудачи.
Суть проблемы в том что через n-ое ( рандомное ) кл-во времени пропадает возможность бить мобов но и это не всё, пропадает возможность выделять нпц т.е. открывать диалоговые откна с НПЦ, отбрасывает персонажей назад ( бежали вы с точи X кликнув на точку Y - не добежав до точки Y вас отбрасывает на точку X ). Продолжается всё это дело до тех пор пока я не перезагружу сервер.
Смотрю логи сервера - пусто, абсолютно без ошибок. Смотрю логи мускула, как в воду =\
Единственный известный мне фактор проявления этой ошибки это нагрузка на сервере свыше 10 человек.
Если играет меньше людей, лаг не проявляется.
Железка стоит хорошая, 2-ва ксеона по 4 ядра с частотой по 2.6. 32 гб ОЗУ ( в схашнике под ГС выделено 16гб ). 2 ssd харда по 120гб.
Ребят как продебажить и узнать в чем проблема? Уже нет никаких идей.
p\s На сервере есть 2-ва кастом скрипта на дроп по пати быть может из-за них проблема?
Свернуть ↑
Код:
package custom.core;
import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.quest.Quest;
/**
* @author TpaM
* @Adapted for Lucera: SoFace
*/
public class PartyDrop extends Quest {
public static String qn = "9999_PartyDrop";
// ID Монстров (Разделяются запятой).
private int[] MONSTERS_ID = { 29020, 29028, 29068 };
// ID Предмета, который будет использован в качестве дропа.
private int ITEM_ID = 13017;
// Количество дропа.
private int ITEM_COUNT = 2;
// Давать награду всей пати ?
private boolean REWARD_PARTY = true;
// Давать хиро при убийстве моба ?
private boolean HERO_REWARD = false;
// Давать хиро всей пати при убийстве моба ?
private boolean HERO_REWARD_PARTY = false;
// Давать нублес при убийстве моба ?
private boolean NOBLESS_REWARD = false;
// Давать нублес всей пати при убийстве моба ?
private boolean NOBLESS_REWARD_PARTY = false;
public PartyDrop()
{
super(-1, qn, "PartyDrop");
for (int id : MONSTERS_ID)
addKillId(id);
}
@Override
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)
{
if(REWARD_PARTY)
{
if(killer.getParty() != null)
{
for(L2PcInstance member : killer.getParty().getPartyMembers())
{
member.addItem("ADD PARTY ITEM", ITEM_ID, ITEM_COUNT, member, true);
if(HERO_REWARD_PARTY) {
member.setHero(true); }
if(NOBLESS_REWARD_PARTY) {
member.setNoble(true); }
member.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", ITEM_ID, ITEM_COUNT, killer, true);
if(HERO_REWARD) {
killer.setHero(true); }
if(NOBLESS_REWARD) {
killer.setNoble(true); }
killer.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", ITEM_ID, ITEM_COUNT, killer, true);
if(HERO_REWARD) {
killer.setHero(true); }
if(NOBLESS_REWARD) {
killer.setNoble(true); }
killer.sendMessage("Вы получили награду за РБ!");
}
return null;
}
public static void main(String[] args)
{
new PartyDrop();
}
}
Свернуть ↑Развернуть ↓
Свернуть ↑
Код:
package custom.core;
import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
import ru.catssoftware.gameserver.model.quest.Quest;
import java.util.Random;
public class PartyDropV2 extends Quest {
public static String qn = "10001_PartyDropV2";
// ID Монстров (Разделяются запятой).
private int[] MONSTERS_ID = { 29047, 25450, 25114 };
// ID Предмета, который будет использован в качестве дропа.
private int[] DROP_29047 = { 15001, 15002, 15007, 15006 ,15000, 15005, 15003,
9416, 9421, 9422, 9423, 9424, 9425, 9428, 9429, 9430, 9431, 9432, 10000, 10001, 10002,
9437, 9438, 9439, 9440, 15009, 10075, 10076, 13012, 10003, 10004, 10005, 10006, 10007,
15350, 15351, 15352, 15353, 15354, 15355, 15356, 10008, 10009, 10010, 10011, 10012,
15357, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9829, 9830, 9831, 9832, 9833, 9834, 9535, 9836, 9300, 9304, 9308, 9312, 9316, 9320, 9324, 9328, 9332, 9336, 9340 };
private int[] DROP_25114 = { 13017, 13016, 13020 };
// Количество дропа.
private int ITEM_COUNT = 1;
// Давать награду всей пати ?
private boolean REWARD_PARTY = true;
Random rand = new Random();
public PartyDropV2()
{
super(-1, qn, "PartyDropV2");
for (int id : MONSTERS_ID)
addKillId(id);
}
@Override
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)
{
if(REWARD_PARTY)
{
if(killer.getParty() != null)
{
for(L2PcInstance member : killer.getParty().getPartyMembers())
{
member.addItem("ADD PARTY ITEM", revardRoll(npc.getNpcId()), ITEM_COUNT, member, true);
member.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", revardRoll(npc.getNpcId()), ITEM_COUNT, killer, true);
killer.sendMessage("Вы получили награду за убийство РБ!");
}
}
else
{
killer.addItem("ADD PLAYER ITEM", revardRoll(npc.getNpcId()), ITEM_COUNT, killer, true);
killer.sendMessage("Вы получили награду за убийство РБ!");
}
return null;
}
private int revardRoll(int mob_id)
{
switch(mob_id)
{
case 29047:
return DROP_29047[rand.nextInt(DROP_29047.length)];
case 25450:
return 13010;
case 25114:
return DROP_25114[rand.nextInt(DROP_25114.length)];
default:
}
return 0;
}
public static void main(String[] args)
{
new PartyDropV2();
}
}
Свернуть ↑Развернуть ↓
Хотя мне уже говорили что не в скриптах дело но всё же.
Спасибо за внимание.
|