From 341b9519bfb9fd529afeeed725b5b6545dbeaa8f Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 24 Aug 2013 17:05:18 +0200 Subject: [PATCH] fixed friend list deltas --- scripts/commands/faction.py | 6 +++++- scripts/commands/removefriend.py | 3 ++- src/resources/objects/player/PlayerMessageBuilder.java | 10 ++++++++-- src/resources/objects/player/PlayerObject.java | 2 ++ src/services/command/CommandService.java | 3 ++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/scripts/commands/faction.py b/scripts/commands/faction.py index a99a074c..a8ecc6a9 100644 --- a/scripts/commands/faction.py +++ b/scripts/commands/faction.py @@ -7,6 +7,8 @@ def setup(): def run(core, actor, target, commandString): actorFaction = actor.getFaction() + print 'test' + if commandString == ('imperial') and actorFaction != "imperial": actor.setFaction('imperial') actor.sendSystemMessage('You are aligned to the Imperial faction', 0) @@ -21,4 +23,6 @@ def run(core, actor, target, commandString): actor.setFaction('neutral') actor.sendSystemMessage('You aren\'t aligned to any faction.', 0) return - return \ No newline at end of file + + return + \ No newline at end of file diff --git a/scripts/commands/removefriend.py b/scripts/commands/removefriend.py index 886ed2d8..d4474d39 100644 --- a/scripts/commands/removefriend.py +++ b/scripts/commands/removefriend.py @@ -7,4 +7,5 @@ def run(core, actor, target, commandString): ghost = actor.getSlottedObject('ghost') chatSvc = core.chatService chatSvc.removeFriend(ghost, commandString, 1) - return \ No newline at end of file + return + \ No newline at end of file diff --git a/src/resources/objects/player/PlayerMessageBuilder.java b/src/resources/objects/player/PlayerMessageBuilder.java index 9891a3a5..d3775ea2 100644 --- a/src/resources/objects/player/PlayerMessageBuilder.java +++ b/src/resources/objects/player/PlayerMessageBuilder.java @@ -509,9 +509,12 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder { public IoBuffer buildFriendAddDelta(String friend) { - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = bufferPool.allocate(13 + friend.length(), false).order(ByteOrder.LITTLE_ENDIAN); PlayerObject player = (PlayerObject) object; + buffer.putInt(1); + buffer.putInt(player.getFriendListUpdateCounter()); + buffer.put((byte) 1); // updateType (SubType) buffer.putShort((short) player.getFriendList().indexOf(friend)); @@ -528,9 +531,12 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder { public IoBuffer buildFriendRemoveDelta(String friend) { - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + IoBuffer buffer = bufferPool.allocate(11, false).order(ByteOrder.LITTLE_ENDIAN); PlayerObject player = (PlayerObject) object; + buffer.putInt(1); + buffer.putInt(player.getFriendListUpdateCounter()); + buffer.put((byte) 0); // updateType (SubType) buffer.putShort((short) player.getFriendList().indexOf(friend)); diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index 8e4445fd..75ee468e 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -376,12 +376,14 @@ public class PlayerObject extends SWGObject { public void friendAdd(String friend) { synchronized(objectMutex) { + setFriendListUpdateCounter(getFriendListUpdateCounter() + 1); getContainer().getClient().getSession().write(messageBuilder.buildFriendAddDelta(friend)); } } public void friendRemove(String friend) { synchronized(objectMutex) { + setFriendListUpdateCounter(getFriendListUpdateCounter() + 1); getContainer().getClient().getSession().write(messageBuilder.buildFriendRemoveDelta(friend)); } } diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 5ae2a041..4c613808 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -78,8 +78,9 @@ public class CommandService implements INetworkDispatch { BaseSWGCommand command = getCommandByCRC(commandEnqueue.getCommandCRC()); - if(command == null) + if(command == null) { return; + } // TODO: command filters for state, posture etc.