From d1bae969c708d9071366c3b84061517387dc5128 Mon Sep 17 00:00:00 2001 From: Treeku Date: Tue, 3 Jun 2014 20:08:39 +0100 Subject: [PATCH 1/3] Fixed arrayOutOfBounds error with bounties --- src/services/PlayerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index a6f9d8b5..11a81f58 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -1345,7 +1345,7 @@ public class PlayerService implements INetworkDispatch { @Override public void process(SWGObject owner, int eventType, Vector returnList) { - if (eventType == 0 && returnList.get(0) != null) { + if (eventType == 0 && returnList.size() > 0 && returnList.get(0) != null) { int bounty = Integer.parseInt(returnList.get(0)); int totalFunds = victim.getBankCredits() + victim.getCashCredits(); From e1a02b477d3683975c1e012ca861170e2e45c397 Mon Sep 17 00:00:00 2001 From: Treeku Date: Wed, 4 Jun 2014 00:56:44 +0100 Subject: [PATCH 2/3] Caught exception in lootService temporarily --- src/services/LootService.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/services/LootService.java b/src/services/LootService.java index 8aeeef76..9e9d7385 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -190,13 +190,17 @@ public class LootService implements INetworkDispatch { // set info above corpse //System.out.println("lootedObject instanceof CreatureObject " + (lootedObject instanceof CreatureObject)); if (lootedObject instanceof CreatureObject){ - float y = 0.5F; // 1.3356977F - float qz= 1.06535322E9F; - Point3D effectorPosition = new Point3D(0,y,0); - Quaternion effectorOrientation = new Quaternion(0,0,0,qz); - PlayClientEffectObjectTransformMessage lmsg = new PlayClientEffectObjectTransformMessage("appearance/pt_loot_disc.prt",lootedObject.getObjectID(),"lootMe",effectorPosition,effectorOrientation); - requester.getClient().getSession().write(lmsg.serialize()); - tools.CharonPacketUtils.printAnalysis(lmsg.serialize()); + try { + float y = 0.5F; // 1.3356977F + float qz= 1.06535322E9F; + Point3D effectorPosition = new Point3D(0,y,0); + Quaternion effectorOrientation = new Quaternion(0,0,0,qz); + PlayClientEffectObjectTransformMessage lmsg = new PlayClientEffectObjectTransformMessage("appearance/pt_loot_disc.prt",lootedObject.getObjectID(),"lootMe",effectorPosition,effectorOrientation); + requester.getClient().getSession().write(lmsg.serialize()); + tools.CharonPacketUtils.printAnalysis(lmsg.serialize()); + } catch (Exception e) { + e.printStackTrace(); + } } // handle errors From e8104467a3ab07441f58e2ffcf020c81a4c70231 Mon Sep 17 00:00:00 2001 From: Treeku Date: Wed, 4 Jun 2014 01:00:28 +0100 Subject: [PATCH 3/3] Minor movement changes for vehicles --- src/services/SimulationService.java | 60 ++++++++++------------------- 1 file changed, 21 insertions(+), 39 deletions(-) diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 040a905c..f93defd4 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -341,9 +341,9 @@ public class SimulationService implements INetworkDispatch { CreatureObject creature = (CreatureObject) client.getParent(); - CreatureObject object = (CreatureObject) client.getParent(); + CreatureObject object = creature; - if (core.mountService.isMounted(object)) { + if (core.mountService.isMounted(creature) && creature.getObjectID() == ((CreatureObject) creature.getContainer()).getOwnerId()) { object = (CreatureObject) object.getContainer(); } @@ -371,59 +371,41 @@ public class SimulationService implements INetworkDispatch { add(object, newPos.x, newPos.z); } - - - //object.setParentId(0); //object.setParent(null); // System.out.println("Parsed Height: " + core.terrainService.getHeight(object.getPlanetId(), dataTransform.getXPosition(), dataTransform.getZPosition()) // + " should be: " + dataTransform.getYPosition()); UpdateTransformMessage utm = new UpdateTransformMessage(object.getObjectID(), dataTransform.getTransformedX(), dataTransform.getTransformedY(), dataTransform.getTransformedZ(), dataTransform.getMovementCounter(), (byte) dataTransform.getMovementAngle(), dataTransform.getSpeed()); - - List newAwareObjects = get(object.getPlanet(), newPos.x, newPos.z, 512); - ArrayList oldAwareObjects = new ArrayList(object.getAwareObjects()); - @SuppressWarnings("unchecked") Collection updateAwareObjects = CollectionUtils.intersection(oldAwareObjects, newAwareObjects); object.notifyObservers(utm, false); - + + List newAwareObjects = get(creature.getPlanet(), newPos.x, newPos.z, 512); + ArrayList oldAwareObjects = new ArrayList(creature.getAwareObjects()); + @SuppressWarnings("unchecked") Collection updateAwareObjects = CollectionUtils.intersection(oldAwareObjects, newAwareObjects); + for(int i = 0; i < oldAwareObjects.size(); i++) { SWGObject obj = oldAwareObjects.get(i); - if(!updateAwareObjects.contains(obj) && obj != object && obj.getWorldPosition().getDistance2D(newPos) > 200 && obj.isInQuadtree() /*&& obj.getParentId() == 0*/) { + if(!updateAwareObjects.contains(obj) && obj != creature && obj.getWorldPosition().getDistance2D(newPos) > 200 && obj.isInQuadtree() /*&& obj.getParentId() == 0*/) { if(obj.getAttachment("bigSpawnRange") != null && obj.getWorldPosition().getDistance2D(newPos) < 512) continue; - object.makeUnaware(obj); + creature.makeUnaware(obj); if(obj.getClient() != null) - obj.makeUnaware(object); - } else if(obj != object && obj.getWorldPosition().getDistance2D(newPos) > 200 && obj.isInQuadtree() && obj.getAttachment("bigSpawnRange") == null) { - object.makeUnaware(obj); + obj.makeUnaware(creature); + } else if(obj != creature && obj.getWorldPosition().getDistance2D(newPos) > 200 && obj.isInQuadtree() && obj.getAttachment("bigSpawnRange") == null) { + creature.makeUnaware(obj); if(obj.getClient() != null) - obj.makeUnaware(object); + obj.makeUnaware(creature); } } + for(int i = 0; i < newAwareObjects.size(); i++) { SWGObject obj = newAwareObjects.get(i); //System.out.println(obj.getTemplate()); - if(!updateAwareObjects.contains(obj) && obj != object && !object.getAwareObjects().contains(obj) && obj.getContainer() != object && obj.isInQuadtree()) { + if(!updateAwareObjects.contains(obj) && obj != creature && !creature.getAwareObjects().contains(obj) && obj.getContainer() != creature && obj.isInQuadtree()) { if(obj.getAttachment("bigSpawnRange") == null && obj.getWorldPosition().getDistance2D(newPos) > 200) continue; - //object.makeAware(obj); - - if (object.getOption(Options.MOUNT)){ - CreatureObject owner = (CreatureObject) core.objectService.getObject(object.getOwnerId()); - owner.makeAware(obj); - } - else { - object.makeAware(obj); - } - - if(obj.getClient() != null){ - if (object.getOption(Options.MOUNT)){ - CreatureObject owner = (CreatureObject) core.objectService.getObject(object.getOwnerId()); - obj.makeAware(owner); - } - else { - obj.makeAware(object); - } - } + creature.makeAware(obj); + if(obj.getClient() != null) + obj.makeAware(creature); } } @@ -434,8 +416,7 @@ public class SimulationService implements INetworkDispatch { object.getEventBus().publish(event); } - - + }); objControllerOpcodes.put(ObjControllerOpcodes.DATA_TRANSFORM_WITH_PARENT, new INetworkRemoteEvent() { @@ -485,7 +466,7 @@ public class SimulationService implements INetworkDispatch { if(object.getContainer() != null) object.getContainer()._remove(object); if (object.getClient().isGM() && parent != null && parent instanceof CellObject && parent.getContainer() != null) - object.sendSystemMessage("BuildingId Hex: " + Long.toHexString(parent.getContainer().getObjectID()) + " CellNumber: " + ((CellObject) parent).getCellNumber(), DisplayType.Broadcast); + object.sendSystemMessage("BuildingId - Dec: " + parent.getContainer().getObjectID() + " Hex: " + Long.toHexString(parent.getContainer().getObjectID()) + " CellNumber: " + ((CellObject) parent).getCellNumber(), DisplayType.Broadcast); parent._add(object); } object.setPosition(newPos); @@ -767,6 +748,7 @@ public class SimulationService implements INetworkDispatch { return new Point3D(x, y, z); } + /* * Moved this to ConnectionService which will disconnect them * from the server if they don't send packets for 5 minutes or more