Page 3 of 3

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 6:58 am
by Bogatyr
I found PS.target["commodity"] and PS.target["commodityAmount"] but setting them with "=" didn't change the object. Is there a way to change an existing object?

I found a workaround that helps, but still isn't ideal, it's just to repeatedly use:

:tnearest cargopod
PS.target.explode();

until I found the one I wanted.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 7:12 am
by another_commander
Bogatyr wrote:
Here's the result of the fastest & easiest path I've found to get to the debug console. Perhaps this could be put in a more visible "HERE'S HOW TO GET STARTED" sticky somewhere:

1) Download and install the release version of the game from http://www.oolite.org/download/
2) Make a full copy of your release folder hierarchy and name it to indicate it's a developer release
3) Download the Developer Release converter matching your install from http://www.oolite.org/download/
4) run the Developer Release converter, pointing it to the dev folder you made in step 2
5) Download and unpack the debug console from https://github.com/OoliteProject/oolite ... ole1.5.zip (link also on http://www.oolite.org/download/)
6) run OoDebugConsole.exe unpacked in step 5
7) start oolite from the dev folder converted in step 4

The console should show "Opened connection with Oolite version 1.82" (version depends of course on what version of the game you're running)
You don't really need to backup your original folder. The converter will backup the existing oolite.exe to oolite.exe.dpl before copying over its Developer executable. Going back and forth between the two types of game is just a matter of renaming these two files so that the one you want to use has the extension .exe. The Basoc-debug.oxp, which the converter also installs in AddOns, is simply ignored when not running a Developer release. Other than the executable and the Basic-debug.oxp, there are no physical differences between the two versions.

Also, you can connect to the debug console even after having started the game. Start game, launch console and then, while in flight, pause and press 'C'. The game will connect. Pressing 'C' again while in pause will disconnect it.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 8:07 am
by Bogatyr
Thanks. I didn't want to accidentally pollute my player file, or have to remember to juggle any files like you mention.

p.s. I'm having trouble changing anything by assigning to properties. Are properties read only? How do you do things like change a cargo container's contents, or adjust the player's manifest? I see PS.manifest.list looks like (below), but assigning to any field doesn't do anything and the dump shows it's not changing.

Code: Select all

> :d PS.manifest
> dumpObject(eval("PS.manifest"))
{
    list: [{
        unit: "kg",
        displayName: "Gold",
        commodity: "gold",
        containers: 0,
        quantity: 8
    }, {
        unit: "kg",
        displayName: "Platinum",
        commodity: "platinum",
        containers: 0,
        quantity: 10
    }, {
        unit: "g",
        displayName: "Gem-Stones",
        commodity: "gem_stones",
        containers: 0,
        quantity: 37
    }]
}

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 8:13 am
by Bogatyr
Also, is it possible to change a particular script while running? Just like

> worldScripts["myOXP"].myFunc = function() { /* new version */ }

??

that would make iterating on testing changes very efficient so that you wouldn't have to continually launch, set up the test environment repeatedly just to try out a change.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 8:47 am
by another_commander
Some properties are read-only, some not. Regarding manifest, if you just type PS.manifest in the console, it responds with [object Manifest]. This objects has certain properties and methods that you can access and how you access them depends on the property types and readonly/readwrite status of them. In the case of PS.manifest, the property is readonly.

I find that the easiest way by far to find out what is available and what can be changed is having the source code of the property I am looking for open in front of me. The structure of Oolite's Javascript classes is very easy to browse through and each class has its own OOJS*.m source file in the src/Core/Scripting folder. For JS manifest, the OOJSManifest file says:

Code: Select all

static JSPropertySpec sManifestProperties[] =
{
	// JS name					ID							flags
	{ "list",				kManifest_list,				OOJS_PROP_READONLY_CB },
	{ 0 }
};
which tells us that the only property accessible in the manifest is the list property, which is readonly. You can see what list contains if you execute PS.manfiest.list, or something like PS.manifest.list[0] to access specific manifest items, since the list is just an array of objects.

As for changing the script on the fly, I've never tried it to be honest. Give it a go, see how it goes.

Edit: Although list is readonly, the manifest can also contain references to the commodities, like PS.manifest.food, PS.manifest.textiles etc., and those can be written to. PS.manifest.food += 5 works, as long as there is sufficient cargo space for the commodity to be added via script. Apologies for any potential confusion caused.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 8:55 am
by Bogatyr
another_commander wrote:
Some properties are read-only, some not. Regarding manifest, if you just type PS.manifest in the console, it responds with [object Manifest]. This objects has certain properties and methods that you can access and how you access them depends on the property types and readonly/readwrite status of them. In the case of PS.manifest, the property is readonly.

I find that the easiest way by far to find out what is available and what can be changed is having the source code of the property I am looking for open in front of me. The structure of Oolite's Javascript classes is very easy to browse through and each class has its own OOJS*.m source file in the src/Core/Scripting folder. For JS manifest, the OOJSManifest file says:

Code: Select all

static JSPropertySpec sManifestProperties[] =
{
	// JS name					ID							flags
	{ "list",				kManifest_list,				OOJS_PROP_READONLY_CB },
	{ 0 }
};
which tells us that the only property accessible in the manifest is the list property, which is readonly. You can see what list contains if you execute PS.manfiest.list, or something like PS.manifest.list[0] to access specific manifest items, since the list is just an array of objects.

As for changing the script on the fly, I've never tried it to be honest. Give it a go, see how it goes.
Thanks again, I was trying to work bottom-up from inspecting the objects, instead of top-down from the source. Since I'm not a JS guru, starting with the source is probably more efficient :).

It looks like dynamically changing the method worked! I replaced the action method of the equipment I'm tweaking with an empty "function() {}" and it indeed did nothing after that. I had saved the original method, re-assigned it back, and it worked again. So that looks like a good way to quickly iterate testing changes

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 9:48 am
by Bogatyr
OK I've browsed that source file and I do not know enough yet to understand how I take that Obj-C code and infer what the correct JS code is to modify the player manifest. Shouldn't that info be in the OOlite JS reference? I haven't found it yet...

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 10:17 am
by another_commander
The code segment I posted earlier is the only thing you need to look at. It tells you that the list property of manifest is the only one that there is and the flag OOJS_PROP_READONLY_CB means that it is read-only. If it were writeable, that last flag would read OOJS_PROP_READWRITE_CB. So we know already from that that it cannot be changed by scripts.

As a further example, this is what properties we have available for the player ship, taken from the file OOJSPlayerShip.m:

Code: Select all

static JSPropertySpec sPlayerShipProperties[] =
{
	// JS name							ID											flags
	{ "aftShield",						kPlayerShip_aftShield,						OOJS_PROP_READWRITE_CB },
	{ "aftShieldRechargeRate",			kPlayerShip_aftShieldRechargeRate,			OOJS_PROP_READWRITE_CB },
	{ "compassMode",					kPlayerShip_compassMode,					OOJS_PROP_READONLY_CB },
	{ "compassTarget",					kPlayerShip_compassTarget,					OOJS_PROP_READONLY_CB },
	{ "currentWeapon",					kPlayerShip_currentWeapon,					OOJS_PROP_READWRITE_CB },
	{ "crosshairs",						kPlayerShip_crosshairs,						OOJS_PROP_READWRITE_CB },
	{ "cursorCoordinates",				kPlayerShip_cursorCoordinates,				OOJS_PROP_READONLY_CB },
	{ "cursorCoordinatesInLY",			kPlayerShip_cursorCoordinatesInLY,			OOJS_PROP_READONLY_CB },
	{ "docked",							kPlayerShip_docked,							OOJS_PROP_READONLY_CB },
	{ "dockedStation",					kPlayerShip_dockedStation,					OOJS_PROP_READONLY_CB },
	{ "fastEquipmentA",					kPlayerShip_fastEquipmentA,					OOJS_PROP_READWRITE_CB },
	{ "fastEquipmentB",					kPlayerShip_fastEquipmentB,					OOJS_PROP_READWRITE_CB },
	{ "forwardShield",					kPlayerShip_forwardShield,					OOJS_PROP_READWRITE_CB },
	{ "forwardShieldRechargeRate",		kPlayerShip_forwardShieldRechargeRate,		OOJS_PROP_READWRITE_CB },
	{ "fuelLeakRate",					kPlayerShip_fuelLeakRate,					OOJS_PROP_READWRITE_CB },
	{ "galacticHyperspaceBehaviour",	kPlayerShip_galacticHyperspaceBehaviour,	OOJS_PROP_READWRITE_CB },
	{ "galacticHyperspaceFixedCoords",	kPlayerShip_galacticHyperspaceFixedCoords,	OOJS_PROP_READWRITE_CB },
	{ "galacticHyperspaceFixedCoordsInLY",	kPlayerShip_galacticHyperspaceFixedCoordsInLY,	OOJS_PROP_READWRITE_CB },
	{ "galaxyCoordinates",				kPlayerShip_galaxyCoordinates,				OOJS_PROP_READONLY_CB },
	{ "galaxyCoordinatesInLY",			kPlayerShip_galaxyCoordinatesInLY,			OOJS_PROP_READONLY_CB },
	{ "hud",							kPlayerShip_hud,							OOJS_PROP_READWRITE_CB },
	{ "hudAllowsBigGui",				kPlayerShip_hudAllowsBigGui,				OOJS_PROP_READONLY_CB },
	{ "hudHidden",						kPlayerShip_hudHidden,						OOJS_PROP_READWRITE_CB },
	{ "injectorsEngaged",				kPlayerShip_injectorsEngaged,				OOJS_PROP_READONLY_CB },
	// manifest defined in OOJSManifest.m
	{ "maxAftShield",					kPlayerShip_maxAftShield,					OOJS_PROP_READWRITE_CB },
	{ "maxForwardShield",				kPlayerShip_maxForwardShield,				OOJS_PROP_READWRITE_CB },
	{ "missilesOnline",      kPlayerShip_missilesOnline,      OOJS_PROP_READONLY_CB },
	{ "multiFunctionDisplays",     		kPlayerShip_multiFunctionDisplays,      OOJS_PROP_READONLY_CB },
	{ "multiFunctionDisplayList",  		kPlayerShip_multiFunctionDisplayList,      OOJS_PROP_READONLY_CB },
	{ "price",							kPlayerShip_price,							OOJS_PROP_READONLY_CB },
	{ "pitch",							kPlayerShip_pitch,							OOJS_PROP_READONLY_CB },
	{ "renovationCost",					kPlayerShip_renovationCost,					OOJS_PROP_READONLY_CB },
	{ "renovationMultiplier",			kPlayerShip_renovationMultiplier,			OOJS_PROP_READONLY_CB },
	{ "reticleTargetSensitive",			kPlayerShip_reticleTargetSensitive,			OOJS_PROP_READWRITE_CB },
	{ "roll",							kPlayerShip_roll,							OOJS_PROP_READONLY_CB },
	{ "routeMode",						kPlayerShip_routeMode,						OOJS_PROP_READONLY_CB },
	{ "scannerNonLinear",				kPlayerShip_scannerNonLinear,				OOJS_PROP_READWRITE_CB },
	{ "scannerUltraZoom",				kPlayerShip_scannerUltraZoom,				OOJS_PROP_READWRITE_CB },
	{ "scoopOverride",					kPlayerShip_scoopOverride,					OOJS_PROP_READWRITE_CB },
	{ "serviceLevel",					kPlayerShip_serviceLevel,					OOJS_PROP_READWRITE_CB },
	{ "specialCargo",					kPlayerShip_specialCargo,					OOJS_PROP_READONLY_CB },
	{ "targetSystem",					kPlayerShip_targetSystem,					OOJS_PROP_READWRITE_CB },
	{ "torusEngaged",					kPlayerShip_torusEngaged,					OOJS_PROP_READONLY_CB },
	{ "viewDirection",					kPlayerShip_viewDirection,					OOJS_PROP_READONLY_CB },
	{ "viewPositionAft",					kPlayerShip_viewPositionAft,					OOJS_PROP_READONLY_CB },
	{ "viewPositionForward",					kPlayerShip_viewPositionForward,					OOJS_PROP_READONLY_CB },
	{ "viewPositionPort",					kPlayerShip_viewPositionPort,					OOJS_PROP_READONLY_CB },
	{ "viewPositionStarboard",					kPlayerShip_viewPositionStarboard,					OOJS_PROP_READONLY_CB },
	{ "weaponsOnline",					kPlayerShip_weaponsOnline,					OOJS_PROP_READONLY_CB },
	{ "yaw",							kPlayerShip_yaw,							OOJS_PROP_READONLY_CB },
	{ 0 }			
};
JS name is the name used to call the property from scripts or the console. ID is an internal ID reference and can be ignored for the purposes of property look-up. Flags, as said earlier, tells you right away whether the corresponding property is readonly or read/write. So, in the above example, it makes no sense to attempt to change e.g. PS.pitch, because that property is readonly, but you can change e.g. PS.hudHidden, because it is marked as read/write.

Note that, apart from available properties, the JS source files list - normally directly after properties - the available methods that each JS class can call as well. So, by looking at the methods available in OOJSPlayerShip.m,

Code: Select all

static JSFunctionSpec sPlayerShipMethods[] =
{
	// JS name						Function							min args
	{ "addParcel",   					PlayerShipAddParcel,						0 },
	{ "addPassenger",					PlayerShipAddPassenger,						0 },
	{ "awardContract",					PlayerShipAwardContract,					0 },
	{ "awardEquipmentToCurrentPylon",	PlayerShipAwardEquipmentToCurrentPylon,		1 },
	{ "beginHyperspaceCountdown",       PlayerShipBeginHyperspaceCountdown,         0 },
	{ "cancelHyperspaceCountdown",      PlayerShipCancelHyperspaceCountdown,        0 },
	{ "disengageAutopilot",				PlayerShipDisengageAutopilot,				0 },
	{ "engageAutopilotToStation",		PlayerShipEngageAutopilotToStation,			1 },
	{ "hideHUDSelector",				PlayerShipHideHUDSelector,					1 },
	{ "launch",							PlayerShipLaunch,							0 },
	{ "removeAllCargo",					PlayerShipRemoveAllCargo,					0 },
	{ "removeContract",					PlayerShipRemoveContract,					2 },
	{ "removeParcel",                   PlayerShipRemoveParcel,                     1 },
	{ "removePassenger",				PlayerShipRemovePassenger,					1 },
	{ "resetCustomView",				PlayerShipResetCustomView,					0 },
	{ "resetScannerZoom",				PlayerShipResetScannerZoom,					0 },
	{ "setCustomView",					PlayerShipSetCustomView,					2 },
	{ "setCustomHUDDial",				PlayerShipSetCustomHUDDial,					2 },
	{ "setMultiFunctionDisplay",		PlayerShipSetMultiFunctionDisplay,			1 },
	{ "setMultiFunctionText",			PlayerShipSetMultiFunctionText,				1 },
	{ "showHUDSelector",				PlayerShipShowHUDSelector,					1 },
	{ "takeInternalDamage",				PlayerShipTakeInternalDamage,				0 },
	{ "useSpecialCargo",				PlayerShipUseSpecialCargo,					1 },
	{ 0 }
};
you can see that there are methods for removing parcels and cargo, launch the player from a station, set custom views etc.

This is the kind of information I was referring to in the JS classes source files. You can use these files as quick reference indexes, if you want. No need to know Obj-C or have experience in the internal workings of Oolite.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 10:28 am
by Bogatyr
OK, thanks. I know obj-C reasonably well, JS passingly, but not the obj-C/JS foreign language interface and how to glean the info I wanted.

I kept digging and found the Manifest JS reference (e.g., http://wiki.alioth.net/index.php/Oolite ... arshalling which tells me what I need to know. Part of learning one's way around is learning which objects own/control which parts of the game, and that's not immediately obvious to a newb. So a ship (or PlayerShip) has a Manifest, and Manifest owns manipulating the cargo.

Re: Hints and tips for using the debug console

Posted: Tue Apr 12, 2016 10:35 am
by another_commander
Oh (I knew I was forgetting something important here), the JS source class files contain also additional more human-friendly descriptions of properties at the parts where the internal IDs are created. These descriptions contain also the data type of each property, as well as a quick explanation about what it does. For OOJSPlayerShip.m:

Code: Select all

	// Property IDs
	kShip_accuracy = -128,		// the ship's accuracy, float, read/write
	kShip_aftWeapon,			// the ship's aft weapon, equipmentType, read/write
	kShip_AI,					// AI state machine name, string, read-only
	kShip_AIScript,				// AI script, Script, read-only
	kShip_AIScriptWakeTime,				// next wakeup time, integer, read/write
	kShip_AIState,				// AI state machine state, string, read/write
	kShip_AIFoundTarget,		// AI "found target", entity, read/write
	kShip_AIPrimaryAggressor,	// AI "primary aggressor", entity, read/write
	kShip_alertCondition,		// number 0-3, read-only, combat alert level
	kShip_autoAI,				// bool, read-only, auto_ai from shipdata
	kShip_autoWeapons,			// bool, read-only, auto_weapons from shipdata
	kShip_beaconCode,			// beacon code, string, read/write
	kShip_beaconLabel,			// beacon label, string, read/write
	kShip_boundingBox,			// boundingBox, vector, read-only
	kShip_bounty,				// bounty, unsigned int, read/write
	kShip_cargoList,		// cargo on board, array of objects, read-only
	kShip_cargoSpaceAvailable,	// free cargo space, integer, read-only
	kShip_cargoSpaceCapacity,	// maximum cargo, integer, read/write
	kShip_cargoSpaceUsed,		// cargo on board, integer, read-only
	kShip_collisionExceptions,   // collision exception list, array, read-only
	kShip_contracts,			// cargo contracts contracts, array - strings & whatnot, read only
	kShip_commodity,			// commodity of a ship, read only
	kShip_commodityAmount,		// commodityAmount of a ship, read only
	kShip_cloakAutomatic,		// should cloack start by itself or by script, read/write
	kShip_crew,					// crew, list, read only
	kShip_cruiseSpeed,			// desired cruising speed, number, read only
	kShip_currentWeapon,		// the ship's active weapon, equipmentType, read/write
	kShip_dataKey,				// string, read-only, shipdata.plist key
	kShip_defenseTargets,		// array, read-only, defense targets
	kShip_desiredRange,			// desired Range, double, read/write
	kShip_desiredSpeed,			// AI desired flight speed, double, read/write
	kShip_destination,			// flight destination, Vector, read/write
	kShip_destinationSystem,	// destination system, number, read/write
	kShip_displayName,			// name displayed on screen, string, read/write
	kShip_dockingInstructions,			// name displayed on screen, string, read/write
	kShip_energyRechargeRate,	// energy recharge rate, float, read-only
	kShip_entityPersonality,	// per-ship random number, int, read-only
	kShip_equipment,			// the ship's equipment, array of EquipmentInfo, read only
	kShip_escortGroup,			// group, ShipGroup, read-only
	kShip_escorts,				// deployed escorts, array of Ship, read-only
	kShip_exhaustEmissiveColor,	// exhaust emissive color, array, read/write
	kShip_exhausts,				// exhausts, array, read-only
	kShip_extraCargo,				// cargo space increase granted by large cargo bay, int, read-only
	kShip_flashers,				// flashers, array, read-only
	kShip_forwardWeapon,		// the ship's forward weapon, equipmentType, read/write
	kShip_fuel,					// fuel, float, read/write
	kShip_fuelChargeRate,		// fuel scoop rate & charge multiplier, float, read-only
	kShip_group,				// group, ShipGroup, read/write
	kShip_hasHostileTarget,		// has hostile target, boolean, read-only
	kShip_hasHyperspaceMotor,	// has hyperspace motor, boolean, read-only
	kShip_hasSuspendedAI,		// AI has suspended states, boolean, read-only
	kShip_heading,				// forwardVector of a ship, read-only
	kShip_heatInsulation,		// hull heat insulation, double, read/write
	kShip_homeSystem,			// home system, number, read/write
	kShip_hyperspaceSpinTime,	// hyperspace spin time, float, read/write
	kShip_injectorBurnRate,		// injector burn rate, number, read/write dLY/s
	kShip_injectorSpeedFactor,  // injector speed factor, number, read/write
	kShip_isBeacon,				// is beacon, boolean, read-only
	kShip_isBoulder,			// is a boulder (generates splinters), boolean, read/write
	kShip_isCargo,				// contains cargo, boolean, read-only
	kShip_isCloaked,			// cloaked, boolean, read/write (if cloaking device installed)
	kShip_isDerelict,			// is an abandoned ship, boolean, read-only
	kShip_isFrangible,			// frangible, boolean, read-only
	kShip_isFleeing,			// is fleeing, boolean, read-only
	kShip_isJamming,			// jamming scanners, boolean, read/write (if jammer installed)
	kShip_isMinable,			// is a sensible target for mining, boolean, read-only
	kShip_isMine,				// is mine, boolean, read-only
	kShip_isMissile,			// is missile, boolean, read-only
	kShip_isPiloted,			// is piloted, boolean, read-only (includes stations)
	kShip_isPirate,				// is pirate, boolean, read-only
	kShip_isPirateVictim,		// is pirate victim, boolean, read-only
	kShip_isPolice,				// is police, boolean, read-only
	kShip_isRock,				// is a rock (hermits included), boolean, read-only
	kShip_isThargoid,			// is thargoid, boolean, read-only
	kShip_isTurret,			    // is turret, boolean, read-only
	kShip_isTrader,				// is trader, boolean, read-only
	kShip_isWeapon,				// is missile or mine, boolean, read-only
	kShip_laserHeatLevel,			// active laser temperature, float, read-only
	kShip_laserHeatLevelAft,		// aft laser temperature, float, read-only
	kShip_laserHeatLevelForward,	// fore laser temperature, float, read-only
	kShip_laserHeatLevelPort,		// port laser temperature, float, read-only
	kShip_laserHeatLevelStarboard,	// starboard laser temperature, float, read-only
	kShip_lightsActive,			// flasher/shader light flag, boolean, read/write
	kShip_markedForFines,   // has been marked for fines
	kShip_maxEscorts,     // maximum escort count, int, read/write
	kShip_maxPitch,				// maximum flight pitch, double, read-only
	kShip_maxSpeed,				// maximum flight speed, double, read-only
	kShip_maxRoll,				// maximum flight roll, double, read-only
	kShip_maxYaw,				// maximum flight yaw, double, read-only
	kShip_maxThrust,			// maximum thrust, double, read-only
	kShip_missileCapacity,		// max missiles capacity, integer, read-only
	kShip_missileLoadTime,		// missile load time, double, read/write
	kShip_missiles,				// the ship's missiles / external storage, array of equipmentTypes, read only
	kShip_name,					// name, string, read-only
	kShip_parcelCount,		// number of parcels on ship, integer, read-only
	kShip_parcels,			// parcel contracts, array - strings & whatnot, read only
	kShip_passengerCapacity,	// amount of passenger space on ship, integer, read-only
	kShip_passengerCount,		// number of passengers on ship, integer, read-only
	kShip_passengers,			// passengers contracts, array - strings & whatnot, read only
	kShip_pitch,				// pitch level, float, read-only
	kShip_portWeapon,			// the ship's port weapon, equipmentType, read/write
	kShip_potentialCollider,	// "proximity alert" ship, Entity, read-only
	kShip_primaryRole,			// Primary role, string, read/write
	kShip_reactionTime,		// AI reaction time, read/write
	kShip_reportAIMessages,		// report AI messages, boolean, read/write
	kShip_roleWeights,			// roles and weights, dictionary, read-only
	kShip_roles,				// roles, array, read-only
	kShip_roll,					// roll level, float, read-only
	kShip_savedCoordinates,		// coordinates in system space for AI use, Vector, read/write
	kShip_scanDescription,		// STE scan class label, string, read/write
	kShip_scannerDisplayColor1,	// color of lollipop shown on scanner, array, read/write
	kShip_scannerDisplayColor2,	// color of lollipop shown on scanner when flashing, array, read/write
	kShip_scannerHostileDisplayColor1,	// color of lollipop shown on scanner, array, read/write
	kShip_scannerHostileDisplayColor2,	// color of lollipop shown on scanner when flashing, array, read/write
	kShip_scannerRange,			// scanner range, double, read-only
	kShip_script,				// script, Script, read-only
	kShip_scriptedMisjump,		// next jump will miss if set to true, boolean, read/write
	kShip_scriptedMisjumpRange,  // 0..1 range of next misjump, float, read/write
	kShip_scriptInfo,			// arbitrary data for scripts, dictionary, read-only
	kShip_shipClassName,		// ship type name, string, read/write
	kShip_shipUniqueName,		// uniqish name, string, read/write
	kShip_speed,				// current flight speed, double, read-only
	kShip_starboardWeapon,		// the ship's starboard weapon, equipmentType, read/write
	kShip_subEntities,			// subentities, array of Ship, read-only
 	kShip_subEntityCapacity,	// max subentities for this ship, int, read-only
	kShip_subEntityRotation,	// subentity rotation velocity, quaternion, read/write
	kShip_sunGlareFilter,		// sun glare filter multiplier, float, read/write
	kShip_target,				// target, Ship, read/write
	kShip_temperature,			// hull temperature, double, read/write
	kShip_thrust,				// the ship's thrust, double, read/write
	kShip_thrustVector,			// thrust-related component of velocity, vector, read-only
	kShip_trackCloseContacts,	// generate close contact events, boolean, read/write
	kShip_vectorForward,		// forwardVector of a ship, read-only
	kShip_vectorRight,			// rightVector of a ship, read-only
	kShip_vectorUp,				// upVector of a ship, read-only
	kShip_velocity,				// velocity, vector, read/write
	kShip_weaponFacings,		// available facings, int, read-only
	kShip_weaponPositionAft,	// weapon offset, vector, read-only
	kShip_weaponPositionForward,	// weapon offset, vector, read-only
	kShip_weaponPositionPort,	// weapon offset, vector, read-only
	kShip_weaponPositionStarboard,	// weapon offset, vector, read-only
	kShip_weaponRange,			// weapon range, double, read-only
	kShip_withinStationAegis,	// within main station aegis, boolean, read/write
	kShip_yaw,					// yaw level, float, read-only
};

Re: Hints and tips for using the debug console

Posted: Sun Jun 05, 2016 8:15 am
by vsfc
Hi Commanders!

I am running Debian 8.4. Installed python and oolite Debug Console. I can get Debug Console to run, but every time I start oolite Debug Console hangs and to restart it I have to kill the process.

Log file has nothing in it indicating that oolite tries to connect to Debug Console. I am running trunk version of oolite without oxps other than BasicDebug and LogEvents oxps.

Any suggestions? Thanks

EDIT: I managed to run pySimpleConsole.py in the console and it worked. For some reason python process terminates if I run DebugConsole.py

vsfc

Re: Hints and tips for using the debug console

Posted: Mon Jun 06, 2016 9:30 am
by vsfc
Hi!

Is there a way to change commander location system / galaxy using Debugging Console to avoid moving my test commander to particular system across galaxy the normal way? If not, how do I edit the save file to set that desired location?

Thanks,
vsfc

Re: Hints and tips for using the debug console

Posted: Mon Jun 06, 2016 10:15 am
by Norby
vsfc wrote:
how do I edit the save file to set that desired location?
It is Lave:

Code: Select all

<key>system_id</key>
<string>7</string>
System numbers are in Oolite Interactive Map.