↑ ↓

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

Тема в разделе "Помощь", создана пользователем ~*ReVeaNGe*~, 8 авг 2017.

  1. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    1) Вопрос как реализовать отображение альянса в поиск группы
    В данный момент реализовано если человек с мира то отображается группа и в группе войн войн войн,
    если вы состоите в альянсе то отображение поиска отображается корректно альянс капитаны и лидер альянса.
    2) Кто смог реализовать Roll на альянс 1-1000 на союз 1-10000.
    У кого какие мысли есть ?
    По моим мыслям где то в пакетной части не допилено либо нехватка пакетной части.
     
  2. Offline

    yayaya Ефрейтор Команда форума

    587
    183
    76
    Кредиты:
    $20.524,68
    Репутация:
    38
    В смысле? если рол есть как таковой то скорее всего просто обработчика на альянс и союз нет.
    просили мысли.
     
    MMO “Revers” RPG нравится это.
  3. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    Рол есть по факту он 1-100 а должен быть на группу 1-100 на алик 1-1000 на союза 1-1000.
     
  4. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    1-10000 на союз.
     
  5. Offline

    yayaya Ефрейтор Команда форума

    587
    183
    76
    Кредиты:
    $20.524,68
    Репутация:
    38
    показывайте код файлы где искали что нашли.
     
  6. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    Так вот и не могу найти где указывается этот рол и пакетку рыл и model но так что то и не смог найти где именно переменная отвечающая за Roll.
     
  7. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    если не выложено в паблик, не значит что не работает у людей ;)
    Please login or register to view links
     
  8. Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    чат запусти и в конфигах гейма не забудь его вкл тоже и все.
     
  9. Offline

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    да есть такие сборки с "кривыми" каналами.
    альянс не отображает.
     
  10. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    Чат запущен проблема чате )
    1.jpg 1) после вступления человека в алик сразу слетает сообщение с поиска.
    2.jpg 2) корректное отображение(для Payer в алике)
    3.jpg 3)Некорректное отображение (для Player без алика)

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

    klubheads Сержант Команда форума Модератор

    2.011
    356
    189
    Кредиты:
    $2.142,45
    Репутация:
    54
    Так в чем проблема? Реализуйте ;) или закажите реализацию.
     
  12. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    Подскажи где капнуть:) перекапывал пакетку, сравнивал в пакетке с другими версиями всё норма осталось тока в team2 :) От подсказки не откажусь )
     
  13. Offline

    nokiafan1111 Ефрейтор

    331
    21
    51
    Кредиты:
    $329,63
    Репутация:
    2
    Эмм, в смысле отображение
    Да и то что слетает, я вроде ровного такого не видел)) когда вступает один человек, то объяву заного кидали. Хз как на офе, но на фришках так было)
     
  14. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    реализовано на легенде было у них сообщение не слетало.
    А вот то что отображение для людей в чате багнуто по моим предположениям это пакетка ток какой пакет отвечает за это хзы посути sm_chat_window извиняюсь если неправильно точно непомню
     
  15. TopicStarter Overlay
    Offline

    ~*ReVeaNGe*~ Рядовой

    32
    1
    41
    Кредиты:
    $200,00
    Репутация:
    0
    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();
    }
    }