Jump to content

Recommended Posts

Posted

I don't understand why my version of lineage 2 gracia final leaves I have the animation that freezes for pets and summons if I exceed 600 of Patkspeed on the client of the owner of the summon while the client of a character who look at the same summon at the same time see the animation

 

look video

https://youtu.be/DDzhxDodZZs

 

Thx for Help

Posted
2 hours ago, sacrifice said:

I don't understand why my version of lineage 2 gracia final leaves I have the animation that freezes for pets and summons if I exceed 600 of Patkspeed on the client of the owner of the summon while the client of a character who look at the same summon at the same time see the animation

 

look video

https://youtu.be/DDzhxDodZZs

 

Thx for Help

 

propably cant handle it by client

Posted (edited)

u can guess anything u want , like - some variable( of pet structure, like in packet) that is being handled by client from server  exceed its limit , if its int8 type for example.

But the truth is in reversing pet class structure constructor and its functions and understanding how the codelogic goes, better with debug !

Edited by LightFusionMain
Posted (edited)

you think it s in packet in the core java of server?

exemple in file of \l2jfree-core\src\main\java\com\l2jfree\gameserver\network?

 

and why the vision of owner summon is different vision no owner summon?

Edited by sacrifice
Posted (edited)
10 hours ago, sacrifice said:

you think it s in packet in the core java of server?

exemple in file of \l2jfree-core\src\main\java\com\l2jfree\gameserver\network?

 

and why the vision of owner summon is different vision no owner summon?

if u had read carefully(what i was telling in prev msg) u will understand why, owner doesn't need to receive information data( about pet attack ) on client, but player's surround him, must receive that info, 

on where exact its issuing i can only guess, to say how it rly is u must understand codeflow of both client( as i mentioned) and probably server .

 

Edited by LightFusionMain
Posted

huh )) i read your main post again, and what  i told is opposite to what u have, player's surround u are receiving correct info data, but u are not , so the sollution is opposite, problem is in pet class function that is used for attack, guessing what exact problem it is is useless, u rly must look in IDA ( dissamble it ) ,

Posted (edited)

Yes I think the player's surround see the pet summon like a NPC class, but the owner pet see the pet like a summon class

 

You think the problem is Client Side in dll ?

How search with IDA :( I do not master IDA

 

in which dll i should look?

Edited by sacrifice
Posted

obvsly Pet class resides in engine.dll but is called from Nwindow.dll , so u have to first decompile engine find pet class constructor ( by text/name, some referencies  ) then find it's function , referencies in engine.dll and nwindow.dll 

 

  • 4 weeks later...
Posted

The problem does not come from the client because I managed to test a summon on a L2OFF Gracia server and there is no animation problem On the other hand on L2JFree and L2J there is the problem

Posted

I have this file java in server side:AbstractNpcInfo.java

l2jfree-core\src\main\java\com\l2jfree\gameserver\network\packets\server

 

Who know if it s here I can fix bug?

 

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfree.gameserver.network.packets.server;

import com.l2jfree.Config;
import com.l2jfree.gameserver.datatables.CharTemplateTable;						// Tauphraen for Sacrifice : implantation NPC to PJ from Darki
import com.l2jfree.gameserver.gameobjects.L2Creature;
import com.l2jfree.gameserver.gameobjects.L2Npc;
import com.l2jfree.gameserver.gameobjects.L2Player;
import com.l2jfree.gameserver.gameobjects.L2Summon;
import com.l2jfree.gameserver.gameobjects.L2Trap;
import com.l2jfree.gameserver.gameobjects.instance.L2MonsterInstance;
import com.l2jfree.gameserver.gameobjects.itemcontainer.Inventory;
import com.l2jfree.gameserver.gameobjects.templates.L2NpcTemplate;
import com.l2jfree.gameserver.model.skills.effects.AbnormalEffect;
import com.l2jfree.gameserver.network.L2Client;
import com.l2jfree.gameserver.network.packets.L2ServerPacket;

public abstract class AbstractNpcInfo extends L2ServerPacket
{
	private static final String _S__22_NPCINFO = "[S] 0c NpcInfo";
	
	protected int _x, _y, _z, _heading;
	protected int _idTemplate;
	protected boolean _isSummoned;
	protected int _mAtkSpd, _pAtkSpd;
	
	/**
	 * Run speed, swimming run speed and flying run speed
	 */
	protected int _runSpd;
	
	/**
	 * Walking speed, swimming walking speed and flying walking speed
	 */
	protected int _walkSpd;
	
	protected int _rhand, _lhand, _chest;
	protected double _collisionHeight, _collisionRadius;
	protected String _name = "";
	protected String _title = "";
	
	public AbstractNpcInfo(L2Creature cha)
	{
		_isSummoned = cha.isShowSummonAnimation();
		_x = cha.getX();
		_y = cha.getY();
		_z = cha.getZ();
		_heading = cha.getHeading();
		_mAtkSpd = cha.getMAtkSpd();
		_pAtkSpd = cha.getPAtkSpd();
		_runSpd = cha.getTemplate().getBaseRunSpd();
		_walkSpd = cha.getTemplate().getBaseWalkSpd();
	}
	
	/* (non-Javadoc)
	 * @see com.l2jfree.gameserver.serverpackets.ServerBasePacket#getType()
	 */
	@Override
	public String getType()
	{
		return _S__22_NPCINFO;
	}

	// Panday for Sacrifice : NPC to PJ - Classe interne CustomNpcInfo
	public static class CustomNpcInfo extends AbstractNpcInfo
	{
		private final L2Npc _customNpc;
		
		public CustomNpcInfo(L2Npc cha)
		{
			super(cha);
			_customNpc = cha;
			_customNpc.setClientX(_customNpc.getPosition().getX());
			_customNpc.setClientY(_customNpc.getPosition().getY());
			_customNpc.setClientZ(_customNpc.getPosition().getZ());
		}
		
		@Override
		protected void writeImpl(L2Client client, L2Player activeChar)
		{
			// Aide : sources L2J, comprehension des octets du byte buffer
		
			writeC(0x31); //writeC(0x31);																					OK
			writeD(_customNpc.getX()); //writeD(_x);																		OK
			writeD(_customNpc.getY()); //writeD(_y);																		OK
			writeD(_customNpc.getZ()); //writeD(_z);																		OK
			writeD(_customNpc.getHeading()); //writeD(_heading);															OK
			writeD(_customNpc.getObjectId()); //writeD(_npc.getObjectId());													OK
			writeS(_customNpc.getCustomNpcInstance().getName()); //writeS(fpc.name);										OK
			writeD(_customNpc.getCustomNpcInstance().getRace()); //writeD(fpc.race);										OK
			writeD(_customNpc.getCustomNpcInstance().isFemaleSex()? 1 : 0); //writeD(fpc.sex);								OK
			writeD(_customNpc.getCustomNpcInstance().getClassId()); //writeD(fpc.clazz);									OK
			writeD(0); //writeD(fpc.pdHairall);																				TEST
			writeD(0); //writeD(fpc.pdHead);																				TEST
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_RHAND()); //writeD(fpc.pdRHand);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_LHAND()); //writeD(fpc.pdLHand);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_GLOVES()); //writeD(fpc.pdGloves);							OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_CHEST()); //writeD(fpc.pdChest);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_LEGS()); //writeD(fpc.pdLegs);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_FEET()); //writeD(fpc.pdFeet);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_BACK()); //writeD(fpc.pdBack);								TEST
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_RHAND()); //writeD(fpc.pdLRHand);							TEST
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_HAIR()); //writeD(fpc.pdHair);								OK
			writeD(_customNpc.getCustomNpcInstance().PAPERDOLL_HAIR2()); //writeD(fpc.pdHair2);								OK

			//write('D',0, 8);
			writeD(0); //writeD(fpc.pdRBracelet);																			TEST
			writeD(0); //writeD(fpc.pdLBracelet);																			TEST
			writeD(0); //writeD(fpc.pdDeco1);																				TEST
			writeD(0); //writeD(fpc.pdDeco2);																				TEST
			writeD(0); //writeD(fpc.pdDeco3);																				TEST
			writeD(0); //writeD(fpc.pdDeco4);																				TEST
			writeD(0); //writeD(fpc.pdDeco5);																				TEST
			writeD(0); //writeD(fpc.pdDeco6);																				TEST
			
			writeD(0x00); // Correctif L2J																					TEST
			
			writeD(0); //writeD(fpc.pdUnderAug);
			writeD(0); //writeD(fpc.pdHeadAug);
			writeD(0); //writeD(fpc.pdRHandAug);
			writeD(0); //writeD(fpc.pdLHandAug);
			writeD(0); //writeD(fpc.pdGlovesAug);
			writeD(0); //writeD(fpc.pdChestAug);
			writeD(0); //writeD(fpc.pdLegsAug);
			writeD(0); //writeD(fpc.pdFeetAug);
			writeD(0); //writeD(fpc.pdBackAug);
			writeD(0); //writeD(fpc.pdLRHandAug);
			writeD(0); //writeD(fpc.pdHairAug);
			writeD(0); //writeD(fpc.pdHair2Aug);
			
			writeD(0); //writeD(fpc.pdRBraceletAug);
			writeD(0); //writeD(fpc.pdLBraceletAug);
			writeD(0); //writeD(fpc.pdDeco1Aug);
			writeD(0); //writeD(fpc.pdDeco2Aug);
			writeD(0); //writeD(fpc.pdDeco3);
			writeD(0); //writeD(fpc.pdDeco4);
			writeD(0); //writeD(fpc.pdDeco5);
			writeD(0); //writeD(fpc.pdDeco6);
			
			writeD(0x00); // Correctif L2J																					TEST
			writeD(0x00); // Correctif L2J																					TEST
			writeD(0x00); // Correctif L2J																					TEST
			
			writeD(_customNpc.getCustomNpcInstance().getPvpFlag() ? 1 : 0); //writeD(fpc.pvpFlag);
			writeD(_customNpc.getCustomNpcInstance().getKarma()); //writeD(fpc.karma);

			writeD(_customNpc.getMAtkSpd()); //writeD(_mAtkSpd);
			writeD(_customNpc.getPAtkSpd()); //writeD(_pAtkSpd);
			
			writeD(_customNpc.getCustomNpcInstance().getPvpFlag() ? 1 : 0); //writeD(fpc.pvpFlag);
			writeD(_customNpc.getCustomNpcInstance().getKarma()); //writeD(fpc.karma);

			writeD(_customNpc.getRunSpeed()); //writeD(_runSpd);
			writeD(_customNpc.getRunSpeed()/2); //writeD(_walkSpd);
			writeD(_customNpc.getRunSpeed()/3); //writeD(50);  // swimspeed
			writeD(_customNpc.getRunSpeed()/3); //writeD(50);  // swimspeed
			writeD(_customNpc.getRunSpeed()); //writeD(_flRunSpd);
			writeD(_customNpc.getRunSpeed()); //writeD(_flWalkSpd);
			writeD(_customNpc.getRunSpeed()); //writeD(_flyRunSpd);
			writeD(_customNpc.getRunSpeed()); //writeD(_flyWalkSpd);
			writeF(_customNpc.getStat().getMovementSpeedMultiplier()); //writeF(_npc.getMovementSpeedMultiplier());
			writeF(_customNpc.getStat().getAttackSpeedMultiplier()); //writeF(_npc.getAttackSpeedMultiplier());

			writeF(CharTemplateTable.getInstance().getTemplate(_customNpc.getCustomNpcInstance().getClassId()).getCollisionRadius()); //writeF(pctmpl.collisionRadius);
			writeF(CharTemplateTable.getInstance().getTemplate(_customNpc.getCustomNpcInstance().getClassId()).getCollisionHeight()); //writeF(pctmpl.collisionHeight);
			
			writeD(_customNpc.getCustomNpcInstance().getHairStyle()); //writeD(fpc.hairStyle);
			writeD(_customNpc.getCustomNpcInstance().getHairColor()); //writeD(fpc.hairColor);
			writeD(_customNpc.getCustomNpcInstance().getFace()); //writeD(fpc.face);
			
			writeS(_customNpc.getCustomNpcInstance().getTitle()); //writeS(fpc.title);
			
			writeD(_customNpc.getCustomNpcInstance().getClanId()); //writeD(0x00);
			writeD(_customNpc.getCustomNpcInstance().getClanCrestId()); //writeD(0x00);
			writeD(_customNpc.getCustomNpcInstance().getAllyId()); //writeD(0x00);
			writeD(_customNpc.getCustomNpcInstance().getAllyCrestId()); //writeD(0x00);
			writeD(0); //writeD(0);
			writeC(_customNpc.getCustomNpcInstance().isSit() ? 0 : 1); //writeC(0x01);    // standing = 1  sitting = 0
			writeC(_customNpc.isRunning() ? 1 : 0); //writeC(_npc.isRunning() ? 1 : 0);    // running = 1   walking = 0
			writeC(_customNpc.isInCombat() ? 1 : 0); //writeC(_npc.isInCombat() ? 1 : 0);
			writeC(_customNpc.isAlikeDead() ? 1 : 0); //writeC(_npc.isAlikeDead() ? 1 : 0);
			
			//write('C',0, 3);
			writeC(0); //writeC(fpc.invisible); // invisible = 1  visible =0
			writeC(0); //writeC(fpc.mount); // 1 on strider   2 on wyvern  3 on Great Wolf  0 no mount
			writeC(0); //writeC(0x00);   //  1 - sellshop
			
			writeH(0); //writeH(0x00); // cubic count
			writeC(0); //writeC(0x00); // find party members
			writeD(_customNpc.getAbnormalEffect()); //writeD(0x00);
			writeC(0); //writeC(0x00);                       //Changed by Thorgrim
			writeH(0); //writeH(0x00); //Blue value for name (0 = white, 255 = pure blue)
			writeD(_customNpc.getCustomNpcInstance().getClassId()); //writeD(fpc.clazz);
			writeD(_customNpc.getMaxCp()); //writeD(0x00);//max cp
			writeD((int)_customNpc.getStatus().getCurrentCp()); //writeD(0x00);//cur cp
			writeC(_customNpc.getCustomNpcInstance().getEnchantWeapon()); //writeC(fpc.enchantEffect);
			writeC(0); //writeC(fpc.team);
			writeD(0); //writeD(0x00);
			writeC(_customNpc.getCustomNpcInstance().isNoble() ? 1 : 0); //writeC(0x00); // Symbol on char menu ctrl+I
			writeC(_customNpc.getCustomNpcInstance().isHero()  ? 1 : 0); //writeC(0x00); // Hero Aura
			writeC(0); //writeC(fpc.fishing); //0x01: Fishing Mode (Cant be undone by setting back to 0)

			//write('D',0, 3);
			writeD(0); //writeD(fpc.fishingX);
			writeD(0); //writeD(fpc.fishingY);
			writeD(0); //writeD(fpc.fishingZ);
			
			writeD(_customNpc.getCustomNpcInstance().nameColor()); //writeD(fpc.nameColor);
			writeD(0); //writeD(0x00); // isRunning() as in UserInfo?
			writeD(_customNpc.getCustomNpcInstance().getPledgeClass()); //writeD(0x00); // pledge class
			writeD(0); //writeD(0x00); // ??
			writeD(_customNpc.getCustomNpcInstance().titleColor()); //writeD(fpc.titleColor);
			writeD(_customNpc.getCustomNpcInstance().getCursedWeaponLevel()); //writeD(0x00); // cursed weapon level
			
			//write('D',0, 2);
			writeD(0); //writeD(0x00);
			writeD(0); //writeD(0x00); // transformation id
		}
		
		@Override
		public boolean canBeSentTo(L2Client client, L2Player activeChar)
		{
			if (!activeChar.canSee(_customNpc))
				return false;

			return true;
		}
	}
	// End code by Sacrifice

	/**
	 * Packet for Npcs
	 */
	public static class NpcInfo extends AbstractNpcInfo
	{
		private final L2Npc _npc;
		
		public NpcInfo(L2Npc cha)
		{
			super(cha);
			_npc = cha;
			_idTemplate = cha.getTemplate().getIdTemplate(); // On every subclass
			_rhand = cha.getRightHandItem(); // On every subclass
			_lhand = cha.getLeftHandItem(); // On every subclass
			_collisionHeight = cha.getCollisionHeight(); // On every subclass
			_collisionRadius = cha.getCollisionRadius(); // On every subclass
			
			if (cha.getTemplate().isServerSideName())
				_name = cha.getTemplate().getName(); // On every subclass
				
			if (cha.isChampion())
			{
				_title = Config.CHAMPION_TITLE; // On every subclass
			}
			else if (cha.getTemplate().isServerSideTitle())
			{
				_title = cha.getTemplate().getTitle(); // On every subclass
			}
			else
			{
				_title = cha.getTitle(); // On every subclass
			}
			
			if (Config.SHOW_NPC_LVL && _npc instanceof L2MonsterInstance)
			{
				String t = "Lvl " + cha.getLevel();
				if (cha.getAggroRange() > 0)
				{
					if (!cha.isChampion() || (cha.isChampion() && !Config.CHAMPION_PASSIVE))
						t += "*";
				}
				
				if (_title != null && !_title.isEmpty())
					t += " " + _title;
				
				_title = t;
			}
		}
		
		@Override
		protected void writeImpl(L2Client client, L2Player activeChar)
		{
			writeC(0x0c);
			writeD(_npc.getObjectId());
			writeD(_idTemplate + 1000000); // npctype id
			writeD(_npc.isAutoAttackable(activeChar) ? 1 : 0);
			writeD(_x);
			writeD(_y);
			writeD(_z);
			writeD(_heading);
			writeD(0x00);
			writeD(_mAtkSpd);
			writeD(_pAtkSpd);
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // swim run speed
			writeD(_walkSpd); // swim walk speed
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // fly run speed
			writeD(_walkSpd); // fly walk speed
			writeF(_npc.getStat().getMovementSpeedMultiplier());
			writeF(_npc.getStat().getAttackSpeedMultiplier());
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(_rhand); // right hand weapon
			writeD(_chest);
			writeD(_lhand); // left hand weapon
			writeC(1); // name above char 1=true ... ??
			writeC(_npc.isRunning() ? 1 : 0);
			writeC(_npc.isInCombat() ? 1 : 0);
			writeC(_npc.isAlikeDead() ? 1 : 0);
			writeC(_isSummoned ? 2 : 0); // 0=teleported 1=default 2=summoned
			writeS(_name);
			writeS(_title);
			writeD(0x00); // Title color 0=client default
			writeD(0x00);
			writeD(0x00); // pvp flag
			
			writeD(_npc.getAbnormalEffect()); // C2
			writeD(0x00); //clan id
			writeD(0x00); //crest id
			writeD(0000); // C2
			writeD(0000); // C2
			writeC(_npc.isFlying() ? 2 : 0); // C2
			writeC(0x00); // title color 0=client
			
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(_npc.getWeaponEnchantLevel()); // C4
			writeD(_npc.isFlying() ? 1 : 0); // C6
			writeD(0x00);
			writeD(0x00);// CT1.5 Pet form and skills
			if (Config.PACKET_FINAL)
			{
				writeC(0x01);
				writeC(0x01);
				writeD(_npc.getSpecialEffect());
			}
		}
		
		@Override
		public boolean canBeSentTo(L2Client client, L2Player activeChar)
		{
			if (!activeChar.canSee(_npc))
				return false;
			
			return true;
		}
	}
	
	public static class TrapInfo extends AbstractNpcInfo
	{
		private final L2Trap _trap;
		
		public TrapInfo(L2Trap cha)
		{
			super(cha);
			_trap = cha;
			_idTemplate = cha.getTemplate().getIdTemplate();
			_rhand = 0;
			_lhand = 0;
			_collisionHeight = _trap.getTemplate().getCollisionHeight();
			_collisionRadius = _trap.getTemplate().getCollisionRadius();
			_title = cha.getOwner().getName();
			_runSpd = _trap.getStat().getRunSpeed();
			_walkSpd = _trap.getStat().getWalkSpeed();
		}
		
		@Override
		protected void writeImpl(L2Client client, L2Player activeChar)
		{
			writeC(0x0c);
			writeD(_trap.getObjectId());
			writeD(_idTemplate + 1000000); // npctype id
			writeD(_trap.isAutoAttackable(activeChar) ? 1 : 0);
			writeD(_x);
			writeD(_y);
			writeD(_z);
			writeD(_heading);
			writeD(0x00);
			writeD(_mAtkSpd);
			writeD(_pAtkSpd);
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // swim run speed
			writeD(_walkSpd); // swim walk speed
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // fly run speed
			writeD(_walkSpd); // fly walk speed
			writeF(1.1/*_trap.getStat().getMovementSpeedMultiplier()*/);
			writeF(_trap.getStat().getAttackSpeedMultiplier());
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(_rhand); // right hand weapon
			writeD(_chest);
			writeD(_lhand); // left hand weapon
			writeC(1); // name above char 1=true ... ??
			writeC(1);
			writeC(_trap.isInCombat() ? 1 : 0);
			writeC(_trap.isAlikeDead() ? 1 : 0);
			writeC(_isSummoned ? 2 : 0); //  0=teleported  1=default   2=summoned
			writeS(_name);
			writeS(_title);
			writeD(0x00); // title color 0 = client default
			
			writeD(0x00);
			writeD(0x00); // pvp flag
			
			writeD(_trap.getAbnormalEffect()); // C2
			writeD(0x00); //clan id
			writeD(0x00); //crest id
			writeD(0000); // C2
			writeD(0000); // C2
			writeD(0000); // C2
			writeC(0000); // C2
			
			writeC(0x00); // Title color 0=client default
			
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(0x00); // C4
			writeD(0x00); // C6
			writeD(0x00);
			writeD(0);//CT1.5 Pet form and skills
			if (Config.PACKET_FINAL)
			{
				writeC(0x01);
				writeC(0x01);
				writeD(0x00);
			}
		}
		
		@Override
		public boolean canBeSentTo(L2Client client, L2Player activeChar)
		{
			if (!activeChar.canSee(_trap))
				return false;
			
			return true;
		}
	}
	
	/**
	 * Packet for summons
	 */
	public static class SummonInfo extends AbstractNpcInfo
	{
		private final L2Summon _summon;
		private int _form = 0;
		private int _val = 0;
		
		public SummonInfo(L2Summon cha, int val)
		{
			super(cha);
			_summon = cha;
			_val = val;
			
			int npcId = cha.getTemplate().getNpcId();
			
			if (npcId == 16041 || npcId == 16042)
			{
				if (cha.getLevel() > 84)
					_form = 3;
				else if (cha.getLevel() > 79)
					_form = 2;
				else if (cha.getLevel() > 74)
					_form = 1;
			}
			else if (npcId == 16025 || npcId == 16037)
			{
				if (cha.getLevel() > 69)
					_form = 3;
				else if (cha.getLevel() > 64)
					_form = 2;
				else if (cha.getLevel() > 59)
					_form = 1;
			}
			
			// fields not set on AbstractNpcInfo
			_rhand = cha.getWeapon();
			_lhand = 0;
			_chest = cha.getArmor();
			_collisionHeight = _summon.getTemplate().getCollisionHeight();
			_collisionRadius = _summon.getTemplate().getCollisionRadius();
			_name = cha.getName();
			_title = cha.getOwner() != null ? (cha.getOwner().isOnline() == 0 ? "" : cha.getOwner().getName()) : ""; // when owner online, summon will show in title owner name
			_idTemplate = cha.getTemplate().getIdTemplate();
			
			_collisionHeight = cha.getTemplate().getCollisionHeight();
			_collisionRadius = cha.getTemplate().getCollisionRadius();
			
			// few fields needing fix from AbstractNpcInfo
			_runSpd = cha.getPetSpeed();
			_walkSpd = cha.isMountable() ? 45 : 30;
		}
		
		@Override
		protected void writeImpl(L2Client client, L2Player activeChar)
		{
			writeC(0x0c);
			writeD(_summon.getObjectId());
			writeD(_idTemplate + 1000000); // npctype id
			writeD(_summon.isAutoAttackable(activeChar) ? 1 : 0);
			writeD(_x);
			writeD(_y);
			writeD(_z);
			writeD(_heading);
			writeD(0x00);
			writeD(_mAtkSpd);
			writeD(_pAtkSpd);
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // swim run speed
			writeD(_walkSpd); // swim walk speed
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // fly run speed
			writeD(_walkSpd); // fly walk speed
			writeF(_summon.getStat().getMovementSpeedMultiplier());
			writeF(_summon.getStat().getAttackSpeedMultiplier());
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(_rhand); // right hand weapon
			writeD(_chest);
			writeD(_lhand); // left hand weapon
			writeC(1); // name above char 1=true ... ??
			writeC(1);
			writeC(_summon.isInCombat() ? 1 : 0);
			writeC(_summon.isAlikeDead() ? 1 : 0);
			writeC(_val); //  0=teleported  1=default   2=summoned
			writeS(_name);
			writeS(_title);
			writeD(0x01);// Title color 0=client default
			
			writeD(_summon.getPvpFlag());
			writeD(_summon.getKarma());
			
			if (_summon.getOwner().getAppearance().isInvisible())
			{
				writeD((_summon.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask()));
			}
			else
			{
				writeD(_summon.getAbnormalEffect());
			}
			writeD(_summon.getOwner().getClanId());
			writeD(0x00); //crest id
			writeD(0000); // C2
			writeD(0000); // C2
			writeC(0000); // C2
			
			writeC(_summon.getTeam());
			writeF(_collisionRadius);
			writeF(_collisionHeight);
			writeD(0x00); // C4
			writeD(0x00); // C6
			writeD(0x00);
			writeD(_form);//CT1.5 Pet form and skills
			if (Config.PACKET_FINAL)
			{
				writeC(0x01);
				writeC(0x01);
				writeD(0x00);
			}
		}
		
		@Override
		public boolean canBeSentTo(L2Client client, L2Player activeChar)
		{
			// Owner gets PetInfo
			if (_summon.getOwner() == activeChar)
				return false;
			
			if (!activeChar.canSee(_summon))
				return false;
			
			return true;
		}
	}
	
	/**
	 * Packet for morphed PCs
	 */
	public static class PlayerMorphInfo extends AbstractNpcInfo
	{
		private final L2Player _pc;
		private final L2NpcTemplate _template;
		
		public PlayerMorphInfo(L2Player cha, L2NpcTemplate template)
		{
			super(cha);
			_pc = cha;
			_template = template;
		}
		
		@Override
		protected void writeImpl(L2Client client, L2Player activeChar)
		{
			writeC(0x0c);
			writeD(_pc.getObjectId());
			writeD(_pc.getPoly().getPolyId() + 1000000); // npctype id
			writeD(_pc.isAutoAttackable(activeChar) ? 1 : 0);
			writeD(_x);
			writeD(_y);
			writeD(_z);
			writeD(_heading);
			writeD(0x00);
			writeD(_mAtkSpd);
			writeD(_pAtkSpd);
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // swim run speed
			writeD(_walkSpd); // swim walk speed
			writeD(_runSpd);
			writeD(_walkSpd);
			writeD(_runSpd); // fly run speed
			writeD(_walkSpd); // fly walk speed
			writeF(_pc.getStat().getMovementSpeedMultiplier());
			writeF(_pc.getStat().getAttackSpeedMultiplier());
			writeF(_template.getCollisionRadius());
			writeF(_template.getCollisionHeight());
			writeD(_pc.getInventory().getPaperdollItemDisplayId(Inventory.PAPERDOLL_RHAND)); // right hand weapon
			writeD(0); // Chest
			writeD(_pc.getInventory().getPaperdollItemDisplayId(Inventory.PAPERDOLL_LHAND)); // left hand weapon
			writeC(1); // name above char 1=true ... ??
			writeC(_pc.isRunning() ? 1 : 0);
			writeC(_pc.isInCombat() ? 1 : 0);
			writeC(_pc.isAlikeDead() ? 1 : 0);
			writeC(0);
			writeS(_pc.getAppearance().getVisibleName());
			writeS(_pc.getAppearance().getVisibleTitle());
			
			writeD(0x00); // Title Color
			writeD(_pc.getKarma());
			writeD(_pc.getPvpFlag());
			
			if (_pc.getAppearance().isInvisible())
			{
				writeD((_pc.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask()));
			}
			else
			{
				writeD(_pc.getAbnormalEffect()); // C2
			}
			
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeC(0x00);
			writeC(0x00);
			writeF(_template.getCollisionRadius());
			writeF(_template.getCollisionHeight());
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			writeD(0x00);
			if (Config.PACKET_FINAL)
			{
				writeC(0x01);
				writeC(0x01);
				writeD(0x00);
			}
		}
		
		@Override
		public boolean canBeSentTo(L2Client client, L2Player activeChar)
		{
			// Won't work
			if (_pc == activeChar)
				return false;
			
			if (!activeChar.canSee(_pc))
				return false;
			
			return true;
		}
	}
}

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • Sweeper Festival allows you to collect all spoil from killed mobs with a single button, without having to click on each body.  This saves time, speeds up farming, and reduces routine.  For some of you, it will be a long-awaited convenience, for others — a step toward excessive simplification. It is important for us to understand what our community thinks before making a decision about introducing this feature. Let's discuss this in the Discord:  Discord server
    • START ALREADY - TOMORROW ! GRAND OPENING FROM - 15/08/2025, FRIDAY, 20:00 +3 GMT !
    • Looking for a Specialist to Upgrade Lineage II Interlude PTS to High Five Part 5 (We are also interested in upgrades to Garcia Final and Gracia Epilogue) Hello, and thank you for taking the time to view our listing! We are seeking an experienced specialist to help transfer and upgrade Lineage II server parts and core from the Interlude PTS chronicles to High Five, ensuring full functionality and stable operation. Responsibilities: Transfer and adapt all game resources and settings. Ensure correct operation and maintain the functionality of the PTS core according to High Five Part 5 chronicles. Optimize graphics, fonts, interface, and system files for High Five Part 5. Requirements: Deep understanding of the Lineage II client and server structure. Experience with PTS (L2OFF), system files, resources, and geodata. Attention to detail, accuracy, and ability to meet deadlines. Conditions: Remote work. Payment negotiable; prepayment possible. Opportunity for long-term cooperation.
    • Hello, and thank you for taking the time to check out our listing! We truly appreciate your interest and look forward to sharing more details about the project, the tasks involved, and our terms of collaboration. We are looking for an experienced specialist to port and adapt the Interlude PTS client to the Ertheia chronicles or newer. Responsibilities: Transfer and proper integration of all interface elements and client resources. Ensure compatibility with new chronicles without loss of functionality. Optimize graphics, fonts, system files, and interface elements for newer versions. Requirements: Deep understanding of the Lineage II client structure. Experience working with resources, system files, interface, and geodata. Attention to detail, accuracy, and ability to meet deadlines. Conditions: Remote work format. Payment negotiable, prepayment possible. Opportunity for long-term cooperation upon successful completion of the task.
    • SOCNET STORE — 一家销售各类数字账户和礼品卡(订阅服务)的商店,涵盖所有服务:TikTok、Instagram、Reddit、Twitter、Telegram、Facebook、LinkedIn、WhatsApp、Snapchat、YouTube、Google账户、Discord、电子邮箱(Outlook、Hotmail、Gmail、Rambler、Firstmail 等)、ChatGPT 5,以及众多服务的礼品卡(高级订阅),人人都能享受实惠价格! 可用的支付方式: 通过 PayPal、任意加密货币(+Binance Pay)、Telegram Stars、Cash App 或任意银行卡。 ⭐ 在线商店 ⭐ SOCNET.STORE ⭐ 社交媒体推广 SMM 面板 ⭐ SOCNET.PRO ⭐ Telegram 商店 ⭐ SOCNET.SHOP ⭐ 新闻:⭐ ➡ Telegram 频道: https://t.me/socnet_news 联系方式与支持: ➡ Telegram 支持: https://t.me/socnet_support ➡ Discord 支持: socnet_support ➡ Discord 服务器: https://discord.gg/y9AStFFsrh ➡ WhatsApp 支持: https://wa.me/79051904467 ➡ WhatsApp 频道: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n ➡ 电子邮件 支持: solomonbog@socnet.store 我们经营已久,积累了大量关于我们工作的评价!我们网站上展示了大量真实、积极的客户好评!   ⭐ TELEGRAM ⭐   ㅤ ㅤ GROUPS/STARS/CHANNELS Telegram Stars on Posts | 1 star from $0.016 | Discounts for bulk orders | Delivery within 1 hour of purchase | Possible writing variations Telegram Stars | 1 star from $0.0149 | Discounts for bulk orders | Delivery within 1 hour of purchase Groups IMPORT and REAL | From 2014 to 2024 available! | For safe invitations | Low price and high quality! | Price from $4 Real old Telegram Channels (2022–2023: choose the year) | Real channels | Ownership transfer to your account | Price from $2.5 OLD ACCOUNTS Telegram USA/CANADA +1 | Auto-reg | Age 180+ days | TDATA+SESSION+JSON+2FA | +2FA enabled | Price from $2.5 Telegram Indonesia +62 | Auto-reg | Age 180+ days | TDATA+SESSION+JSON+2FA | +2FA enabled | Price from $2.5 Telegram South Africa +27 | Auto-reg | Age 180+ days | TDATA+SESSION+JSON+2FA | +2FA enabled | Price from $1.8 Telegram Philippines +63 | Auto-reg | Age 180+ days | TDATA+SESSION+JSON+2FA | +2FA enabled | Price from $2 Telegram Israel +972 | Auto-reg | Age 180+ days | TDATA+SESSION+JSON+2FA | +2FA enabled | Price from $2.5 NEW ACCOUNTS USA (+1) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from $0.5 Canada (+1) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from $0.5 Russia (+7) | Auto-reg | TDATA | No spam block | 2FA enabled (if enabled!) | Price from: $2 Brazil (+55) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $2.5 United Kingdom (+44) | Auto-reg | Age from 3 days | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $1.3 Germany (+49) | Auto-reg | Age from 3 days | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $4 Myanmar (+95) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $0.38 Bangladesh (+880) | Auto-reg | TDATA SESSION+JSON 2FA | 2FA enabled | Price from: $0.4 Indonesia (+62) | Auto-reg | Age from 3 days | TDATA SESSION+JSON 2FA | 2FA enabled | Price from: $0.5 Chile (+56) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $0.8 Philippines (+63) | Auto-reg | TDATA SESSION JSON 2FA | 2FA enabled | Price from: $0.64   ⭐ FACEBOOK ⭐   Verified Facebook account with old Meta version and active blue checkmark | Subscription paid 1 month in advance + account verified with documents | Price from: $69 Facebook accounts | GEO: USA/Europe (Germany, France, UK, Italy, Spain, etc.) | Registered on a real Android device with a real phone number | SMS, cookies, photos, posts | Price from: $0.49 Facebook accounts | GEO: Europe (UK, Italy, France, Germany, Ukraine, etc.) | Age: from 6 months to 1 year | Registered on a real Android device with a real phone number | Format: login + password + UserAgent + cookies | Price from: $1 Facebook KING USA/Canada/Europe with 1-2 BM + Marketplace + Fan Page | Verified phone and email (included) | Manually farmed with ACTIVATED BUSINESS MANAGER | Filled-out profile, FUN PAGE + FARMed for 7+ days | Two-factor authentication enabled | Price from: $4.5 Facebook KING USA/Canada/Europe with 1-2 BM | Verified phone and email (included) | Manually farmed with ACTIVATED BUSINESS MANAGER | Filled-out profile, FUN PAGE + FARMed for 7+ days | Two-factor authentication enabled | Price from: $3 Facebook KING+FP 2022 | GEO: Europe (Ukraine, UK, France, Italy, Germany) | Friends: 30–100+ | Verified by phone and email (included) | Filled-out FunPage + FARMed for 7+ days | Two-factor authentication enabled | Price from: $8 Facebook Business Manager (BM) | Linked to an account with connected Business Manager | $50 limit (first day) + $250 (following days) + email confirmation | Ads Manager created | Price from: $40 OLD Facebook account (2010–2020) | Year of your choice | Filled-out profile and added friends | Email included (may not work) | Real accounts | Price from: $6 OLD Facebook account (2010–2022) with friends (50–500+) and activity | GEO: Europe and USA | Year of your choice | Filled-out profile and added friends | Email included (may not work) | Real accounts | Price from: $3 BM Facebook account with unlocked ad account limit $250, YEAR 2025 (NO RESTRICTIONS) | Facebook | 4 ACCOUNTS | EACH WITH $250 FROM START | NO DROPS IN LIMIT | Price from: $60 BM Facebook account with unlocked ad cabinet | GEO: Europe (Poland, Ukraine) | Facebook | FARMED: 7+ DAYS | 1–3 photos + email access + cookies + ad ban passed | 1–2 Business Managers | Documents included | Price from: $4.5 Old Facebook account (2008–2023) with linked ad account and $250 limit | Price from: $65 Verified Facebook Business Manager 250$ with $50 limit | GEO: USA | Verified by company | Price from: $29 OLD Facebook FanPage (2010–2023), converted to new type. Creation year: 2010–2023 | With real followers from 20 to 1000 (choose the number) | MORE TRUST THAN AD BAN | Price from: $10.5 Old Facebook FanPages (created in 2017–2022) — name can be changed | Price from: $7 Old Facebook accounts | GEO: Asia (India, Philippines, Vietnam, Indonesia, Malaysia) — choose your country | Age: 2010–2020 | Friends: from 20+ | Registered on real Android device with real number | Username | Password | 2FA Key | Email access | Backup Hotmail | DOB | Price from $8 Verified Facebook Business Manager (BM) account with open WhatsApp Account Manager and ability to link up to 2 WhatsApp numbers to your profile | Price from $89 Facebook account with ad ban. Age: 2022–2023. Country: USA/Europe (UK, France, Poland) — your choice. Ad account closed. Marketplace available (optional). Includes Mail + Ava + EAAB token + Cookies + UserAgent + 2FA (optional) | Price from $1   ⭐ TWITTER ⭐   Twitter Premium X/Premium+ subscription on your Twitter account for 1 month/1 year (your choice). Authorization in your Twitter account is required. Price from: $13 per month Twitter Premium Plus subscription with GROK AI assistant on your Twitter account for 1 year. Authorization in your Twitter account is required. Price from: $55 Twitter | New and clean accounts | AUTHORIZATION TOKEN | Email + 2FA TOKEN | Price from: $0.2 Twitter accounts filled with NFT and crypto content | IP EUROPE/ASIA | 1–5 follows | 1–5 followers | avatar + banner + geo + bio + authorization token | suitable for following, liking, reposting – everything | Price from: $0.5 Super promoted Twitter accounts with 100–10,000+ real followers | Full access (via email, login, and token) | Complete profile (avatar set, possibly cover and posts in account, regular username) | Refill: 30 days | Price from: $1 Twitter | Aged clean accounts (6+ months) | Login, password, email, and token included | Price from: $0.5 Old Twitter accounts 2009–2023 (YEAR OF YOUR CHOICE) | Verified by phone number and email | Access via login, email, and token | Price from: $1.2 Old Twitter accounts 2010–2020 with real followers from 1,000 to 20,000+ (followers of your choice) | Access via email, password, and token | Price from: $10 Old Twitter accounts 2010–2023 with BLUE Regular Tick for Tier 1/2/3 countries | Full access with login, password, and token included! | Price from: $16 Old Twitter accounts 2010–2023 with BLUE Regular Tick and real followers: 100–20,000 (your choice) Tier 1/2/3 countries | Full access with login, password, and token included | Refill: from 30 days | Price from: $17 Old Twitter NFT accounts 2010–2023 with BLUE Regular Tick Tier 1/2/3 countries | Full access with login, password, and token included! | Price from: $17 Old Twitter NFT accounts 2010–2023 with BLUE Regular Tick and high-quality real followers: 100–20,000 (your choice) Tier 1/2/3 countries | Full access with login, password, and token included | Refill: from 30 days | Price from: $18   ⭐ GOOGLE/YOUTUBE ⭐   Gmail.com | Registered from MIX IP address | Clean and without messages | Valid for 2–3 days | Invalid accounts are replaced | Format: email:password:submail | SMS verification not required | IMAP ON | Submail included | Price from: $0.15 Old Gmail.com | Age: from 2005 to 2023 (real accounts) – YEAR OF YOUR CHOICE | Accounts may contain messages | Registered from MIX IP | Invalid accounts are replaced | Format: email:password:submail | SMS verification not required | IMAP ON | Submail included | Price from: $0.85 Old Gmail.com | Registered from US IP address | Age: from 2010 to 2023 – YEAR OF YOUR CHOICE | Accounts can send messages | Format: email:password:submail | SMS verification not required | IMAP ON | Submail included | Price from: $1.89 Google Voice Accounts (GMAIL US NEW) | Age/Year: Random 2024 | Phone Verified: Yes | Price from: $15 GOOGLE ADS ACCOUNT USA/EUROPE (UK, Germany, France, etc.) | Manually farmed 7+ days | Google Ads account created | Includes two-factor authentication (2FA), backup codes, backup email with access, UserAgent and cookies | Price from: $13 GOOGLE ADS ACCOUNT USA/EUROPE (UK, Germany, France, etc.) | VERIFICATION COMPLETED — €10 BALANCE | Manually farmed 7+ days | Ads created | Includes two-factor authentication (2FA), backup email with access, UserAgent and cookies | Price from: $55 Google Ads Account Europe/USA with ad campaigns and spend of $100/$500/$1000 | Advertiser verification not completed | Full access and account setup | Price from: $200 Google Ads Account Europe/USA with ad campaigns and spend of $100/$500/$1000 | Advertiser verification completed | Full access and account setup | Price from: $400   ⭐ YOUTUBE CHANNELS ⭐   YouTube channel accounts | Age: 2006–2020 (year of your choice) | With or without videos (your choice) | Price from: $1 YouTube channel accounts | Age: 2006–2020 (year of your choice) | With videos and views (views of your choice) | Price from: $23 Organic YouTube channels with real subscribers (year of your choice) – and organic views (10K–1M) – both customizable | Price from: $24   ⭐ DISCORD ⭐   Discord – email:password:token with attached working email | Activated via SMS | 1 order = 3 accounts | Price from: $0.44 DISCORD Real Android Devices | Verified on RAMBLER.RU or FIRSTMAIL, working email, phone SMS verified | Age 3+ months | Suitable for all purposes | Accounts without restrictions and SMS | Price from: $0.5 DISCORD Account | 1 order = 3 accounts, only verified email (@rambler.ru/@firstmail (working) included), Gender MIX | Price from: $0.5 DISCORD Account | Real Android device | 1 order = 3 accounts | Verified via RAMBLER.RU or FIRSTMAIL | Working email included | Phone verified | Age from 1 month | Suitable for all purposes | Accounts without restrictions and SMS | Price from: $0.75 DISCORD Account | Real Android devices | Verified on RAMBLER.RU or FIRSTMAIL | Email included (may not work) | Phone verified | Age from 1 year | Suitable for all purposes | Accounts without restrictions and SMS | Price from: $0.8 DISCORD NITRO   Discord Nitro Classic (Basic) GIFT | 1/12 MONTHS | NO ACCOUNT LOGIN REQUIRED | Full duration guarantee | Price from: $3.15 Discord Nitro FULL | 1/12 MONTHS | NO ACCOUNT LOGIN REQUIRED | Full duration guarantee | Price from: $6.8   ⭐ REDDIT ⭐   Reddit Karma Brute Account | 1 KARMA | Access via cookies only (password may not work) | Cheapest account | Price from: $1 Reddit Karma Brute Account | KARMA from 20–100 POSTS & COMMENTS | Registered via MIX IP | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: $5 Reddit Karma Brute Account | KARMA from 500/1000/2000/5000/10000/20000 POSTS & COMMENTS (YOUR CHOICE) | Registered via MIX IP | FORMAT: USERNAME: PASSWORD:EMAIL:MAILPASS | Price from: $9+   ⭐ INSTAGRAM ⭐   Old verified Instagram Meta account with active blue checkmark | Subscription already paid for 1 month ahead + account verified by documents | Price from: $69 OLD Instagram accounts (2011–2020) | Clean and quality account | Country: MIX | Email included! | Price from: $1.1 New Instagram accounts | PREMIUM Auto-reg quality (API FRESH) | Registered via SMS | Completely new | Up to 24 hours | Format: login | password | cookies (for InstAccountsManager) | Price from: $0.05 OLD Instagram accounts (2011–2020) | NO FLAG | Suitable for follower boosting | Country: MIX | Email included | Price from: $1.15 OLD Instagram accounts (2011–2015) | Clean and quality account | Country: MIX | Email included! | Price from: $1.3 OLD Instagram accounts (2011–2020) with followers | 100/500/1000/5000/10000+ followers (YOUR CHOICE) | Country: MIX | Email included! | Price from: $1.35 OLD Instagram accounts (2011–2015) with followers | 100 followers | Country: MIX | Email included! | Price from: $1.45 OLD Instagram accounts (2011–2020) | Clean and quality account | Country: Europe and USA | Email included! | Price from: $2 OLD Instagram accounts (2011–2020) | Clean and quality account | Country: USA | Email included! | Price from: $2.5 OLD Instagram accounts (2011–2020) with followers | 100/500/1000/5000/10000+ followers (YOUR CHOICE) | Country: Europe and USA | Email included! | Price from: $3 OLD Instagram accounts (2011–2020) with followers | 100/500/1000/5000/10000+ followers (YOUR CHOICE) | Country: USA | Email included! | Price from: $2.75 OLD Instagram accounts (2010–2020) | Account ready for purchase | META VERIFIED | The account has posts | Price from: $4.99 OLD Instagram META account (2010–2020) with 100/500/1000/5000/10000 followers (YOUR CHOICE) | Account ready for purchase | META VERIFIED | Account has posts | Price from: $5.99   ⭐ PROXIES / VPN / VIRTUAL SERVERS ⭐   IPv6 PROXIES | Individual IPv6 proxy protocol | Format: HTTP/SOCKS5 | Any country | 30 days | Unlimited traffic | Price from: $0.35 IPv4 DATACENTER PROXIES | Individual IPv4 protocol | Format: HTTP/SOCKS5 | Any country | 30 days | Unlimited traffic | Price from: $1 DYNAMIC IPv4 PROXIES (with time-based rotation) | Any country | Format: HTTP/SOCKS5 | 30 days | Price per 1GB traffic | Price from: $3 RESIDENTIAL IPv4 PROXIES | Any country | Format: HTTP/SOCKS5 | 30 days | UNLIMITED TRAFFIC | HIGH SPEED UP TO 1 GB/s | Price from: $2.5 Private mobile proxies | Unlimited traffic | Any GEO (your choice) | Duration: 1/30/365 days (your choice) | Speed up to 30 MB/s | Price from: $10 OutLine VPN | Any country of your choice | Works on all devices and in any country (including Russia!) | Duration: 30 days | Price from: $2.5 WireGuard VPN | Any country of your choice | Works on all devices and in any country (including Russia!) | Duration: 30 days | Price from: $2.5 VDS (1–12 months) | GEO: USA, UK, Canada, Germany, India, France, Australia | RAM: 2–16 GB | Disk space (SSD): 60 GB – 8 TB | Custom configuration! | Lowest price! | Price from: $3   ⭐ TIKTOK ⭐   TIKTOK – Clean (wiped) auto-reg accounts II VERIFIED @RAMBLER.RU/@FIRSTMAIL II EMAIL INCLUDED, registered with RU IP | Price from: $0.1 TikTok auto-reg account II Verified via rambler.ru email, email included II Gender: MIX II Latin name II Empty profile II Registered with MIX IP | Price from: $0.1 TikTok auto-reg account II 100/1000/5000/10000+ followers (your choice) II Email verified @hotmail/@outlook/@firstmail/@rambler, email included (working) II Gender: MIX II Latin name II Registered with MIX IP | Price from: $1 ㅤ ㅤ ADVERTISING ACCOUNTS TIKTOK AD ACCOUNTS | GEO: USA/EUROPE | PREPAID | Manual registration | Email access + Cookies + VAT info | Price from: $1 TIKTOK AD ACCOUNTS | GEO: USA/EUROPE | Business verified + POSTPAY | Manual registration | Email access + Cookies + VAT info | Price from: $3.5 TIKTOK AD ACCOUNTS | GEO: USA/EUROPE | POSTPAY + BUSINESS CENTER | 3 ad accounts for running ads + 1 personal | Possible ad coupons from $20 to $100 | Manual registration | Email access + Cookies + VAT info | Price from: $8   ⭐ LINKEDIN & SNAPCHAT ⭐   Linkedin.com accounts | Email included: @outlook/@hotmail/@firstmail | Male or Female | Partially filled profiles | Registered from US/Europe/MIX IP | Price from: $2.5 LinkedIn Old Brute account with real connections (0 connections) | Mixed GEO | Filled profile | Registered on real device | Price from: $10 LinkedIn Premium Brute account (Premium) with active Premium subscription for 1 month | GEO: MIX | Registered on real device | Full access to account | Price from: $20 LinkedIn Old Brute account with real connections (50/100/500/1000+ connections) – YOUR CHOICE | Mixed GEO | Filled profile | Registered on real device | Price from: $20 Verified LinkedIn Brute account with confirmed documents | GEO: MIX | Registered on real device | Full access to account | Price from: $89 Snapchat Brute Old Account with real activity and score (from 0/10k/20k/50k/100k+ points) | GEO: USA, UK, Saudi Arabia, Dubai, India | Real accounts with real posts and followers (random amount) | Price from: $15   ⭐ WHATSAPP ⭐   WhatsApp real accounts | USA (+1 code) | High-quality accounts | QR-code or code from phone: from $3   ⭐ EMAIL ACCOUNTS ⭐   Outlook.com auto-reg account | Age: from 6 months | Registered on random IPs, IMAP and POP3 enabled | Valid for a long time and suitable for any purpose | Price from: $0.1 Firstmail.ltd auto-reg account | 1 order = 10 inboxes | IMAP enabled | High quality and functionality on all sites | Domains: maillerbox.com, fmailler.com, fmailnex.com, fmailler.net and others | Price from: $0.04 Rambler.ru auto-reg account | NEVER USED BEFORE | High quality and functionality on all sites | Price from: $0.02 Onet.pl auto-reg account | Email format: @ONET | Gender: mixed | SMTP, POP3, IMAP enabled | Price from: $0.1 Gazeta.pl auto-reg account | Email format: email@gazeta.pl | Gender: mixed | SMTP, POP3, IMAP enabled | Price from: $0.1 GMX.net / GMX.com auto-reg account | Email format: email@gmx.com/.at/.ch/.de/.net | Gender: mixed | SMS verification (+49) | SMTP, POP3, IMAP enabled | Price from: $0.05 GMX OLD account 2020–2023 | Email format: email@gmx.com/.at/.ch/.de/.net | Gender: mixed | Verified via SMS (+49) | SMTP, POP3, IMAP enabled | Price from: $0.3 Yahoo.com auto-reg account | IP and gender: MIX | Verified via SMS | IMAP, POP3, SMTP enabled | Phone and IMAP password included | Price from: $0.15 Auto-registered accounts Protonmail.com / Proton.me auto-reg account | Age: from 10 days | English first and last names | MIX IPs | Price from: $0.15 Web.de OLD account 2020–2023 | Email format: @web.de | Gender: MIX | Verified via SMS (+49) | SMTP, POP3, IMAP enabled | Price from: $0.4   ⭐ OTHER SERVICES & PREMIUM SUBSCRIPTIONS ⭐   ㅤ ㅤ DISCORD NITRO Discord Nitro Classic (Basic) GIFT | 1/12 MONTHS | NO LOGIN OR PASSWORD NEEDED | Full subscription guarantee | Price from: $3.15 Discord Nitro FULL | 1/12 MONTHS | NO LOGIN OR PASSWORD NEEDED | Full subscription guarantee | Price from: $6.8 SPOTIFY PREMIUM Individual Spotify Premium plan for 1 month ON YOUR ACCOUNT | Available worldwide | Price from: $2.49 Family Spotify Premium plan for 1 month ON YOUR ACCOUNT | Works in any country | Price from: $3.75 Personal YouTube Premium Music on your account | 1 month | Ad-free YouTube | Price from: $3.75 Family YouTube Premium Music on your account | 1 month | Ad-free YouTube | Price from: $4.35 TELEGRAM PREMIUM Telegram Premium subscription for 1 month on your account | Authorization required (via TDATA or phone number) | Price from: $6 Telegram Premium subscription for 3 months on your account | No account authorization required | Guaranteed for full period | Price from: $17 Telegram Premium subscription for 6 months on your account | No account authorization required | Guaranteed for full period | Price from: $22 Telegram Premium subscription for 12 months on your account | No account authorization required | Guaranteed for full period | Price from: $37 GOOGLE VOICE Google Voice Accounts (GMAIL US NEW) | Age/Year: Random 2024 | Phone Verified: Yes | Price from: $13 TWITTER(X) PREMIUM Twitter Premium X subscription on your Twitter account for 1 month/1 year (your choice). Authorization in your Twitter account is required. Price from: $13 per month Twitter X Premium Plus subscription with GROK AI on your Twitter account for 1 month/1 year (your choice). Authorization in your Twitter account is required. Price from: $55 NETFLIX PREMIUM Netflix Premium subscription for 1 month on your personal account for any country, renewable after expiration | Price from: $10 CANVA PRO CANVA PRO subscription for 1 month via invitation to your email | Price from: $1 CHATGPT 5 Shared ChatGPT 5 Plus account FOR 2/5 USERS | Price from: $5 / $10 Group ChatGPT 5 Plus subscription on your own email address for 1 month | Price from: $5 Personal ChatGPT 5 Plus account FOR 1 USER or CHAT GPT PLUS subscription on your own account | Price from: $18 ChatGPT 5 PRO account with UNLIMITED REQUESTS | Dedicated personal account FOR 1 USER ONLY or ON YOUR ACCOUNT | Works in any country or region | Price from: $220   注意: 此文本块并不代表我们的全部产品范围;如需更多详情,请访问下方相关链接! 如果您有任何问题,我们的客服团队随时准备为您提供帮助! 可用的支付方式: 通过 PayPal、任意加密货币(+Binance Pay)、Telegram Stars、Cash App 或任意银行卡。 ⭐ 在线商店 ⭐ SOCNET.STORE ⭐ 社交媒体推广 SMM 面板 ⭐ SOCNET.PRO ⭐ Telegram 商店 ⭐ SOCNET.SHOP ⭐ 新闻:⭐ ➡ Telegram 频道: https://t.me/socnet_news 联系方式与支持: ➡ Telegram 客服: https://t.me/socnet_support ➡ Discord 客服: socnet_support ➡ Discord 服务器: https://discord.gg/y9AStFFsrh ➡ WhatsApp 客服: https://wa.me/79051904467 ➡ WhatsApp 频道: https://whatsapp.com/channel/0029Vau0CMX002TGkD4uHa2n ➡ 电子邮件 客服: solomonbog@socnet.store ⭐ 10% – 20% 折扣 或 $1 奖励 用于您的 注册 ⭐ 如果您想在 注册 后获得 $1 奖励,或在 首次购买 时获得 10% – 20% 折扣,只需留言: "发送我的奖励, 我的用户名是..." 您还可以在我们所有商店使用现成的优惠码:"SOCNET"(15% 折扣!) ⭐ 我们邀请您合作 并与我们一起赚钱 ⭐ 想在我们的商店销售您的产品或服务并赚钱吗? 想成为我们的合作伙伴或提出互利的合作建议吗? 您可以通过本帖中列出的联系方式与我们联系。 常见问题与退款政策 如果您有任何问题或疑问,我们的快速客户支持将随时为您服务! 对于未完全符合说明要求或质量的服务,只有在商品描述中明确标注了保障和期限的情况下才会退款。在所有其他情况下,将不予全额退款!购买此类服务即表示您自动同意我们的未提供服务退款政策。 我们目前接受 CRYPTOMUS、Payeer、NotPayments、Perfect Money、俄罗斯和乌克兰银行卡、支付宝、BinancePay、CryptoBot、信用卡以及 PayPal。 注册奖励 $1 仅可用于购物,且仅限首次注册任何 SOCNET 项目后使用一次。 我们重视每一位客户,并通过联系方式在账号无效时提供替换! 附注:购物奖励可用于任何 SOCNET 项目:网页商店或 Telegram 机器人。
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock