Work Tracker and Report Setup and Configuration

Background Information

There are two in-world parts to the system:

If the work tracker is in an accessable area, (it does not need to be), it will when touched show what work tasks are being performed by each worker and how long until each task completes a unit of production.

Here is a diagram that shows how Trackers and the Monitor might be physically located in a parcel.

Time and Production Units

Rather then just log time worked, each work task has a "Product" that is produced by working it, and the number of "Units" of that product that are produced for each cycle of work. A Fishing work task could be set to produce 1 unit of "fish" for each work cycle. A work task for picking corn might produce 10 units (or ears of corn) in one cycle.

You use the MINUTES configuration to set the amount of time for each work cycle. You should not set this higher than 4 minutes or someone working on a work task for only 3 minutes would not generate any product. This is also the interval at which the Tracker sends updates to the Work Report obect, so setting it to just one minute will generate more frequent messages. A value of 2 or 3 worsk best for the MINUTES configuration. The MINUTES value is the first thing you want to set.

If you set the Units produced for each work task to the same value as the MINUTES, then the production is equal to actual minutes worked. But you may want to vary the Units produced to for encourage certain roleplay behavior. If there is a work task that is located somewhat remote from other active roleplay areas, you may want to reward work on it with higher production. All of this depends on how working on tasks figures into the themes of your roleplay area.

Work Tracker Configuration Notecards

There are two configuration notecards

The Instance notecard has a single parameter which is not inside a notecard, but rather contained in the notecard name. INSTANCE name, where 'name' is a unique identifer for the Work Tracker/Reporting system. The Owners Key and this INSTANCE value are used to produce a unique identifier for the external database and to communicate between the Work Tracker(s) and Work Report. This allows you to have more than one copy of the system in use in different roleplay areas.

The other configuration notecard defines the individual chores or work tasks. The name of this notecard must start with "CHORE CONFIG", but can be followed by any text. Inside this notecard, any lines that start with a pound sign (#) are ignored.

The keywords are: MINUTES, SCOPE and CHORE.

MINUTES Keyword

The keyword MINUTES (followed by a number) applies to all work tasks in the notecard.

This is the number of minutes to produce the specified units of each work task.

Usually "1", "2" or "3" works well for this value. Longer intervals can cause workers not to be credited with a few mintues of work time if called away for some other task.

Decide on this value first, as it influences your choice of the Units produced for each work task.

SCOPE Keyword

The SCOPE keyword is used to limit the scanning distance for working agents. This line may be: SCOPE PARCEL, SCOPE SAME_OWNER or SCOPE REGION .

SCOPE PARCEL
Limits detection to the parcel the Tracker is on.
SCOPE REGION
Checks all avatars in the REGION to see if they are working.
SCOPE SAME_PARCEL
Limits detection to the current parcel and all other parcels in the region with the same owner.

CHORE Keyword

The keyword CHORE defines the parameters of each work task to be tracked. Each parameter is separated by the tilda symbol ( ~ ) and are: Name~BoxLow~BoxHigh~Flag~Units~Product~Target~Prerequisite~Attachment~Workcode, where:

Name
Name of the activity performed. If you have more than one station producing the same product, you need a different name of each one. For example: "Picking Grape 1" and "Picking Grapes 2"
BoxLow
These are the lower (x,y,z) corner of the space an avatar must be inside to be considered to be performing the work task. Use the included "Box Corner Coordinate Finder" to get the values.

Note that if the work task has an animation that appears to move the avatar around quite a bit, the actual avatar location may stay where the avatar initial sits or at the pose ball. It may not be necessary for the coordinates to encompass a very large area.

BoxHigh
These are the upper (X,Y,Z), opposite corners of the space an avatar must be inside to be considered to be performing the work task.
Flag
The flag code controls how the tracker handles an avatar that is sitting. The choices are one of: "BO", "BS", "BSC", "BSCN", or "BSCNW".

There is a separate page (in the works) on how to choose these flag codes for situations I've run accross. After you have read it, feel free to contact me if you are having difficulty in geting the behavior you want.

Units
Number of units of product to be reported for this task during the time specified with the MINUTES keyword. This can be any value that is useful to you in comparing the amount of work performed with other work tasks.

If you have an expectation that workers produce a minimum number of product units per day, you could make all tasks produce the same number of units. Or if you had a particular task that might not be as 'interesting' as others, it could produce more units per time interval to encourge someone to work at that task.

If you are using arbitrary units you should probably start by assigning a unit value of 5 for all work tasks. Then you can easily lower or raise the value for some work tasks later if you decide that some work tasks produce more or less value to the roleplay than others.

Another possiblity is to make the Units Produced the same as the MINUTES keyword. This allow you to interpret the production as as minutes spent working

Product
Name of the item produced. If the work task activity is something like 'Pick Strawberries', the Product could be just: 'Strawberries'. If the Work Task is "Greeting Area 1", the product could be "Greeter" It is fine to have multiple work task entries with the same Product. They will be combined in the reporting.
Target
Target is number that is the desired number of units of the Product that should be made in a 24 hour day. This is only used to generate the web page reports. This might be useful if you want workers in your roleplay area to have fixed goals for work production each day, with some roleplay penalty for missing the mark.

Setting this value to zero, will disable use of Targets on the report page. Instead, the current day's work will be compared to the average for the last 7 days.

You can have targets for some work tasks and not for others.

Prerequisite
This defines the product produced by another tasks as a prepresquite for this one.

This does not prevent work on this task if the preprequsite is not sufficent. But it will turn the progress bar on the work report red to indicate that more work on the preprequite task is required. The comparison is made on units of work completed.

Attachment
This identifies the name of an object that the avatar must have attached.

A good example would be a long narrow work area defined for your main street. This will have many avatars moving through it, but only those with a broom (of a specific name), would be considered to be 'sweeping'.

Work Codes
Work Codes are single letters that identify on or more groups of people allowed to work on this task. Each avatar may belong to one or more work groups and if their work group is found in the codes configured for the task, they are permitted to work.

An agent's work codes is contained in a "keycard" object that they attach. They can attach more than one keyward if they are in different work groups

Work Code "X" for a task means anyone can perform the task. But a task can also have more than one work code to allow multiple groups of workers to perform it.

Note that these work codes do not prevent anyone from sitting on an animated object. They just don't get credit for working

Some Examples:

CHORE Fishing           ~ 120.1,200.4, 1000    ~ 134.0, 216.0, 1004.0    ~ BS       ~ 1   ~ Fish          ~ 0     ~ NO_PREREQ ~ NO_ATTACH  ~ X
CHORE Harvesting Wheat  ~ 90.2, 23.4, 1000     ~ 93.5, 26.9, 1004.0      ~ BA       ~ 2   ~ Wheat         ~ 20    ~ NO_PREREQ ~ scythe     ~ F
CHORE Milling Flour     ~ 108  160.4, 1000     ~ 110.0, 162.5, 1004.0    ~ BS       ~ 2   ~ Wheat Flour   ~ 20    ~ Wheat     ~ NO_ATTACH  ~ F 
CHORE Sim Greeter       ~  75,  60,    22      ~ 120, 90, 26             ~ BO       ~ 1   ~ Greeter       ~ 300   ~ NO_PREREQ ~ XYZ Broom  ~ AC
CHORE Massage           ~ 110, 155, 1000       ~ 115, 160, 1004          ~ BSCNW    ~ 3   ~ Spa Massage   ~ 0     ~ NO_PREREQ ~ NO_ATTACH  ~ S
CHORE Spa               ~ 100, 140, 1000       ~ 130, 190, 1004          ~ BO       ~ 1   ~ Spa Staff     ~ 60    ~ NO_PREREQ ~ NO_ATTACH  ~ S

Fishing: has no production target and allows anyone to work at it.

Harvesting Wheat: requires that a working be in the wheat field and have an object named (exactly) scythe attached. They must also being the farm worker group -- "F".

Milling Flour: has a prerequisite product of Wheat. Should the total units of Flour be greater than Wheat, the report bar graph for Flour will turn red to indicate that a prerequieite is behind schedule. P>Sim Greeter: has a large production target as you want a presence there most of the time. It also has a fairly large area for the worker to be in. It also allows two groups of workers: "A" or "C" -- civil servants and sim admin

Massage: The Massage work task is a small area that is actually inside area defined for the Spa work task. As work tasks are processed from top to bottom until a match is found, the Massage Work Task would be found and credited for the person, instead of the more general work task of Spa that is next in the list. In addition, the Massage task requires another agent to be sitting, but they can't also be a 'spa worker'. This means that if they have a worker keycard it can not be for work code "S".

Also note that actually giving a massage earns more units of work than just standing around waiting for a customer.

Multi-chore Corner Coordinate Finder

This is an tool you can use to easily determine the work task areas. Simply rez this object and the semi-transparent, phantom box will appear.

"Edit" the box, hold down the CTRL-Shift keys and drag the red, green and blue markers so the box just encloses the work area.

For a work task that will require the person to be sitting on an object, the box can be small so as to just enclose the part of the object where the 'sit targets' or pose balls are.

Touch the box to have it print the required coordinates in a template config line to the chat window where you can copy them into the configuration notecard.

Work Report Configuration

OK ... this one is easy! There are only four configuration paramaters for the Work Report.

These parameters are not inside a notecard, but rather contained in the notecard names.

TITLE name, where 'name' is used on the web report page

INSTANCE name, where 'name' is a unique identifer for the Work Tracker/Monitor system. This allows you to have more than one Work Report in use in different roleplay areas. The Owners Key and this INSTANCE value are used to produce a unique identifier for the external database and to communicate between the Work Tracker(s) and Work Report.

It must match what in used in the Tracker object.

ADMIN_USER User_key optional name
Example: ADMIN_USER 31253294-8523-4199-b229-4d67c0a0b777 Santo

REPORT_INDIVIDUALS [YES | NO |ADMIN | NEVER]

This controls who sees details of individual worker's activity.

YES
Anyone can see what work has been performed by all workers for the past 7 days. Ths is the same view that an admin user sees.
NO
Workers can see their own history of work, but not for anyone else.
ADMIN
Only admin users can see work has been performed by workers for the past 7 days. Note that Admin users can always see all work performed, this excludes anyone else from seeing it.
NEVER
No one (including Admin users), can see any worker history. (Or, just don't define any admin users.)
// standard_footer(ProductConfig, ProductChanges, ParentName, ParentURL)