- Хроники
- Master Class
- Исходники
- Присутствуют
- Сборка
- L2scripts
все привет. хотел бы узнать что нужно чтобы перетянуть ежедневные мисси кланна с ессенса на майн у меня 520 протокол
на северной части я реализовал все пакеты вот они
в клиентской части явзял дат файлик missionlevel класик и просто взял и удалилв названии классик слышал что так возможно сработает
но по итогу не чего не отображает
кто-то мог бы подсказать что я пропустил или что не сделал
на северной части я реализовал все пакеты вот они
Java:
package org.mmocore.gameserver.serverpackets.dailymission;
import org.mmocore.gameserver.data.xml.holder.MissionLevelHolder;
import org.mmocore.gameserver.model.DailyMissionLevel;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.model.enums.MissionLevelState;
import org.mmocore.gameserver.model.enums.MissionLevelType;
import org.mmocore.gameserver.serverpackets.L2GameServerPacket;
import org.mmocore.gameserver.templates.item.data.ItemData;
import java.util.Calendar;
public class ExMissionLevelRewardList extends L2GameServerPacket
{
private Player _player;
private int _year;
private int _month;
private int _key;
private ItemData[] _baseItems;
public ExMissionLevelRewardList(Player player)
{
_player = player;
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
_year = cal.get(Calendar.YEAR);
_month = cal.get(Calendar.MONTH) + 1;
_key = MissionLevelHolder.getInstance().getCurrentSeasonKey();
_baseItems = MissionLevelHolder.getInstance().getBaseItems(_key);
}
@Override
protected void writeImpl()
{
if (_baseItems == null)
return;
DailyMissionLevel ml = _player.getMissionLevel();
int level = ml.getLevel();
int received = ml.getReceived();
int receivedS= ml.getReceivedS();
int maxLevel = ml.getLevelMax();
MissionLevelHolder holder = MissionLevelHolder.getInstance();
ItemData itemSpec = holder.getSpecialItem(_key);
ItemData itemExtra = holder.getExtraItem(_key);
int extra = (itemSpec != null ? 1 : 0) + (receivedS >= 1 && itemExtra != null ? 1 : 0);
if (received < maxLevel)
extra = 0;
Calendar end = Calendar.getInstance();
end.set(Calendar.HOUR_OF_DAY, 6);
end.set(Calendar.MINUTE, 30);
end.set(Calendar.SECOND, 0);
end.set(Calendar.MILLISECOND, 0);
end.set(Calendar.DAY_OF_MONTH, 1);
end.add(Calendar.MONTH, 1);
if (end.getTimeInMillis() < System.currentTimeMillis())
end.add(Calendar.MONTH, 1);
long remain = end.getTimeInMillis() - System.currentTimeMillis();
writeD(_baseItems.length + extra);
for (int i = 0; i < _baseItems.length; i++)
{
writeD(MissionLevelType.BASE.getId());
writeD(i + 1);
if (received < (i + 1))
{
if (level >= (i + 1))
writeD(MissionLevelState.AVAILABLE.getId());
else
writeD(MissionLevelState.UNAVAILABLE.getId());
}
else
writeD(MissionLevelState.RECEIVED.getId());
}
int availableS = 0;
if (extra > 0)
{
if (itemSpec != null)
{
writeD(MissionLevelType.SPECIAL.getId());
writeD(_baseItems.length + 1);
if (receivedS >= 1)
{
writeD(MissionLevelState.RECEIVED.getId());
}
else if (level == maxLevel)
{
availableS = 1;
writeD(MissionLevelState.AVAILABLE.getId());
}
else
{
writeD(MissionLevelState.UNAVAILABLE.getId());
}
}
if (receivedS >= 1 && itemExtra != null)
{
writeD(MissionLevelType.EXTRA.getId());
writeD(_baseItems.length + 2);
if (receivedS >= 2)
{
writeD(MissionLevelState.RECEIVED.getId());
}
else if (level == maxLevel)
{
availableS = 1;
writeD(MissionLevelState.AVAILABLE.getId());
}
else
{
writeD(MissionLevelState.UNAVAILABLE.getId());
}
}
}
writeD(level); // текущий уровень
writeD(ml.getPointPercent()); // % заполнения текущего уровня
writeD(_year);
writeD(_month);
writeD(level - received); // сколько наград можно забрать
writeD(availableS); // доступен ли special/extra
writeD((int)(remain / 1000)); // секунд до конца сезона
boolean jumpEnabled = true;//Config.ALT_MISSION_LEVEL_JUMP todo
boolean canJump = _player.canMissionLevelJump();
writeC(!jumpEnabled ? 0x01 : canJump ? 0x00 : 0x01);
}
}
Java:
package org.mmocore.gameserver.serverpackets.newPacket;
import org.mmocore.commons.time.cron.SchedulingPattern;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.model.actor.instances.player.DailyMission;
import org.mmocore.gameserver.serverpackets.L2GameServerPacket;
import org.mmocore.gameserver.templates.dailymissions.DailyMissionTemplate;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
public class ExOneDayReceiveRewardList extends L2GameServerPacket
{
private static final SchedulingPattern DAILY_REUSE_PATTERN = new SchedulingPattern("30 6 * * *");
private static final SchedulingPattern WEEKLY_REUSE_PATTERN = new SchedulingPattern("30 6 * * 1");
private static final SchedulingPattern MONTHLY_REUSE_PATTERN = new SchedulingPattern("30 6 1 * *");
private final int _dayRemainTime;
private final int _weekRemainTime;
private final int _monthRemainTime;
private final int _classId;
private final int _dayOfWeek;
private final List<DailyMission> _missions = new ArrayList<DailyMission>();
public ExOneDayReceiveRewardList(Player player)
{
_dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_classId = player.getBaseClassId();
_dayOfWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
for(DailyMissionTemplate missionTemplate : player.getDailyMissionList().getAvailableMissions())
{
DailyMission mission = player.getDailyMissionList().get(missionTemplate);
if(!mission.isFinallyCompleted())
_missions.add(mission);
}
Collections.sort(_missions);
}
public ExOneDayReceiveRewardList()
{
_dayRemainTime = (int) ((DAILY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_weekRemainTime = (int) ((WEEKLY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_monthRemainTime = (int) ((MONTHLY_REUSE_PATTERN.next(System.currentTimeMillis()) - System.currentTimeMillis()) / 1000L);
_classId = 0;
_dayOfWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
}
@Override
protected void writeImpl()
{
writeD(_dayRemainTime);
writeD(_weekRemainTime);
writeD(_monthRemainTime);
writeC(0x17);
writeD(_classId);
writeD(_dayOfWeek);
writeD(_missions.size());
for(DailyMission mission : _missions)
{
writeH(mission.getId());
writeC(mission.getStatus().ordinal());
writeC(0x01);
writeD(mission.getCurrentProgress());
writeD(mission.getRequiredProgress());
}
}
}
но по итогу не чего не отображает
кто-то мог бы подсказать что я пропустил или что не сделал













