Closer 0 Опубликовано 9 февраля, 2014 Кто подскажет как реализовать сундук чтоб когда его открываешь с него выпадали несколько итемов со 100% шансом? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
localnet 3 Опубликовано 9 февраля, 2014 Несколько вряд ли сделаешь но вот один точно можешь сделать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Closer 0 Опубликовано 9 февраля, 2014 нужно несколько))) один я курсе как делать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sania 116 Опубликовано 9 февраля, 2014 хз хз...попробуй напиши на несколько итемов шанс 100) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ploski22 25 Опубликовано 9 февраля, 2014 В Extractable_items.csv 9999;8888,1,100; 9999 - id итема с которого будет выпадать. 8888 - id итема который будет выпадать. 1 - количество. 100 - шанс. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sania 116 Опубликовано 9 февраля, 2014 В Extractable_items.csv 9999;8888,1,100; 9999 - id итема с которого будет выпадать. 8888 - id итема который будет выпадать. 1 - количество. 100 - шанс. да ты Америку открыл...он же сказал что знает как такое делать. Только тут нужно чтоб обший шанс был 100%. А ему над чтоб несколько итемов давалось с 100% шансом. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ploski22 25 Опубликовано 9 февраля, 2014 да ты Америку открыл...он же сказал что знает как такое делать. Только тут нужно чтоб обший шанс был 100%. А ему над чтоб несколько итемов давалось с 100% шансом. Я смотрю для кого открыл а для кого нет. 9999;8888,1,100;7777,1,100;6666,1,100; Думаю сами догадаетесь раз такие умные. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 9 февраля, 2014 Через исходники, создать новый класс или добавить в уже существующий. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sania 116 Опубликовано 9 февраля, 2014 Я смотрю для кого открыл а для кого нет. 9999;8888,1,100;7777,1,100;6666,1,100; Думаю сами догадаетесь раз такие умные. а ниче что для 1 итема должен быть если додать все % макс 100? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Closer 0 Опубликовано 9 февраля, 2014 Через исходники, создать новый класс или добавить в уже существующий. можешь подсказать как это сделать?) /* * 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 2, 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, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * http://www.gnu.org/copyleft/gpl.html */ package com.l2jfrozen.gameserver.datatables.csv; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; import com.l2jfrozen.Config; import com.l2jfrozen.gameserver.model.L2ExtractableItem; import com.l2jfrozen.gameserver.model.L2ExtractableProductItem; /** * @author FBIagent */ public class ExtractableItemsData { //Map<itemid, L2ExtractableItem> private Map<Integer, L2ExtractableItem> _items; private static ExtractableItemsData _instance = null; public static ExtractableItemsData getInstance() { if(_instance == null) { _instance = new ExtractableItemsData(); } return _instance; } public ExtractableItemsData() { _items = new HashMap<Integer, L2ExtractableItem>(); Scanner s = null; try { s = new Scanner(new File(Config.DATAPACK_ROOT+"/data/extractable_items.csv")); int lineCount = 0; while(s.hasNextLine()) { lineCount++; String line = s.nextLine(); if(line.startsWith("#")) { continue; } else if(line.equals("")) { continue; } String[] lineSplit = line.split(";"); int itemID = 0; try { itemID = Integer.parseInt(lineSplit[0]); } catch(Exception e) { if(Config.ENABLE_ALL_EXCEPTIONS) e.printStackTrace(); System.out.println("Extractable items data: Error in line " + lineCount + " -> invalid item id or wrong seperator after item id!"); System.out.println(" " + line); return; } List<L2ExtractableProductItem> product_temp = new ArrayList<L2ExtractableProductItem>(lineSplit.length); for(int i = 0; i < lineSplit.length - 1; i++) { String[] lineSplit2 = lineSplit[i + 1].split(","); if(lineSplit2.length != 3) { System.out.println("Extractable items data: Error in line " + lineCount + " -> wrong seperator!"); System.out.println(" " + line); continue; } int production = 0, amount = 0, chance = 0; try { production = Integer.parseInt(lineSplit2[0]); amount = Integer.parseInt(lineSplit2[1]); chance = Integer.parseInt(lineSplit2[2]); lineSplit2 = null; } catch(Exception e) { if(Config.ENABLE_ALL_EXCEPTIONS) e.printStackTrace(); System.out.println("Extractable items data: Error in line " + lineCount + " -> incomplete/invalid production data or wrong seperator!"); System.out.println(" " + line); continue; } product_temp.add(new L2ExtractableProductItem(production, amount, chance)); } int fullChances = 0; for(L2ExtractableProductItem Pi : product_temp) { fullChances += Pi.getChance(); } if(fullChances > 100) { System.out.println("Extractable items data: Error in line " + lineCount + " -> all chances together are more then 100!"); System.out.println(" " + line); continue; } _items.put(itemID, new L2ExtractableItem(itemID, product_temp)); } System.out.println("Extractable items data: Loaded " + _items.size() + " extractable items!"); } catch(Exception e) { //if(Config.ENABLE_ALL_EXCEPTIONS) e.printStackTrace(); System.out.println("Extractable items data: Can not find './data/extractable_items.csv'"); }finally{ if(s != null) try { s.close(); } catch(Exception e1) { e1.printStackTrace(); } } } public L2ExtractableItem getExtractableItem(int itemID) { return _items.get(itemID); } public int[] itemIDs() { int size = _items.size(); int[] result = new int; int i = 0; for(L2ExtractableItem ei : _items.values()) { result = ei.getItemId(); i++; } return result; } } Вот тут прописано как несколько добавлять, только на все итемы вместе шанс дается 100%, а мне нужно чтоб раздельно по 100% тоесть чтоб из 1 итема 5 штук падало со 100% шансом Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 9 февраля, 2014 package net.sf.l2j.gameserver.handler.itemhandlers; import net.sf.l2j.Config; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.network.serverpackets.ActionFailed; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; public class NewItem implements IItemHandler { public NewItem() { } private static final int ITEM_IDS[] = {Config.NEW_ITEM_ID}; public void useItem(L2PlayableInstance playable, L2ItemInstance item) { if(Config.NEW_ITEM) { if(!(playable instanceof L2PcInstance)) return; L2PcInstance activeChar = (L2PcInstance)playable; if(activeChar.getInventory().getItemByItemId(ИтемИд) != null ) { activeChar.getInventory().destroyItemByItemId("1", СундукИд, 1, activeChar, activeChar.getTarget()); activeChar.getInventory().addItem("2", ИтемИд, 1, activeChar, activeChar.getTarget()); activeChar.getInventory().addItem("3", ИтемИд, 1, activeChar, activeChar.getTarget()); activeChar.getInventory().addItem("4", ИтемИд, 1, activeChar, activeChar.getTarget()); activeChar.sendMessage("Сообщение."); activeChar.broadcastUserInfo(); } } } public int[] getItemIds() { return ITEM_IDS; } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ploski22 25 Опубликовано 9 февраля, 2014 а ниче что для 1 итема должен быть если додать все % макс 100? научитесь нормально формулировать свою мысль, иначе можно мозг себе поломать.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Closer 0 Опубликовано 9 февраля, 2014 (изменено) Demoncool вообщем я создал NewItem в itemhandler, прописал свои айдишки, скомпилил, юзаю итем и ничего не происходит =( Изменено 9 февраля, 2014 пользователем Closer Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sania 116 Опубликовано 9 февраля, 2014 научитесь нормально формулировать свою мысль, иначе можно мозг себе поломать.... если ты не знаешь о чем идет речь то ясен *** что тебе не понятно будет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты