Addition of player PvP flag and Karma.
This commit is contained in:
parent
9c9220457b
commit
e111599ee8
19
L2J_Mobius_C1_HarbingersOfWar/dist/config/karma.ini
vendored
Normal file
19
L2J_Mobius_C1_HarbingersOfWar/dist/config/karma.ini
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# Rate Settings
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# Minimum player karma.
|
||||
KarmaMin=240
|
||||
|
||||
# Maximum player karma.
|
||||
KarmaMax=10000
|
||||
|
||||
# Base karma lost multiplier.
|
||||
KarmaLostMultiplier=1.0
|
||||
|
||||
# Drop item chance percent of each item.
|
||||
KarmaDropChance=5
|
||||
|
||||
# Items that cannot be dropped by karma.
|
||||
# Separate items with semicolons.
|
||||
KarmaProtectedItems=57;
|
@ -17,6 +17,10 @@
|
||||
*/
|
||||
package org.l2jmobius;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.l2jmobius.util.PropertiesParser;
|
||||
|
||||
/**
|
||||
@ -34,6 +38,7 @@ public class Config
|
||||
// --------------------------------------------------
|
||||
private static final String SERVER_CONFIG_FILE = "config/server.ini";
|
||||
private static final String RATES_CONFIG_FILE = "config/rates.ini";
|
||||
private static final String KARMA_CONFIG_FILE = "config/karma.ini";
|
||||
|
||||
// Game
|
||||
public static String _ip;
|
||||
@ -53,6 +58,12 @@ public class Config
|
||||
public static float RATE_SP;
|
||||
public static float RATE_DROP;
|
||||
public static float RATE_ADENA;
|
||||
// Karma
|
||||
public static int KARMA_MIN_KARMA;
|
||||
public static int KARMA_MAX_KARMA;
|
||||
public static float KARMA_LOST_MULTIPLIER;
|
||||
public static int KARMA_DROP_CHANCE;
|
||||
public static List<Integer> KARMA_PROTECTED_ITEMS;
|
||||
|
||||
public static void load()
|
||||
{
|
||||
@ -87,5 +98,14 @@ public class Config
|
||||
RATE_SP = ratesSettings.getFloat("RateSp", 1);
|
||||
RATE_DROP = ratesSettings.getFloat("RateDrop", 1);
|
||||
RATE_ADENA = ratesSettings.getFloat("RateAdena", 1);
|
||||
|
||||
// Load karma config file (if exists)
|
||||
final PropertiesParser karmaSettings = new PropertiesParser(KARMA_CONFIG_FILE);
|
||||
|
||||
KARMA_MIN_KARMA = karmaSettings.getInt("KarmaMin", 240);
|
||||
KARMA_MAX_KARMA = karmaSettings.getInt("KarmaMax", 10000);
|
||||
KARMA_LOST_MULTIPLIER = karmaSettings.getFloat("KarmaLostMultiplier", 1);
|
||||
KARMA_DROP_CHANCE = karmaSettings.getInt("KarmaDropChance", 5);
|
||||
KARMA_PROTECTED_ITEMS = Arrays.stream(karmaSettings.getIntArray("KarmaProtectedItems", ";")).boxed().collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@ -721,7 +721,6 @@ public class AdminCommands extends Thread
|
||||
player.setMaxMp(mpmaxval);
|
||||
player.setMaxLoad(loadval);
|
||||
player.setKarma(karmaval);
|
||||
player.setPvpFlag(pvpflagval);
|
||||
player.setPvpKills(pvpkillsval);
|
||||
player.setClassId(classidval);
|
||||
StatusUpdate su = new StatusUpdate(player.getObjectId());
|
||||
|
@ -23,12 +23,14 @@ import java.io.InputStreamReader;
|
||||
import java.io.LineNumberReader;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
|
||||
public class MapRegionTable
|
||||
{
|
||||
private static int[][] _regions = new int[19][21];
|
||||
private static MapRegionTable _instance;
|
||||
private static int[][] _townPositions = new int[13][3];
|
||||
private static int[][] _karmaPositions = new int[13][3];
|
||||
|
||||
public static MapRegionTable getInstance()
|
||||
{
|
||||
@ -41,7 +43,6 @@ public class MapRegionTable
|
||||
|
||||
private MapRegionTable()
|
||||
{
|
||||
super();
|
||||
int count = 0;
|
||||
try
|
||||
{
|
||||
@ -66,6 +67,87 @@ public class MapRegionTable
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
|
||||
_townPositions[0][0] = -84176;
|
||||
_townPositions[0][1] = 243382;
|
||||
_townPositions[0][2] = -3126;
|
||||
_townPositions[1][0] = 45525;
|
||||
_townPositions[1][1] = 48376;
|
||||
_townPositions[1][2] = -3059;
|
||||
_townPositions[2][0] = 12181;
|
||||
_townPositions[2][1] = 16675;
|
||||
_townPositions[2][2] = -4580;
|
||||
_townPositions[3][0] = -45232;
|
||||
_townPositions[3][1] = -113603;
|
||||
_townPositions[3][2] = -224;
|
||||
_townPositions[4][0] = 115074;
|
||||
_townPositions[4][1] = -178115;
|
||||
_townPositions[4][2] = -880;
|
||||
_townPositions[5][0] = -14138;
|
||||
_townPositions[5][1] = 122042;
|
||||
_townPositions[5][2] = -2988;
|
||||
_townPositions[6][0] = -82856;
|
||||
_townPositions[6][1] = 150901;
|
||||
_townPositions[6][2] = -3128;
|
||||
_townPositions[7][0] = 18823;
|
||||
_townPositions[7][1] = 145048;
|
||||
_townPositions[7][2] = -3126;
|
||||
_townPositions[8][0] = 83235;
|
||||
_townPositions[8][1] = 148497;
|
||||
_townPositions[8][2] = -3404;
|
||||
_townPositions[9][0] = 80853;
|
||||
_townPositions[9][1] = 54653;
|
||||
_townPositions[9][2] = -1524;
|
||||
_townPositions[10][0] = 147391;
|
||||
_townPositions[10][1] = 25967;
|
||||
_townPositions[10][2] = -2012;
|
||||
_townPositions[11][0] = 117163;
|
||||
_townPositions[11][1] = 76511;
|
||||
_townPositions[11][2] = -2712;
|
||||
_townPositions[12][0] = 83235;
|
||||
_townPositions[12][1] = 148497;
|
||||
_townPositions[12][2] = -3404;
|
||||
|
||||
// FIXME: Custom locations.
|
||||
_karmaPositions[0][0] = -88708;
|
||||
_karmaPositions[0][1] = 237685;
|
||||
_karmaPositions[0][2] = -3672;
|
||||
_karmaPositions[1][0] = 40659;
|
||||
_karmaPositions[1][1] = 56770;
|
||||
_karmaPositions[1][2] = -3651;
|
||||
_karmaPositions[2][0] = -346;
|
||||
_karmaPositions[2][1] = 21889;
|
||||
_karmaPositions[2][2] = -3256;
|
||||
_karmaPositions[3][0] = -48359;
|
||||
_karmaPositions[3][1] = -108190;
|
||||
_karmaPositions[3][2] = -371;
|
||||
_karmaPositions[4][0] = 119952;
|
||||
_karmaPositions[4][1] = -188167;
|
||||
_karmaPositions[4][2] = -3320;
|
||||
_karmaPositions[5][0] = -9643;
|
||||
_karmaPositions[5][1] = 130653;
|
||||
_karmaPositions[5][2] = -3542;
|
||||
_karmaPositions[6][0] = -82930;
|
||||
_karmaPositions[6][1] = 156775;
|
||||
_karmaPositions[6][2] = -3156;
|
||||
_karmaPositions[7][0] = 15436;
|
||||
_karmaPositions[7][1] = 148426;
|
||||
_karmaPositions[7][2] = -3371;
|
||||
_karmaPositions[8][0] = 78274;
|
||||
_karmaPositions[8][1] = 145178;
|
||||
_karmaPositions[8][2] = -3598;
|
||||
_karmaPositions[9][0] = 76658;
|
||||
_karmaPositions[9][1] = 56229;
|
||||
_karmaPositions[9][2] = -2980;
|
||||
_karmaPositions[10][0] = 152543;
|
||||
_karmaPositions[10][1] = 29202;
|
||||
_karmaPositions[10][2] = -2337;
|
||||
_karmaPositions[11][0] = 111115;
|
||||
_karmaPositions[11][1] = 66811;
|
||||
_karmaPositions[11][2] = -2764;
|
||||
_karmaPositions[12][0] = 79253;
|
||||
_karmaPositions[12][1] = 159441;
|
||||
_karmaPositions[12][2] = -3207;
|
||||
}
|
||||
|
||||
public int getMapRegion(int posX, int posY)
|
||||
@ -75,55 +157,28 @@ public class MapRegionTable
|
||||
return _regions[tileX][tileY];
|
||||
}
|
||||
|
||||
public int[] getClosestTownCords(Creature activeChar)
|
||||
public int[] getClosestTownCords(PlayerInstance player)
|
||||
{
|
||||
int[][] pos = new int[13][3];
|
||||
pos[0][0] = -84176;
|
||||
pos[0][1] = 243382;
|
||||
pos[0][2] = -3126;
|
||||
pos[1][0] = 45525;
|
||||
pos[1][1] = 48376;
|
||||
pos[1][2] = -3059;
|
||||
pos[2][0] = 12181;
|
||||
pos[2][1] = 16675;
|
||||
pos[2][2] = -4580;
|
||||
pos[3][0] = -45232;
|
||||
pos[3][1] = -113603;
|
||||
pos[3][2] = -224;
|
||||
pos[4][0] = 115074;
|
||||
pos[4][1] = -178115;
|
||||
pos[4][2] = -880;
|
||||
pos[5][0] = -14138;
|
||||
pos[5][1] = 122042;
|
||||
pos[5][2] = -2988;
|
||||
pos[6][0] = -82856;
|
||||
pos[6][1] = 150901;
|
||||
pos[6][2] = -3128;
|
||||
pos[7][0] = 18823;
|
||||
pos[7][1] = 145048;
|
||||
pos[7][2] = -3126;
|
||||
pos[8][0] = 83235;
|
||||
pos[8][1] = 148497;
|
||||
pos[8][2] = -3404;
|
||||
pos[9][0] = 80853;
|
||||
pos[9][1] = 54653;
|
||||
pos[9][2] = -1524;
|
||||
pos[10][0] = 147391;
|
||||
pos[10][1] = 25967;
|
||||
pos[10][2] = -2012;
|
||||
pos[11][0] = 117163;
|
||||
pos[11][1] = 76511;
|
||||
pos[11][2] = -2712;
|
||||
pos[12][0] = 83235;
|
||||
pos[12][1] = 148497;
|
||||
pos[12][2] = -3404;
|
||||
int closest = getMapRegion(activeChar.getX(), activeChar.getY());
|
||||
int[] ClosestTownCords =
|
||||
int closest = getMapRegion(player.getX(), player.getY());
|
||||
int[] closestCords;
|
||||
if (player.getKarma() > 0)
|
||||
{
|
||||
pos[closest][0],
|
||||
pos[closest][1],
|
||||
pos[closest][2]
|
||||
closestCords = new int[]
|
||||
{
|
||||
_karmaPositions[closest][0],
|
||||
_karmaPositions[closest][1],
|
||||
_karmaPositions[closest][2]
|
||||
};
|
||||
return ClosestTownCords;
|
||||
}
|
||||
else
|
||||
{
|
||||
closestCords = new int[]
|
||||
{
|
||||
_townPositions[closest][0],
|
||||
_townPositions[closest][1],
|
||||
_townPositions[closest][2]
|
||||
};
|
||||
}
|
||||
return closestCords;
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,20 @@ public class DamageSkill implements ISkillHandler
|
||||
@Override
|
||||
public void useSkill(PlayerInstance activeChar, Skill skill, WorldObject target)
|
||||
{
|
||||
// PvP flag.
|
||||
final boolean isEnemy = activeChar.isEnemy(target);
|
||||
if (isEnemy)
|
||||
{
|
||||
if (target.getActingPlayer() != null)
|
||||
{
|
||||
activeChar.updatePvPFlag(1);
|
||||
}
|
||||
}
|
||||
else // TODO: Target handlers.
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (target instanceof Creature)
|
||||
{
|
||||
Creature creature = (Creature) target;
|
||||
|
@ -17,11 +17,10 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.handler.skillhandlers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.l2jmobius.gameserver.handler.ISkillHandler;
|
||||
import org.l2jmobius.gameserver.model.Skill;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PetInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.StatusUpdate;
|
||||
@ -44,6 +43,17 @@ public class HealSkill implements ISkillHandler
|
||||
@Override
|
||||
public void useSkill(PlayerInstance activeChar, Skill skill, WorldObject target)
|
||||
{
|
||||
// PvP flag.
|
||||
if (target instanceof MonsterInstance)
|
||||
{
|
||||
activeChar.updatePvPFlag(1);
|
||||
}
|
||||
final PlayerInstance enemyPlayer = target.getActingPlayer();
|
||||
if ((enemyPlayer != null) && ((enemyPlayer.getPvpFlag() > 0) || (enemyPlayer.getKarma() > 0)))
|
||||
{
|
||||
activeChar.updatePvPFlag(1);
|
||||
}
|
||||
|
||||
if (skill.getTargetType() == Skill.TARGET_PET)
|
||||
{
|
||||
PetInstance pet = activeChar.getPet();
|
||||
@ -52,10 +62,8 @@ public class HealSkill implements ISkillHandler
|
||||
}
|
||||
else if ((skill.getTargetType() == Skill.TARGET_PARTY) && activeChar.isInParty())
|
||||
{
|
||||
List<PlayerInstance> players = activeChar.getParty().getPartyMembers();
|
||||
for (int i = 0; i < players.size(); ++i)
|
||||
for (PlayerInstance player : activeChar.getParty().getPartyMembers())
|
||||
{
|
||||
PlayerInstance player = players.get(i);
|
||||
double hp = player.getCurrentHp();
|
||||
player.setCurrentHp(hp += skill.getPower());
|
||||
StatusUpdate su = new StatusUpdate(player.getObjectId());
|
||||
|
@ -20,7 +20,7 @@ package org.l2jmobius.gameserver.model;
|
||||
public class CharSelectInfoPackage
|
||||
{
|
||||
private String _name;
|
||||
private int _charId = 199546;
|
||||
private int _charId = 0;
|
||||
private int _exp = 0;
|
||||
private int _sp = 0;
|
||||
private int _clanId = 0;
|
||||
@ -37,6 +37,7 @@ public class CharSelectInfoPackage
|
||||
private int _maxMp = 0;
|
||||
private double _currentMp = 0.0;
|
||||
private Inventory _inventory = new Inventory();
|
||||
private int _karma;
|
||||
|
||||
public int getCharId()
|
||||
{
|
||||
@ -217,4 +218,14 @@ public class CharSelectInfoPackage
|
||||
{
|
||||
_sp = sp;
|
||||
}
|
||||
|
||||
public int getKarma()
|
||||
{
|
||||
return _karma;
|
||||
}
|
||||
|
||||
public void setKarma(int karma)
|
||||
{
|
||||
_karma = karma;
|
||||
}
|
||||
}
|
||||
|
@ -125,4 +125,9 @@ public class WorldObject implements Serializable
|
||||
{
|
||||
return _knownPlayer;
|
||||
}
|
||||
|
||||
public PlayerInstance getActingPlayer()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -172,6 +172,12 @@ public class Attackable extends NpcInstance
|
||||
stopRandomWalking();
|
||||
stopTargetScan();
|
||||
calculateRewards(attacker);
|
||||
|
||||
final PlayerInstance killer = attacker.getActingPlayer();
|
||||
if ((killer != null) && (killer.getKarma() > 0))
|
||||
{
|
||||
killer.decreaseKarma();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ public class PetInstance extends Creature
|
||||
_owner = owner;
|
||||
}
|
||||
|
||||
public Creature getOwner()
|
||||
public PlayerInstance getOwner()
|
||||
{
|
||||
return _owner;
|
||||
}
|
||||
@ -608,4 +608,10 @@ public class PetInstance extends Creature
|
||||
updateKnownCounter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInstance getActingPlayer()
|
||||
{
|
||||
return _owner;
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ import java.util.TimerTask;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.gameserver.data.CharStatsTable;
|
||||
import org.l2jmobius.gameserver.data.CharTemplateTable;
|
||||
import org.l2jmobius.gameserver.data.ExperienceTable;
|
||||
@ -79,6 +80,7 @@ import org.l2jmobius.gameserver.templates.Armor;
|
||||
import org.l2jmobius.gameserver.templates.CharTemplate;
|
||||
import org.l2jmobius.gameserver.templates.Item;
|
||||
import org.l2jmobius.gameserver.templates.Weapon;
|
||||
import org.l2jmobius.util.Rnd;
|
||||
|
||||
public class PlayerInstance extends Creature
|
||||
{
|
||||
@ -96,7 +98,9 @@ public class PlayerInstance extends Creature
|
||||
private int _karma;
|
||||
private int _pvpKills;
|
||||
private int _pkKills;
|
||||
private int _pvpFlag;
|
||||
private int _pvpFlag = 0;
|
||||
private long _lastPvpTime;
|
||||
private static Timer _pvpTimer = null;
|
||||
private int _maxLoad;
|
||||
private int _race;
|
||||
private int _classId;
|
||||
@ -109,7 +113,7 @@ public class PlayerInstance extends Creature
|
||||
private final Map<Integer, Skill> _skills = new HashMap<>();
|
||||
private Skill _skill;
|
||||
private final Map<Integer, ShortCut> _shortCuts = new TreeMap<>();
|
||||
private int _allyId;
|
||||
private int _allyId = 0;
|
||||
private TradeList _tradeList;
|
||||
private List<TradeItem> _sellList;
|
||||
private List<TradeItem> _buyList;
|
||||
@ -120,7 +124,7 @@ public class PlayerInstance extends Creature
|
||||
private boolean _partyMatchingShowClass;
|
||||
private String _partyMatchingMemo;
|
||||
private Party _party = null;
|
||||
private int _clanId;
|
||||
private int _clanId = 0;
|
||||
private Clan _clan;
|
||||
private boolean _clanLeader;
|
||||
private boolean _isInvul = false;
|
||||
@ -178,11 +182,6 @@ public class PlayerInstance extends Creature
|
||||
return skill.getLevel();
|
||||
}
|
||||
|
||||
public void setPvpFlag(int pvpFlag)
|
||||
{
|
||||
_pvpFlag = pvpFlag;
|
||||
}
|
||||
|
||||
public int getCanCraft()
|
||||
{
|
||||
return _canCraft;
|
||||
@ -415,6 +414,88 @@ public class PlayerInstance extends Creature
|
||||
return _pvpFlag;
|
||||
}
|
||||
|
||||
private void stopPvPFlag()
|
||||
{
|
||||
if (_pvpTimer != null)
|
||||
{
|
||||
_pvpTimer.cancel();
|
||||
_pvpTimer = null;
|
||||
}
|
||||
updatePvPFlag(0);
|
||||
}
|
||||
|
||||
public void updatePvPFlag(int value)
|
||||
{
|
||||
if (_karma > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (value == 1)
|
||||
{
|
||||
if (_pvpTimer == null)
|
||||
{
|
||||
_pvpTimer = new Timer();
|
||||
_pvpTimer.schedule(new pvpTask(), 1000, 1000);
|
||||
}
|
||||
_lastPvpTime = System.currentTimeMillis() + 30000;
|
||||
}
|
||||
if (_pvpFlag == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_pvpFlag = value;
|
||||
final UserInfo userInfo = new UserInfo(this);
|
||||
sendPacket(userInfo);
|
||||
broadcastPacket(userInfo);
|
||||
}
|
||||
|
||||
class pvpTask extends TimerTask
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
try
|
||||
{
|
||||
final long currentTime = System.currentTimeMillis();
|
||||
if (currentTime > _lastPvpTime)
|
||||
{
|
||||
stopPvPFlag();
|
||||
}
|
||||
else if (currentTime > (_lastPvpTime - 5000))
|
||||
{
|
||||
updatePvPFlag(2);
|
||||
}
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isEnemy(WorldObject target)
|
||||
{
|
||||
if ((target == null) || (target == this))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final PlayerInstance targetPlayer = target.getActingPlayer();
|
||||
if ((_party != null) && (_party == targetPlayer.getParty()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((_clanId != 0) && (_clanId == targetPlayer.getClanId()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((_allyId != 0) && (_allyId == targetPlayer.getAllyId()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getClanId()
|
||||
{
|
||||
return _clanId;
|
||||
@ -552,6 +633,18 @@ public class PlayerInstance extends Creature
|
||||
@Override
|
||||
protected void onHitTimer(Creature target, int damage, boolean crit, boolean miss, boolean soulshot)
|
||||
{
|
||||
final boolean isEnemy = isEnemy(target);
|
||||
if (isEnemy)
|
||||
{
|
||||
if (target.getActingPlayer() != null)
|
||||
{
|
||||
updatePvPFlag(1);
|
||||
}
|
||||
}
|
||||
else // TODO: Target handlers.
|
||||
{
|
||||
return;
|
||||
}
|
||||
super.onHitTimer(target, damage, crit, miss, soulshot);
|
||||
}
|
||||
|
||||
@ -587,13 +680,20 @@ public class PlayerInstance extends Creature
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMessage(String message)
|
||||
{
|
||||
SystemMessage sm = new SystemMessage(SystemMessage.S1_S2);
|
||||
sm.addString(message);
|
||||
sendPacket(sm);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startCombat()
|
||||
{
|
||||
Creature target = (Creature) getTarget();
|
||||
if (target == null)
|
||||
{
|
||||
_log.warning("failed to start combat without target.");
|
||||
_log.warning("Failed to start combat without target.");
|
||||
sendPacket(new ActionFailed());
|
||||
}
|
||||
else if (getAttackRange() < getDistance(target.getX(), target.getY()))
|
||||
@ -770,19 +870,25 @@ public class PlayerInstance extends Creature
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reduceCurrentHp(int i, Creature attacker)
|
||||
public void reduceCurrentHp(int ammount, Creature attacker)
|
||||
{
|
||||
if (isInvul())
|
||||
{
|
||||
return;
|
||||
}
|
||||
super.reduceCurrentHp(i, attacker);
|
||||
|
||||
super.reduceCurrentHp(ammount, attacker);
|
||||
if (isDead() && (getPet() != null))
|
||||
{
|
||||
getPet().unSummon(this);
|
||||
}
|
||||
if (attacker != null)
|
||||
|
||||
if (attacker == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Damage message.
|
||||
SystemMessage smsg = new SystemMessage(36);
|
||||
if ((attacker instanceof MonsterInstance) || (attacker instanceof NpcInstance))
|
||||
{
|
||||
@ -793,9 +899,122 @@ public class PlayerInstance extends Creature
|
||||
{
|
||||
smsg.addString(attacker.getName());
|
||||
}
|
||||
smsg.addNumber(i);
|
||||
smsg.addNumber(ammount);
|
||||
sendPacket(smsg);
|
||||
|
||||
if (!isDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate Karma lost.
|
||||
if (getKarma() > 0)
|
||||
{
|
||||
for (ItemInstance item : getInventory().getItems())
|
||||
{
|
||||
if (Config.KARMA_PROTECTED_ITEMS.contains(item.getItemId()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (Rnd.get(100) < Config.KARMA_DROP_CHANCE)
|
||||
{
|
||||
getInventory().dropItem(item, 1);
|
||||
}
|
||||
}
|
||||
decreaseKarma();
|
||||
}
|
||||
|
||||
// Died from player.
|
||||
final PlayerInstance killer = attacker.getActingPlayer();
|
||||
if (killer != null)
|
||||
{
|
||||
if ((_pvpFlag == 0) && (_karma == 0))
|
||||
{
|
||||
killer.increasePkKillsAndKarma(getLevel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void decreaseKarma()
|
||||
{
|
||||
float karmaLost = _karma / (getLevel() * 10);
|
||||
if (karmaLost < 0)
|
||||
{
|
||||
karmaLost = 1;
|
||||
}
|
||||
karmaLost *= Config.KARMA_LOST_MULTIPLIER;
|
||||
|
||||
if (_karma > karmaLost)
|
||||
{
|
||||
setKarma(_karma - (int) karmaLost);
|
||||
}
|
||||
else
|
||||
{
|
||||
setKarma(0);
|
||||
}
|
||||
|
||||
final UserInfo userInfo = new UserInfo(this);
|
||||
sendPacket(userInfo);
|
||||
broadcastPacket(userInfo);
|
||||
}
|
||||
|
||||
public void increasePkKillsAndKarma(int level)
|
||||
{
|
||||
int newKarma = Config.KARMA_MIN_KARMA;
|
||||
int pkLevel = getLevel();
|
||||
|
||||
final int pkPKCount = getPkKills();
|
||||
int pkCountMulti = 0;
|
||||
if (pkPKCount > 0)
|
||||
{
|
||||
pkCountMulti = pkPKCount / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
pkCountMulti = 1;
|
||||
}
|
||||
if (pkCountMulti < 1)
|
||||
{
|
||||
pkCountMulti = 1;
|
||||
}
|
||||
newKarma *= pkCountMulti;
|
||||
|
||||
int lvlDiffMulti = 0;
|
||||
if (pkLevel > level)
|
||||
{
|
||||
lvlDiffMulti = pkLevel / level;
|
||||
}
|
||||
else
|
||||
{
|
||||
lvlDiffMulti = 1;
|
||||
}
|
||||
if (lvlDiffMulti < 1)
|
||||
{
|
||||
lvlDiffMulti = 1;
|
||||
}
|
||||
newKarma *= lvlDiffMulti;
|
||||
|
||||
if (newKarma < Config.KARMA_MIN_KARMA)
|
||||
{
|
||||
newKarma = Config.KARMA_MIN_KARMA;
|
||||
}
|
||||
if (newKarma > Config.KARMA_MAX_KARMA)
|
||||
{
|
||||
newKarma = Config.KARMA_MAX_KARMA;
|
||||
}
|
||||
if (_karma > (Integer.MAX_VALUE - newKarma))
|
||||
{
|
||||
newKarma = Integer.MAX_VALUE - getKarma();
|
||||
}
|
||||
|
||||
stopPvPFlag();
|
||||
|
||||
setPkKills(_pkKills + 1);
|
||||
setKarma(_karma + newKarma);
|
||||
|
||||
final UserInfo userInfo = new UserInfo(this);
|
||||
sendPacket(userInfo);
|
||||
broadcastPacket(userInfo);
|
||||
}
|
||||
|
||||
public void setPartyMatchingAutomaticRegistration(boolean b)
|
||||
@ -1582,4 +1801,10 @@ public class PlayerInstance extends Creature
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayerInstance getActingPlayer()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,6 @@ public class CharacterCreate extends ClientBasePacket
|
||||
newChar.setRunSpeed(template.getMoveSpd());
|
||||
newChar.setWalkSpeed((int) (template.getMoveSpd() * 0.7));
|
||||
newChar.setWit(template.getWit());
|
||||
newChar.setPvpFlag(0);
|
||||
newChar.addAdena(5000);
|
||||
newChar.setCanCraft(template.getCanCraft());
|
||||
newChar.setX(template.getX());
|
||||
|
@ -21,6 +21,7 @@ import java.io.IOException;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.ClientThread;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.LeaveWorld;
|
||||
|
||||
public class Logout extends ClientBasePacket
|
||||
@ -30,11 +31,18 @@ public class Logout extends ClientBasePacket
|
||||
public Logout(byte[] decrypt, ClientThread client) throws IOException
|
||||
{
|
||||
super(decrypt);
|
||||
LeaveWorld ql = new LeaveWorld();
|
||||
client.getConnection().sendPacket(ql);
|
||||
|
||||
PlayerInstance player = client.getActiveChar();
|
||||
if (player != null)
|
||||
{
|
||||
if ((player.getPvpFlag() > 0) || player.isInCombat())
|
||||
{
|
||||
player.sendMessage("You cannot exit the game while in combat.");
|
||||
player.sendPacket(new ActionFailed());
|
||||
return;
|
||||
}
|
||||
LeaveWorld ql = new LeaveWorld();
|
||||
client.getConnection().sendPacket(ql);
|
||||
player.deleteMe();
|
||||
client.saveCharToDisk(player);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ import java.io.IOException;
|
||||
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.network.ClientThread;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.CharSelectInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.RestartResponse;
|
||||
|
||||
@ -31,7 +32,16 @@ public class RequestRestart extends ClientBasePacket
|
||||
public RequestRestart(byte[] decrypt, ClientThread client) throws IOException
|
||||
{
|
||||
super(decrypt);
|
||||
|
||||
PlayerInstance player = client.getActiveChar();
|
||||
if (player != null)
|
||||
{
|
||||
if ((player.getPvpFlag() > 0) || player.isInCombat())
|
||||
{
|
||||
player.sendMessage("You cannot exit the game while in combat.");
|
||||
player.sendPacket(new ActionFailed());
|
||||
return;
|
||||
}
|
||||
player.deleteMe();
|
||||
RestartResponse response = new RestartResponse();
|
||||
client.getConnection().sendPacket(response);
|
||||
@ -40,6 +50,7 @@ public class RequestRestart extends ClientBasePacket
|
||||
CharSelectInfo cl = new CharSelectInfo(client.getLoginName(), client.getSessionId());
|
||||
client.getConnection().sendPacket(cl);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType()
|
||||
|
@ -17,6 +17,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Inventory;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
|
||||
public class CharInfo extends ServerBasePacket
|
||||
@ -32,7 +33,7 @@ public class CharInfo extends ServerBasePacket
|
||||
@Override
|
||||
public byte[] getContent()
|
||||
{
|
||||
_bao.write(3);
|
||||
writeC(0x03);
|
||||
writeD(_cha.getX());
|
||||
writeD(_cha.getY());
|
||||
writeD(_cha.getZ());
|
||||
@ -43,16 +44,16 @@ public class CharInfo extends ServerBasePacket
|
||||
writeD(_cha.getSex());
|
||||
writeD(_cha.getClassId());
|
||||
writeD(0);
|
||||
writeD(_cha.getInventory().getPaperdollItemId(6));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(7));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(8));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(9));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(10));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(11));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(12));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(13));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(14));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(0));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
|
||||
writeD(0);
|
||||
writeD(_cha.getMagicalSpeed());
|
||||
writeD(_cha.getPhysicalSpeed());
|
||||
|
@ -26,6 +26,7 @@ import java.util.StringTokenizer;
|
||||
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.model.CharSelectInfoPackage;
|
||||
import org.l2jmobius.gameserver.model.Inventory;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.ItemInstance;
|
||||
import org.l2jmobius.gameserver.templates.Item;
|
||||
|
||||
@ -48,31 +49,29 @@ public class CharSelectInfo extends ServerBasePacket
|
||||
@Override
|
||||
public byte[] getContent()
|
||||
{
|
||||
int size = _characterPackage.length;
|
||||
_bao.write(31);
|
||||
writeD(size);
|
||||
// long count = 123371L;
|
||||
for (int i = 0; i < size; ++i)
|
||||
writeC(0x1F);
|
||||
writeD(_characterPackage.length);
|
||||
for (CharSelectInfoPackage info : _characterPackage)
|
||||
{
|
||||
CharSelectInfoPackage charInfoPackage = _characterPackage[i];
|
||||
writeS(charInfoPackage.getName());
|
||||
writeD(charInfoPackage.getCharId());
|
||||
writeS(info.getName());
|
||||
writeD(info.getCharId());
|
||||
writeS(_loginName);
|
||||
writeD(_sessionId);
|
||||
writeD(charInfoPackage.getClanId());
|
||||
writeD(info.getClanId());
|
||||
writeD(0);
|
||||
writeD(charInfoPackage.getSex());
|
||||
writeD(charInfoPackage.getRace());
|
||||
writeD(charInfoPackage.getClassId());
|
||||
writeD(info.getSex());
|
||||
writeD(info.getRace());
|
||||
writeD(info.getClassId());
|
||||
writeD(1);
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeF(charInfoPackage.getCurrentHp());
|
||||
writeF(charInfoPackage.getCurrentMp());
|
||||
writeD(charInfoPackage.getSp());
|
||||
writeD(charInfoPackage.getExp());
|
||||
writeD(charInfoPackage.getLevel());
|
||||
writeF(info.getCurrentHp());
|
||||
writeF(info.getCurrentMp());
|
||||
writeD(info.getSp());
|
||||
writeD(info.getExp());
|
||||
writeD(info.getLevel());
|
||||
writeD(info.getKarma());
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
@ -83,42 +82,41 @@ public class CharSelectInfo extends ServerBasePacket
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeD(0);
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
|
||||
writeD(info.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
|
||||
writeD(0);
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(2));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(1));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(3));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(5));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(4));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(6));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(7));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(8));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(9));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(10));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(11));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(12));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(13));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollObjectId(14));
|
||||
writeD(0);
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(2));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(1));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(3));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(5));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(4));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(6));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(7));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(8));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(9));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(10));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(11));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(12));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(13));
|
||||
writeD(charInfoPackage.getInventory().getPaperdollItemId(14));
|
||||
writeD(charInfoPackage.getHairStyle());
|
||||
writeD(charInfoPackage.getHairColor());
|
||||
writeD(charInfoPackage.getFace());
|
||||
writeF(charInfoPackage.getMaxHp());
|
||||
writeF(charInfoPackage.getMaxMp());
|
||||
writeD(charInfoPackage.getDeleteTimer());
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
|
||||
writeD(info.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
|
||||
writeD(info.getHairStyle());
|
||||
writeD(info.getHairColor());
|
||||
writeD(info.getFace());
|
||||
writeF(info.getMaxHp());
|
||||
writeF(info.getMaxMp());
|
||||
writeD(info.getDeleteTimer());
|
||||
}
|
||||
return _bao.toByteArray();
|
||||
}
|
||||
@ -240,7 +238,7 @@ public class CharSelectInfo extends ServerBasePacket
|
||||
st.nextToken();
|
||||
_charInfopackage.setExp(Integer.parseInt(st.nextToken()));
|
||||
_charInfopackage.setSp(Integer.parseInt(st.nextToken()));
|
||||
st.nextToken();
|
||||
_charInfopackage.setKarma(Integer.parseInt(st.nextToken()));
|
||||
st.nextToken();
|
||||
st.nextToken();
|
||||
_charInfopackage.setClanId(Integer.parseInt(st.nextToken()));
|
||||
|
@ -17,6 +17,7 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Inventory;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
|
||||
public class UserInfo extends ServerBasePacket
|
||||
@ -32,7 +33,7 @@ public class UserInfo extends ServerBasePacket
|
||||
@Override
|
||||
public byte[] getContent()
|
||||
{
|
||||
_bao.write(4);
|
||||
writeC(0x04);
|
||||
writeD(_cha.getX());
|
||||
writeD(_cha.getY());
|
||||
writeD(_cha.getZ());
|
||||
@ -58,36 +59,39 @@ public class UserInfo extends ServerBasePacket
|
||||
writeD(_cha.getCurrentLoad());
|
||||
writeD(_cha.getMaxLoad());
|
||||
writeD(40);
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(0));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(2));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(1));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(3));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(5));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(4));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(6));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(7));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(8));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(9));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(10));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(11));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(12));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(13));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(14));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(0));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(2));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(1));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(3));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(5));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(4));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(6));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(7));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(8));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(9));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(10));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(11));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(12));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(13));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(14));
|
||||
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
|
||||
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
|
||||
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
|
||||
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
|
||||
|
||||
writeD(_cha.getPhysicalAttack());
|
||||
writeD(_cha.getPhysicalSpeed());
|
||||
writeD(_cha.getPhysicalDefense());
|
||||
|
@ -140,13 +140,13 @@ public class ClientThread extends Thread
|
||||
}
|
||||
if (lc.isAccountInLoginServer(account))
|
||||
{
|
||||
_log.warning("account is in use on Login server (kicking off):" + account);
|
||||
_log.warning("Account is in use on Login server (kicking off):" + account);
|
||||
lc.getLoginServerConnection(account).close();
|
||||
lc.removeLoginServerLogin(account);
|
||||
}
|
||||
if (lc.isAccountInGameServer(account))
|
||||
{
|
||||
_log.warning("account is in use on Gamea server (kicking off):" + account);
|
||||
_log.warning("Account is in use on Game server (kicking off):" + account);
|
||||
lc.getClientConnection(account).close();
|
||||
lc.removeGameServerLogin(account);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user