Показать сообщение отдельно
Непрочитано 25.01.2012, 20:39   #126
Аватар для ALF.
Герой

По умолчанию Re: Работа над Goddess of Destruction (part 5)

Цитата:
Сообщение от [STIGMATED] Посмотреть сообщение
ALFOS, шара была 600 - 700 вашей ревизии, не удивляйся
У тебя то я знаю откуда они. Вместе с Драгоном и вашим же сервером http://bomberg.ru/index.php
Который на моих исходах.

Всё равно копипаст к добру не приведет)
А продаже копипаста - тем более

Но давайте не будем о плохом)

п.с. давно тут что то хорошего не выкладывал

Держите. Мб кому то пригодится
PHP код:
package l2p.gameserver.clientpackets;

import l2p.gameserver.cache.Msg;
import l2p.gameserver.instancemanager.CommissionManager;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.items.CommissionItem;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.items.PcInventory;
import l2p.gameserver.serverpackets.components.SystemMsg;


public class 
RequestCommissionRegister extends L2GameClientPacket {

    private 
int _commission 10000;
    private 
int _objId;
    private 
String _itemName;
    private 
long _price;
    private 
long _count;
    private 
int _time;
    private 
int _ctime;
    @
Override
    
protected void readImpl() throws Exception 
    
{
        
_objId readD();
        
_itemName readS();
        
_price readQ();
        
_count readQ();
        
_time readD();
    }

    @
Override
    
protected void runImpl() throws Exception 
    
{
        final 
Player activeChar getClient().getActiveChar();
        if(
activeChar == null || _count == 0)
            return;
        
        if(
activeChar.isActionsDisabled())
        {
            
activeChar.sendActionFailed();
            return;
        }
        
        if(
activeChar.isInStoreMode())
        {
            
activeChar.sendPacket(Msg.WHILE_OPERATING_A_PRIVATE_STORE_OR_WORKSHOP_YOU_CANNOT_DISCARD_DESTROY_OR_TRADE_AN_ITEM);
            return;
        }
        
        if(
activeChar.isInTrade())
        {
            
activeChar.sendActionFailed();
            return;
        }
        
        
// Проверяем наличие npc и расстояние до него
        
NpcInstance npc activeChar.getLastNpc();
        if(
npc == null || !activeChar.isInRangeZ(npcCreature.INTERACTION_DISTANCE))
        {
            return;
        }
        
        switch (
_time)
        {
            case 
0:    // 1 день
                
_commission = (int) (_price 0.005);
                break;
            case 
1// 3 деня
                
_commission = (int) (_price 0.015);
                break;
            case 
2:    // 5 деней
                
_commission = (int) (_price 0.025);
                break;
            case 
3:    // 7 деней
                
_commission = (int) (_price 0.035);
                break;
        }
        
        if (
_commission 10000_commission 10000;
        
        
PcInventory inventory activeChar.getInventory();
        
inventory.writeLock();
        try
        {
            
ItemInstance item inventory.getItemByObjectId(_objId);
            if(
item == null || item.getCount() < _count || !item.canBeSold(activeChar))
            {
                
activeChar.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT);
                return;
            }
            
            if(
activeChar.getAdena() < _commission)
            {
                
activeChar.sendPacket(Msg.YOU_LACK_THE_FUNDS_NEEDED_TO_PAY_FOR_THIS_TRANSACTION);
                return;
            }
            
            if(!
activeChar.reduceAdena(_commissiontrue))
            {
                
sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA);
                return;
            }
            
            
item inventory.removeItemByObjectId(_objId_count);
            
            
CommissionItem cItem = new CommissionItem(item);
            
cItem.setPrice(_price);
            
cItem.setName(_itemName);
            
_ctime = (int) (System.currentTimeMillis()/1000);
            switch (
_time)
            {
                case 
0:    // 1 день
                    
_ctime += 1*24*60*60
                    
cItem.setEndTime(_ctime);
                    break;
                case 
1// 3 деня
                    
_ctime += 3*24*60*60
                    
cItem.setEndTime(_ctime);
                    break;
                case 
2:    // 5 деней
                    
_ctime += 5*24*60*60
                    
cItem.setEndTime(_ctime);
                    break;
                case 
3:    // 7 деней
                    
_ctime += 7*24*60*60
                    
cItem.setEndTime(_ctime);
                    break;
            }
            
// TODO: Сделать различие по категориям
            
cItem.setCat(18);
            
            
CommissionManager.getInstance().addItem(cItem);

        }
        catch(
ArithmeticException ae)
        {
            
sendPacket(Msg.YOU_HAVE_EXCEEDED_THE_QUANTITY_THAT_CAN_BE_INPUTTED);
            return;
        }
        
finally
        
{
            
inventory.writeUnlock();
        }
        
        
// Обновляем параметры персонажа
        
activeChar.sendChanges();
        
activeChar.sendPacket(Msg.THE_TRANSACTION_IS_COMPLETE);
    }


ALF. вне форума Отправить сообщение для ALF. с помощью ICQ Отправить сообщение для ALF. с помощью Skype™
Сказали спасибо: