Script de rentbox pour partager à 2

Répondre
Partager Rechercher
Bonsoir à tous, excusez-moi mais j'ai actuellement un problème avec un script. Je viens d'acheter une rental box mais je suis associé avec une personne et nous aimerions donc partager 50 / 50 l'argent récolté grâce à la rental box. Si quelqu'un peut m'aider, voici son script :

Code:
list splitwith;
list splitname;
string ownername;
integer not_registered = TRUE;
vector original_location;
vector original_scale;
integer objects = 50; // objects
integer price = 300; // price
integer weeks = 1; // weaks
vector offset = <0, 0, 2>;
integer mature = 0;
string rentor;
string rentorkey;
integer rented = FALSE;
string rentperiod;
integer numListen;
integer randchannel;
integer editmode;
integer stopper;
string daterented;
integer rentedweeks;
integer timerevent;

default
{
    on_rez(integer change)
    {
    llInstantMessage(llGetOwner(),"for help click item then select help from menu");
        llSetTexture("rentit", ALL_SIDES);
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
        llListen(0,"","","");
        randchannel = (integer)llFrand(10000000);
        llListen(randchannel,"","","");
        editmode = 0;
        timerevent = 0;
        rented == FALSE;
        }
    listen(integer c, string n, key id, string m)
    {
        stopper = 0;
        string objectname;
        objectname = llGetObjectName();
        if (m == "Vacent" && c == randchannel && id == llGetOwner() && rented == TRUE)
        {
            llSetTexture("rentit", ALL_SIDES);
            llSetPos(original_location);
            llSetScale(original_scale);   
            llListenRemove(numListen);
            numListen = llListen(0, "", "", "" );  
            rentperiod = "";
            rentor = "";
            rentorkey = NULL_KEY;
            rented = FALSE;
            daterented = "";
            rentedweeks = 0;
            timerevent = 0;
            llSetTimerEvent(0);
            llSay(0, objectname + " is vacent");
        }
        if (m == "Mature" && c == randchannel && id == llGetOwner())
        {
        mature = 1;
        llSay(0,"set to Mature Area");
        }
        if (m == "Renter info" && c == randchannel && id == llGetOwner())
        {
        integer weeks2;
    weeks2 = timerevent / 7 / 24 / 60 / 60;
    integer days;
    days = timerevent / 24 / 60 / 60 - (weeks2 * 7);
    integer hours;
    hours = timerevent / 60 / 60 - (weeks2 * 7 * 24) - (days * 24);
    integer mins;
    mins = timerevent / 60  - (weeks2 * 7 * 24 * 60) - (days * 24 * 60) - (hours * 60);
    integer seconds;
    seconds = timerevent - (weeks2 * 7 * 24 * 60 * 60) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (mins * 60);
        llInstantMessage(llGetOwner(),"Renter name: " + rentor);
        llInstantMessage(llGetOwner(),"Rented Date: " + daterented);
        llInstantMessage(llGetOwner(),"Rented Left: " + (string)weeks2 + " weeks | " + (string)days + " days | " + (string)hours + ":" + (string)mins + ";" +(string)seconds);
        if (rentedweeks >= 2)
        {
        llInstantMessage(llGetOwner(),"Rented amount: " + (string)rentedweeks + " weeks");
        }
        if (rentedweeks == 1)
        {
        llInstantMessage(llGetOwner(),"Rented amount: " + (string)rentedweeks + " week");
        }
        if (rentedweeks <= 0)
        {
        llInstantMessage(llGetOwner(),"Rented amount: N/A");
        }
        }
        if (m == "PG" && c == randchannel && id == llGetOwner())
        {
        mature = 0;
        llSay(0,"set to PG Area");  
        }
        if (m == "Status" && c == randchannel && id == llGetOwner())
        {
            string mit;
         llInstantMessage(llGetOwner(),"Prim's set to " + (string)objects);
         llInstantMessage(llGetOwner(),"Week's set to " + (string)weeks);
         llInstantMessage(llGetOwner(),"Offset set to " + (string)offset);            
         if (mature == 1)
         {
           mit = "Yes";
            }
            else
            {
              mit = "No";   
            }
         llInstantMessage(llGetOwner(),"Regen Mature: " + (string)mit);
        }
        if(m == "Edit Mode" && editmode == 0 && stopper == 0 &&  c == randchannel && id == llGetOwner())
        {
        stopper = 1;
        editmode = 1;
        llInstantMessage(llGetOwner(),"editmode on");
        }
        if(m == "Edit Mode" && editmode == 1 && stopper == 0 && c == randchannel && id == llGetOwner())
        {
        stopper = 1;
        editmode = 0;
        llInstantMessage(llGetOwner(),"editmode off");
        }
        
        if (m == "Help" && c == randchannel && id == llGetOwner())
        {
        llGiveInventory(llGetOwner(), "Rentals Help");
        }
        if (llGetSubString(m,0,8) == "set weeks" && id==llGetOwner()  && editmode == 1)
        {
        weeks = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"weeks set to " + (string)weeks);   
        }
        if (llGetSubString(m,0,10) == "set renter " && id==llGetOwner()  && editmode == 1)
        {
        rentor = llGetSubString(m,11,llStringLength(m));
        llSay(0,"renter set to " + rentor);   
        }
         if (llGetSubString(m,0,9) == "set split " && id==llGetOwner()  && editmode == 1)
        {
        key id = (key)llGetSubString(m,10,llStringLength(m));
        splitwith += id;
        splitname += llKey2Name(id);
        llSay(0,llKey2Name(id) + " added to split with list");   
        }
         if (llGetSubString(m,0,12) == "split remove " && id==llGetOwner()  && editmode == 1)
        {
        string name = llGetSubString(m,13,llStringLength(m));
        integer finddata = llListFindList(splitname,(list)name);
        if(finddata == -1)
        {
         llSay(0,"sorry " + name + " not found");   
        }else
        {
         llDeleteSubList(splitwith,finddata,finddata);
         llDeleteSubList(splitname,finddata,finddata);
         llSay(0,name +" removed from shared list");
        }
        }
        if (llGetSubString(m,0,13) == "set rentedfor " && id==llGetOwner()  && editmode == 1)
        {
        string date = llGetTimestamp();
        daterented = llGetSubString(date,8,9) + "/" + llGetSubString(date,5,6) + "/" + llGetSubString(date,0,3) + " | Time " + llGetSubString(date,11,15);
        original_scale = llGetScale();
        original_location = llGetPos();
         list renttime = llParseStringKeepNulls(llGetSubString(m,14,llStringLength(m)), [":"], []);
        integer days = llList2Integer(renttime,0);
        integer hours = llList2Integer(renttime,1);
        integer minites = llList2Integer(renttime,2);
        integer seconds = llList2Integer(renttime,3);
        integer total;
        total = (days * 24 * 60 * 60) + (hours * 60 * 60) + (minites * 60) + (seconds);
        llSetTexture("info", ALL_SIDES);
        llSetPos(original_location + offset);
        llSetScale(<0.236,0.236,0.236>);
        timerevent = total;
        llSetTimerEvent(1);
        llWhisper(0,"set to " + (string)days + " days " + (string)hours + " hours " + (string)minites + " mins " + (string)seconds + " seconds");
        rented = TRUE;     
        }
        if (llGetSubString(m,0,10) == "set offset " && id==llGetOwner()  && editmode == 1)
        {
        offset = (vector)llGetSubString(m,11,llStringLength(m));
        llSay(0,"Offset set to " + (string)offset);   
        }
        if (llGetSubString(m,0,8) == "set prims" && id==llGetOwner() && editmode == 1)
        {
        objects = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"Prims set to " + (string)objects);   
        }
        if (llGetSubString(m,0,8) == "set price" && id==llGetOwner() && editmode == 1)
        {
        price = (integer)llGetSubString(m,9,llStringLength(m));
        llSay(0,"Price set to L$" + (string)price);   
        }
        
    }
    state_entry()
    {
        editmode = 0;
        randchannel = (integer)llFrand(10000000);
        llWhisper(0, "Activating...");
        ownername = llKey2Name(llGetOwner());
        llWhisper(0, "Asking for permission from owner " + ownername + ".");        
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);        
        original_location = llGetPos();
        original_scale = llGetScale();
        llListenRemove(numListen);
        rentedweeks = 0;
        numListen = llListen(0, "", "", "" );
        llListen(randchannel,"","","");
        timerevent = 0;  
    }

    run_time_permissions(integer type)
    {
        if (type == PERMISSION_DEBIT)
        {
            ownername = llKey2Name(llGetOwner());
            llWhisper(0, "This space is now available for rent.");  
            not_registered = FALSE;
        }
    }
    
    timer() {
        timerevent--;
        if (timerevent != 0)
        {   
        }
        else
        {
        if(rentorkey != NULL_KEY)
        {
        llInstantMessage(rentorkey,"Your rental at " + llGetRegionName() + " has expired");
        }
        llSay(0,"rental expired");
        string objectname;        
        objectname = llGetObjectName();
        llSetTexture("rentit", ALL_SIDES);
        llSetPos(original_location);
        llSetScale(original_scale);        
        numListen = llListen(0, "", "", "" );  
        rentperiod = "";
        rentor = "";
        rentorkey = NULL_KEY;
        daterented = "";
        rentedweeks = 0;
        rented = FALSE;
        timerevent = 0;
        llSetTimerEvent(0);         
    }
}
    
    touch_start(integer total_number)
    {
    if(llDetectedKey(0) == llGetOwner())
    
    {
    string edit;
    if (editmode == 0)
    {
     edit = "off"; 
    }
    if (editmode == 1)
    {
     edit = "on";  
    }
    llDialog(llGetOwner(),"vender editor \n editmode is set to: " + edit,["Mature","PG","Vacent","Edit Mode","Renter info","Help","Status"],randchannel);
}
else
{
        if(rented == FALSE)
        {
        llWhisper(0, "This space is for rent. The price is $" +(string)price+ " per week. Prim limit is "+(string)objects+" prims. Obey prim limits to avoid termination of agreement. Rent is non-refundable.");
        if (mature == 1)
        {
        llWhisper(0, "Usage Restrictions:  This spot is for comercial use.  Keep within prim limits or face termination of lease.");
} else
{
llWhisper(0, "Usage Restrictions:  This spot is for comercial use.  Keep within prim limits or face termination of lease.  Keep To PG Rules as in PG Sim");
}
        
        llWhisper(0, "Right click and pay to rent this space. Minimum rental period is "+(string)weeks+" weeks, at $" +(string)(price*weeks)+". If you have any questions, please feel free to IM " + ownername + ". For Help please IM " + ownername + ".");
        }
        else 
        {
         integer weeks2;
    weeks2 = timerevent / 7 / 24 / 60 / 60;
    integer days;
    days = timerevent / 24 / 60 / 60 - (weeks2 * 7);
    integer hours;
    hours = timerevent / 60 / 60 - (weeks2 * 7 * 24) - (days * 24);
    integer mins;
    mins = timerevent / 60  - (weeks2 * 7 * 24 * 60) - (days * 24 * 60) - (hours * 60);
    integer seconds;
    seconds = timerevent - (weeks2 * 7 * 24 * 60 * 60) - (days * 24 * 60 * 60) - (hours * 60 * 60) - (mins * 60);
        llWhisper(0, "This space is occupied by " + rentor + " for " + (string)weeks2 + " weeks | " + (string)days + " days | " + (string)hours + ":" + (string)mins + ";" +(string)seconds);
        
        llWhisper(0, "Max prims is " + (string)objects + ". For help please IM " + ownername + ".");
        }
    }
    }
    
    money(key giver, integer amount)
    {
        integer amount2 = amount%price;
        integer weeks = amount/price;
        if(amount>=price*weeks && amount2==0 && rented == FALSE)
        {
            rentedweeks = amount/price;
            string date = llGetTimestamp();
            daterented = llGetSubString(date,8,9) + "/" + llGetSubString(date,5,6) + "/" + llGetSubString(date,0,3) + " | Time " + llGetSubString(date,11,15);
            original_scale = llGetScale();
            original_location = llGetPos();
            timerevent = 604800*weeks;
            //vector offset = <-2, 0, -1>;
            llWhisper(0, "Correct amount");
            rentor = llKey2Name(giver);
            rented = TRUE;
            rentperiod = (string)weeks;
            llWhisper(0, "Prim limit is "+(string)objects+" prims.");
            llWhisper(0, "Keep prim limits or risk termination of agreement.Rent is non-refundable. IM " + ownername + " with questions.");
            llWhisper(0, "Thank you for renting this space . Thank You For Purchasing "+(string)weeks+" weeks . Feel Free To Put Your stuff in now");
            llSetTexture("info", ALL_SIDES);
            llSetPos(original_location + offset);
            llSetScale(<0.236,0.236,0.236>);
            rentorkey = giver;
            llSetTimerEvent(1);
            if(splitwith != [])
            {
            integer devide = llGetListLength(splitwith) + 1;
            integer totatogive = amount/devide;    
            integer no;
            while(no < llGetListLength(splitwith))
            {
            key dest = llList2Key(splitwith,no);
            llGiveMoney(dest,totatogive);
        llInstantMessage(dest,"you have bee payed L$"+ (string)totatogive +" by " + llGetObjectName());
            no ++; 
            }
            }
        }
        else if(rented == TRUE)
        { 
            if (llKey2Name(giver) == rentor && amount>=price*weeks && amount2==0)
            {      
            timerevent += (604800*weeks);
            llSay(0, "you have incresed your rental by " + (string)weeks + " weeks");
            rentedweeks += weeks;
            if(splitwith != [])
            {
            integer devide = llGetListLength(splitwith) + 1;
            integer totatogive = amount/devide;    
            integer no;
            while(no < llGetListLength(splitwith))
            {
            key dest = llList2Key(splitwith,no);
            llGiveMoney(dest,totatogive);
        llInstantMessage(dest,"you have bee payed L$"+ (string)totatogive +" by " + llGetObjectName());
            no ++; 
            } 
            }
        }
            else
            {
             llGiveMoney(giver, amount);
             llSay(0,"sorry please check rental");
            }
        
        }
        
        else
        {
            llWhisper(0, "Minimum rental period is "+(string)weeks+" weeks, at $" +(string)(price*weeks)+ ". If you have any questions, please feel free to IM" + ownername + ".");
            llWhisper(0, "Giving money back.");
            llGiveMoney(giver, amount);
        }
    }
}
Merci beaucoup
Je ne sais pas ou tu as choppe ce script, mais il est heuu franchement heuu laid !!!

Sinon d'apres ce que j'en comprends, voici la suite des operations a effectuer:
- passe en "Edit Mode", soit par la dialog box, soit en tapant Edit Mode dans le chat. Tu devrais avoir la confirmation par un message "editmode on"
- une fois en mode edit, tu peux manipuler la liste des personnes avec qui partager (a parts egales entres toutes les personnes...pas moyen de le modifier....). Tu peux:
o ajouter une personne en chattant: set split UUID_de_la_personne_avec_qui_partager
Si tu ne sais pas ce que c'est qu'un UUID, demande moi. ATTENTION ! la personne qui est ajoutee DOIT etre presente dans la sim au moment ou tu la rajoutes, sinon ca va foirer au niveau de l'affichage de son nom et tu pouras plus l'enlever de la liste...
o enlever une personne en chattant: split remove Nom_de_la_personne
La c'est le nom de la personne (par CHarles Dupont)... Pas tres coherent mais bon...

Voila. Il n'y a pas de moyen de connaitre la liste des personnes courantes....

Sinon un conseil: si tu as plusieurs box, mets les toutes, puis place toi au milieu et crie tes ordres: elle seront toutes mise a jour en meme temps car ecoutent sur le meme canal.

Voila voila ! Bon courage !

(Si tu veux des solutions plus pro, je re conseille Apez. Ils ont un bon system qui est centralisable)
Citation :
Publié par MaevaAnatine
Si tu veux des solutions plus pro, je re conseille Apez. Ils ont un bon system qui est centralisable
Personnellement je préfère HippoRent de Hippo Technologies, la dernière version compte les prims, et un plug-in permet de tout mettre à jour via le web...

Mais un peu cher si il ne te faut qu'une boite et en anglais, alors Gregleens Merlin fait des rentbox aussi et t'expliquera tout en français.

Bises
^_^
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés