1
0
mirror of https://github.com/Rogiel/l2jserver2 synced 2026-05-03 13:33:48 +00:00

Template classes for all NPC instances

Signed-off-by: Rogiel <rogiel@rogiel.com>
This commit is contained in:
2011-05-23 01:23:41 -03:00
parent ebc7947473
commit 66d5fee187
9119 changed files with 664622 additions and 410 deletions

View File

@@ -23,7 +23,7 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractClientPacket;
import com.l2jserver.service.admin.AdministratorService;
import com.l2jserver.service.game.spawn.CharacterAlreadyTeleportingServiceException;
import com.l2jserver.service.game.spawn.NotSpawnedServiceException;
import com.l2jserver.service.game.spawn.SpawnService;
import com.l2jserver.util.BufferUtils;
@@ -43,7 +43,7 @@ public class AdminCommandPacket extends AbstractClientPacket {
/**
* The admin service
*/
private final AdministratorService adminService;
// private final AdministratorService adminService;
private final SpawnService spawnService;
/**
@@ -52,9 +52,9 @@ public class AdminCommandPacket extends AbstractClientPacket {
private String command;
@Inject
public AdminCommandPacket(AdministratorService adminService,
SpawnService spawnService) {
this.adminService = adminService;
public AdminCommandPacket(/* AdministratorService adminService, */
SpawnService spawnService) {
// this.adminService = adminService;
this.spawnService = spawnService;
}
@@ -75,8 +75,9 @@ public class AdminCommandPacket extends AbstractClientPacket {
try {
spawnService.teleport(conn.getCharacter(), coord);
} catch (NotSpawnedServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
conn.sendActionFailed();
} catch (CharacterAlreadyTeleportingServiceException e) {
conn.sendActionFailed();
}
}
// TODO implement admin commands

View File

@@ -21,7 +21,8 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.google.inject.Inject;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractClientPacket;
import com.l2jserver.service.game.character.CharacterService;
import com.l2jserver.service.game.spawn.CharacterNotTeleportingServiceException;
import com.l2jserver.service.game.spawn.SpawnService;
/**
* Completes the creation of an character. Creates the object, inserts into the
@@ -36,13 +37,13 @@ public class CharacterAppearingPacket extends AbstractClientPacket {
public static final int OPCODE = 0x3a;
/**
* The {@link CharacterService}
* The {@link SpawnService}
*/
private final CharacterService charService;
private final SpawnService spawnService;
@Inject
public CharacterAppearingPacket(CharacterService charService) {
this.charService = charService;
public CharacterAppearingPacket(SpawnService spawnService) {
this.spawnService = spawnService;
}
@Override
@@ -51,6 +52,10 @@ public class CharacterAppearingPacket extends AbstractClientPacket {
@Override
public void process(final Lineage2Connection conn) {
charService.appearing(conn.getCharacter());
try {
spawnService.finishTeleport(conn.getCharacter());
} catch (CharacterNotTeleportingServiceException e) {
conn.sendActionFailed();
}
}
}

View File

@@ -31,8 +31,8 @@ import com.l2jserver.model.id.object.provider.CharacterIDProvider;
import com.l2jserver.model.id.template.CharacterTemplateID;
import com.l2jserver.model.id.template.provider.CharacterTemplateIDProvider;
import com.l2jserver.model.template.CharacterTemplate;
import com.l2jserver.model.world.Actor.Race;
import com.l2jserver.model.world.Actor.Sex;
import com.l2jserver.model.world.Actor.ActorRace;
import com.l2jserver.model.world.Actor.ActorSex;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.character.CharacterAppearance.CharacterFace;
import com.l2jserver.model.world.character.CharacterAppearance.CharacterHairColor;
@@ -80,11 +80,11 @@ public class CharacterCreatePacket extends AbstractClientPacket {
/**
* The race of the new character
*/
private Race race;
private ActorRace race;
/**
* The sex of the new character
*/
private Sex sex;
private ActorSex sex;
/**
* The class of the new character
*/
@@ -146,8 +146,8 @@ public class CharacterCreatePacket extends AbstractClientPacket {
@Override
public void read(Lineage2Connection conn, ChannelBuffer buffer) {
name = BufferUtils.readString(buffer);
race = Race.fromOption(buffer.readInt());
sex = Sex.fromOption(buffer.readInt());
race = ActorRace.fromOption(buffer.readInt());
sex = ActorSex.fromOption(buffer.readInt());
characterClass = CharacterClass.fromID(buffer.readInt());
intelligence = buffer.readInt();
@@ -252,7 +252,7 @@ public class CharacterCreatePacket extends AbstractClientPacket {
/**
* @return the race
*/
public Race getRace() {
public ActorRace getRace() {
return race;
}
@@ -260,14 +260,14 @@ public class CharacterCreatePacket extends AbstractClientPacket {
* @param race
* the race to set
*/
public void setRace(Race race) {
public void setRace(ActorRace race) {
this.race = race;
}
/**
* @return the sex
*/
public Sex getSex() {
public ActorSex getSex() {
return sex;
}
@@ -275,7 +275,7 @@ public class CharacterCreatePacket extends AbstractClientPacket {
* @param sex
* the sex to set
*/
public void setSex(Sex sex) {
public void setSex(ActorSex sex) {
this.sex = sex;
}

View File

@@ -41,7 +41,7 @@ import org.jboss.netty.buffer.ChannelBuffer;
import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
import com.l2jserver.model.world.Actor.Sex;
import com.l2jserver.model.world.Actor.ActorSex;
import com.l2jserver.model.world.Item;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.L2Character.CharacterMoveType;
@@ -145,19 +145,19 @@ public class CharacterInformationBroadcastPacket extends AbstractServerPacket {
buffer.writeInt(0x00); // unk
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getMoveSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeDouble(0x01); // move speed multiplier
buffer.writeDouble(0x01); // attack speed multiplier
if (character.getSex() == Sex.MALE) {
if (character.getSex() == ActorSex.MALE) {
buffer.writeDouble(character.getTemplate().getMaleCollisionRadius());
buffer.writeDouble(character.getTemplate().getMaleCollisionHeight());
} else {

View File

@@ -48,7 +48,7 @@ import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
import com.l2jserver.model.world.Item;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.model.world.Actor.Sex;
import com.l2jserver.model.world.Actor.ActorSex;
import com.l2jserver.model.world.actor.ActorExperience;
import com.l2jserver.model.world.character.CharacterInventory.InventoryPaperdoll;
import com.l2jserver.util.BufferUtils;
@@ -189,32 +189,26 @@ public class CharacterInformationPacket extends AbstractServerPacket {
buffer.writeInt(0x00); // (max?) talismans count
buffer.writeInt(0x00); // cloak sratus
buffer.writeInt(character.getAttributes().getPhysicalAttack());
buffer.writeInt((int) character.getAttributes().getPhysicalAttack());
buffer.writeInt(character.getAttributes().getAttackSpeed());
buffer.writeInt(character.getAttributes().getPhysicalDefense());
buffer.writeInt((int) character.getAttributes().getPhysicalDefense());
buffer.writeInt(character.getAttributes().getEvasionChance()); // evasion
buffer.writeInt(character.getAttributes().getAccuracy());
buffer.writeInt(character.getAttributes().getCriticalChance());
buffer.writeInt(character.getAttributes().getMagicalAttack());
buffer.writeInt((int) character.getAttributes().getMagicalAttack());
buffer.writeInt(character.getAttributes().getCastSpeed());
buffer.writeInt(character.getAttributes().getAttackSpeed());
buffer.writeInt(character.getAttributes().getMagicalDefense());
buffer.writeInt((int) character.getAttributes().getMagicalDefense());
buffer.writeInt(0x00); // 0-non-pvp 1-pvp = violett name
buffer.writeInt(0x00); // karma
buffer.writeInt((int) character.getAttributes().getMoveSpeed()); // run
// speed
buffer.writeInt((int) character.getAttributes().getMoveSpeed()); // walk
// speed
buffer.writeInt((int) character.getAttributes().getMoveSpeed()); // swim
// run
// speed
buffer.writeInt((int) character.getAttributes().getMoveSpeed()); // swim
// walk
// speed
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getWalkSpeed());
buffer.writeInt((int) character.getAttributes().getRunSpeed());
buffer.writeInt((int) character.getAttributes().getWalkSpeed());
buffer.writeInt(0); // unk
buffer.writeInt(0); // unk
buffer.writeInt(0); // fly speed -only if flying
@@ -234,7 +228,7 @@ public class CharacterInformationPacket extends AbstractServerPacket {
// writeF(_activeChar.getCollisionRadius());
// writeF(_activeChar.getCollisionHeight());
// }
if (character.getSex() == Sex.MALE) {
if (character.getSex() == ActorSex.MALE) {
buffer.writeDouble(character.getTemplate().getMaleCollisionRadius());
buffer.writeDouble(character.getTemplate().getMaleCollisionHeight());
} else {
@@ -243,7 +237,7 @@ public class CharacterInformationPacket extends AbstractServerPacket {
buffer.writeDouble(character.getTemplate()
.getFemaleCollisionHeight());
}
buffer.writeInt(character.getAppearance().getHairStyle().option);
buffer.writeInt(character.getAppearance().getHairColor().option);
buffer.writeInt(character.getAppearance().getFace().option);
@@ -252,10 +246,8 @@ public class CharacterInformationPacket extends AbstractServerPacket {
String title = "Testing"; // title
BufferUtils.writeString(buffer, title);
int clanid = 0;
if (character.getClanID() != null)
clanid = character.getClanID().getID();
buffer.writeInt(clanid); // clanid
buffer.writeInt((character.getClanID() != null ? character.getClanID()
.getID() : 0x00)); // clanid
buffer.writeInt(0x00); // clan crest id
buffer.writeInt(0x00); // ally id
buffer.writeInt(0x00); // ally crest id

View File

@@ -22,6 +22,7 @@ import com.l2jserver.game.net.Lineage2Connection;
import com.l2jserver.game.net.packet.AbstractServerPacket;
import com.l2jserver.game.net.packet.server.CharacterCreateFailPacket.Reason;
import com.l2jserver.model.world.L2Character;
import com.l2jserver.util.dimensional.Point;
/**
* This packet notifies the client that the chosen character has been
@@ -40,19 +41,24 @@ public class CharacterTeleportPacket extends AbstractServerPacket {
* The selected character
*/
private final L2Character character;
/**
* The teleportation point
*/
private final Point point;
public CharacterTeleportPacket(L2Character character) {
public CharacterTeleportPacket(L2Character character, Point point) {
super(OPCODE);
this.character = character;
this.point = point;
}
@Override
public void write(Lineage2Connection conn, ChannelBuffer buffer) {
buffer.writeInt(character.getID().getID());
buffer.writeInt(character.getPoint().getX());
buffer.writeInt(character.getPoint().getY());
buffer.writeInt(character.getPoint().getZ());
buffer.writeInt(point.getX());
buffer.writeInt(point.getY());
buffer.writeInt(point.getZ());
buffer.writeInt(0x00); // isValidation ??
buffer.writeInt((int) character.getPoint().getAngle()); // nYaw
buffer.writeInt((int) point.getAngle()); // nYaw
}
}

View File

@@ -62,21 +62,21 @@ public class NPCInformationPacket extends AbstractServerPacket {
buffer.writeInt(0x00); // unk
buffer.writeInt(template.getCastSpeed());
buffer.writeInt(template.getAttackSpeed());
buffer.writeInt((int) template.getMoveSpeed());
buffer.writeInt((int) template.getMoveSpeed());
buffer.writeInt((int) template.getMoveSpeed()); // swim run speed
buffer.writeInt((int) template.getMoveSpeed()); // swim walk speed
buffer.writeInt((int) template.getMoveSpeed()); // swim run speed
buffer.writeInt((int) template.getMoveSpeed()); // swim walk speed
buffer.writeInt((int) template.getMoveSpeed()); // fly run speed
buffer.writeInt((int) template.getMoveSpeed()); // fly run speed
buffer.writeInt((int) template.getRunSpeed());
buffer.writeInt((int) template.getWalkSpeed());
buffer.writeInt((int) template.getRunSpeed()); // swim run speed
buffer.writeInt((int) template.getWalkSpeed()); // swim walk speed
buffer.writeInt((int) template.getRunSpeed()); // swim run speed
buffer.writeInt((int) template.getWalkSpeed()); // swim walk speed
buffer.writeInt((int) template.getRunSpeed()); // fly run speed
buffer.writeInt((int) template.getWalkSpeed()); // fly run speed
buffer.writeDouble(template.getMovementSpeedMultiplier());
buffer.writeDouble(template.getAttackSpeedMultiplier());
buffer.writeDouble(template.getCollisionRadius());
buffer.writeDouble(template.getCollisionHeight());
buffer.writeInt(0x00); // right hand weapon
buffer.writeInt(template.getRightHand().getID()); // right hand weapon
buffer.writeInt(0x00); // chest
buffer.writeInt(0x00); // left hand weapon
buffer.writeInt(template.getLeftHand().getID()); // left hand weapon
buffer.writeByte(1); // name above char 1=true ... ??
buffer.writeByte(0x00); // is running
buffer.writeByte(0x00); // is in combat

View File

@@ -60,7 +60,8 @@ public class ServerObjectPacket extends AbstractServerPacket {
buffer.writeDouble(template.getCollisionRadius()); // coll radius
buffer.writeDouble(template.getCollisionHeight()); // coll height
buffer.writeInt((template.isAttackable() ? npc.getHP() : 0x00));
buffer.writeInt((template.isAttackable() ? template.getMaxHP() : 0x00));
buffer.writeInt((int) (template.isAttackable() ? template.getMaxHP()
: 0x00));
buffer.writeInt(0x01); // object type
buffer.writeInt(0x00); // special effects
}