Catsoftware 6 Опубликовано 9 февраля, 2013 Продам исходники настоящей Lucera 1.7 (то что в шаре - 1.6 + вырезан кот), сюда входит не только оригинальный исходный код сборки, но так же и исходный код защиты Catsguard (клиент часть лежит в шаре, серверной части - нет). Так же в комплект входят пару уникальных эвентов от Николая и индивидуальные сервисы от Lucera 2. Цена крайне низкая, в комплект могу положить хорошую гео дату. Спешите, продаю только сегодня и завтра по причине срочной необходимости денег! Писать сюда: 5-392-865 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 9 февраля, 2013 Исходники серверной части давно в шаре, как и пак эвентов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
~SNEG~ 54 Опубликовано 9 февраля, 2013 Наличие товара у человека подтверждаю, исходников серверной части нет в шаре, не заводите людей в заблуждение. У человека ивенты наподобии приватных Николая - Caravans и прочие. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 9 февраля, 2013 (изменено) Наличие товара у человека подтверждаю, исходников серверной части нет в шаре, не заводите людей в заблуждение. У человека ивенты наподобии приватных Николая - Caravans и прочие. Исходики серверной части давно в шаре. Я прикрутил эту защиту к лыже в первую же ночь шары люцеры, в которой был ключик. Достаточно было лишь достать аттачем этот ключик. Эвенты эти тоже в шаре. Ну а подтвердить реву ТС может, скинув класс L2PcInstance и PcInventory. Изменено 9 февраля, 2013 пользователем Моветон Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zzRoot 10 Опубликовано 9 февраля, 2013 Этот человек обищал шару я помню ещё давно а щяс продаёт)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 Этот человек обищал шару я помню ещё давно а щяс продаёт)) Я обещал шару сборки, но она была не актуальна - никто не поддержал данную затею. Поэтому, не видел смысла. А исходники я продаю чисто за символическую сумму. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 9 февраля, 2013 Я обещал шару сборки, но она была не актуальна - никто не поддержал данную затею. Поэтому, не видел смысла. А исходники я продаю чисто за символическую сумму. L2PcInstance и PcInventory в студию. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 L2PcInstance и PcInventory в студию. /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package ru.catssoftware.gameserver.model.itemcontainer; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ru.catssoftware.Config; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.datatables.ItemTable; import ru.catssoftware.gameserver.datatables.SkillTable; import ru.catssoftware.gameserver.instancemanager.FortSiegeManager; import ru.catssoftware.gameserver.instancemanager.TimedItemControl; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.L2Object; import ru.catssoftware.gameserver.model.TradeList; import ru.catssoftware.gameserver.model.L2ItemInstance.ItemLocation; import ru.catssoftware.gameserver.model.TradeList.TradeItem; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.network.serverpackets.InventoryUpdate; import ru.catssoftware.gameserver.network.serverpackets.StatusUpdate; import ru.catssoftware.gameserver.templates.item.L2EtcItemType; import ru.catssoftware.util.LinkedBunch; import javolution.util.FastList; public class PcInventory extends Inventory { public static final int ADENA_ID = 57; public static final int ANCIENT_ADENA_ID = 5575; private final L2PcInstance _owner; private L2ItemInstance _adena; private L2ItemInstance _ancientAdena; public PcInventory(L2PcInstance owner) { _owner = owner; } @Override public L2PcInstance getOwner() { return _owner; } @Override protected ItemLocation getBaseLocation() { return ItemLocation.INVENTORY; } @Override protected ItemLocation getEquipLocation() { return ItemLocation.PAPERDOLL; } public L2ItemInstance getAdenaInstance() { return _adena; } @Override public int getAdena() { return _adena != null ? _adena.getCount() : 0; } public L2ItemInstance getAncientAdenaInstance() { return _ancientAdena; } public int getAncientAdena() { return (_ancientAdena != null) ? _ancientAdena.getCount() : 0; } /** * Returns the list of items in inventory available for transaction * @return L2ItemInstance : items in inventory */ public L2ItemInstance[] getUniqueItems(boolean allowAdena, boolean allowAncientAdena) { return getUniqueItems(allowAdena, allowAncientAdena, true); } public L2ItemInstance[] getUniqueItems(boolean allowAdena, boolean allowAncientAdena, boolean onlyAvailable) { List<L2ItemInstance> list = new ArrayList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((!allowAdena && item.getItemId() == 57)) continue; if ((!allowAncientAdena && item.getItemId() == 5575)) continue; boolean isDuplicate = false; for (L2ItemInstance litem : list) { if (litem.getItemId() == item.getItemId()) { isDuplicate = true; break; } } if (!isDuplicate && (!onlyAvailable || (item.isSellable() && item.isAvailable(getOwner(), false)))) list.add(item); } return list.toArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction * Allows an item to appear twice if and only if there is a difference in enchantment level. * @return L2ItemInstance : items in inventory */ public L2ItemInstance[] getUniqueItemsByEnchantLevel(boolean allowAdena, boolean allowAncientAdena) { return getUniqueItemsByEnchantLevel(allowAdena, allowAncientAdena, true); } public L2ItemInstance[] getUniqueItemsByEnchantLevel(boolean allowAdena, boolean allowAncientAdena, boolean onlyAvailable) { List<L2ItemInstance> list = new ArrayList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((!allowAdena && item.getItemId() == 57)) continue; if ((!allowAncientAdena && item.getItemId() == 5575)) continue; boolean isDuplicate = false; for (L2ItemInstance litem : list) { if ((litem.getItemId() == item.getItemId()) && (litem.getEnchantLevel() == item.getEnchantLevel())) { isDuplicate = true; break; } } if (!isDuplicate && (!onlyAvailable || (item.isSellable() && item.isAvailable(getOwner(), false)))) list.add(item); } return list.toArray(new L2ItemInstance[list.size()]); } /** * Returns the list of all items in inventory that have a given item id. * @return L2ItemInstance[] : matching items from inventory */ public L2ItemInstance[] getAllItemsByItemId(int itemId) { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item.getItemId() == itemId) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of all items in inventory that have a given item id AND a given enchantment level. * @return L2ItemInstance[] : matching items from inventory */ public L2ItemInstance[] getAllItemsByItemId(int itemId, int enchantment) { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((item.getItemId() == itemId) && (item.getEnchantLevel() == enchantment)) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction * @return L2ItemInstance : items in inventory */ public List<L2ItemInstance> getAvailableItems(boolean allowAdena) { FastList<L2ItemInstance> list = new FastList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item != null && item.isAvailable(getOwner(), allowAdena)) list.add(item); } return list; } /** * Get all augmented items * @return */ public L2ItemInstance[] getAugmentedItems() { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item != null && item.isAugmented()) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction adjusted by tradeList * @return L2ItemInstance : items in inventory */ public TradeList.TradeItem[] getAvailableItems(TradeList tradeList) { LinkedBunch<TradeList.TradeItem> list = new LinkedBunch<TradeList.TradeItem>(); for (L2ItemInstance item : _items) { if (item.isAvailable(getOwner(), false)) { TradeList.TradeItem adjItem = tradeList.adjustAvailableItem(item); if (adjItem != null) list.add(adjItem); } } return list.moveToArray(new TradeList.TradeItem[list.size()]); } /** * Adjust TradeItem according his status in inventory * @param item : L2ItemInstance to be adjusten * @return TradeItem representing adjusted item */ public void adjustAvailableItem(TradeItem item) { boolean notAllEquipped = false; for (L2ItemInstance adjItem : getItemsByItemId(item.getItem().getItemId())) { if (adjItem.isEquipable()) { if (!adjItem.isEquipped()) notAllEquipped |= true; } else { notAllEquipped |= true; break; } } if (notAllEquipped) { L2ItemInstance adjItem = getItemByItemId(item.getItem().getItemId()); item.setObjectId(adjItem.getObjectId()); item.setEnchant(adjItem.getEnchantLevel()); if (adjItem.getCount() < item.getCount()) item.setCount(adjItem.getCount()); return; } item.setCount(0); } /** * Adds adena to PCInventory * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void addAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) addItem(process, ADENA_ID, count, actor, reference); } /** * Removes adena to PCInventory * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be removed * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void reduceAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) destroyItemByItemId(process, ADENA_ID, count, actor, reference); } /** * Adds specified amount of ancient adena to player inventory. * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void addAncientAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) addItem(process, ANCIENT_ADENA_ID, count, actor, reference); } /** * Removes specified amount of ancient adena from player inventory. * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be removed * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void reduceAncientAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) destroyItemByItemId(process, ANCIENT_ADENA_ID, count, actor, reference); } /** * Adds item in inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance addItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { item = super.addItem(process, item, actor, reference); if (item != null && item.getItemId() == ADENA_ID && !item.equals(_adena)) _adena = item; if (item != null && item.getItemId() == ANCIENT_ADENA_ID && !item.equals(_ancientAdena)) _ancientAdena = item; if(item.getItem().getLifetime()!=-1) TimedItemControl.getInstance().setTimedItem(item); return item; } /** * Adds item in inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item Identifier of the item to be added * @param count : int Quantity of items to be added * @param actor : L2PcInstance Player requesting the item creation * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance addItem(String process, int itemId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.addItem(process, itemId, count, actor, reference); if(item==null) return null; if (item != null && item.getItemId() == ADENA_ID && !item.equals(_adena)) _adena = item; if (item != null && item.getItemId() == ANCIENT_ADENA_ID && !item.equals(_ancientAdena)) _ancientAdena = item; if(item.getItem().getLifetime()!=-1) TimedItemControl.getInstance().setTimedItem(item); return item; } /** * Transfers item to another inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item Identifier of the item to be transfered * @param count : int Quantity of items to be transfered * @param actor : L2PcInstance Player requesting the item transfer * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance transferItem(String process, int objectId, int count, ItemContainer target, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.transferItem(process, objectId, count, target, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * Destroy item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { return this.destroyItem(process, item, item.getCount(), actor, reference); } /** * Destroy item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, L2ItemInstance item, int count, L2PcInstance actor, L2Object reference) { item = super.destroyItem(process, item, count, actor, reference); if (_adena != null && _adena.getCount() <= 0) _adena = null; if (_ancientAdena != null && _ancientAdena.getCount() <= 0) _ancientAdena = null; if(item != null && item.getItem().getLifetime()!= -1) TimedItemControl.getInstance().destroyItem(item); return item; } /** * Destroys item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param objectId : int Item Instance identifier of the item to be destroyed * @param count : int Quantity of items to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, int objectId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = getItemByObjectId(objectId); if (item == null) { return null; } return this.destroyItem(process, item, count, actor, reference); } /** * Destroy item from inventory by using its <B>itemId</B> and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item identifier of the item to be destroyed * @param count : int Quantity of items to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItemByItemId(String process, int itemId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = getItemByItemId(itemId); if (item == null) { return null; } return this.destroyItem(process, item, count, actor, reference); } /** * Drop item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be dropped * @param actor : L2PcInstance Player requesting the item drop * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance dropItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { item = super.dropItem(process, item, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * Drop item from inventory by using its <B>objectID</B> and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param objectId : int Item Instance identifier of the item to be dropped * @param count : int Quantity of items to be dropped * @param actor : L2PcInstance Player requesting the item drop * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance dropItem(String process, int objectId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.dropItem(process, objectId, count, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * <b>Overloaded</b>, when removes item from inventory, remove also owner shortcuts. * @param item : L2ItemInstance to be removed from inventory */ @Override protected boolean removeItem(L2ItemInstance item) { // Removes any reference to the item from Shortcut bar getOwner().removeItemFromShortCut(item.getObjectId()); // Removes active Enchant Scroll if (item.equals(getOwner().getActiveEnchantItem())) getOwner().setActiveEnchantItem(null); if (item.getItemId() == ADENA_ID) _adena = null; else if (item.getItemId() == ANCIENT_ADENA_ID) _ancientAdena = null; return super.removeItem(item); } /** * Refresh the weight of equipment loaded */ @Override public void refreshWeight() { super.refreshWeight(); getOwner().refreshOverloaded(); } /** * Get back items in inventory from database */ @Override public void restore() { super.restore(); _adena = getItemByItemId(ADENA_ID); _ancientAdena = getItemByItemId(ANCIENT_ADENA_ID); } public static int[][] restoreVisibleInventory(int objectId) { int[][] paperdoll = new int[31][4]; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(con); PreparedStatement statement2 = con .prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"); statement2.setInt(1, objectId); ResultSet invdata = statement2.executeQuery(); int slot, objId, itemId, enchant, displayId; while (invdata.next()) { slot = invdata.getInt("loc_data"); objId = invdata.getInt("object_id"); itemId = invdata.getInt("item_id"); enchant = invdata.getInt("enchant_level"); displayId = ItemTable.getInstance().getTemplate(itemId).getItemDisplayId(); paperdoll[slot][0] = objId; paperdoll[slot][1] = itemId; paperdoll[slot][2] = enchant; paperdoll[slot][3] = displayId; if (slot == Inventory.PAPERDOLL_LRHAND) { paperdoll[inventory.PAPERDOLL_RHAND][0] = objId; paperdoll[inventory.PAPERDOLL_RHAND][1] = itemId; paperdoll[inventory.PAPERDOLL_RHAND][2] = enchant; paperdoll[inventory.PAPERDOLL_RHAND][3] = displayId; } } invdata.close(); statement2.close(); } catch (Exception e) { _log.warn("could not restore inventory:", e); } finally { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } return paperdoll; } public boolean validateCapacity(L2ItemInstance item) { int slots = 0; if (!(item.isStackable() && getItemByItemId(item.getItemId()) != null) && item.getItemType() != L2EtcItemType.HERB) slots++; return validateCapacity(slots); } public boolean validateCapacity(FastList<L2ItemInstance> items) { int slots = 0; for (L2ItemInstance item : items) if (!(item.isStackable() && getItemByItemId(item.getItemId()) != null)) slots++; return validateCapacity(slots); } public boolean validateCapacityByItemId(int ItemId) { int slots = 0; L2ItemInstance invItem = getItemByItemId(ItemId); if (!(invItem != null && invItem.isStackable())) slots++; return validateCapacity(slots); } @Override public boolean validateCapacity(int slots) { return (_items.size() + slots <= _owner.getInventoryLimit()); } @Override public boolean validateWeight(int weight) { return (_totalWeight + weight <= _owner.getMaxLoad()); } /** * @see Inventory#updateInventory() */ @Override public void updateInventory(L2ItemInstance newItem) { if (newItem == null) return; L2PcInstance targetPlayer = getOwner(); { InventoryUpdate playerIU = new InventoryUpdate(); playerIU.addItem(newItem); targetPlayer.sendPacket(playerIU); playerIU = null; } // Update current load as well if (newItem.getItem().getWeight() <= 0) return; StatusUpdate playerSU = new StatusUpdate(targetPlayer.getObjectId()); playerSU.addAttribute(StatusUpdate.CUR_LOAD, targetPlayer.getCurrentLoad()); targetPlayer.sendPacket(playerSU); playerSU = null; } @Override public synchronized L2ItemInstance setPaperdollItem(int slot, L2ItemInstance item) { if(getPaperdollItem(slot)!=null && getPaperdollItem(slot).getItemId()==Config.FORTSIEGE_COMBAT_FLAG_ID && FortSiegeManager.getInstance().getSiege(getOwner()) != null) { if(getOwner().getClan().getLeaderId() != getOwner().getObjectId()) { getOwner().removeSkill(246,false); } } if(item!=null && item.getItemId()==Config.FORTSIEGE_COMBAT_FLAG_ID && FortSiegeManager.getInstance().getSiege(getOwner()) != null) { if(getOwner().getClan().getLeaderId() != getOwner().getObjectId()) { getOwner().addSkill(SkillTable.getInstance().getInfo(246, 1),false); } } L2ItemInstance result = super.setPaperdollItem(slot, item); if (slot==Inventory.PAPERDOLL_LHAND || slot==Inventory.PAPERDOLL_RHAND) if(getOwner()!=null) getOwner().getStat().resetModifiers(); return result; } } А L2PcInstance я покажу только покупателю через Team Viewer, если его это заинтересует (Слишком много необходимого находится там). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Voled 183 Опубликовано 9 февраля, 2013 Сейчас за пару сотен рубликов могут прикрутить к любой сборке с открытыми исходами котов ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 Я продаю за пару сотен рубликов исходники, так что это думаю более выгодно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 9 февраля, 2013 (изменено) /* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package ru.catssoftware.gameserver.model.itemcontainer; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ru.catssoftware.Config; import ru.catssoftware.L2DatabaseFactory; import ru.catssoftware.gameserver.datatables.ItemTable; import ru.catssoftware.gameserver.datatables.SkillTable; import ru.catssoftware.gameserver.instancemanager.FortSiegeManager; import ru.catssoftware.gameserver.instancemanager.TimedItemControl; import ru.catssoftware.gameserver.model.L2ItemInstance; import ru.catssoftware.gameserver.model.L2Object; import ru.catssoftware.gameserver.model.TradeList; import ru.catssoftware.gameserver.model.L2ItemInstance.ItemLocation; import ru.catssoftware.gameserver.model.TradeList.TradeItem; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.network.serverpackets.InventoryUpdate; import ru.catssoftware.gameserver.network.serverpackets.StatusUpdate; import ru.catssoftware.gameserver.templates.item.L2EtcItemType; import ru.catssoftware.util.LinkedBunch; import javolution.util.FastList; public class PcInventory extends Inventory { public static final int ADENA_ID = 57; public static final int ANCIENT_ADENA_ID = 5575; private final L2PcInstance _owner; private L2ItemInstance _adena; private L2ItemInstance _ancientAdena; public PcInventory(L2PcInstance owner) { _owner = owner; } @Override public L2PcInstance getOwner() { return _owner; } @Override protected ItemLocation getBaseLocation() { return ItemLocation.INVENTORY; } @Override protected ItemLocation getEquipLocation() { return ItemLocation.PAPERDOLL; } public L2ItemInstance getAdenaInstance() { return _adena; } @Override public int getAdena() { return _adena != null ? _adena.getCount() : 0; } public L2ItemInstance getAncientAdenaInstance() { return _ancientAdena; } public int getAncientAdena() { return (_ancientAdena != null) ? _ancientAdena.getCount() : 0; } /** * Returns the list of items in inventory available for transaction * @return L2ItemInstance : items in inventory */ public L2ItemInstance[] getUniqueItems(boolean allowAdena, boolean allowAncientAdena) { return getUniqueItems(allowAdena, allowAncientAdena, true); } public L2ItemInstance[] getUniqueItems(boolean allowAdena, boolean allowAncientAdena, boolean onlyAvailable) { List<L2ItemInstance> list = new ArrayList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((!allowAdena && item.getItemId() == 57)) continue; if ((!allowAncientAdena && item.getItemId() == 5575)) continue; boolean isDuplicate = false; for (L2ItemInstance litem : list) { if (litem.getItemId() == item.getItemId()) { isDuplicate = true; break; } } if (!isDuplicate && (!onlyAvailable || (item.isSellable() && item.isAvailable(getOwner(), false)))) list.add(item); } return list.toArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction * Allows an item to appear twice if and only if there is a difference in enchantment level. * @return L2ItemInstance : items in inventory */ public L2ItemInstance[] getUniqueItemsByEnchantLevel(boolean allowAdena, boolean allowAncientAdena) { return getUniqueItemsByEnchantLevel(allowAdena, allowAncientAdena, true); } public L2ItemInstance[] getUniqueItemsByEnchantLevel(boolean allowAdena, boolean allowAncientAdena, boolean onlyAvailable) { List<L2ItemInstance> list = new ArrayList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((!allowAdena && item.getItemId() == 57)) continue; if ((!allowAncientAdena && item.getItemId() == 5575)) continue; boolean isDuplicate = false; for (L2ItemInstance litem : list) { if ((litem.getItemId() == item.getItemId()) && (litem.getEnchantLevel() == item.getEnchantLevel())) { isDuplicate = true; break; } } if (!isDuplicate && (!onlyAvailable || (item.isSellable() && item.isAvailable(getOwner(), false)))) list.add(item); } return list.toArray(new L2ItemInstance[list.size()]); } /** * Returns the list of all items in inventory that have a given item id. * @return L2ItemInstance[] : matching items from inventory */ public L2ItemInstance[] getAllItemsByItemId(int itemId) { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item.getItemId() == itemId) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of all items in inventory that have a given item id AND a given enchantment level. * @return L2ItemInstance[] : matching items from inventory */ public L2ItemInstance[] getAllItemsByItemId(int itemId, int enchantment) { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if ((item.getItemId() == itemId) && (item.getEnchantLevel() == enchantment)) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction * @return L2ItemInstance : items in inventory */ public List<L2ItemInstance> getAvailableItems(boolean allowAdena) { FastList<L2ItemInstance> list = new FastList<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item != null && item.isAvailable(getOwner(), allowAdena)) list.add(item); } return list; } /** * Get all augmented items * @return */ public L2ItemInstance[] getAugmentedItems() { LinkedBunch<L2ItemInstance> list = new LinkedBunch<L2ItemInstance>(); for (L2ItemInstance item : _items) { if (item != null && item.isAugmented()) list.add(item); } return list.moveToArray(new L2ItemInstance[list.size()]); } /** * Returns the list of items in inventory available for transaction adjusted by tradeList * @return L2ItemInstance : items in inventory */ public TradeList.TradeItem[] getAvailableItems(TradeList tradeList) { LinkedBunch<TradeList.TradeItem> list = new LinkedBunch<TradeList.TradeItem>(); for (L2ItemInstance item : _items) { if (item.isAvailable(getOwner(), false)) { TradeList.TradeItem adjItem = tradeList.adjustAvailableItem(item); if (adjItem != null) list.add(adjItem); } } return list.moveToArray(new TradeList.TradeItem[list.size()]); } /** * Adjust TradeItem according his status in inventory * @param item : L2ItemInstance to be adjusten * @return TradeItem representing adjusted item */ public void adjustAvailableItem(TradeItem item) { boolean notAllEquipped = false; for (L2ItemInstance adjItem : getItemsByItemId(item.getItem().getItemId())) { if (adjItem.isEquipable()) { if (!adjItem.isEquipped()) notAllEquipped |= true; } else { notAllEquipped |= true; break; } } if (notAllEquipped) { L2ItemInstance adjItem = getItemByItemId(item.getItem().getItemId()); item.setObjectId(adjItem.getObjectId()); item.setEnchant(adjItem.getEnchantLevel()); if (adjItem.getCount() < item.getCount()) item.setCount(adjItem.getCount()); return; } item.setCount(0); } /** * Adds adena to PCInventory * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void addAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) addItem(process, ADENA_ID, count, actor, reference); } /** * Removes adena to PCInventory * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be removed * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void reduceAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) destroyItemByItemId(process, ADENA_ID, count, actor, reference); } /** * Adds specified amount of ancient adena to player inventory. * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void addAncientAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) addItem(process, ANCIENT_ADENA_ID, count, actor, reference); } /** * Removes specified amount of ancient adena from player inventory. * @param process : String Identifier of process triggering this action * @param count : int Quantity of adena to be removed * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation */ public void reduceAncientAdena(String process, int count, L2PcInstance actor, L2Object reference) { if (count > 0) destroyItemByItemId(process, ANCIENT_ADENA_ID, count, actor, reference); } /** * Adds item in inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be added * @param actor : L2PcInstance Player requesting the item add * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance addItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { item = super.addItem(process, item, actor, reference); if (item != null && item.getItemId() == ADENA_ID && !item.equals(_adena)) _adena = item; if (item != null && item.getItemId() == ANCIENT_ADENA_ID && !item.equals(_ancientAdena)) _ancientAdena = item; if(item.getItem().getLifetime()!=-1) TimedItemControl.getInstance().setTimedItem(item); return item; } /** * Adds item in inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item Identifier of the item to be added * @param count : int Quantity of items to be added * @param actor : L2PcInstance Player requesting the item creation * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance addItem(String process, int itemId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.addItem(process, itemId, count, actor, reference); if(item==null) return null; if (item != null && item.getItemId() == ADENA_ID && !item.equals(_adena)) _adena = item; if (item != null && item.getItemId() == ANCIENT_ADENA_ID && !item.equals(_ancientAdena)) _ancientAdena = item; if(item.getItem().getLifetime()!=-1) TimedItemControl.getInstance().setTimedItem(item); return item; } /** * Transfers item to another inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item Identifier of the item to be transfered * @param count : int Quantity of items to be transfered * @param actor : L2PcInstance Player requesting the item transfer * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the new item or the updated item in inventory */ @Override public L2ItemInstance transferItem(String process, int objectId, int count, ItemContainer target, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.transferItem(process, objectId, count, target, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * Destroy item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { return this.destroyItem(process, item, item.getCount(), actor, reference); } /** * Destroy item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, L2ItemInstance item, int count, L2PcInstance actor, L2Object reference) { item = super.destroyItem(process, item, count, actor, reference); if (_adena != null && _adena.getCount() <= 0) _adena = null; if (_ancientAdena != null && _ancientAdena.getCount() <= 0) _ancientAdena = null; if(item != null && item.getItem().getLifetime()!= -1) TimedItemControl.getInstance().destroyItem(item); return item; } /** * Destroys item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param objectId : int Item Instance identifier of the item to be destroyed * @param count : int Quantity of items to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItem(String process, int objectId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = getItemByObjectId(objectId); if (item == null) { return null; } return this.destroyItem(process, item, count, actor, reference); } /** * Destroy item from inventory by using its <B>itemId</B> and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param itemId : int Item identifier of the item to be destroyed * @param count : int Quantity of items to be destroyed * @param actor : L2PcInstance Player requesting the item destroy * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance destroyItemByItemId(String process, int itemId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = getItemByItemId(itemId); if (item == null) { return null; } return this.destroyItem(process, item, count, actor, reference); } /** * Drop item from inventory and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param item : L2ItemInstance to be dropped * @param actor : L2PcInstance Player requesting the item drop * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance dropItem(String process, L2ItemInstance item, L2PcInstance actor, L2Object reference) { item = super.dropItem(process, item, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * Drop item from inventory by using its <B>objectID</B> and checks _adena and _ancientAdena * @param process : String Identifier of process triggering this action * @param objectId : int Item Instance identifier of the item to be dropped * @param count : int Quantity of items to be dropped * @param actor : L2PcInstance Player requesting the item drop * @param reference : L2Object Object referencing current action like NPC selling item or previous item in transformation * @return L2ItemInstance corresponding to the destroyed item or the updated item in inventory */ @Override public L2ItemInstance dropItem(String process, int objectId, int count, L2PcInstance actor, L2Object reference) { L2ItemInstance item = super.dropItem(process, objectId, count, actor, reference); if (_adena != null && (_adena.getCount() <= 0 || _adena.getOwnerId() != getOwnerId())) _adena = null; if (_ancientAdena != null && (_ancientAdena.getCount() <= 0 || _ancientAdena.getOwnerId() != getOwnerId())) _ancientAdena = null; return item; } /** * <b>Overloaded</b>, when removes item from inventory, remove also owner shortcuts. * @param item : L2ItemInstance to be removed from inventory */ @Override protected boolean removeItem(L2ItemInstance item) { // Removes any reference to the item from Shortcut bar getOwner().removeItemFromShortCut(item.getObjectId()); // Removes active Enchant Scroll if (item.equals(getOwner().getActiveEnchantItem())) getOwner().setActiveEnchantItem(null); if (item.getItemId() == ADENA_ID) _adena = null; else if (item.getItemId() == ANCIENT_ADENA_ID) _ancientAdena = null; return super.removeItem(item); } /** * Refresh the weight of equipment loaded */ @Override public void refreshWeight() { super.refreshWeight(); getOwner().refreshOverloaded(); } /** * Get back items in inventory from database */ @Override public void restore() { super.restore(); _adena = getItemByItemId(ADENA_ID); _ancientAdena = getItemByItemId(ANCIENT_ADENA_ID); } public static int[][] restoreVisibleInventory(int objectId) { int[][] paperdoll = new int[31][4]; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(con); PreparedStatement statement2 = con .prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"); statement2.setInt(1, objectId); ResultSet invdata = statement2.executeQuery(); int slot, objId, itemId, enchant, displayId; while (invdata.next()) { slot = invdata.getInt("loc_data"); objId = invdata.getInt("object_id"); itemId = invdata.getInt("item_id"); enchant = invdata.getInt("enchant_level"); displayId = ItemTable.getInstance().getTemplate(itemId).getItemDisplayId(); paperdoll[slot][0] = objId; paperdoll[slot][1] = itemId; paperdoll[slot][2] = enchant; paperdoll[slot][3] = displayId; if (slot == Inventory.PAPERDOLL_LRHAND) { paperdoll[inventory.PAPERDOLL_RHAND][0] = objId; paperdoll[inventory.PAPERDOLL_RHAND][1] = itemId; paperdoll[inventory.PAPERDOLL_RHAND][2] = enchant; paperdoll[inventory.PAPERDOLL_RHAND][3] = displayId; } } invdata.close(); statement2.close(); } catch (Exception e) { _log.warn("could not restore inventory:", e); } finally { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); } } return paperdoll; } public boolean validateCapacity(L2ItemInstance item) { int slots = 0; if (!(item.isStackable() && getItemByItemId(item.getItemId()) != null) && item.getItemType() != L2EtcItemType.HERB) slots++; return validateCapacity(slots); } public boolean validateCapacity(FastList<L2ItemInstance> items) { int slots = 0; for (L2ItemInstance item : items) if (!(item.isStackable() && getItemByItemId(item.getItemId()) != null)) slots++; return validateCapacity(slots); } public boolean validateCapacityByItemId(int ItemId) { int slots = 0; L2ItemInstance invItem = getItemByItemId(ItemId); if (!(invItem != null && invItem.isStackable())) slots++; return validateCapacity(slots); } @Override public boolean validateCapacity(int slots) { return (_items.size() + slots <= _owner.getInventoryLimit()); } @Override public boolean validateWeight(int weight) { return (_totalWeight + weight <= _owner.getMaxLoad()); } /** * @see Inventory#updateInventory() */ @Override public void updateInventory(L2ItemInstance newItem) { if (newItem == null) return; L2PcInstance targetPlayer = getOwner(); { InventoryUpdate playerIU = new InventoryUpdate(); playerIU.addItem(newItem); targetPlayer.sendPacket(playerIU); playerIU = null; } // Update current load as well if (newItem.getItem().getWeight() <= 0) return; StatusUpdate playerSU = new StatusUpdate(targetPlayer.getObjectId()); playerSU.addAttribute(StatusUpdate.CUR_LOAD, targetPlayer.getCurrentLoad()); targetPlayer.sendPacket(playerSU); playerSU = null; } @Override public synchronized L2ItemInstance setPaperdollItem(int slot, L2ItemInstance item) { if(getPaperdollItem(slot)!=null && getPaperdollItem(slot).getItemId()==Config.FORTSIEGE_COMBAT_FLAG_ID && FortSiegeManager.getInstance().getSiege(getOwner()) != null) { if(getOwner().getClan().getLeaderId() != getOwner().getObjectId()) { getOwner().removeSkill(246,false); } } if(item!=null && item.getItemId()==Config.FORTSIEGE_COMBAT_FLAG_ID && FortSiegeManager.getInstance().getSiege(getOwner()) != null) { if(getOwner().getClan().getLeaderId() != getOwner().getObjectId()) { getOwner().addSkill(SkillTable.getInstance().getInfo(246, 1),false); } } L2ItemInstance result = super.setPaperdollItem(slot, item); if (slot==Inventory.PAPERDOLL_LHAND || slot==Inventory.PAPERDOLL_RHAND) if(getOwner()!=null) getOwner().getStat().resetModifiers(); return result; } } А L2PcInstance я покажу только покупателю через Team Viewer, если его это заинтересует (Слишком много необходимого находится там). Тут нет фикса ревы 1.6.fin Класс полностью соответсвует шаре. Котогвард: Вот часть, в которой нужно поменять лишь две строчки. Евенты: Этот пак евентов шарил ReaM на своем форуме. Достаточно ли пруфов?) Изменено 9 февраля, 2013 пользователем Моветон Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 facepalm, я покупал исходники напрямую у Николая, так что если вы на меня взъелись не надо писать бред, про эвенты - я говорил не эти, а караваны. Котогвард - кому нужны сдампенные классы? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 Прошу модераторов почистить тему, убрать лишние сообщения не относящиеся к данной теме, любые пруфы предоставлю в ICQ (Даже о покупке исходников у Николая). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Моветон 413 Опубликовано 9 февраля, 2013 facepalm, я покупал исходники напрямую у Николая, так что если вы на меня взъелись не надо писать бред, про эвенты - я говорил не эти, а караваны. Котогвард - кому нужны сдампенные классы? Последний раз повторяю. 1) В предоставленном классе нет фикса из 1.6.fin 2) Класс котогварда, который я предоставил примяком из шарных сорцев. Никаким дампом там не пахнет (Ты же уже с самого начала топика начал врать, что якобы сорцев серверной части КотоГварда в шаре нет). Купил у Ника говоришь? Как же ты вышел с ним на связь, если даже Under не может? Пруфы? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Voled 183 Опубликовано 9 февраля, 2013 Хоть бы в асю зашел , мда. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 Последний раз повторяю. 1) В предоставленном классе нет фикса из 1.6.fin 2) Класс котогварда, который я предоставил примяком из шарных сорцев. Никаким дампом там не пахнет (Ты же уже с самого начала топика начал врать, что якобы сорцев серверной части КотоГварда в шаре нет). Купил у Ника говоришь? Как же ты вышел с ним на связь, если даже Under не может? Пруфы? Покупал не я, а моя команда. На связь было выйти легко, как бывший клиент. Мне откликнулись сразу, поэтому ничего сказать более не могу. Шару я даже не смотрел, говорю со слов Рима. Он писал, что вырезал серверную часть и привязку. Более ничего сказать не могу. Если нужны пруфы - пишите в ICQ. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 Сейчас скачаю шаровый сурс и программой сравню отличия, скину, что получилось Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Catsoftware 6 Опубликовано 9 февраля, 2013 http://rghost.ru/43664424.view Вот, это я смотрел только по gameserver. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ExstazI 99 Опубликовано 11 февраля, 2013 Тут нет фикса ревы 1.6.fin Класс полностью соответсвует шаре. Котогвард: Вот часть, в которой нужно поменять лишь две строчки. Евенты: Этот пак евентов шарил ReaM на своем форуме. Достаточно ли пруфов?) что именно надо в защите изменить ? что бы она работала на 1,7 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mefestofel163 1333 Опубликовано 11 февраля, 2013 Тема бред, ТС бред, (если вы не обновляли защиту от нее нету смысла обходится injectom.dll (Vote Cet) ( На жуке в подполье давно лежит) ( Как не странно Толкать шару хотят все , а головой думают единице ! Тс, че то очень сильно заврался. Все , что вы толкать пытаетесь давно уже в шаре на 10-ах фришек. + Очень сомневаюсь что у вас 1.7 Final исходы , даже у люцы 2 на сколько мне известно не самые последнии сурсы. Николай ( Продал в несколько рук свои сурсы + клиентом( с ключами) 5 человек! И вы точно не 1 из 5 ! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Project-World 50 Опубликовано 11 февраля, 2013 по поводу котов не совсем понял, там всего то и нужно ковырять в Key направлении. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NewOff 372 Опубликовано 23 июня, 2013 Автоматическое сообщение Эта тема была перемещена из "Сборки серверов" в "Биржа". Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты