Proper collision methods, float values and usage.

This commit is contained in:
MobiusDevelopment
2020-08-29 19:11:31 +00:00
parent 89dbb63055
commit a5219616ff
220 changed files with 1201 additions and 1125 deletions

View File

@@ -7871,10 +7871,10 @@ public class PlayerInstance extends Playable
statement.setInt(29, getAppearance().getHairStyle());
statement.setInt(30, getAppearance().getHairColor());
statement.setInt(31, getAppearance().isFemale() ? 1 : 0);
statement.setDouble(32, 1/* getMovementMultiplier() */);
statement.setDouble(33, 1/* getAttackSpeedMultiplier() */);
statement.setDouble(34, getTemplate().getCollisionRadius());
statement.setDouble(35, getTemplate().getCollisionHeight());
statement.setDouble(32, 1 /* getMovementMultiplier() */);
statement.setDouble(33, 1 /* getAttackSpeedMultiplier() */);
statement.setDouble(34, getCollisionRadius());
statement.setDouble(35, getCollisionHeight());
statement.setLong(36, getExp());
statement.setInt(37, getSp());
statement.setInt(38, getKarma());
@@ -15385,6 +15385,24 @@ public class PlayerInstance extends Playable
_offlineShopStart = time;
}
public float getCollisionRadius()
{
if (isMounted() && (_summon != null))
{
return _summon.getTemplate().getCollisionRadius();
}
return _appearance.isFemale() ? getBaseTemplate().getFCollisionRadiusFemale() : getBaseTemplate().getFCollisionRadius();
}
public float getCollisionHeight()
{
if (isMounted() && (_summon != null))
{
return _summon.getTemplate().getCollisionHeight();
}
return _appearance.isFemale() ? getBaseTemplate().getFCollisionHeightFemale() : getBaseTemplate().getFCollisionHeight();
}
/**
* Return true if character falling now On the start of fall return false for correct coord sync !.
* @param z the z

View File

@@ -90,9 +90,14 @@ public class CreatureTemplate
private final int _baseMpConsumeRate;
private final int _baseHpConsumeRate;
/** For client info use {@link #_fCollisionRadius} */
private final int _collisionRadius;
/** For client info use {@link #_fCollisionHeight} */
private final int _collisionHeight;
private final float _fCollisionRadius;
private final float _fCollisionHeight;
public CreatureTemplate(StatSet set)
{
// Base stats
@@ -160,8 +165,10 @@ public class CreatureTemplate
_baseHpConsumeRate = set.getInt("baseHpConsumeRate", 0);
// Geometry
_collisionRadius = (int) set.getFloat("collision_radius"); // TODO: Support float.
_collisionHeight = (int) set.getFloat("collision_height"); // TODO: Support float.
_fCollisionRadius = set.getFloat("collision_radius", 0);
_fCollisionHeight = set.getFloat("collision_height", 0);
_collisionRadius = (int) _fCollisionRadius;
_collisionHeight = (int) _fCollisionHeight;
}
public int getBaseSTR()
@@ -463,4 +470,14 @@ public class CreatureTemplate
{
return _collisionHeight;
}
public float getFCollisionRadius()
{
return _fCollisionRadius;
}
public float getFCollisionHeight()
{
return _fCollisionHeight;
}
}

View File

@@ -37,6 +37,8 @@ public class PlayerTemplate extends CreatureTemplate
private final int _spawnY;
private final int _spawnZ;
private final List<ItemHolder> _items = new ArrayList<>();
private final float _fCollisionRadiusFemale;
private final float _fCollisionHeightFemale;
private final float[] _hpTable;
private final float[] _mpTable;
private final float[] _cpTable;
@@ -51,6 +53,8 @@ public class PlayerTemplate extends CreatureTemplate
_spawnY = set.getInt("spawnY");
_spawnZ = set.getInt("spawnZ");
_classBaseLevel = set.getInt("baseLevel");
_fCollisionRadiusFemale = set.getFloat("collision_radius_female");
_fCollisionHeightFemale = set.getFloat("collision_height_female");
String[] item;
for (String split : set.getString("items").split(";"))
@@ -124,6 +128,16 @@ public class PlayerTemplate extends CreatureTemplate
return _classBaseLevel;
}
public float getFCollisionRadiusFemale()
{
return _fCollisionRadiusFemale;
}
public float getFCollisionHeightFemale()
{
return _fCollisionHeightFemale;
}
public float getBaseHpMax(int level)
{
if (level > _hpTable.length)

View File

@@ -106,9 +106,8 @@ public class CharInfo extends GameServerPacket
writeD(_flyWalkSpd);
writeF(_moveMultiplier);
writeF(_player.getAttackSpeedMultiplier());
writeF(_player.getBaseTemplate().getCollisionRadius());
writeF(_player.getBaseTemplate().getCollisionHeight());
writeF(_player.getCollisionRadius());
writeF(_player.getCollisionHeight());
writeD(_player.getAppearance().getHairStyle());
writeD(_player.getAppearance().getHairColor());
writeD(_player.getAppearance().getFace());

View File

@@ -57,8 +57,8 @@ public class NpcInfo extends GameServerPacket
private int _flyWalkSpd;
private int _rhand;
private int _lhand;
private int _collisionHeight;
private int _collisionRadius;
private float _collisionHeight;
private float _collisionRadius;
protected int _clanCrest;
protected int _allyCrest;
protected int _allyId;
@@ -86,8 +86,8 @@ public class NpcInfo extends GameServerPacket
_rhand = cha.getRightHandItem();
_lhand = cha.getLeftHandItem();
_isSummoned = false;
_collisionHeight = cha.getCollisionHeight();
_collisionRadius = cha.getCollisionRadius();
_collisionHeight = cha.getTemplate().getFCollisionHeight();
_collisionRadius = cha.getTemplate().getFCollisionRadius();
if (Config.SHOW_NPC_CLAN_CREST && (cha.getCastle() != null) && (cha.getCastle().getOwnerId() != 0) && !cha.isMonster() && !cha.isArtefact() && !(cha instanceof ControlTowerInstance))
{
@@ -174,8 +174,8 @@ public class NpcInfo extends GameServerPacket
_rhand = 0;
_lhand = 0;
_isSummoned = cha.isShowSummonAnimation();
_collisionHeight = _creature.getTemplate().getCollisionHeight();
_collisionRadius = _creature.getTemplate().getCollisionRadius();
_collisionHeight = _creature.getTemplate().getFCollisionHeight();
_collisionRadius = _creature.getTemplate().getFCollisionRadius();
if (cha.getTemplate().isServerSideName() || (cha instanceof PetInstance) || (cha instanceof SummonInstance))
{
_name = _creature.getName();

View File

@@ -107,8 +107,8 @@ public class PetInfo extends GameServerPacket
writeF(1/* _cha.getProperMultiplier() */);
writeF(1/* _cha.getAttackSpeedMultiplier() */);
writeF(_summon.getTemplate().getCollisionRadius());
writeF(_summon.getTemplate().getCollisionHeight());
writeF(_summon.getTemplate().getFCollisionRadius());
writeF(_summon.getTemplate().getFCollisionHeight());
writeD(0); // right hand weapon
writeD(0);
writeD(0); // left hand weapon

View File

@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
@@ -155,19 +154,8 @@ public class UserInfo extends GameServerPacket
writeD(_flyWalkSpd);
writeF(_player.getMovementSpeedMultiplier()); // run speed multiplier
writeF(_player.getAttackSpeedMultiplier()); // attack speed multiplier
final Summon pet = _player.getPet();
if ((_player.getMountType() != 0) && (pet != null))
{
writeF(pet.getTemplate().getCollisionRadius());
writeF(pet.getTemplate().getCollisionHeight());
}
else
{
writeF(_player.getBaseTemplate().getCollisionRadius());
writeF(_player.getBaseTemplate().getCollisionHeight());
}
writeF(_player.getCollisionRadius());
writeF(_player.getCollisionHeight());
writeD(_player.getAppearance().getHairStyle());
writeD(_player.getAppearance().getHairColor());
writeD(_player.getAppearance().getFace());