Jump to content

Darkie Minotaur

Resident
  • Posts

    1,663
  • Joined

  • Last visited

Everything posted by Darkie Minotaur

  1. Amethyst, I think points in the right direction. Instead of using a vanilla SL group, set up a database that stores the 'group' members. The database can keep track of the payments and the members can be notified, if their montkly payment is due. If that is a path that you could follow depends on what you want to do with group membership - because if you do what i proposed, this would not affect any SL group features. So it would be good to know, what 'group membership' in this case really means or which aspects of SL you want to use. If it's just the right to get certain items or information, this can be done easily without SL groups. Other things cannot.
  2. I completely agree with you - there's no 100% waterproof way. But using what you describe (and I had in mind) is still way better than to rely on peple witing their names correctly or making a new nc.
  3. this is a completely different question than the original one - but I would never use any of these methods to map notecards to their 'donators'. The only decently reliable way is to track and store who dropped which card.
  4. The second paranmeter of llGetInventoryName would be the position of the notecard in the list of all notecatds in the inventory, not the name. The function lets you get the name. You use it e.g. given, to check if a notecard with the given name is present: touch_start(integer total_number) { avaname = llDetectedName(0); integer i = 0; for (; i <llGetInventoryNumber(INVENTORY_NOTECARD); i++) { if (llGetInventoryName(INVENTORY_NOTECARD, i) == avaname) { //do something } } }} Btw. - just use llDetectedName with out the llKey2Name detour.
  5. I don't really understand what your question is and what exactly you need help with. Both is possible - use a channel and make the object to its owner only for setting the pwd or use a nc.
  6. I just rushed over the myriads of code you posted (next time, use the little code folder sysmbol to keep it more readable) - but as far as I can see, the problem is the following line (at least, that's one thing) Dialog(llDetectedKey(0), MENU1); link_message does not know llDetectKey. Pass the key from the touch event throug a parameter of llMessageLinked to the event as id and use id instead of llDetectedKey
  7. Keysare teated like strings in that respect - the list would look like ["00000000-0000-0000-0000-000000000000", "11111111-1111-1111-1111-111111111111"]
  8. I moddes Rolig's script into a multi-split vendor. You can now specify as many splits as you want using the two lists at the top of the script. I also added a refund, if the wrong amount is payed. It's untested. // Give Inventory List with Split payout -- Rolig Loon -- November 2010//Tweaked into multi split by Dakie Minotaur, July 2012// OWNER: Specify each of the following parametersinteger gPrice = 1000; // Price of your itemlist gSplitKeys= []; // list of UUIDs of the persons to whom you are giving a splitlist gSplitPct = []; // list of percentages of the splits (0.0 to 1.0); each percentsge corresponds to a person at the same position in the list//global variables not to be touchedinteger giSplitOn;default{ state_entry() { //added by DM check the persentages and the list of keys if (llGetListLength(gSplitKeys)) { giSplitOn = 1; if (llGetListLength(gSplitKeys) != llGetListLength(gSplitPct)) { llOwnerSay("The number of receivers of a split and the number of percentages " + "do not correspond. Splitting will be turned of."); giSplitOn = 0; } else { integer i; float splitsSum; for (i = 0; i < llGetListLength(gSplitPct); i++) { splitsSum += llList2Float(gSplitPct, i); } if (splitsSum > 1.0) { llOwnerSay("The total of the splits is greater than 1. Splitting will be turned of."); giSplitOn = 0; } } } if (giSplitOn) { llRequestPermissions(llGetOwner(),PERMISSION_DEBIT); } else { state purchase; } } run_time_permissions(integer perm) { if (perm & PERMISSION_DEBIT) { state purchase; } } changed(integer change) { if(change & CHANGED_INVENTORY) { llResetScript(); } }}state purchase{ state_entry() { llSetPayPrice(PAY_HIDE, [gPrice,PAY_HIDE,PAY_HIDE,PAY_HIDE]); llSetClickAction(CLICK_ACTION_PAY); } changed(integer change) { if(change & CHANGED_INVENTORY) { llResetScript(); } } money (key id, integer amount) { if (amount == gPrice) { list inventory; integer num = llGetInventoryNumber(INVENTORY_ALL); string script = llGetScriptName(); integer i = 0; for (; i < num; ++i) { string name = llGetInventoryName(INVENTORY_ALL, i); if(name != script) { if(llGetInventoryPermMask(name, MASK_OWNER) & PERM_COPY) { inventory += name; } else { llSay(0, "Don't have permissions to give you \""+name+"\"."); } } } if (llGetListLength(inventory) >= 1) { llGiveInventoryList(id, llGetObjectName(), inventory); llInstantMessage(id,"Thank you for your purchase. Your new items are now in your inventory in a folder named " +llGetObjectName()); } if (giSplitOn) { for (i = 0; i < llGetListLength(gSplitKeys); i++) { integer Payout = (integer) (amount*llList2Float(gSplitPct, i)); llGiveMoney(llList2Key(gSplitKeys, i),Payout); } } } else { llGiveMoney(id,amount); llInstantMessage(id,"The amount payed does not equal the price of the merchandise (" + (string)gPrice + " L$)"); } }}
  9. It is a server error. What is strange though, you shouldn't be getting a 104 in the first place. Usually, it indicates some kind of internenal error in the configuration of the server, as far as I remember.
  10. Sinnce there are functions that let you detect, where your prim has been touched, you can employ these to let your HUD make different things deoending on where it has been touched. These functuons I have in mind are explained here and here As for your diffenent scrits, you van keep them separately and make a new script just for detecting touches on your HUD and dispatching a link message to the script that is required - or you can do all the work in one big script. It's to a large extent a matter of your taste.
  11. Freya is quiute right with what shes says - just let's structure it a little more: Use the proper HTTP Method - i.e.: If you want to use POST, put the variable names and their keys in the body - else put them at the end pf the URL. In PHP, use the corresponding array (i.e. $_POST ot $_GET) Use the variables properly - the name of an item in an array goes in '' or "" as well: $_POST['key'] The region and the ownername, you don't have to send to php throug POST or GET at all - the values are in the HTTP header anyway We can't really see all you have in your variables - but I have the strange feeling, that some problems may be slumbering in there, too
  12. A flag is a usually a binary value indicating a state - like on/off where e.g. on = 1, off = 0. A constant is variable that can be used anywhere and has a fixed value - e.g. ZERO_KEY. A constant can be used as a flag - like you can use TRUE or FALSE in the on/off example default { touch_end(integer num_detected) { if (giOnOff == TRUE) { giOnOff = FALSE; } else { giOnOff = TRUE; } }}
  13. You can use an expression with the declartion if you declare the varable inside the scope of a state (i.e. in an event). You can't use an expression when declaring a global variable - only 'straight' values like: float gfFloat = 0.333;
  14. Du kannst per PayPal zahlen - dort kannst du auch ein Konto hinterlegen oder Geld einzahlen z.B. per Überweisung
  15. Well, as far as the 'distribution' is concerened, if you have the neccessary permissions for the textures, you don't need top distribute them to the different presentation objects. You can use llSetTexture with the UUIDs as well - and - given the proper permissions - these textures just have to be somewhere in SL. Si, insted of dropping the actual textures, you could simply dopr a list with the UUIDs that the box reads and says to the presentation objects. If you like to read the UUIDs from the textures, use LlGetInetoryKey
  16. I don't know of a tutorial - but once you understand LSL and PHP which you can study on their own, it'e pretty simple to combine them. There are a zillion PHP tutorials out there - just google. For LSL, if you know the basics of scripting/programming, the wiki will be your friend. There are very simole examples of how you call a php script using lsl - like this one. You can also look at the silo (towards the end of the page) and the SLDB which are implementations of databeses in PHP for use with LSL
  17. Where is the scripting related issue? You should move this discussion into General.
  18. if you have an else if, you need to have an if. But let's look at your script? Why do you need an ig here at all? TOGGLE is set to true when the thinggy gets touched only - the same is true for the timer llSetTimer - so, if the the timer event is triggered, TOGGLE has to be true! So leave it out. And you don't relly need to reset your script at the end it seems like you love to wear a belt and suspenders (or braces (BE)) integer Toggle = FALSE;default{ touch_start(integer num_detected) { if (Toggle == FALSE) { Toggle= TRUE; llSetTimerEvent(5); } } timer() { llSleep(3.0); llSetPos(llGetPos()+<0,-5,0>); llSleep(3.0); llSetPos(llGetPos()+<5,0,0>); llSleep(3.0); llSetPos(llGetPos()+<0,5,0>); llSleep(3.0); llSetPos(llGetPos()+<-5,0,0>); Toggle= FALSE; llSetTimerEvent(0);}
  19. If you indented your code properly and used a decent editor, you would have spotted what's wrong - the if (...) is missing and your curly brackets need some fine tuning integer Toggle = FALSE;default{ touch_start(integer num_detected) { if (Toggle == FALSE) { Toggle= TRUE; llSetTimerEvent(5); } } timer() { llSleep(3.0); llSetPos(llGetPos()+<0,-5,0>); llSleep(3.0); llSetPos(llGetPos()+<5,0,0>); llSleep(3.0); llSetPos(llGetPos()+<0,5,0>); llSleep(3.0); llSetPos(llGetPos()+<-5,0,0>); } } else if (Toggle == TRUE) { Toggle= FALSE; llResetScript(); }} ETA: There are still some oddities which, hoever don't keep the script from compiling and running
  20. I had a similar idea - I would have suggested to set an object's name an then check for "??"
  21. You got to update the Sit Target - you'll find an example in the wiki here
  22. The steps you describe are most likely exactly what you have to do. To run a batch file though a c# programm would be easy - something like: System.Diagnostics.Process.Start(@"C:\mybatchflie.bat"); as far as the little http-call-listener is concerned - that shouldn't be much harder to do. Just google for examples and libraries - I'm sure. you'll find tons of them. However - you issue is not a scripting issue - but a windows programming issue - so looking for a forum focussed on this seems more promising to me then asking in a LSL forum.
  23. The simplest way to do it without much calculation would be to work with llGetUnixTime - if you take the start and the end time and substract them, you'll simple get the time inbetween in seconds which you can easily convert into hh:mm:ss if you want to.
  24. This group is for asking for scripts. It's for discussing scripting issues - you should move your request to either the Wanted or the Inworld Employment forum.
×
×
  • Create New...