Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Работа над Goddess of Destruction (part 2) (https://forum.zone-game.info/showthread.php?t=14176)

Bacek 23.05.2011 18:54

Re: Работа над Godess of Destruction (part 2)
 
Долгожданная покупка/продажа/возврат

BuyList

PHP код:

    protected final void writeImpl()
    {
        
writeC(0xFE);
        
writeH(0xB7);
        
writeD(0x00);
        
writeQ(_money);        // current money
        
writeD(_listId);
        
writeD(0x00); // 0 = 250 количество слотов
        
        
writeH(_list.size());
        
        for (
L2TradeItem item _list)
        {
            if (
item.getCurrentCount() > || !item.hasLimitedStock())
            {
                
writeD(item.getItemId());
                
writeD(item.getItemId());
                
writeD(0);
                
writeQ(item.getCurrentCount() < item.getCurrentCount());
                
writeH(item.getTemplate().getType2());
                
writeH(item.getTemplate().getType1());    // Custom Type 1
                
writeH(0x00);    // isEquipped
                
writeD(item.getTemplate().getBodyPart());    // Body Part
                
writeH(0x00);    // Enchant
                
writeH(0x00);    // Custom Type
                
writeD(0x00);    // Augment
                
writeD(-1);        // Mana
                
writeD(-9999);    // Time
                
writeH(1);         // при 0 итем красный
                
writeH(0x00);    // Element Type
                
writeH(0x00);    // Element Power
                
for (byte i 06i++)
                {
                    
writeH(0x00);
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
                if (
item.getItemId() >= 3960 && item.getItemId() <= 4026)// Config.RATE_SIEGE_GUARDS_PRICE-//'
                    
writeQ((long) (item.getPrice() * Config.RATE_SIEGE_GUARDS_PRICE * (_taxRate)));
                else
                    
writeQ((long) (item.getPrice() * (_taxRate)));
            }
        }
    } 


ExBuySellListPacket

PHP код:


    
protected final void writeImpl()
    {
        
writeC(0xFE);
        
writeH(0xB7);
        
writeD(0x01);
        
writeD(0x00); // 0 = 250 количество слотов
        
        
if (_sellList != null && _sellList.length 0)
        {
            
writeH(_sellList.length);
            for (
L2ItemInstance item _sellList)
            {
                
writeD(item.getObjectId());
                
writeD(item.getItemId());
                
writeD(item.getLocationSlot());
                
writeQ(item.getCount());
                
writeH(item.getItem().getType2());
                
writeH(item.getCustomType1());
                
writeH(0x00);
                
writeD(item.getItem().getBodyPart());
                
writeH(item.getEnchantLevel());
                
writeH(item.getCustomType2());
                
// Augment, Mana, Time - hardcode for now
                
writeD(0x00);
                
writeD(-1);
                
writeD(-9999);
                
writeH(1); // при 0 итем красный
                
writeH(item.getAttackElementType());
                
writeH(item.getAttackElementPower());
                for (
byte i 06i++)
                {
                    
writeH(item.getElementDefAttr(i));
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
                
writeQ(item.getItem().getReferencePrice() / 2);
            }
        }
        else
            
writeH(0x00);
        
        if (
_refundList != null && _refundList.length 0)
        {
            
writeH(_refundList.length);
            
int idx 0;
            for (
L2ItemInstance item _refundList)
            {
                
writeD(item.getObjectId());
                
writeD(item.getItemId());
                
writeD(0x00);
                
writeQ(item.getCount());
                
writeH(item.getItem().getType2());
                
writeH(item.getCustomType1());
                
writeH(0x00);
                
writeD(item.getItem().getBodyPart());
                
writeH(item.getEnchantLevel());
                
writeH(item.getCustomType2());
                
// Augment, Mana, Time - hardcode for now
                
writeD(0x00);
                
writeD(-1);
                
writeD(-9999);
                
writeH(1);
                
writeH(item.getAttackElementType());
                
writeH(item.getAttackElementPower());
                for (
byte i 06i++)
                {
                    
writeH(item.getElementDefAttr(i));
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
writeD(idx++);
                
writeQ(item.getItem().getReferencePrice() / item.getCount());
            }
        }
        else
            
writeH(0x00);
        
        
writeC(_done 0x01 0x00);
        
        
_buyList.clear();
    } 


http://imglink.ru/thumbnails/23-05-1...20cfcd74c3.jpg

http://imglink.ru/thumbnails/23-05-1...7e1d37fa83.jpg

http://imglink.ru/thumbnails/23-05-1...462424cf0f.jpg

Добавлено через 34 минуты
WareHouseDepositList ( положить на склад )
Код:

        protected final void writeImpl()
        {
                writeC(0x41);
                /* 0x01-Private Warehouse
                * 0x02-Clan Warehouse
                * 0x03-Castle Warehouse
                * 0x04-Warehouse */
                writeH(_whType);
                writeQ(_playerAdena);
                writeD(0x00); // 0 = 100 количество слотов
                final int count = _items.size();
                if (Config.DEBUG)
                        _log.fine("count:" + count);
                writeH(count);
               
                for (L2ItemInstance item : _items)
                {
                        writeD(item.getObjectId());
                        writeD(item.getItemId());
                        writeD(item.getLocationSlot());
                        writeQ(item.getCount());
                        writeH(item.getItem().getType2());
                        writeH(item.getCustomType1());
                        writeH(item.isEquipped() ? 0x01 : 0x00);
                        writeD(item.getItem().getBodyPart());
                        writeH(item.getEnchantLevel());
                        writeH(item.getCustomType2());
                        if (item.isAugmented())
                                writeD(item.getAugmentation().getAugmentationId());
                        else
                                writeD(0x00);
                        writeD(item.getMana());
                        writeD(item.isTimeLimitedItem() ? (int) (item.getRemainingTime() / 1000) : -9999);
                        writeH(1); // при 0 итем красный(заблокирован)
                        writeH(item.getAttackElementType());
                        writeH(item.getAttackElementPower());
                        for (byte i = 0; i < 6; i++)
                        {
                                writeH(item.getElementDefAttr(i));
                        }
                        // Enchant Effects
                        writeH(0x00);
                        writeH(0x00);
                        writeH(0x00);
                        writeD(item.getObjectId());
                }
                _items.clear();
        }


l2j-ct 23.05.2011 19:33

Re: Работа над Godess of Destruction (part 2)
 
Поделитесь пожалста, если не сложно, нормальный npcinfo. А то как не пробую, нечего не получается!НПЦ мигают при ударе по ним, да и умирать не хотят уж не как!

darkevil 23.05.2011 19:46

Re: Работа над Godess of Destruction (part 2)
 
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 123232)
Мне может на работу не ходить?

PHP код:

// buy dQddh [item Q]
// sell ddh [item Q]
// refund dh [item dQ]
// item dddQhhhdhhhhddh hh [hhhhhh] hhh 


Спс огромное, не хотел оскорбить.

P.S. Я тоже днем сижу с работы, просто можно было ответить что-то, а то кажется как игнор полный.

Добавлено через 2 минуты
Цитата:

Сообщение от Bacekk (Сообщение 123239)
Долгожданная покупка/продажа/возврат

BuyList

PHP код:

    protected final void writeImpl()
    {
        
writeC(0xFE);
        
writeH(0xB7);
        
writeD(0x00);
        
writeQ(_money);        // current money
        
writeD(_listId);
        
writeD(0x00); // 0 = 250 количество слотов
        
        
writeH(_list.size());
        
        for (
L2TradeItem item _list)
        {
            if (
item.getCurrentCount() > || !item.hasLimitedStock())
            {
                
writeD(item.getItemId());
                
writeD(item.getItemId());
                
writeD(0);
                
writeQ(item.getCurrentCount() < item.getCurrentCount());
                
writeH(item.getTemplate().getType2());
                
writeH(item.getTemplate().getType1());    // Custom Type 1
                
writeH(0x00);    // isEquipped
                
writeD(item.getTemplate().getBodyPart());    // Body Part
                
writeH(0x00);    // Enchant
                
writeH(0x00);    // Custom Type
                
writeD(0x00);    // Augment
                
writeD(-1);        // Mana
                
writeD(-9999);    // Time
                
writeH(1);         // при 0 итем красный
                
writeH(0x00);    // Element Type
                
writeH(0x00);    // Element Power
                
for (byte i 06i++)
                {
                    
writeH(0x00);
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
                if (
item.getItemId() >= 3960 && item.getItemId() <= 4026)// Config.RATE_SIEGE_GUARDS_PRICE-//'
                    
writeQ((long) (item.getPrice() * Config.RATE_SIEGE_GUARDS_PRICE * (_taxRate)));
                else
                    
writeQ((long) (item.getPrice() * (_taxRate)));
            }
        }
    } 


ExBuySellListPacket

PHP код:


    
protected final void writeImpl()
    {
        
writeC(0xFE);
        
writeH(0xB7);
        
writeD(0x01);
        
writeD(0x00); // 0 = 250 количество слотов
        
        
if (_sellList != null && _sellList.length 0)
        {
            
writeH(_sellList.length);
            for (
L2ItemInstance item _sellList)
            {
                
writeD(item.getObjectId());
                
writeD(item.getItemId());
                
writeD(item.getLocationSlot());
                
writeQ(item.getCount());
                
writeH(item.getItem().getType2());
                
writeH(item.getCustomType1());
                
writeH(0x00);
                
writeD(item.getItem().getBodyPart());
                
writeH(item.getEnchantLevel());
                
writeH(item.getCustomType2());
                
// Augment, Mana, Time - hardcode for now
                
writeD(0x00);
                
writeD(-1);
                
writeD(-9999);
                
writeH(1); // при 0 итем красный
                
writeH(item.getAttackElementType());
                
writeH(item.getAttackElementPower());
                for (
byte i 06i++)
                {
                    
writeH(item.getElementDefAttr(i));
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
                
writeQ(item.getItem().getReferencePrice() / 2);
            }
        }
        else
            
writeH(0x00);
        
        if (
_refundList != null && _refundList.length 0)
        {
            
writeH(_refundList.length);
            
int idx 0;
            for (
L2ItemInstance item _refundList)
            {
                
writeD(item.getObjectId());
                
writeD(item.getItemId());
                
writeD(0x00);
                
writeQ(item.getCount());
                
writeH(item.getItem().getType2());
                
writeH(item.getCustomType1());
                
writeH(0x00);
                
writeD(item.getItem().getBodyPart());
                
writeH(item.getEnchantLevel());
                
writeH(item.getCustomType2());
                
// Augment, Mana, Time - hardcode for now
                
writeD(0x00);
                
writeD(-1);
                
writeD(-9999);
                
writeH(1);
                
writeH(item.getAttackElementType());
                
writeH(item.getAttackElementPower());
                for (
byte i 06i++)
                {
                    
writeH(item.getElementDefAttr(i));
                }
                
// Enchant Effects
                
writeH(0x00);
                
writeH(0x00);
                
writeH(0x00);
                
writeD(idx++);
                
writeQ(item.getItem().getReferencePrice() / item.getCount());
            }
        }
        else
            
writeH(0x00);
        
        
writeC(_done 0x01 0x00);
        
        
_buyList.clear();
    } 


http://imglink.ru/thumbnails/23-05-1...20cfcd74c3.jpg

http://imglink.ru/thumbnails/23-05-1...7e1d37fa83.jpg

http://imglink.ru/thumbnails/23-05-1...462424cf0f.jpg

Добавлено через 34 минуты
WareHouseDepositList ( положить на склад )
Код:

        protected final void writeImpl()
        {
                writeC(0x41);
                /* 0x01-Private Warehouse
                * 0x02-Clan Warehouse
                * 0x03-Castle Warehouse
                * 0x04-Warehouse */
                writeH(_whType);
                writeQ(_playerAdena);
                writeD(0x00); // 0 = 100 количество слотов
                final int count = _items.size();
                if (Config.DEBUG)
                        _log.fine("count:" + count);
                writeH(count);
               
                for (L2ItemInstance item : _items)
                {
                        writeD(item.getObjectId());
                        writeD(item.getItemId());
                        writeD(item.getLocationSlot());
                        writeQ(item.getCount());
                        writeH(item.getItem().getType2());
                        writeH(item.getCustomType1());
                        writeH(item.isEquipped() ? 0x01 : 0x00);
                        writeD(item.getItem().getBodyPart());
                        writeH(item.getEnchantLevel());
                        writeH(item.getCustomType2());
                        if (item.isAugmented())
                                writeD(item.getAugmentation().getAugmentationId());
                        else
                                writeD(0x00);
                        writeD(item.getMana());
                        writeD(item.isTimeLimitedItem() ? (int) (item.getRemainingTime() / 1000) : -9999);
                        writeH(1); // при 0 итем красный(заблокирован)
                        writeH(item.getAttackElementType());
                        writeH(item.getAttackElementPower());
                        for (byte i = 0; i < 6; i++)
                        {
                                writeH(item.getElementDefAttr(i));
                        }
                        // Enchant Effects
                        writeH(0x00);
                        writeH(0x00);
                        writeH(0x00);
                        writeD(item.getObjectId());
                }
                _items.clear();
        }


Вот тебе большое спасибо, я сутки промудохался, а ошибка то была оказывается под носом >_<... Я методом тыка пытался определить структуру пакета в итоге у меня внутри цикла аж 19 D лишних >_<...

Bacek 23.05.2011 21:40

Re: Работа над Godess of Destruction (part 2)
 
Пакеты на торговлю продажа/покупка
PrivateStoreListBuy
PHP код:

    protected final void writeImpl()
    {
        
writeC(0xbe);
        
writeD(_objId);
        
writeQ(_playerAdena);

        
writeD(_items.length);
        
        for (
TradeList.TradeItem item _items)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchant());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(1); // при 0 итем красный(заблокирован)
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeD(item.getObjectId());
            
writeQ(item.getPrice());
            
writeQ(item.getItem().getReferencePrice() * 2);
            
writeQ(item.getStoreCount());
        }
    } 

PrivateStoreListSell
PHP код:

    protected final void writeImpl()
    {
        
writeC(0xa1);
        
writeD(_objId);
        
writeD(_packageSale 0);
        
writeQ(_playerAdena);
        
writeD(_items.length);
        for (
TradeList.TradeItem item _items)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchant());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(1); // при 0 итем красный(заблокирован)
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeQ(item.getPrice());
            
writeQ(item.getItem().getReferencePrice() * 2);
        }
    } 

PrivateStoreManageListBuy

PHP код:


    
protected final void writeImpl()
    {
        
writeC(0xbd);
        
//section 1
        
writeD(_objId);
        
writeQ(_playerAdena);
        
        
//section2
        
writeD(_itemList.length); // inventory items for potential buy
        
for (L2ItemInstance item _itemList)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(item.isEquipped() ? 0x01 0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchantLevel());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(1); // при 0 итем красный(заблокирован)
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeQ(item.getItem().getReferencePrice() * 2);
        }
        
        
//section 3
        
writeD(_buyList.length); //count for all items already added for buy
        
for (TradeList.TradeItem item _buyList)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchant());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeQ(item.getPrice());
            
writeQ(item.getItem().getReferencePrice() * 2);
            
writeQ(item.getCount());
        }
    } 

PrivateStoreManageListSell
PHP код:

    protected final void writeImpl()
    {
        
writeC(0xa0);
        
//section 1
        
writeD(_objId);
        
writeD(_packageSale 0); // Package sell
        
writeQ(_playerAdena);
        
        
        
//section2
        
writeD(_itemList.length); //for potential sells
        
for (TradeList.TradeItem item _itemList)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchant());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items.
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(1); // при 0 итем красный(заблокирован)
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeQ(item.getItem().getReferencePrice() * 2);
        }
        
//section 3
        
writeD(_sellList.length); //count for any items already added for sell
        
for (TradeList.TradeItem item _sellList)
        {
            
writeD(item.getObjectId());
            
writeD(item.getItem().getItemId());
            
writeD(item.getLocationSlot());
            
writeQ(item.getCount());
            
writeH(item.getItem().getType2());
            
writeH(item.getCustomType1());
            
writeH(0x00);
            
writeD(item.getItem().getBodyPart());
            
writeH(item.getEnchant());
            
writeH(item.getCustomType2());
            
// Player cannot sell/buy augmented, shadow or time-limited items
            // probably so hardcode values here
            
writeD(0x00);    // Augment
            
writeD(-1);        // Mana
            
writeD(-9999);    // Time
            
writeH(1); // при 0 итем красный(заблокирован)
            
writeH(item.getAttackElementType());
            
writeH(item.getAttackElementPower());
            for (
byte i 06i++)
            {
                
writeH(item.getElementDefAttr(i));
            }
            
// Enchant Effects
            
writeH(0x00);
            
writeH(0x00);
            
writeH(0x00);
            
writeQ(item.getPrice());
            
writeQ(item.getItem().getReferencePrice() * 2);
        }
    } 

Добавлено через 7 минут
Цитата:

Сообщение от darkevil (Сообщение 123246)
Вот тебе большое спасибо, я сутки промудохался, а ошибка то была оказывается под носом >_<... Я методом тыка пытался определить структуру пакета в итоге у меня внутри цикла аж 19 D лишних >_<...

Надо с самого начало смотреть пакет а не с цикла сразу =)

KhAir 23.05.2011 23:59

Re: Работа над Godess of Destruction (part 2)
 
Someone has the package UserInfo?

I've tried to program this of all the ways but without success.

Thanks.

Ozzy 24.05.2011 00:18

Re: Работа над Godess of Destruction (part 2)
 
Цитата:

Сообщение от KhAir (Сообщение 123274)
Someone has the package UserInfo?

I've tried to program this of all the ways but without success.

Thanks.

Look at first post.

KhAir 24.05.2011 00:21

Re: Работа над Godess of Destruction (part 2)
 
This post -> http://forum.zone-game.info/showthread.php?t=14078

Or -> http://forum.zone-game.info/showthread.php?t=14176

Which one?

darkevil 24.05.2011 00:35

Re: Работа над Godess of Destruction (part 2)
 
Цитата:

Сообщение от KhAir (Сообщение 123281)

This page - > http://forum.zone-game.info/showthre...=14078&page=26

This post - > http://forum.zone-game.info/showpost...&postcount=259

You need changed HF2.5 packet... Use L2J_Beta...

KhAir 24.05.2011 00:50

Re: Работа над Godess of Destruction (part 2)
 
Perfect, I have it.

But where should I put this packet or in that line?

Thanks again!

[STIGMATED] 24.05.2011 00:55

Re: Работа над Godess of Destruction (part 2)
 
serverpackets/UserInfo.java

If I got it right a question.
I am sorry for my English.


Текущее время: 15:07. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot