diff --git a/Main HUD v0.07.02 b/Main HUD v0.07.02 index c9dea1a..81c6e0e 100644 --- a/Main HUD v0.07.02 +++ b/Main HUD v0.07.02 @@ -27,22 +27,24 @@ string m_listener_state = ""; string m_last_action = ""; integer m_lastlevel = -1; // Wird für Level Up benötigt. integer regchan = -1; // Wird für regionsweite Messages vom Setup Tool benötigt -integer reghandler = -1; +integer reghandler = -1; +integer menuhandler = -1; // Wird für die HUD Einstellungen benötigt +integer menuchan = -1; -string m_lang_groupMessage = "Das 4CDS Spielsystem ist hier noch nicht eingerichtet! Bitte benutze das Setup-Tool."; +string m_lang_groupMessage = "Das 4CGS Spielsystem ist hier noch nicht eingerichtet! Bitte benutze das Setup-Tool."; string m_lang_groupMessage_hud = "4CGS NICHT EINGERICHTET!"; string m_lang_regionchange = "REGIONSWECHSEL..."; -string m_lang_disabled = "Das 4CDS Spielsystem ist derzeit deaktiviert."; +string m_lang_disabled = "Das 4CGS Spielsystem ist derzeit deaktiviert."; string m_lang_disabled_hud = "4CGS DEAKTIVIERT"; -string m_lang_blueBoxDescText = "Was willst du mit '{0}' machen?\n \n{1}"; -string m_lang_useToOther = "Auf wen möchtest du ' {0}' anwenden?"; -string m_lang_deleteConfirm = "Dies ist ein wichtiges, vielleicht sogar ein einzigartiges Gegenstand. Bist du dir wirklich sicher dass du {0} nicht mehr brauchst?"; +string m_lang_blueBoxDescText = "Was möchtest Du mit '{0}' machen?{1}"; +string m_lang_useToOther = "Auf wen möchtest Du '{0}' anwenden?"; +string m_lang_deleteConfirm = "Dies ist ein wichtiges, vielleicht sogar ein einzigartiger Gegenstand. Bist Du Dir wirklich sicher dass Du '{0}' nicht mehr brauchst?"; string m_lang_sendToOther = "An wen möchtest Du '{0}' weitergeben?"; -string m_lang_selectActions = "Was möchtest Du mit '{0}' machen?"; +// string m_lang_selectActions = "Was möchtest Du mit '{0}' machen?"; string m_lang_avatarNotOnRegion = "{0} ist nicht mehr auf der Region."; string m_lang_noFreeSlot = "{0} hat keinen freien Inventarplatz mehr!"; string m_lang_getItem = "{0} hat Dir {1} gegeben."; -string m_lang_deleteText = "Du hast {0} x {1} weggeworfen. Deine Traglast erhöht sich um {2}kg auf {3}kg."; +string m_lang_deleteText = "Du hast {0} x {1} weggeworfen. Deine Traglast verringert sich um {2}kg auf {3}kg."; string m_lang_ja = "JA"; string m_lang_nein = "NEIN"; string m_lang_leveltext = "Level: {0} [XP: {1}]"; @@ -50,23 +52,70 @@ string m_lang_init = "Aktualisierung..."; string m_lang_maxlevel = "Du hast den höchstmöglichen Level (Level {0}) erreicht."; string m_lang_maxweight = "Sorry, Du kannst nicht mehr tragen."; string m_lang_newname = "Gib bitte hier Deinen RP Spielernamen ein:"; +string m_lang_noothertogive = "Es ist niemand auf der Region, dem Du '{0}' geben könntest."; +string m_lang_noothertouse = "Es ist niemand da, auf den Du '{0}' anwenden könntest."; string m_lang_kill = "Wegwerfen"; string m_lang_use = "Benutzen"; string m_lang_give = "Weitergeben"; -string m_lang_btn_close = "Schließen "; +string m_lang_desc_txt = "Beschreibung:"; + +string m_lang_menutext = "Einstellungen:\n\nBitte wähle eine Option.Die Schalter zeigen Dir an, was aktuell eingestellt ist.\nBenutze den Schalter '{0}', um das Menü zu schließen."; +string m_lang_btn_close = "Schließen ✔"; + string m_lang_btn_ic = "ist wieder IC (= im Spiel)."; + string m_lang_btn_afk = "ist AFK."; + string m_lang_btn_ooc = "ist OOC (= Out of Charakter)."; string m_lang_btn_sound = "Ton ✔"; string m_lang_btn_sound_on = "Ton ✔"; string m_lang_btn_sound_off = "Ton ✘"; string m_lang_btn_messages = "Meldungen ✔"; string m_lang_btn_messages_on = "Meldungen ✔"; string m_lang_btn_messages_off = "Meldungen ✘"; +string m_lang_btn_meter = "Meter auto ✔"; +string m_lang_btn_meter_on = "Meter auto ✔"; +string m_lang_btn_meter_off = "Meter auto ✘"; + string m_lang_reset = "Zurücksetzen"; -string line = "────────────────────────────────────────"; +string line = "───────────────────────────────────────────"; list m_dataStore = []; list m_dataUserStore = []; list m_current = []; integer m_playsound = TRUE; + +read_prefs() +{ + string p = llGetObjectDesc(); + if(llSubStringIndex(p, "PREFS:") != 0) + save_prefs(); + else + { + m_min = FALSE; + m_lang_btn_sound = m_lang_btn_sound_on; + m_lang_btn_messages = m_lang_btn_messages_on; + if(llSubStringIndex(p, "MIN") != -1) m_min = TRUE; + if(llSubStringIndex(p, "SND") == -1) m_lang_btn_sound = m_lang_btn_sound_off; + if(llSubStringIndex(p, "MSG") == -1) m_lang_btn_messages = m_lang_btn_messages_off; + if(llSubStringIndex(p, "METER") == -1) m_lang_btn_meter = m_lang_btn_meter_off; + } +} + +save_prefs() +{ + string p = "PREFS:"; + if(m_min == TRUE) p += "MIN"; + if(m_lang_btn_sound == m_lang_btn_sound_on) p += "-SND"; + if(m_lang_btn_messages == m_lang_btn_messages_on) p += "-MSG"; + if(m_lang_btn_meter == m_lang_btn_meter_on) p += "-METER"; + llSetObjectDesc(p); +} + +menu() +{ + menuhandler = llListen(menuchan, "", llGetOwner(), "" ); + llSetTimerEvent(120); + llDialog(llGetOwner(), line + "\n" + osFormatString(m_lang_menutext, [m_lang_btn_close]), [m_lang_btn_close, m_lang_btn_sound, m_lang_btn_messages, m_lang_btn_meter], menuchan ); +} + getregionchannel() { list lstParcelDetails = llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_ID, PARCEL_DETAILS_AREA]); @@ -102,17 +151,22 @@ change_iconsize(integer prim) minmax() { - m_min = !m_min; vector minmax_size = llList2Vector(llGetLinkPrimitiveParams(LINK_THIS, [PRIM_SIZE]), 0); if(m_min == FALSE) { llSetLocalRot(llEuler2Rot(<0, 0, 0> * DEG_TO_RAD)); - llSetTimerEvent(m_refreshtime); - refreshData(); + if(checkDataEntryInDataList(m_dataStore, "enable") == TRUE) + { + llSetTimerEvent(m_refreshtime); + refreshData(); + } + else + llSetLinkPrimitiveParamsFast(osGetLinkNumber("level-anzeige"), [PRIM_TEXT, m_lang_groupMessage_hud, <1, 0.8, 0>, 1]); } else { + llSetLinkPrimitiveParamsFast(osGetLinkNumber("level-anzeige"), [PRIM_TEXT, "", <0,0,0>, 0]); llSetLocalRot(llEuler2Rot(<0, 180, 0> * DEG_TO_RAD)); llSetTimerEvent(0); osMessageAttachments(llGetOwner(), "HIDE", [ATTACH_HEAD], 0); @@ -152,11 +206,16 @@ updateTime(integer _update) refreshData(); } +// ############################################################################################################### + default { state_entry() { getregionchannel(); + menuchan = -(integer)("0x" + llGetSubString((string)llGetOwner(), -16, -1)); + read_prefs(); + minmax(); llSetLinkPrimitiveParamsFast(osGetLinkNumber("level-anzeige"), [PRIM_TEXT, m_lang_init, <1, 0.8, 0>, 1]); llPreloadSound("click"); llPreloadSound("inventar"); @@ -178,6 +237,7 @@ default llSetLinkPrimitiveParamsFast(osGetLinkNumber("level-anzeige"), [PRIM_TEXT, m_lang_disabled_hud, <1, 0.8, 0>, 1]); } } + else { llOwnerSay(m_lang_groupMessage); @@ -213,7 +273,25 @@ default { m_dataStore = getDataListFromDataStorage("game.hud"); m_dataUserStore = getDataListFromDataStorage("game.hud.player." + llGetOwner()); + llOwnerSay("Touch> " + llGetLinkName(llDetectedLinkNumber(0))); + + if(llGetLinkName(llDetectedLinkNumber(0)) == "LOGO") + { + + osForceAttachToOtherAvatarFromInventory(llGetOwner(), llGetInventoryName(INVENTORY_OBJECT, 0), ATTACH_HUD_CENTER_2); + return; + } + change_iconsize(llDetectedLinkNumber(0)); + + if(llGetLinkName(llDetectedLinkNumber(0)) == llGetObjectName()) + { + m_min = !m_min; + minmax(); + save_prefs(); + return; + } + if(checkDataEntryInDataList(m_dataStore, "enable") == FALSE) { llOwnerSay(m_lang_groupMessage); @@ -231,6 +309,10 @@ default llSetLinkPrimitiveParamsFast(osGetLinkNumber("level-anzeige"), [PRIM_TEXT, m_lang_disabled_hud, <1, 0.8, 0>, 1]); return; } + + if(llGetLinkName(llDetectedLinkNumber(0)) == "preferences") + menu(); + osMessageAttachments(llGetOwner(), "4CGS-ENABLE", [ATTACH_HUD_CENTER_1, ATTACH_HUD_CENTER_2], 0); m_last_touch = llParseString2List(llGetLinkName(llDetectedLinkNumber(0)), ["-"], []); m_listener_state = "main"; @@ -242,33 +324,43 @@ default list _inventarItemDataStorage = getDataListFromDataStorage("item." +_inventarItemName); string _inventarItemDisplayName = getDataEntryFromDataList(_inventarItemDataStorage, "displayname"); string _inventarItemBeschreibung = getDataEntryFromDataList(_inventarItemDataStorage, "beschreibung"); - if(_inventarItemName != "") { list _aktionen = [m_lang_kill, m_lang_use, m_lang_give]; m_dataUserStore = setDataEntryInDataList(m_dataUserStore, "selected", _inventarSlot); saveDataListToDataStorage(m_dataUserStore, "game.hud.player." + llGetOwner()); - llDialog(llDetectedKey(0), line + "\n" + osFormatString(m_lang_blueBoxDescText, [_inventarItemDisplayName, _inventarItemBeschreibung]), _aktionen, m_listener_channel); + llDialog(llDetectedKey(0), line + "\n \n" + osFormatString(m_lang_blueBoxDescText, [_inventarItemDisplayName, "\n \n" + m_lang_desc_txt + "\n" + _inventarItemBeschreibung]), _aktionen, m_listener_channel); return; } } - else - { - if(llGetLinkName(llDetectedLinkNumber(0)) == llGetObjectName()) - { - change_iconsize(llGetLinkName(llDetectedLinkNumber(0))); - minmax(); - refreshData(); - } - - if(llGetLinkName(llDetectedLinkNumber(0)) == "preferences") - llResetScript(); - - } } listen(integer channel, string name, key id, string message ) { + if(channel == menuchan) + { + llListenRemove(menuhandler); + menuhandler = -1; + if(message == m_lang_btn_close) + return; + + if(message == m_lang_btn_sound_on) + m_lang_btn_sound = m_lang_btn_sound_off; + if(message == m_lang_btn_sound_off) + m_lang_btn_sound = m_lang_btn_sound_on; + if(message == m_lang_btn_messages_on) + m_lang_btn_messages = m_lang_btn_messages_off; + if(message == m_lang_btn_messages_off) + m_lang_btn_messages = m_lang_btn_messages_on; + if(message == m_lang_btn_meter_off) + m_lang_btn_meter = m_lang_btn_meter_on; + if(message == m_lang_btn_meter_on) + m_lang_btn_meter = m_lang_btn_meter_off; + save_prefs(); + menu(); + return; + } + m_dataStore = getDataListFromDataStorage("game.hud"); m_dataUserStore = getDataListFromDataStorage("game.hud.player." + llGetOwner()); if(left(message, ";") == "gamecommand") @@ -284,6 +376,7 @@ default refreshData(); } } + else { integer _inventarSlot = llList2String(m_last_touch, 2); @@ -319,16 +412,23 @@ default if(message == m_lang_give) { list _avatars = llGetAgentList(AGENT_LIST_REGION, []); + _avatars = llDeleteSubList(_avatars, llListFindList(_avatars, [llGetOwner()]), llListFindList(_avatars, [llGetOwner()])); integer _avatarsCount = llGetListLength(_avatars); list _player = []; + if(_avatarsCount == 0) + { + llOwnerSay(osFormatString(m_lang_noothertogive, [_inventarItemDisplayName])); + return; + } + while(_avatarsCount--) if(osCheckDataValue("game.hud.player." + llList2String(_avatars, _avatarsCount))) if(llList2Key(_avatars, _avatarsCount) != llGetOwner()) _player += [left(left(llKey2Name(llList2String(_avatars, _avatarsCount)), " "), ".")]; m_listener_state = "give"; - llDialog(llGetOwner(), osFormatString(m_lang_sendToOther, [_inventarItemDisplayName]), _player, m_listener_channel); + llDialog(llGetOwner(), line + "\n \n" + osFormatString(m_lang_sendToOther, [_inventarItemDisplayName]), _player, m_listener_channel); return; } @@ -338,7 +438,7 @@ default list _inventarItemInternalActions = llParseString2List(getDataEntryFromDataList(_inventarItemDataStorage, "actions"), [";"], []); integer _inventarItemInternalActionsCount = llGetListLength(_inventarItemInternalActions); - + string _inventarItemBeschreibung = getDataEntryFromDataList(_inventarItemDataStorage, "beschreibung"); while(_inventarItemInternalActionsCount--) { string _actionName = llList2String(_inventarItemInternalActions, _inventarItemInternalActionsCount); @@ -348,7 +448,7 @@ default } m_listener_state = "use"; - llDialog(llGetOwner(), osFormatString(m_lang_selectActions, [_inventarItemDisplayName]), _actionen, m_listener_channel); + llDialog(llGetOwner(), line + "\n \n" + osFormatString(m_lang_blueBoxDescText, [_inventarItemDisplayName, "\n \n" + m_lang_desc_txt + "\n" + _inventarItemBeschreibung]), _actionen, m_listener_channel); return; } } @@ -357,7 +457,7 @@ default list _allAvatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []); integer _allAvatarsInRegionCount = llGetListLength(_allAvatarsInRegion); key _selectedTargetAvatar = NULL_KEY; - + while(_allAvatarsInRegionCount--) { string _avatarID = left(left(llKey2Name(llList2String(_allAvatarsInRegion, _allAvatarsInRegionCount)), " "), "."); @@ -690,7 +790,7 @@ refreshData() setBalkenValue("essen" , _food); setBalkenValue("hp" , _hp); setBalkenValue("xp" , _xpBalkenValue); - setBalkenValue("weight", (integer)(100 / (float)getMaxPlayerWeight(getDataListFromDataStorage("game.hud.player." + llGetOwner())) * (float)calcPlayerWeight(m_dataUserStore))); + setBalkenValue("weight", (float)(float)(100.0 / (float)getMaxPlayerWeight(getDataListFromDataStorage("game.hud.player." + llGetOwner())) * (float)calcPlayerWeight(m_dataUserStore))); saveDataListToDataStorage(m_dataUserStore, "game.hud.player." + llGetOwner()); osMessageAttachments(llGetOwner(), "LEVEL:" + (string)_level, [ATTACH_HEAD], 0); osMessageAttachments(llGetOwner(), "HP:" + getDataEntryFromDataList(m_dataUserStore, "stats.hp"), [ATTACH_HEAD], 0); @@ -747,9 +847,8 @@ useAction(string _itemName, string _actionName, integer _slot, key _avatar, inte { string _actionStringAction = left(llList2String(_inventarItemInternalActionTasks, _inventarItemInternalActionTasksCount), ":"); string _actionStringArgs = right(llList2String(_inventarItemInternalActionTasks, _inventarItemInternalActionTasksCount), ":"); - if(_actionStringAction == "say") - llDialog(_avatar, " \n \n" + _actionStringArgs, [], -1); + llDialog(_avatar, line + "\n \n" + m_lang_desc_txt + "\n \n" + osReplaceString(osReplaceString(_actionStringArgs, "§C§", ",", -1, 0), "§N§", "\n", -1, 0), [], -1); if(_actionStringAction == "addFood") _targetUserDataStore = setDataEntryInDataList(_targetUserDataStore, "stats.essen", (integer)getDataEntryFromDataList(_targetUserDataStore, "stats.essen") + (integer)_actionStringArgs); @@ -829,14 +928,21 @@ useAction(string _itemName, string _actionName, integer _slot, key _avatar, inte m_listener_state = "getTarget"; list _allAvatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []); + _allAvatarsInRegion = llDeleteSubList(_allAvatarsInRegion, llListFindList(_allAvatarsInRegion, [llGetOwner()]), llListFindList(_allAvatarsInRegion, [llGetOwner()])); integer _allAvatarsInRegionCount = llGetListLength(_allAvatarsInRegion); list _player = []; + + if(_allAvatarsInRegionCount == 0) + { + llOwnerSay(osFormatString(m_lang_noothertouse, [_inventarItemDisplayName])); + return; + } while(_allAvatarsInRegionCount--) if(osCheckDataValue("game.hud.player." + llList2String(_allAvatarsInRegion, _allAvatarsInRegionCount))) _player += [left(left(llKey2Name(llList2String(_allAvatarsInRegion, _allAvatarsInRegionCount)), " "), ".")]; - llDialog(_avatar, osFormatString(m_lang_useToOther, [_inventarItemInternalActionDisplayname]), _player, m_listener_channel); + llDialog(_avatar, line + "\n \n" + osFormatString(m_lang_useToOther, [_inventarItemDisplayName]), _player, m_listener_channel); } } } @@ -874,17 +980,17 @@ setBalkenValue(string balken, integer count) // integer max if((integer)getDataEntryFromDataList(m_dataStore, "stats.enable") != TRUE) count = 0; - if(getDataEntryFromDataList(m_current, "balken."+ balken) != (string)count) + if(getDataEntryFromDataList(m_current, "balken." + balken) != (string)count) { integer _linkCount = osGetLinkNumber("display-balken-" + balken); - + if(count != 0) llSetLinkAlpha(_linkCount, 255, 4); if(count == 0) llSetLinkAlpha(_linkCount, 0, 4); - float _balkenValue = ((1.0 / 100) * (float)count); + float _balkenValue = ((1.0 / 100.0) * (float)count); // llOwnerSay((string)_balkenValue + " " + (string)count); llSetLinkPrimitiveParamsFast(_linkCount, [PRIM_SLICE,< 0, _balkenValue, 0>]);