diff --git a/scripts/commands/addfriend.py b/scripts/commands/addfriend.py index dbbd0859..d839b59b 100644 --- a/scripts/commands/addfriend.py +++ b/scripts/commands/addfriend.py @@ -6,5 +6,6 @@ def setup(): def run(core, actor, target, commandString): actorGhost = actor.getSlottedObject("ghost") chatSrvc = core.chatService - chatSrvc.addFriend(actorGhost, commandString, 1) + if chatSrvc and actorGhost and commandString: + chatSrvc.addFriend(actorGhost, commandString, 1) return \ No newline at end of file diff --git a/scripts/commands/giveitem.py b/scripts/commands/giveitem.py index 4815a4ab..de894888 100644 --- a/scripts/commands/giveitem.py +++ b/scripts/commands/giveitem.py @@ -5,6 +5,9 @@ def setup(): def run(core, actor, target, commandString): + if actor.getClient() and actor.getClient().isGM() == False: + return + if not commandString.startswith('object/tangible') and not commandString.startswith('object/weapon'): return diff --git a/scripts/commands/inspire.py b/scripts/commands/inspire.py index e2924682..30df2e29 100644 --- a/scripts/commands/inspire.py +++ b/scripts/commands/inspire.py @@ -13,15 +13,15 @@ def run(core, actor, target, commandString): print 'x' if actor.getPosture() != 0x09: - actor.sendSystemMessage('@performance:insp_buff_must_perform') + actor.sendSystemMessage('@performance:insp_buff_must_perform', 2) return - if (target.getPerformanceWatchee() != actor): + if not target.getPerformanceWatchee() or target.getPerformanceWatchee() != actor: if actor.getPerformanceType(): - actor.sendSystemMessage('@performance:insp_buff_must_watch') + actor.sendSystemMessage('@performance:insp_buff_must_watch', 2) return else: - actor.sendSystemMessage('@performance:insp_buff_must_listen') + actor.sendSystemMessage('@performance:insp_buff_must_listen', 2) return print ('Buffing Player: ' + str(target.getObjectId()) + ' or: ' + target.getCustomName()) diff --git a/scripts/object/intangible/vehicle/speederbike_swoop_pcd.py b/scripts/object/intangible/vehicle/speederbike_swoop_pcd.py index ccad8904..94a561f7 100644 --- a/scripts/object/intangible/vehicle/speederbike_swoop_pcd.py +++ b/scripts/object/intangible/vehicle/speederbike_swoop_pcd.py @@ -1,4 +1,23 @@ import sys def setup(core, object): + object.setAttachment('vehicleId', core.objectService.generateObjectID()) + object.setAttachment('radial_filename', 'item') + return + +def use(core, actor, object): + if object: + vehicleId = object.getAttachment('vehicleId') + + if not vehicleId: + return + + vehicle = core.objectService.getObject(vehicleId) + + if vehicle: + core.objectService.destroyObject(vehicle) + else: + core.objectService.createObject('object/mobile/vehicles/shared_speederbike_swoop.iff', vehicleId, actor.getPlanet(), actor.getPosition(), actor.getOrientation()) + core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True) + return \ No newline at end of file diff --git a/scripts/object/mobile/vehicle/speederbike_swoop.py b/scripts/object/mobile/vehicle/speederbike_swoop.py index ccad8904..4626c764 100644 --- a/scripts/object/mobile/vehicle/speederbike_swoop.py +++ b/scripts/object/mobile/vehicle/speederbike_swoop.py @@ -1,4 +1,16 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'vehicle') + return + +def use(core, actor, object): + vehicle = actor.getContainer() + + if vehicle: + if vehicle.getObjectID() == object.getObjectID(): + vehicle.remove(actor) + else: + vehicle.add(actor) + return \ No newline at end of file diff --git a/scripts/object/tangible/deed/vehicle_deed/speederbike_swoop_deed.py b/scripts/object/tangible/deed/vehicle_deed/speederbike_swoop_deed.py index ccad8904..eb077d1f 100644 --- a/scripts/object/tangible/deed/vehicle_deed/speederbike_swoop_deed.py +++ b/scripts/object/tangible/deed/vehicle_deed/speederbike_swoop_deed.py @@ -1,4 +1,19 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'vehicleDeed') + return + +def use(core, actor, object): + datapad = actor.getSlottedObject('datapad') + + pcd = core.objectService.createObject('object/intangible/vehicle/shared_speederbike_swoop_pcd.iff', actor.getPlanet(), actor.getPosition()) + + if datapad and pcd: + datapad.add(pcd) + core.objectService.destroyObject(object) + vehicle = createObject('object/mobile/vehicle/shared_speederbike_swoop.iff', pcd.getAttachment('vehicleId'), actor.getPlanet(), actor.getPosition(), actor.getOrientation()) + vehicle.setOwnerId(actor.getObjectID()) + core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True) + return \ No newline at end of file diff --git a/scripts/radial/item.py b/scripts/radial/item.py new file mode 100644 index 00000000..4c184296 --- /dev/null +++ b/scripts/radial/item.py @@ -0,0 +1,16 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.add(RadialOptions(0, 21, 1, '')) + radials.add(RadialOptions(0, 7, 1, '')) + radials.add(RadialOptions(0, 15, 1, '')) + return + +def handleSelection(core, owner, target, option): + if option == 21 and target: + core.objectService.useObject(owner, target) + if option == 15 and target: + core.objectService.destroyObject(target) + return + \ No newline at end of file diff --git a/scripts/radial/lifeday_gift.py b/scripts/radial/lifeday_gift.py index 55b2d057..696d7662 100644 --- a/scripts/radial/lifeday_gift.py +++ b/scripts/radial/lifeday_gift.py @@ -47,8 +47,8 @@ def handleSelection(core, actor, object, option): if not inventory: return - reward1 = core.objectService.createObject('object/holiday/life_day/rewards_09/shared_lifeday_painting.iff', actor.getPlanet()) - reward2 = core.objectService.createObject('object/holiday/life_day/' + objectName + '.iff', actor.getPlanet()) + reward1 = core.objectService.createObject('object/tangible/holiday/life_day/rewards_09/shared_lifeday_painting.iff', actor.getPlanet()) + reward2 = core.objectService.createObject('object/tangible/holiday/life_day/' + objectName + '.iff', actor.getPlanet()) inventory.add(reward1) inventory.add(reward2) diff --git a/scripts/radial/main_lifeday_tree.py b/scripts/radial/main_lifeday_tree.py index 6082489f..c996a9b5 100644 --- a/scripts/radial/main_lifeday_tree.py +++ b/scripts/radial/main_lifeday_tree.py @@ -5,9 +5,9 @@ def createRadial(core, owner, target, radials): radials.clear() player = owner.getSlottedObject('ghost') radials.add(RadialOptions(0, 7, 1, '')) - if player and core.collectionService.isComplete(owner, 'col_lifeday_tree_tracking_2010') == False: + if player and core.collectionService.getCollection(owner, 'col_lifeday_tree_tracking_2010') < 1: radials.add(RadialOptions(0, 21, 3, '@spam:tree_use')) - if player and core.collectionService.isComplete(owner, 'lifeday_badge_08') == False: + if player and core.collectionService.getCollection(owner, 'lifeday_badge_08') < 1: radials.add(RadialOptions(0, 115, 3, '@spam:tree_badge')) return @@ -27,7 +27,7 @@ def handleSelection(core, owner, target, option): if not player: return - if core.collectionService.isComplete(actor, 'lifeday_badge_08'): + if core.collectionService.isComplete(actor, 'col_lifeday_tree_tracking_2010'): return inventory = actor.getSlottedObject('inventory') diff --git a/scripts/radial/vehicle.py b/scripts/radial/vehicle.py new file mode 100644 index 00000000..ca1f4311 --- /dev/null +++ b/scripts/radial/vehicle.py @@ -0,0 +1,17 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.add(RadialOptions(0, 7, 1, '')) + radials.add(RadialOptions(1, 40, 3, '@pet/pet_menu:menu_enter_exit')) + radials.add(RadialOptions(0, 21, 1, '')) + radials.add(RadialOptions(0, 60, 3, '@pet/pet_menu:menu_store')) + return + +def handleSelection(core, owner, target, option): + if target: + if option == 21 or option == 40: + core.objectService.useObject(owner, target) + if option == 60: + core.objectService.destroyObject(target) + return \ No newline at end of file diff --git a/scripts/radial/vehicleDeed.py b/scripts/radial/vehicleDeed.py new file mode 100644 index 00000000..633eb6db --- /dev/null +++ b/scripts/radial/vehicleDeed.py @@ -0,0 +1,16 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.add(RadialOptions(0, 7, 1, '')) + radials.add(RadialOptions(0, 15, 1, '')) + radials.add(RadialOptions(0, 61, 1, '')) + return + +def handleSelection(core, owner, target, option): + if option == 61 and target: + core.objectService.useObject(owner, target) + if option == 15 and target: + core.objectService.destroyObject(target) + return + \ No newline at end of file diff --git a/scripts/static_spawns/tatooine.py b/scripts/static_spawns/tatooine.py index 80b02bde..2a84eb1f 100644 --- a/scripts/static_spawns/tatooine.py +++ b/scripts/static_spawns/tatooine.py @@ -17,7 +17,6 @@ def addPlanetSpawns(core, planet): bandtat4.setCustomName2('Sunil Eide') stcSvc.spawnObject('object/tangible/instrument/shared_nalargon.iff', 'tatooine', long(0), float(-5045.00), float(75), float(-6555), float(0.999132931232), float(-0.0416347384453)) # Drums stcSvc.spawnObject('object/tangible/instrument/shared_ommni_box.iff', 'tatooine', long(0), float(-5043.00), float(75), float(-6559), float(0.999132931232), float(-0.0416347384453)) # Box - stcSvc.spawnObject('object/tangible/holiday/life_day/shared_life_day_tree.iff', 'tatooine', long(0), float(-5083.00), float(75), float(-6619.00), float(0.999132931232), float(-0.0416347384453)) # small tree return \ No newline at end of file diff --git a/src/resources/common/PlayerFlags.java b/src/resources/datatables/PlayerFlags.java similarity index 97% rename from src/resources/common/PlayerFlags.java rename to src/resources/datatables/PlayerFlags.java index 897659d7..309f465e 100644 --- a/src/resources/common/PlayerFlags.java +++ b/src/resources/datatables/PlayerFlags.java @@ -19,7 +19,7 @@ * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. ******************************************************************************/ -package resources.common; +package resources.datatables; public class PlayerFlags { public static final int LFG = 0x01; diff --git a/src/resources/objects/player/PlayerMessageBuilder.java b/src/resources/objects/player/PlayerMessageBuilder.java index c0d7a740..e727df21 100644 --- a/src/resources/objects/player/PlayerMessageBuilder.java +++ b/src/resources/objects/player/PlayerMessageBuilder.java @@ -28,7 +28,6 @@ import org.apache.mina.core.buffer.IoBuffer; import engine.resources.common.CRC; -import resources.common.StringUtilities; import resources.objects.ObjectMessageBuilder; import resources.objects.waypoint.WaypointObject; @@ -357,7 +356,6 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder { int size = buffer.position(); buffer.flip(); buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 16, buffer, size + 4); - System.out.println(StringUtilities.bytesToHex(buffer.array())); return buffer; } diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index e55b3445..f2b86ce9 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -698,4 +698,13 @@ public class PlayerObject extends IntangibleObject { } } + /* + * @return True if specified flag(s) are enabled + */ + public boolean isSet(int flags) { + synchronized(objectMutex) { + return ((flagBitmask & flags) == flags); + } + } + } diff --git a/src/services/ConnectionService.java b/src/services/ConnectionService.java index e201ad73..18ac17e1 100644 --- a/src/services/ConnectionService.java +++ b/src/services/ConnectionService.java @@ -53,6 +53,7 @@ import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import resources.common.*; import resources.common.collidables.AbstractCollidable; +import resources.datatables.PlayerFlags; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index be8e8696..cd4d9f20 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -79,6 +79,7 @@ import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.common.*; import resources.common.collidables.AbstractCollidable; +import resources.datatables.PlayerFlags; import services.ai.LairActor; import toxi.geom.Line3D; import toxi.geom.Ray3D; @@ -571,7 +572,8 @@ public class SimulationService implements INetworkDispatch { ghost.toggleFlag(PlayerFlags.LD); - /*object.createTransaction(core.getCreatureODB().getEnvironment()); + /* + object.createTransaction(core.getCreatureODB().getEnvironment()); core.getCreatureODB().put(object, Long.class, CreatureObject.class, object.getTransaction()); object.getTransaction().commitSync();*/ @@ -615,6 +617,10 @@ public class SimulationService implements INetworkDispatch { PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); + if (ghost.isSet(PlayerFlags.LD)) { + ghost.toggleFlag(PlayerFlags.LD); + } + core.weatherService.sendWeather(object); if (!object.hasSkill(ghost.getProfessionWheelPosition())) { @@ -622,8 +628,7 @@ public class SimulationService implements INetworkDispatch { object.playEffectObject("clienteffect/skill_granted.cef", ""); object.playMusic("sound/music_acq_bountyhunter.snd"); core.skillService.addSkill(object, ghost.getProfessionWheelPosition()); - } - + } } public void transferToPlanet(SWGObject object, Planet planet, Point3D newPos, Quaternion newOrientation, SWGObject newParent) { diff --git a/src/services/SkillService.java b/src/services/SkillService.java index cccd6734..75385d8c 100644 --- a/src/services/SkillService.java +++ b/src/services/SkillService.java @@ -100,7 +100,7 @@ public class SkillService implements INetworkDispatch { } //exempt species skills from being returned -- they're marked godOnly but really meant to be granted - if ((!speciesSkill) && ( godOnly || isHidden)) { + if ((!speciesSkill) && (godOnly || isHidden)) { return; } diff --git a/src/services/gcw/FactionService.java b/src/services/gcw/FactionService.java index bd9c4414..0406f2e5 100644 --- a/src/services/gcw/FactionService.java +++ b/src/services/gcw/FactionService.java @@ -39,6 +39,7 @@ import resources.common.Opcodes; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; +import engine.clientdata.StfTable; import engine.clients.Client; import engine.resources.common.CRC; import engine.resources.service.INetworkDispatch; @@ -54,7 +55,6 @@ public class FactionService implements INetworkDispatch { this.core = core; try { - /* StfTable stf = new StfTable("clientdata/string/en/faction/faction_names.stf"); for (int s = 1; s < stf.getRowCount(); s++) { @@ -64,7 +64,6 @@ public class FactionService implements INetworkDispatch { factionMap.put(faction, CRC.StringtoCRC(faction)); } } - */ } catch (Exception e) { e.printStackTrace(); } diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 53f357fe..6b2c608c 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -44,6 +44,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import resources.common.*; +import resources.datatables.PlayerFlags; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession;