From e9abd57db931df094c0edb2e864710fc9e7e4fd1 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Sat, 15 Mar 2014 15:02:09 -0400 Subject: [PATCH] Changed deltas and variables for MissionObject's --- .../MissionListRequest.java | 2 +- .../mission/MissionMessageBuilder.java | 77 ++++++++----------- .../objects/mission/MissionObject.java | 35 +++++---- src/services/MissionService.java | 42 +++++----- 4 files changed, 76 insertions(+), 80 deletions(-) diff --git a/src/protocol/swg/objectControllerObjects/MissionListRequest.java b/src/protocol/swg/objectControllerObjects/MissionListRequest.java index 7fbe2d02..6a2878cd 100644 --- a/src/protocol/swg/objectControllerObjects/MissionListRequest.java +++ b/src/protocol/swg/objectControllerObjects/MissionListRequest.java @@ -37,7 +37,7 @@ public class MissionListRequest extends ObjControllerObject { @Override public void deserialize(IoBuffer data) { - Console.println("MissionListRequest: " + StringUtilities.bytesToHex(data.array())); + //Console.println("MissionListRequest: " + StringUtilities.bytesToHex(data.array())); setObjectId(data.getLong()); data.getInt(); // unk data.get(); // unk byte diff --git a/src/resources/objects/mission/MissionMessageBuilder.java b/src/resources/objects/mission/MissionMessageBuilder.java index eb84b539..1baca6ee 100644 --- a/src/resources/objects/mission/MissionMessageBuilder.java +++ b/src/resources/objects/mission/MissionMessageBuilder.java @@ -45,9 +45,9 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { buffer.putShort((short) 17); buffer.putFloat(1); // mission complexity ?? - buffer.put(getAsciiString(mission.getStfFilename())); + buffer.put(getAsciiString("mission/mission_object")); buffer.putInt(0); - buffer.put(getAsciiString(mission.getStfName())); + buffer.put(getAsciiString("destroy_mission")); if (mission.getCustomName() == null) { buffer.putInt(0); } else { buffer.put(getUnicodeString(mission.getCustomName())); } @@ -83,11 +83,7 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet())); } - if (mission.getMissionTemplateObject() == null) { - buffer.putInt(0); - } else { - buffer.putInt(CRC.StringtoCRC(mission.getMissionTemplateObject())); - } + buffer.putInt(mission.getMissionTemplateObject()); buffer.put(getAsciiString(mission.getMissionDescription())); buffer.putInt(0); @@ -182,7 +178,7 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { return buffer; } - +/* public IoBuffer buildStfDelta(String stfFile, String stfName) { IoBuffer buffer = IoBuffer.allocate(4 + stfFile.length() + stfName.length(), false).order(ByteOrder.LITTLE_ENDIAN); @@ -363,71 +359,64 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { return buffer; } - +*/ + @SuppressWarnings("unused") public IoBuffer buildMissionDelta() { - IoBuffer buffer = IoBuffer.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = IoBuffer.allocate(500, false).order(ByteOrder.LITTLE_ENDIAN); buffer.isAutoExpand(); + buffer.isAutoShrink(); MissionObject mission = (MissionObject) object; - buffer.putShort((short) 0x05); + buffer.putShort((short) 11); + buffer.put(getAsciiString(mission.getMissionDescription())); + buffer.putInt(0); + buffer.put(getAsciiString(mission.getMissionDescId())); + + buffer.putShort((short) 5); buffer.putInt(mission.getMissionLevel()); - buffer.putShort((short) 0x06); - buffer.putFloat(mission.getMissionStartX()); - buffer.putFloat(mission.getMissionStartZ()); - buffer.putFloat(mission.getMissionStartY()); - buffer.putLong(0); - buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet())); - - buffer.putShort((short) 0x07); + buffer.putShort((short) 7); buffer.put(getUnicodeString(mission.getCreator())); - buffer.putShort((short) 0x08); + buffer.putShort((short) 8); buffer.putInt(mission.getCreditReward()); - buffer.putShort((short) 0x09); + buffer.putShort((short) 9); buffer.putFloat(mission.getMissionDestinationX()); buffer.putFloat(mission.getMissionDestinationZ()); buffer.putFloat(mission.getMissionDestinationY()); buffer.putLong(0); buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet())); - buffer.putShort((short) 0x0A); - buffer.putInt(CRC.StringtoCRC(mission.getMissionTemplateObject())); + buffer.putShort((short) 10); + buffer.putInt(mission.getMissionTemplateObject()); - buffer.putShort((short) 0x0B); - buffer.put(getAsciiString(mission.getMissionDescription())); - buffer.putInt(0); - buffer.put(getAsciiString(mission.getMissionDescId())); - - buffer.putShort((short) 0x0C); + buffer.putShort((short) 12); buffer.put(getAsciiString(mission.getMissionTitle())); buffer.putInt(0); buffer.put(getAsciiString(mission.getMissionTitleId())); - buffer.putShort((short) 0x0E); + buffer.putShort((short) 13); + buffer.putInt(mission.getMissionRepeatCounter()); + + buffer.putShort((short) 14); buffer.putInt(CRC.StringtoCRC(mission.getMissionType())); - buffer.putShort((short) 0x0F); + buffer.putShort((short) 15); buffer.put(getAsciiString(mission.getMissionTargetName())); - buffer.putShort((short) 0x10); - WaypointObject wp = mission.getAttachedWaypoint(); - buffer.putInt(wp.getCellId()); // wp cell - buffer.putFloat(wp.getPosition().x); - buffer.putFloat(wp.getPosition().z); - buffer.putFloat(wp.getPosition().y); - buffer.putLong(0); - buffer.putInt(CRC.StringtoCRC(wp.getPlanet().name)); - buffer.put(getUnicodeString(wp.getName())); - buffer.putLong(mission.getObjectId() + 1); - buffer.put(wp.getColor()); - buffer.put((byte) 0x01); + buffer.putShort((short) 6); + buffer.putFloat(mission.getMissionStartX()); + buffer.putFloat(mission.getMissionStartZ()); + buffer.putFloat(mission.getMissionStartY()); + buffer.putLong(0); // Start Object ID + buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet())); int size = buffer.position(); buffer.flip(); - buffer = createDelta("MISO", (byte) 3, (short) 11, buffer, size + 4); + buffer = createDelta("MISO", (byte) 3, (short) 8, buffer, size + 4); + Console.println("MISO3 Delta: " + StringUtilities.bytesToHex(buffer.array())); return buffer; } @Override diff --git a/src/resources/objects/mission/MissionObject.java b/src/resources/objects/mission/MissionObject.java index ed3f6064..baca60e7 100644 --- a/src/resources/objects/mission/MissionObject.java +++ b/src/resources/objects/mission/MissionObject.java @@ -21,6 +21,8 @@ ******************************************************************************/ package resources.objects.mission; +import java.util.List; + import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.NotPersistent; @@ -55,8 +57,9 @@ public class MissionObject extends IntangibleObject implements IPersistent { private String descId; private String titleId; private String type; - private String missionTemplateObject; + private int missionTemplateObject; private WaypointObject attachedWaypoint; + @NotPersistent MissionMessageBuilder messageBuilder = new MissionMessageBuilder(this); @@ -98,7 +101,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.startPlanet = planet; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildStartLocationDelta(x, z, y, planet)); + //getContainer().getClient().getSession().write(messageBuilder.buildStartLocationDelta(x, z, y, planet)); } } @@ -128,7 +131,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.destinationPlanet = planet; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildDestinationDelta(x, z, y, planet)); + //getContainer().getClient().getSession().write(messageBuilder.buildDestinationDelta(x, z, y, planet)); } } @@ -149,7 +152,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.difficultyLevel = missionLevel; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildDifficultyLevelDelta(missionLevel)); + //getContainer().getClient().getSession().write(messageBuilder.buildDifficultyLevelDelta(missionLevel)); } } @@ -182,7 +185,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.reward = missionCredits; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildCreditsRewardDelta(missionCredits)); + //getContainer().getClient().getSession().write(messageBuilder.buildCreditsRewardDelta(missionCredits)); } } @@ -197,7 +200,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.creator = missionCreator; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildCreatorNameDelta(missionCreator)); + //getContainer().getClient().getSession().write(messageBuilder.buildCreatorNameDelta(missionCreator)); } } @@ -213,7 +216,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.descId = id; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildMissionDescriptionDelta(missionDescription, id)); + //getContainer().getClient().getSession().write(messageBuilder.buildMissionDescriptionDelta(missionDescription, id)); } } @@ -229,7 +232,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.titleId = id; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildMissionTitleDelta(missionTitle, id)); + //getContainer().getClient().getSession().write(messageBuilder.buildMissionTitleDelta(missionTitle, id)); } } @@ -244,7 +247,7 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.missionTargetName = missionTargetName; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildTargetNameDelta(missionTargetName)); + //getContainer().getClient().getSession().write(messageBuilder.buildTargetNameDelta(missionTargetName)); } } @@ -260,18 +263,18 @@ public class MissionObject extends IntangibleObject implements IPersistent { } } - public String getMissionTemplateObject() { + public int getMissionTemplateObject() { synchronized(objectMutex) { return missionTemplateObject; } } - public void setMissionTemplateObject(String missionTemplateObject) { + public void setMissionTemplateObject(int missionTemplateObject) { synchronized(objectMutex) { this.missionTemplateObject = missionTemplateObject; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildTargetObjectIffDelta(missionTemplateObject)); + //getContainer().getClient().getSession().write(messageBuilder.buildTargetObjectIffDelta(missionTemplateObject)); } } @@ -298,13 +301,17 @@ public class MissionObject extends IntangibleObject implements IPersistent { this.type = missionType; } if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildMissionTypeDelta(missionType)); + //getContainer().getClient().getSession().write(messageBuilder.buildMissionTypeDelta(missionType)); } } public void sendMissionDelta() { + getGrandparent().getClient().getSession().write(messageBuilder.buildMissionDelta()); + //getContainer().getClient().getSession().write(messageBuilder.buildMissionDelta()); + System.out.println("Sent delta"); if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildMissionDelta()); + //getContainer().getClient().getSession().write(messageBuilder.buildMissionDelta()); + //System.out.println("Sent delta"); } } diff --git a/src/services/MissionService.java b/src/services/MissionService.java index 7141dee8..fcc25005 100644 --- a/src/services/MissionService.java +++ b/src/services/MissionService.java @@ -43,6 +43,7 @@ import resources.objects.waypoint.WaypointObject; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.DatatableVisitor; import engine.clients.Client; +import engine.resources.common.CRC; import engine.resources.container.Traverser; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; @@ -99,6 +100,7 @@ public class MissionService implements INetworkDispatch { }); } + @SuppressWarnings("unused") private void populateMissions(final SWGObject player, int type) { CreatureObject creature = (CreatureObject) player; TangibleObject missionBag = (TangibleObject) creature.getSlottedObject("mission_bag"); @@ -111,13 +113,15 @@ public class MissionService implements INetworkDispatch { @Override public void process(SWGObject child) { MissionObject mission = (MissionObject) child; - if (deCount.get() <= 7) { + if (deCount.get() < 5) { mission.setMissionType("destroy"); + mission.setMissionStart(200, 0, 200, "tatooine"); deCount.getAndIncrement(); Console.println("Destroy missions: " + String.valueOf(deCount.get())); } - else if (dCount.get() <= 7) { + else if (dCount.get() < 5) { mission.setMissionType("deliver"); + mission.setMissionStart(0, 0, 0, "tatooine"); dCount.getAndIncrement(); Console.println("Deliver missions: " + String.valueOf(dCount.get())); } else { @@ -125,26 +129,26 @@ public class MissionService implements INetworkDispatch { } mission.setCreditReward(1337); mission.setCreator("Waverunner"); - mission.setMissionLevel(10); + mission.setMissionLevel(5); mission.setMissionDescription("mission/mission_destroy_neutral_hard_creature_tatooine", "m17d"); mission.setMissionTitle("mission/mission_destroy_neutral_hard_creature_tatooine", "m17t"); - mission.setMissionDestination(0, 0, 0, "tatooine"); - mission.setMissionTemplateObject("object/tangible/lair/womp_rat/shared_lair_womp_rat_desert"); + mission.setMissionDestination(400, 0, 400, "tatooine"); + mission.setMissionTemplateObject(CRC.StringtoCRC("object/tangible/lair/base/shared_objective_power_generator.iff")); mission.setMissionTargetName("@lair_n:tatooine_giant_worrt_lair_neutral_medium"); - - WaypointObject wp = new WaypointObject(); + mission.setRepeatCount(1); + /*WaypointObject wp = new WaypointObject(); wp.setName("@mission/mission_destroy_neutral_hard_creature_tatooine:m17t"); wp.setColor(WaypointObject.ORANGE); wp.setPosition(new Point3D(10, 10, 10)); wp.setCellId(0); - wp.setPlanet(core.terrainService.getPlanetByName("tatooine")); - //mission.sendMissionDelta(); + wp.setPlanet(core.terrainService.getPlanetByName("tatooine"));*/ + mission.sendMissionDelta(); } }); - Console.println("Sent deltas"); + //Console.println("Sent deltas"); } // May want to create a map for the server with needed info @@ -170,27 +174,23 @@ public class MissionService implements INetworkDispatch { } public void createDefaultMissions(CreatureObject player) { - for(int missionsAdded = 0; missionsAdded <= 16; missionsAdded++) { + for(int missionsAdded = 0; missionsAdded <= 10; missionsAdded++) { MissionObject mission = (MissionObject) core.objectService.createObject("object/mission/shared_mission_object.iff", player.getPlanet()); - - mission.setStfFilename("mission/mission_object"); - mission.setStfName("destroy_mission"); - - mission.setMissionLevel(50); + mission.setMissionLevel(0); mission.setMissionStart(0, 0, 0, null); mission.setCreator(""); - mission.setCreditReward(100); + mission.setCreditReward(0); mission.setMissionDestination(0, 0, 0, null); //mission.setMissionTemplateObject(missionTemplateObject); - mission.setMissionDescription("mission/mission_npc_survey_neutral_easy", "m1o"); - mission.setMissionTitle("mission/mission_npc_survey_neutral_easy", "m1t"); + mission.setMissionDescription("", ""); + mission.setMissionTitle("", ""); - mission.setMissionType("survey"); // 0x19C9FAC1 + mission.setMissionType("destroy"); // 0x19C9FAC1 - mission.setMissionTargetName("Testing target name"); + mission.setMissionTargetName(""); TangibleObject missionBag = (TangibleObject) player.getSlottedObject("mission_bag"); missionBag._add(mission);