• SiteAnalyzer, технический и SEO-анализ сайтов

Вопрос для знатоков ) хзы реализовал кто или нет )

~*ReVeaNGe*~

Рядовой
1) Вопрос как реализовать отображение альянса в поиск группы
В данный момент реализовано если человек с мира то отображается группа и в группе войн войн войн,
если вы состоите в альянсе то отображение поиска отображается корректно альянс капитаны и лидер альянса.
2) Кто смог реализовать Roll на альянс 1-1000 на союз 1-10000.
У кого какие мысли есть ?
По моим мыслям где то в пакетной части не допилено либо нехватка пакетной части.
 
В смысле? если рол есть как таковой то скорее всего просто обработчика на альянс и союз нет.
просили мысли.
 
показывайте код файлы где искали что нашли.
 
Чат запущен проблема чате )
1.jpg 1) после вступления человека в алик сразу слетает сообщение с поиска.
2.jpg 2) корректное отображение(для Payer в алике)
3.jpg 3)Некорректное отображение (для Player без алика)

1)Реализовать отображение алика для всех Player, а не членов алика.
2)Так же если менять класс в поиске "группа->альянс->наставник" должно изменятся но не изменяется.
 
1)Реализовать отображение алика для всех Player, а не членов алика.
2)Так же если менять класс в поиске "группа->альянс->наставник" должно изменятся но не изменяется.
Так в чем проблема? Реализуйте ;) или закажите реализацию.
 
1)Реализовать отображение алика для всех Player, а не членов алика.
2)Так же если менять класс в поиске "группа->альянс->наставник" должно изменятся но не изменяется.

Эмм, в смысле отображение
Да и то что слетает, я вроде ровного такого не видел)) когда вступает один человек, то объяву заного кидали. Хз как на офе, но на фришках так было)
 
Эмм, в смысле отображение
Да и то что слетает, я вроде ровного такого не видел)) когда вступает один человек, то объяву заного кидали. Хз как на офе, но на фришках так было)
реализовано на легенде было у них сообщение не слетало.
А вот то что отображение для людей в чате багнуто по моим предположениям это пакетка ток какой пакет отвечает за это хзы посути 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();
}
}
 
Назад
Сверху