@Override public PlayerAttribute getPlayerAttribute(Player player) { PlayerAttribute att = new PlayerAttribute(); List<String> removeList = new ArrayList<String>(); for (String collectId : player.getCollect().getInfos().keySet()) { try { CollectItem item = player.getCollect().getInfos().get(collectId); Q_collectBean collectBean = DataManager.getInstance().q_collectContainer.getMap().get(Integer.valueOf(collectId)); if (CollectManager.getInstance().isActivity(item, collectBean)) { Q_buffBean buffBean = ManagerPool.dataManager.q_buffContainer.getMap().get(collectBean.getQ_buff_id()); if (buffBean != null) att.add(PlayerAttribute.getPlayerAttribute(buffBean)); } } catch (Exception e) { removeList.add(collectId); } } for (String key : removeList) { player.getCollect().getInfos().remove(key); } return att; }
@Override public void gather(Player player, NPC npc) { // 根据npc判断采集物品 Q_npcBean bean = ManagerPool.dataManager.q_npcContainer.getMap().get(npc.getModelId()); if (bean == null) { return; } String itemModelIds = bean.getQ_acquisition_item(); if (StringUtil.isBlank(itemModelIds)) { // player停止采集 ManagerPool.npcManager.playerStopGather(player); return; } Map<Integer, Integer> gatherMap = new HashMap<Integer, Integer>(); String[] split = itemModelIds.split(Symbol.FENHAO_REG); for (String str : split) { String[] split2 = str.split(Symbol.XIAHUAXIAN_REG); int id = Integer.parseInt(split2[0]); int num = 1; if (split2.length > 1) num = Integer.parseInt(split2[1]); String jobLimit = null; if (split2.length > 2) jobLimit = split2[2]; if (PlayerManager.checkJob(player.getJob(), jobLimit)) gatherMap.put(id, num); } if (gatherMap.size() == 0) { log.error("没有物品可以采集了:" + bean.getQ_id()); ManagerPool.npcManager.playerStopGather(player); return; } // 判断包裹是否能够放下此物品 int num = ManagerPool.backpackManager.getEmptyGridNum(player); if (num < gatherMap.size()) { // 提示包裹空间不足 MessageUtil.notify_player( player, Notifys.ERROR, ResManager.getInstance().getString("背包空间不足")); // player停止采集 ManagerPool.npcManager.playerStopGather(player); return; } // 根据npc判断采集物品 String taskModelId = bean.getQ_acquisition_task(); if (StringUtil.isNotBlank(taskModelId)) { MainTask mainTask = null; for (MainTask task : player.getCurrentMainTasks()) { if (taskModelId.contains(String.valueOf(task.getModelid()))) { mainTask = task; break; } } if (mainTask == null) { return; } Q_task_mainBean taskModel = DataManager.getInstance().q_task_mainContainer.getMap().get(mainTask.getModelid()); if (player.getLevel() < taskModel.getQ_accept_needmingrade()) { // 等级不足 MessageUtil.notify_player( player, Notifys.ERROR, ResManager.getInstance().getString("采集需要的等级不足")); return; } // 增加player物品 List<Item> item = new ArrayList<Item>(); Iterator<Entry<Integer, Integer>> iterator = gatherMap.entrySet().iterator(); while (iterator.hasNext()) { Entry<Integer, Integer> next = iterator.next(); List<Item> item2 = Item.createItems(next.getKey(), next.getValue(), true, 0); if (CollectionUtil.isNotBlank(item2)) item.addAll(item2); } if (BackpackManager.getInstance().hasAddSpace(player, item)) { log.error("玩家(" + player.getId() + ")完成任务(" + mainTask.getModelid() + ")检查物品有地儿放!"); } else { log.error("玩家(" + player.getId() + ")完成任务(" + mainTask.getModelid() + ")检查物品没地儿放!"); } if (ManagerPool.backpackManager.addItems(player, item, Reasons.TAKEUP, Config.getId())) { log.error("玩家(" + player.getId() + ")完成任务(" + mainTask.getModelid() + ")获得物品成功!"); ; } else { log.error("玩家(" + player.getId() + ")完成任务(" + mainTask.getModelid() + ")获得物品失败!"); ; } log.error("玩家(" + player.getId() + ")采集成功准备完成任务(" + mainTask.getModelid() + ")!"); // 触发完成任务 // mainTask.changeTask(); if (mainTask.checkFinsh(false, player)) { mainTask.finshTask(player); log.error("玩家(" + player.getId() + ")采集成功完成任务(" + taskModelId + ")了!"); } else { log.error("玩家(" + player.getId() + ")采集成功未完成任务(" + taskModelId + ")了!"); } // ManagerPool.taskManager.finishMainTask(player, taskModelId); } // player停止采集 ManagerPool.npcManager.playerStopGather(player); }
@Override public PlayerAttribute getPlayerAttribute(Player player) { PlayerAttribute patt = new PlayerAttribute(); Iterator<Q_arrowBean> iterator = DataManager.getInstance().q_arrowContainer.getMap().values().iterator(); while (iterator.hasNext()) { Q_arrowBean q_arrowBean = iterator.next(); if (q_arrowBean != null && q_arrowBean.getQ_arrow_id() <= player.getArrowData().getArrowlv()) { patt.setAttack(patt.getAttack() + q_arrowBean.getQ_attack()); patt.setDefense(patt.getDefense() + q_arrowBean.getQ_defence()); patt.setCrit(patt.getCrit() + q_arrowBean.getQ_crit()); patt.setDodge(patt.getDodge() + q_arrowBean.getQ_dodge()); patt.setMaxHp(patt.getMaxHp() + q_arrowBean.getQ_maxhp()); patt.setMaxMp(patt.getMaxMp() + q_arrowBean.getQ_maxmp()); patt.setMaxSp(patt.getMaxSp() + q_arrowBean.getQ_maxsp()); patt.setAttackSpeed(patt.getAttackSpeed() + q_arrowBean.getQ_attackspeed()); patt.setSpeed(patt.getSpeed() + q_arrowBean.getQ_speed()); } } Iterator<Q_arrow_starBean> iterator1 = DataManager.getInstance().q_arrow_starContainer.getMap().values().iterator(); while (iterator1.hasNext()) { Q_arrow_starBean q_arrow_starBean = iterator1.next(); if (q_arrow_starBean != null && ((q_arrow_starBean.getQ_mainlv() < player.getArrowData().getStarData().getStarmainlv()) || (q_arrow_starBean.getQ_mainlv() == player.getArrowData().getStarData().getStarmainlv() && q_arrow_starBean.getQ_sublv() <= player.getArrowData().getStarData().getStarsublv()))) { patt.setAttack(patt.getAttack() + q_arrow_starBean.getQ_attack()); patt.setDefense(patt.getDefense() + q_arrow_starBean.getQ_defence()); patt.setCrit(patt.getCrit() + q_arrow_starBean.getQ_crit()); patt.setDodge(patt.getDodge() + q_arrow_starBean.getQ_dodge()); patt.setMaxHp(patt.getMaxHp() + q_arrow_starBean.getQ_maxhp()); patt.setMaxMp(patt.getMaxMp() + q_arrow_starBean.getQ_maxmp()); patt.setMaxSp(patt.getMaxSp() + q_arrow_starBean.getQ_maxsp()); patt.setAttackSpeed(patt.getAttackSpeed() + q_arrow_starBean.getQ_attackspeed()); patt.setSpeed(patt.getSpeed() + q_arrow_starBean.getQ_speed()); } } Iterator<Q_arrow_bowBean> iterator2 = DataManager.getInstance().q_arrow_bowContainer.getMap().values().iterator(); while (iterator2.hasNext()) { Q_arrow_bowBean q_arrow_bowBean = iterator2.next(); if (q_arrow_bowBean != null && ((q_arrow_bowBean.getQ_mainlv() < player.getArrowData().getBowData().getBowmainlv()) || (q_arrow_bowBean.getQ_mainlv() == player.getArrowData().getBowData().getBowmainlv() && q_arrow_bowBean.getQ_sublv() <= player.getArrowData().getBowData().getBowsublv()))) { patt.setAttack(patt.getAttack() + q_arrow_bowBean.getQ_attack()); patt.setDefense(patt.getDefense() + q_arrow_bowBean.getQ_defence()); patt.setCrit(patt.getCrit() + q_arrow_bowBean.getQ_crit()); patt.setDodge(patt.getDodge() + q_arrow_bowBean.getQ_dodge()); patt.setMaxHp(patt.getMaxHp() + q_arrow_bowBean.getQ_maxhp()); patt.setMaxMp(patt.getMaxMp() + q_arrow_bowBean.getQ_maxmp()); patt.setMaxSp(patt.getMaxSp() + q_arrow_bowBean.getQ_maxsp()); patt.setAttackSpeed(patt.getAttackSpeed() + q_arrow_bowBean.getQ_attackspeed()); patt.setSpeed(patt.getSpeed() + q_arrow_bowBean.getQ_speed()); } } return patt; }