because it is not installed, I show why I
3.7 emu membership properties:
---------------------------- # Membership config's: # ---------------------------- # # This file contains settings for premium membership players # Masks (if no additional comments) # 10 - disabled # 3-9 - membership 3-9 # 2 - vip (membership 2) # 1 - premium (membership 1) # 0 - all players # # Disable instances title requirement # Default: 10 gameserver.instances.title.requirement = 10 # Disable instances race requirement # Default: 10 gameserver.instances.race.requirement = 10 # Disable instances level requirement # Default: 10 gameserver.instances.level.requirement = 10 # Disable instances group requirement # Default: 10 gameserver.instances.group.requirement = 10 # Disable instances quest requirement # Default: 10 gameserver.instances.quest.requirement = 10 # Disable instances item requirement # Default: 10 gameserver.instances.item.requirement = 10 # Decrease instances cooldowns # Default: 10 gameserver.instances.cooldown = 10 # All items can be storable in warehouse # Default: 10 gameserver.store.wh.all = 10 # All items can be storable in account warehouse # Default: 10 gameserver.store.accountwh.all = 10 # All items can be storable in legion warehouse # Default: 10 gameserver.store.legionwh.all = 10 # All items can be tradeable # Default: 10 gameserver.trade.all = 10 # Soulbound items can be tradeable # Default: 10 gameserver.disable.soulbind = 10 # All items can be remodelable # Default: 10 gameserver.remodel.all = 10 # All emotions available # Default: 10 gameserver.emotions.all = 0 # Not require quest for normal/advanced stigma slots # Default: 10 gameserver.quest.stigma.slot = 0 # Disable soulsickness (debuf after death) # Default: 10 gameserver.soulsickness.disable = 1 # Enable skill auto learn mode # Default: 10 gameserver.autolearn.skill = 10 # Enable stigma auto learn mode # Default: 10 gameserver.autolearn.stigma = 10 # Disable quest limit # Default: 10 gameserver.quest.limit.disable = 0 # Enable 10 additional titles # Default: 10 gameserver.titles.additional.enable = 10 # Enable additional count of characters per account # Default: 10 gameserver.character.additional.enable = 10 # Enable advanced friendlist size # Default: 10 gameserver.advanced.friendlist.enable = 10 # ---------------------------- # Membership Options: # ---------------------------- # Count of characters for this membership (max 8) # Default: 8 gameserver.character.additional.count = 8 # Friendlist size (max 90) # Default: 90 gameserver.advanced.friendlist.size = 90 # ---------------------------- # VIP Tag Options: # ---------------------------- # Display VIP Tags # Default: True gameserver.vip.tag.display = true
<------ vip tag dysplay # Display Name for VIP Level 1 # Default: <PREMIUM> gameserver.vip.tag.1 = <PREMIUM> # Display Name for VIP Level 2 # Default: <VIP> gameserver.vip.tag.2 = <VIP> # ---------------------------- # Special Membership Options: # ---------------------------- # ONLY FOR TESTING PURPOSES # SHOULD BE ALWAYS DISABLED!!! # Special Membership Enable # Default: False gameserver.special.membership = false # ---------------------------- # Online Bonus: # ---------------------------- # Enable Online Bonus # Default: True gameserver.onlinebonus.enable = true # Online Bonus Item # Default: 186000127 gameserver.onlinebonus.item = 186000127 # Online Bonus Item Count # Default: 1 gameserver.onlinebonus.count = 1 # Online Bonus Time (In Minutes) # Default: 30 gameserver.onlinebonus.time = 30
SM_PLAYER_INFO.java
* */ package com.aionemu.gameserver.network.aion.serverpackets; import java.util.List; import com.aionemu.gameserver.configs.administration.AdminConfig; import com.aionemu.gameserver.configs.main.MembershipConfig; import com.aionemu.gameserver.model.actions.PlayerMode; import com.aionemu.gameserver.model.gameobjects.Item; import com.aionemu.gameserver.model.gameobjects.player.Player; import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance; import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData; import com.aionemu.gameserver.model.items.GodStone; import com.aionemu.gameserver.model.stats.calc.Stat2; import com.aionemu.gameserver.model.team.legion.LegionEmblemType; import com.aionemu.gameserver.network.aion.AionConnection; import com.aionemu.gameserver.network.aion.AionServerPacket; /** * This packet is displaying visible players. * * @author -Nemesiss-, Avol, srx47 modified cura, Maestross, GoodT */ public class SM_PLAYER_INFO extends AionServerPacket { /** * Visible player */ private final Player player; private boolean enemy; /** * Constructs new <tt>SM_PLAYER_INFO </tt> packet * * @param player * actual player. * @param enemy */ public SM_PLAYER_INFO(Player player, boolean enemy) { this.player = player; this.enemy = enemy; } /** * {@inheritDoc} */ @Override protected void writeImpl(AionConnection con) { Player activePlayer = con.getActivePlayer(); if (activePlayer == null || player == null) { return; } PlayerCommonData pcd = player.getCommonData(); final int raceId; if (player.getAdminNeutral() > 1 || activePlayer.getAdminNeutral() > 1) { raceId = activePlayer.getRace().getRaceId(); } else if (activePlayer.isEnemy(player)) { raceId = (activePlayer.getRace().getRaceId() == 0 ? 1 : 0); } else raceId = player.getRace().getRaceId(); final int genderId = pcd.getGender().getGenderId(); final PlayerAppearance playerAppearance = player.getPlayerAppearance(); writeF(player.getX());// x writeF(player.getY());// y writeF(player.getZ());// z writeD(player.getObjectId()); /** * A3 female asmodian A2 male asmodian A1 female elyos A0 male elyos */ writeD(pcd.getTemplateId()); /** * Transformed state - send transformed model id Regular state - send player model id (from common data) */ int model = player.getTransformModel().getModelId(); writeD(model != 0 ? model : pcd.getTemplateId()); writeC(0x00); // new 2.0 Packet --- probably pet info? writeD(player.getTransformModel().getType().getId()); writeC(enemy ? 0 : 38); writeC(raceId); // race writeC(pcd.getPlayerClass().getClassId()); writeC(genderId); // sex writeH(player.getState()); writeB(new byte[8]); writeC(player.getHeading()); String playerName = ""; String ffaPlayerName = ""; //it looks a little bit difficult but on this way the playername will be untouched
//& the Ducking vip logo dont override the admin/gm tag
if ((player.getClientConnection() != null) && (AdminConfig.ADMIN_TAG_ENABLE)) { if (player.isGM()) { playerName = getAdminTag(); } } if (MembershipConfig.VIPTAG_DISPLAY) {
<---- vip tag dysplay if(player.getClientConnection().getAccount().getMembership() > 0) { //if he's gm = do nothing, else the gmtag wont display if (player.isGM()) { } //he's not gm so else { if(player.getClientConnection().getAccount().getMembership() == 1) { playerName = ("" + MembershipConfig.VIP_LEVEL1 + ""); } else if(player.getClientConnection().getAccount().getMembership() == 2) { playerName = ("\uE023" + MembershipConfig.VIP_LEVEL2 + ""); } } } } //Now after tag: <ADMIN> // <VIP> //add name playerName += player.getName(); if (player.isInFFAPVP()) { writeS(ffaPlayerName); } else { writeS(playerName); } writeH(pcd.getTitleId()); writeH(player.getCommonData().isHaveMentorFlag()? 1:0); writeH(player.getCastingSkillId()); if (player.isLegionMember()) { writeD(player.getLegion().getLegionId()); writeC(player.getLegion().getLegionEmblem().getEmblemId()); writeC(player.getLegion().getLegionEmblem().getEmblemType().getValue()); writeC(player.getLegion().getLegionEmblem().getEmblemType() == LegionEmblemType.DEFAULT ? 0x00 : 0xFF); writeC(player.getLegion().getLegionEmblem().getColor_r()); writeC(player.getLegion().getLegionEmblem().getColor_g()); writeC(player.getLegion().getLegionEmblem().getColor_b()); writeS(player.getLegion().getLegionName()); } else writeB(new byte[12]); int maxHp = player.getLifeStats().getMaxHp(); int currHp = player.getLifeStats().getCurrentHp(); writeC(100 * currHp / maxHp);// %hp writeH(pcd.getDp());// current dp writeC(0x00);// unk (0x00) List<Item> items = player.getEquipment().getEquippedForApparence(); short mask = 0; for (Item item : items) { mask |= item.getEquipmentSlot(); } writeH(mask); for (Item item : items) { if (item.getEquipmentSlot() < Short.MAX_VALUE * 2) { writeD(item.getItemSkinTemplate().getTemplateId()); GodStone godStone = item.getGodStone(); writeD(godStone != null ? godStone.getItemId() : 0); writeD(item.getItemColor()); writeH(0x00);// unk (0x00) } } writeD(playerAppearance.getSkinRGB()); writeD(playerAppearance.getHairRGB()); writeD(playerAppearance.getEyeRGB()); writeD(playerAppearance.getLipRGB()); writeC(playerAppearance.getFace()); writeC(playerAppearance.getHair()); writeC(playerAppearance.getDeco()); writeC(playerAppearance.getTattoo()); writeC(playerAppearance.getFaceContour()); writeC(playerAppearance.getExpression()); writeC(5);// always 5 o0 writeC(playerAppearance.getJawLine()); writeC(playerAppearance.getForehead()); writeC(playerAppearance.getEyeHeight()); writeC(playerAppearance.getEyeSpace()); writeC(playerAppearance.getEyeWidth()); writeC(playerAppearance.getEyeSize()); writeC(playerAppearance.getEyeShape()); writeC(playerAppearance.getEyeAngle()); writeC(playerAppearance.getBrowHeight()); writeC(playerAppearance.getBrowAngle()); writeC(playerAppearance.getBrowShape()); writeC(playerAppearance.getNose()); writeC(playerAppearance.getNoseBridge()); writeC(playerAppearance.getNoseWidth()); writeC(playerAppearance.getNoseTip()); writeC(playerAppearance.getCheek()); writeC(playerAppearance.getLipHeight()); writeC(playerAppearance.getMouthSize()); writeC(playerAppearance.getLipSize()); writeC(playerAppearance.getSmile()); writeC(playerAppearance.getLipShape()); writeC(playerAppearance.getJawHeigh()); writeC(playerAppearance.getChinJut()); writeC(playerAppearance.getEarShape()); writeC(playerAppearance.getHeadSize()); // 1.5.x 0x00, shoulderSize, armLength, legLength (BYTE) after HeadSize writeC(playerAppearance.getNeck()); writeC(playerAppearance.getNeckLength()); writeC(playerAppearance.getShoulderSize()); writeC(playerAppearance.getTorso()); writeC(playerAppearance.getChest()); // only woman writeC(playerAppearance.getWaist()); writeC(playerAppearance.getHips()); writeC(playerAppearance.getArmThickness()); writeC(playerAppearance.getHandSize()); writeC(playerAppearance.getLegThicnkess()); writeC(playerAppearance.getFootSize()); writeC(playerAppearance.getFacialRate()); writeC(0x00); // always 0 writeC(playerAppearance.getArmLength()); writeC(playerAppearance.getLegLength()); writeC(playerAppearance.getShoulders()); writeC(playerAppearance.getFaceShape()); writeC(0x00); // always 0 writeC(playerAppearance.getVoice()); writeF(playerAppearance.getHeight()); writeF(0.25f); // scale writeF(2.0f); // gravity or slide surface
writeF(player.getGameStats().getMovementSpeedFloat()); // move speed Stat2 attackSpeed = player.getGameStats().getAttackSpeed(); writeH(attackSpeed.getBase()); writeH(attackSpeed.getCurrent()); writeC(player.getPortAnimation()); writeS(player.hasStore() ? player.getStore().getStoreMessage() : "");// private store message /** * Movement */ writeF(0); writeF(0); writeF(0); writeF(player.getX());// x writeF(player.getY());// y writeF(player.getZ());// z writeC(0x00); // move type if (player.isUsingFlyTeleport()) { writeD(player.getFlightTeleportId()); writeD(player.getFlightDistance()); } else if (player.isInPlayerMode(PlayerMode.WINDSTREAM)) { writeD(player.windstreamPath.teleportId); writeD(player.windstreamPath.distance); } writeC(player.getVisualState()); // visualState writeS(player.getCommonData().getNote()); // note show in right down windows if your target on player writeH(player.getLevel()); // [level] writeH(player.getPlayerSettings().getDisplay()); // unk - 0x04 writeH(player.getPlayerSettings().getDeny()); // unk - 0x00 writeH(player.getAbyssRank().getRank().getId()); // abyss rank writeH(0x00); // unk - 0x01 writeD(player.getTarget() == null ? 0 : player.getTarget().getObjectId()); writeC(0); // suspect id writeD(player.isInAlliance2() ? player.getPlayerAlliance2().getTeamId() : player.isInGroup2() ? player.getPlayerGroup2().getTeamId() : 0); writeC(player.isMentor() ? 1 : 0); writeD(player.getHouseOwnerId()); writeD(1); //unk 0x01 } public String getAdminTag() { String playerName = ""; //if he's a GM has the tag if (player.getAccessLevel() == 1) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_1.trim() + "\uE043"); } else if (player.getAccessLevel() == 2) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_2.trim() + "\uE043"); } else if (player.getAccessLevel() == 3) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_3.trim() + "\uE043"); } else if (player.getAccessLevel() == 4) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_4.trim() + "\uE043"); } else if (player.getAccessLevel() == 5) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_5.trim() + "\uE043"); } else if (player.getAccessLevel() == 6) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_6.trim() + "\uE043"); } else if (player.getAccessLevel() == 7) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_7.trim() + "\uE043"); } else if (player.getAccessLevel() == 8) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_8.trim() + "\uE043"); } else if (player.getAccessLevel() == 9) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_9.trim() + "\uE043"); } else if (player.getAccessLevel() == 10) { playerName = ("\uE042" + AdminConfig.ADMIN_TAG_10.trim() + "\uE043"); } return playerName; } }
So I hope you understand what I mean
sorry just kinda pulls together a forum of lines, but the gist of it can be read