diff options
Diffstat (limited to 'linden/indra/newview/llviewermessage.cpp')
-rw-r--r-- | linden/indra/newview/llviewermessage.cpp | 185 |
1 files changed, 165 insertions, 20 deletions
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp index 7f2504c..af4b8d8 100644 --- a/linden/indra/newview/llviewermessage.cpp +++ b/linden/indra/newview/llviewermessage.cpp | |||
@@ -151,17 +151,17 @@ | |||
151 | #include "llwindebug.h" // For the invalid message handler | 151 | #include "llwindebug.h" // For the invalid message handler |
152 | #endif | 152 | #endif |
153 | 153 | ||
154 | // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | ||
155 | #include "llfloateravatarinfo.h" | ||
156 | extern LLMap< const LLUUID, LLFloaterAvatarInfo* > gAvatarInfoInstances; // Only defined in llfloateravatarinfo.cpp | ||
157 | // [/RLVa:KB] | ||
158 | |||
159 | //silly spam define D: | 154 | //silly spam define D: |
160 | bool dialogSpamOn; | 155 | bool dialogSpamOn; |
161 | static LLFrameTimer d_spam; | 156 | static LLFrameTimer d_spam; |
162 | std::map< std::string , S32 > lastd_names; | 157 | std::map< std::string , S32 > lastd_names; |
163 | LLDynamicArray< std::string > blacklisted_names; | 158 | LLDynamicArray< std::string > blacklisted_names; |
164 | 159 | ||
160 | // [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) | ||
161 | #include "llfloateravatarinfo.h" | ||
162 | extern LLMap< const LLUUID, LLFloaterAvatarInfo* > gAvatarInfoInstances; // Only defined in llfloateravatarinfo.cpp | ||
163 | // [/RLVa:KB] | ||
164 | |||
165 | // | 165 | // |
166 | // Constants | 166 | // Constants |
167 | // | 167 | // |
@@ -1116,8 +1116,17 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1116 | std::string first_name, last_name; | 1116 | std::string first_name, last_name; |
1117 | if (gCacheName->getName(mFromID, first_name, last_name)) | 1117 | if (gCacheName->getName(mFromID, first_name, last_name)) |
1118 | { | 1118 | { |
1119 | from_string = std::string("An object named '") + mFromName + "' owned by " + first_name + " " + last_name; | 1119 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) |
1120 | chatHistory_string = mFromName + " owned by " + first_name + " " + last_name; | 1120 | std::string full_name = first_name + " " + last_name; |
1121 | if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(mFromID)) ) | ||
1122 | { | ||
1123 | full_name = gRlvHandler.getAnonym(full_name); | ||
1124 | } | ||
1125 | from_string = std::string("An object named '") + mFromName + "' owned by " + full_name; | ||
1126 | chatHistory_string = mFromName + " owned by " + full_name; | ||
1127 | // [/RLVa:KB] | ||
1128 | //from_string = std::string("An object named '") + mFromName + "' owned by " + first_name + " " + last_name; | ||
1129 | //chatHistory_string = mFromName + " owned by " + first_name + " " + last_name; | ||
1121 | } | 1130 | } |
1122 | else | 1131 | else |
1123 | { | 1132 | { |
@@ -1136,6 +1145,21 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& | |||
1136 | switch(button) | 1145 | switch(button) |
1137 | { | 1146 | { |
1138 | case IOR_ACCEPT: | 1147 | case IOR_ACCEPT: |
1148 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Added: RLVa-0.2.2a | ||
1149 | // Only change the inventory offer's destination folder to the shared root if: | ||
1150 | // - the user has enabled the feature | ||
1151 | // - the inventory offer came from a script (and specifies a folder) | ||
1152 | // - the name starts with the prefix [mDesc format (quotes are part of the string): "[OBJECTNAME] ( http://slurl.com/... )"] | ||
1153 | if ( (rlv_handler_t::isEnabled()) && (!RlvSettings::getForbidGiveToRLV()) && | ||
1154 | (IM_TASK_INVENTORY_OFFERED == mIM) && (LLAssetType::AT_CATEGORY == mType) && (mDesc.find(RLV_PUTINV_PREFIX) == 1) ) | ||
1155 | { | ||
1156 | LLViewerInventoryCategory* pRlvRoot = gRlvHandler.getSharedRoot(); | ||
1157 | if (pRlvRoot) | ||
1158 | { | ||
1159 | mFolderID = pRlvRoot->getUUID(); | ||
1160 | } | ||
1161 | } | ||
1162 | // [/RLVa:KB] | ||
1139 | // ACCEPT. The math for the dialog works, because the accept | 1163 | // ACCEPT. The math for the dialog works, because the accept |
1140 | // for inventory_offered, task_inventory_offer or | 1164 | // for inventory_offered, task_inventory_offer or |
1141 | // group_notice_inventory is 1 greater than the offer integer value. | 1165 | // group_notice_inventory is 1 greater than the offer integer value. |
@@ -1303,7 +1327,7 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1303 | if(indx >= 0) | 1327 | if(indx >= 0) |
1304 | { | 1328 | { |
1305 | LLStringUtil::truncate(msg, indx); | 1329 | LLStringUtil::truncate(msg, indx); |
1306 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-04 (RLVa-1.0.0a) | Added: RLVa-1.0.0a | 1330 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) | Added: RLVa-1.0.0a |
1307 | // TODO-RLVa: needs revisiting when LL saves open notifications to disk to accept them on the next relog | 1331 | // TODO-RLVa: needs revisiting when LL saves open notifications to disk to accept them on the next relog |
1308 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) | 1332 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) |
1309 | { | 1333 | { |
@@ -1352,6 +1376,13 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1352 | std::string first_name, last_name; | 1376 | std::string first_name, last_name; |
1353 | if (gCacheName->getName(info->mFromID, first_name, last_name)) | 1377 | if (gCacheName->getName(info->mFromID, first_name, last_name)) |
1354 | { | 1378 | { |
1379 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | ||
1380 | if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) | ||
1381 | { | ||
1382 | first_name = gRlvHandler.getAnonym(first_name.append(" ").append(last_name)); | ||
1383 | last_name.clear(); | ||
1384 | } | ||
1385 | // [/RLVa:KB] | ||
1355 | args["FIRST"] = first_name; | 1386 | args["FIRST"] = first_name; |
1356 | args["LAST"] = last_name; | 1387 | args["LAST"] = last_name; |
1357 | name_found = TRUE; | 1388 | name_found = TRUE; |
@@ -1371,6 +1402,12 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task) | |||
1371 | } | 1402 | } |
1372 | else | 1403 | else |
1373 | { | 1404 | { |
1405 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | ||
1406 | if ( (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && (gRlvHandler.isAgentNearby(info->mFromID)) ) | ||
1407 | { | ||
1408 | args["NAME"] = gRlvHandler.getAnonym(info->mFromName); | ||
1409 | } | ||
1410 | // [/RLVa:KB] | ||
1374 | p.name = "UserGiveItem"; | 1411 | p.name = "UserGiveItem"; |
1375 | } | 1412 | } |
1376 | 1413 | ||
@@ -1628,11 +1665,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1628 | to_id.isNull() ) | 1665 | to_id.isNull() ) |
1629 | do_auto_response = false; | 1666 | do_auto_response = false; |
1630 | 1667 | ||
1631 | // if( do_auto_response ) | 1668 | // if( do_auto_response ) |
1632 | // [RLVa:KB] - Alternate: Emerald-370 | 1669 | // [RLVa:KB] - Alternate: Emerald-370 |
1633 | // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception | 1670 | // Emerald specific: auto-response should be blocked if the avie is RLV @sendim=n restricted and the recipient is not an exception |
1634 | if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) ) | 1671 | if ( (do_auto_response) && ( (!gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) || (gRlvHandler.isException(RLV_BHVR_SENDIM, from_id)) ) ) |
1635 | // [/RLVa:KB] | 1672 | // [/RLVa:KB] |
1636 | { | 1673 | { |
1637 | if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) || | 1674 | if((dialog == IM_NOTHING_SPECIAL && !is_auto_response) || |
1638 | (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping")) | 1675 | (dialog == IM_TYPING_START && gSavedPerAccountSettings.getBOOL("InstantMessageShowOnTyping")) |
@@ -1860,7 +1897,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
1860 | } | 1897 | } |
1861 | else if (to_id.isNull()) | 1898 | else if (to_id.isNull()) |
1862 | { | 1899 | { |
1863 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) | 1900 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) |
1864 | // Filter region messages that weren't sent by a Linden | 1901 | // Filter region messages that weren't sent by a Linden |
1865 | if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) && | 1902 | if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) && |
1866 | (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) ) | 1903 | (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) ) |
@@ -2160,6 +2197,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2160 | } | 2197 | } |
2161 | else | 2198 | else |
2162 | { | 2199 | { |
2200 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-09-10 (RLVa-1.0.3a) | ||
2201 | if ( (rlv_handler_t::isEnabled()) && (dialog == IM_TASK_INVENTORY_OFFERED) && | ||
2202 | (info->mDesc.find(RLV_PUTINV_PREFIX) == 1) && (gRlvHandler.getSharedRoot()) ) | ||
2203 | { | ||
2204 | LLFirstUse::warnRlvGiveToRLV(); | ||
2205 | } | ||
2206 | // [/RLVa:KB] | ||
2207 | |||
2163 | inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED); | 2208 | inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED); |
2164 | } | 2209 | } |
2165 | } | 2210 | } |
@@ -2167,13 +2212,23 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2167 | 2212 | ||
2168 | case IM_INVENTORY_ACCEPTED: | 2213 | case IM_INVENTORY_ACCEPTED: |
2169 | { | 2214 | { |
2170 | args["NAME"] = name; | 2215 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b |
2216 | bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && | ||
2217 | (gRlvHandler.isAgentNearby(from_id)) && (!gAvatarInfoInstances.checkData(from_id)); | ||
2218 | args["NAME"] = (!fRlvObfuscate) ? name : gRlvHandler.getAnonym(name); | ||
2219 | // [/RLVa:KB] | ||
2220 | //args["NAME"] = name; | ||
2171 | LLNotifications::instance().add("InventoryAccepted", args); | 2221 | LLNotifications::instance().add("InventoryAccepted", args); |
2172 | break; | 2222 | break; |
2173 | } | 2223 | } |
2174 | case IM_INVENTORY_DECLINED: | 2224 | case IM_INVENTORY_DECLINED: |
2175 | { | 2225 | { |
2176 | args["NAME"] = name; | 2226 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) | Modified: RLVa-0.2.0b |
2227 | bool fRlvObfuscate = (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)) && | ||
2228 | (gRlvHandler.isAgentNearby(from_id)) && (!gAvatarInfoInstances.checkData(from_id)); | ||
2229 | args["NAME"] = (!fRlvObfuscate) ? name : gRlvHandler.getAnonym(name); | ||
2230 | // [/RLVa:KB] | ||
2231 | //args["NAME"] = name; | ||
2177 | LLNotifications::instance().add("InventoryDeclined", args); | 2232 | LLNotifications::instance().add("InventoryDeclined", args); |
2178 | break; | 2233 | break; |
2179 | } | 2234 | } |
@@ -2324,7 +2379,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2324 | return; | 2379 | return; |
2325 | } | 2380 | } |
2326 | { | 2381 | { |
2327 | // [RLVa:KB] - Version: 1.22.11 | Checked: 2009-07-08 (RLVa-1.0.0e) | 2382 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) |
2328 | // TODO-RLVa: what actually generates this? | 2383 | // TODO-RLVa: what actually generates this? |
2329 | if (rlv_handler_t::isEnabled()) | 2384 | if (rlv_handler_t::isEnabled()) |
2330 | { | 2385 | { |
@@ -2367,6 +2422,27 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2367 | } | 2422 | } |
2368 | else | 2423 | else |
2369 | { | 2424 | { |
2425 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d) | ||
2426 | if (rlv_handler_t::isEnabled()) | ||
2427 | { | ||
2428 | // Disallow if: 1) @tplure=n restricted (sender isn't an exception), or 2) @unsit=n restricted and currently sitting | ||
2429 | LLVOAvatar* pAvatar = gAgent.getAvatarObject(); | ||
2430 | if ( ( (gRlvHandler.hasBehaviour(RLV_BHVR_TPLURE)) && (!gRlvHandler.isException(RLV_BHVR_TPLURE, from_id)) ) || | ||
2431 | ( (gRlvHandler.hasBehaviour(RLV_BHVR_UNSIT)) && (pAvatar) && (pAvatar->mIsSitting) ) ) | ||
2432 | { | ||
2433 | rlvSendBusyMessage(from_id, rlv_handler_t::cstrMsgTpLure); | ||
2434 | return; | ||
2435 | } | ||
2436 | |||
2437 | // Censor teleport message if: 1) @revcim=n restricted (sender isn't an exception), or 2) @showloc=n restricted | ||
2438 | if ( ( (gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) && (!gRlvHandler.isException(RLV_BHVR_RECVIM, from_id)) ) || | ||
2439 | (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ) | ||
2440 | { | ||
2441 | message = rlv_handler_t::cstrHidden; | ||
2442 | } | ||
2443 | } | ||
2444 | // [/RLVa:KB] | ||
2445 | |||
2370 | LLSD args; | 2446 | LLSD args; |
2371 | // *TODO:translate -> [FIRST] [LAST] (maybe) | 2447 | // *TODO:translate -> [FIRST] [LAST] (maybe) |
2372 | args["NAME"] = name; | 2448 | args["NAME"] = name; |
@@ -2375,7 +2451,21 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) | |||
2375 | payload["from_id"] = from_id; | 2451 | payload["from_id"] = from_id; |
2376 | payload["lure_id"] = session_id; | 2452 | payload["lure_id"] = session_id; |
2377 | payload["godlike"] = FALSE; | 2453 | payload["godlike"] = FALSE; |
2378 | LLNotifications::instance().add("TeleportOffered", args, payload); | 2454 | //LLNotifications::instance().add("TeleportOffered", args, payload); |
2455 | |||
2456 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d) | Modified: RLVa-0.2.0b | ||
2457 | if ( (rlv_handler_t::isEnabled()) && | ||
2458 | ((gRlvHandler.hasBehaviour(RLV_BHVR_ACCEPTTP)) || (gRlvHandler.isException(RLV_BHVR_ACCEPTTP, from_id))) ) | ||
2459 | { | ||
2460 | gRlvHandler.setCanCancelTp(false); | ||
2461 | LLNotifications::instance().forceResponse(LLNotification::Params("TeleportOffered").payload(payload), 0); | ||
2462 | } | ||
2463 | else | ||
2464 | { | ||
2465 | LLNotifications::instance().add("TeleportOffered", args, payload); | ||
2466 | } | ||
2467 | // [/RLVa:KB] | ||
2468 | //LLNotifications::instance().add("TeleportOffered", args, payload); | ||
2379 | } | 2469 | } |
2380 | } | 2470 | } |
2381 | break; | 2471 | break; |
@@ -2657,8 +2747,9 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) | |||
2657 | // Make swirly things only for talking objects. (not script debug messages, though) | 2747 | // Make swirly things only for talking objects. (not script debug messages, though) |
2658 | // if (chat.mSourceType == CHAT_SOURCE_OBJECT | 2748 | // if (chat.mSourceType == CHAT_SOURCE_OBJECT |
2659 | // && chat.mChatType != CHAT_TYPE_DEBUG_MSG) | 2749 | // && chat.mChatType != CHAT_TYPE_DEBUG_MSG) |
2660 | // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | 2750 | // [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-10 (RLVa-1.0.0g) |
2661 | // Don't show swirly things for llOwnerSay() chat here because we handle those further down | 2751 | // Don't show swirly things for llOwnerSay() chat here because we handle those further down |
2752 | // RELEASE-RLVa: if this code changes, remember to change the code down below as well | ||
2662 | if ( (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) && | 2753 | if ( (chat.mSourceType == CHAT_SOURCE_OBJECT && chat.mChatType != CHAT_TYPE_DEBUG_MSG) && |
2663 | ((!rlv_handler_t::isEnabled()) || (CHAT_TYPE_OWNER != chat.mChatType)) ) | 2754 | ((!rlv_handler_t::isEnabled()) || (CHAT_TYPE_OWNER != chat.mChatType)) ) |
2664 | // [/RLVa:KB] | 2755 | // [/RLVa:KB] |
@@ -2985,7 +3076,7 @@ void process_teleport_start(LLMessageSystem *msg, void**) | |||
2985 | U32 teleport_flags = 0x0; | 3076 | U32 teleport_flags = 0x0; |
2986 | msg->getU32("Info", "TeleportFlags", teleport_flags); | 3077 | msg->getU32("Info", "TeleportFlags", teleport_flags); |
2987 | 3078 | ||
2988 | //if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) | 3079 | // if (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) |
2989 | // [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b | 3080 | // [RLVa:KB] - Checked: 2009-07-07 (RLVa-1.0.0d) | Added: RLVa-0.2.0b |
2990 | if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) ) | 3081 | if ( (teleport_flags & TELEPORT_FLAGS_DISABLE_CANCEL) || (!gRlvHandler.getCanCancelTp()) ) |
2991 | // [/RLVa:KB] | 3082 | // [/RLVa:KB] |
@@ -5365,8 +5456,32 @@ void process_script_question(LLMessageSystem *msg, void **user_data) | |||
5365 | payload["object_name"] = object_name; | 5456 | payload["object_name"] = object_name; |
5366 | payload["owner_name"] = owner_name; | 5457 | payload["owner_name"] = owner_name; |
5367 | 5458 | ||
5459 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0e | ||
5460 | S32 rlvQuestionsOther = questions; | ||
5461 | |||
5462 | if ( (rlv_handler_t::isEnabled()) && (gRlvHandler.hasBehaviour(RLV_BHVR_ACCEPTPERMISSION)) ) | ||
5463 | { | ||
5464 | LLViewerObject* pObj = gObjectList.findObject(taskid); | ||
5465 | if (pObj) | ||
5466 | { | ||
5467 | if (pObj->permYouOwner()) | ||
5468 | { | ||
5469 | // PERMISSION_TAKE_CONTROLS and PERMISSION_ATTACH are only auto-granted to objects this avie owns | ||
5470 | rlvQuestionsOther &= ~(LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_TAKE_CONTROLS] | | ||
5471 | LSCRIPTRunTimePermissionBits[SCRIPT_PERMISSION_ATTACH]); | ||
5472 | } | ||
5473 | } | ||
5474 | } | ||
5475 | |||
5476 | if ( (!caution) && (!rlvQuestionsOther) ) | ||
5477 | { | ||
5478 | LLNotifications::instance().forceResponse( | ||
5479 | LLNotification::Params("ScriptQuestion").substitutions(args).payload(payload), 0/*YES*/); | ||
5480 | } | ||
5481 | else if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) | ||
5482 | // [/RLVa:KB] | ||
5368 | // check whether cautions are even enabled or not | 5483 | // check whether cautions are even enabled or not |
5369 | if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) | 5484 | //if (gSavedSettings.getBOOL("PermissionsCautionEnabled")) |
5370 | { | 5485 | { |
5371 | // display the caution permissions prompt | 5486 | // display the caution permissions prompt |
5372 | LLNotifications::instance().add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload); | 5487 | LLNotifications::instance().add(caution ? "ScriptQuestionCaution" : "ScriptQuestion", args, payload); |
@@ -5697,6 +5812,21 @@ bool handle_lure_callback(const LLSD& notification, const LLSD& response) | |||
5697 | 5812 | ||
5698 | if(0 == option) | 5813 | if(0 == option) |
5699 | { | 5814 | { |
5815 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0b | ||
5816 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SENDIM)) | ||
5817 | { | ||
5818 | for (LLSD::array_const_iterator it = notification["payload"]["ids"].beginArray(); | ||
5819 | it != notification["payload"]["ids"].endArray(); ++it) | ||
5820 | { | ||
5821 | if (!gRlvHandler.isException(RLV_BHVR_SENDIM, it->asUUID())) | ||
5822 | { | ||
5823 | text = rlv_handler_t::cstrHidden; | ||
5824 | break; | ||
5825 | } | ||
5826 | } | ||
5827 | } | ||
5828 | // [/RLVa:KB] | ||
5829 | |||
5700 | LLMessageSystem* msg = gMessageSystem; | 5830 | LLMessageSystem* msg = gMessageSystem; |
5701 | msg->newMessageFast(_PREHASH_StartLure); | 5831 | msg->newMessageFast(_PREHASH_StartLure); |
5702 | msg->nextBlockFast(_PREHASH_AgentData); | 5832 | msg->nextBlockFast(_PREHASH_AgentData); |
@@ -5729,13 +5859,28 @@ void handle_lure(const LLUUID& invitee) | |||
5729 | void handle_lure(LLDynamicArray<LLUUID>& ids) | 5859 | void handle_lure(LLDynamicArray<LLUUID>& ids) |
5730 | { | 5860 | { |
5731 | LLSD edit_args; | 5861 | LLSD edit_args; |
5732 | edit_args["REGION"] = gAgent.getRegion()->getName(); | 5862 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-04 (RLVa-1.0.0a) |
5863 | edit_args["REGION"] = (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) ? gAgent.getRegion()->getName() : rlv_handler_t::cstrHidden; | ||
5864 | // [/RLVa:KB] | ||
5865 | //edit_args["REGION"] = gAgent.getRegion()->getName(); | ||
5733 | 5866 | ||
5734 | LLSD payload; | 5867 | LLSD payload; |
5735 | for (LLDynamicArray<LLUUID>::iterator it = ids.begin(); | 5868 | for (LLDynamicArray<LLUUID>::iterator it = ids.begin(); |
5736 | it != ids.end(); | 5869 | it != ids.end(); |
5737 | ++it) | 5870 | ++it) |
5738 | { | 5871 | { |
5872 | // [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-07 (RLVa-1.0.0d) | Modified: RLVa-1.0.0a | ||
5873 | // Only allow offering teleports if everyone is a @tplure exception or able to map this avie under @showloc=n | ||
5874 | if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) | ||
5875 | { | ||
5876 | const LLRelationship* pBuddyInfo = LLAvatarTracker::instance().getBuddyInfo(*it); | ||
5877 | if ( (!gRlvHandler.isException(RLV_BHVR_TPLURE, *it, RLV_CHECK_PERMISSIVE)) && | ||
5878 | ((!pBuddyInfo) || (!pBuddyInfo->isOnline()) || (!pBuddyInfo->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION))) ) | ||
5879 | { | ||
5880 | return; | ||
5881 | } | ||
5882 | } | ||
5883 | // [/RLVa:KB] | ||
5739 | payload["ids"].append(*it); | 5884 | payload["ids"].append(*it); |
5740 | } | 5885 | } |
5741 | if (gAgent.isGodlike()) | 5886 | if (gAgent.isGodlike()) |