Перейти к содержанию
Авторизация  
ValiiLucifer

CharacterSelectionInfo ?

Рекомендуемые сообщения

Всем доброго времени суток !

 

Подскажите пожалуйста как убрать расу камаэль из создание персонажа,через ядро ?!

public class CharacterSelectionInfo extends L2GameServerPacket
{
	// d (SdSddddddddddffdQdddddddddddddddddddddddddddddddddddddddffdddchhd)

	private String _loginName;

	private int _sessionId;

	private CharSelectInfoPackage[] _characterPackages;

	public CharacterSelectionInfo(String loginName, int sessionId)
	{
		_sessionId = sessionId;
		_loginName = loginName;
		_characterPackages = loadCharacterSelectInfo(loginName);

		if(getClient() != null)
			getClient().setCharSelection(_characterPackages);
	}

	public CharSelectInfoPackage[] getCharInfo()
	{
		return _characterPackages;
	}

	@Override
	protected final void writeImpl()
	{
		int size = _characterPackages != null ? _characterPackages.length : 0;

		writeC(0x09);
		writeD(size);
		writeD(0x07); //Kamael, 0x07 ?
		writeC(0x00); //Kamael разрешает или запрещает создание игроков

		long lastAccess = 0L;
		int lastUsed = -1;
		for(int i = 0; i < size; i++)
			if(lastAccess < _characterPackages[i].getLastAccess())
			{
				lastAccess = _characterPackages[i].getLastAccess();
				lastUsed = i;
			}

		for(int i = 0; i < size; i++)
		{
			CharSelectInfoPackage charInfoPackage = _characterPackages[i];

			writeS(charInfoPackage.getName());
			writeD(charInfoPackage.getCharId()); // ?
			writeS(_loginName);
			writeD(_sessionId);
			writeD(charInfoPackage.getClanId());
			writeD(0x00); // ??

			writeD(charInfoPackage.getSex());
			writeD(charInfoPackage.getRace());
			writeD(charInfoPackage.getClassId());

			writeD(0x01); // active ??

			writeD(charInfoPackage.getX());
			writeD(charInfoPackage.getY());
			writeD(charInfoPackage.getZ());

			writeF(charInfoPackage.getCurrentHp());
			writeF(charInfoPackage.getCurrentMp());

			writeD(charInfoPackage.getSp());
			writeQ(charInfoPackage.getExp());
			writeD(charInfoPackage.getLevel());

			writeD(charInfoPackage.getKarma());
			writeD(charInfoPackage.getPk());
			writeD(charInfoPackage.getPvP());

			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);

			for(byte PAPERDOLL_ID : UserInfo.PAPERDOLL_ORDER)
				writeD(charInfoPackage.getPaperdollItemId(PAPERDOLL_ID));

			writeD(charInfoPackage.getHairStyle());
			writeD(charInfoPackage.getHairColor());
			writeD(charInfoPackage.getFace());

			writeF(charInfoPackage.getMaxHp()); // hp max
			writeF(charInfoPackage.getMaxMp()); // mp max

			writeD(charInfoPackage.getAccessLevel() > -100 ? charInfoPackage.getDeleteTimer() : -1);
			writeD(charInfoPackage.getClassId());
			writeD(i == lastUsed ? 1 : 0);

			writeC(Math.min(charInfoPackage.getEnchantEffect(), 127));
			writeD(0x00); // TODO AugmentationId
			writeD(0x00); // TODO TransformationId

            writeD(0x00); // npdid - 16024    Tame Tiny Baby Kookaburra        A9E89C
            writeD(0x00); // level
            writeD(0x00); // ?
            writeD(0x00); // food? - 1200
            writeF(0x00); // max Hp
            writeF(0x00); // cur Hp
		}
	}

	public static CharSelectInfoPackage[] loadCharacterSelectInfo(String loginName)
	{
		CharSelectInfoPackage charInfopackage;
		GArray<CharSelectInfoPackage> characterList = new GArray<CharSelectInfoPackage>();

		ThreadConnection con = null;
		FiltredPreparedStatement statement = null;
		ResultSet pl_rset = null;
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			statement = con.prepareStatement("SELECT * FROM characters AS c LEFT JOIN character_subclasses AS cs ON (c.obj_Id=cs.char_obj_id AND cs.isBase=1) WHERE account_name=? LIMIT 7");
			statement.setString(1, loginName);
			pl_rset = statement.executeQuery();

			while(pl_rset.next()) // fills the package
			{
				charInfopackage = restoreChar(pl_rset, pl_rset);
				if(charInfopackage != null)
					characterList.add(charInfopackage);
			}
		}
		catch(Exception e)
		{
			_log.log(Level.WARNING, "could not restore charinfo:", e);
		}
		finally
		{
			DatabaseUtils.closeDatabaseCSR(con, statement, pl_rset);
		}

		return characterList.toArray(new CharSelectInfoPackage[characterList.size()]);
	}

	private static CharSelectInfoPackage restoreChar(ResultSet chardata, ResultSet charclass)
	{
		CharSelectInfoPackage charInfopackage = null;
		try
		{
			int objectId = chardata.getInt("obj_Id");
			int classid = charclass.getInt("class_id");
			boolean female = chardata.getInt("sex") == 1;
			L2PlayerTemplate templ = CharTemplateTable.getInstance().getTemplate(classid, female);
			if(templ == null)
			{
				_log.log(Level.WARNING, "restoreChar fail | templ == null | objectId: " + objectId + " | classid: " + classid + " | female: " + female);
				return null;
			}
			String name = chardata.getString("char_name");
			charInfopackage = new CharSelectInfoPackage(objectId, name);
			charInfopackage.setLevel(charclass.getInt("level"));
			charInfopackage.setMaxHp(charclass.getInt("maxHp"));
			charInfopackage.setCurrentHp(charclass.getDouble("curHp"));
			charInfopackage.setMaxMp(charclass.getInt("maxMp"));
			charInfopackage.setCurrentMp(charclass.getDouble("curMp"));

			charInfopackage.setX(chardata.getInt("x"));
			charInfopackage.setY(chardata.getInt("y"));
			charInfopackage.setZ(chardata.getInt("z"));
			charInfopackage.setPk(chardata.getInt("pkkills"));
			charInfopackage.setPvP(chardata.getInt("pvpkills"));

			charInfopackage.setFace(chardata.getInt("face"));
			charInfopackage.setHairStyle(chardata.getInt("hairstyle"));
			charInfopackage.setHairColor(chardata.getInt("haircolor"));
			charInfopackage.setSex(female ? 1 : 0);

			charInfopackage.setExp(charclass.getLong("exp"));
			charInfopackage.setSp(charclass.getInt("sp"));
			charInfopackage.setClanId(chardata.getInt("clanid"));

			charInfopackage.setKarma(chardata.getInt("karma"));
			charInfopackage.setRace(templ.race.ordinal());
			charInfopackage.setClassId(classid);
			long deletetime = chardata.getLong("deletetime");
			int deletedays = 0;
			if(Config.DELETE_DAYS > 0)
				if(deletetime > 0)
				{
					deletetime = (int) (System.currentTimeMillis() / 1000 - deletetime);
					deletedays = (int) (deletetime / 3600 / 24);
					if(deletedays >= Config.DELETE_DAYS)
					{
						PlayerManager.deleteFromClan(objectId, charInfopackage.getClanId());
						PlayerManager.deleteCharByObjId(objectId);
						return null;
					}
					deletetime = Config.DELETE_DAYS * 3600 * 24 - deletetime;
				}
				else
					deletetime = 0;
			charInfopackage.setDeleteTimer((int) deletetime);
			charInfopackage.setLastAccess(chardata.getLong("lastAccess") * 1000L);
			charInfopackage.setAccessLevel(chardata.getInt("accesslevel"));

			if(charInfopackage.getAccessLevel() < 0 && !AutoBan.isBanned(objectId))
				charInfopackage.setAccessLevel(0);
		}
		catch(Exception e)
		{
			_log.log(Level.INFO, "", e);
		}

		return charInfopackage;
	}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CharacterCreate вставляем проверку на расу, если раса пернатых шлём в лес, из клиента interface.xdat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CharacterCreate вставляем проверку на расу, если раса пернатых шлём в лес, из клиента interface.xdat

Можешь по точнее подсказать ?!

public class CharacterCreate extends L2GameClientPacket
{
	// cSdddddddddddd
	private String _name;
	private int _sex;
	private int _classId;
	private int _hairStyle;
	private int _hairColor;
	private int _face;

	@Override
	public void readImpl()
	{
		_name = readS();
		readD(); // race
		_sex = readD();
		_classId = readD();
		readD(); // int
		readD(); // str
		readD(); // con
		readD(); // men
		readD(); // dex
		readD(); // wit
		_hairStyle = readD();
		_hairColor = readD();
		_face = readD();
	}

	@Override
	public void runImpl()
	{
		for(ClassId cid : ClassId.values())
			if(cid.getId() == _classId && cid.getLevel() != 1)
				return;
		if(CharNameTable.getInstance().accountCharNumber(getClient().getLoginName()) >= 
		{
			sendPacket(Msg.CharacterCreateFail_REASON_TOO_MANY_CHARACTERS);
			return;
		}
		if(!Util.isMatchingRegexp(_name, Config.CNAME_TEMPLATE))
		{
			sendPacket(Msg.CharacterCreateFail_REASON_16_ENG_CHARS);
			return;
		}
		else if(CharNameTable.getInstance().doesCharNameExist(_name))
		{
			sendPacket(Msg.CharacterCreateFail_REASON_NAME_ALREADY_EXISTS);
			return;
		}

		L2Player newChar = L2Player.create(_classId, (byte) _sex, getClient().getLoginName(), _name, (byte) _hairStyle, (byte) _hairColor, (byte) _face);
		if(newChar == null)
			return;
		newChar.setConnected(false);

		sendPacket(Msg.CharacterCreateSuccess);

		initNewChar(getClient(), newChar);
	}

	private void initNewChar(L2GameClient client, L2Player newChar)
	{
		L2PlayerTemplate template = newChar.getTemplate();

		L2Player.restoreCharSubClasses(newChar);

		if(Config.STARTING_ADENA > 0)
			newChar.addAdena(Config.STARTING_ADENA);

        if(ConfigSystem.getInt("StartingItem") > 0)
        {
            ItemTemplates itemTable = ItemTemplates.getInstance();
            L2ItemInstance item = itemTable.createItem(ConfigSystem.getInt("StartingItem"));
            item.setCount(ConfigSystem.getInt("StartingItemCount"));
            newChar.getInventory().addItem(item);
        }

		newChar.setXYZInvisible(template.spawnLoc);

		if(Config.CHAR_TITLE)
			newChar.setTitle(Config.ADD_CHAR_TITLE);
		else
			newChar.setTitle("");

		ItemTemplates itemTable = ItemTemplates.getInstance();
		for(L2Item i : template.getItems())
		{
			L2ItemInstance item = itemTable.createItem(i.getItemId());
			newChar.getInventory().addItem(item);

			if(item.getItemId() == 5588) // tutorial book
				newChar.registerShortCut(new L2ShortCut(11, 0, L2ShortCut.TYPE_ITEM, item.getObjectId(), -1));

			if(item.isEquipable() && (newChar.getActiveWeaponItem() == null || item.getItem().getType2() != L2Item.TYPE2_WEAPON))
				newChar.getInventory().equipItem(item, false);
		}

		// Scroll of Escape: Kamael Village
		L2ItemInstance item = itemTable.createItem(9716);
		item.setCount(10);
		newChar.getInventory().addItem(item);

		// Adventurer's Scroll of Escape
		item = itemTable.createItem(10650);
		item.setCount(5);
		newChar.getInventory().addItem(item);

		for(L2SkillLearn skill : SkillTreeTable.getInstance().getAvailableSkills(newChar, newChar.getClassId()))
			newChar.addSkill(SkillTable.getInstance().getInfo(skill.id, skill.skillLevel), true);

		if(newChar.getSkillLevel(1001) > 0) // Soul Cry
			newChar.registerShortCut(new L2ShortCut(1, 0, L2ShortCut.TYPE_SKILL, 1001, 1));
		if(newChar.getSkillLevel(1177) > 0) // Wind Strike
			newChar.registerShortCut(new L2ShortCut(1, 0, L2ShortCut.TYPE_SKILL, 1177, 1));
		if(newChar.getSkillLevel(1216) > 0) // Self Heal
			newChar.registerShortCut(new L2ShortCut(2, 0, L2ShortCut.TYPE_SKILL, 1216, 1));

		// add attack, take, sit shortcut
		newChar.registerShortCut(new L2ShortCut(0, 0, L2ShortCut.TYPE_ACTION, 2, -1));
		newChar.registerShortCut(new L2ShortCut(3, 0, L2ShortCut.TYPE_ACTION, 5, -1));
		newChar.registerShortCut(new L2ShortCut(10, 0, L2ShortCut.TYPE_ACTION, 0, -1));

		startTutorialQuest(newChar);

		newChar.setCurrentHpMp(newChar.getMaxHp(), newChar.getMaxMp());

		PlayerManager.saveCharToDisk(newChar);
		newChar.deleteMe(); // release the world of this character and it's inventory

		client.setCharSelection(CharacterSelectionInfo.loadCharacterSelectInfo(client.getLoginName()));
	}

	public static void startTutorialQuest(L2Player player)
	{
		Quest q = QuestManager.getQuest(255);
		if(q != null)
			q.newQuestState(player, Quest.CREATED);

	}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты



 

for(ClassId cid : ClassId.values())

if(cid.getId() == _classId && cid.getLevel() != 1 || cid.getRace() == Race.kamael)

return;

 

Изменено пользователем mrDuck
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 
for(ClassId cid : ClassId.values())
if(cid.getId() == _classId && cid.getLevel() != 1 || cid.getRace() == Race.kamael)
return;

 

Ошибку выдает при компли

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибку выдает при компли

какую? или мне в угадайку играть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какую? или мне в угадайку играть?

Извиняюсь !

 

compile:
    [javac] Compiling 1641 source files to D:\FP-Reborn\build\classes
    [javac] D:\FP-Reborn\java\fpr\gameserver\clientpackets\CharacterCreate.java:56: error: cannot find symbol
    [javac] if(cid.getId() == _classId && cid.getLevel() != 1 || cid.getRace() == Race.kamael)
    [javac]                                                                      ^
    [javac]   symbol:   variable Race
    [javac]   location: class CharacterCreate
    [javac] 1 error
 
BUILD FAILED
D:\FP-Reborn\build.xml:51: Compile failed; see the compiler error output for details.
 
Total time: 25 seconds

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Извиняюсь !

 

compile:
    [javac] Compiling 1641 source files to D:\FP-Reborn\build\classes
    [javac] D:\FP-Reborn\java\fpr\gameserver\clientpackets\CharacterCreate.java:56: error: cannot find symbol
    [javac] if(cid.getId() == _classId && cid.getLevel() != 1 || cid.getRace() == Race.kamael)
    [javac]                                                                      ^
    [javac]   symbol:   variable Race
    [javac]   location: class CharacterCreate
    [javac] 1 error
 
BUILD FAILED
D:\FP-Reborn\build.xml:51: Compile failed; see the compiler error output for details.
 
Total time: 25 seconds

 

а добавить импорт класса Race религия не позволяет?

 

 
import l2p.gameserver.model.base.Race; примерно такой ибо не знаю что у вас за сборка.
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за помощь ! Останется сам клиент уже отредактировать  

Изменено пользователем avangard

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

offtop dell

Изменено пользователем LifeGame32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...