Перейти к содержанию
Авторизация  
Art78

Синтез в Артее

Рекомендуемые сообщения

Сборка шара от л2скрипт, сам синтез работает, но не нравится когда фейл синтеза, никакой индикации нет, ни сообщения, ни окна с фейлом. Синтез закрывается молча и все. Где собсна это правится, подскажите пож

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сборка шара от л2скрипт, сам синтез работает, но не нравится когда фейл синтеза, никакой индикации нет, ни сообщения, ни окна с фейлом. Синтез закрывается молча и все. Где собсна это правится, подскажите пож

в коде

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в коде

Эмм с моими знаниями можно несколько более разжеванный ответ?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эмм с моими знаниями можно несколько более разжеванный ответ?)

в пакете RequestNewEnchantTry

при фейле шлется ExEnchantFail

 

и да - без исходников никак.

Изменено пользователем Gaikotsu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в пакете RequestNewEnchantTryпри фейле шлется ExEnchantFailи да - без исходников никак.

Спасибо. Исходники нашел, буду ковырять узнавать что такое пакет и где он))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ткните носом в инфу по пакетам, статейки или мануалы какие. А то что-то открыл, что-то там написано, что на что менять или дописывать хз. Открыл хексомGamePacketHandler.java Байты сплошные, выделяю цифры, выделяется одна буква. Это что буква соответствует этому цифровому коду? Извините, иеформатику прогуливал в школе, не знаю основ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

pre_1461689256__37216089.jpg

 

если это не толстый троллинг и ты реально на таком уровне знаешь программирование, то тебе лучше вобще не пытаться что-то делать в плане работы с серверами, пока не выучишь хотя бы основы.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вот я могу показать конечно мою реализацию конечного этапа синтеза, как раз пакет RequestNewEnchantTry

package l2p.gameserver.network.clientpackets.compound;

import l2p.commons.util.Rnd;
import l2p.gameserver.data.holder.CompoundDataHolder;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.items.PcInventory;
import l2p.gameserver.model.request.ItemCompoundRequest;
import l2p.gameserver.network.clientpackets.L2GameClientPacket;
import l2p.gameserver.network.serverpackets.ExAdenaInvenCount;
import l2p.gameserver.network.serverpackets.ExUserInfoInvenWeight;
import l2p.gameserver.network.serverpackets.InventoryUpdate;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.network.serverpackets.compound.ExEnchantFail;
import l2p.gameserver.network.serverpackets.compound.ExEnchantOneFail;
import l2p.gameserver.network.serverpackets.compound.ExEnchantSucess;
import l2p.gameserver.templates.CompoundData;

public class RequestNewEnchantTry extends L2GameClientPacket
{
	@Override
	protected void readImpl()
	{}

	@Override
	protected void runImpl()
	{
		final Player player = getClient().getActiveChar();

		if (player == null)
			return;

		if (player.isInStoreMode())
		{
			player.sendPacket(SystemMsg.YOU_CANNOT_DO_THAT_WHILE_IN_A_PRIVATE_STORE_OR_PRIVATE_WORKSHOP);
			player.sendPacket(ExEnchantOneFail.STATIC);
			return;
		}

		if (player.isProcessingRequest())
		{
			player.sendPacket(SystemMsg.PLEASE_FINISH_YOUR_ONGOING_TASK_AND_TRY_AGAIN);
			player.sendPacket(ExEnchantOneFail.STATIC);
			return;
		}

		ItemCompoundRequest request = player.getItemRequest(ItemCompoundRequest.class);

		if (request == null || request.isProcessing())
		{
			player.sendPacket(ExEnchantFail.STATIC);
			return;
		}

		PcInventory inventory = player.getInventory();
		inventory.writeLock();

		try
		{
			request.setProcessing(true);
			final ItemInstance itemOne = request.getItemOne();
			final ItemInstance itemTwo = request.getItemTwo();

			if (itemOne == null || itemTwo == null)
			{
				player.sendPacket(ExEnchantFail.STATIC);
				player.setItemRequest(null);
				return;
			}

			if (itemOne.getObjectId() == itemTwo.getObjectId())
			{
				player.sendPacket(SystemMsg.THIS_IS_NOT_A_VALID_COMBINATION, new ExEnchantFail(itemOne.getItemId(), itemTwo.getItemId()));
				player.setItemRequest(null);
				return;
			}

			final CompoundData compound = CompoundDataHolder.getInstance().getData(itemOne.getItemId());

			if (compound == null || compound.getItemTwoId() != itemTwo.getItemId())
			{
				player.sendPacket(SystemMsg.THIS_IS_NOT_A_VALID_COMBINATION, new ExEnchantFail(itemOne.getItemId(), itemTwo.getItemId()));
				player.setItemRequest(null);
				return;
			}

			final InventoryUpdate iu = new InventoryUpdate();

			if (Rnd.chance(compound.getChance()))
			{
				iu.addRemovedItem(itemOne);
				iu.addRemovedItem(itemTwo);

				if (inventory.destroyItem(itemOne, 1) && inventory.destroyItem(itemTwo, 1))
				{
					inventory.addItem(compound.getResultId(), 1);
					player.sendPacket(new ExEnchantSucess(compound.getResultId()));
				}
			}
			else
			{
				if (compound.getFailedId() > 0 && compound.getFailedId() != compound.getItemOneId())
				{
					iu.addRemovedItem(itemOne);
					iu.addRemovedItem(itemTwo);

					if (inventory.destroyItem(itemOne, 1) && inventory.destroyItem(itemTwo, 1))
					{
						inventory.addItem(compound.getFailedId(), 1);
						player.sendPacket(new ExEnchantFail(itemOne.getItemId(), itemTwo.getItemId()));
					}
				}
				else
				{
					iu.addRemovedItem(itemTwo);

					if (inventory.destroyItem(itemTwo, 1))
						player.sendPacket(new ExEnchantFail(itemOne.getItemId(), itemTwo.getItemId()));
				}
			}

			player.sendPacket(iu, new ExAdenaInvenCount(player), new ExUserInfoInvenWeight(player));
			player.setItemRequest(null);
		}
		finally
		{
			inventory.writeUnlock();
			player.updateStats();
		}
	}
}

 

но боюсь тут ты с твоим уровнем знания программирования, а в частности явы, увидишь только кучу незнакомых тебе слов и ничего более...

 

очень рекомендую все же прислушаться к совету и ихучить ту же яву, хотя бы основы для начала, а потом уже пытаться что-то делать в сервере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Изменено пользователем voel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вот я могу показать конечно мою реализацию конечного этапа синтеза, как раз пакет RequestNewEnchantTry

но боюсь тут ты с твоим уровнем знания программирования, а в частности явы, увидишь только кучу незнакомых тебе слов и ничего более...

 

очень рекомендую все же прислушаться к совету и ихучить ту же яву, хотя бы основы для начала, а потом уже пытаться что-то делать в сервере.

 

 

 

да просто ковырял дату, там то спавн, то статы, то траекторию движения нпц, не сложно вроде разобрался по аналогам с других сборок, а  тут запнулся)

в моем пакете немного по другому написано, не могу интерпретировать твой код под свой, не трудно будет дописать? я хоть посмотрю как должно быть. STATIC сбивает с толку)

package zgts.gameserver.network.l2.c2s;

 
import zgts.gameserver.network.l2.*;
import zgts.gameserver.data.xml.holder.*;
import zgts.gameserver.utils.*;
import zgts.commons.util.*;
import zgts.gameserver.network.l2.s2c.*;
import zgts.gameserver.model.*;
import zgts.gameserver.templates.item.support.*;
import zgts.gameserver.model.items.*;
 
public class RequestNewEnchantTry extends L2GameClientPacket
{
    @Override
    protected void readImpl() {
    }
    
    @Override
    protected void runImpl() {
        final Player activeChar = ((GameClient)this.getClient()).getActiveChar();
        if (activeChar == null) {
            return;
        }
        if (activeChar.isActionsDisabled()) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        if (activeChar.isInStoreMode()) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        if (activeChar.isInTrade()) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        if (activeChar.isFishing()) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        final ItemInstance item1 = activeChar.getSynthesisItem1();
        if (item1 == null) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        final ItemInstance item2 = activeChar.getSynthesisItem2();
        if (item2 == null) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        if (item1 == item2) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        SynthesisData data = null;
        for (final SynthesisData d : SynthesisDataHolder.getInstance().getDatas()) {
            if (item1.getItemId() == d.getItem1Id() && item2.getItemId() == d.getItem2Id()) {
                data = d;
                break;
            }
            if (item1.getItemId() == d.getItem2Id() && item2.getItemId() == d.getItem1Id()) {
                data = d;
                break;
            }
        }
        if (data == null) {
            activeChar.sendPacket(ExEnchantFail.STATIC);
            return;
        }
        final Inventory inventory = activeChar.getInventory();
        inventory.writeLock();
        try {
            if (inventory.getItemByObjectId(item1.getObjectId()) == null) {
                activeChar.sendPacket(ExEnchantFail.STATIC);
                return;
            }
            if (inventory.getItemByObjectId(item2.getObjectId()) == null) {
                activeChar.sendPacket(ExEnchantFail.STATIC);
                return;
            }
            ItemFunctions.removeItem(activeChar, item1, 1L, true);
            ItemFunctions.removeItem(activeChar, item2, 1L, true);
            if (Rnd.chance(data.getChance())) {
                ItemFunctions.addItem(activeChar, data.getSynthesizedItemId(), 1L, true);
                activeChar.sendPacket(new ExEnchantSucess(data.getSynthesizedItemId()));
            }
            else {
                ItemFunctions.addItem(activeChar, Rnd.chance(50) ? data.getItem1Id() : data.getItem2Id(), 1L, true);
                activeChar.sendPacket(ExEnchantFail.STATIC);
            }
        }
        finally {
            inventory.writeUnlock();
        }
    }
}
 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

брось ты это дело, я уверен что ты не сможешь прикрыть баг с осадами и еще 2 дюпа (онли для тех у кого есть исход скриптов)....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

брось ты это дело, я уверен что ты не сможешь прикрыть баг с осадами и еще 2 дюпа (онли для тех у кого есть исход скриптов)....

да я не серв открыть, ради интереса ковыряюсь, на чем-то надо учиться же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...