From 6b61c4b2424eaea75df3c1d2fe0dbad15bd98947 Mon Sep 17 00:00:00 2001 From: Kxirya Date: Sun, 7 Jun 2020 23:37:36 +0000 Subject: [PATCH] =?UTF-8?q?=E2=80=9EItem=20Giver=20v0.7.1=E2=80=9C=20?= =?UTF-8?q?=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wenn Player Level < m_level, bekommt der Player nur die XP für 1 Item dazu (m_xp_collect). - Wenn Player Level >= m_level, bekommt der Player die Anzahl der Items und die XP (m_xp * Anzahl) dazu. - Das Gewicht wird nun berechnet Hier testen, ob der Player, wenn er z.B. nur noch 1kg tragen kann, die Items dennoch übergeben werden, wenn sie zusammen schwerer sind, als die Traglast des Spielers. --- Item Giver v0.7.1 | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/Item Giver v0.7.1 b/Item Giver v0.7.1 index 856d475..b3ec382 100644 --- a/Item Giver v0.7.1 +++ b/Item Giver v0.7.1 @@ -8,7 +8,7 @@ key klicker = NULL_KEY; // Wer hat string m_itemName = "navi_wasserbeutel"; // Name für den Pfad, unter dem dieses Objekt auf dem Server verwaltet wird. string m_displayName = "Na'vi Wasserbeutel"; // Angezeigter Name des Sammelobjektes string m_desc = "Ein voller Na'vi Wasserbeutel."; // Kurzbeschreibung -string m_item_weight = "5.5"; // Gewicht des Gegenstandes (für max. Ztaglast benötigt) +string m_item_weight = "1.5"; // Gewicht des Gegenstandes (für max. Ztaglast benötigt) string m_desc_long = "Wasserbeutel werden für den Transport von Flüssigkeiten benutzt. Sie fassen ca. 1/2 Liter Wasser. Die Na'vi stellen diese Behälter aus verschiednen Ledersorten, Riemen und Hölzern her. "; // Anschauen Text string m_eat = "Trinken"; // Button-Text für Aktion string m_watch = "Anschauen"; // Button-Text, um die lange Beschreibung zu lesen (Anschauen). @@ -19,10 +19,10 @@ string m_hp = "5"; // Wieviel string m_food = "0"; // Wieviel Nahrung wird dazu addiert? (Negative Werte ziehen Nahrung ab) string m_water = "50"; // Wieviel Wasser wird dazu addiert? (Negative Werte ziehen Wasser ab) float m_range = 5.0; // Wie weit darf der Avatar vom Giver entfernt sein (1 ... 96m, 0 = Beliebig) -integer m_time_fix = 3; // Zeit, wie lange das Objekt unsichtbar ist (in Sekunden). Wenn 0 = Deaktiviert +integer m_time_fix = 0; // Zeit, wie lange das Objekt unsichtbar ist (in Sekunden). Wenn 0 = Deaktiviert integer m_time_rnd = 0; // Zufällige Zeit, die der Fixzeit hinzuaddiert wird und die zwischen 0 und dem hier angegebenen Wert liegt. integer m_rnd = -3; // Wenn > 1, wird eine zufällige Anzahl von 1 ... m_rnd gesammelt. Wenn Wert negativ, dann diese Anzahl dazu rechnen. -integer m_minlevel = 0; // Wenn Sammler einen kleineren Level hat, entscheidet der Zufall, ob er das Itam bekommt. +integer m_minlevel = 1; // Wenn Sammler einen kleineren Level hat, entscheidet der Zufall, ob er das Itam bekommt. integer m_isunique = FALSE; // Falls TRUE, wird beim "Entsorgen" abgefragt, ob man das möchte. // #################################################################################################################################### @@ -83,12 +83,12 @@ default integer _slot = getNextFreeInventorySlot(_dataStorage, m_itemName); integer _level = llList2Integer(calcLevelData(_dataStorage), 0); - integer m_num = 1; + m_num = 1; if(m_rnd > 1) m_num = (integer)(llFrand(m_rnd) + 1); else if (m_rnd < 0) - m_num = - m_rnd; - m_weight_total = m_num * (float)m_item_weight; + m_num = -m_rnd; + m_weight_total = (float)m_num * (float)m_item_weight; if(!llSameGroup(klicker)) { @@ -143,30 +143,26 @@ state sammeln { state_entry() { - list _dataStorage = getDataListFromDataStorage("game.hud.player." + klicker); - integer _slot = getNextFreeInventorySlot(_dataStorage, m_itemName); - integer _level = llList2Integer(calcLevelData(_dataStorage), 0); - integer _xp = (integer)getDataEntryFromDataList(_dataStorage, "stats.xp"); + llOwnerSay((string)m_num); + list _dataStorage = getDataListFromDataStorage("game.hud.player." + klicker); + integer _slot = getNextFreeInventorySlot(_dataStorage, m_itemName); + integer _level = llList2Integer(calcLevelData(_dataStorage), 0); + integer _xp = (integer)getDataEntryFromDataList(_dataStorage, "stats.xp"); if(_level >= (integer)m_minlevel) { + _dataStorage = setDataEntryInDataList(_dataStorage, "stats.xp", _xp + (m_num * (integer)m_xp_collect)); + _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot, m_itemName); + _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot + ".count", getItemCountFromSlot(_dataStorage, _slot) + m_num); llRegionSayTo(klicker, 0, osFormatString(m_lang_collected, [(string)m_num, m_displayName, (string)(m_num * (integer)m_xp_collect)])); - _dataStorage = setDataEntryInDataList(_dataStorage, "stats.xp", _xp + (m_num * (integer) m_xp_collect)); - _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot, m_itemName); - _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot + ".count", getItemCountFromSlot(_dataStorage, _slot) + m_num); } else { //m_num = 0; - _dataStorage = setDataEntryInDataList(_dataStorage, "stats.xp", _xp + m_xp_collect); - llRegionSayTo(klicker, 0, osFormatString(m_lang_level_too_low, [m_displayName, _level, (string)m_xp_collect])); + _dataStorage = setDataEntryInDataList(_dataStorage, "stats.xp", _xp + (integer)m_xp_collect); + llRegionSayTo(klicker, 0, osFormatString(m_lang_level_too_low, [m_displayName, m_minlevel, (string)m_xp_collect])); } - - _dataStorage = setDataEntryInDataList(_dataStorage, "stats.xp", _xp + (m_num * (integer) m_xp_collect)); - _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot, m_itemName); - _dataStorage = setDataEntryInDataList(_dataStorage, "inventar.slot." + _slot + ".count", getItemCountFromSlot(_dataStorage, _slot) + m_num); - saveDataListToDataStorage(_dataStorage, ("game.hud.player." + klicker)); llSay((integer)getDataEntryFromDataList(_dataStorage, "channel"), "gamecommand;reload");