Script Tip Jar Pr group et plusieurs personnes

Répondre
Partager Rechercher
Kikoo à tous !!

Je viens vers vous car je cherche 2 scripts Tip Jar, entre autres un script qui permet de diviser les donations en plusieurs personnes, en définissant la clés ds le script...


et un qui permette de diviser les donations à toutes les personnes du group...

j'ai lu des posts déjà sur JOL mais pas de scripts.. qui puissent correspondre à ma recherche lol

Je sais je suis pénible mdr

Merki à toutes et tous par avance !!

à bientôt
Bonjour



O_O Ben ca s'achète ca, y en a dans tout les bon commerce genre Xstreet O_o sinon je peux t'envoyé ca mais en copy seulement, je donne pas ca en full.
Je suis comme Solo et Neko_Boy un peu dubitatif ...

il y a sur JOL , Xstreet et sur le net quelques dizaines de scripts sinon plus... il te suffit d'effectuer quelques recherches...

Tu devrais au moins trouver un script qui se rapproche de tes besoins ensuite si tu veux réaliser quelques adaptations on peut essayer de t'aider....
Bonsoir,

Je t'aide pour le premier script, il s'agit donc de partager le tip entre plusieurs personnes selon un pourcentage. Par contre, la clée des personnes avec qui le partage se fera doit être renseignée sur la base de donnée "w-hat.com" pour que la tipjar fonctionne. Mais en modifiant un peu le script, il doit être possible de renseigner directement les uuid's ou même grâce à une notecard.
Commentaires non traduits.

Code:
// lists for names, keys of avatar to split the money with and percentages of split.
list SplitWith = ["Prénom Nom","Prénom Nom"];   // ["etc","etc","etc"]
list SplitPercent = [0.7,0.3];          // [float,float,float] make sure it adds up to 1.0

list SplitKey;          // list with keys belonging to names, looked up on "w-hat.com"
integer length;         // number of items in lists
integer count;          // index#
key name_query;         // dataserver query for avatar name to check avatar key.
integer flag = TRUE;    // used to stop script on problem with lists.

// CARP Donation box script. Written by Angel Fluffy, with credit to :
// Keknehv Psaltery, jean cook, ama omega, nada epoch, YadNi Monde
// for their work on the "DONATION box" script upon which it was based.

string imtext = "I'm the Dancer's Donation Box! Please right click and pay me to donate, as this supports the __________ project and helps keep the place open for you!";
// this is the text sent to someone who clicks on the prim containing this script and who isn't the owner.

// first line of hover text above box (always constant)
string floaty = "__________ Donation Box\n";

// when total donated this month is less than monthlyneeded, display whatfunding_1 as the funding target,
// when it is more, display whatfunding_2. This allows you to show your donors when you have switched
// from funding your essential running costs to funding expansion.
string whatfunding_1 = "Funding : __________ \n";
string whatfunding_2 = "Funding : __________ \n";

// name of the current month
// we *could* get this automatically, but changing the month automatically isn't as easy as it seems.
// This is a change I might make in a future version.
string thismonth = "October";

// How much are we trying to raise per month?
// The script displays a countdown in SETTEXT above the prim its in, counting down until this target is reached.
// After this target is reached, the countdown disappears, being replaced with a tally.
// The goal of this is to encourage people to donate by setting a clear goal they feel they can help achieve by donating.
integer monthlyneeded = 30000;

// These two variables define the starting numbers for how much has been donated across all time, and how much this month.
// These starting numbers will have the donations the script recieves in between each reset/save added to it,
// and the result displayed in float text over the top of the script.
// The first time you start accepting donations, you should set both of the numbers below to zero.
// When saving this script, you (the object owner) should touch the donation box object,
// which will then tell you how much has been donated in total and how much has been donated this month.
// Entering this information here before saving will allow you to preserve the 'state' of the script across edits/restarts.
integer totaldonated = 0;
integer monthdonated = 0;

// these settings are like the above, but save the 'last donor' information. You can set them to "" and 0 to clear saved info.
string lastdonor = "Taffy Tinlegs";
integer lastdonated = 0;

// this interval defines how long we wait between each reminder to donate broadcast to SAY (range=20m)
integer timer_interval = 3600;

// these settings determine what the 'default' donation amounts are.
// the buttons are the 'fast pay' buttons, the 'payfield' is the default amount in the text box.
list paybuttons = [50,200,400,800];
integer payfield = 100;

// these variables should be left undefined.
string owner;
string otext;
integer mpercent;

integer updatemath() {
    float mpercentfloat = ((monthdonated * 100) / monthlyneeded);
    mpercent = (integer)mpercentfloat;

    return 1;
}

integer updatetext() {
    otext = floaty;

    if (mpercent >= 100) {
        otext += whatfunding_2;
    } else {
            otext += whatfunding_1;
    }
    if (lastdonated > 0) {
        otext += "Last donation : L$" + (string)lastdonated + " by " + lastdonor +"\n";
    }
    if (mpercent >= 100) {
        otext += "We have raised L$"+(string)(monthdonated - monthlyneeded)+" for this, beyond our basic running costs of L$"+(string)monthlyneeded+" for "+thismonth+". \n";
        //otext += "The excess will go towards giving prizes and running special events!";
    } else {
            otext += "Our donors have contributed "+(string)mpercent+"% of our basic running costs ("+(string)monthdonated+"/"+(string)monthlyneeded+") for "+thismonth+".\n";
    }
    llSetText(otext,<1,1,1>,1);
    return 1;
}

default
{
    state_entry()
    {
        llSetText("TipJar not active. \nTouch to activate.",<.984, .686, .365>,.8);
        if(flag) llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);
    }

    run_time_permissions (integer perm)
    {
        if (perm == PERMISSION_DEBIT) state init;
        else llOwnerSay("I need those permissions. Please touch me to try again.");
    }

    touch_start(integer num_detected){
        if (llDetectedKey(0) == llGetOwner()) llResetScript();
        else llSay(0,"Only the owner can activate me.");
    }

    on_rez( integer sparam )
    {
        llResetScript();
    }
}

state init
{
    state_entry()
    {
        llSetText("Initialising....",<.984, .686, .365>,1.0);
        flag = TRUE;
        length = llGetListLength(SplitWith);
        // get avatar keys from webserver at w-hat.com
        count = 0; // index# of SplitWith 
        key Key = llHTTPRequest("http://w-hat.com/name2key?terse=1&name=" + llEscapeURL(llList2String(SplitWith, count)), [], "");
    }


    http_response(key id, integer status, list metadata, string body) // get avatar keys
    {
        if (status == 200){
            SplitKey += (list)body;
            ++count;
            if (count < length){
                key Key = llHTTPRequest("http://w-hat.com/name2key?terse=1&name=" + llEscapeURL(llList2String(SplitWith, count)), [], "");
            } else {            // check lists on data integrity
                if (length != llGetListLength(SplitPercent)){   // check if lists are same length
                    llOwnerSay("Please check the lists. Each name needs a split percentage.");
                    flag = FALSE;
                } else {        // check if sum of percentages is 100% and if there's no NULL_KEY in list
                    float sum;
                    integer i;
                    for (i=0; i<length; ++i){
                        sum += llList2Float(SplitPercent,i);
                        if (llList2Key(SplitKey,i) == NULL_KEY){
                            llOwnerSay(llList2String(SplitWith,i) + "'s key is not in the database at 'w-hat.com'. \nAborting!");
                            flag = FALSE;
                        }
                    }
                    if (sum != 1){
                        llOwnerSay("Please check the lists. The percentages do not add up to 100%.");
                        flag = FALSE;
                    }
                }
                if (flag){      // check if found keys belong to respective names
                    count = 0;
                    llSetTimerEvent(30);
                    name_query = llRequestAgentData(llList2Key(SplitKey,count), DATA_NAME);
                } else state default;
            }
        } else {
            llOwnerSay("Website for Name2Key is down.\nAborting!");
            flag = FALSE;
            state default;
        }
    }

    dataserver(key queryid, string data)
    {
        if (name_query == queryid) {    // request agent data to check Name2Key
            if (data != llList2String(SplitWith,count)){
                llOwnerSay(llList2String(SplitWith,count) + "'s key does not match with name!");
                flag = FALSE;
            } else if (count < length){
                ++count;
                name_query = llRequestAgentData(llList2Key(SplitKey,count), DATA_NAME);
            }
            if (flag && count == length) {
                llSetTimerEvent(0);
                state active; // everything checks out activate tipjar
            }
        }
    }
    
    timer()
    {
        llSetTimerEvent(0);
        llOwnerSay("Something went wrong with the dataserver while looking up '" + llList2String(SplitWith,count) + "' and key '" + llList2String(SplitKey,count) + "' . \nAborting!");
        flag = FALSE;
        state default;
    }
    
    on_rez( integer sparam )
    {
        llResetScript();
    }
}

state active
{
    state_entry()
    {
        updatemath();
        updatetext();
        owner = llKey2Name( llGetOwner() );
        llSetPayPrice(payfield,paybuttons);
        llSetTimerEvent(timer_interval);
        llSay(0,"Script updated. Usually this is caused by the donation box owner updating the script.");
    }

    money(key id, integer amount)
    {
        totaldonated += amount;
        monthdonated += amount;
        lastdonor = llKey2Name(id);
        lastdonated = amount;
        updatemath();
        updatetext();
        llInstantMessage(id,"On behalf of everyone who uses this place, thank you for the donation!");
        llSay(0,(string)llKey2Name(id)+" donated L$" + (string)amount + ". Thank you very much for supporting us, it is much appreciated!" );
        // split amount among avatars in list
        integer i;
        for (i=0; i<length; ++i){
            llGiveMoney(llList2Key(SplitKey,i), llFloor(amount * llList2Float(SplitPercent,i)));
        }


    }

    touch_start(integer num_detected){
        if (llDetectedKey(0) == llGetOwner()) {
            llOwnerSay("Reporting script status, because you are recognised as the owner of this donation box.");
            llOwnerSay("Current TOTAL donations across all time: L$"+(string)totaldonated);
            llOwnerSay("Current TOTAL donations for this month: L$"+(string)monthdonated);
        } else {
                llInstantMessage(llDetectedKey(0),imtext);
        }
    }

    timer() {
        integer premainder = 100 - mpercent;
        integer aremainder = monthlyneeded - monthdonated;
        if (mpercent < 100) {
            llSay(0,"We still need to meet the last "+(string)premainder+"% of our basic costs (L$"+(string)aremainder+") this month, to pay for land tier etc. Please consider donating to help us out!");
        }
        llSetTimerEvent(timer_interval);
    }

    on_rez( integer sparam )
    {
        llResetScript();
    }
}
EDIT :

Ou plus simple...

Code:
//Generic Tip Jar 1.0 -- 03/07/06
//  by Keknehv Psaltery

integer IM = 0; integer WHISPER = 1; integer SAY = 2;

//##########################SET THESE VALUES#########################//

list suggestedTips = [25,50,100,200];   //The "Fast Pay" buttons (enter four values)
integer defaultAmount = 40;    //The default amount in the pay dialog

string amountBegin = "L$";
string amountEnd = " has been tipped so far";

string thanksBegin = "Thanks for the tip, "; // Begin + Name + End
string thanksEnd = "!";

//How the script thanks donors
integer thanksMode = WHISPER;    //Set this to IM, WHISPER, or SAY to select
                            
vector color = <0.6,0.6,0.6>;   //The color for the hover text
float alpha = 1.0;              //The transparency for the hover text

key splitKey = "f1f2d29a-210b-4b00-96d7-ab16c962a40f"; //The key of the person to split the money with
float splitPercentage = 0.0; //The percentage for the splittee

// Edit the prim's description -- this goes on the first line of the hovertext
//  e.g., the description might be "Keknehv's tip jar, please donate"

//##########################END CONFIGURATION########################//

string description;       //This will be set to whatever the Prim's Description is -- not the owner's name
//This means that you probably want to set the description to something like "Keknehv's tip jar, please donate!"

integer totalMoney = 0;     //The total amount tipped so far

updateText()    //Update the hover text. Placed here for easy modification, not speed
{
    llSetText( description + "\n" + amountBegin + (string)totalMoney + amountEnd, color, alpha );
}

default
{
    state_entry()
    {
        splitPercentage /= 100.0;
        if ( splitPercentage > 0 )
            llRequestPermissions( llGetOwner(), PERMISSION_DEBIT );
        else        //There's no need to get permissions
            state soliciting;
    }

    touch_start(integer total_number)
    {
        llRequestPermissions( llGetOwner(), PERMISSION_DEBIT );
    }
    
    run_time_permissions( integer perm )
    {
        if ( perm & PERMISSION_DEBIT )
            state soliciting;
    }
}

state soliciting //Accepting tips now...
{
    state_entry()
    {
        llSetPayPrice( defaultAmount, suggestedTips );
        description = llGetObjectDesc();
        updateText();        
    }
    
    money( key id, integer amount )
    {
        
        string donor = llKey2Name( id );
        
        totalMoney += amount;
        description = llGetObjectDesc();    //Might as well...
        updateText();
        
        if ( splitPercentage > 0 )
            llGiveMoney( splitKey, (integer)(amount * splitPercentage) );    
        
        if ( thanksMode == 0 )
            llInstantMessage( id, thanksBegin + donor + thanksEnd );
        else if ( thanksMode == 1 )
            llWhisper( 0, thanksBegin + donor + thanksEnd );
        else if ( thanksMode == 2 )
            llSay( 0, thanksBegin + donor + thanksEnd );
    }
}
pour w-hat.com c'est pas une bonne idée ce service peut s'arrêtez d'un coup et pas besoin de ca tu peux te servir des key et d'une note cartes.

De ce genre Key,Pourcent


Moi je ne lui posterai rien du tout .
Citation :
Publié par >>Neko_Boys<<<
pour w-hat.com c'est pas une bonne idée ce service peut s'arrêtez d'un coup et pas besoin de ca tu peux te servir des key et d'une note cartes.

De ce genre Key,Pourcent


Moi je ne lui posterai rien du tout .
Oui il est vrai que le système par W-Hat n'est pas très fiable car il peut comme tu le dis s'arrêter mais en modifiant quelque peu le script, elle pourra directement mettre les uuid's de ses collègues.
Puis, les scripts que je poste sont encore à modifier et à configurer.
Il est hors de question pour ma part de donner le travail tout fait.
[quote=eldodo Fierrens
Il est hors de question pour ma part de donner le travail tout fait.[/quote]

Bé tu vien de le faire je crois .
Citation :
Publié par >>Neko_Boys<<<
Moi je ne lui posterai rien du tout .
... aider c'est normal donner le travail tout prêt c'est bien sympa mais c'est pas sympa pour les gens qui vendent des scripts sur secondlife.

Pourquoi pas donner des textures ou des bâtiments ... j'aimerais bien voir la réaction des graphistes ou buildeurs.
Merki Eldodo pour ton aide, je vais effectivement faire le nécessaire pour raccorder une notecard aux scripts que tu m'as donné si gracieusement

Mon but pour info, n'est pas de le commercialiser... ce script

Merci à tout le monde pour vos réponses,

Nc pour les "gamers" les moins ouverts à l'esprit de partage slien ^^
Oui cela avait déjà été discuté là https://forums.jeuxonline.info/showthread.php?t=879503
pour une tip jar à 3; on peut faire plus bien sur; c'est un peu fastidieux si on est nombreux.

Par contre pour le groupe il y a pas de solution : on peut pas savoir par script si un avatar appartient à un groupe donné; on peut seulement savoir quand on détecte un avatar présent ou qu'il clique sur un objet s'il a le même groupe actif que l'objet.
Répondre

Connectés sur ce fil

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