„Item Giver v0.7.1“ ändern

- 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.
master
Kxirya 2020-06-07 23:37:36 +00:00
parent 9b6e765bd7
commit 6b61c4b242
1 changed files with 16 additions and 20 deletions

View File

@ -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");