Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Лаг Шотов
#41
Народ Так как это пофиксить на Яве?
Много сервов видел где этого нет
Ответ
#42
реализовывай "ленивое" обновление в бд определенных предметов (по типу или ид) - это достаточно легко реализуемо.
Ответ
#43
я бы сделал так - пришел пакет о включении автошотов, проверил что шоты есть поставил флаг bool useFokingShots = true; И при каждом ударе, скилле убавлялбы шоты и применял эффект шота. Кончились шоты - убрал флаг и все.
Ответ
#44
Gaikotsu Написал:реализовывай "ленивое" обновление в бд определенных предметов (по типу или ид) - это достаточно легко реализуемо.

Блин, а как это реализовать? и что значит "ленивое"?Smile
Может где то есть уже инфа по реализации.
Ну или Расшифруйте что такое "ленивое" обновление в БазеSmile
Ответ
#45
public class BlessedSpiritShot extends ScriptItemHandler implements ScriptFile {
// all the items ids that this handler knowns

private static final int[] _itemIds = {3947, 3948, 3949, 3950, 3951, 3952, 22072, 22073, 22074, 22075, 22076};
private static final int[] _skillIds = {2061, 2160, 2161, 2162, 2163, 2164};

@Override
public boolean pickupItem(Playable playable, ItemInstance item) {
return true;
}

@Override
public void onLoad() {
ItemHandler.getInstance().registerItemHandler(this);
}

@Override
public void onReload() {
}

@Override
public void onShutdown() {
}

@Override
public boolean useItem(Playable playable, ItemInstance item, boolean ctrl) {
if (playable == null || !playable.isPlayer()) {
return false;
}
Player player = (Player) playable;

ItemInstance weaponInst = player.getActiveWeaponInstance();
WeaponTemplate weaponItem = player.getActiveWeaponItem();
int SoulshotId = item.getItemId();
boolean isAutoSoulShot = false;

if (player.getAutoSoulShot().contains(SoulshotId)) {
isAutoSoulShot = true;
}

if (weaponInst == null) {
if (!isAutoSoulShot) {
player.sendPacket(Msg.CANNOT_USE_SPIRITSHOTS);
}
return false;
}

if (weaponInst.getChargedSpiritshot() == ItemInstance.CHARGED_BLESSED_SPIRITSHOT) // already charged by blessed spirit shot
// btw we cant charge only when bsps is charged
{
return false;
}

int spiritshotId = item.getItemId();
int grade = weaponItem.getCrystalType().externalOrdinal;
int blessedsoulSpiritConsumption = weaponItem.getSpiritShotCount();

if (blessedsoulSpiritConsumption == 0) {
// Can't use Spiritshots
if (isAutoSoulShot) {
player.removeAutoSoulShot(SoulshotId);
player.sendPacket(new ExAutoSoulShot(SoulshotId, false), new SystemMessage(SystemMessage.THE_AUTOMATIC_USE_OF_S1_WILL_NOW_BE_CANCELLED).addItemName(spiritshotId));
return false;
}
player.sendPacket(Msg.CANNOT_USE_SPIRITSHOTS);
return false;
}

if (grade == 0 && spiritshotId != 3947 // NG
|| grade == 1 && spiritshotId != 3948 && spiritshotId != 22072 // D
|| grade == 2 && spiritshotId != 3949 && spiritshotId != 22073 // C
|| grade == 3 && spiritshotId != 3950 && spiritshotId != 22074 // B
|| grade == 4 && spiritshotId != 3951 && spiritshotId != 22075 // A
|| grade == 5 && spiritshotId != 3952 && spiritshotId != 22076 // S
) {
if (isAutoSoulShot) {
return false;
}
player.sendPacket(Msg.SPIRITSHOT_DOES_NOT_MATCH_WEAPON_GRADE);
return false;
}

long count = item.getCount();
if (Config.ALLOW_SOUL_SPIRIT_SHOT_INFINITELY && count >= 1) {
weaponInst.setChargedSpiritshot(ItemInstance.CHARGED_BLESSED_SPIRITSHOT);
player.sendPacket(Msg.POWER_OF_MANA_ENABLED);
player.broadcastPacket(new MagicSkillUse(player, player, _skillIds[grade], 1, 0, 0));
} else if (!Config.ALLOW_SOUL_SPIRIT_SHOT_INFINITELY) {
if (!player.getInventory().destroyItem(item, blessedsoulSpiritConsumption)) {
if (isAutoSoulShot) {
player.removeAutoSoulShot(SoulshotId);
player.sendPacket(new ExAutoSoulShot(SoulshotId, false), new SystemMessage(SystemMessage.THE_AUTOMATIC_USE_OF_S1_WILL_NOW_BE_CANCELLED).addItemName(spiritshotId));
return false;
}
player.sendPacket(Msg.NOT_ENOUGH_SPIRITSHOTS);
return false;
}

weaponInst.setChargedSpiritshot(ItemInstance.CHARGED_BLESSED_SPIRITSHOT);
player.sendPacket(Msg.POWER_OF_MANA_ENABLED);
player.broadcastPacket(new MagicSkillUse(player, player, _skillIds[grade], 1, 0, 0));
}
return true;
}

@Override
public final int[] getItemIds() {
return _itemIds;
}
}

Добавлено через 1 минуту
тут вроди все норм
Ответ
#46
Выкини MMOCore и впихни что-то более вменяемое. Этим ты исправишь самый большой косяк L2J проекта в целом. И не слушай никого, никакими кэшами производительности сервера не увеличить, если модуль работы с сетевыми подключениями унылое говно.

Помнится, на mmocom один олдфаг шарил видео с отсутствующим лагом сосок на дуалах. Типа тогда это была фишка PTS сборок по которой их можно отличить от унылой жабы.
Родился, живу и когда-нибудь умру.
Ответ
#47
Donatte Написал:Помнится, на mmocom один олдфаг шарил видео с отсутствующим лагом сосок на дуалах. Типа тогда это была фишка PTS сборок по которой их можно отличить от унылой жабы.

у нас (c1 pts) когда онлайн был 10 человек - тоже никакого лага сосок небыло
Ответ
#48
На боевые(СС...) никакого лага нету.
А вот у магов Бсс... Лагают. Даже при Локалке...

Добавлено через 7 минут
Donatte Написал:Выкини MMOCore и впихни что-то более вменяемое. Этим ты исправишь самый большой косяк L2J проекта в целом. И не слушай никого, никакими кэшами производительности сервера не увеличить, если модуль работы с сетевыми подключениями унылое говно.

Помнится, на mmocom один олдфаг шарил видео с отсутствующим лагом сосок на дуалах. Типа тогда это была фишка PTS сборок по которой их можно отличить от унылой жабы.

У меня это первый проект и еще не дорос к сожалению до такого....
Я так понимаю ты предлагаешь ядро заменить. Но я не шарю как. И так уже от Ява скрипта в глазах рябит Smile Если есть статейка какая то на тему твоего предложения буду очень признателен.
Надо ж учится как то. Я за Учение)))
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Файл отвечающий за автоюз шотов KeMnS 6 3,060 07-18-2008, 04:06 PM
Последний пост: Nytrex

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)