Package l2p.gameserver.model

Examples of l2p.gameserver.model.L2Recipe


                  continue;
                }
                for(L2ManufactureItem mitem : createList.getList())
                {
                  int recipeId = mitem.getRecipeId();
                  L2Recipe recipe = RecipeController.getInstance().getRecipeByRecipeId(recipeId);
                  if(recipe == null)
                  {
                    continue;
                  }
                  L2Item temp = ItemTable.getInstance().getTemplate(recipe.getItemId());
                  if(temp == null)
                  {
                    continue;
                  }
                  TreeMap<Long, Item> oldItems = items.get(temp.getName());
                  if(oldItems == null)
                  {
                    oldItems = new TreeMap<Long, Item>();
                    items.put(temp.getName(), oldItems);
                  }
                  Item newItem = new Item(recipe.getItemId(), type, mitem.getCost(), recipe.getCount(), 0, temp.getName(), pl.getStoredId(), pl.getName(), path, itemObjId++, null);
                  long key = newItem.price * 100;
                  while(key < newItem.price * 100 + 100 && oldItems.containsKey(key))
                  // До 100 предметов с одинаковыми ценами
                  {
                    key++;
View Full Code Here


    L2Player activeChar = getClient().getActiveChar();
    if(activeChar == null)
    {
      return;
    }
    L2Recipe rp = RecipeController.getInstance().getRecipeByRecipeId(_RecipeID);
    if(rp == null)
    {
      activeChar.sendActionFailed();
      return;
    }
    activeChar.unregisterRecipe(_RecipeID);
    RecipeBookItemList response = new RecipeBookItemList(rp.isDwarvenRecipe(), (int) activeChar.getCurrentMp());
    response.setRecipes(activeChar.getDwarvenRecipeBook());
    activeChar.sendPacket(response);
  }
View Full Code Here

    if(item == null || item.getCount() < 1)
    {
      player.sendPacket(Msg.INCORRECT_ITEM_COUNT);
      return;
    }
    L2Recipe rp = RecipeController.getInstance().getRecipeByRecipeItem(item.getItemId());
    if(rp.isDwarvenRecipe())
    {
      if(player.getDwarvenRecipeLimit() > 0)
      {
        if(player.getDwarvenRecipeBook().size() >= player.getDwarvenRecipeLimit())
        {
          player.sendPacket(Msg.NO_FURTHER_RECIPES_MAY_BE_REGISTERED);
          return;
        }
        if(rp.getLevel() > player.getSkillLevel(L2Skill.SKILL_CRAFTING))
        {
          player.sendPacket(Msg.CREATE_ITEM_LEVEL_IS_TOO_LOW_TO_REGISTER_THIS_RECIPE);
          return;
        }
        if(player.hasRecipe(rp))
View Full Code Here

          if(foundationItem.getBodyPart() == L2Item.SLOT_CHEST || foundationItem.getBodyPart() == L2Item.SLOT_FULL_ARMOR)
          {
            foundation = 0;
          }
        }
        L2Recipe recipeList = new L2Recipe(id, level, recipeId, recipeName, successRate, mpCost, itemId, foundation, count, exp, sp, isDvarvenCraft);
        for(L2RecipeComponent recipePart : recipePartList)
        {
          recipeList.addRecipe(recipePart);
        }
        _listByRecipeId.put(id, recipeList);
        _listByRecipeItem.put(recipeId, recipeList);
      }
      _log.info("RecipeController: Loaded " + _listByRecipeId.size() + " Recipes.");
View Full Code Here

    player.sendPacket(response);
  }

  public void requestMakeItem(L2Player player, int recipeListId)
  {
    L2Recipe recipeList = getRecipeByRecipeId(recipeListId);
    player.resetWaitSitTime();
    if(recipeList == null || recipeList.getRecipes().length == 0)
    {
      player.sendPacket(Msg.THE_RECIPE_IS_INCORRECT);
      return;
    }
    synchronized(player)
    {
      if(player.getCurrentMp() < recipeList.getMpCost())
      {
        player.sendPacket(Msg.NOT_ENOUGH_MP, new RecipeItemMakeInfo(recipeList.getId(), player, 0));
        return;
      }
      if(!player.findRecipe(recipeListId))
      {
        player.sendPacket(Msg.PLEASE_REGISTER_A_RECIPE, Msg.ActionFail);
        return;
      }
    }
    synchronized(player.getInventory())
    {
      L2RecipeComponent[] recipes = recipeList.getRecipes();
      Inventory inventory = player.getInventory();
      for(L2RecipeComponent recipe : recipes)
      {
        if(recipe.getQuantity() == 0)
        {
          continue;
        }
        if(Config.ALT_GAME_UNREGISTER_RECIPE && ItemTable.getInstance().getTemplate(recipe.getItemId()).getItemType() == EtcItemType.RECIPE)
        {
          L2Recipe rp = RecipeController.getInstance().getRecipeByRecipeItem(recipe.getItemId());
          if(player.hasRecipe(rp))
          {
            continue;
          }
          player.sendPacket(Msg.NOT_ENOUGH_MATERIALS, new RecipeItemMakeInfo(recipeList.getId(), player, 0));
View Full Code Here

  /**
   * ***********************************************************************
   */
  public void requestManufactureItem(L2Player player, L2Player employer, int recipeListId)
  {
    L2Recipe recipeList = getRecipeByRecipeId(recipeListId);
    if(recipeList == null)
    {
      return;
    }
    player.resetWaitSitTime();
    int success = 0;
    player.sendMessage(new CustomMessage("l2p.gameserver.RecipeController.GotOrder", player).addString(recipeList.getRecipeName()));
    if(recipeList.getRecipes().length == 0)
    {
      player.sendMessage(new CustomMessage("l2p.gameserver.RecipeController.NoRecipe", player).addString(recipeList.getRecipeName()));
      employer.sendMessage(new CustomMessage("l2p.gameserver.RecipeController.NoRecipe", player).addString(recipeList.getRecipeName()));
      return;
    }
    long price = 0;
    for(L2ManufactureItem temp : player.getCreateList().getList())
    {
      if(temp.getRecipeId() == recipeList.getId())
      {
        price = temp.getCost();
        break;
      }
    }
    synchronized(player)
    {
      if(player.getCurrentMp() < recipeList.getMpCost())
      {
        player.sendPacket(Msg.NOT_ENOUGH_MP);
        employer.sendPacket(Msg.NOT_ENOUGH_MP, new RecipeShopItemInfo(player.getObjectId(), recipeListId, price, success, employer));
        return;
      }
      if(!player.findRecipe(recipeListId))
      {
        player.sendPacket(Msg.PLEASE_REGISTER_A_RECIPE, Msg.ActionFail);
        return;
      }
    }
    if(employer.getAdena() < price)
    {
      employer.sendPacket(Msg.YOU_DO_NOT_HAVE_ENOUGH_ADENA, new RecipeShopItemInfo(player.getObjectId(), recipeListId, price, success, employer));
      return;
    }
    synchronized(employer.getInventory())
    {
      L2RecipeComponent[] recipes = recipeList.getRecipes();
      Inventory inventory = employer.getInventory();
      for(L2RecipeComponent recipe : recipes)
      {
        if(recipe.getQuantity() == 0)
        {
          continue;
        }
        L2ItemInstance invItem = inventory.getItemByItemId(recipe.getItemId());
        if(invItem == null || recipe.getQuantity() > invItem.getCount())
        {
          employer.sendPacket(Msg.NOT_ENOUGH_MATERIALS, new RecipeShopItemInfo(player.getObjectId(), recipeListId, price, success, employer));
          return;
        }
      }
      player.reduceCurrentMp(recipeList.getMpCost(), null);
      for(L2RecipeComponent recipe : recipes)
      {
        if(recipe.getQuantity() != 0)
        {
          L2ItemInstance invItem = inventory.getItemByItemId(recipe.getItemId());
          inventory.destroyItem(invItem, recipe.getQuantity(), false);
          employer.sendPacket(SystemMessage.removeItems(invItem.getItemId(), recipe.getQuantity()));
        }
      }
    }
    if(price > 0)
    {
      employer.reduceAdena(price, false);
      player.addAdena(price);
      int tax = (int) (price * Config.SERVICES_TRADE_TAX / 100);
      if(player.isInZone(L2Zone.ZoneType.offshore))
      {
        tax = (int) (price * Config.SERVICES_OFFSHORE_TRADE_TAX / 100);
      }
      if(Config.SERVICES_TRADE_TAX_ONLY_OFFLINE && !player.isInOfflineMode())
      {
        tax = 0;
      }
      if(player.getReflection().getId() == -1) // Особая зона в Parnassus
      {
        tax = 0;
      }
      if(tax > 0)
      {
        player.reduceAdena(tax, false);
        Stat.addTax(tax);
        player.sendMessage(new CustomMessage("trade.HavePaidTax", player).addNumber(tax));
      }
    }
    int tryCount = 1, successCount = 0;
    if(rollMW(player, recipeList))
    {
      tryCount++;
    }
    SystemMessage msgtoemployer;
    SystemMessage msgtomaster;
    for(int i = 0; i < tryCount; i++)
    {
      if(Rnd.chance(recipeList.getSuccessRate()))
      {
        L2ItemInstance createdItem = ItemTable.getInstance().createItem(rollMW(player, recipeList) ? recipeList.getFoundation() : recipeList.getItemId());
        createdItem.setCount(recipeList.getCount());
        employer.getInventory().addItem(createdItem);
        employer.sendPacket(SystemMessage.obtainItems(createdItem));
        if(Config.CRAFT_COUNTER)
        {
          player.incrementCraftCounter((int) recipeList.getItemId(), recipeList.getCount());
        }
        success = 1;
        successCount++;
      }
    }
    if(successCount == 0)
    {
      msgtoemployer = new SystemMessage(SystemMessage.S1_HAS_FAILED_TO_CREATE_S2_AT_THE_PRICE_OF_S3_ADENA);
      msgtoemployer.addString(player.getName());
      msgtoemployer.addItemName(recipeList.getItemId());
      msgtoemployer.addNumber(price);
      msgtomaster = new SystemMessage(SystemMessage.THE_ATTEMPT_TO_CREATE_S2_FOR_S1_AT_THE_PRICE_OF_S3_ADENA_HAS_FAILED);
      msgtomaster.addString(employer.getName());
      msgtomaster.addItemName(recipeList.getItemId());
      msgtomaster.addNumber(price);
      player.sendPacket(msgtomaster);
      employer.sendPacket(msgtoemployer);
    }
    else if(recipeList.getCount() > 1 || successCount > 1)
    {
      msgtoemployer = new SystemMessage(SystemMessage.S1_CREATED_S2_S3_AT_THE_PRICE_OF_S4_ADENA);
      msgtoemployer.addString(player.getName());
      msgtoemployer.addItemName(recipeList.getItemId());
      msgtoemployer.addNumber(recipeList.getCount() * successCount);
      msgtoemployer.addNumber(price);
      msgtomaster = new SystemMessage(SystemMessage.S2_S3_HAVE_BEEN_SOLD_TO_S1_FOR_S4_ADENA);
      msgtomaster.addString(employer.getName());
      msgtomaster.addItemName(recipeList.getItemId());
      msgtomaster.addNumber(recipeList.getCount() * successCount);
      msgtomaster.addNumber(price);
      player.sendPacket(msgtomaster);
      employer.sendPacket(msgtoemployer);
    }
    else
    {
      msgtoemployer = new SystemMessage(SystemMessage.S1_CREATED_S2_AFTER_RECEIVING_S3_ADENA);
      msgtoemployer.addString(player.getName());
      msgtoemployer.addItemName(recipeList.getItemId());
      msgtoemployer.addNumber(price);
      msgtomaster = new SystemMessage(SystemMessage.S2_IS_SOLD_TO_S1_AT_THE_PRICE_OF_S3_ADENA);
      msgtomaster.addString(employer.getName());
      msgtomaster.addItemName(recipeList.getItemId());
      msgtomaster.addNumber(price);
      player.sendPacket(msgtomaster);
      employer.sendPacket(msgtoemployer);
    }
    if(Config.ALT_GAME_EXP_FOR_CRAFT)
    {
      player.addExpAndSp((long) (recipeList.getExp() * Config.RATE_XP), (long) (recipeList.getSp() * Config.RATE_SP), true, false);
    }
    player.sendStatusUpdate(false, StatusUpdate.CUR_LOAD, StatusUpdate.CUR_MP);
    employer.sendChanges();
    employer.sendStatusUpdate(false, StatusUpdate.CUR_LOAD);
    employer.sendPacket(new RecipeShopItemInfo(player.getObjectId(), recipeListId, price, success, employer));
View Full Code Here

  }

  @Override
  protected final void writeImpl()
  {
    L2Recipe recipeList = RecipeController.getInstance().getRecipeByRecipeId(_id);
    if(recipeList == null)
    {
      return;
    }
    writeC(0xdd); //Точно: назначение пакета
    writeD(_id); //Точно: ID рецепта
    writeD(recipeList.isDwarvenRecipe() ? 0 : 1);
    writeD(_CurMP); //Точно: текущее состояние полоски Creator MP
    writeD(_MaxMP); //Точно: максимальное состояние полоски Creator MP
    writeD(_status); //Точно: итог крафта; 0xFFFFFFFF нет статуса, 0 удача, 1 провал
  }
View Full Code Here

TOP

Related Classes of l2p.gameserver.model.L2Recipe

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.