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

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

Ответ
Опции темы
Непрочитано 06.06.2012, 11:57   #111
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от smeli Посмотреть сообщение
куда они загнали ети висуал ефекты раз убрали из чаринфо и усеринфо?

никто ещё неразобрался?
туда же, просто порядок изменили и формат немного
__________________
consulo.io - Consulo - multi-language IDE
VISTALL вне форума Ответить с цитированием
Непрочитано 08.06.2012, 13:59   #112
Олдфаг

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

вот хотел покапать чтоб выложили пакеты Таути....
чтоб поделились....

но вот подумал, а что я буду делать если выложат? пару дней поковыряю и всё.... финита ла комедия...

пускай останется хоть какая-то интрига
smeli вне форума Ответить с цитированием
Непрочитано 10.06.2012, 07:38   #113
Изгнанные

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от smeli Посмотреть сообщение
вот хотел покапать чтоб выложили пакеты Таути....
чтоб поделились....

но вот подумал, а что я буду делать если выложат? пару дней поковыряю и всё.... финита ла комедия...

пускай останется хоть какая-то интрига
смели чиркани в аську(393190800), есть интересная вещь для тебя.
Darvin вне форума Отправить сообщение для Darvin с помощью ICQ Отправить сообщение для Darvin с помощью Skype™ Ответить с цитированием
Непрочитано 27.06.2012, 13:49   #114
Изгнанные

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

Делаю оог бота для Таути, если кто может, поделитесь пожалуйста алгоритмом формирования таблицы для сиид или хотя бы какая там идет константа.
Be3geBJIa3 вне форума Отправить сообщение для Be3geBJIa3 с помощью ICQ Отправить сообщение для Be3geBJIa3 с помощью Skype™ Ответить с цитированием
Непрочитано 28.06.2012, 03:33   #115
Аватар для apocalipce
Пользователь

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от VISTALL Посмотреть сообщение
туда же, просто порядок изменили и формат немного
ладно .. Потом кто-то нарушает изменения? Таким образом, работает, но цвет ника черный, бар прыгает и символ Ф всегда в движении!
кто-то умный может поделиться?

Код:
 * @version $Revision: 1.7.2.6.2.11 $ $Date: 2005/04/11 10:05:54 $
 */
public class CharInfo extends L2GameServerPacket
{
	private static final Logger _log = Logger.getLogger(CharInfo.class.getName());
	
	private static final String _S__03_CHARINFO = "[S] 31 CharInfo";
	private L2PcInstance _activeChar;
	private Inventory _inv;
	private int _objId;
	private int _x, _y, _z, _heading;
	private int _mAtkSpd, _pAtkSpd;
	
	/**
	 * Run speed, swimming run speed and flying run speed
	 */
	private int _runSpd;
	/**
	 * Walking speed, swimming walking speed and flying walking speed
	 */
	private int _walkSpd;
	private float _moveMultiplier, _attackSpeedMultiplier;
	//private int _territoryId;
	//private boolean _isDisguised;
	
	private int _vehicleId, _airShipHelm;
	
	/**
	 * @param cha
	 */
	public CharInfo(L2PcInstance cha)
	{
		_activeChar = cha;
		_objId = cha.getObjectId();
		_inv = cha.getInventory();
		if (_activeChar.getVehicle() != null && _activeChar.getInVehiclePosition() != null)
		{
			_x = _activeChar.getInVehiclePosition().getX();
			_y = _activeChar.getInVehiclePosition().getY();
			_z = _activeChar.getInVehiclePosition().getZ();
			_vehicleId = _activeChar.getVehicle().getObjectId();
			if (_activeChar.isInAirShip() && _activeChar.getAirShip().isCaptain(_activeChar))
				_airShipHelm = _activeChar.getAirShip().getHelmItemId();
			else
				_airShipHelm = 0;
		}
		else
		{
			_x = _activeChar.getX();
			_y = _activeChar.getY();
			_z = _activeChar.getZ();
			_vehicleId = 0;
			_airShipHelm = 0;
		}
		_heading = _activeChar.getHeading();
		_mAtkSpd = _activeChar.getMAtkSpd();
		_pAtkSpd = _activeChar.getPAtkSpd();
		_moveMultiplier  = _activeChar.getMovementSpeedMultiplier();
		_attackSpeedMultiplier = _activeChar.getAttackSpeedMultiplier();
		_runSpd = (int)(_activeChar.getRunSpeed()/_moveMultiplier);
		_walkSpd = (int)(_activeChar.getWalkSpeed()/_moveMultiplier);
		_invisible = cha.getAppearance().getInvisible();
		//_territoryId = TerritoryWarManager.getInstance().getRegisteredTerritoryId(cha);
		//_isDisguised = TerritoryWarManager.getInstance().isDisguised(cha.getObjectId());
	}
	
	public CharInfo(L2Decoy decoy)
	{
		this(decoy.getActingPlayer()); // init
		_vehicleId = 0;
		_airShipHelm = 0;
		_objId = decoy.getObjectId();
		_x = decoy.getX();
		_y = decoy.getY();
		_z = decoy.getZ();
		_heading = decoy.getHeading();
	}

	@Override
	protected final void writeImpl()
	{
		boolean gmSeeInvis = false;
		
		if (_invisible)
		{
			L2PcInstance tmp = getClient().getActiveChar();
			if (tmp != null && tmp.isGM())
				gmSeeInvis = true;
		}
		
		if (_activeChar.getPoly().isMorphed())
		{
			L2NpcTemplate template = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());
			
			if (template != null)
			{
				writeC(0x0c);
				writeD(_objId);
				writeD(_activeChar.getPoly().getPolyId()+1000000);  // npctype id
				writeD(_activeChar.getReputation() < 0 ? 1 : 0);
				writeD(_x);
				writeD(_y);
				writeD(_z);
				writeD(_heading);
				writeD(0x00);
				writeD(_mAtkSpd);
				writeD(_pAtkSpd);
				writeD(_runSpd); // TODO: the order of the speeds should be confirmed
				writeD(_walkSpd);
				writeD(_runSpd); // swim run speed
				writeD(_walkSpd); // swim walk speed
				writeD(_runSpd); // fly run speed
				writeD(_walkSpd); // fly walk speed
				writeD(_runSpd); // fly run speed ?
				writeD(_walkSpd); // fly walk speed ?
				writeF(_moveMultiplier);
				writeF(_attackSpeedMultiplier);
				writeF(template.fCollisionRadius);
				writeF(template.fCollisionHeight);
				writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); // right hand weapon
				writeD(0);
				writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); // left hand weapon
				writeC(1);	// name above char 1=true ... ??
				writeC(_activeChar.isRunning() ? 1 : 0);
				writeC(_activeChar.isInCombat() ? 1 : 0);
				writeC(_activeChar.isAlikeDead() ? 1 : 0);
				
				if (gmSeeInvis)
				{
					writeC(0);
				}
				else
				{
					writeC(_invisible? 1 : 0); // invisible ?? 0=false  1=true   2=summoned (only works if model has a summon animation)
				}
				
				writeS(_activeChar.getAppearance().getVisibleName());
				
				if (gmSeeInvis)
				{
					writeS("Invisible");
				}
				else
				{
					writeS(_activeChar.getAppearance().getVisibleTitle());
				}
				
				writeD(0);
				writeD(0);
				writeD(0000);  // hmm karma ??
				
				if (gmSeeInvis)
				{
					writeD( (_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask()) );
				}
				else
				{
					writeD(_activeChar.getAbnormalEffect());  // C2
				}
				
				writeD(_activeChar.getClanId()); //clan id
				writeD(_activeChar.getClanCrestId()); //crest id
				writeD(0);  // C2
				writeD(0);  // C2
				writeC(0);  // C2
				writeC(0x00);  // C3  team circle 1-blue, 2-red
				writeF(template.fCollisionRadius);
				writeF(template.fCollisionHeight);
				writeD(0x00);  // C4
				writeD(0x00);  // C6
				writeD(0x00);
				writeD(0x00);
				writeC(0x01);
				writeC(0x01);
				writeD(0x00);
			}
			else
			{
				_log.warning("Character "+_activeChar.getName()+" ("+_activeChar.getObjectId()+") morphed in a Npc ("+_activeChar.getPoly().getPolyId()+") w/o template.");
			}
		}
		else
		{
			writeC(0x31);
			writeD(_x);
			writeD(_y);
			writeD(_z);
			writeD(_vehicleId);
			writeD(_objId);
			writeS(_activeChar.getAppearance().getVisibleName());
			writeD(_activeChar.getRace().ordinal());
			writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
			
			if (_activeChar.getClassIndex() == 0)
				writeD(_activeChar.getClassId().getId());
			else
				writeD(_activeChar.getBaseClass());
			
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
			if (_airShipHelm == 0)
			{
				writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
				writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
			}
			else
			{
				writeD(_airShipHelm);
				writeD(0);
			}
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CLOAK));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
			// T1 new d's
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
			writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BELT));
			// end of t1 new d's
			
			// c6 new h's
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
			if (_airShipHelm == 0)
			{
				writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
				writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
			}
			else
			{
				writeD(0);
				writeD(0);
			}
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_GLOVES));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_CHEST));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LEGS));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_FEET));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_CLOAK));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR2));
			// T1 new h's
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RBRACELET));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LBRACELET));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO1));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO2));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO3));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO4));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO5));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO6));
			writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_BELT));
			
			writeD(0x00);
			writeD(0x01);
			// end of t1 new h's
			
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			
			writeD(_activeChar.getPvpFlag());
			writeD(_activeChar.getReputation());
			
			writeD(0x00); //??? 
		 writeD(0x00); //??? 
		 writeD(0x00); //??? 
		// writeD(mevasion);
		// writeD(maccuracy);
		 //writeD(mCritRate);
		 		                         
		 writeD(0x00); //??? 
		 writeD(0x00); //Harmony NEW 
		 writeD(0x00); //Harmony NEW 
		 writeD(0x00); //Harmony NEW 
		 writeD(0x00); //Harmony NEW 
		 writeD(0x00); //Harmony NEW 
		 writeD(0x00); //Harmony NEW 
			
			writeD(_mAtkSpd);
			writeD(_pAtkSpd);
			
			writeD(0x00);
			
			writeD(_runSpd); // TODO: the order of the speeds should be confirmed
			writeD(_walkSpd);
			writeD(_runSpd); // swim run speed
			writeD(_walkSpd); // swim walk speed
			writeD(_runSpd); // fly run speed
			writeD(_walkSpd); // fly walk speed
			writeD(_runSpd); // fly run speed ?
			writeD(_walkSpd); // fly walk speed ?
			writeF(_activeChar.getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier()
			writeF(_activeChar.getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier()
			
			if (_activeChar.getMountType() != 0)
			{
				writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).fCollisionRadius);
				writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).fCollisionHeight);
			}
			else if (_activeChar.getTransformation() != null)
			{
				writeF(_activeChar.getTransformation().getCollisionRadius());
				writeF(_activeChar.getTransformation().getCollisionHeight());
			}
			else
			{
				writeF(_activeChar.getCollisionRadius());
				writeF(_activeChar.getCollisionHeight());
			}
			
			writeD(_activeChar.getAppearance().getHairStyle());
			writeD(_activeChar.getAppearance().getHairColor());
			writeD(_activeChar.getAppearance().getFace());
			
			if (gmSeeInvis)
			{
				writeS("Invisible");
			}
			else
			{
				writeS(_activeChar.getAppearance().getVisibleTitle());
			}
			
			if (!_activeChar.isCursedWeaponEquipped())
			{
				writeD(_activeChar.getClanId());
				writeD(_activeChar.getClanCrestId());
				writeD(_activeChar.getAllyId());
				writeD(_activeChar.getAllyCrestId());
			}
			else
			{
				writeD(0);
				writeD(0);
				writeD(0);
				writeD(0);
			}
			
			writeC(_activeChar.isSitting() ? 0 : 1);	// standing = 1  sitting = 0
			writeC(_activeChar.isRunning() ? 1 : 0);	// running = 1   walking = 0
			writeC(_activeChar.isInCombat() ? 1 : 0);
			
			if (_activeChar.isInOlympiadMode())
				writeC(0);
			else
				writeC(_activeChar.isAlikeDead() ? 1 : 0);
			
			if (gmSeeInvis)
			{
				writeC(0);
			}
			else
			{
				writeC(_invisible ? 1 : 0);	// invisible = 1  visible =0
			}
			
			writeC(_activeChar.getMountType());	// 1-on Strider, 2-on Wyvern, 3-on Great Wolf, 0-no mount
			writeC(_activeChar.getPrivateStoreType());   //  1 - sellshop
			
			writeH(_activeChar.getCubics().size());
			for (int id : _activeChar.getCubics().keys())
				writeH(id);
			
			writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0);
			
			if (gmSeeInvis)
			{
				writeD( (_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask()) );
			}
			else
			{
				writeD(_activeChar.getAbnormalEffect());
			}
			
			writeC(_activeChar.isFlyingMounted() ? 2 : 0);
			
			writeH(_activeChar.getRecomHave()); //Blue value for name (0 = white, 255 = pure blue)
			writeD(_activeChar.getMountNpcId() + 1000000);
			writeD(_activeChar.getClassId().getId());
			writeD(0x00); //?
			writeC(_activeChar.isMounted() || _airShipHelm != 0 ? 0 : _activeChar.getEnchantEffect());
			
			if(_activeChar.getTeam()==1)
				writeC(0x01); //team circle around feet 1= Blue, 2 = red
			else if(_activeChar.getTeam()==2)
				writeC(0x02); //team circle around feet 1= Blue, 2 = red
			else
				writeC(0x00); //team circle around feet 1= Blue, 2 = red
			
			writeD(_activeChar.getClanCrestLargeId());
			writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
			writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
			
			writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
			writeD(_activeChar.getFishx());
			writeD(_activeChar.getFishy());
			writeD(_activeChar.getFishz());
			
			writeD(_activeChar.getAppearance().getNameColor());
			
			writeD(_heading);
			
			writeD(_activeChar.getPledgeClass());
			writeD(_activeChar.getPledgeType());
			
			writeD(_activeChar.getAppearance().getTitleColor());
			
			if (_activeChar.isCursedWeaponEquipped())
				writeD(CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()));
			else
				writeD(0x00);
			
			if (_activeChar.getClanId() > 0)
				writeD(_activeChar.getClan().getReputationScore());
			else
				writeD(0x00);
			
			// T1
			writeD(_activeChar.getTransformationId());
			writeD(_activeChar.getAgathionId());
			
			// T2
			writeD(0x01);
			
			// T2.3
			writeD(_activeChar.getSpecialEffect());
			writeD(0x00);
			writeD(0x00);
			writeD((int)_activeChar.getCurrentMp());	// Current MP ???
			writeD(_activeChar.getMaxMp());				// Max MP ???
			writeD((int)_activeChar.getCurrentHp());	// Current HP
			writeD(_activeChar.getMaxHp());				// Max HP
			writeD((int)_activeChar.getCurrentCp());	// Current CP ???
			writeD(_activeChar.getMaxCp());				// Max CP ??
			writeC(0x00);
		}
	}

	/* (non-Javadoc)
	 * @see ToDGames.gameserver.serverpackets.ServerBasePacket#getType()
	 */
	@Override
	public String getType()
	{
		return _S__03_CHARINFO;
	}
}
apocalipce вне форума Ответить с цитированием
Непрочитано 28.06.2012, 07:34   #116
Олдфаг

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

прочитайте сперва пост етот ещё раз
найдите там заветное слово "убрали"

и попробуйте сперва убрать, просто убрать и болше ничего
smeli вне форума Ответить с цитированием
Непрочитано 28.06.2012, 09:09   #117
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от apocalipce Посмотреть сообщение
ладно .. Потом кто-то нарушает изменения? Таким образом, работает, но цвет ника черный, бар прыгает и символ Ф всегда в движении!
кто-то умный может поделиться?
нифига непонял
__________________
consulo.io - Consulo - multi-language IDE
VISTALL вне форума Ответить с цитированием
Непрочитано 28.06.2012, 09:35   #118
Олдфаг

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от VISTALL Посмотреть сообщение
нифига непонял
да, понять на грани невозможного но из пакета видно где беда
smeli вне форума Ответить с цитированием
Непрочитано 29.06.2012, 00:02   #119
Аватар для apocalipce
Пользователь

По умолчанию Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от smeli Посмотреть сообщение
да, понять на грани невозможного но из пакета видно где беда


Мне нужна помощь, чтобы исправить charinfo

Извините за переводчик! Я из Польши

Я следить за работой всех здесь, smeli, VISTALL, Дарвин. Можно было бы разделить структуру нового пакета?

Cya
apocalipce вне форума Ответить с цитированием
Непрочитано 29.06.2012, 01:34   #120
Аватар для VISTALL
Illussion is real

Автор темы (Топик Стартер) Re: Работа над Goddess of Destruction Tauti (корея)

Цитата:
Сообщение от apocalipce Посмотреть сообщение
Мне нужна помощь, чтобы исправить charinfo

Извините за переводчик! Я из Польши

Я следить за работой всех здесь, smeli, VISTALL, Дарвин. Можно было бы разделить структуру нового пакета?

Cya
что бы понять новый пакет - нужны навыки
__________________
consulo.io - Consulo - multi-language IDE
VISTALL вне форума Ответить с цитированием
Ответ

Метки
геодата бункера, молодая картоха


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа над Goddess of Destruction (part 5) Ozzy Lineage II 980 09.10.2013 09:13
Работа над Goddess of Destruction (part 4) Ozzy Lineage II 494 20.12.2011 11:29
Работа над Goddess of Destruction (part 3) Ozzy Lineage II 442 28.09.2011 03:39
Работа над 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
Текущее время: 20:41. Часовой пояс GMT +3.

Вверх