Event test script
Jump to navigation
Jump to search
To do:
- object_rez
- link_message
- not_at_target
- at_target
- remote_data
<lsl> integer touch_start_pass = FALSE; integer touch_over_pass = FALSE; key ds_request; integer control_state = 0; key http_request; string http_url="http://www.google.com"; integer collision_state = 0; integer land_collision_state = 0; integer rot_target_state = 0; integer moving_state = 0; default {
state_entry() { llSetStatus(STATUS_PHYSICS, FALSE); llSay(0, "Take me in to your inventory and then rez."); } on_rez(integer start_param) { state test_touch; } state_exit() { //llSay(0, "Initial state test success (on_rez, state_exit)"); }
}
state test_touch {
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "Touch me!"); touch_start_pass = FALSE; touch_over_pass = FALSE; } touch_start(integer num_detected) { touch_start_pass = TRUE; } touch(integer num_detected) { touch_over_pass = TRUE; } touch_end(integer num_detected) { if (touch_start_pass && touch_over_pass) { state test_money; } else { llSay(0, "Touch test failed."); } } state_exit() { llSay(0, "Touch test success"); }
}
state test_money {
on_rez(integer start_param) { state test_touch; }
state_entry() { llSay(0, "Give me some L$."); } money(key giver, integer amount) { state test_listen; } state_exit() { //llSay(0, "Money test success"); }
}
state test_listen {
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "say, \"hello\""); llListen( 0, "", NULL_KEY, "" ); }
listen( integer channel, string name, key id, string message ) { // TODO perhaps store the id of the person who kicked off the tests and check that against id if (channel == 0 && message == "hello") { state test_dataserver; } } state_exit() { //llSay(0, "Listen test passed"); }
}
state test_dataserver {
on_rez(integer start_param) { state test_touch; } state_entry() { //llSay(0, "Looking up your SL creation date."); ds_request = llRequestAgentData(llGetOwner(), DATA_BORN); // request your SL creation date } dataserver(key queryid, string data) { if( ds_request == queryid ) { llSay(0, "You were born on " + data); state test_perms_and_controls; } } state_exit() { //llSay(0, "dataserver test passed"); }
}
// TODO make this two seperate tests state test_perms_and_controls {
on_rez(integer start_param) { state test_touch; } state_entry() { control_state = 0; llSay(0, "Grant permissions for control."); llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); }
run_time_permissions(integer perm) { if (perm & (PERMISSION_TAKE_CONTROLS)) { llTakeControls(CONTROL_FWD|CONTROL_BACK|CONTROL_LEFT|CONTROL_RIGHT, TRUE, FALSE); llSay(0, "Press Forward (you may need to to go mouse look)"); } } control(key id, integer held, integer change) { if ((held & change & CONTROL_FWD) && control_state == 0) { llSay(0, "Press Left"); ++control_state; } if ((held & change & CONTROL_LEFT) && control_state == 1) { llSay(0, "Press Back"); ++control_state; } if ((held & change & CONTROL_BACK) && control_state == 2) { llSay(0, "Press Right"); ++control_state; } if ((held & change & CONTROL_RIGHT) && control_state == 3) { llReleaseControls(); state test_timer; } } state_exit() { //llSay(0, "control and perms test"); }
}
state test_timer {
on_rez(integer start_param) { state test_touch; } state_entry() { //llSay(0, "Timer test start"); llSetTimerEvent(1.0); } timer() { llSetTimerEvent(0.0); state test_http; } state_exit() { //llSay(0, "Timer test end"); }
}
state test_http {
on_rez(integer start_param) { state test_touch; } state_entry() { //llSay(0, "http test start"); http_request = llHTTPRequest(http_url, [] ,""); } http_response(key id,integer status, list meta, string body) { if(http_request == id) { state test_land_collision; } } state_exit() { //llSay(0, "http test end"); }
}
state test_land_collision {
on_rez(integer start_param) { state test_touch; } state_entry() { //llSay(0, "land collision test start"); llSetStatus(STATUS_PHYSICS, TRUE); land_collision_state = 0; } land_collision_start(vector pos) { //llSay(0, "land_collision_start"); if (land_collision_state == 0) { ++land_collision_state; } }
land_collision(vector pos) { //llSay(0, "land_collision"); if (land_collision_state == 1) { ++land_collision_state; } } land_collision_end(vector pos) { //llSay(0, "land_collision_end"); if (land_collision_state == 2) { llSetStatus(STATUS_PHYSICS, FALSE); state test_rot_target; } } state_exit() { //llSay(0, "land collision test end"); }
}
state test_rot_target
{
on_rez(integer start_param) { state test_touch; } state_entry() { //llSay(0, "test_rot_target"); integer rot_handle = llRotTarget(<0,0,0,1>, 0); rot_target_state = 0; } not_at_rot_target() { //llSay(0, "not_at_rot_target"); if (rot_target_state == 0) { integer rot_handle = llRotTarget(<0,0,0,1>, 7); rot_target_state = 1; } } at_rot_target(integer tnum, rotation targetrot, rotation ourrot) { //llSay(0, "at_rot_target"); if (rot_target_state == 1) { rot_target_state = 2; state test_collision; } } state_exit() { //llSay(0, "rot_target test end"); }
}
state test_collision
{
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "Walk in to the box"); llSetStatus(STATUS_PHYSICS, TRUE); collision_state = 0; } collision_start(integer num_detected) { //llSay(0, "collision_start"); if (collision_state == 0) { ++collision_state; } }
collision(integer num_detected) { //llSay(0, "collision"); if (collision_state == 1) { ++collision_state; } } collision_end(integer num_detected) { //llSay(0, "collision_end"); if (collision_state == 2) { llSetStatus(STATUS_PHYSICS, FALSE); state test_attach; } } state_exit() { //llSay(0, "land collision test end"); }
}
state test_attach {
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "Attach to yourself"); } attach(key attached) { if (attached == NULL_KEY) { state test_change; } else { llSay(0, "Drop me."); } } state_exit() { //llSay(0, "land collision test end"); }
}
state test_change {
on_rez(integer start_param) { state test_touch; } state_entry() { llSetColor(<1,1,1>, ALL_SIDES); } changed(integer change) { if (change & CHANGED_COLOR) { state test_moving; } } state_exit() { }
}
state test_moving {
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "Move me, then place somewhere flat"); moving_state = 0; llSetStatus(STATUS_PHYSICS, TRUE); } state_exit() { llSetStatus(STATUS_PHYSICS, FALSE); } moving_start() { moving_state = 1; } moving_end() { if (moving_state == 1) { state test_sensor; } }
}
state test_sensor {
on_rez(integer start_param) { state test_touch; } state_entry() { llSay(0, "Move avatar at least away 1m"); llSensor("", NULL_KEY, AGENT, 1, PI); } state_exit() { } sensor(integer total_number) { state test_end; } no_sensor() { llSensor("", NULL_KEY, AGENT, 10, PI); }
}
state test_end {
on_rez(integer start_param) { state test_touch; }
state_entry() { llSay(0, "All states/tests completed. Success!"); }
}
</lsl>