Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "colors.lsl"
- #include "linksetLists.lsl"
- // #define DEBUG
- #include "debug.lsl"
- // define default dialog buttons
- list size_menu = ["Main Menu", " --- ", "Done", "Large", "Medium", "Small"];
- list main_Menu = ["Reset", "Safezone", "Done", "Manual", "Rating", "Size", "Help"];
- list rate_Menu = ["Main Menu", " --- ", "Done", "Adult", "Moderate", "General"];
- // saved safezone data
- vector safe_zone_global; // coords on grid of safezone
- vector safe_zone_regional; // coords in sim of safezone
- key safe_zone_query; // dataquery key for safezone
- string safe_zone_name; // region name of safezone
- // default safezone data
- key default_safeQry;
- vector default_safe_global;
- key regionQry;
- integer menu_Handle;
- integer menu_Channel;
- // list config = ["Auto", "MATURE", "Medium"];
- integer hudFlags = 1;
- // hud mode flags
- #define AUTO 1 // Automatically TP to Safezone;
- // hud size flags
- integer hud_size; // size of hud
- #define SMALL 1 // small hud size
- #define MEDIUM 2 // Medium hud size
- #define LARGE 3 // Large hud size
- // hud rating
- integer rating_score;
- #define GENERAL 1 //general rating
- #define MODERATE 2 // moderate rating
- #define ADULT 3 // adult raiting
- // misc flag variables
- integer warningShown = 0;
- integer soundPlayed = 0;
- // has the avatar teleported to safe zone
- integer tp_Flag;
- #define TPPED 0x001
- string getRatingLevel()
- {
- string tm;
- switch (rating_score)
- {
- case ADULT:
- {
- tm = "Adult.";
- break;
- }
- case MODERATE:
- {
- tm = "Moderate.";
- break;
- }
- case GENERAL:
- {
- tm = "General.";
- break;
- }
- }
- return tm;
- }
- // create the text for the hud size dialog
- string mk_hudsize()
- {
- string ts = "Select Hud Size.\n\n\tCurrent Hud Size is ";
- switch (hud_size)
- {
- case SMALL:
- {
- ts += "Small";
- break;
- }
- case MEDIUM:
- {
- ts += "Medium";
- break;
- }
- case LARGE:
- {
- ts += "Large";
- break;
- }
- }
- return ts += "\n";
- }
- // create the main menu text
- string mk_menu()
- {
- string tm = "Main Menu:\n\n\tTeleport Mode is ";
- if (hudFlags == AUTO)
- tm += "Auto";
- else
- tm += "Manual";
- tm += "\n\tSim Rating is ";
- switch (rating_score)
- {
- case ADULT:
- {
- tm += "Adult.";
- break;
- }
- case MODERATE:
- {
- tm += "Moderate.";
- break;
- }
- case GENERAL:
- {
- tm += "General.";
- break;
- }
- }
- tm += "\n\tCurrent Safe Zone is ";
- if(safe_zone_name != "")
- tm += safe_zone_name;
- else
- tm += "WelcomeHub";
- return tm += "\n";
- }
- // replace single list entries with
- list replaceListEntry( list entry, string replace, string with )
- {
- integer index = llListFindList(entry, (list) replace);
- DS("index = " + (string) index);
- if(index == -1)
- return entry;
- else
- return llListReplaceList(entry, (list) with, index, index);
- }
- //Created by Ugleh Ulrik
- //This sort of script should cost, but for you free :)
- //Edited by Taff Nouvelle to put the buttons in correct order.
- list order_buttons(list buttons)
- {
- return buttons;
- // return llList2List(buttons, -3, -1) + llList2List(buttons, -6, -4) +
- // llList2List(buttons, -9, -7) + llList2List(buttons, -12, -10);
- }
- default
- {
- state_entry()
- {
- // cache textures
- llSetTexture("119e28e5-1043-0dc0-864e-a403092a4c2a", 1);
- llSetTexture("1fb10f43-10c6-844e-fb94-a78dbc30ed9b", 1);
- llSetTexture("723386b5-e554-8430-d464-26d168f3aa58", 1);
- llSetTexture("2104d080-0e63-248a-5a90-1fb209c0d25f", 1);
- llOwnerSay("Press hud for 2 or more seconds for Main Menu.");
- // set the default size to medium
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_SIZE, <0.05000, 0.05000, 0.05000>]);
- hud_size = MEDIUM;
- // open channels and set basic texture
- menu_Channel = 0x80000000 | (integer)llFrand(65536) | ((integer)llFrand(65536) << 16);
- menu_Handle = llListen(menu_Channel, "", llGetOwner(), "");
- llSetTexture("2104d080-0e63-248a-5a90-1fb209c0d25f", ALL_SIDES);
- // load safezone if saved to linksetdata
- list tl;
- string ts;
- if((ts = llLinksetDataRead("safezone")) != "")
- {
- // parse saved safezone
- DS(ts);
- tl = llCSV2List(ts);
- safe_zone_global = (vector) llList2String(tl, 0);
- safe_zone_regional = (vector) llList2String(tl, 1);
- safe_zone_name = llList2String(tl, 2);
- DS((string) safe_zone_global);
- DS((string) safe_zone_regional);
- DS((string) safe_zone_name);
- }
- // else load default safezone
- else
- {
- // use default WelcomeHub zone
- llOwnerSay("No saved Safezone found.\nUsing WelcomeHub as default.");
- default_safeQry = llRequestSimulatorData("WelcomeHub", DATA_SIM_POS);
- }
- rating_score = 2; // set default sim score to moderate
- // ask permission then start hud
- llRequestPermissions(llGetOwner(), PERMISSION_TELEPORT);
- }
- listen( integer channel, string name, key id, string message )
- {
- switch(message)
- {
- case "Help":
- {
- llGiveInventory(llGetOwner(), "Instructions");
- break;
- }
- // goto safezone
- case "GO!":
- {
- vector global;
- vector regional = <128, 128, 20>;
- if(safe_zone_name != "")
- {
- global = safe_zone_global;
- regional = safe_zone_regional;
- }
- else
- {
- global = default_safe_global;
- }
- warningShown = 1;
- llTeleportAgentGlobalCoords(llGetPermissionsKey(),
- global,
- regional,
- ZERO_VECTOR);
- break;
- }
- // set safezone
- case "Safezone":
- {
- safe_zone_name = llGetRegionName();
- safe_zone_query = llRequestSimulatorData(safe_zone_name, DATA_SIM_POS);
- llDialog(llGetOwner(), mk_menu(), main_Menu, menu_Channel);
- break;
- }
- // reset the hud
- case "Reset":
- {
- llDialog(llGetOwner(), "Reset Hud? ", ["Yes", "No"], menu_Channel);
- break;
- }
- // answer 'Yes'to reset the hud
- case "Yes":
- {
- llOwnerSay("Reseting hud and deleting data.");
- llLinksetDataReset();
- llResetScript();
- break;
- }
- // size of the hud
- case "Size":
- {
- llDialog(llGetOwner(), mk_hudsize(), order_buttons(size_menu), menu_Channel);
- break;
- }
- case "Large":
- {
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_SIZE, <0.10000, 0.10000, 0.10000>]);
- hud_size = LARGE;
- llDialog(llGetOwner(), mk_hudsize(), order_buttons(size_menu), menu_Channel);
- break;
- }
- case ("Medium"):
- {
- hud_size = MEDIUM;
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_SIZE, <0.05000, 0.05000, 0.05000>]);
- llDialog(llGetOwner(), mk_hudsize(), order_buttons(size_menu), menu_Channel);
- break;
- }
- case ("Small"):
- {
- hud_size = SMALL;
- llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_SIZE, <0.10000, 0.02500, 0.02500>]);
- llDialog(llGetOwner(), mk_hudsize(), order_buttons(size_menu), menu_Channel);
- break;
- }
- // hud mode of operation
- case "Auto":
- {
- hudFlags = AUTO;
- DS("hudflags " + (string) hudFlags );
- main_Menu = replaceListEntry(main_Menu, "Auto", "Manual");
- llDialog(llGetOwner(), mk_menu(), main_Menu, menu_Channel);
- break;
- }
- case "Manual":
- {
- hudFlags = 0;
- DS("hudflags " + (string) hudFlags );
- main_Menu = replaceListEntry(main_Menu, "Manual", "Auto");
- llDialog(llGetOwner(), mk_menu(), main_Menu, menu_Channel);
- break;
- }
- // go back to main menu
- case "Main Menu":
- {
- llDialog(llGetOwner(), mk_menu(), main_Menu, menu_Channel);
- break;
- }
- // ratings dialog
- case "Rating":
- {
- // build menu for sim rating dialog
- string ts = "\n\n\tCurrent setting is ";
- switch (rating_score)
- {
- case ADULT:
- {
- ts += "Adult.";
- break;
- }
- case MODERATE:
- {
- ts += "Moderate.";
- break;
- }
- case GENERAL:
- {
- ts += "General.";
- break;
- }
- }
- ts += "\n";
- llDialog(llGetOwner(), "Set Max Sim Rating" + ts, rate_Menu, menu_Channel);
- break;
- }
- // case for selecting sim level rating
- case "Adult":
- {
- rating_score = ADULT;
- warningShown = 0;
- string ts = "\n\n\tCurrent setting is " + getRatingLevel();
- llDialog(llGetOwner(), "Set Max Sim Rating" + ts, rate_Menu, menu_Channel);
- break;
- }
- case "Moderate":
- {
- rating_score = MODERATE;
- warningShown = 0;
- string ts = "\n\n\tCurrent setting is " + getRatingLevel();
- llDialog(llGetOwner(), "Set Max Sim Rating" + ts, rate_Menu, menu_Channel);
- break;
- }
- case "General":
- {
- rating_score = GENERAL;
- warningShown = 0;
- string ts = "\n\n\tCurrent setting is " + getRatingLevel();
- llDialog(llGetOwner(), "Set Max Sim Rating" + ts, rate_Menu, menu_Channel);
- break;
- }
- }
- DS("ratings score " + (string) rating_score);
- }
- // ask for teleport premission
- run_time_permissions(integer perm)
- {
- if (PERMISSION_TELEPORT & perm)
- {
- regionQry = llRequestSimulatorData(llGetRegionName(), DATA_SIM_RATING);
- llSetTimerEvent(5.0);
- }
- else
- {
- llOwnerSay("Hud will not function correctly without teleport premission.\nReattach hud to rest premissions.");
- }
- }
- // check to sim ratings ever 5 seconds
- timer()
- {
- regionQry = llRequestSimulatorData(llGetRegionName(), DATA_SIM_RATING);
- }
- attach( key id )
- {
- // upon attaching display basic settings
- string ts = "Current settings are\n";
- if(hudFlags == AUTO)
- ts += "\tTeleport Mode is set to Auto.";
- else
- ts += "\tTeleport Mode is set to Manual.";
- ts += "\n\tCurrent Sim limit is ";
- switch (rating_score)
- {
- case ADULT:
- {
- ts += "Adult.";
- break;
- }
- case MODERATE:
- {
- ts += "Moderate.";
- break;
- }
- case GENERAL:
- {
- ts += "General.";
- break;
- }
- }
- ts += "\n\tCurrent Safezone is ";
- if(safe_zone_name != "")
- ts += safe_zone_name;
- else
- ts += "WelcomeHub";
- // then request premission to tp
- if(id)
- {
- llOwnerSay(ts);
- llRequestPermissions(llGetOwner(), PERMISSION_TELEPORT);
- }
- }
- dataserver( key queryid, string data )
- {
- // getting the curren location when the safezone
- // button is pushed
- if(safe_zone_query == queryid)
- {
- list tl;
- tl = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_NAME]);
- safe_zone_global = (vector) data;
- safe_zone_regional = llGetPos();
- llOwnerSay("Safezone set to " + safe_zone_name
- + ", " + llList2String(tl, 0));
- llLinksetDataWrite("safezone", (string) safe_zone_global +","+ (string) safe_zone_regional+","+safe_zone_name );
- DS(llLinksetDataRead("safezone"));
- }
- // get location on grid of default safezone
- // currently the G rated WelcomeHub sim
- if(default_safeQry == queryid)
- {
- default_safe_global = (vector) data;
- }
- // set texture depending on sim rating
- // green - PG
- // blue - moderate or mature
- // red - adult (never safe)
- if(queryid == regionQry)
- {
- integer sim_score;
- switch (data)
- {
- case ("PG"):
- {
- sim_score = 0;
- llSetTexture("119e28e5-1043-0dc0-864e-a403092a4c2a", ALL_SIDES);
- break;
- }
- case ("MATURE"):
- {
- sim_score = 2;
- llSetTexture("1fb10f43-10c6-844e-fb94-a78dbc30ed9b", ALL_SIDES);
- break;
- }
- default:
- {
- sim_score = 3;
- llSetTexture("723386b5-e554-8430-d464-26d168f3aa58", ALL_SIDES);
- break;
- }
- }
- // monitoring sim rating and tp to savezone
- // if rating exceeds safty score
- if(sim_score > rating_score)
- {
- string ts;
- if(safe_zone_name != "")
- ts = safe_zone_name;
- else
- ts = "WelcomeHub";
- if(hudFlags == AUTO && warningShown == 0)
- {
- vector global;
- vector regional = <128, 128, 20>;
- DS(safe_zone_name);
- if(safe_zone_name != "")
- {
- global = safe_zone_global;
- regional = safe_zone_regional;
- }
- else
- {
- global = default_safe_global;
- }
- DS((string) global);
- DS((string) regional);
- #ifndef DEBUG
- if(llGetRegionName() != safe_zone_name || llGetRegionName() == "WelcomeHub")
- {
- llTeleportAgentGlobalCoords(llGetPermissionsKey(),
- global,
- regional,
- ZERO_VECTOR);
- llDialog(llGetOwner(),
- "Region Rating Surpassed Safty Settings\n\nAvatar Sent to SafeZone at " + ts +".",
- ["Ok"], menu_Channel);
- }
- #endif
- }
- else if (warningShown == 0)
- {
- if(llGetRegionName() != safe_zone_name && llGetRegionName() != "WelcomeHub")
- {
- string tb = getRatingLevel();
- llPlaySound("d7fa8e1e-2590-bc31-08a2-5d1096231ddf", 1.0);
- llDialog(llGetOwner(),
- "WARNING!!!! WARNING!!! WARNING!!!\n\n"+
- "Region Rating of " + llGetRegionName() + " Surpasses Safty Setting of " + tb
- + "\n\nPress \"GO!\" buttong goto safezone at " + ts +".",
- ["GO!" ,"Ok"],
- menu_Channel);
- warningShown = 1;
- }
- }
- }
- }
- }
- // hopped to a new region or crossed a regional boundry
- changed( integer change )
- {
- if(CHANGED_REGION & change)
- {
- if(!(llGetPermissions() & PERMISSION_TELEPORT))
- return;
- // region changed
- DS("region changed");
- warningShown = 0;
- regionQry = llRequestSimulatorData(llGetRegionName(), DATA_SIM_RATING);
- }
- if(CHANGED_OWNER & change)
- {
- llLinksetDataReset();
- llSay(0, "Ownership Changed, Resetting to Default Settings.");
- llResetScript();
- }
- }
- touch_start( integer num_detected )
- {
- if(llGetPermissions() & PERMISSION_TELEPORT)
- llResetTime();
- }
- // open menu
- touch( integer num_detected )
- {
- if(!(llGetPermissions() & PERMISSION_TELEPORT))
- return;
- if(llGetTime() > 2 && soundPlayed == 0)
- {
- llPlaySound("d23c9120-ba77-6c69-5ee1-0529b6e6ad5d", 1);
- soundPlayed = 1;
- llDialog(llGetOwner(), mk_menu(), main_Menu, menu_Channel);
- }
- }
- // panic button pushed taking to safe zone
- touch_end( integer num )
- {
- if(!(llGetPermissions() & PERMISSION_TELEPORT))
- return;
- soundPlayed = 0;
- if(llGetTime() < 2)
- {
- vector global;
- vector regional = <128, 128, 20>;
- // panic botton pushed
- llOwnerSay("Panic Botton Pressed, taking to safe zone.");
- DS(safe_zone_name);
- if(safe_zone_name != "")
- {
- global = safe_zone_global;
- regional = safe_zone_regional;
- }
- else
- {
- global = default_safe_global;
- }
- DS((string) global);
- DS((string) regional);
- #ifndef DEBUG
- llTeleportAgentGlobalCoords(llGetPermissionsKey(),
- global,
- regional,
- ZERO_VECTOR);
- #endif
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement