| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- // :SHOW:1
- // :CATEGORY:NPC
- // :NAME:HyperGrid Story Nine
- // :AUTHOR:Shin Ingen
- // :KEYWORDS:NPC, controller and timer
- // :CREATED:2015-11-24 20:25:34
- // :EDITED:2015-11-24 19:25:34
- // :ID:1087
- // :NUM:1846
- // :REV:1.0
- // :WORLD:OpenSim
- // :DESCRIPTION:
- // Timer script - ended up not being used.
- // :CODE:
- integer debug = 2;
- // Link Numbers of the NPC controller
- integer namaka =2;
- integer dylan =3;
- integer npc1 =4;
- integer npc2 =5;
- integer npc3 =6;
- integer npc4 =7;
- integer npc5 =8;
- integer npc6 =9;
- // List of NPC Listener channels
- integer gFireworksChannel =20;
- integer gTeleportChannel = 21;
- integer CommandChannel = 23;
- integer gSimpleMenuChannel = 999; // The channel used for the menu
- integer MaxTicks = 60; // Show length
- // The repeat the show timer
- list kDance1 = ["Dance1",1]; // Dance
- list kDance2 = ["Dance2",10]; // Dance
- list kDance3 = ["Dance3",20]; // Dance
- list kDance4 = ["Dance4",30]; // Dance
- list kDance5 = ["Dance5",40]; // Dance
- list kDance6 = ["Dance6",50]; // Dance
- list kFireworksRepRate = ["Shoot", 2]; // rep rate for finale
- // the following are calculated based on the current timer tick
- list kFireworksStartsAt = ["StartFireworks", 99999]; // rep rate for finale
- list kRaiseTeleport = ["BeamMeUp",99999]; // raise the teleports
- list kStopAutoFire = ["EndFireworks",99999]; // and stops here
- SendMessageLinked(integer npc, string cmd)
- {
- llRegionSay(CommandChannel,(string) npc + "|" + cmd);
- }
- DoCmd(string message, integer channel)
- {
- if (channel == CommandChannel) {
- Process(message);
- }
- if (message == "ShowTime") {
-
- DEBUG("Running");
- ShowTime();
- }
- else if (message == "Finale!")
- {
- kFireworksStartsAt = ["StartFireworks", gTimeElapsed+1]; // rep rate for finale
- kRaiseTeleport = ["BeamMeUp",gTimeElapsed+25]; // raise the teleports
- kStopAutoFire = ["EndFireworks",gTimeElapsed+30]; // and stops here
- settimeout(kFireworksStartsAt);
- settimeout(kStopAutoFire);
- settimeout(kRaiseTeleport);
- }
- else if (message == "Stop")
- {
- llSay(0,"You selected option Stop");
- gTimeoutList = [];
- }
- }
- // this is a list of all the cycling show bits
- ShowTime()
- {
- DEBUG("Starting Countdown");
- gTimeElapsed=0;
- settimeout(kDance1);
- settimeout(kDance2);
- settimeout(kDance3);
- settimeout(kDance4);
- settimeout(kDance5);
- settimeout(kDance6);
- DEBUG(llDumpList2String(gTimeoutList,":"));
- }
- Process(string timereventid) {
- if (llList2String(kDance1,0) == timereventid)
- {
- DEBUG("Dance1");
- ;
- SendMessageLinked(dylan,"@appearance=Dylan");
- SendMessageLinked(namaka,"@appearance=Namaka");
- SendMessageLinked(npc1,"@appearance=Crispen Enpeacee");
- SendMessageLinked(npc2,"@appearance=Alessandra Enpeacee");
- SendMessageLinked(npc3,"@appearance=Sammy Enpeacee");
- SendMessageLinked(npc4,"@appearance=Jolinda Enpeacee");
- SendMessageLinked(npc5,"@appearance=Claire Enpeacee");
- SendMessageLinked(npc6,"@appearance=Marianne Enpeacee");
-
- SendMessageLinked(LINK_SET,"@notecard=Dance1");
- }
- else if (llList2String(kDance2,0) == timereventid)
- {
- DEBUG("Dance2");
- SendMessageLinked(LINK_SET,"@appearance=Alessandra Enpeacee");
- SendMessageLinked(LINK_SET,"@notecard=Dance2");
- }
- else if (llList2String(kDance3,0) == timereventid)
- {
- DEBUG("Dance3");
- SendMessageLinked(LINK_SET,"@appearance=Sammy Enpeacee");
- SendMessageLinked(LINK_SET,"@notecard=Dance3");
- }
- else if (llList2String(kDance4,0)== timereventid)
- {
- DEBUG("Dance4");
- SendMessageLinked(LINK_SET,"@appearance=Jolinda Enpeacee");
- SendMessageLinked(LINK_SET,"@notecard=Dance4");
- }
- else if (llList2String(kDance5,0)== timereventid)
- {
- DEBUG("Dance5");
- SendMessageLinked(LINK_SET,"@appearance=Claire Enpeacee");
- SendMessageLinked(LINK_SET,"@notecard=Dance5");
- }
- else if (llList2String(kDance6,0)== timereventid)
- {
- DEBUG("Dance6");
- SendMessageLinked(LINK_SET,"@appearance=MarianneEnpeacee");
- SendMessageLinked(LINK_SET,"@notecard=Dance6");
- }
- else if (llList2String(kFireworksStartsAt,0) == timereventid)
- {
- DEBUG("Shoot!");
- SendMessageLinked(LINK_SET,"@appearance=Dragon");
- SendMessageLinked(LINK_SET,"@notecard=Fireworks");
- llRegionSay(gFireworksChannel,"Go");
- settimeout(kFireworksRepRate);
- }
- else if (llList2String(kFireworksRepRate,0) == timereventid)
- {
- DEBUG("Fireworks Start");
- llRegionSay(gFireworksChannel,"Go");
-
- SendMessageLinked(npc1,"@appearance=Crispen Enpeacee");
- SendMessageLinked(npc2,"@appearance=Alessandra Enpeacee");
- SendMessageLinked(npc3,"@appearance=Sammy Enpeacee");
- SendMessageLinked(npc4,"@appearance=Jolinda Enpeacee");
- SendMessageLinked(npc5,"@appearance=Claire Enpeacee");
- SendMessageLinked(npc6,"@appearance=Marianne Enpeacee");
- SendMessageLinked(dylan,"@appearance=Dylan");
- SendMessageLinked(namaka,"@appearance=Namaka");
-
- SendMessageLinked(LINK_SET,"@notecard=Final");
-
- settimeout(kFireworksRepRate);
- }
- else if (llList2String(kStopAutoFire,0) == timereventid)
- {
-
- DEBUG("Fireworks End");
- deletetimeout(kFireworksRepRate);
- settimeout(kRaiseTeleport);
- }
- else if (llList2String(kRaiseTeleport,0) == timereventid)
- {
- SendMessageLinked(LINK_SET,"@notecard=Teleport");
- DEBUG("Teleports Up");
- llRegionSay(gTeleportChannel,"Up");
- }
- }
- integer busy;
- integer gListener; // Listener for handling different channels
- list gTimeoutList;
- float gTimeElapsed=0;
- //============================================================================
- vector gFacecolor=<1.0,0.0,0.0>; //RED
- DEBUG(string msg)
- {
- if (debug ==1)
- llSay(0,llGetScriptName() + ":" + msg);
- if (debug ==2)
- llSetText(msg, <1,0,0>,1.0);
- }
- menu(key id, integer channel, string title, list buttons) {
- llListenRemove(gListener);
- gListener = llListen(channel,"",id,"");
- llDialog(id,title,buttons,channel);
- }
- simplemenu(key id) {
- menu(id,gSimpleMenuChannel,"Select an option",["ShowTime","Finale","Stop"]);
- }
- deletetimeout(list events) {
- string timereventid = llList2String(events,0);
- DEBUG("Deleteing timer event " + timereventid);
- integer identifyerIndex = llListFindList(gTimeoutList, [timereventid]);
- if (identifyerIndex != -1)
- gTimeoutList = llDeleteSubList(gTimeoutList, identifyerIndex - 1, identifyerIndex);
- }
- settimeout(list events)
- {
- // unpack the list
- string timereventid = llList2String(events,0);
- integer time = llList2Integer(events,1);
- DEBUG("Adding " + timereventid);
- integer identifyerIndex = llListFindList(gTimeoutList, [timereventid]);
- if (identifyerIndex != -1)
- gTimeoutList = llDeleteSubList(gTimeoutList, identifyerIndex - 1, identifyerIndex);
- if (time != 0) {
- gTimeoutList += time;
- gTimeoutList += timereventid;
- }
-
- llSetTimerEvent(1.0);
-
- }
- timertick() {
- gTimeElapsed ++;
- //DEBUG((string) gTimeElapsed );
-
- integer i;
- integer numTimers = llGetListLength(gTimeoutList);
- //DEBUG((string) (numTimers/2) + " timers");
- // scan over all queued timers
- for (i = 0; i < numTimers; i += 2)
- {
- integer triggerTime = llList2Integer(gTimeoutList, i);
- //DEBUG("TriggerTime = " + (string)triggerTime);
- if (triggerTime == gTimeElapsed) {
-
- string timereventid = llList2String(gTimeoutList, i + 1);
- //DEBUG("matched " + timereventid);
-
- gTimeoutList = llDeleteSubList(gTimeoutList, i, i + 1); // they are one-shots, so delete the event that just happened.
- Process(timereventid); // process the callback
-
- if (gTimeoutList == []) {
- DEBUG("Show over! Starting back up");
- ShowTime();
- }
- }
- }
- }
- displaydigit(integer n, string d){
- list Facelist; //list depends on your mesh digital readout face number.
- integer i;
- if(n==0) Facelist=[ 1,1,1,1,0,1,1 ]; //index @0 | 7 faces per digit
- if(n==1) Facelist=[ 0,0,1,0,0,1,0 ];
- if(n==2) Facelist=[ 1,1,0,1,1,1,0 ];
- if(n==3) Facelist=[ 1,1,1,0,1,1,0 ];
- if(n==4) Facelist=[ 0,0,1,0,1,1,1 ];
- if(n==5) Facelist=[ 1,1,1,0,1,0,1 ];
- if(n==6) Facelist=[ 0,1,1,1,1,0,1 ];
- if(n==7) Facelist=[ 1,0,1,0,0,1,0 ];
- if(n==8) Facelist=[ 1,1,1,1,1,1,1 ];
- if(n==9) Facelist=[ 1,0,1,0,1,1,1 ];
-
- integer l = llGetLinkNumber() != 0;
- integer x = llGetNumberOfPrims() + l;
- for (; l < x; ++l){
- if (llGetLinkName(l) == d){
- for (i=0;i<7;i++){
- llSetLinkPrimitiveParamsFast(l,[PRIM_COLOR,i,gFacecolor,llList2Float(Facelist,i)]);
- }
- }
- }
- }
- getdigit(integer time){
- string dOne;
- string dTen;
- string dHundred;
- string dThousand;
-
- if (time<10){
- dOne=(string)time;
- dTen="0";
- dHundred="0";
- dThousand="0"; // add your digits here
- }else if(time<100){
- dOne=llGetSubString((string)time,-1,-1);
- dTen=llGetSubString((string)time,0,0);
- dHundred="0";
- dThousand="0";
- }else if(time<1000){
- dOne=llGetSubString((string)time,-1,-1);
- dTen=llGetSubString((string)time,1,1);
- dHundred=llGetSubString((string)time,0,0);
- dThousand="0";
- }else if(time<10000){
- dOne=llGetSubString((string)time,-1,-1);
- dTen=llGetSubString((string)time,2,2);
- dHundred=llGetSubString((string)time,1,1);
- dThousand=llGetSubString((string)time,0,0);
- }
- displaydigit((integer)dOne, "one");
- displaydigit((integer)dTen, "ten");
- displaydigit((integer)dHundred, "hundred");
- displaydigit((integer)dThousand, "thousand");
- //DEBUG(dThousand + dHundred + ":" + dTen + dOne);
- }
- StopAll()
- {
- DEBUG("Stopped");
- llSetTimerEvent(0);
-
- }
-
- default
- {
- state_entry()
- {
- llListen(CommandChannel,"","","");
- getdigit(0);
- }
-
- touch_start(integer num)
- {
- if ( llGetOwner() == llDetectedKey(0)) {
- if (! busy) {
- simplemenu(llDetectedKey(0));
- busy++;
- } else {
- busy = FALSE;
- StopAll();
- }
- }
- }
-
- link_message(integer sender_number, integer number, string message, key id)
- {
- DEBUG("LINK MESSAGE\n" + message);
- DoCmd(message, number);
- }
- listen (integer channel, string name, key id, string message)
- {
- // !!! add parser for killing the NPC
- DEBUG("LISTEN\n" + message);
- DoCmd(message, channel);
- }
- timer()
- {
- timertick();
-
- //limit the ticker to maximum ticks
- if(gTimeElapsed >= MaxTicks){
- gTimeElapsed=0;
- }
- integer CountDown = MaxTicks - (integer)gTimeElapsed;
- integer mm = (CountDown / 60) * 100;
- integer ss = (CountDown % 60);
- integer cc = mm + ss;
-
- getdigit((integer)cc);
- }
- }
|