diff --git a/scripts/object/tangible/travel/travel_ticket/base/base_travel_ticket.py b/scripts/object/tangible/travel/travel_ticket/base/base_travel_ticket.py index ccad8904..77e1b16d 100644 --- a/scripts/object/tangible/travel/travel_ticket/base/base_travel_ticket.py +++ b/scripts/object/tangible/travel/travel_ticket/base/base_travel_ticket.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'travel_ticket') return \ No newline at end of file diff --git a/scripts/radial/travel_terminal.py b/scripts/radial/travel_terminal.py index f8b984fb..eae686ca 100644 --- a/scripts/radial/travel_terminal.py +++ b/scripts/radial/travel_terminal.py @@ -8,13 +8,10 @@ def createRadial(core, owner, target, radials): def handleSelection(core, owner, target, option): if option == 21 and target: - print ('Owner: ' + str(owner.getObjectId())) - + if owner is not None: tpm = EnterTicketPurchaseModeMessage(owner.getPlanet().getName(), core.mapService.getClosestCityName(owner), owner) owner.getClient().getSession().write(tpm.serialize()) - print ('Planet name: ' + owner.getPlanet().getName()) - print ('City name: ' + core.mapService.getClosestCityName(owner)) return return diff --git a/scripts/radial/travel_ticket.py b/scripts/radial/travel_ticket.py new file mode 100644 index 00000000..9812f7ff --- /dev/null +++ b/scripts/radial/travel_ticket.py @@ -0,0 +1,40 @@ +from resources.common import RadialOptions +from protocol.swg import EnterTicketPurchaseModeMessage +import sys + +def createRadial(core, owner, target, radials): + radials.clear + + radials.add(RadialOptions(0, 21, 1, 'Use Travel Ticket')) + #radials.add(RadialOptions(0, 7, 1, '')) + #radials.add(RadialOptions(0, 15, 1, '')) + return + +def handleSelection(core, owner, target, option): + + if option == 21 and target: + + tp = core.travelService.getNearestTravelPoint(owner) + + if owner is not None and tp is not None: + if tp.getLocation().getDistance2D(owner.getWorldPosition()) <= 25: + if tp.isShuttleAvailable() is True: + core.travelService.doTransport(owner, core.travelService.getTravelPointByName(target.getStringAttribute('@obj_attr_n:travel_arrival_planet'), + target.getStringAttribute('@obj_attr_n:travel_arrival_point'))) + core.objectService.destroyObject(target) + return + return + else: + owner.sendSystemMessage('@travel:boarding_too_far', 0) + return + return + return + + if option == 15 and target: + core.commandService.callCommand(owner, 'serverdestroyobject', target, None) + return + return + +def handleSUI(owner, window, eventType, returnList): + + return \ No newline at end of file diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 31ee4181..3d9af0fb 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -563,37 +563,8 @@ public class SimulationService implements INetworkDispatch { if(object.getParentId() == 0) add(object, pos.x, pos.z); - - + PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); - if (ghost != null) { - - String objectShortName = object.getCustomName().toLowerCase(); - - if (object.getCustomName().contains(" ")) { - String[] splitName = object.getCustomName().toLowerCase().split(" "); - objectShortName = splitName[0].toLowerCase(); - } - - core.chatService.playerStatusChange(objectShortName, (byte) 1); - - if (ghost.getFriendList().isEmpty() == false) { - // Find out what friends are online/offline - for (String friend : ghost.getFriendList()) { - SWGObject friendObject = (SWGObject) core.chatService.getObjectByFirstName(friend); - if (friendObject == null) - continue; - if(friendObject.isInQuadtree() == true) { - ChatFriendsListUpdate onlineNotifyStatus = new ChatFriendsListUpdate(friend, (byte) 1); - client.getSession().write(onlineNotifyStatus.serialize()); - - } else { - ChatOnChangeFriendStatus changeStatus = new ChatOnChangeFriendStatus(object.getObjectID(), friend, 0); - client.getSession().write(changeStatus.serialize()); - } - } - } - } core.weatherService.sendWeather(object); diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 2d0c26c4..a3587d08 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -110,6 +110,10 @@ public class ChatService implements INetworkDispatch { for(Client client : observers) { float distance = client.getParent().getPosition().getDistance2D(position); if(client != null && client.getSession() != null && distance <= 80) { + + if(((PlayerObject)client.getParent().getSlottedObject("ghost")).getIgnoreList().contains(speaker.getCustomName().toLowerCase().split(" ")[0])) + continue; + spatialChat.setDestinationId(client.getParent().getObjectID()); ObjControllerMessage objControllerMessage2 = new ObjControllerMessage(0x0B, spatialChat); client.getSession().write(objControllerMessage2.serialize()); diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 367f9134..293645f3 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -285,7 +285,7 @@ public class CommandService implements INetworkDispatch { } - public void callCommand(CreatureObject actor, String commandName, SWGObject target, String commandArgs) { + public void callCommand(SWGObject actor, String commandName, SWGObject target, String commandArgs) { if (actor == null) return; diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 6888b40b..d819ef25 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -49,6 +49,8 @@ import org.python.core.PyObject; import com.sleepycat.persist.EntityCursor; +import protocol.swg.ChatFriendsListUpdate; +import protocol.swg.ChatOnChangeFriendStatus; import protocol.swg.ChatOnGetFriendsList; import protocol.swg.CmdSceneReady; import protocol.swg.CmdStartScene; @@ -564,6 +566,35 @@ public class ObjectService implements INetworkDispatch { ChatOnGetFriendsList friendsListMessage = new ChatOnGetFriendsList(ghost); client.getSession().write(friendsListMessage.serialize()); + if (ghost != null) { + + String objectShortName = creature.getCustomName().toLowerCase(); + + if (creature.getCustomName().contains(" ")) { + String[] splitName = creature.getCustomName().toLowerCase().split(" "); + objectShortName = splitName[0].toLowerCase(); + } + + core.chatService.playerStatusChange(objectShortName, (byte) 1); + + if (ghost.getFriendList().isEmpty() == false) { + // Find out what friends are online/offline + for (String friend : ghost.getFriendList()) { + SWGObject friendObject = (SWGObject) core.chatService.getObjectByFirstName(friend); + if (friendObject == null) + continue; + if(friendObject.isInQuadtree() == true) { + ChatFriendsListUpdate onlineNotifyStatus = new ChatFriendsListUpdate(friend, (byte) 1); + client.getSession().write(onlineNotifyStatus.serialize()); + + } else { + ChatOnChangeFriendStatus changeStatus = new ChatOnChangeFriendStatus(creature.getObjectID(), friend, 0); + client.getSession().write(changeStatus.serialize()); + } + } + } + } + core.playerService.postZoneIn(creature); } diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index bd3ba0b7..8ab347ca 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -230,7 +230,7 @@ public class TravelService implements INetworkDispatch { Planet planet = core.terrainService.getPlanetByName(departurePlanet.toLowerCase()); SWGObject travelTicket = core.objectService.createObject("object/tangible/travel/travel_ticket/base/shared_base_travel_ticket.iff", planet); - + travelTicket.setStringAttribute("@obj_attr_n:travel_departure_planet", WordUtils.capitalize(departurePlanet)); travelTicket.setStringAttribute("@obj_attr_n:travel_departure_point", departureLoc); @@ -274,7 +274,7 @@ public class TravelService implements INetworkDispatch { creatureObj.getSlottedObject("inventory").add(travelTicket); //Console.println("Total cost: " + fare); - SUIWindow window = core.suiService.createMessageBox(MessageBoxType.MESSAGE_BOX_OK, "STAR WARS GALAXIES", "Ticket purchase complete.", player, null, 0); + SUIWindow window = core.suiService.createMessageBox(MessageBoxType.MESSAGE_BOX_OK, "STAR WARS GALAXIES", "@travel:ticket_purchase_complete", player, null, 0); core.suiService.openSUIWindow(window); creatureObj.sendSystemMessage("You successfully make a payment of " + fare + " credits to the Galactic Travel Commission.", (byte) 0);