From 09f6266cc77561fd87c9a2fb2ecf4accf95a623f Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Mon, 7 Jul 2014 21:31:06 +0200 Subject: [PATCH] Fixes #0000061 Houses can't be deleted --- src/main/NGECore.java | 5 ++ src/resources/objects/SWGList.java | 1 + .../creature/CreatureMessageBuilder.java | 4 ++ src/services/housing/HousingService.java | 4 +- src/services/pet/PetService.java | 5 ++ src/tools/CharonPacketLogger.java | 9 ++- src/tools/CharonPacketUtils.java | 59 ++++++++++++++++--- 7 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 72f56b7e..2901fbeb 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -111,6 +111,7 @@ import services.spawn.SpawnService; import services.sui.SUIService; import services.trade.TradeService; import services.travel.TravelService; +import tools.CharonPacketLogger; import tools.DevLogQueuer; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.CrcStringTableVisitor; @@ -538,6 +539,10 @@ public class NGECore { DevLogQueuer devLogQueuer = new DevLogQueuer(); + + CharonPacketLogger packetLogger; + if (PACKET_DEBUG) + packetLogger = new CharonPacketLogger(); didServerCrash = false; System.out.println("Started Server."); diff --git a/src/resources/objects/SWGList.java b/src/resources/objects/SWGList.java index f0ca3665..ffa34897 100644 --- a/src/resources/objects/SWGList.java +++ b/src/resources/objects/SWGList.java @@ -342,6 +342,7 @@ public class SWGList implements List, Serializable { updateCounter += list.size(); //StringUtilities.printBytes(newListData); + //tools.CharonPacketUtils.printAnalysis(buffer,"SWGList set"); queue(newListData); return true; diff --git a/src/resources/objects/creature/CreatureMessageBuilder.java b/src/resources/objects/creature/CreatureMessageBuilder.java index 9604b6df..33367160 100644 --- a/src/resources/objects/creature/CreatureMessageBuilder.java +++ b/src/resources/objects/creature/CreatureMessageBuilder.java @@ -113,6 +113,7 @@ public class CreatureMessageBuilder extends TangibleMessageBuilder { buffer.putInt(creature.getFactionStatus()); byte[] customizationData = creature.getCustomization(); + //byte[] customizationData = new byte[]{(byte)0x03,(byte)0xBF,(byte)0xC3,(byte)0x33,(byte)0x02,(byte)0x01,(byte)0x02}; if(customizationData == null || customizationData.length <= 0) // Shuttles have no customization data buffer.putShort((short) 0); @@ -148,6 +149,9 @@ public class CreatureMessageBuilder extends TangibleMessageBuilder { buffer.flip(); buffer = createBaseline("CREO", (byte) 3, buffer, size); + + tools.CharonPacketUtils.printAnalysis(buffer, "CREO 3"); + return buffer; } diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index fd079196..bb9e31d5 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -46,6 +46,7 @@ import resources.common.OutOfBand; import resources.datatables.Citizenship; import resources.datatables.DisplayType; import resources.objects.building.BuildingObject; +import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; import resources.objects.installation.InstallationObject; @@ -325,7 +326,7 @@ public class HousingService implements INetworkDispatch { } else { window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); } - if (building.getConditionDamage()<20){ + if (building.getConditionDamage()>20){ window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); noRedeed.add(-1); } else { @@ -421,7 +422,6 @@ public class HousingService implements INetworkDispatch { houseOwner.sendSystemMessage("@player_structure:processing_destruction",(byte)1); houseOwner.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); - } else { houseOwner.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); } diff --git a/src/services/pet/PetService.java b/src/services/pet/PetService.java index 45ee5cd6..249be17f 100644 --- a/src/services/pet/PetService.java +++ b/src/services/pet/PetService.java @@ -210,6 +210,11 @@ public class PetService implements INetworkDispatch { activeAbilities.add("toggleBeastPassive"); player.getActivePetAbilities().set(activeAbilities); + // 02 01 02 33 C3 BF 03 + //byte[] customization = new byte[]{(byte)0x03,(byte)0xBF,(byte)0xC3,(byte)0x33,(byte)0x02,(byte)0x01,(byte)0x02}; + byte[] customization = new byte[]{(byte)0x02,(byte)0x01,(byte)0x02,(byte)0x33,(byte)0xC3,(byte)0xBF,(byte)0x03}; + pet.setCustomization(customization); + pet.setFaction(actor.getFaction()); pet.setFactionStatus(actor.getFactionStatus()); pet.setOwnerId(actor.getObjectID()); diff --git a/src/tools/CharonPacketLogger.java b/src/tools/CharonPacketLogger.java index 01da574b..320676bf 100644 --- a/src/tools/CharonPacketLogger.java +++ b/src/tools/CharonPacketLogger.java @@ -5,7 +5,7 @@ import java.util.concurrent.BlockingQueue; import java.nio.file.*; public class CharonPacketLogger extends Thread { - private static final CharonPacketLogger instance = new CharonPacketLogger(); + private static CharonPacketLogger instance; private BlockingQueue itemsToLog = new ArrayBlockingQueue(100); @@ -16,8 +16,11 @@ public class CharonPacketLogger extends Thread { public static CharonPacketLogger getLogger() { return instance; } - private CharonPacketLogger() { - start(); + public CharonPacketLogger() { + if (instance!=null) + return; // Singleton + instance = this; + start(); } public void run() { diff --git a/src/tools/CharonPacketUtils.java b/src/tools/CharonPacketUtils.java index 45c9ac03..08adea22 100644 --- a/src/tools/CharonPacketUtils.java +++ b/src/tools/CharonPacketUtils.java @@ -9,6 +9,9 @@ import java.nio.file.OpenOption; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; import main.NGECore; @@ -20,21 +23,30 @@ import org.apache.mina.core.buffer.IoBuffer; public class CharonPacketUtils { - static Path newFile = Paths.get("M:/PSWG/LOGS/PSWG_PacketLog.txt"); + private static int loggingSessionID=0; + static Path newFile = Paths.get("src", "PSWG_DEVLOG.log"); private static boolean writeToFile = false; private CharonPacketLogger logger; public static void createLog(){ - try { - Files.deleteIfExists(newFile); - newFile = Files.createFile(newFile); + try { + writeToFile = true; + Date date = new Date(); + Calendar cal1 = Calendar.getInstance(); + cal1.setTimeInMillis(System.currentTimeMillis()); + SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-hh-mm-ss"); + String sDate=dateFormat.format(cal1.getTime()); + + String fileName = "PSWG_PACKETLOG_"+sDate+".log"; + newFile = Paths.get("debuglogs", fileName); + Files.deleteIfExists(newFile); + newFile = Files.createFile(newFile); + createHeader(newFile); } catch (IOException ex) { - System.out.println("Error creating file"); - } - System.out.println(Files.exists(newFile)); - writeToFile=true; + System.out.println("Error creating file"); + } } public static void appendToLog(String content, Path newFile){ @@ -58,6 +70,16 @@ public class CharonPacketUtils { if (!NGECore.PACKET_DEBUG) return; + if (pack==null) + return; + + if (loggingSessionID>0){ + } else { + createLog(); + loggingSessionID++; + } + + //appendToLog(packetName+" :"); int hexLineNumber = 0; byte[] packArray = pack.array(); @@ -138,4 +160,25 @@ public class CharonPacketUtils { //if (writeToFile) // appendToLog(""); } + + public static void createHeader(Path newFile){ + //Writing to file + try(BufferedWriter writer = Files.newBufferedWriter( + newFile, Charset.defaultCharset(),new OpenOption[] {StandardOpenOption.APPEND})){ + Date date = new Date(); + Calendar cal1 = Calendar.getInstance(); + cal1.setTimeInMillis(System.currentTimeMillis()); + SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-hh:mm:ss"); + String sDate=dateFormat.format(cal1.getTime()); + String developer = System.getProperty("user.name"); + writer.append("*********************************************\n"); + writer.append("**** PROJECTSWG PACKET LOG " + sDate + " ***\n"); + writer.append("*********************************************\n"); + writer.append("DEV: "+developer + "\n"); + writer.append("\n"); + writer.flush(); + }catch(IOException exception){ + System.out.println("Error writing to file"); + } + } }