1) Вопрос как реализовать отображение альянса в поиск группы В данный момент реализовано если человек с мира то отображается группа и в группе войн войн войн, если вы состоите в альянсе то отображение поиска отображается корректно альянс капитаны и лидер альянса. 2) Кто смог реализовать Roll на альянс 1-1000 на союз 1-10000. У кого какие мысли есть ? По моим мыслям где то в пакетной части не допилено либо нехватка пакетной части.
В смысле? если рол есть как таковой то скорее всего просто обработчика на альянс и союз нет. просили мысли.
Так вот и не могу найти где указывается этот рол и пакетку рыл и model но так что то и не смог найти где именно переменная отвечающая за Roll.
Чат запущен проблема чате ) 1) после вступления человека в алик сразу слетает сообщение с поиска. 2) корректное отображение(для Payer в алике) 3)Некорректное отображение (для Player без алика) 1)Реализовать отображение алика для всех Player, а не членов алика. 2)Так же если менять класс в поиске "группа->альянс->наставник" должно изменятся но не изменяется.
Подскажи где капнуть перекапывал пакетку, сравнивал в пакетке с другими версиями всё норма осталось тока в team2 От подсказки не откажусь )
Эмм, в смысле отображение Да и то что слетает, я вроде ровного такого не видел)) когда вступает один человек, то объяву заного кидали. Хз как на офе, но на фришках так было)
реализовано на легенде было у них сообщение не слетало. А вот то что отображение для людей в чате багнуто по моим предположениям это пакетка ток какой пакет отвечает за это хзы посути sm_chat_window извиняюсь если неправильно точно непомню
1) Вопрос как реализовать отображение альянса в поиск группы В данный момент реализовано если человек с мира то отображается группа и в группе войн войн войн, если вы состоите в альянсе то отображение поиска отображается корректно альянс капитаны и лидер альянса. 2) Проблема решается src\com\aionemu\gameserver\services\drop\DropDistributionService.java Спойлер package com.aionemu.gameserver.services.drop; import com.aionemu.commons.utils.Rnd; import com.aionemu.gameserver.model.actions.PlayerMode; import com.aionemu.gameserver.model.drop.DropItem; import com.aionemu.gameserver.model.gameobjects.DropNpc; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.team2.common.legacy.LootGroupRules; import com.aionemu.gameserver.network.aion.serverpackets.SM_GROUP_LOOT; import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE; import com.aionemu.gameserver.utils.PacketSendUtility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Set; public class DropDistributionService { private static Logger log = LoggerFactory.getLogger(DropDistributionService.class); public static DropDistributionService getInstance() { return SingletonHolder.instance; } public void handleRoll(Player player, int roll, int itemId, int npcId, int index) { DropNpc dropNpc = DropRegistrationService.getInstance().getDropRegistrationMap().get(npcId); if (player == null || dropNpc == null) { return; } int luck = 0; if (player.isInGroup2() || player.isInAlliance2()) { if (roll == 0) { PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_DICE_GIVEUP_ME); } else { luck = Rnd.get(1, 100); PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_DICE_RESULT_ME(luck, 100)); } for (Player member : dropNpc.getInRangePlayers()) { if (member == null) { log.warn("member null Owner is in group? " + player.isInGroup2() + " Owner is in Alliance? " + player.isInAlliance2()); continue; } int teamId = member.getCurrentTeamId(); PacketSendUtility.sendPacket(member, new SM_GROUP_LOOT(teamId, member.getObjectId(), itemId, npcId, dropNpc.getDistributionId(), luck, index)); if (!player.equals(member) && member.isOnline()) { if (roll == 0) { PacketSendUtility.sendPacket(member, SM_SYSTEM_MESSAGE.STR_MSG_DICE_GIVEUP_OTHER(player.getName())); } else { PacketSendUtility.sendPacket(member, SM_SYSTEM_MESSAGE.STR_MSG_DICE_RESULT_OTHER(player.getName(), luck, 100)); } } } distributeLoot(player, luck, itemId, npcId); } } public void handleBid(Player player, long bid, int itemId, int npcId, int index) { DropNpc dropNpc = DropRegistrationService.getInstance().getDropRegistrationMap().get(npcId); if (player == null || dropNpc == null) { return; } if (player.isInGroup2() || player.isInAlliance2()) { if ((bid > 0 && player.getInventory().getKinah() < bid) || bid < 0 || bid > 999999999) { bid = 0; // Set BID to 0 if player has bid more KINAH then they have in inventory or send negative value } if (bid > 0) { PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_PAY_RESULT_ME); } else { PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_PAY_GIVEUP_ME); } for (Player member : dropNpc.getInRangePlayers()) { if (member == null) { log.warn("member null Owner is in group? " + player.isInGroup2() + " Owner is in Alliance? " + player.isInAlliance2()); continue; } int teamId = member.getCurrentTeamId(); PacketSendUtility.sendPacket(member, new SM_GROUP_LOOT(teamId, member.getObjectId(), itemId, npcId, dropNpc.getDistributionId(), bid, index)); if (!player.equals(member) && member.isOnline()) { if (bid > 0) { PacketSendUtility.sendPacket(member, SM_SYSTEM_MESSAGE.STR_MSG_PAY_RESULT_OTHER(player.getName())); } else { PacketSendUtility.sendPacket(member, SM_SYSTEM_MESSAGE.STR_MSG_PAY_GIVEUP_OTHER(player.getName())); } } } distributeLoot(player, bid, itemId, npcId); } } private void distributeLoot(Player player, long luckyPlayer, int itemId, int npcId) { DropNpc dropNpc = DropRegistrationService.getInstance().getDropRegistrationMap().get(npcId); Set<DropItem> dropItems = DropRegistrationService.getInstance().getCurrentDropMap().get(npcId); DropItem requestedItem = null; if (dropItems == null) { return; } synchronized (dropItems) { for (DropItem dropItem : dropItems) { if (dropItem.getIndex() == dropNpc.getCurrentIndex()) { requestedItem = dropItem; break; } } } if (requestedItem == null) { return; } player.unsetPlayerMode(PlayerMode.IN_ROLL); if (dropNpc.containsPlayerStatus(player)) { dropNpc.delPlayerStatus(player); } if (luckyPlayer > requestedItem.getHighestValue()) { requestedItem.setHighestValue(luckyPlayer); requestedItem.setWinningPlayer(player); } if (!dropNpc.getPlayerStatus().isEmpty()) { return; } if (player.isInGroup2() || player.isInAlliance2()) { for (Player member : dropNpc.getInRangePlayers()) { if (member == null) { continue; } if (requestedItem.getWinningPlayer() == null) { PacketSendUtility.sendPacket(member, SM_SYSTEM_MESSAGE.STR_MSG_PAY_ALL_GIVEUP); } int teamId = member.getCurrentTeamId(); PacketSendUtility.sendPacket(member, new SM_GROUP_LOOT(teamId, requestedItem.getWinningPlayer() != null ? requestedItem.getWinningPlayer().getObjectId() : 1, itemId, npcId, dropNpc.getDistributionId(), 0xFFFFFFFF, requestedItem.getIndex())); } } LootGroupRules lgr = player.getLootGroupRules(); if (lgr != null) { lgr.removeItemToBeDistributed(requestedItem); } if (requestedItem.getWinningPlayer() == null) { requestedItem.isFreeForAll(true); if (lgr != null && !lgr.getItemsToBeDistributed().isEmpty()) { DropService.getInstance().canDistribute(player, lgr.getItemsToBeDistributed().getFirst()); } return; } requestedItem.isDistributeItem(true); DropService.getInstance().requestDropItem(player, npcId, dropNpc.getCurrentIndex()); if (lgr != null && !lgr.getItemsToBeDistributed().isEmpty()) { DropService.getInstance().canDistribute(player, lgr.getItemsToBeDistributed().getFirst()); } } @SuppressWarnings("synthetic-access") private static class SingletonHolder { protected static final DropDistributionService instance = new DropDistributionService(); } }