Jump to content

Right Click Pay Options - I'm so confused


Rory Huntsman
 Share

You are about to reply to a thread that has been inactive for 544 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hey,

I am not a creator or anything and have tried looking through the forums but can't seem to find the answer for the script I have in a sploder.

I want to change the pay options from 1, 5, 10, 20 to 20, 40, 60, 80 and suggested 100 (if that's possible).  It might have been a long week but I can't see where to change it.... would someone mind giving a hand please?

Thank you in advance

Rory

list entrantsKey = [];
integer pot = 0;
float ownersCut = 10;
integer amountLimit = 5;
float TimeLimit = 300;
integer entrantsCount = 0;
integer flag = 0;
integer i;
integer result = 0;
string Text = "";
key chave;
integer amount;
integer min_pay = 0; //minimum amount to pay ppl. Exemple, if you change this value to 2, everyone will receive at least 2 L$

string gName = "*Config";
integer gLine = 0;        // current line number
key gQueryID; // id used to identify dataserver queries
string teste = "";

integer RandInt(integer lower, integer higher) {
    integer Range = higher - lower;
    integer Result = llFloor(llFrand(Range + 1)) + lower;
    return Result;
}


MakeParticles()//This is the function that actually starts the particle system.
{     
    llParticleSystem([                                                         //KPSv1.0  
        PSYS_PART_FLAGS , 0 //Comment out any of the following masks to deactivate them
    | PSYS_PART_INTERP_COLOR_MASK       //Colors fade from start to end
    | PSYS_PART_INTERP_SCALE_MASK       //Scale fades from beginning to end
    | PSYS_PART_FOLLOW_VELOCITY_MASK    //Particles are created at the velocity of the emitter
    | PSYS_PART_EMISSIVE_MASK           //Particles are self-lit (glow)
    
    ,PSYS_SRC_PATTERN   
    ,PSYS_SRC_PATTERN_EXPLODE
    ,PSYS_SRC_TARGET_KEY,        llGetOwner()
    ,PSYS_SRC_TEXTURE,           "f61e64f1-3608-07d4-9304-84f8761afa42"     //UUID of the desired particle texture  
    ,PSYS_PART_MAX_AGE,          10.5                //Lifetime, in seconds, that a particle lasts
    ,PSYS_SRC_BURST_RATE,        .5            //How long, in seconds, between each emission
    ,PSYS_SRC_BURST_PART_COUNT,  40       //Number of particles per emission
    ,PSYS_SRC_BURST_RADIUS,      3.0                //Radius of emission
    ,PSYS_SRC_ACCEL,             <1.0,1.0,0.0>      //Acceleration of particles each second
    ,PSYS_PART_START_ALPHA,      1.0       //Starting transparency, 1 is opaque, 0 is transparent.
    ,PSYS_PART_END_ALPHA,        0.0                //Ending transparency
    ,PSYS_PART_START_SCALE,      <.200,.200,.200>      //Starting particle size
    ,PSYS_PART_END_SCALE,        <0.400,0.400,0.400>      //Ending particle size, if INTERP_SCALE_MASK is on
    ,PSYS_SRC_OMEGA,             <1.0,0.0,0.0>       //Rotation of ANGLE patterns, similar to llTargetOmega()
            ]);
}


start()
{
    llSetTimerEvent(0);
    entrantsKey = [];
    result = 0;
    entrantsCount = 0;
    flag = 0;
    llParticleSystem([]);
    Text = "Pay the sploder to begin the countdown! (minimun L$ "+ (string)amountLimit +")";
    llSetText(Text, <0, 1.0, 0>,  1); 
}

default
{
    
    on_rez(integer num)
    {
        llResetScript();
    }
    
    state_entry()
    {
        gQueryID = llGetNotecardLine(gName, gLine);
        //start();
        llListen(7, "", llGetOwner(), "");
        llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
    }
    

    dataserver(key query_id, string data) 
    {      
        if (query_id == gQueryID) 
        {
            if (data != EOF) 
            {    // not at the end of the notecard 
                
                if (teste == "ownercut")
                ownersCut = (integer)data;
                if (teste == "minimumpay")
                amountLimit = (integer)data;
                if (teste == "timelimit")
                TimeLimit = (float)data;             
                   
                if (llToLower(data) == "[ownercut]")  
                {
                    ++gLine;
                    gQueryID = llGetNotecardLine(gName, gLine);    // request next line
                    teste = "ownercut";   
                }
                else if (llToLower(data)== "[minimumpay]") 
                {
                    ++gLine;
                    gQueryID = llGetNotecardLine(gName, gLine);    // request next line 
                    teste = "minimumpay";   
                } 
                else if (llToLower(data) == "[timelimit]") 
                {
                    ++gLine;
                    gQueryID = llGetNotecardLine(gName, gLine);    // request next line 
                    teste = "timelimit";   
                }                              
                else 
                {
                    ++gLine;                // increase line count
                    gQueryID = llGetNotecardLine(gName, gLine);    // request next line
                    teste = "";
                }
            }
            else start();
        }
    }  
    
    
    
    money(key giver, integer amount) 
    {
        if (amount < amountLimit)
        {
            llSay(0, "The minimum amount is L$"+ (string)amountLimit+".");
            llGiveMoney(giver,amount);
        }
        else
        {        
            if (llListFindList(entrantsKey, [giver]) == -1)        
                entrantsKey += giver;
            entrantsCount = llGetListLength(entrantsKey);
            pot += amount; 
            
            llSay(0, llKey2Name(giver) + " adds L$" + (string)amount + " to the SPLODER. Current pot is L$"+ (string)pot +".");
            

            
            if (entrantsCount >= 5)
            {
                llSetText("Ready to explode!!! Current pot is L$ "+ (string)pot, <0, 1.0, 0>,  1);
                if (flag == 0)
                {
                    llSay(0, "SPLODER'S COUNTDOWN BEGINS!");
                    llSay(0, (string)(llRound(TimeLimit)) + " seconds before it explodes!!!");
                    llSetText("Ready to explode!!! Current pot is L$ "+ (string)pot, <0, 1.0, 0>,  1);
                    llSetTimerEvent(TimeLimit);
                    flag = 1;
                }
                    
            }
            else
            {
            string message = ((string)(5 - entrantsCount)) +" more participants needed to begin countdown!"; 
            llSay(0, message);
            llSetText(Text + "\n" + message, <0, 1.0, 0>,  1);
            }
        }        
        
    }
    
    timer()
    {            
        for (i=9; i > 0; i--)
        {
            llSay(0, "Exploding in "+ (string)i);
            llSleep(1.0);
        }

        list payment = [];
        integer cut_pot = 0;
        float cut = 0;        
        cut = ownersCut/100;
        cut = cut * pot;   
        cut_pot = pot - (integer)cut;            

        
        for (i=0; i< entrantsCount; i++) 
        {
            payment += min_pay;
            cut_pot -= min_pay;                                                       
        }
            
        integer j=0;
        integer value = 0;
        
        while (cut_pot > 0)
        {            
            j = RandInt(0, (entrantsCount - 1));
            integer rand;
            rand = RandInt(1, cut_pot);
            value = ((integer)llList2String(payment, j));
            value += rand;            
            //llOwnerSay("value: " + (string)value + "  j:" + (string)j); //just for debugging
            payment = llListReplaceList(payment, [value], j, j);            
            cut_pot -= rand;                               
        }
            
        //pot = cut_pot;        
        pot = 0;

        
        MakeParticles(); 
        
        for (i=0; i< entrantsCount; i++) 
        {             
            llSleep(0.5);
            result = (integer)llList2String(payment, i);    
            llSay(0, llKey2Name((key)llList2String(entrantsKey, i)) + " just won L$" + (string)result +" from the sploder!"); 
            llGiveMoney((key)llList2String(entrantsKey, i), result);                                 
        } 
        
        llSleep(3.0);
        start();   
    }
    
    
    no_sensor()
    {
        pot += result;
        llSay(0, llKey2Name((key)llList2String(entrantsKey, i)) + " won nothing for being out of range!");        
    }    
    
    listen( integer channel, string name, key id, string message )
    {
        if (channel == 7)
        {
            if (llToLower(message) == "reset")
            {
                llResetScript();
                //gQueryID = llGetNotecardLine(gName, gLine);
                //start();                    
            }    
        }    
    }    
}

Link to comment
Share on other sites

Ignoring the fact that this kind of a sploder is probably against the SL Terms of Service to use these days (it looks identical to the scripts used back before that was the case, but gambling hasn't been allowed in a long time anymore)... the script just never sets any pay prices and falls back on the defaults.

Call https://wiki.secondlife.com/wiki/LlSetPayPrice in the start() function or default state_entry() event.

  • Like 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 544 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...