Bon, alors dans le prim 0 (tu le sélectionnes en dernier en liant les 2 prims) qui sert de truc gradué, tu colles le script suivant:
integer max = 1000; // valeur pour monter la bulle au max
integer lastP = 0;
integer value = 0;
string lastN = "";
string nom = "";
string affiche = "";
key owner = NULL_KEY;
default {
state_entry() {
owner = llGetOwner();
llRequestAgentData(owner, DATA_NAME); }
dataserver(key queryid, string data) {
nom = data;
state run; }
on_rez(integer num) {
llResetScript(); }
changed(integer num) {
llResetScript(); } }
state run {
state_entry() {
llSetPayPrice(100, [10, 200, 500, 1000]);
llSetTimerEvent(10); }
timer() {
llRequestAgentData(owner, DATA_ONLINE); }
money(key giver, integer amount) {
lastN = llKey2Name(giver);
lastP = amount;
value += amount;
llInstantMessage(giver, "Thanks for the " + (string)amount + "L$, " + lastN); }
dataserver(key queryid, string data) {
integer ol = (integer)data;
if (ol) {
llSetColor(<0.0, 1.0, 0.0>, ALL_SIDES);
affiche = nom + " (online)"; }
else {
llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
affiche = nom + " (offline)"; }
float percent = (float)value / (float)max;
llMessageLinked(LINK_SET, 0, (string)percent, NULL_KEY);
string tmp = "Tip Jar for " + affiche + "\n";
if (lastN != "") { tmp += "Last giver: " + lastN;
if (lastP > 10) tmp += ", for: " + (string)lastP + "\n";
else tmp += ", for peanuts\n"; }
if (value > 0) tmp += "Earned: " + (string)value + "\n";
else tmp += "Still empty, sadly.\n";
llSetText(tmp, <0.0, 0.0, 1.0>, 1.0); }
on_rez(integer num) {
llResetScript(); }
changed(integer num) {
llResetScript(); } }
En prime ce script gère ton status absent / présent avec changement de couleur du prim.
Et dans la bille tu mets le script suivant:
float hgh = 4.0; // hauteur de la colonne, < 10m
vector pos = ZERO_VECTOR;
default {
state_entry() {
pos = llGetLocalPos(); }
link_message(integer send, integer can, string mess, key id) {
float dep = (float)mess * hgh;
llSetPos(pos + <0, 0, dep>); }
on_rez(integer num) {
llResetScript(); }
changed(integer num) {
llResetScript(); } }
tu n'as que 2 valeur à changer suivant ce que tu veux: max dans le premier script pour déterminer la valeur pour atteindre le max de ta graduation, et hgh dans le second qui est la hauteur que va parcourir ta bille.