Hannibal Hudson
Superstar
Mir wurde gerade eine erweiterte Version des Tip-Jar Scriptes zugespielt, incl Einstellungen über Notecard usw.
Und hier die Config-Notecard dazu, Name muß tjconfig lauten:
Das ganze stammt von einem irren Vogel von Germania Woods ;-)
Von eben diesem und mir natürlich auch, grüße an die SLinfo community.
MfG
Hannibal
Code:
string benutzerName;
string ueberschrift;
key benutzerSchluessel;
integer einnahmen;
integer samegroup;
integer besitzerAnteil;
integer scannerReichweite;
string zeile2;
string zeile31;
string zeile32;
string anmeldung;
string abmeldung;
string falschegruppe;
string danke;
vector textfarbe;
key qryNotecard;
string notecard_name = "tjconfig";
integer notecard_line = 0;
init()
{
// Make sure we actually have a notecard matching
// the name. If we do, process it.
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
{
readNotecard();
return;
}
}
readNotecard()
{
llOwnerSay("Lese Konfiguration. Bitte warten.");
// Send a request for the first line (line 0). Any subsequent
// lines will be requested when the dataserver event is
// triggered.
notecard_line = 0;
qryNotecard = llGetNotecardLine(notecard_name, notecard_line) ;
}
checkLine(string line)
{
// Ignore empty lines and comment lines.
if((line != "") && (llGetSubString(line, 0, 1) != "//"))
{
// Extract the line details. Assume that valid
// settings are in the format 'name=value', like
// a Windows .INI file. Ignore any which are not.
list Details = llParseString2List(line, ["="], []);
string keyname = llList2String(Details, 0);
if (keyname == "configueberschrift")
{
ueberschrift = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ ueberschrift);
}
if (keyname == "configscanner")
{
scannerReichweite = llList2Integer(Details, 1);
llOwnerSay(keyname +" = "+ (string)scannerReichweite);
}
if (keyname == "configanteil")
{
besitzerAnteil = llList2Integer(Details, 1);
llOwnerSay(keyname +" = "+ (string)besitzerAnteil);
}
if (keyname == "configgroup")
{
samegroup = llList2Integer(Details, 1);
llOwnerSay(keyname +" = "+ (string)samegroup);
}
if (keyname == "configzeile2")
{
zeile2 = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ zeile2);
}
if (keyname == "configzeile31")
{
zeile31 = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ zeile31);
}
if (keyname == "configzeile32")
{
zeile32 = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ zeile32);
}
if (keyname == "configanmeldung")
{
anmeldung = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ anmeldung);
}
if (keyname == "configabmeldung")
{
abmeldung = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ abmeldung);
}
if (keyname == "configfalschegruppe")
{
falschegruppe = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ falschegruppe);
}
if (keyname == "configdanke")
{
danke = llList2String(Details, 1);
llOwnerSay(keyname +" = "+ danke);
}
if (keyname == "configtextfarbe")
{
string strtextfarbe = llList2String(Details, 1);
textfarbe = (vector)llList2String([strtextfarbe], 0);
llOwnerSay(keyname +" = "+ (string)textfarbe);
}
}
// Get the next line.
notecard_line = notecard_line + 1;
qryNotecard = llGetNotecardLine(notecard_name, notecard_line) ;
}
// Events
default
{
on_rez(integer start_param)
{
llResetScript();
init();
}
state_entry()
{
init();
}
dataserver(key query, string data)
{
// Check whether this is a response to our notecard
// query.
if (query == qryNotecard)
{
if (data != EOF)
{
// Handle the returned notecard line.
checkLine(data) ;
return;
}
else
{
llOwnerSay("Konfiguration eingelesen.");
}
}
if ((besitzerAnteil >= 0) && (besitzerAnteil <= 100))
llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);
}
run_time_permissions(integer permissions)
{
if (permissions & PERMISSION_DEBIT)
state inaktiv;
}
}
state inaktiv
{
on_rez(integer start_param)
{
llResetScript();
init();
}
state_entry()
{
llSetText(ueberschrift,textfarbe,1);
}
//
changed(integer change) { // something changed
if (change & CHANGED_INVENTORY) { // and it was the inventory
llOwnerSay("Script wird neu gestartet!"); // Reset Hinweis
llResetScript();
init();
}
}
//
touch_start(integer total_number)
{
if ((llSameGroup(llDetectedKey(0))) && (samegroup==1))
{
benutzerSchluessel = llDetectedKey(0);
benutzerName = llKey2Name(benutzerSchluessel);
einnahmen = 0;
llInstantMessage(llDetectedKey(0),anmeldung);
state aktiv;
}
else if (samegroup==0)
{
benutzerSchluessel = llDetectedKey(0);
benutzerName = llKey2Name(benutzerSchluessel);
einnahmen = 0;
llInstantMessage(llDetectedKey(0),anmeldung);
state aktiv;
}
else
llInstantMessage(llDetectedKey(0),falschegruppe);
}
}
state aktiv
{
on_rez(integer start_param)
{
llResetScript();
init();
}
state_entry()
{
llSetText(ueberschrift+"\n" + benutzerName + " " + zeile2+"\n" + zeile31 + " " +(string)einnahmen + " " + zeile32,textfarbe,1);
if (scannerReichweite > 0)
llSensorRepeat(benutzerName,NULL_KEY,AGENT,(float)scannerReichweite,PI,(float)60);
}
//
changed(integer change) { // something changed
if (change & CHANGED_INVENTORY) { // and it was the inventory
llOwnerSay("Script wird neu gestartet!"); // Reset Hinweis
llResetScript();
init();
}
}
//
sensor(integer total_number)
{
// ...
}
no_sensor()
{
llInstantMessage(benutzerSchluessel,abmeldung);
state inaktiv;
}
touch_start(integer total_number)
{
if ((llDetectedKey(0) == llGetOwner()) || (llDetectedKey(0) == benutzerSchluessel))
{
llInstantMessage(benutzerSchluessel,abmeldung);
state inaktiv;
}
}
money(key giver, integer amount)
{
llSay(0,danke + " " + llKey2Name(giver) + "!");
einnahmen += amount;
llSetText(ueberschrift+"\n" + benutzerName + " "+zeile2+"\n" + zeile31 + " " +(string)einnahmen + " " + zeile32,textfarbe,1);
integer prozentFuerMitarbeiter = 100 - besitzerAnteil;
integer geldFuerMitarbeiter = llCeil((float)amount * prozentFuerMitarbeiter / 100);
if (geldFuerMitarbeiter > 0)
llGiveMoney(benutzerSchluessel,geldFuerMitarbeiter);
}
}
Und hier die Config-Notecard dazu, Name muß tjconfig lauten:
Code:
// Anteil der Einnahmen fuer den Owner in Prozent (10 = 10 Prozent für den Owner)
configanteil=10
// Abwesendheitssensorreichweite (z.B. 30 = 30 Meter Umkreis)
// 1-96 Meter, 0 schaltet den Sensor aus
configscanner=12
// Muss der Benutzer des Tipjars zu der Gruppe gehören (1 = ja /0 = nein)
configgroup=0
// Ueberschrift fuer den TipJar (Zeile 1)
configueberschrift=Trinkgelder
// Zeile 2 (Benutzername + Meldung)
configzeile2=ist angemeldet
// Zeile 3 (Meldung + Einnahmen + Meldung)
configzeile31=Bislang wurden
configzeile32=gespendet!
// Anmeldung an den Tipjar (Meldung an den Benutzer)
configanmeldung=Du wurdest angemeldet
// Abmeldung vom Tipjar (Meldung an den Benutzer)
configabmeldung=Du wurdest abgemeldet
//Dankmeldung an den edlen Spender
configdanke=Danke fuer das Trinkgeld,
// Meldung fuer falsche Gruppe
configfalschegruppe=Nur für Mitglieder der korrekten Gruppe!
// Textfarbe (SL-Typisch!!)
configtextfarbe=<1,1,1>
Das ganze stammt von einem irren Vogel von Germania Woods ;-)
Von eben diesem und mir natürlich auch, grüße an die SLinfo community.
MfG
Hannibal