Рега на форт

Vodka TreasureHunter

Выдающийся
Местный
За веру и верность форуму
Сообщения
371
Розыгрыши
0
Репутация
242
Реакции
175
Баллы
1 388
Решил передать фунцию рега на форт, раньше было клацаешь одну строчку регаешься, вторую снимаешь регу.
Решил сделать окно как на fisrt-team или же l2nextgen, FT ближе по сходству с моей сборкой по этому вытаскивал от туда.
Поменял файлы:
SuspiciousMerchantInstance.java
package l2p.gameserver.serverpackets;

import java.util.Calendar;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import l2p.gameserver.model.pledge.Alliance;
import l2p.gameserver.model.pledge.Clan;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.entity.events.impl.CastleSiegeEvent;
import l2p.gameserver.model.entity.residence.Castle;
import l2p.gameserver.model.entity.residence.ClanHall;
import l2p.gameserver.model.entity.residence.Residence;
import l2p.gameserver.model.entity.residence.Fortress;

/**
* Shows the Siege Info<BR>
* <BR>
* packet type id 0xc9<BR>
* format: cdddSSdSdd<BR>
* <BR>
* c = c9<BR>
* d = UnitID<BR>
* d = Show Owner Controls (0x00 default || >=0x02(mask?) owner)<BR>
* d = Owner ClanID<BR>
* S = Owner ClanName<BR>
* S = Owner Clan LeaderName<BR>
* d = Owner AllyID<BR>
* S = Owner AllyName<BR>
* d = current time (seconds)<BR>
* d = Siege time (seconds) (0 for selectable)<BR>
* d = Size of Siege Time Select Related
* d - next siege time
*
* @reworked VISTALL
*/
public class CastleSiegeInfo extends L2GameServerPacket
{
private long _startTime;
private int _id, _ownerObjectId, _allyId;
private boolean _isLeader;
private String _ownerName = "NPC";
private String _leaderName = StringUtils.EMPTY;
private String _allyName = StringUtils.EMPTY;
private int[] _nextTimeMillis = ArrayUtils.EMPTY_INT_ARRAY;

public CastleSiegeInfo(Castle castle, Player player)
{
this((Residence)castle, player);

CastleSiegeEvent siegeEvent = castle.getSiegeEvent();
long siegeTimeMillis = castle.getSiegeDate().getTimeInMillis();
if(siegeTimeMillis == 0)
_nextTimeMillis = siegeEvent.getNextSiegeTimes();
else
_startTime = (int)(siegeTimeMillis / 1000);
}

public CastleSiegeInfo(ClanHall ch, Player player)
{
this((Residence)ch, player);

_startTime = (int)(ch.getSiegeDate().getTimeInMillis() / 1000);
}
public CastleSiegeInfo(Fortress fortes, Player player)
{
this((Residence)fortes, player);

_startTime = (int)(fortes.getSiegeDate().getTimeInMillis() / 1000);
}


protected CastleSiegeInfo(Residence residence, Player player)
{
_id = residence.getId();
_ownerObjectId = residence.getOwnerId();
Clan owner = residence.getOwner();
if(owner != null)
{
_isLeader = player.isGM() || owner.getLeaderId(Clan.SUBUNIT_MAIN_CLAN) == player.getObjectId();
_ownerName = owner.getName();
_leaderName = owner.getLeaderName(Clan.SUBUNIT_MAIN_CLAN);
Alliance ally = owner.getAlliance();
if(ally != null)
{
_allyId = ally.getAllyId();
_allyName = ally.getAllyName();
}
}
}

@Override
protected void writeImpl()
{
writeC(0xC9);
writeD(_id);
writeD(_isLeader ? 0x01 : 0x00);
writeD(_ownerObjectId);
writeS(_ownerName); // Clan Name
writeS(_leaderName); // Clan Leader Name
writeD(_allyId); // Ally ID
writeS(_allyName); // Ally Name
writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000));
writeD((int) _startTime);
if(_startTime == 0) //если ноль то идет цыкл
writeDD(_nextTimeMillis, true);
}
}
CastleSiegeInfo.java
package l2p.gameserver.serverpackets;

import java.util.Calendar;

import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import l2p.gameserver.model.pledge.Alliance;
import l2p.gameserver.model.pledge.Clan;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.entity.events.impl.CastleSiegeEvent;
import l2p.gameserver.model.entity.residence.Castle;
import l2p.gameserver.model.entity.residence.ClanHall;
import l2p.gameserver.model.entity.residence.Residence;
import l2p.gameserver.model.entity.residence.Fortress;

/**
* Shows the Siege Info<BR>
* <BR>
* packet type id 0xc9<BR>
* format: cdddSSdSdd<BR>
* <BR>
* c = c9<BR>
* d = UnitID<BR>
* d = Show Owner Controls (0x00 default || >=0x02(mask?) owner)<BR>
* d = Owner ClanID<BR>
* S = Owner ClanName<BR>
* S = Owner Clan LeaderName<BR>
* d = Owner AllyID<BR>
* S = Owner AllyName<BR>
* d = current time (seconds)<BR>
* d = Siege time (seconds) (0 for selectable)<BR>
* d = Size of Siege Time Select Related
* d - next siege time
*
* @reworked VISTALL
*/
public class CastleSiegeInfo extends L2GameServerPacket
{
private long _startTime;
private int _id, _ownerObjectId, _allyId;
private boolean _isLeader;
private String _ownerName = "NPC";
private String _leaderName = StringUtils.EMPTY;
private String _allyName = StringUtils.EMPTY;
private int[] _nextTimeMillis = ArrayUtils.EMPTY_INT_ARRAY;

public CastleSiegeInfo(Castle castle, Player player)
{
this((Residence)castle, player);

CastleSiegeEvent siegeEvent = castle.getSiegeEvent();
long siegeTimeMillis = castle.getSiegeDate().getTimeInMillis();
if(siegeTimeMillis == 0)
_nextTimeMillis = siegeEvent.getNextSiegeTimes();
else
_startTime = (int)(siegeTimeMillis / 1000);
}

public CastleSiegeInfo(ClanHall ch, Player player)
{
this((Residence)ch, player);

_startTime = (int)(ch.getSiegeDate().getTimeInMillis() / 1000);
}
public CastleSiegeInfo(Fortress fortes, Player player)
{
this((Residence)fortes, player);

_startTime = (int)(fortes.getSiegeDate().getTimeInMillis() / 1000);
}


protected CastleSiegeInfo(Residence residence, Player player)
{
_id = residence.getId();
_ownerObjectId = residence.getOwnerId();
Clan owner = residence.getOwner();
if(owner != null)
{
_isLeader = player.isGM() || owner.getLeaderId(Clan.SUBUNIT_MAIN_CLAN) == player.getObjectId();
_ownerName = owner.getName();
_leaderName = owner.getLeaderName(Clan.SUBUNIT_MAIN_CLAN);
Alliance ally = owner.getAlliance();
if(ally != null)
{
_allyId = ally.getAllyId();
_allyName = ally.getAllyName();
}
}
}

@Override
protected void writeImpl()
{
writeC(0xC9);
writeD(_id);
writeD(_isLeader ? 0x01 : 0x00);
writeD(_ownerObjectId);
writeS(_ownerName); // Clan Name
writeS(_leaderName); // Clan Leader Name
writeD(_allyId); // Ally ID
writeS(_allyName); // Ally Name
writeD((int) (Calendar.getInstance().getTimeInMillis() / 1000));
writeD((int) _startTime);
if(_startTime == 0) //если ноль то идет цыкл
writeDD(_nextTimeMillis, true);
}
}
И вроде все получилось, я уже обрадовался но...
d07aaae14e09.jpg
Но когда регаюсь ничего не происходит, скорей всего это и за даты осады.
Должно писать Дата осады 2015/07/13 20:11 но пишет "Нерешительные"

Буду рад любым ответам где может быть ошибка.
 
Последнее редактирование модератором:
А что смотреть если 2 раза выложен пакет. CastleSiegeInfo к тому же какой идиот будет менять пакет, что потом скажется не хорошо на сервере. Тот же опкод и райты. Это далбанутым человеком надо быть
 
А что смотреть если 2 раза выложен пакет. CastleSiegeInfo к тому же какой идиот будет менять пакет, что потом скажется не хорошо на сервере. Тот же опкод и райты. Это далбанутым человеком надо быть
Я это с фт исходов перетянул там реализовано так.
 
Боже ты скинул CastleSiegeInfo сам посмотри...
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Переделай свое стандартное окно что вызывает нпц и не лепи леписток к ране...
 
То есть ты тупо в SuspiciousMerchantInstance скопировал содержимое ClanSiegeInfo? :D
Странно, что оно еще компилируется. Видать не то скинул все же.
Но в любом случае, если хочешь такую штучку провернуть, не лучше ли оставить один конструктор с аргументом Residence и в нем поставить проверки типa isCastle, isFortress и т.п.? Ну и отправлять тот же ClanSiegeInfo при нажатии на кнопку у орка (делается в html`ке).
 
я поменял функции в этих двух файлах на функции из файлов исходников ссср.
То есть взял можно сказать эти два файла от туда и почти получилось но не показывает ВРЕМЯ
 
То есть ты тупо в SuspiciousMerchantInstance скопировал содержимое ClanSiegeInfo? :D
Странно, что оно еще компилируется. Видать не то скинул все же.
Но в любом случае, если хочешь такую штучку провернуть, не лучше ли оставить один конструктор с аргументом Residence и в нем поставить проверки типa isCastle, isFortress и т.п.? Ну и отправлять тот же ClanSiegeInfo при нажатии на кнопку у орка (делается в html`ке).
У меня до этого была просто функция реги, но я хочу реализовать окно реги, что бы можно было смотреть кто зарегался.
 
я поменял функции в этих двух файлах на функции из файлов исходников ссср.
То есть взял можно сказать эти два файла от туда и почти получилось но не показывает ВРЕМЯ
А ты думаешь, что этих двух файлов хватит? :DВ общем хз почему, но время осады у тебя равно нулю. Ищи промашку.
 
А ты думаешь, что этих двух файлов хватит? :DВ общем хз почему, но время осады у тебя равно нулю. Ищи промашку.
Ну вот по этому я и создал тему потому что все файлы в импорте проверил и ничего не нашел.
 
делаете уникальную сборку из кусочков других команд ? :D
 
Буду прям как Java Technology Server
 
делаете уникальную сборку из кусочков других команд ? :D
Нет, дело в том что сборка изначально была на фениксах(епилог) на которых была эта функция после сборку поднимали до хф и эту функцию убрали потом за исходники взялась команда лавео(епилог) но руки у них не дошли что бы нормально опустить хф до епилога.
 
Это далбанутым человеком надо быть
Я не долбанутый, а немного перепутал то что вставлял.
SuspiciousMerchantInstance.java
package npc.model.residences.fortress.peace;

import l2p.gameserver.dao.SiegeClanDAO;
import l2p.gameserver.data.xml.holder.EventHolder;
import l2p.gameserver.data.xml.holder.ResidenceHolder;
import l2p.gameserver.model.pledge.Clan;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.entity.events.EventType;
import l2p.gameserver.model.entity.events.impl.DominionSiegeRunnerEvent;
import l2p.gameserver.model.entity.events.impl.FortressSiegeEvent;
import l2p.gameserver.model.entity.events.impl.SiegeEvent;
import l2p.gameserver.model.entity.events.objects.SiegeClanObject;
import l2p.gameserver.model.entity.residence.Castle;
import l2p.gameserver.model.entity.residence.Fortress;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.pledge.Privilege;
import l2p.gameserver.serverpackets.components.SystemMsg;
import l2p.gameserver.serverpackets.NpcHtmlMessage;
import l2p.gameserver.serverpackets.SystemMessage;
import l2p.gameserver.templates.npc.NpcTemplate;
import l2p.gameserver.templates.item.ItemTemplate;

public class SuspiciousMerchantInstance extends NpcInstance
{
public SuspiciousMerchantInstance(int objectID, NpcTemplate template)
{
super(objectID, template);
}

@Override
public void onBypassFeedback(Player player, String command)
{
if(!canBypassCheck(player, this))
return;

else if(command.equalsIgnoreCase("showSiegeReg"))
showSiegeRegWindow(player);
else if(command.equalsIgnoreCase("showSiegeInfo"))
showSiegeInfoWindow(player);
else
super.onBypassFeedback(player, command);
}

@Override
public void showChatWindow(Player player, int val, Object... arg)
{
NpcHtmlMessage html = new NpcHtmlMessage(player, this);
Fortress fortress = getFortress();
if(fortress.getOwner() != null)
{
html.setFile("residence2/fortress/fortress_ordery001a.htm");
html.replace("%clan_name%", fortress.getOwner().getName());
}
else
html.setFile("residence2/fortress/fortress_ordery001.htm");

player.sendPacket(html);
}

public void showSiegeInfoWindow(Player player)
{
Fortress fortress = getFortress();
player.sendPacket(new CastleSiegeInfo(fortress, player));
}

public void showSiegeRegWindow(Player player)
{
Fortress fortress = getFortress();
player.sendPacket(new CastleSiegeAttackerList(fortress));
}
}
 
Назад
Сверху Снизу