Tattooshop
-
Posts
365 -
Joined
-
Last visited
Content Type
Forums
Blogs
Knowledge Base
Posts posted by Tattooshop
-
-
Hello! There is a security orb script based on the sensor. is it possible in theory to establish the special landing point at which the ejection will occur?
-
3 hours ago, Kyrah Abattoir said:
That's nice of you but you aren't teaching people anything by giving them ready to use scripts
Thanks for the criticism, I will consider! by the way, I just noticed that I made a script for only one link, so there’s still something to ponder!
-
This is if your flickr button is not a separate mesh. Use your own buttons face number!
string link1 = "https://www.flickr.com/"; string link1_name = "Flickr"; default { touch_start(integer total_number) { if(llDetectedKey(0) != llGetOwner()) return; integer face = llDetectedTouchFace(0); if(face == 0) // Your buttons face number { llOwnerSay("Follow me on ["+link1+" "+link1_name+"]!"); } } }
And this is if your flickr button is a separate mesh. Simply name your button "flickr"
string link1 = "https://www.flickr.com/"; string link1_name = "Flickr"; default { touch_start(integer total_number) { if(llDetectedKey(0) != llGetOwner()) return; string button = llGetLinkName(llDetectedLinkNumber(0)); if (button == "flickr") // Your buttons name { llOwnerSay("Follow me on ["+link1+" "+link1_name+"]!"); } } }
Place script to the root
-
I understand that you want to express support ... but, in my opinion, the use of terms such as black or white appealing to people, at least not very culturally and a little smacks of racism. but this is my personal opinion and I may be wrong.
- 1
-
Hello! Do I understand correctly that in order to make / use a teleport on collision script I need to either be premium ( experiences ) or RLV must be enabled? Are there other ways?
-
Tutorials help a lot, of course, but your own experience matter too, so start to exploring SL, visit places, meet people, this may take some time, cause people here do what they want to do mostly. IMVU is a bit different, I guess.
Good luck!
Edit:
Ah yes, p.s. ALWAYS TRY DEMOS before buy! lol
- 2
-
1 hour ago, KT Kingsley said:
Check the object's name at the same time you check it's not a script:
if (name != "except.object" && llGetInventoryType(name) != INVENTORY_SCRIPT)
One thing, though: if you're giving several objects at once I'd be inclined to use llGiveInventoryList, which puts all the items together in a new folder in the target's inventory and only triggers a single accept/decline dialog.
I used another unpacker with list and added your line - works perfectly! Thank you!
string EXCEPT_ITEM_NAME = "except.object"; // Item you want to exclude default { touch_start(integer total_number) { integer x; for(x = 0; x < total_number; x++) { if(llDetectedKey(x) == llGetOwner()) { string InvenName; integer InvenNumber = llGetInventoryNumber(INVENTORY_ALL); list InvenList = []; integer y; for(y = 0; y < InvenNumber; y++) { InvenName = llGetInventoryName(INVENTORY_ALL, y); if(InvenName != EXCEPT_ITEM_NAME && llGetInventoryType(InvenName) != INVENTORY_SCRIPT) InvenList += [InvenName]; } llGiveInventoryList(llGetOwner(), llGetObjectName(), InvenList); } } } }
- 1
-
How to make this unpacker give everything except certain item, named "except.object" for example?
default { state_entry() { llSetMemoryLimit(llGetUsedMemory() + 1024); } touch_start(integer n) { if (llDetectedKey(0) == llGetOwner()) // Detect owner { for (n--; n >= 0; n--) { integer j = llGetInventoryNumber(INVENTORY_ALL); for (j--; j >= 0; j--) { string name = llGetInventoryName(INVENTORY_ALL, j); if (llGetInventoryType(name) != INVENTORY_SCRIPT) { llGiveInventory(llDetectedKey(n), name); } } } } } }
-
Hello! Where is the error in this script? It does not show all the textures in the menu.
integer SIDE = ALL_SIDES; list effects = [LOOP]; // LOOP for GIF89 movies //Movement parameters (choose one): //ROTATE - Rotates the texture //SCALE - Scales the texture //Set movement to 0 to slide animation in the X direction, without any special movement. integer movement = 0; integer face = ALL_SIDES; //Number representing the side to activate the animation on. integer sideX = 1; //Represents how many horizontal images (frames) are contained in your texture. integer sideY = 1; //Same as sideX, except represents vertical images (frames). float start = 0.0; //Frame to start animation on. (0 to start at the first frame of the texture) float length = 0.0; //Number of frames to animate, set to 0 to animate all frames. float speed = 10.0; //Frames per second to play. // menu stuff integer listen_id; // int of the current listener integer menuChannel; // int of the channel number integer N_DIALOG_CHOICES; integer MAX_DIALOG_CHOICES_PER_PG = 8; // if not offering back button, increase this to 9 string PREV_PG_DIALOG_PREFIX = "< Page "; string NEXT_PG_DIALOG_PREFIX = "> Page "; string DIALOG_DONE_BTN = "Done"; string DIALOG_BACK_BTN = "<< Back"; integer pageNum; list DIALOG_CHOICES; giveDialog(key ID, integer pageNum) { list buttons; integer firstChoice; integer lastChoice; integer prevPage; integer nextPage; string OnePage; CancelListen(); menuChannel = llCeil(llFrand(1000000) + 11000000); listen_id = llListen(menuChannel, "", "", ""); llSetTimerEvent(60); N_DIALOG_CHOICES = llGetListLength(DIALOG_CHOICES); if (N_DIALOG_CHOICES <= 10) { buttons = DIALOG_CHOICES; OnePage = "Yes"; } else { integer nPages = (N_DIALOG_CHOICES + MAX_DIALOG_CHOICES_PER_PG - 1) / MAX_DIALOG_CHOICES_PER_PG; if (pageNum < 1 || pageNum > nPages) { pageNum = 1; } firstChoice = (pageNum - 1) * MAX_DIALOG_CHOICES_PER_PG; lastChoice = firstChoice + MAX_DIALOG_CHOICES_PER_PG - 1; if (lastChoice >= N_DIALOG_CHOICES) { lastChoice = N_DIALOG_CHOICES; } if (pageNum <= 1) { prevPage = nPages; nextPage = 2; } else if (pageNum >= nPages) { prevPage = nPages - 1; nextPage = 1; } else { prevPage = pageNum - 1; nextPage = pageNum + 1; } buttons = llList2List(DIALOG_CHOICES, firstChoice, lastChoice); } // FYI, this puts the navigation button row first, so it is always at the bottom of the dialog list buttons01 = llList2List(buttons, 0, 2); list buttons02 = llList2List(buttons, 3, 5); list buttons03 = llList2List(buttons, 6, 8); list buttons04; if (OnePage == "Yes") { buttons04 = llList2List(buttons, 9, 11); } buttons = buttons04 + buttons03 + buttons02 + buttons01; if (OnePage == "Yes") { buttons = [DIALOG_DONE_BTN, DIALOG_BACK_BTN] + buttons; //omit DIALOG_BACK_BTN in line above if not offering } else { buttons = [ PREV_PG_DIALOG_PREFIX + (string) prevPage, DIALOG_BACK_BTN, NEXT_PG_DIALOG_PREFIX + (string) nextPage, DIALOG_DONE_BTN ] + buttons; //omit DIALOG_BACK_BTN in line above if not offering } llDialog(ID, "Page " + (string) pageNum + "\nChoose one:", buttons, menuChannel); } CancelListen() { llListenRemove(listen_id); } initAnim() //Call this when you want to change something in the texture animation. { integer effectBits; integer i; for (i = 0; i < llGetListLength(effects); i++) { effectBits = (effectBits | llList2Integer(effects, i)); } integer params = (effectBits | movement); llSetTextureAnim(ANIM_ON | params, face, sideX, sideY, start, length, speed); } fetch(string texture) { integer i; integer j = llGetInventoryNumber(INVENTORY_TEXTURE); for (i = 0; i < j; i++) { string myTexture = llGetInventoryName(INVENTORY_TEXTURE, i); list data = llParseString2List(myTexture, [";"], []); string name = llList2String(data, 0); if (name == texture) { string X = llList2String(data, 1); string Y = llList2String(data, 2); string Z = llList2String(data, 3); sideX = (integer) X; sideY = (integer) Y; speed = (float) Z; //llOwnerSay("Name=" + myTexture + " X=" + X + " Y=" + Y + " Z = " + (string) Z); if (speed) { llSetTexture(myTexture, SIDE); initAnim(); } } } } // Make a list of all bare names for the dialog list fetchAll() { list choices = []; integer i; integer j = llGetInventoryNumber(INVENTORY_TEXTURE); for (i = 0; i < j; i++) { string texture = llGetInventoryName(INVENTORY_TEXTURE, i); list data = llParseString2List(texture, [";"], []); choices += llList2String(data, 0); } return choices; } default { state_entry() { } touch_start(integer who) { { pageNum = 1; DIALOG_CHOICES = fetchAll(); giveDialog(llDetectedKey(0), pageNum); } } listen(integer channel, string name, key id, string message) { integer where; if (message == DIALOG_DONE_BTN) { CancelListen(); return; } else if (message == DIALOG_BACK_BTN) { pageNum = 1; DIALOG_CHOICES = fetchAll(); giveDialog(llDetectedKey(0), pageNum); } else if (llSubStringIndex(message, PREV_PG_DIALOG_PREFIX) == 0) { pageNum = (integer) llGetSubString(message, llStringLength(PREV_PG_DIALOG_PREFIX), -1); giveDialog(llDetectedKey(0), pageNum); } else if (llSubStringIndex(message, NEXT_PG_DIALOG_PREFIX) == 0) { pageNum = (integer) llGetSubString(message, llStringLength(NEXT_PG_DIALOG_PREFIX), -1); giveDialog(llDetectedKey(0), pageNum); } else { //this is the section where you do stuff where = llListFindList(fetchAll(), [message]); if (where >= 0) { fetch(message); giveDialog(llDetectedKey(0), pageNum); } // add more buttons here } } }
-
Do you think it will be enough to indicate a rotation of 90 degrees and an offset of half a meter along the axes X and Y for a one meter wide door using SLPPF? for the simplest door script?
-
18 hours ago, Rolig Loon said:
Start by reviewing the basics in the sticky thread on door scripting at the top of this forum.
Thank you! very good topic! So I read it, but stuck on PRIM_ROT_LOCAL. I just can’t see what this vector is (< 1,0,0 > etc...) and how to express through it a rotation of 90 degrees along the z axis? It’s clear with PRIM_POS_LOCAL, it is expressed in meters...
-
Hello dear scripters! How to create the simplest swinging 'no hinge' door script? I can certainly not reinvent the wheel and take it ready, but I want to understand how it works.
-
Thank you all very much! Now I have so many options!
-
1 minute ago, Mollymews said:
multiply 0.6 by toggle
toggle = -toggle
<toggle * 0.6, 0.0, 0.0>
Genius! Thanks!
-
@KT Kingsley @Ruthven Ravenhurst
Thank you so much! You already helped me a lot! But what if the value of X is not 1 but 0.6 for example?
-
Hello! I made such a toggle and I need to simplify or maybe get rid of a toggle at all, because the only change here is a " - " symbol. I mean in "mathematical way".
Is this possible and how?
touch_start(integer total_number) { llPlaySound(DOOR_SOUND, VOL); toggle = !toggle; if (toggle) { llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POS_LOCAL, llList2Vector(llGetLinkPrimitiveParams(LINK_THIS, [PRIM_POS_LOCAL]), 0) + < 1.0, 0.0, 0.0 >]); } else { llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POS_LOCAL, llList2Vector(llGetLinkPrimitiveParams(LINK_THIS, [PRIM_POS_LOCAL]), 0) + < -1.0, 0.0, 0.0 >]); } }
-
On 5/14/2020 at 11:59 PM, Beth Macbain said:
LL is a very progressive company
Too progressive IMO...
I imagine women boxers fighting topless, if that goes on...
Why then you wear clothes at all? Go naked! I dont mind. lol
- 1
-
Hello! Please recommend a manufacturer of full permission walking animations that I can resell.
Edit: as part of my creation and no transfer of course.
-
1 hour ago, Wulfie Reanimator said:
It's technically possible but incredibly fragile with LSL alone. If you want a viable solution that doesn't break the next time the grid goes down, you're going to need an external server.
Thanks! So I made two scripts for one region, but how to make it work on the whole grid? let it be fragile
// Transmitter integer gListener; default { state_entry() { llRegionSay(-1234567, ""); } touch_start(integer total_number) { integer channel = -13572468; gListener = llListen( channel, "", "", ""); llTextBox(llDetectedKey(0), "Some info text for the top of the window...", channel); } listen(integer channel, string name, key id, string msg) { llListenRemove(gListener); llRegionSay(-1234567, "You wrote: " + msg); } }
// Receiver default { state_entry() { llListen(-1234567, "", "", ""); } listen(integer channel, string name, key id, string msg) { llSay(0, "You wrote: " + msg); } }
-
27 minutes ago, Rolig Loon said:
Use llRegionSay on a private channel that all of your HUDs use.
Thank you! But isnt llRegionSay can be heard on 256 m x 256 m only? Will it be heard all over grid?
-
Hello! I'm trying to make a transmitter / receiver HUD. I put on a transmitter HUD and send a message, and everyone who wearing at that moment receiver HUD - receives this message from me all over the grid in any form ( IM or local chat - doesnt matter ). Is it possible and how to do it?
-
I mean, since landlords are doing this, it makes a profit and land costs them less?
Will LL deal with anyone or do they have to meet certain criteria? are there any requirements?
And most importantly, how is the process carried out?
-
40 minutes ago, Sylvia Tamalyn said:
Landlords either buy the land from other residents (Mainland), or they buy it directly from LL (if they have a private estate).
Here's the knowledge base page regarding Linden Homes:
Thanks! But what is Mainland? And why not just buy land directly from LL? I understand it will be cheaper? and will they be selling it to everyone?
-
Hello! I, as an eternal noob, very interested in the question of land in the SL. I know that it can be rented, but
where do those who rent out take the land from? where does it originally come from?And what is linden home?
( or please give a link where I can read about it ).
Security orb eject to special point?
in LSL Scripting
Posted
I assumed so, thanks a lot!