Erbangelegenheiten
» Siedler Map Source Forum » Siedler DEdK Script Forum » Erbangelegenheiten
Seiten: 1
Flodder
|
#1 13.06.2010 15:44 Beiträge: 2608 |
Erbangelegenheiten
Es ist oft wie im richtigen Leben:
Euer virtuelle Vater ist stinkreich und -wie der glückliche Zufall es so will- auch schon recht alt. Ihr wiederum seid noch jung und voller Tatendrank, steckt aber noch in den Windeln. Ein Grund mehr für Euren virtuellen Vater, Euch die fette Kohle nicht unbedacht in den Rachen zu schmeissen, sondern wohlüberlegt auf ein schweizer Konto zu deponieren. Zu einem "moderaten" Zinssatz von 0.01 Prozent!! pro Abrechnungsperiode.
Auszahlung:
Nach Ableben des alten Herrn, bzw. nach Vollendung Eures 18. Lebensjahres. DAS KANN DAUERN! (...leider!)
Wie dem auch sei, 299 Abrechnungsperioden sind abzuwarten, vorher gibts keinen Cobra AC 427.
Wie macht man nun solch eine Zinsberechnung, die zudem ganz genau an jedem Abrechnungstag ausgewertet und auch ausgewiesen werden soll?
Zunächst in die FMA für eine einmalige Kontoeinlage von 10.000 Gold bei der schweizer Bank:
gvKo = 10000 --Anfangskapital gvKp = gvKo * 0.01 --Zinsfuss in Prozent pro Abrechnungsperiode gvKj = 0 --Startperiode gvMission.Rob_SwKonto = StartSimpleJob("Rob_SwKonto")
Zur Abrechnungsfunktion pro Abrechnungsperiode:
function Rob_SwKonto() timeOut = timeOut or false bezahlt = bezahlt or false if Logic.GetPlayerPaydayTimeLeft(1) < 2000 then timeOut = true elseif Logic.GetPlayerPaydayTimeLeft(1) > 118000 then timeOut = false bezahlt = false end if timeOut and not bezahlt then gvKj = gvKj + 1 if gvKj > 0 then gvKn = gvKo + (gvKj * gvKp) Message("Eine Abrechnungsperiode ist um. ".. "@cr @cr Euer Guthaben bei der schweizer Bank ".. "@cr beträgt "..gvKn.." Gold incl. Zinsen.") bezahlt = true end end end
0.01 Prozent mag wenig klingen. Bedenkt aber, dass eine Abrechnungsperiode ziemlich schnell rum ist. Da wird aus popeliegen 10.000 Gold recht schnell ein stolzes Sümmchen nebenher werden.
Auszahlungsbedingung:
Hier 299 Umrundungen. Kann aber genausogut an eine andere Bedingung gebunden sein. Da könnt Ihr Eurer Fantasie freien Lauf lassen.
Eine kleine, aber -denke ich zumindest- sehr vielseitige Funktion. Wird eingesetzt in der in Kürze erscheinenden Siedler_Team Map Der dreissigjährige Krieg part 2. Part zwei umfasst die gesammte Map und nicht nur den restlichen unbegehbaren Teil aus Part 1.
Ihr dürft obige Funktion gerne verwenden, oder auch nach Herzenslust abwandeln. Ich habe nur eine kleine Bitte:
Wenn Ihr sie verwendet, kommentiert kurz den Ersteller aus.
Vielen Dank und viel Spass!
____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.
Dieser Beitrag wurde von Flodder am 13.06.2010 um 23:59 editiert.
warrior1024
|
#2 13.06.2010 19:45 Beiträge: 345 |
Das ist in meine Finger geraten...
... und das kam dabei raus:
--Idee by Flodder, Urversion by Flodder, Überarbeitung by warrior1024 function Init_SchwarzKonten() SchwarzeKonten = {} StartSimpleJob("SwKonto") end function CreateKonto(_t) assert(_t.zins ~= nil, "Schwarzkonten: Zinssatz fehlt :(") assert(_t.geld ~= nil, "Schwarzkonten: Startgeld fehlt :(") assert(_t.einzahlung ~= nil, "Schwarzkonten: Nicht bekannt, ob pro Zahltag was gezahlt wird :(") assert(_t.hohe ~= nil, "Schwarzkonten: Nicht bekannt, wieviel pro Zahltag eingezahlt wird :(") assert(_t.abbuchung ~= nil, "Schwarzkonten: Nicht bekannt, ob der Palyer die Einzahlung zahlen muss") table.insert(SchwarzeKonten, _t) return table.getn(SchwarzeKonten) end function SwKonto() for i = 1, table.getn(SchwarzeKonten), 1 do if SchwarzeKonten[i] ~= 1 then SchwarzeKonten[i].timeOut = SchwarzeKonten[i].timeOut or false SchwarzeKonten[i].bezahlt = SchwarzeKonten[i].bezahlt or false if Logic.GetPlayerPaydayTimeLeft(1) < 2000 then SchwarzeKonten[i].timeOut = true elseif Logic.GetPlayerPaydayTimeLeft(1) > 118000 then SchwarzeKonten[i].timeOut = false SchwarzeKonten[i].bezahlt = false end if SchwarzeKonten[i].timeOut and not SchwarzeKonten[i].bezahlt then SchwarzeKonten[i].geld = SchwarzeKonten[i].geld + (SchwarzeKonten[i].geld * SchwarzeKonten[i].zins) if SchwarzeKonten[i].einzahlung then SchwarzeKonten[i].geld = SchwarzeKonten[i].geld + SchwarzeKonten[i].hohe end if SchwarzeKonten[i].abbuchung then AddGold(-SchwarzeKonten[i].hohe) end Message("Auf einem eurer Konten sind nun "..SchwarzeKonten[i].geld.." Taler.") SchwarzeKonten[i].bezahlt = true end end end end function ZahleAus(_id) AddGold(SchwarzeKonten[_id].geld) SchwarzeKonten[_id] = 1 end
Jetzt zur Erklärung:
Per Init_SchwarzKonten() wird die ganze Funktion vorbereitet. Am besten in die FMA, bevor ein Konto erzeugt wird.
Die Erzeugung eines Kontos passiert wie folgt:
CreateKonto{ geld = 5000, --wieviel Geld soll von Anfang auf dem Konto sein? zins = 1.005, --zu welchem Zins? Hier 0,5% einzahlung = true, --soll pro Zahltag was eingezahlt werden? Hier: ja hohe = 250, --wieviel soll eingezahlt werden? Muss vorhanden sein! abbuchung = true, --soll die Einzahlung vom Player kommen? Muss vorhanden sein! }
Hinweis:
Die Funktion gibt die ID zurück, mit der man die Auszahlung auslöst. ID unbedingt speichern!
Per ZahleAus(_id) wird das Geld ausgezahlt!
Achtung:
Wenn man nur 2,3373892... % Zins nimmt, verdoppelt sich das Vermögen innerhalb einer Stunde
____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal
Dieser Beitrag wurde von warrior1024 am 13.06.2010 um 19:50 editiert.
Flodder
|
#3 13.06.2010 23:51 Beiträge: 2608 |
Zitat von warrior1024:
... und das kam dabei raus...
Bravo warrior1024, klasse Variante! Ein Schwarzgeldkonto also.
Wie bereits in der "Urversion" von mir angedeutet, ist diese kleine Funktion unglaublich vielseitig verwendbar. Wie man sowas ausarbeiten und/oder variieren kann, hast Du hiermit brilliant bewiesen. Sowas freut mich sehr!
Bescheidene Frage:
Variante auf fehlerfreie Lauffähigkeit in allen erdenklichen Richtungen geprüft?
Edit
Die Wahl des Zinssatzes durch den Spieler scheint mir allerdings sehr bedenklich. In der freien Wirtschaft ist es eher so, dass die Bank den Zinssatz bestimmt. Wenn er "frei" nach Gutdünken einen Zinssatz eintragen kann, dann vermehrt sich sein Schwarzgeldkonto u.U. "explosiv"! Das wäre m.E. nicht Sinn einer kontrollierten "Geldvermehrung".
Hier scheint eine Auswahl zwischen bspw. drei Zinsangeboten angebracht zu sein. Der tatsächlich dem Spieler gewährte Zinssatz könnte sich dann wiederum nach der Einzahlungshöhe des erstmalig eingezahlten Startkapitals richten.
1.:
Geringes Startkapital (erstes Einzahlungskapital) = niedriger Zinssatz, aber lange Laufzeit (...Sperrfrist).
2.:
Mittleres Startkapital = etwas höherer Zinssatz bei mittlerer Laufzeit (....Sperrfrist)
3.:
Hohes Startkapital = Max. bspw. 10.000 hoher Zinssatz, aber geringe Laufzeit (...Sperrfrist).
Eine weitere Idee wäre es, den Spieler gleich zu Spielbeginn per mcBriefing entscheiden zu lassen, ob er das ihm zur Verfügung gestellte Startkapital sofort auf ein Schwarzgeldkonto "verschieben", oder damit arbeiten möchte.
De Fakto:
Zig Variantionsmöglichkeiten. (...und nicht nur mit Gold!!)
____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.
Dieser Beitrag wurde von Flodder am 14.06.2010 um 01:34 editiert.
Mordred
|
#4 14.06.2010 14:01 Beiträge: 939 |
Sicher, dass bei manche Spielern Freude aufkommt,
wenn sie sich um sowas auch noch in einem Spiel kümmern müssen?
Noigi
|
#5 14.06.2010 15:32 Beiträge: 772 |
Bei meiner Siedler6-Karte konnten die Spieler in einen Hedge-Fonds investieren, und haben dann monatlich Dividenden bekommen (manchmal nicht, wenn sich die Fonds-Manager verzockt haben ).
Das ist eigentlich ganz gut angekommen, war aber auch kein zentrales Element der Map.
Seiten: 1