Проблемы с КБ

Cyrus

Заблокирован
Заблокирован
Сообщения
187
Розыгрыши
0
Репутация
106
Реакции
336
Баллы
1 003
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
L2J
Сборка hf j при покупке с кб нет связи 100 раз проверял настройки 100 раз проверял список разрешенных мультиселлов поменял файлы отвечаюшие за кб из исходы но ничего не получается не знаю в чем проблема мб в исходах или кб испортили специально?настрою локалки более 300-400 сборок настроил не профи но на своем уровне так себе такую сборку еще не видел просто шикардос.Мб кто подскажет в чем проблема?
 
Сборка hf j при покупке с кб нет связи 100 раз проверял настройки 100 раз проверял список разрешенных мультиселлов поменял файлы отвечаюшие за кб из исходы но ничего не получается не знаю в чем проблема мб в исходах или кб испортили специально?настрою локалки более 300-400 сборок настроил не профи но на своем уровне так себе такую сборку еще не видел просто шикардос.Мб кто подскажет в чем проблема?
В чистом L2J без доработки ядра ничего не выйдет. так что в ядро.
 
Сборка hf j при покупке с кб нет связи 100 раз проверял настройки 100 раз проверял список разрешенных мультиселлов поменял файлы отвечаюшие за кб из исходы но ничего не получается не знаю в чем проблема мб в исходах или кб испортили специально?настрою локалки более 300-400 сборок настроил не профи но на своем уровне так себе такую сборку еще не видел просто шикардос.Мб кто подскажет в чем проблема?
Может это поможет, в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java
нужно убрать примерно такой код.
Код:
if (!player.isGM() && ((target == null) || !list.checkNpcObjectId(target.getObjectId()) || !target.canInteract(player)))
        {
            player.setMultiSell(null);
            return;
        }
 
Может это поможет, в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java
нужно убрать примерно такой код.
Код:
if (!player.isGM() && ((target == null) || !list.checkNpcObjectId(target.getObjectId()) || !target.canInteract(player)))
        {
            player.setMultiSell(null);
            return;
        }
может это и поможет ( не знаю в чем трабл), но Вы понимаете, что делает эта проверка? и зачем ее добавили? "убрать примерно такой код", - так плодятся баги.
Я бы для начала отдебажил, до куда доходит, а где попадает под казнь через return.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Может это поможет, в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java
нужно убрать примерно такой код.
Код:
if (!player.isGM() && ((target == null) || !list.checkNpcObjectId(target.getObjectId()) || !target.canInteract(player)))
        {
            player.setMultiSell(null);
            return;
        }
Не помогло(( мб кто нить другой скажет разработчики)
 
Сборка hf j при покупке с кб нет связи 100 раз проверял настройки 100 раз проверял список разрешенных мультиселлов поменял файлы отвечаюшие за кб из исходы но ничего не получается не знаю в чем проблема мб в исходах или кб испортили специально?настрою локалки более 300-400 сборок настроил не профи но на своем уровне так себе такую сборку еще не видел просто шикардос.Мб кто подскажет в чем проблема?
Оффтоп:
От того что ты меняешь исходные файлы в исходнике от этого косяк ты не устранишь, а только можешь сделать все хуже, и прийти сюда уже с другими вопросами
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Оффтоп:
От того что ты меняешь исходные файлы в исходнике от этого косяк ты не устранишь, а только можешь сделать все хуже, и прийти сюда уже с другими вопросами
Я знаю поэтому спрашиваю в чем проблема(

Soanymore, Есть еще какие нить доводы
 
может это и поможет ( не знаю в чем трабл), но Вы понимаете, что делает эта проверка? и зачем ее добавили? "убрать примерно такой код", - так плодятся баги.
Я бы для начала отдебажил, до куда доходит, а где попадает под казнь через return.
Конечно понимаю, но в некоторых случаях можно использовать к примеру если сервер не публичный ( человек играет с другом на локалке и просто не юзают баги но им нужно чтоб работал Шоп в КВ)
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Aleksi78, Сервер публичный пока что не публичный вот этот мразь единственный минус .На сервере гора моды и системы поэтому хочу опубликовать

Сборку давно скинули мне не как то раз глянул и офигел просто шикардос-сборка
 
Попробуй так должно помочь:)
в java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
нужно добавить в конец

private boolean _isBBSMultisell = false;

public void setIsUsingBBSMultisell(boolean isBBSMultisell)
{
_isBBSMultisell = isBBSMultisell;
}

public boolean isBBSMultisell()
{
return _isBBSMultisell;
}

в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java

120 строка if (!player.isGM() && (npc != null)) заменяешь на if (!player.isGM() && (npc != null) && !player.isBBSMultisell())

потом в коде АЛТ+Б добавляешь:
(у меня такой путь) dist/game/data/scripts/handlers/communityboard/ShopBoard.java
+ activeChar.setIsUsingBBSMultisell(true);
MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Попробуй так должно помочь:)
в java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
нужно добавить в конец

private boolean _isBBSMultisell = false;

public void setIsUsingBBSMultisell(boolean isBBSMultisell)
{
_isBBSMultisell = isBBSMultisell;
}

public boolean isBBSMultisell()
{
return _isBBSMultisell;
}

в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java

120 строка if (!player.isGM() && (npc != null)) заменяешь на if (!player.isGM() && (npc != null) && !player.isBBSMultisell())

потом в коде АЛТ+Б добавляешь:
(у меня такой путь) dist/game/data/scripts/handlers/communityboard/ShopBoard.java
+ activeChar.setIsUsingBBSMultisell(true);
MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
Попробую
 
Aleksi78, Сервер публичный пока что не публичный вот этот мразь единственный минус .На сервере гора моды и системы поэтому хочу опубликовать

Сборку давно скинули мне не как то раз глянул и офигел просто шикардос-сборка
Посмотри как сделано у L2J_Mobius, я не проверял с багами оно там или нет но КБ там работает.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Попробуй так должно помочь:)
в java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
нужно добавить в конец

private boolean _isBBSMultisell = false;

public void setIsUsingBBSMultisell(boolean isBBSMultisell)
{
_isBBSMultisell = isBBSMultisell;
}

public boolean isBBSMultisell()
{
return _isBBSMultisell;
}

в java\com\l2jserver\gameserver\network\clientpackets\MultiSellChoose.java

120 строка if (!player.isGM() && (npc != null)) заменяешь на if (!player.isGM() && (npc != null) && !player.isBBSMultisell())

потом в коде АЛТ+Б добавляешь:
(у меня такой путь) dist/game/data/scripts/handlers/communityboard/ShopBoard.java
+ activeChar.setIsUsingBBSMultisell(true);
MultisellData.getInstance().separateAndSend(listId, activeChar, null, false);
И смысл от кода? После открытия КБ всегда будет тру и не работать проверка
Для этого можно сделать конфиг
типа
BBS_PVP_SERVER и дописать вместо вашей проверки, так по нуждам будут включать/выключать пользователи
 
И смысл от кода? После открытия КБ всегда будет тру и не работать проверка
Для этого можно сделать конфиг
типа
BBS_PVP_SERVER и дописать вместо вашей проверки, так по нуждам будут включать/выключать пользователи
Я как-то не задумался об этом)))
Вот такое решение у L2J_Mobius (проверил работает)
--- a/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java
+++ b/java/com/l2jserver/gameserver/network/clientpackets/MultiSellChoose.java
@@ -18,8 +18,6 @@
*/
package com.l2jserver.gameserver.network.clientpackets;

-import static com.l2jserver.gameserver.model.actor.L2Npc.INTERACTION_DISTANCE;
-
import java.util.ArrayList;
import java.util.List;

@@ -120,21 +118,13 @@
}

final L2Npc npc = player.getLastFolkNPC();
- if (((npc != null) && !list.isNpcAllowed(npc.getId())) || ((npc == null) && list.isNpcOnly()))
+
+ if (!list.isNpcAllowed(-1) && !isAllowedToUse(player, npc, list))
{
player.setMultiSell(null);
return;
}

  • if (!player.isGM() && (npc != null) && !player.isBBSMultisell())
  • {
  • if (!player.isInsideRadius(npc, INTERACTION_DISTANCE, true, false) || (player.getInstanceId() != npc.getInstanceId()))
  • {
  • player.setMultiSell(null);
  • return;
  • }
  • }
for (Entry entry : list.getEntries())
{
if (entry.getEntryId() == _entryId)
@@ -469,6 +459,26 @@
}
}

  • private boolean isAllowedToUse(L2PcInstance player, L2Npc npc, PreparedListContainer list)
  • {
  • if (npc != null)
  • {
  • if (!list.isNpcAllowed(npc.getId()))
  • {
  • return false;
  • }
  • else if (list.isNpcOnly() && ((npc.getInstanceId() != player.getInstanceId()) || !player.isInsideRadius(npc, L2Npc.INTERACTION_DISTANCE, true, false)))
  • {
  • return false;
  • }
  • }
  • else if (list.isNpcOnly())
  • {
  • return false;
  • }
  • return true;
  • }
@Override
public String getType()
{

--- a/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java
+++ b/java/com/l2jserver/gameserver/data/xml/impl/MultisellData.java
@@ -243,7 +247,7 @@
return;
}

- if (((npc != null) && !template.isNpcAllowed(npc.getId())) || ((npc == null) && template.isNpcOnly()))
+ if (!template.isNpcAllowed(-1) && (((npc != null) && !template.isNpcAllowed(npc.getId())) || ((npc == null) && template.isNpcOnly())))
{
LOG.warn("{}: Player {} attempted to open multisell {} from npc {} which is not allowed!", getClass().getSimpleName(), player, listId, npc);
return;

+++ b/dist/game/data/multisell/custom/50000.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list xmlns:xsi=" " xsi:noNamespaceSchemaLocation="../../xsd/multisell.xsd">
  • <npcs>
  • <npc>-1</npc> <!-- CB -->
  • </npcs>
  • <!-- Scroll -->
  • <item>
  • <ingredient count="6000000" id="57"/> <!-- Adena -->
  • <production count="1" id="956"/> <!-- Scroll: Enchant Armor (D) -->
  • </item>
+</list>

--- a/dist/game/data/xsd/multisell.xsd
+++ b/dist/game/data/xsd/multisell.xsd
@@ -8,16 +8,13 @@
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="npc" minOccurs="1" maxOccurs="unbounded">
<xs:simpleType>
  • <xs:restriction base="xs:positiveInteger">
  • <xs:minInclusive value="1" />
  • <xs:maxInclusive value="65535" />
  • </xs:restriction>
+ <xs:restriction base="xs:integer" />
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="item" minOccurs="1" maxOccurs="unbounded">
+ <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="ingredient" minOccurs="0" maxOccurs="unbounded">
 
Назад
Сверху Снизу