- Хроники
- Chaotic Throne: High Five
- Исходники
- Присутствуют
- Сборка
- L2scripts
Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Так радуйся, вон админы пв софта бешеные бабки платят что бы их ники и титулы анимировались разными цветами) а тут на шаруу персонажей постоянно меняеться цвет ника думаю проблема в пакете
ExCharInfo "/*0xFE:0x254*/" но много раз пересматривал переделовал но так нечего и не получилось.
может кто-то подсказать в какую сторону дальше рыть?
протокол 474 майн
Посмотреть вложение 92860

package org.mmocore.gameserver.serverpackets.Character;
import org.mmocore.gameserver.Config;
import org.mmocore.gameserver.geometry.ILocation;
import org.mmocore.gameserver.instancemanager.CursedWeaponsManager;
import org.mmocore.gameserver.model.Creature;
import org.mmocore.gameserver.model.Player;
import org.mmocore.gameserver.model.actor.instances.player.Cubic;
import org.mmocore.gameserver.model.base.TeamType;
import org.mmocore.gameserver.model.entity.Hero;
import org.mmocore.gameserver.model.items.Inventory;
import org.mmocore.gameserver.model.items.PcInventory;
import org.mmocore.gameserver.model.matching.MatchingRoom;
import org.mmocore.gameserver.model.pledge.Alliance;
import org.mmocore.gameserver.model.pledge.Clan;
import org.mmocore.gameserver.serverpackets.L2GameServerPacket;
import org.mmocore.gameserver.skills.AbnormalEffect;
import org.mmocore.gameserver.utils.Location;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Set;
public class ExCharInfo extends L2GameServerPacket
{
public static final int[] PAPERDOLL_ORDER = {
Inventory.PAPERDOLL_UNDER,
Inventory.PAPERDOLL_HEAD,
Inventory.PAPERDOLL_RHAND,
Inventory.PAPERDOLL_LHAND,
Inventory.PAPERDOLL_GLOVES,
Inventory.PAPERDOLL_CHEST,
Inventory.PAPERDOLL_LEGS,
Inventory.PAPERDOLL_FEET,
Inventory.PAPERDOLL_BACK,
Inventory.PAPERDOLL_LRHAND,
Inventory.PAPERDOLL_HAIR,
Inventory.PAPERDOLL_DHAIR
};
private static final int[] PAPERDOLL_ORDER_AUGMENT =
{
Inventory.PAPERDOLL_RHAND,
Inventory.PAPERDOLL_LHAND,
Inventory.PAPERDOLL_RHAND
};
private static final int[] PAPERDOLL_ORDER_VISUAL_ID =
{
Inventory.PAPERDOLL_RHAND,
Inventory.PAPERDOLL_LHAND,
Inventory.PAPERDOLL_RHAND,
Inventory.PAPERDOLL_GLOVES,
Inventory.PAPERDOLL_CHEST,
Inventory.PAPERDOLL_LEGS,
Inventory.PAPERDOLL_FEET,
Inventory.PAPERDOLL_HAIR,
Inventory.PAPERDOLL_DHAIR
};
private static final Logger LOGGER = LoggerFactory.getLogger(ExCharInfo.class);
private boolean canWrite = false;
private int[][] paperdolls;
private int mAtkSpd, pAtkSpd;
private int runSpd, walkSpd, swimRunSpd, swimWalkSpd, flRunSpd, flWalkSpd, flyRunSpd, flyWalkSpd;
private ILocation fishLoc;
private String name, title;
private int x, y, z, heading, boatId;
private int objId, race, sex, baseClass, pvpFlag, karma, recHave;
private double speedMove, speedAtack, colRadius, colHeight;
private int hairStyle, hairColor, face;
private int clanId, clanCrestId, largeClanCrestId, allyId, allyCrestId, classId;
private int sit, run, combat, dead, privateStore, enchant;
private int hero, fishing, mountType;
private int pledgeClass, pledgeType, clanRepScore, mountId;
private int nameColor, titleColor, transformId, agathionId;
private Cubic[] cubics;
private boolean partyRoomLeader, flying;
private int curHp, maxHp, curMp, maxMp, curCp;
private TeamType teamType;
private Set<AbnormalEffect> abnormalEffects;
private boolean showHeadAccessories;
private int armorSetEnchant;
private boolean noble;
private int _ranking, _cursedweapon;
public ExCharInfo(Creature cha, Player receiver) {
if (cha == null) {
LOGGER.error("CIPacket: cha is null!", new Exception());
return;
}
if (receiver == null)
return;
if (cha.isInvisible(receiver))
return;
if (cha.isDeleted())
return;
objId = cha.getObjectId();
if (objId == 0)
return;
if (receiver.getObjectId() == objId) {
LOGGER.error("You cant send CIPacket about his character to active user!!!", new Exception());
return;
}
Player player = cha.getPlayer();
if (player == null)
return;
Location loc = null;
if (player.isInBoat()) {
loc = player.getInBoatPosition();
boatId = player.getBoat().getBoatId();
}
if (loc == null)
loc = cha.getLoc();
x = loc.x;
y = loc.y;
z = loc.z;
heading = loc.h;
name = player.getVisibleName(receiver);
nameColor = player.getVisibleNameColor(receiver);
if (player.isConnected() || player.isInOfflineMode() || player.isFakePlayer()) {
title = player.getVisibleTitle(receiver);
titleColor = player.getVisibleTitleColor(receiver);
} else {
title = "NO CARRIER";
titleColor = 255;
}
if (player.isPledgeVisible(receiver)) {
Clan clan = player.getClan();
Alliance alliance = clan == null ? null : clan.getAlliance();
//
clanId = clan == null ? 0 : clan.getClanId();
clanCrestId = clan == null ? 0 : clan.getCrestId();
largeClanCrestId = clan == null ? 0 : clan.getCrestLargeId();
//
allyId = alliance == null ? 0 : alliance.getAllyId();
allyCrestId = alliance == null ? 0 : alliance.getAllyCrestId();
}
if (player.isMounted()) {
enchant = 0;
mountId = player.getMountNpcId() + 1000000;
mountType = player.getMountType().ordinal();
} else {
enchant = player.getEnchantEffect();
mountId = 0;
mountType = 0;
}
paperdolls = new int[PcInventory.PAPERDOLL_MAX][4];
for(int PAPERDOLL_ID : PAPERDOLL_ORDER)
{
paperdolls[PAPERDOLL_ID][0] = player.getInventory().getPaperdollItemId(PAPERDOLL_ID);
paperdolls[PAPERDOLL_ID][1] = player.getInventory().getPaperdollVariation1Id(PAPERDOLL_ID);
paperdolls[PAPERDOLL_ID][2] = player.getInventory().getPaperdollVariation2Id(PAPERDOLL_ID);
paperdolls[PAPERDOLL_ID][3] = player.getInventory().getPaperdollVisualId(PAPERDOLL_ID);
}
mAtkSpd = player.getMAtkSpd();
pAtkSpd = player.getPAtkSpd();
speedMove = player.getMovementSpeedMultiplier();
runSpd = (int) (player.getRunSpeed() / speedMove);
walkSpd = (int) (player.getWalkSpeed() / speedMove);
flRunSpd = 0; // TODO
flWalkSpd = 0; // TODO
if (player.isFlying()) {
flyRunSpd = runSpd;
flyWalkSpd = walkSpd;
} else {
flyRunSpd = 0;
flyWalkSpd = 0;
}
swimRunSpd = player.getSwimRunSpeed();
swimWalkSpd = player.getSwimWalkSpeed();
race = player.getRace().ordinal();
sex = player.getSex().ordinal();
baseClass = player.getBaseDefaultClassId();
pvpFlag = player.getPvpFlag();
karma = player.getKarma();
speedAtack = player.getAttackSpeedMultiplier();
colRadius = player.getCurrentCollisionRadius();
colHeight = player.getCurrentCollisionHeight();
hairStyle = player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR) > 0 ? sex : (player.getBeautyHairStyle() > 0 ? player.getBeautyHairStyle() : player.getHairStyle());
hairColor = player.getBeautyHairColor() > 0 ? player.getBeautyHairColor() : player.getHairColor();
face = player.getBeautyFace() > 0 ? player.getBeautyFace() : player.getFace();
if (clanId > 0 && player.getClan() != null)
clanRepScore = (int) player.getClan().getReputationScore();
else
clanRepScore = 0;
sit = player.isSitting() ? 0 : 1; // standing = 1 sitting = 0
run = player.isRunning() ? 1 : 0; // running = 1 walking = 0
combat = player.isInCombat() ? 1 : 0;
dead = player.isAlikeDead() ? 1 : 0;
privateStore = player.isInObserverMode() ? Player.STORE_OBSERVING_GAMES : player.getPrivateStoreType();
cubics = player.getCubics().toArray(new Cubic[0]);
abnormalEffects = player.getAbnormalEffects();
recHave = player.isGM() ? 0 : player.getRecomHave();
classId = player.getClassId().getId();
teamType = player.getTeam();
hero = player.isHero() || player.isGM() && Config.GM_HERO_AURA ? 2 : 0; // 0x01: Hero Aura
if (hero == 0)
hero = Hero.getInstance().isInactiveHero(objId) ? 1 : 0;
noble = hero > 0;
fishing = player.isFishing() ? 1 : 0;
fishLoc = player.getFishing().getHookLocation();
pledgeClass = player.getPledgeClass();
pledgeType = player.getPledgeType();
transformId = player.getVisualTransformId();
agathionId = player.getAgathionNpcId();
partyRoomLeader = player.getMatchingRoom() != null && player.getMatchingRoom().getType() == MatchingRoom.PARTY_MATCHING && player.getMatchingRoom().getLeader() == player;
flying = player.isInFlyingTransform();
curHp = (int) player.getCurrentHp();//receiver.canReceiveStatusUpdate(player, StatusUpdatePacket.UpdateType.DEFAULT, StatusUpdatePacket.CUR_HP) ? (int) player.getCurrentHp() : 0;
maxHp = player.getMaxHp();//receiver.canReceiveStatusUpdate(player, StatusUpdatePacket.UpdateType.DEFAULT, StatusUpdatePacket.MAX_HP) ? player.getMaxHp() : 0;
curMp = (int) player.getCurrentMp();
maxMp = player.getMaxMp();
curCp = (int) player.getCurrentCp();
showHeadAccessories = !player.hideHeadAccessories();
armorSetEnchant = player.getArmorSetEnchant();
_ranking = player.isTopRank() ? 1 : player.isTopRaceRank() ? 2 : player.isTopClassRank() ? 3 : 0;
/*if(player.isInFightClub())
{
AbFightstractClub fightClubEvent = player.getFightClubEvent();
name = fightClubEvent.getVisibleName(player, name, false);
title = fightClubEvent.getVisibleTitle(player, title, false);
titleColor = fightClubEvent.getVisibleTitleColor(player, titleColor, false);
nameColor = fightClubEvent.getVisibleNameColor(player, nameColor, false);
}*/
canWrite = true;
_cursedweapon = player.isCursedWeaponEquipped() ? CursedWeaponsManager.getInstance().getLevel(player.getCursedWeaponEquippedId()) : 0;
}
@Override
protected boolean canWrite()
{
return canWrite;
}
@Override
protected void writeImpl() {
ByteBuffer cachedInformation = writeCachedParameters(this);
ByteBuffer realTimeInformation = writeRealTimeParameters(this);
writeH(Short.BYTES + cachedInformation.position());
writeB(Arrays.copyOfRange(cachedInformation.array(), 0, cachedInformation.position()));
writeH(Short.BYTES + realTimeInformation.position());
writeB(Arrays.copyOfRange(realTimeInformation.array(), 0, realTimeInformation.position()));
}
private ByteBuffer writeCachedParameters(ExCharInfo packet)
{
ByteBuffer buffer = ByteBuffer.allocate(800).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(packet.objId);
buffer.putShort((short) packet.race);
buffer.put((byte) packet.sex);
buffer.putInt(packet.baseClass);
buffer.putShort((short) (Short.BYTES + (Integer.BYTES * PAPERDOLL_ORDER.length)));
for (int paperdollId : PAPERDOLL_ORDER)
{
buffer.putInt(packet.paperdolls[paperdollId][0]);
}
buffer.putShort((short) (Short.BYTES + (Integer.BYTES * ((PAPERDOLL_ORDER_AUGMENT.length * 2)))));
for (int paperdollId : PAPERDOLL_ORDER_AUGMENT)
{
buffer.putInt(packet.paperdolls[paperdollId][1]);
}
for (int paperdollId : PAPERDOLL_ORDER_AUGMENT)
{
buffer.putInt(packet.paperdolls[paperdollId][2]);
}
// Armor Enchant Abnormal
buffer.put((byte) packet.armorSetEnchant);
buffer.putShort((short) (Short.BYTES + (Integer.BYTES * PAPERDOLL_ORDER_VISUAL_ID.length)));
for (int paperdollId : PAPERDOLL_ORDER_VISUAL_ID)
{
buffer.putInt(packet.paperdolls[paperdollId][3]);
}
buffer.put((byte) packet.pvpFlag);
buffer.putInt(packet.karma);
buffer.putInt(packet.mAtkSpd);
buffer.putInt(packet.pAtkSpd);
buffer.putInt(packet.runSpd);
buffer.putInt(packet.walkSpd);
buffer.putInt(packet.swimRunSpd);
buffer.putInt(packet.swimWalkSpd);
buffer.putInt(packet.flRunSpd);
buffer.putInt(packet.flWalkSpd);
buffer.putInt(packet.flyRunSpd);
buffer.putInt(packet.flyWalkSpd);
buffer.putFloat((float) packet.speedMove);
buffer.putFloat((float) packet.speedAtack);
buffer.putFloat((float) packet.colRadius);
buffer.putFloat((float) packet.colHeight);
buffer.putInt(packet.hairStyle);
buffer.putInt(packet.hairColor);
buffer.putInt(packet.face);
buffer.putShort((short) packet.title.length());
buffer.put(packet.title.getBytes(StandardCharsets.UTF_16LE));
buffer.putInt(packet.clanId);
buffer.putInt(packet.clanCrestId);
buffer.putInt(packet.allyId);
buffer.putInt(packet.allyCrestId);
buffer.put((byte) packet.sit);
buffer.put((byte) packet.run);
buffer.put((byte) packet.combat);
buffer.put((byte) packet.mountType); // 1-on Strider, 2-on Wyvern, 3-on Great Wolf, 0-no mount
buffer.put((byte) packet.privateStore);
buffer.putInt(packet.cubics.length);
for (Cubic cubic : packet.cubics)
{
buffer.putShort((short) (cubic == null ? 0 : cubic.getId()));
}
buffer.put((byte) (packet.partyRoomLeader ? 1 : 0)); // find party members
buffer.put((byte) (packet.flying ? 2 : 0));
buffer.putShort((short) packet.recHave);
buffer.putInt(packet.mountId);
buffer.putInt(packet.classId);
buffer.putInt(0); // Foot Effect
// TODO: FIND ME
buffer.put((byte) packet.enchant); // cSNEnchant
buffer.put((byte) 0); // cBackEnchant
buffer.put((byte) 0); // cHairEnchant
buffer.put((byte) 0); // cHair2Enchant
buffer.put((byte) packet.teamType.ordinal()); // team circle around feet 1 = Blue, 2 = red
buffer.putInt(packet.largeClanCrestId);
buffer.put((byte) (packet.noble ? 1 : 0)); // Is Noble
buffer.put((byte) packet.hero);
buffer.put((byte) packet.fishing);
buffer.putInt(packet.fishLoc.getX());
buffer.putInt(packet.fishLoc.getY());
buffer.putInt(packet.fishLoc.getZ());
buffer.putInt(packet.nameColor);
buffer.putInt(packet.heading);
buffer.put((byte) packet.pledgeClass);
buffer.putShort((short) packet.pledgeType);
buffer.putInt(packet.titleColor);
buffer.put((byte) _cursedweapon); // Cursed Weapon Level
buffer.putInt(packet.clanRepScore);
buffer.putInt(packet.transformId);
buffer.putInt(packet.agathionId);
buffer.put((byte) 0); // nPvPRestrainStatus
buffer.putInt(packet.curCp);
buffer.putInt(packet.curHp);
buffer.putInt(packet.maxHp);
buffer.putInt(packet.curMp);
buffer.putInt(packet.maxMp);
buffer.put((byte) 0); // cBRLectureMark
buffer.putInt(packet.abnormalEffects.size());
for (AbnormalEffect abnormal : packet.abnormalEffects)
{
buffer.putShort((short) abnormal.getClientId());
}
buffer.put((byte) 0); // Chaos Festival Winner
buffer.put((byte) (packet.showHeadAccessories ? 1 : 0));
buffer.put((byte) 0); // Used Abilities Points
buffer.putInt(0); // nCursedWeaponClassId:
buffer.putInt(-1); // nWaitActionId
buffer.putInt(packet._ranking);
buffer.putShort((short) 0); // hNotoriety
buffer.putInt(packet.classId); // again class id
buffer.putInt(0); // nCharacterColorIndex
buffer.putInt(Config.REQUEST_ID); // again class id
return buffer;
}
private static ByteBuffer writeRealTimeParameters(ExCharInfo packet)
{
ByteBuffer buffer = ByteBuffer.allocate(800).order(ByteOrder.LITTLE_ENDIAN);
buffer.put((byte) 0); // cCreateOrUpdate
buffer.put((byte) 0); // cShowSpawnEvent
buffer.putInt(packet.x);
buffer.putInt(packet.y);
buffer.putInt(packet.z);
buffer.putInt(packet.boatId);
buffer.putShort((short) packet.name.length());
buffer.put(packet.name.getBytes(StandardCharsets.UTF_16LE));
buffer.put((byte) packet.dead);
buffer.put((byte) 0); // cOrcRiderShapeLevel [Mobius: 362 - Vanguard mount.]
buffer.putInt(0); // nlastDeadStatus
buffer.putInt(0); // nEnemyKillCount
return buffer;
}
}
не вижу ничего такого, так что - скорее всего действительно - добро пожаловать в мир кармы.вот пакет MrKirill1232
Java:package org.mmocore.gameserver.serverpackets.Character; import org.mmocore.gameserver.Config; import org.mmocore.gameserver.geometry.ILocation; import org.mmocore.gameserver.instancemanager.CursedWeaponsManager; import org.mmocore.gameserver.model.Creature; import org.mmocore.gameserver.model.Player; import org.mmocore.gameserver.model.actor.instances.player.Cubic; import org.mmocore.gameserver.model.base.TeamType; import org.mmocore.gameserver.model.entity.Hero; import org.mmocore.gameserver.model.items.Inventory; import org.mmocore.gameserver.model.items.PcInventory; import org.mmocore.gameserver.model.matching.MatchingRoom; import org.mmocore.gameserver.model.pledge.Alliance; import org.mmocore.gameserver.model.pledge.Clan; import org.mmocore.gameserver.serverpackets.L2GameServerPacket; import org.mmocore.gameserver.skills.AbnormalEffect; import org.mmocore.gameserver.utils.Location; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Set; public class ExCharInfo extends L2GameServerPacket { public static final int[] PAPERDOLL_ORDER = { Inventory.PAPERDOLL_UNDER, Inventory.PAPERDOLL_HEAD, Inventory.PAPERDOLL_RHAND, Inventory.PAPERDOLL_LHAND, Inventory.PAPERDOLL_GLOVES, Inventory.PAPERDOLL_CHEST, Inventory.PAPERDOLL_LEGS, Inventory.PAPERDOLL_FEET, Inventory.PAPERDOLL_BACK, Inventory.PAPERDOLL_LRHAND, Inventory.PAPERDOLL_HAIR, Inventory.PAPERDOLL_DHAIR }; private static final int[] PAPERDOLL_ORDER_AUGMENT = { Inventory.PAPERDOLL_RHAND, Inventory.PAPERDOLL_LHAND, Inventory.PAPERDOLL_RHAND }; private static final int[] PAPERDOLL_ORDER_VISUAL_ID = { Inventory.PAPERDOLL_RHAND, Inventory.PAPERDOLL_LHAND, Inventory.PAPERDOLL_RHAND, Inventory.PAPERDOLL_GLOVES, Inventory.PAPERDOLL_CHEST, Inventory.PAPERDOLL_LEGS, Inventory.PAPERDOLL_FEET, Inventory.PAPERDOLL_HAIR, Inventory.PAPERDOLL_DHAIR }; private static final Logger LOGGER = LoggerFactory.getLogger(ExCharInfo.class); private boolean canWrite = false; private int[][] paperdolls; private int mAtkSpd, pAtkSpd; private int runSpd, walkSpd, swimRunSpd, swimWalkSpd, flRunSpd, flWalkSpd, flyRunSpd, flyWalkSpd; private ILocation fishLoc; private String name, title; private int x, y, z, heading, boatId; private int objId, race, sex, baseClass, pvpFlag, karma, recHave; private double speedMove, speedAtack, colRadius, colHeight; private int hairStyle, hairColor, face; private int clanId, clanCrestId, largeClanCrestId, allyId, allyCrestId, classId; private int sit, run, combat, dead, privateStore, enchant; private int hero, fishing, mountType; private int pledgeClass, pledgeType, clanRepScore, mountId; private int nameColor, titleColor, transformId, agathionId; private Cubic[] cubics; private boolean partyRoomLeader, flying; private int curHp, maxHp, curMp, maxMp, curCp; private TeamType teamType; private Set<AbnormalEffect> abnormalEffects; private boolean showHeadAccessories; private int armorSetEnchant; private boolean noble; private int _ranking, _cursedweapon; public ExCharInfo(Creature cha, Player receiver) { if (cha == null) { LOGGER.error("CIPacket: cha is null!", new Exception()); return; } if (receiver == null) return; if (cha.isInvisible(receiver)) return; if (cha.isDeleted()) return; objId = cha.getObjectId(); if (objId == 0) return; if (receiver.getObjectId() == objId) { LOGGER.error("You cant send CIPacket about his character to active user!!!", new Exception()); return; } Player player = cha.getPlayer(); if (player == null) return; Location loc = null; if (player.isInBoat()) { loc = player.getInBoatPosition(); boatId = player.getBoat().getBoatId(); } if (loc == null) loc = cha.getLoc(); x = loc.x; y = loc.y; z = loc.z; heading = loc.h; name = player.getVisibleName(receiver); nameColor = player.getVisibleNameColor(receiver); if (player.isConnected() || player.isInOfflineMode() || player.isFakePlayer()) { title = player.getVisibleTitle(receiver); titleColor = player.getVisibleTitleColor(receiver); } else { title = "NO CARRIER"; titleColor = 255; } if (player.isPledgeVisible(receiver)) { Clan clan = player.getClan(); Alliance alliance = clan == null ? null : clan.getAlliance(); // clanId = clan == null ? 0 : clan.getClanId(); clanCrestId = clan == null ? 0 : clan.getCrestId(); largeClanCrestId = clan == null ? 0 : clan.getCrestLargeId(); // allyId = alliance == null ? 0 : alliance.getAllyId(); allyCrestId = alliance == null ? 0 : alliance.getAllyCrestId(); } if (player.isMounted()) { enchant = 0; mountId = player.getMountNpcId() + 1000000; mountType = player.getMountType().ordinal(); } else { enchant = player.getEnchantEffect(); mountId = 0; mountType = 0; } paperdolls = new int[PcInventory.PAPERDOLL_MAX][4]; for(int PAPERDOLL_ID : PAPERDOLL_ORDER) { paperdolls[PAPERDOLL_ID][0] = player.getInventory().getPaperdollItemId(PAPERDOLL_ID); paperdolls[PAPERDOLL_ID][1] = player.getInventory().getPaperdollVariation1Id(PAPERDOLL_ID); paperdolls[PAPERDOLL_ID][2] = player.getInventory().getPaperdollVariation2Id(PAPERDOLL_ID); paperdolls[PAPERDOLL_ID][3] = player.getInventory().getPaperdollVisualId(PAPERDOLL_ID); } mAtkSpd = player.getMAtkSpd(); pAtkSpd = player.getPAtkSpd(); speedMove = player.getMovementSpeedMultiplier(); runSpd = (int) (player.getRunSpeed() / speedMove); walkSpd = (int) (player.getWalkSpeed() / speedMove); flRunSpd = 0; // TODO flWalkSpd = 0; // TODO if (player.isFlying()) { flyRunSpd = runSpd; flyWalkSpd = walkSpd; } else { flyRunSpd = 0; flyWalkSpd = 0; } swimRunSpd = player.getSwimRunSpeed(); swimWalkSpd = player.getSwimWalkSpeed(); race = player.getRace().ordinal(); sex = player.getSex().ordinal(); baseClass = player.getBaseDefaultClassId(); pvpFlag = player.getPvpFlag(); karma = player.getKarma(); speedAtack = player.getAttackSpeedMultiplier(); colRadius = player.getCurrentCollisionRadius(); colHeight = player.getCurrentCollisionHeight(); hairStyle = player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR) > 0 ? sex : (player.getBeautyHairStyle() > 0 ? player.getBeautyHairStyle() : player.getHairStyle()); hairColor = player.getBeautyHairColor() > 0 ? player.getBeautyHairColor() : player.getHairColor(); face = player.getBeautyFace() > 0 ? player.getBeautyFace() : player.getFace(); if (clanId > 0 && player.getClan() != null) clanRepScore = (int) player.getClan().getReputationScore(); else clanRepScore = 0; sit = player.isSitting() ? 0 : 1; // standing = 1 sitting = 0 run = player.isRunning() ? 1 : 0; // running = 1 walking = 0 combat = player.isInCombat() ? 1 : 0; dead = player.isAlikeDead() ? 1 : 0; privateStore = player.isInObserverMode() ? Player.STORE_OBSERVING_GAMES : player.getPrivateStoreType(); cubics = player.getCubics().toArray(new Cubic[0]); abnormalEffects = player.getAbnormalEffects(); recHave = player.isGM() ? 0 : player.getRecomHave(); classId = player.getClassId().getId(); teamType = player.getTeam(); hero = player.isHero() || player.isGM() && Config.GM_HERO_AURA ? 2 : 0; // 0x01: Hero Aura if (hero == 0) hero = Hero.getInstance().isInactiveHero(objId) ? 1 : 0; noble = hero > 0; fishing = player.isFishing() ? 1 : 0; fishLoc = player.getFishing().getHookLocation(); pledgeClass = player.getPledgeClass(); pledgeType = player.getPledgeType(); transformId = player.getVisualTransformId(); agathionId = player.getAgathionNpcId(); partyRoomLeader = player.getMatchingRoom() != null && player.getMatchingRoom().getType() == MatchingRoom.PARTY_MATCHING && player.getMatchingRoom().getLeader() == player; flying = player.isInFlyingTransform(); curHp = (int) player.getCurrentHp();//receiver.canReceiveStatusUpdate(player, StatusUpdatePacket.UpdateType.DEFAULT, StatusUpdatePacket.CUR_HP) ? (int) player.getCurrentHp() : 0; maxHp = player.getMaxHp();//receiver.canReceiveStatusUpdate(player, StatusUpdatePacket.UpdateType.DEFAULT, StatusUpdatePacket.MAX_HP) ? player.getMaxHp() : 0; curMp = (int) player.getCurrentMp(); maxMp = player.getMaxMp(); curCp = (int) player.getCurrentCp(); showHeadAccessories = !player.hideHeadAccessories(); armorSetEnchant = player.getArmorSetEnchant(); _ranking = player.isTopRank() ? 1 : player.isTopRaceRank() ? 2 : player.isTopClassRank() ? 3 : 0; /*if(player.isInFightClub()) { AbFightstractClub fightClubEvent = player.getFightClubEvent(); name = fightClubEvent.getVisibleName(player, name, false); title = fightClubEvent.getVisibleTitle(player, title, false); titleColor = fightClubEvent.getVisibleTitleColor(player, titleColor, false); nameColor = fightClubEvent.getVisibleNameColor(player, nameColor, false); }*/ canWrite = true; _cursedweapon = player.isCursedWeaponEquipped() ? CursedWeaponsManager.getInstance().getLevel(player.getCursedWeaponEquippedId()) : 0; } @Override protected boolean canWrite() { return canWrite; } @Override protected void writeImpl() { ByteBuffer cachedInformation = writeCachedParameters(this); ByteBuffer realTimeInformation = writeRealTimeParameters(this); writeH(Short.BYTES + cachedInformation.position()); writeB(Arrays.copyOfRange(cachedInformation.array(), 0, cachedInformation.position())); writeH(Short.BYTES + realTimeInformation.position()); writeB(Arrays.copyOfRange(realTimeInformation.array(), 0, realTimeInformation.position())); } private ByteBuffer writeCachedParameters(ExCharInfo packet) { ByteBuffer buffer = ByteBuffer.allocate(800).order(ByteOrder.LITTLE_ENDIAN); buffer.putInt(packet.objId); buffer.putShort((short) packet.race); buffer.put((byte) packet.sex); buffer.putInt(packet.baseClass); buffer.putShort((short) (Short.BYTES + (Integer.BYTES * PAPERDOLL_ORDER.length))); for (int paperdollId : PAPERDOLL_ORDER) { buffer.putInt(packet.paperdolls[paperdollId][0]); } buffer.putShort((short) (Short.BYTES + (Integer.BYTES * ((PAPERDOLL_ORDER_AUGMENT.length * 2))))); for (int paperdollId : PAPERDOLL_ORDER_AUGMENT) { buffer.putInt(packet.paperdolls[paperdollId][1]); } for (int paperdollId : PAPERDOLL_ORDER_AUGMENT) { buffer.putInt(packet.paperdolls[paperdollId][2]); } // Armor Enchant Abnormal buffer.put((byte) packet.armorSetEnchant); buffer.putShort((short) (Short.BYTES + (Integer.BYTES * PAPERDOLL_ORDER_VISUAL_ID.length))); for (int paperdollId : PAPERDOLL_ORDER_VISUAL_ID) { buffer.putInt(packet.paperdolls[paperdollId][3]); } buffer.put((byte) packet.pvpFlag); buffer.putInt(packet.karma); buffer.putInt(packet.mAtkSpd); buffer.putInt(packet.pAtkSpd); buffer.putInt(packet.runSpd); buffer.putInt(packet.walkSpd); buffer.putInt(packet.swimRunSpd); buffer.putInt(packet.swimWalkSpd); buffer.putInt(packet.flRunSpd); buffer.putInt(packet.flWalkSpd); buffer.putInt(packet.flyRunSpd); buffer.putInt(packet.flyWalkSpd); buffer.putFloat((float) packet.speedMove); buffer.putFloat((float) packet.speedAtack); buffer.putFloat((float) packet.colRadius); buffer.putFloat((float) packet.colHeight); buffer.putInt(packet.hairStyle); buffer.putInt(packet.hairColor); buffer.putInt(packet.face); buffer.putShort((short) packet.title.length()); buffer.put(packet.title.getBytes(StandardCharsets.UTF_16LE)); buffer.putInt(packet.clanId); buffer.putInt(packet.clanCrestId); buffer.putInt(packet.allyId); buffer.putInt(packet.allyCrestId); buffer.put((byte) packet.sit); buffer.put((byte) packet.run); buffer.put((byte) packet.combat); buffer.put((byte) packet.mountType); // 1-on Strider, 2-on Wyvern, 3-on Great Wolf, 0-no mount buffer.put((byte) packet.privateStore); buffer.putInt(packet.cubics.length); for (Cubic cubic : packet.cubics) { buffer.putShort((short) (cubic == null ? 0 : cubic.getId())); } buffer.put((byte) (packet.partyRoomLeader ? 1 : 0)); // find party members buffer.put((byte) (packet.flying ? 2 : 0)); buffer.putShort((short) packet.recHave); buffer.putInt(packet.mountId); buffer.putInt(packet.classId); buffer.putInt(0); // Foot Effect // TODO: FIND ME buffer.put((byte) packet.enchant); // cSNEnchant buffer.put((byte) 0); // cBackEnchant buffer.put((byte) 0); // cHairEnchant buffer.put((byte) 0); // cHair2Enchant buffer.put((byte) packet.teamType.ordinal()); // team circle around feet 1 = Blue, 2 = red buffer.putInt(packet.largeClanCrestId); buffer.put((byte) (packet.noble ? 1 : 0)); // Is Noble buffer.put((byte) packet.hero); buffer.put((byte) packet.fishing); buffer.putInt(packet.fishLoc.getX()); buffer.putInt(packet.fishLoc.getY()); buffer.putInt(packet.fishLoc.getZ()); buffer.putInt(packet.nameColor); buffer.putInt(packet.heading); buffer.put((byte) packet.pledgeClass); buffer.putShort((short) packet.pledgeType); buffer.putInt(packet.titleColor); buffer.put((byte) _cursedweapon); // Cursed Weapon Level buffer.putInt(packet.clanRepScore); buffer.putInt(packet.transformId); buffer.putInt(packet.agathionId); buffer.put((byte) 0); // nPvPRestrainStatus buffer.putInt(packet.curCp); buffer.putInt(packet.curHp); buffer.putInt(packet.maxHp); buffer.putInt(packet.curMp); buffer.putInt(packet.maxMp); buffer.put((byte) 0); // cBRLectureMark buffer.putInt(packet.abnormalEffects.size()); for (AbnormalEffect abnormal : packet.abnormalEffects) { buffer.putShort((short) abnormal.getClientId()); } buffer.put((byte) 0); // Chaos Festival Winner buffer.put((byte) (packet.showHeadAccessories ? 1 : 0)); buffer.put((byte) 0); // Used Abilities Points buffer.putInt(0); // nCursedWeaponClassId: buffer.putInt(-1); // nWaitActionId buffer.putInt(packet._ranking); buffer.putShort((short) 0); // hNotoriety buffer.putInt(packet.classId); // again class id buffer.putInt(0); // nCharacterColorIndex buffer.putInt(Config.REQUEST_ID); // again class id return buffer; } private static ByteBuffer writeRealTimeParameters(ExCharInfo packet) { ByteBuffer buffer = ByteBuffer.allocate(800).order(ByteOrder.LITTLE_ENDIAN); buffer.put((byte) 0); // cCreateOrUpdate buffer.put((byte) 0); // cShowSpawnEvent buffer.putInt(packet.x); buffer.putInt(packet.y); buffer.putInt(packet.z); buffer.putInt(packet.boatId); buffer.putShort((short) packet.name.length()); buffer.put(packet.name.getBytes(StandardCharsets.UTF_16LE)); buffer.put((byte) packet.dead); buffer.put((byte) 0); // cOrcRiderShapeLevel [Mobius: 362 - Vanguard mount.] buffer.putInt(0); // nlastDeadStatus buffer.putInt(0); // nEnemyKillCount return buffer; } }
Просто так?У ПЕРСОНАЖЕЙ ПОСТОЯННО МЕНЯЕТЬСЯ ЦВЕТ НИКА
к сожилении я сейчас не могу записать видио. это происходит сразу после входа в игру ники иногда разные вот например сейчас тёмно зелённый до этого был злёный когда-то был красный постоянно разные. вот сейчас он стал белым вот например я заметил что в адене и в стартовых зоннах он постоянно зелённый в этой зоне он белый. у камаелей он красный. вот уже полител в аден за этих же персонажей один стал уже былым обратно а у другого персонажа зелёный. до того как я апал покетку такого небыло.не вижу ничего такого, так что - скорее всего действительно - добро пожаловать в мир кармы.
Запишите видео как у вас это получается, а то инфы мало пока.
цвет меняется при входе и при телепортации. пока заметил зелёный тёмно зелёный белый красны и был когда-то жёлтый.Просто так?
После чего именно это происходит?
И с какого на какой меняется цвет?
Видно ли это изменение другим игрокам или только тебе?
Чей цвет меняется - твой или другого игрока?
Перс гм или нет?
покажи getVisibleNameColor который в Player
public int getVisibleNameColor(Player receiver) {
if (isInBuffStore()) {
OfflineBufferManager.BufferData bufferData = OfflineBufferManager.getInstance().getBuffStore(getObjectId());
if (bufferData != null) {
if (isInOfflineMode())
return Config.BUFF_STORE_OFFLINE_NAME_COLOR;
else
return Config.BUFF_STORE_NAME_COLOR;
}
}
if (isInStoreMode() && isInOfflineMode()) {
return Config.SERVICES_OFFLINE_TRADE_NAME_COLOR;
}
Integer color;
for (GlobalEvent event : getEvents()) {
color = event.getVisibleNameColor(this, receiver);
if (color != null)
return color.intValue();
}
// int premiumNameColor = getPremiumAccount().getProperties().getNameColor();
// if(premiumNameColor != -1)
// return premiumNameColor;
return getNameColor();
}
смог решить проблему ?к сожилении я сейчас не могу записать видио. это происходит сразу после входа в игру ники иногда разные вот например сейчас тёмно зелённый до этого был злёный когда-то был красный постоянно разные. вот сейчас он стал белым вот например я заметил что в адене и в стартовых зоннах он постоянно зелённый в этой зоне он белый. у камаелей он красный. вот уже полител в аден за этих же персонажей один стал уже былым обратно а у другого персонажа зелёный. до того как я апал покетку такого небыло. Посмотреть вложение 92879Посмотреть вложение 92880Посмотреть вложение 92881Посмотреть вложение 92882
цвет меняется при входе и при телепортации. пока заметил зелёный тёмно зелёный белый красны и был когда-то жёлтый.
другим не видно. меняется не мой ник а ник другого персонажа которого я вижу. персонажы гм.
Java:public int getVisibleNameColor(Player receiver) { if (isInBuffStore()) { OfflineBufferManager.BufferData bufferData = OfflineBufferManager.getInstance().getBuffStore(getObjectId()); if (bufferData != null) { if (isInOfflineMode()) return Config.BUFF_STORE_OFFLINE_NAME_COLOR; else return Config.BUFF_STORE_NAME_COLOR; } } if (isInStoreMode() && isInOfflineMode()) { return Config.SERVICES_OFFLINE_TRADE_NAME_COLOR; } Integer color; for (GlobalEvent event : getEvents()) { color = event.getVisibleNameColor(this, receiver); if (color != null) return color.intValue(); } // int premiumNameColor = getPremiumAccount().getProperties().getNameColor(); // if(premiumNameColor != -1) // return premiumNameColor; return getNameColor(); }
да прост написал в описании сервера: "уникальная механика - при каждом входе разный цвет ника!" и закрыл кейс, делов то.смог решить проблему ?
фича сервера выходит на новый уровеньда прост написал в описании сервера: "уникальная механика - при каждом входе разный цвет ника!" и закрыл кейс, делов то.
Фича такого сервера будет не айсда прост написал в описании сервера: "уникальная механика - при каждом входе разный цвет ника!" и закрыл кейс, делов то.
красавчик, что когда нашел проблему - отписался на форум, а не просто забиля решил проблему, прикол был в том что я не реализовал пакетные данные для пакеты
/*0xCE*/ RelationChanged. интересно почему он повлиял на цвет ника?
мне просто нравиться когда я захожу в мои темы а там всё зелёным светиться)красавчик, что когда нашел проблему - отписался на форум, а не просто забил