Цитата:
Сообщение от [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(npc, Creature.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(_commission, true))
{
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);
}
}