Работа над Goddess of Destruction (part 3) - Страница 3 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Закрытая тема
Опции темы
Непрочитано 25.06.2011, 17:24   #21
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

Может кто нить дать пакет CharSelectionInfo просто искал в двух предыдущих темах его не было =(
Agent50 вне форума
Непрочитано 25.06.2011, 17:29   #22
Аватар для Ultimate
Герой

По умолчанию Re: Работа над Godess of Destruction (part 3)

Agent50 на чьих исходах делаешь? Если фени, пиши в пм поделюсь)

Ну что не осталось "благородных", кто бы смог подтянуть, что я не так делаю, мир не грузится, выдает типа packet e1 IN_GAME
__________________
Если помог, ткни плюсеГ, это же так просто
Ultimate вне форума Отправить сообщение для Ultimate с помощью ICQ
Сказали спасибо:
Непрочитано 25.06.2011, 23:21   #23
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

От лыжи стандарный HF пакет подходит.
Paka вне форума
Непрочитано 25.06.2011, 23:36   #24
Аватар для Ultimate
Герой

По умолчанию Re: Работа над Godess of Destruction (part 3)

Цитата:
Сообщение от Paka Посмотреть сообщение
От лыжи стандарный HF пакет подходит.
какой пакет, к чему подходит, к кому относится
__________________
Если помог, ткни плюсеГ, это же так просто
Ultimate вне форума Отправить сообщение для Ultimate с помощью ICQ
Непрочитано 26.06.2011, 05:28   #25
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

есть у кого папка систем с протоколом 393,выложите пож если есть,ато я пробовал убить гг вроде убил,и пропатчил,но при смене ип в l2.ini л2 не запускается.
vigorian вне форума
Непрочитано 26.06.2011, 07:27   #26
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

Цитата:
Сообщение от Ultimate Посмотреть сообщение
какой пакет, к чему подходит, к кому относится
Я для Agent50 написал.
Paka вне форума
Непрочитано 26.06.2011, 12:02   #27
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

Ultimate,

CharacterSelectionInfo

Код:
package l2p.gameserver.serverpackets;

import l2p.Config;
import l2p.database.DatabaseUtils;
import l2p.database.FiltredPreparedStatement;
import l2p.database.L2DatabaseFactory;
import l2p.database.ThreadConnection;
import l2p.gameserver.instancemanager.PlayerManager;
import l2p.gameserver.model.CharSelectInfoPackage;
import l2p.gameserver.model.base.Experience;
import l2p.gameserver.model.items.Inventory;
import l2p.gameserver.tables.CharTemplateTable;
import l2p.gameserver.templates.L2PlayerTemplate;
import l2p.util.AutoBan;
import l2p.util.GArray;

import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;

public class CharacterSelectionInfo extends L2GameServerPacket
{
	// d (SdSddddddddddffdQdddddddddddddddddddddddddddddddddddddddffdddchhd)
	private static Logger _log = Logger.getLogger(CharacterSelectionInfo.class.getName());
	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()); 
            if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId()) 
                writeD(charInfoPackage.getClassId()); 
            else 
                writeD(charInfoPackage.getBaseClassId()); 
            writeD(0x01); // active ?? 
            writeD(charInfoPackage.getX()); // x 
            writeD(charInfoPackage.getY()); // y 
            writeD(charInfoPackage.getZ()); // z 
            writeF(charInfoPackage.getCurrentHp()); // hp cur 
            writeF(charInfoPackage.getCurrentMp()); // mp cur 
            writeD(charInfoPackage.getSp()); 
            writeQ(charInfoPackage.getExp()); 
            writeF((float)(charInfoPackage.getExp() - Experience.LEVEL[charInfoPackage.getLevel()]) / (Experience.LEVEL[charInfoPackage.getLevel() + 1] - Experience.LEVEL[charInfoPackage.getLevel()])); // High Five exp % 
            writeD(charInfoPackage.getLevel()); 
            writeD(charInfoPackage.getKarma()); // karma 
            writeD(charInfoPackage.getPk()); 
            writeD(charInfoPackage.getPvP()); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(0x00); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
            writeD(0x00);
            // writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CLOAK)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); 
            writeD(0x00);
            //writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO1)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO2)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO3)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO4)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO5)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO6)); 
            writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BELT)); 
            writeD(charInfoPackage.getHairStyle()); 
            writeD(charInfoPackage.getHairColor()); 
            writeD(charInfoPackage.getFace()); 
            writeF(charInfoPackage.getMaxHp()); // hp max 
            writeF(charInfoPackage.getMaxMp()); // mp max 
            long deleteTime = charInfoPackage.getDeleteTimer(); 
            int deletedays = 0; 
            if (deleteTime > 0) 
                deletedays = (int)((deleteTime-System.currentTimeMillis())/1000); 
            writeD(deletedays); // days left before 
            // delete .. if != 0 
            // then char is inactive 
            writeD(charInfoPackage.getClassId()); 
            if (i == _sessionId) 
                writeD(0x01); 
            else 
                writeD(0x00); //c3 auto-select char 
             
            writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect()); 
            writeH(0); 
            writeH(0); 
            //writeD(charInfoPackage.getAugmentationId()); 

             
            //writeD(charInfoPackage.getTransformId()); // Used to display Transformations 
            writeD(0x00); // Currently on retail when you are on character select you don't see your transformation. 
             
            // Freya by Vistall: 
            writeD(0); // npdid - 16024    Tame Tiny Baby Kookaburra        A9E89C 
            writeD(0); // level 
            writeD(0); // ? 
            writeD(0); // food? - 1200 
            writeF(0); // max Hp 
            writeF(0); // cur Hp 
             
            // High Five by Vistall: 
            writeD(charInfoPackage.getVitalityPoints());    // H5 Vitality
		}
	}

	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;
	}
}
L2GamePacketHandler

Код:
case AUTHED:
				switch(id)
				{
					case 0x00:
						msg = new Logout();
						break;
					case 0x0c:
						msg = new CharacterCreate(); //RequestCharacterCreate();
						break;
					case 0x0d:
						msg = new CharacterDelete(); //RequestCharacterDelete();
						break;
					case 0x12:
						msg = new CharacterSelected(); //CharacterSelect();
						break;
					case 0x13:
						msg = new NewCharacter(); //RequestNewCharacter();
						break;
					case 0x7b:
						msg = new CharacterRestore(); //RequestCharacterRestore();
						break;
					case 0xcb:
						msg = new ReplyGameGuardQuery();
						break;
					case 0xd0:
				        msg = new RequestCharacterNameCreatable(); //RequestCharacterNameCreatable();
						if(data.remaining() < 2)
						{
							handleIncompletePacket(client);
							break;
						}
						int id3 = data.getShort() & 0xffff;
						if(id3 == 0x36)
						{
							msg = new GotoLobby();
							msg = new RequestCharacterNameCreatable(); //RequestCharacterNameCreatable();
						}
						break;
					default:
						//_log.severe("Unknown packet on state: AUTHED, id: " + Integer.toHexString(id));
						break;
				}
				break;
Wormza вне форума
Сказали спасибо:
Непрочитано 27.06.2011, 07:14   #28
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

выложите плиз папку систем новую,протокола 393
vigorian вне форума
Непрочитано 27.06.2011, 08:23   #29
Аватар для Ultimate
Герой

По умолчанию Re: Работа над Godess of Destruction (part 3)

Цитата:
Сообщение от vigorian Посмотреть сообщение
выложите плиз папку систем новую,протокола 393
если бы было все так просто...старый l2.exe пусть и от года не подходит...или я не так что делаю О_О
__________________
Если помог, ткни плюсеГ, это же так просто
Ultimate вне форума Отправить сообщение для Ultimate с помощью ICQ
Непрочитано 27.06.2011, 10:30   #30
Пользователь

По умолчанию Re: Работа над Godess of Destruction (part 3)

l2.bin всего лишь надо переименовать в l2.exe
Wormza вне форума
Закрытая тема

Метки
саркисян жжёт


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Goddess of Destruction AmigoZ Курилка / Yak floor 24 09.05.2012 01:44
Работа над Goddess of Destruction (part 4) Ozzy Lineage II 494 20.12.2011 11:29
Работа над Goddess of Destruction (part 2) Ozzy Lineage II 411 22.06.2011 15:58
Работа над Goddess of Destruction JaFo Lineage II 409 20.05.2011 01:48


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 09:48. Часовой пояс GMT +3.

Вверх