Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- simulation hud start
- affiliate configurable script
- list names = ["Hunger","Thirst","Bladder","Hygiene","Entertainment","Energy","Health","Fitness"];
- list stats = [0,0,0,0,0,0,0,0];
- /*change these numbers below to have an effect on the users meter where anything over 1 is adding anything in the negatives is taking away*/
- integer hunger = 1;
- integer thirst = 1;
- integer bladder = -1;
- integer hygiene = -1;
- integer entertainment = -1;
- integer energy = 0;
- integer health = 0;
- integer fitness = -1;
- default
- {
- state_entry()
- {
- llResetOtherScript("petprojectapi");
- stats = [hunger,thirst,bladder,hygiene,entertainment,energy,health,fitness];
- integer i = 0;
- for(i=0;i<llGetListLength(stats);++i)
- {
- llMessageLinked(LINK_SET,123,llList2String(names,i),llList2String(stats,i));
- }
- llMessageLinked(LINK_SET,123,"Config","");
- //comment out the timer call if you dont want the item to be used automatically
- //llSetTimerEvent(180.0);
- }
- timer()
- {
- llMessageLinked(LINK_SET,123,"TRIGGER",llGetOwner());
- }
- touch_start(integer total_number)
- {
- //comment out this line if you dont want to use rez and touch to trigger your item
- llMessageLinked(LINK_SET,123,"TRIGGER",llDetectedKey(0));
- }
- }
- main api script
- string ProtocolSignature = "nolife"; // your own signature
- float ProtocolVersion = 0.1; // can range from 0.0 to 255.255
- string Password = "nolifeiscool"; // change this to your own password
- string Header;
- string strHex = "0123456789ABCDEF";
- string hex(integer value)
- {
- integer digit = value & 0xF;
- string text = llGetSubString(strHex, digit, digit);
- value = (value >> 4) & 0xfffFFFF;
- integer odd = TRUE;
- while(value)
- {
- digit = value & 0xF;
- text = llGetSubString(strHex, digit, digit) + text;
- odd = !odd;
- value = value >> 4;
- }
- if(odd)
- text = "0" + text;
- return text;
- }
- integer Debug = 0;
- string error(string message)
- {
- if(Debug) llSay(DEBUG_CHANNEL, message);
- return "";
- }
- string decrypt(string password, string message)
- {
- integer signatureLength = llStringLength(ProtocolSignature);
- integer headerLength = signatureLength + 12; // version = 4, nonce = 8
- // verify length of encrypted message
- if(llStringLength(message) < signatureLength + 44) // digest = 32 (base64 = 44) + at least one character
- return error("Too small for secret message.");
- // look for protocol signature in message header
- if(llSubStringIndex(message, ProtocolSignature) != 0)
- return error("Unknown protocol.");
- // Parse version information from header
- integer index = signatureLength; // determine where to start parsing
- string major = "0x" + llGetSubString(message, index, ++index);
- string minor = "0x" + llGetSubString(message, ++index, ++index);
- float version = (float)((string)((integer)major) + "." + (string)((integer)minor));
- // verify version is supported
- if(version != ProtocolVersion)
- return error("Unknown version.");
- // parse nonce from header
- integer nonce = (integer)("0x" + llGetSubString(message, ++index, index + 7));
- // remove header from message
- message = llGetSubString(message, headerLength, -1);
- // create one time pad from password and nonce
- string oneTimePad = llMD5String(password, nonce);
- // append pad until length matches or exceeds message
- while(llStringLength(oneTimePad) < (llStringLength(message) / 2 * 3))
- oneTimePad += llMD5String(oneTimePad, nonce);
- // decrypt message
- oneTimePad = llStringToBase64(oneTimePad);
- message = llXorBase64StringsCorrect(message, oneTimePad);
- // decode message
- message = llBase64ToString(message);
- // get digest
- string digest = llGetSubString(message, 0, 31);
- // remove digest from message
- message = llGetSubString(message, 32, -1);
- // verify digest is valid
- if(llMD5String(message, nonce) != digest)
- return error("Message digest was not valid.");
- // return decrypted message
- return message;
- }
- string encrypt(string password, string message)
- {
- // get a random value
- integer nonce = (integer)llFrand(0x7FFFFFFF);
- // generate digest and prepend it to message
- message = llMD5String(message, nonce) + message;
- // generate one time pad
- string oneTimePad = llMD5String(password, nonce);
- // append pad until length matches or exceeds message
- integer count = (llStringLength(message) - 1) / 32;
- if(count)
- do
- oneTimePad += llMD5String(oneTimePad, nonce);
- while(--count);
- // return the header, nonce and encrypted message
- return Header + llGetSubString("00000000" + hex(nonce), -8, -1) + llXorBase64StringsCorrect(llStringToBase64(message), llStringToBase64(oneTimePad));
- }
- init()
- {
- //build the header, it never changes.
- list versions = llParseString2List((string)ProtocolVersion, ["."], []);
- string minor = llList2String(versions, 1);
- integer p = 0;
- while(llGetSubString(minor, --p, p) == "0");
- Header = ProtocolSignature + hex(llList2Integer(versions, 0)) + hex((integer)llGetSubString(minor, 0xFF000000, p));
- }
- list names = ["Hunger ","Thirst ","Bladder ","Hygiene ","Entertainment ","Energy ","Health ","Fitness "];
- list stats = [0,0,0,0,0,0,0,0];
- integer hunger;
- integer thirst;
- integer bladder;
- integer hygiene;
- integer entertainment;
- integer energy;
- integer health;
- integer fitness;
- integer apichan;
- integer apilis;
- integer appint = 123;
- integer Key2AppChan(key ID, integer App) {
- return 0x80000000 | ((integer)("0x"+(string)ID) ^ App);
- }
- default
- {
- state_entry()
- {
- apichan = Key2AppChan(llGetOwner(),appint);
- init();
- }
- link_message(integer s,integer r,string str,key id)
- {
- if(str=="Hunger")
- {
- hunger = (integer)((string)id);
- }else if(str=="Thirst")
- {
- thirst = (integer)((string)id);
- }else if(str=="Bladder")
- {
- bladder = (integer)((string)id);
- }else if(str=="Hygiene")
- {
- hygiene = (integer)((string)id);
- }else if(str=="Entertainment")
- {
- entertainment = (integer)((string)id);
- }else if(str=="Energy")
- {
- energy = (integer)((string)id);
- }else if(str=="Health")
- {
- health = (integer)((string)id);
- }else if(str=="Fitness")
- {
- fitness = 0;
- }else if(str == "Config")
- {
- stats = [hunger,thirst,bladder,hygiene,entertainment,energy,health,fitness];
- state run;
- }
- }
- }
- state run
- {
- link_message(integer s,integer r,string str,key id)
- {
- if(str == "TRIGGER")
- {
- apichan = Key2AppChan(id,appint);
- llSay(apichan,encrypt(Password,"nolife^FXSTATS^"+llDumpList2String(stats,"^")));
- }
- }
- }
- hud script meter thingy
- string ProtocolSignature = "nolife"; // your own signature
- float ProtocolVersion = 0.1; // can range from 0.0 to 255.255
- string Password = "nolifeiscool"; // change this to your own password
- string Header;
- string strHex = "0123456789ABCDEF";
- string hex(integer value)
- {
- integer digit = value & 0xF;
- string text = llGetSubString(strHex, digit, digit);
- value = (value >> 4) & 0xfffFFFF;
- integer odd = TRUE;
- while(value)
- {
- digit = value & 0xF;
- text = llGetSubString(strHex, digit, digit) + text;
- odd = !odd;
- value = value >> 4;
- }
- if(odd)
- text = "0" + text;
- return text;
- }
- integer Debug = 0;
- string error(string message)
- {
- if(Debug) llSay(DEBUG_CHANNEL, message);
- return "";
- }
- string decrypt(string password, string message)
- {
- integer signatureLength = llStringLength(ProtocolSignature);
- integer headerLength = signatureLength + 12; // version = 4, nonce = 8
- // verify length of encrypted message
- if(llStringLength(message) < signatureLength + 44) // digest = 32 (base64 = 44) + at least one character
- return error("Too small for secret message.");
- // look for protocol signature in message header
- if(llSubStringIndex(message, ProtocolSignature) != 0)
- return error("Unknown protocol.");
- // Parse version information from header
- integer index = signatureLength; // determine where to start parsing
- string major = "0x" + llGetSubString(message, index, ++index);
- string minor = "0x" + llGetSubString(message, ++index, ++index);
- float version = (float)((string)((integer)major) + "." + (string)((integer)minor));
- // verify version is supported
- if(version != ProtocolVersion)
- return error("Unknown version.");
- // parse nonce from header
- integer nonce = (integer)("0x" + llGetSubString(message, ++index, index + 7));
- // remove header from message
- message = llGetSubString(message, headerLength, -1);
- // create one time pad from password and nonce
- string oneTimePad = llMD5String(password, nonce);
- // append pad until length matches or exceeds message
- while(llStringLength(oneTimePad) < (llStringLength(message) / 2 * 3))
- oneTimePad += llMD5String(oneTimePad, nonce);
- // decrypt message
- oneTimePad = llStringToBase64(oneTimePad);
- message = llXorBase64StringsCorrect(message, oneTimePad);
- // decode message
- message = llBase64ToString(message);
- // get digest
- string digest = llGetSubString(message, 0, 31);
- // remove digest from message
- message = llGetSubString(message, 32, -1);
- // verify digest is valid
- if(llMD5String(message, nonce) != digest)
- return error("Message digest was not valid.");
- // return decrypted message
- return message;
- }
- string encrypt(string password, string message)
- {
- // get a random value
- integer nonce = (integer)llFrand(0x7FFFFFFF);
- // generate digest and prepend it to message
- message = llMD5String(message, nonce) + message;
- // generate one time pad
- string oneTimePad = llMD5String(password, nonce);
- // append pad until length matches or exceeds message
- integer count = (llStringLength(message) - 1) / 32;
- if(count)
- do
- oneTimePad += llMD5String(oneTimePad, nonce);
- while(--count);
- // return the header, nonce and encrypted message
- return Header + llGetSubString("00000000" + hex(nonce), -8, -1) + llXorBase64StringsCorrect(llStringToBase64(message), llStringToBase64(oneTimePad));
- }
- init()
- {
- //build the header, it never changes.
- list versions = llParseString2List((string)ProtocolVersion, ["."], []);
- string minor = llList2String(versions, 1);
- integer p = 0;
- while(llGetSubString(minor, --p, p) == "0");
- Header = ProtocolSignature + hex(llList2Integer(versions, 0)) + hex((integer)llGetSubString(minor, 0xFF000000, p));
- }
- list names = ["Hunger ","Thirst ","Bladder ","Hygiene ","Entertainment ","Energy ","Health ","Fitness "];
- list stats = [100,100,100,100,100,100,100,0];
- integer showtext = 1;
- integer fitnesstick = 0;
- text()
- {
- if(showtext)
- {
- string out = "";
- integer i = 0;
- for(i=0;i<llGetListLength(stats);i++)
- {
- out += llList2String(names,i)+" "+llList2String(stats,i)+"%\n";
- }
- llSetText(out,<1,1,1>,1);
- }else
- {
- llSetText("",<1,1,1>,1);
- }
- }
- integer apichan;
- integer apilis;
- integer appint = 123;
- integer Key2AppChan(key ID, integer App) {
- return 0x80000000 | ((integer)("0x"+(string)ID) ^ App);
- }
- integer tick = 0;
- dotimechange()
- {
- integer curhunger = (integer)llList2String(stats,0);
- integer curthirst = (integer)llList2String(stats,1);
- integer curbladder = (integer)llList2String(stats,2);
- integer curhygiene = (integer)llList2String(stats,3);
- integer curentertainment = (integer)llList2String(stats,4);
- integer curenergy = (integer)llList2String(stats,5);
- integer curhealth = (integer)llList2String(stats,6);
- integer curfitness = (integer)llList2String(stats,7);
- curhunger--;
- if(curhunger<0)curhunger=0;
- curthirst--;
- if(curthirst<0)curthirst=0;
- curbladder--;
- if(curbladder<0)curbladder=0;
- curhygiene--;
- if(curhygiene<0)curhygiene=0;
- curentertainment--;
- if(curentertainment<0)curentertainment=0;
- curenergy--;
- if(curenergy<0)curenergy=0;
- if(fitnesstick>=100)
- {
- curfitness++;
- if(curfitness>100)curfitness=100;
- }else
- {
- curfitness--;
- if(curfitness<-100)curfitness=-100;
- }
- stats = [curhunger,curthirst,curbladder,curhygiene,curentertainment,curenergy,curhealth,curfitness];
- }
- default
- {
- on_rez(integer sp)
- {
- llResetScript();
- }
- state_entry()
- {
- init();
- llListenRemove(apilis);
- apichan = Key2AppChan(llGetOwner(),appint);
- apilis = llListen(apichan,"","","");
- if(llGetObjectDesc()!="NEWPLAYER")
- {
- string data = decrypt(Password, llGetObjectDesc());
- stats = llParseString2List(data,["^"],[]);
- }else
- {
- stats = [100,100,100,100,100,100,100,0];
- llSetObjectDesc(encrypt(Password,llDumpList2String(stats,"^")));
- }
- text();
- llSetTimerEvent(60);
- }
- listen(integer c,string n,key id,string m)
- {
- //llOwnerSay(m);
- list t = llParseString2List(decrypt(Password,m),["^"],[]);
- if(llList2String(t,0)=="nolife")
- {
- //llOwnerSay(llDumpList2String(t,","));
- if(llList2String(t,1)=="FXSTATS")
- {
- integer fxhunger = (integer)llList2String(t,2);
- integer fxthirst = (integer)llList2String(t,3);
- integer fxbladder = (integer)llList2String(t,4);
- integer fxhygiene = (integer)llList2String(t,5);
- integer fxentertainment = (integer)llList2String(t,6);
- integer fxenergy = (integer)llList2String(t,7);
- integer fxhealth = (integer)llList2String(t,8);
- integer fxfitness = (integer)llList2String(t,9);
- integer curhunger = (integer)llList2String(stats,0);
- integer curthirst = (integer)llList2String(stats,1);
- integer curbladder = (integer)llList2String(stats,2);
- integer curhygiene = (integer)llList2String(stats,3);
- integer curentertainment = (integer)llList2String(stats,4);
- integer curenergy = (integer)llList2String(stats,5);
- integer curhealth = (integer)llList2String(stats,6);
- integer curfitness = (integer)llList2String(stats,7);
- curhunger = curhunger+fxhunger;
- if(curhunger>100)curhunger=100;
- curthirst = curthirst+fxthirst;
- if(curthirst>100)curthirst=100;
- curbladder = curbladder+fxbladder;
- if(curbladder>100)curbladder=100;
- curhygiene = curhygiene+fxhygiene;
- if(curhygiene>100)curhygiene=100;
- curentertainment = curentertainment+fxentertainment;
- if(curentertainment>100)curentertainment=100;
- curenergy = curenergy+fxenergy;
- if(curenergy>100)curenergy=100;
- curhealth = curhealth+fxhealth;
- if(curhealth>100)curhealth=100;
- curfitness = curfitness+fxfitness;
- if(curfitness>100)curfitness=100;
- stats = [curhunger,curthirst,curbladder,curhygiene,curentertainment,curenergy,curhealth,curfitness];
- text();
- llSetObjectDesc(encrypt(Password,llDumpList2String(stats,"^")));
- }
- }
- }
- timer()
- {
- integer curfitness = (integer)llList2String(stats,7);
- tick++;
- if(curfitness <= 10 && tick >=3)
- {
- tick=0;
- dotimechange();
- }else if((curfitness > 10 && curfitness <= 30) && tick >=10)
- {
- tick=0;
- dotimechange();
- }else if((curfitness > 30 && curfitness <= 70) && tick >=20)
- {
- tick=0;
- dotimechange();
- }else if((curfitness > 70) && tick >=25)
- {
- tick=0;
- dotimechange();
- }
- integer buf = llGetAgentInfo(llGetOwner());
- if(buf & AGENT_FLYING)
- {
- fitnesstick++;
- }else
- {
- fitnesstick--;
- }
- if(buf & AGENT_WALKING)
- {
- fitnesstick++;
- }else
- {
- fitnesstick--;
- }
- text();
- llSetObjectDesc(encrypt(Password,llDumpList2String(stats,"^")));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement