Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string reload_sound = "7e82e76a-5aa8-f608-1ceb-9cccc57b8aaf";
- string fireAuto = "8da3a6e4-246e-5ecb-edd9-159f98f1dad7";
- string fireOut = "b1ffa30e-d2e6-1d04-239d-dd38c06e325d";
- string beepDraw = "fb3caae0-6673-920d-a798-f124e55d802b";
- string beepSling = "91cd90d7-513f-a626-cfd7-b3e302af25ac";
- string beepReload = "36f501f0-69d8-8c24-77c2-ccd8acd5604c";
- integer soundon;
- integer maxammo = 45;
- integer underammo = 3;
- float reload_time = 2.25;
- integer ammo;
- integer slung=FALSE;
- integer reloading=FALSE;
- list authedgroups = ["f32c0934-c6d0-28e1-5969-46dff14f6e11"]; //List of groups that may use the item.
- list authedroles = []; //List of roles that may use the item. If blank, the whole group(s) may use it.
- list whitelist = ["62d9c080-1f24-4cda-86a4-8233253a83c9","802ca102-ef68-4b79-98ea-5c9b389cfbbb"]; //List of people who bypass the entire auth system.
- list test;
- list tag;
- integer link_mflash;
- integer getlink(string name) {
- integer n = llGetNumberOfPrims();
- while(n > 0 && llGetLinkName(n) != name) n--;
- if( n == 0 ) llOwnerSay("Link \"" + name + "\" not found!");
- return n;
- }
- sling()
- {
- slung=TRUE;
- llSetScriptState("Fallout 76", FALSE);
- llSetScriptState("YuGiOh Duel Links", FALSE);
- llSetScriptState("Pokemon GO", FALSE);
- llMessageLinked(LINK_SET, 0, "sling", NULL_KEY);
- llSetLinkTextureAnim(link_mflash, ANIM_ON, ALL_SIDES, 100, 100, 100.0, 100.0, 500.0);
- llPlaySound(beepSling, 1);
- llSetLinkAlpha(LINK_SET, 0.0, ALL_SIDES);
- llWhisper(-11,"sling");
- }
- reload()
- {
- reloading=TRUE;
- llStopSound();
- llSetLinkTextureAnim(link_mflash, ANIM_ON, ALL_SIDES, 100, 100, 100.0, 100.0, 500.0);
- if(soundon) llPlaySound(fireOut, 1);
- soundon=0;
- underammo=3;
- llStartAnimation("Reload");
- llPlaySound(reload_sound, 1);
- llMessageLinked(LINK_SET, 0, "", NULL_KEY);
- llSetTimerEvent(reload_time);
- }
- draw()
- {
- if(slung)
- {
- slung=FALSE;
- llSetScriptState("Fallout 76", TRUE);
- llSetScriptState("YuGiOh Duel Links", TRUE);
- llSetScriptState("Pokemon GO", TRUE);
- llMessageLinked(LINK_SET, maxammo, "draw", NULL_KEY);
- llSetLinkTextureAnim(link_mflash, ANIM_ON, ALL_SIDES, 100, 100, 100.0, 100.0, 500.0);
- llPlaySound(beepDraw, 1);
- llSetLinkAlpha(LINK_SET, 1.0, ALL_SIDES);
- llWhisper(-11,"draw");
- }
- else
- {
- sling();
- }
- }
- default
- {
- changed(integer c)
- {
- if(c&CHANGED_TELEPORT)
- {
- //lTriggerSound(beepReload, 1);
- ammo=maxammo;
- llMessageLinked(LINK_SET, ammo, "", NULL_KEY);
- //llOwnerSay("Reloaded.");
- llSetTimerEvent(0);
- reloading=FALSE;
- }
- else if(c&CHANGED_OWNER)
- {
- llResetScript();
- }
- }
- on_rez(integer s)
- {
- test = llGetObjectDetails(llList2Key( llGetAttachedList(llGetOwner()), 1), [OBJECT_GROUP]);
- tag = llGetObjectDetails(llGetOwner(), [OBJECT_GROUP_TAG]);
- //llOwnerSay((string)test);
- //llOwnerSay((string)tag);
- //llOwnerSay("oi");
- llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA|PERMISSION_TAKE_CONTROLS|PERMISSION_TRIGGER_ANIMATION|PERMISSION_ATTACH);
- llMessageLinked(LINK_SET, 0, "reset", NULL_KEY);
- llResetOtherScript("Fallout 76");
- llResetOtherScript("YuGiOh Duel Links");
- llResetOtherScript("Pokemon GO");
- llResetScript();
- }
- state_entry()
- {
- link_mflash = getlink("muzzleflash");
- ammo=maxammo;
- llMessageLinked(LINK_SET, llRound(ammo), "draw", NULL_KEY);
- llListen(1, "", llGetOwner(), "");
- llRequestPermissions(llGetOwner(), PERMISSION_TRACK_CAMERA|PERMISSION_TAKE_CONTROLS|PERMISSION_TRIGGER_ANIMATION|PERMISSION_ATTACH);
- }
- listen(integer c, string n, key id, string m)
- {
- if(m=="d1"||m=="draw1"||m=="arm1")
- {
- draw();
- }
- else if(m=="s1"||m=="sling1")
- {
- sling();
- }
- else if(m=="r"||m=="reload")
- {
- if(ammo<maxammo&&!slung)
- {
- reload();
- }
- }
- else if(m=="sub"&&underammo>0&&llGetTime()>.25)
- {
- underammo--;
- llTriggerSound("ef17c164-cfcc-fc91-2e69-f2276d559f6d",1);
- llResetTime();
- llRezObject("[Chaos] 20mm HEAP", llGetCameraPos()+<2.25,0,0>+.15*llGetVel()*llGetCameraRot(), <200,0,0>*llGetCameraRot(), <1,0,0,0>*llGetCameraRot(), 0);
- }
- }
- run_time_permissions(integer p)
- {
- if(p&PERMISSION_TAKE_CONTROLS)
- {
- llTakeControls(CONTROL_ML_LBUTTON, TRUE, TRUE);
- }
- if(p&PERMISSION_ATTACH)
- {
- test = llGetObjectDetails(llList2Key( llGetAttachedList(llGetOwner()), 1), [OBJECT_GROUP]);
- tag = llGetObjectDetails(llGetOwner(), [OBJECT_GROUP_TAG]);
- //llOwnerSay((string)llListFindList(whitelist, (list)[(string)llGetOwner()]));
- //llOwnerSay((string)whitelist);
- //llOwnerSay((string)llGetOwner());
- //llOwnerSay((string)llListFindList(authedgroups, (list)llList2String(test,0)));
- if(~llListFindList(whitelist, (list)[(string)llGetOwner()]))
- {
- llOwnerSay("Whitelisted.");
- return;
- }
- else if(~llListFindList(authedgroups, (list)llList2String(test,0)))
- {
- //llOwnerSay((string)llGetListLength(authedroles));
- //llOwnerSay((string)llListFindList(authedroles, (list)llList2String(test,1)));
- if(llGetListLength(authedroles)&&~llListFindList(authedroles, (list)llList2String(tag,0)))
- {
- //llOwnerSay("Right tag.");
- return;
- }
- else if(!llGetListLength(authedroles))
- {
- //llOwnerSay("Whole group authed.");
- return;
- }
- else
- {
- llOwnerSay("Wrong rank detected.");
- llDetachFromAvatar();
- }
- }
- else
- {
- llOwnerSay("Wrong group detected.");
- llDetachFromAvatar();
- }
- }
- else
- {
- llOwnerSay("Permissions not accepted. Destroying.");
- llSetAlpha(0, ALL_SIDES);
- llSetScale(<0.01,0.01,0.01>);
- }
- }
- control(key id, integer l, integer e)
- {
- if(l&CONTROL_ML_LBUTTON&&!slung&&!reloading)
- {
- if(!soundon)
- {
- llLoopSound(fireAuto, 1);
- soundon=1;
- llSetLinkTextureAnim(link_mflash, ANIM_ON | LOOP, ALL_SIDES, 2, 1, 1.0, 2.0, 20.0);
- }
- }
- else if(~l&e&CONTROL_ML_LBUTTON&&!slung&&!reloading)
- {
- if(soundon)
- {
- llStopSound();
- soundon=0;
- llSetLinkTextureAnim(link_mflash, ANIM_ON, ALL_SIDES, 100, 100, 100.0, 100.0, 500.0);
- }
- }
- }
- object_rez(key id)
- {
- ammo--;
- //llTriggerSound("4074eefa-7075-7ed1-e84d-859f9607deae", 1);
- if(ammo<=1)
- {
- llStopSound();
- llPlaySound(fireOut, 1);
- reloading=TRUE;
- reload();
- }
- }
- timer()
- {
- llTriggerSound(beepReload, 1);
- ammo=maxammo;
- llMessageLinked(LINK_SET, ammo, "", NULL_KEY);
- llOwnerSay("Reloaded.");
- llSetTimerEvent(0);
- reloading=FALSE;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement