Welcome to RUSaCis - эмулятор Interlude

Присоединяйтесь к нам прямо сейчас, чтобы получить доступ ко всем нашим возможностям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию пользователям - так же приобрести исходный код. Это также быстро, так чего же вы ждете?

Помощь с partydrop

FerdSNP

Бродяга
Регистрация
1 Дек 2023
Сообщения
13
Реакции
1
Баллы
3
RaCoin
0
Привет всем, может кто-то с лучшим знанием Java помочь мне с следующим кодом?

С другом мы работаем над кодом для partydrop'а, проблема в том, что я знаю игру, но мало знаю о Java, а мой друг знает Java, но ничего не знает об игре, и между нами мы не можем завершить даже 1 xD
Пока у нас есть следующее:
PartyDropQuest.java:
package net.sf.l2j.gameserver.scripting.script.feature;

import java.util.HashMap;
import java.util.List;

import net.sf.l2j.gameserver.model.actor.Npc;
import net.sf.l2j.gameserver.model.actor.Player;
import net.sf.l2j.gameserver.network.serverpackets.PlaySound;
import net.sf.l2j.gameserver.scripting.Quest;

public class PartyBoxQuest extends Quest
{
    private static final String QUEST_NAME = "PartyDropQuest";

    private static final int[] PARTY_MOBS = { 22105 };
    private static final int REWARD_ITEM_ID = 10002;
    private static final int REWARD_ITEM_COUNT = 10;
    private static final int REWARD_RADIUS = 1000;

    private boolean canReward = false;
    private static HashMap<String, Integer> playerIps = new HashMap<>();

    public PartyBoxQuest()
    {
        super(-1, QUEST_NAME);

        addKillId(PARTY_MOBS);
    }

    private void addKillId(int[] partyMobs)
    {
        // No hay implementación actualmente.
    }

    public String onKill(Npc npc, Player player, boolean isPet)
    {
        if (player.isInParty())
        {
            List<Player> party = player.getParty().getMembers();

            for (Player member : party)
            {
                String playerIp = member.getClient().getConnection().getInetAddress().getHostAddress();

                if (!playerIps.containsKey(playerIp))
                {
                    playerIps.put(playerIp, 1);
                    canReward = true;
                }
                else
                {
                    int count = playerIps.get(playerIp);

                    if (count < 1)
                    {
                        playerIps.remove(playerIp);
                        playerIps.put(playerIp, count + 1);
                        canReward = true;
                    }
                    else
                    {
                        member.sendMessage("You have already been rewarded, so this character won't receive additional rewards.");
                        canReward = false;
                    }
                }

                if (canReward)
                {
                    if (member.isIn3DRadius(npc, REWARD_RADIUS))
                    {
                        member.addItem("Party Box", REWARD_ITEM_ID, REWARD_ITEM_COUNT, member, true);
                        member.broadcastPacket(new PlaySound("ItemSound.quest_finish"));
                    }
                    else
                    {
                        member.sendMessage("You are too far to be rewarded.");
                    }
                }
            }
            playerIps.clear();
        }
        else
        {
            player.addItem("Party Box", REWARD_ITEM_ID, REWARD_ITEM_COUNT, player, true);
            player.broadcastPacket(new PlaySound("ItemSound.quest_finish"));
        }

        return null;
    }

    public static void main(String[] args)
    {
        new PartyBoxQuest();
    }
}

Этот код основан на многих, которые существуют на различных форумах различных дистрибутивов, таких как l2jserver, frozen и т. д. Мы пытались адаптировать его, но он по-прежнему не работает. Если у кого-то есть идея, что идет не так, это будет большой помощью.
 

Сверху Снизу