1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  3. Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
    Information ausblenden

Rentbox möchte nicht den Countdown starten

Dieses Thema im Forum "Scripting" wurde erstellt von Feanta, 16. Mai 2016.

Schlagworte:
  1. Feanta

    Feanta Neuer Nutzer

    Beiträge:
    1
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    Hi Leute,

    ich weiss nun echt nicht mehr was ich machen soll, meine Rentbox möchte nicht nach bezahlung den Countdown starten und weiss leider nicht mehr weiter. Teste es zur Zeit für eine Woche, was ich bemerkt habe ist das er vollkommen den Timer ingoriert. Darum hab ich dort auch Testbefehle drin.

    Hoffe mir kann wer helfen.

    Code:
    //Prices
    list prices = [1250, 2500, 3750, 5000];
    integer price;
    
    //menuenames and Dialogbox
    list buttons = ["1 Week", "2 Weeks", "3 Weeks", "4 Weeks"];
    string dialogInfo = "\nPlease make a choice.";
    
    
    key ToucherID;
    
    //integers for listener
    integer dialogChannel;
    integer listenHandle;
    integer index;
    
    //Timeformat
    string object = "Object"; // Name of object in inventory
    vector relativePosOffset = <2.0, 0.0, 1.0>; // "Forward" and a little "above" this prim
    vector relativeVel = <1.0, 0.0, 0.0>; // Traveling in this prim's "forward" direction at 1m/s
    rotation relativeRot = <0.707107, 0.0, 0.0, 0.707107>; // Rotated 90 degrees on the x-axis compared to this prim
    integer startParam = 10;
    string zero_pad(integer number)
    {
       if (number < 10) return "0" + (string)number;
       else return (string)number;
    }
    
    string format_time(integer seconds)
    {
    integer days = llFloor(seconds / 86400);
    seconds -= days * 86400;
       
    integer hours = llFloor(seconds / 3600);
    seconds -= hours * 3600;
    integer minutes = llFloor(seconds / 60);
    seconds -= minutes * 60;
    return (string)days + "  T " + zero_pad(hours) + "  Std  " + zero_pad(minutes) + "  Min " + zero_pad(seconds) + "  Sek" ;
    }
    
    //classes
    integer gCountdown    = 0;
    
    integer bitTimer1 = FALSE;
    integer active = FALSE;
    
    //Weeks
    integer week01  = 604800;
    integer week02 = 1209600;
    integer week03 = 1814400;
    integer week04 = 2419200;
    integer maxweeks = 7257600;
    default
    {
       
        on_rez(integer start_param)
    
    
        {
       
        llSetPayPrice(PAY_HIDE, [PAY_HIDE ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
    
        }
    
    state_entry()
        {
               llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
              dialogChannel = -1 - (integer)("0x" + llGetSubString( (string)llGetKey(), -7, -1) );
             llSetText(format_time(--gCountdown), <0.0, 1.0, 0.0>, 1.0);
        }
       
    
    touch_start(integer num_detected)
        {
            ToucherID = llDetectedKey(0);
            llListenRemove(listenHandle);
            listenHandle = llListen(dialogChannel, "", ToucherID, "");
            llDialog(ToucherID, dialogInfo, buttons, dialogChannel);
            llSetTimerEvent(60.0); // Here we set a time limit for responses
        }
       
    listen(integer channel, string name, key id, string message)
        {
         llListenRemove(listenHandle);
            //  stop timer since the menu was clicked
          llSetTimerEvent(0);
            if (message == "1 Week" && bitTimer1 == FALSE)
            {
             llSetText(format_time(week01), <0.0, 1.0, 0.0>, 1.0);
        index = llListFindList(buttons, [message]);//look in the list of buttons for the message index
              if (index >= 0)//if the message exists in the button list
                {
                     price = llList2Integer(prices, index);//use the extracted index to get the intended price from the list of prices
                     llSay(0,"Pay Price Set To " + (string)price+" for "+message+ ". Please right-click and pay" );
                     llSetPayPrice(PAY_HIDE, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);//set the intended price
           
                 }       
         
            }
           
            else if (message == "2 Weeks")
         {
             llSetText(format_time(week02), <0.0, 1.0, 0.0>, 1.0);
             index = llListFindList(buttons, [message]);//look in the list of buttons for the message index
            if (index >= 0)//if the message exists in the button list
            {
                price = llList2Integer(prices, index);//use the extracted index to get the intended price from the list of prices
                llSay(0,"Pay Price Set To " + (string)price+" for "+message+ ". Please right-click and pay" );
                llSetPayPrice(PAY_HIDE, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);//set the intended price
    
            }       
         }
           
              else if (message == "3 Weeks")
         {
              llSetText(format_time(week03), <0.0, 1.0, 0.0>, 1.0);
                 
             index = llListFindList(buttons, [message]);//look in the list of buttons for the message index
            if (index >= 0)//if the message exists in the button list
            {
                price = llList2Integer(prices, index);//use the extracted index to get the intended price from the list of prices
                llSay(0,"Pay Price Set To " + (string)price+" for "+message+ ". Please right-click and pay" );
                llSetPayPrice(PAY_HIDE, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);//set the intended price
            }       
          }
           
              else if (message == "4 Weeks")
         {
              llSetText(format_time(week04), <0.0, 1.0, 0.0>, 1.0);
              index = llListFindList(buttons, [message]);//look in the list of buttons for the message index
            if (index >= 0)//if the message exists in the button list
            {
                price = llList2Integer(prices, index);//use the extracted index to get the intended price from the list of prices
                llSay(0,"Pay Price Set To " + (string)price+" for "+message+ ". Please right-click and pay" );
                llSetPayPrice(PAY_HIDE, [price ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);//set the intended price
            }       
         }
                   
            else
            {
                // do nothing
            }
    }
        money(key payer, integer Amount) // acitvate Paydialog and calculate price
    {
        integer test = llListFindList(prices, [Amount]);//checks to make sure amount received is valid
        if(test >= 0 && bitTimer1 == FALSE)
        {
            llInstantMessage(payer, "You have paid for " + llList2String(buttons, test));
            active = TRUE;//set to active so that future touches are not used
            bitTimer1 = TRUE;
        }
        else
        {
            llInstantMessage(payer, "Amount invalid, please try again.");//If the amount paid isn't in the list of prices, tells avatar, and refunds them
            llGiveMoney(payer, Amount);
        }
        llSetPayPrice(PAY_HIDE, [PAY_HIDE ,PAY_HIDE, PAY_HIDE, PAY_HIDE]);
    }
    
    
        timer()
        {
       
    if (bitTimer1 = TRUE)
            {
             llSetTimerEvent(1.0);
            llSay(0,"Dies ist ein unglaublich nutzloses Programm." );
             gCountdown = gCountdown -1;
                   // llSetText(format_time(--gCountdown), <0.0, 1.0, 0.0>, 1.0);
                   llSetText("Hallo", <0.0, 1.0, 0.0>, 1.0); //test
                if ( gCountdown <= 0)
                {
                    llOwnerSay("Timer1 is finish");
                    bitTimer1 = FALSE;
                    llSetText(format_time(--gCountdown), <0.0, 1.0, 0.0>, 1.0);
                }
                  llSetText(format_time(--gCountdown), <0.0, 1.0, 0.0>, 1.0);
            }
         
        }
    
    }
     
    Zuletzt bearbeitet: 16. Mai 2016
  2. Archon Short

    Archon Short Administrator Mitarbeiter

    Beiträge:
    5.185
    Zustimmungen:
    756
    Punkte für Erfolge:
    124
    Puh, das Ding ist ja eher seltsam.
    Wie wäre es das Ding einfach mal neu zu scripten?

    Erstmal 2 States, wobei der aktive State erst nach Gewährung der Debit Permission gestartet wird.
    Die möglichen Zahlungen für die Zeiträume ohne PAY_HIDE als Liste im SetPayPrice.
    Bei Money eine Abfrage des Betrages und eine Anrechnung auf die Mietzeit.
    llSetTimerEvent(0) komplett raus lassen, zumindest wenn weiterhin regelmäßig die angezeigte Mietzeit aktualisiert werden soll.
    Aktuellen Mieter als Key und Namensstring zwischenspeichern und bei Fremdbezahlung nochmal abfragen, ob für den Mieter der Mietzeitraum verlängert werden soll.
    - Wenn nicht, dann Rückzahlung des Betrages an den Bezahler.
    So würde sich auch der Listener fast erledigen, da er nur ein JA oder NEIN als Text empfangen müsste.
    Als Zeit dann die Unixtime nutzen.


    Ich bin leider erst morgen oder übermorgen wieder richtig anwesend, aber hier werden sicher noch andere helfen können.