Compare commits

..

14 Commits

Author SHA1 Message Date
Router Gray
5040275969 [CMake] Releases shouldn't speak Greek. 2020-04-04 06:47:39 -05:00
Liru Færs
1daccf40ee Move the FMOD Powered By text, for Torric and others 2020-04-04 07:28:19 -04:00
Shyotl
4fd302286b Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2020-04-03 06:02:48 -05:00
Shyotl
18f9f19e61 Textures mid-decode potentially processing of other textures until complete. Disabled UDP texture fetch fallback when connected to official grid. 2020-04-03 06:01:58 -05:00
Liru Færs
1de6d4461a Add missing EmergencyTeleportSeconds preference to System->Security
Thanks for the heads up about this missing preferences, and for the
Spanish translation, Damian!
2020-04-03 02:53:41 -04:00
Shyotl
4198f47ab6 Fix header breakage in debug/relwithdebug 2020-04-03 00:33:19 -05:00
Shyotl
d9049ba342 Handle AISAPI throttling and status 410 a bit better. 2020-04-02 21:47:07 -05:00
Shyotl
f75ac3e4c2 Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer.git 2020-04-02 20:09:53 -05:00
Liru Færs
06698deaca A couple more sim->region changes 2020-04-02 21:08:23 -04:00
Shyotl
445eb29bd3 Bring aisapi handling closer to LL (code 499 retry, match timeout values, etc) 2020-04-02 20:07:55 -05:00
Shyotl
cc034f6841 Fix inventory scrolling issue when navigating via keyboard. 2020-04-02 20:03:08 -05:00
Liru Færs
3c368651f1 Update crashpad, thanks Rye! 2020-04-02 20:39:01 -04:00
Damian Zhaoying
321730e384 More translations fixes in Area search and menu list owners. 2020-04-02 03:02:23 -03:00
Damian Zhaoying
c2fd88670f Fix some remaining spanish translations. 2020-04-02 02:36:20 -03:00
19 changed files with 152 additions and 71 deletions

View File

@@ -410,11 +410,11 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>4614b29cc98021cf1770a8290171602b</string> <string>a96fda7ad5cee967823f5c94390ba35b</string>
<key>hash_algorithm</key> <key>hash_algorithm</key>
<string>md5</string> <string>md5</string>
<key>url</key> <key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-ce32d093.7-windows-7.tar.bz2</string> <string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows/crashpad-c6d76a90.194-windows-194.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows</string> <string>windows</string>
@@ -424,18 +424,18 @@
<key>archive</key> <key>archive</key>
<map> <map>
<key>hash</key> <key>hash</key>
<string>d801461b7a6a40fffab828aa1e01e3e6</string> <string>5ff95ca1007ed2dc300b59de17453201</string>
<key>hash_algorithm</key> <key>hash_algorithm</key>
<string>md5</string> <string>md5</string>
<key>url</key> <key>url</key>
<string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-ce32d093.7-windows64-7.tar.bz2</string> <string>https://pkg.alchemyviewer.org/repository/autobuild-external/crashpad/windows64/crashpad-c6d76a90.194-windows64-194.tar.bz2</string>
</map> </map>
<key>name</key> <key>name</key>
<string>windows64</string> <string>windows64</string>
</map> </map>
</map> </map>
<key>version</key> <key>version</key>
<string>ce32d093.7</string> <string>c6d76a90.194</string>
</map> </map>
<key>curl</key> <key>curl</key>
<map> <map>

View File

@@ -270,6 +270,8 @@ if (NOT VIEWER_CHANNEL_GRK)
set(VIEWER_CHANNEL_GRK "\\u03B1") # "α" set(VIEWER_CHANNEL_GRK "\\u03B1") # "α"
elseif (VIEWER_CHANNEL_TYPE MATCHES "Beta") elseif (VIEWER_CHANNEL_TYPE MATCHES "Beta")
set(VIEWER_CHANNEL_GRK "\\u03B2") # "β" set(VIEWER_CHANNEL_GRK "\\u03B2") # "β"
else()
set(VIEWER_CHANNEL_GRK "")
endif () endif ()
endif (NOT VIEWER_CHANNEL_GRK) endif (NOT VIEWER_CHANNEL_GRK)

View File

@@ -353,10 +353,10 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
// NEW Macros for debugging, allow the passing of a string tag // NEW Macros for debugging, allow the passing of a string tag
#if SHOW_DEBUG #ifdef SHOW_DEBUG
#define DO_DEBUG_LOG if(true) #define DO_DEBUG_LOG
#else #else
#define DO_DEBUG_LOG if(false) #define DO_DEBUG_LOG if (false)
#endif #endif
// Pass comma separated list of tags (currently only supports up to 0, 1, or 2) // Pass comma separated list of tags (currently only supports up to 0, 1, or 2)

View File

@@ -960,4 +960,5 @@ P(webProfileResponders);
P(wholeModelFeeResponder); P(wholeModelFeeResponder);
P(wholeModelUploadResponder); P(wholeModelUploadResponder);
P2(XMLRPCResponder, connect_40s); P2(XMLRPCResponder, connect_40s);
P(getUpdateInfoResponder); P(getUpdateInfoResponder);
P2(AISAPIResponder, connect_60s);

View File

@@ -207,6 +207,7 @@ void LLPrefsAscentSys::refreshValues()
mDisplayScriptJumps = gSavedSettings.getBOOL("AscentDisplayTotalScriptJumps"); mDisplayScriptJumps = gSavedSettings.getBOOL("AscentDisplayTotalScriptJumps");
mNumScriptDiff = gSavedSettings.getF32("Ascentnumscriptdiff"); mNumScriptDiff = gSavedSettings.getF32("Ascentnumscriptdiff");
mReplaceLinks = gSavedSettings.getBOOL("SinguReplaceLinks"); mReplaceLinks = gSavedSettings.getBOOL("SinguReplaceLinks");
mEmergencySeconds = gSavedPerAccountSettings.getU32("EmergencyTeleportSeconds");
mLandmark = gSavedPerAccountSettings.getString("EmergencyTeleportLandmark"); mLandmark = gSavedPerAccountSettings.getString("EmergencyTeleportLandmark");
mLandmarkBackup = gSavedPerAccountSettings.getString("EmergencyTeleportLandmarkBackup"); mLandmarkBackup = gSavedPerAccountSettings.getString("EmergencyTeleportLandmarkBackup");
@@ -353,6 +354,7 @@ void LLPrefsAscentSys::cancel()
gSavedSettings.setBOOL("AscentDisplayTotalScriptJumps", mDisplayScriptJumps); gSavedSettings.setBOOL("AscentDisplayTotalScriptJumps", mDisplayScriptJumps);
gSavedSettings.setF32("Ascentnumscriptdiff", mNumScriptDiff); gSavedSettings.setF32("Ascentnumscriptdiff", mNumScriptDiff);
gSavedSettings.setBOOL("SinguReplaceLinks", mReplaceLinks); gSavedSettings.setBOOL("SinguReplaceLinks", mReplaceLinks);
gSavedPerAccountSettings.setU32("EmergencyTeleportSeconds", mEmergencySeconds);
gSavedPerAccountSettings.setString("EmergencyTeleportLandmark", mLandmark); gSavedPerAccountSettings.setString("EmergencyTeleportLandmark", mLandmark);
gSavedPerAccountSettings.setString("EmergencyTeleportLandmarkBackup", mLandmarkBackup); gSavedPerAccountSettings.setString("EmergencyTeleportLandmarkBackup", mLandmarkBackup);

View File

@@ -118,6 +118,7 @@ private:
bool mDisplayScriptJumps; bool mDisplayScriptJumps;
bool mReplaceLinks; bool mReplaceLinks;
F32 mNumScriptDiff; F32 mNumScriptDiff;
U32 mEmergencySeconds;
std::string mLandmark; std::string mLandmark;
std::string mLandmarkBackup; std::string mLandmarkBackup;

View File

@@ -40,11 +40,21 @@
/// Classes for AISv3 support. /// Classes for AISv3 support.
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
extern AIHTTPTimeoutPolicy AISAPIResponder_timeout;
class AISCommand final : public LLHTTPClient::ResponderWithCompleted class AISCommand final : public LLHTTPClient::ResponderWithCompleted
{ {
public: public:
typedef boost::function<void()> command_func_type; typedef boost::function<void()> command_func_type;
// AISCommand - base class for retry-able HTTP requests using the AISv3 cap. // AISCommand - base class for retry-able HTTP requests using the AISv3 cap.
// Limit max in flight requests to 2. Server was aggressively throttling otherwise.
constexpr static U8 sMaxActiveAISCommands = 4;
static U8 sActiveAISCommands;
static std::queue< boost::intrusive_ptr< AISCommand > > sPendingAISCommands;
virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return AISAPIResponder_timeout; }
AISCommand(AISAPI::COMMAND_TYPE type, const char* name, const LLUUID& targetId, AISAPI::completion_t callback) : AISCommand(AISAPI::COMMAND_TYPE type, const char* name, const LLUUID& targetId, AISAPI::completion_t callback) :
mCommandFunc(NULL), mCommandFunc(NULL),
mRetryPolicy(new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10)), mRetryPolicy(new LLAdaptiveRetryPolicy(1.0, 32.0, 2.0, 10)),
@@ -53,10 +63,30 @@ public:
mName(name), mName(name),
mType(type) mType(type)
{} {}
virtual ~AISCommand()
{
if (mActive)
{
--sActiveAISCommands;
while (sActiveAISCommands < sMaxActiveAISCommands && !sPendingAISCommands.empty())
{
sPendingAISCommands.front()->dispatch();
sPendingAISCommands.pop();
}
}
}
void run( command_func_type func ) void run( command_func_type func )
{ {
(mCommandFunc = func)(); mCommandFunc = func;
if (sActiveAISCommands >= sMaxActiveAISCommands)
{
sPendingAISCommands.push(this);
}
else
{
dispatch();
}
} }
char const* getName(void) const override char const* getName(void) const override
@@ -64,6 +94,17 @@ public:
return mName; return mName;
} }
private:
void dispatch()
{
if (LLApp::isQuitting())
{
return;
}
++sActiveAISCommands;
mActive = true;
(mCommandFunc)();
}
void markComplete() void markComplete()
{ {
// Command func holds a reference to self, need to release it // Command func holds a reference to self, need to release it
@@ -72,42 +113,56 @@ public:
mRetryPolicy->onSuccess(); mRetryPolicy->onSuccess();
} }
void malformedResponse() { mStatus = HTTP_INTERNAL_ERROR_OTHER; mReason = llformat("Malformed response contents (original code: %d)", mStatus); }
bool onFailure() bool onFailure()
{ {
bool retry = mStatus != HTTP_INTERNAL_ERROR_OTHER && mStatus != 410; // We handle these and stop mRetryPolicy->onFailure(mStatus, getResponseHeaders());
LL_WARNS("Inventory") << "Inventory error: " << dumpResponse() << LL_ENDL;
if (retry) mRetryPolicy->onFailure(mStatus, getResponseHeaders());
F32 seconds_to_wait; F32 seconds_to_wait;
if (retry && mRetryPolicy->shouldRetry(seconds_to_wait)) if (mRetryPolicy->shouldRetry(seconds_to_wait))
{ {
if (mStatus == 503)
{
// Pad delay a bit more since we're getting throttled.
seconds_to_wait += 10.f + ll_frand(4.f);
}
LL_WARNS("Inventory") << "Retrying in " << seconds_to_wait << "seconds due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
doAfterInterval(mCommandFunc,seconds_to_wait); doAfterInterval(mCommandFunc,seconds_to_wait);
return true;
} }
else else
{ {
// Command func holds a reference to self, need to release it // Command func holds a reference to self, need to release it
// after a success or final failure. // after a success or final failure.
// *TODO: Notify user? This seems bad. // *TODO: Notify user? This seems bad.
LL_WARNS("Inventory") << "Abort due to inventory error for " << getName() <<": " << dumpResponse() << LL_ENDL;
mCommandFunc = no_op; mCommandFunc = no_op;
return false;
} }
return retry;
} }
protected: protected:
void httpCompleted() override void httpCompleted() override
{ {
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType); // Continue through if successful or longer retrying,
if (isGoodStatus(mStatus) || !onFailure())
{
markComplete();
AISAPI::InvokeAISCommandCoro(this, getURL(), mTargetId, getContent(), mCompletionFunc, (AISAPI::COMMAND_TYPE)mType);
}
} }
private:
command_func_type mCommandFunc; command_func_type mCommandFunc;
LLPointer<LLHTTPRetryPolicy> mRetryPolicy; LLPointer<LLHTTPRetryPolicy> mRetryPolicy;
AISAPI::completion_t mCompletionFunc; AISAPI::completion_t mCompletionFunc;
const LLUUID mTargetId; const LLUUID mTargetId;
const char* mName; const char* mName;
bool mActive = false;
AISAPI::COMMAND_TYPE mType; AISAPI::COMMAND_TYPE mType;
}; };
U8 AISCommand::sActiveAISCommands = 0;
std::queue< boost::intrusive_ptr< AISCommand > > AISCommand::sPendingAISCommands;
//========================================================================= //=========================================================================
const std::string AISAPI::INVENTORY_CAP_NAME("InventoryAPIv3"); const std::string AISAPI::INVENTORY_CAP_NAME("InventoryAPIv3");
const std::string AISAPI::LIBRARY_CAP_NAME("LibraryAPIv3"); const std::string AISAPI::LIBRARY_CAP_NAME("LibraryAPIv3");
@@ -312,21 +367,18 @@ void AISAPI::UpdateItem(const LLUUID &itemId, const LLSD &updates, completion_t
boost::intrusive_ptr< AISCommand > responder = new AISCommand(UPDATEITEM, "UpdateItem",itemId, callback); boost::intrusive_ptr< AISCommand > responder = new AISCommand(UPDATEITEM, "UpdateItem",itemId, callback);
responder->run(boost::bind(&LLHTTPClient::patch, url, updates, responder/*,*/ DEBUG_CURLIO_PARAM(debug_off), keep_alive, (AIStateMachine*)NULL, 0)); responder->run(boost::bind(&LLHTTPClient::patch, url, updates, responder/*,*/ DEBUG_CURLIO_PARAM(debug_off), keep_alive, (AIStateMachine*)NULL, 0));
} }
void AISAPI::InvokeAISCommandCoro(AISCommand* responder, void AISAPI::InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
std::string url, std::string url,
LLUUID targetId, LLSD result, completion_t callback, COMMAND_TYPE type) LLUUID targetId, LLSD result, completion_t callback, COMMAND_TYPE type)
{ {
LL_DEBUGS("Inventory") << "url: " << url << LL_ENDL; LL_DEBUGS("Inventory") << "url: " << url << LL_ENDL;
auto status = responder->getStatus(); auto status = responder->getStatus();
if (!responder->isGoodStatus(status) || !result.isMap()) if (!responder->isGoodStatus(status) || !result.isMap())
{ {
if (!result.isMap()) LL_WARNS("Inventory") << "Inventory error: " << status << ": " << responder->getReason() << LL_ENDL;
{ if (status == 410) //GONE
responder->malformedResponse();
}
else if (status == 410) //GONE
{ {
// Item does not exist or was already deleted from server. // Item does not exist or was already deleted from server.
// parent folder is out of sync // parent folder is out of sync
@@ -360,11 +412,12 @@ void AISAPI::InvokeAISCommandCoro(AISCommand* responder,
} }
} }
} }
// Keep these statuses accounted for in the responder too if (!result.isMap())
if (responder->onFailure()) // If we're retrying, exit early. {
return; LL_WARNS("Inventory") << "Inventory error: Malformed response contents" << LL_ENDL;
}
LL_WARNS("Inventory") << ll_pretty_print_sd(result) << LL_ENDL;
} }
else responder->markComplete();
gInventory.onAISUpdateReceived("AISCommand", result); gInventory.onAISUpdateReceived("AISCommand", result);

View File

@@ -72,7 +72,7 @@ private:
static std::string getInvCap(); static std::string getInvCap();
static std::string getLibCap(); static std::string getLibCap();
static void InvokeAISCommandCoro(class AISCommand* responder, static void InvokeAISCommandCoro(LLHTTPClient::ResponderWithCompleted* responder,
std::string url, LLUUID targetId, LLSD body, std::string url, LLUUID targetId, LLSD body,
completion_t callback, COMMAND_TYPE type); completion_t callback, COMMAND_TYPE type);
}; };

View File

@@ -2010,7 +2010,7 @@ void LLFolderView::scrollToShowSelection()
// However we allow scrolling for folder views with mAutoSelectOverride // However we allow scrolling for folder views with mAutoSelectOverride
// (used in Places SP) as an exception because the selection in them // (used in Places SP) as an exception because the selection in them
// is not reset during items filtering. See STORM-133. // is not reset during items filtering. See STORM-133.
if ( (!LLInventoryModelBackgroundFetch::instance().folderFetchActive() || mAutoSelectOverride) if ( (LLInventoryModelBackgroundFetch::instance().isEverythingFetched() || mAutoSelectOverride)
&& mSelectedItems.size() ) && mSelectedItems.size() )
{ {
mNeedsScroll = TRUE; mNeedsScroll = TRUE;

View File

@@ -872,7 +872,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
mCacheReadCount(0U), mCacheReadCount(0U),
mCacheWriteCount(0U) mCacheWriteCount(0U)
{ {
mCanUseNET = mUrl.empty() ; mCanUseNET = mUrl.empty() && !gHippoGridManager->getConnectedGrid()->isSecondLife();
if (!mCanUseNET) if (!mCanUseNET)
{ {
@@ -1236,9 +1236,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mState == LOAD_FROM_NETWORK) if (mState == LOAD_FROM_NETWORK)
{ {
static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP"); static LLCachedControl<bool> use_http(gSavedSettings,"ImagePipelineUseHTTP");
bool is_sl = gHippoGridManager->getConnectedGrid()->isSecondLife();
// if (mHost != LLHost::invalid) use_http = false; // if (mHost != LLHost::invalid) use_http = false;
if (use_http && mCanUseHTTP && mUrl.empty()) // get http url. if ((is_sl || use_http) && mCanUseHTTP && mUrl.empty()) // get http url.
{ {
LLViewerRegion* region = NULL; LLViewerRegion* region = NULL;
if (mHost == LLHost::invalid) if (mHost == LLHost::invalid)
@@ -1280,6 +1281,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
mWriteToCacheState = CAN_WRITE; mWriteToCacheState = CAN_WRITE;
} }
if (!mUrl.empty() && SGHostBlackList::isBlacklisted(mUrl)){ if (!mUrl.empty() && SGHostBlackList::isBlacklisted(mUrl)){
LL_DEBUGS("Texture") << mID << "Blacklisted" << LL_ENDL;
mCanUseHTTP = false; mCanUseHTTP = false;
} }
if (mCanUseHTTP && !mUrl.empty()) if (mCanUseHTTP && !mUrl.empty())
@@ -1292,7 +1294,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
} }
// don't return, fall through to next state // don't return, fall through to next state
} }
else if (mSentRequest == UNSENT && mCanUseNET) else if (!mCanUseNET)
{
LL_WARNS(LOG_TXT) << mID << "Unable to retrieve texture via HTTP and UDP unavailable (probable 404): " << mUrl << LL_ENDL;
return true;
}
else if (mSentRequest == UNSENT)
{ {
LL_DEBUGS("Texture") << mID << " moving to UDP fetch. mSentRequest=" << mSentRequest << " mCanUseNET = " << mCanUseNET << LL_ENDL; LL_DEBUGS("Texture") << mID << " moving to UDP fetch. mSentRequest=" << mSentRequest << " mCanUseNET = " << mCanUseNET << LL_ENDL;
setState(SEND_UDP_REQ); setState(SEND_UDP_REQ);
@@ -1821,6 +1828,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
S32 discard = mHaveAllData ? 0 : mLoadedDiscard; S32 discard = mHaveAllData ? 0 : mLoadedDiscard;
U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority; U32 image_priority = LLWorkerThread::PRIORITY_NORMAL | mWorkPriority;
mDecoded = FALSE; mDecoded = FALSE;
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
setState(DECODE_IMAGE_UPDATE); setState(DECODE_IMAGE_UPDATE);
LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard LL_DEBUGS(LOG_TXT) << mID << ": Decoding. Bytes: " << mFormattedImage->getDataSize() << " Discard: " << discard
<< " All Data: " << mHaveAllData << LL_ENDL; << " All Data: " << mHaveAllData << LL_ENDL;

View File

@@ -9950,7 +9950,7 @@ You cannot copy your selection because the object '[OBJ_NAME]' is not transferra
name="NoPermsNoRemoval" name="NoPermsNoRemoval"
type="notify"> type="notify">
<tag>fail</tag> <tag>fail</tag>
Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system. Removal of the object '[OBJ_NAME]' from the region is disallowed by the permissions system.
</notification> </notification>
<notification <notification
@@ -10221,7 +10221,7 @@ Unable to add script!
name="AssetServerTimeoutObjReturn" name="AssetServerTimeoutObjReturn"
type="notify"> type="notify">
<tag>fail</tag> <tag>fail</tag>
Asset server didn't respond in a timely fashion. Object returned to sim. Asset server didn't respond in a timely fashion. Object returned to region.
</notification> </notification>
<notification <notification
@@ -11694,7 +11694,7 @@ Media/audio URL blocked for [DOMAIN]
name="RadarChatKeysRequest" name="RadarChatKeysRequest"
type="alertmodal"> type="alertmodal">
An object owned by you has requested keys from your radar. An object owned by you has requested keys from your radar.
Would you like to enable announcing keys to objects in the sim? Would you like to enable announcing keys to objects in the region?
<usetemplate <usetemplate
name="yesnocancelbuttons" name="yesnocancelbuttons"
yestext="Yes" yestext="Yes"

View File

@@ -80,8 +80,8 @@
<button bottom_delta="0" left="146" height="16" width="16" follows="left|bottom" image_overlay="inv_folder_trash.tga" scale_image="true" label="" tool_tip="Delete the currently selected remembered login info, if any." name="remove_login"/> <button bottom_delta="0" left="146" height="16" width="16" follows="left|bottom" image_overlay="inv_folder_trash.tga" scale_image="true" label="" tool_tip="Delete the currently selected remembered login info, if any." name="remove_login"/>
<check_box bottom_delta="0" left="173" control_name="RememberPassword" follows="left|bottom" height="16" label="Save password" name="remember_check" width="158"/> <check_box bottom_delta="0" left="173" control_name="RememberPassword" follows="left|bottom" height="16" label="Save password" name="remember_check" width="158"/>
<text name="fmod_text" value="Powered By" bottom="42" height="16" left="-425" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/> <icon name="fmod_logo" bottom="10" height="40" left="-341" width="152" follows="right|bottom" image_name="FMOD_Logo"/>
<icon name="fmod_logo" bottom_delta="-32" height="40" left_delta="84" width="152" follows="right|bottom" image_name="FMOD_Logo"/> <text name="fmod_text" value="Powered By" bottom_delta="40" height="16" left_delta="36" width="84" follows="right|bottom" font="SansSerif" font_style="BOLD" font_size="Large"/>
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
bottom="45" drop_shadow_visible="true" follows="right|bottom" bottom="45" drop_shadow_visible="true" follows="right|bottom"

View File

@@ -115,8 +115,9 @@
<spinner bottom_delta="0" decimal_digits="0" follows="top" height="16" increment="1" left_delta="210" max_val="9999" min_val="1" name="ScriptJumpCount" width="50" control_name="Ascentnumscriptdiff" tool_tip="Threshold for the script jump message [Default: 100]"/> <spinner bottom_delta="0" decimal_digits="0" follows="top" height="16" increment="1" left_delta="210" max_val="9999" min_val="1" name="ScriptJumpCount" width="50" control_name="Ascentnumscriptdiff" tool_tip="Threshold for the script jump message [Default: 100]"/>
<check_box bottom_delta="-20" left="10" follows="top" label="Restrained Love API Support (RLVa)" name="RestrainedLove" control_name="RestrainedLove" tool_tip="Allows scripts to take greater control of the viewer, if you wear compliant objects."/> <check_box bottom_delta="-20" left="10" follows="top" label="Restrained Love API Support (RLVa)" name="RestrainedLove" control_name="RestrainedLove" tool_tip="Allows scripts to take greater control of the viewer, if you wear compliant objects."/>
<check_box bottom_delta="-20" follows="top" label="Replace slurls and formatted links with labels" name="SinguReplaceLinks" control_name="SinguReplaceLinks" tool_tip="While you can right click to see where they really lead by copying them, this does allow links to be misleading at first glance."/> <check_box bottom_delta="-20" follows="top" label="Replace slurls and formatted links with labels" name="SinguReplaceLinks" control_name="SinguReplaceLinks" tool_tip="While you can right click to see where they really lead by copying them, this does allow links to be misleading at first glance."/>
<text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport there in the last 20 seconds before region restarts</text> <text name="EmergencyTeleportDesc" left="14" bottom_delta="-12" follows="top">Drop a landmark below to autoteleport to before region restarts</text>
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/> <spinner name="EmergencyTeleportSeconds" label="Seconds before restart to begin teleport attempts" label_width="380" width="432" control_name="EmergencyTeleportSeconds" bottom_delta="-26" decimal_digits="0" max_val="3600" min_val="0" follows="left|top" height="18" increment="1"/>
<drop_target control_name="EmergencyTeleportLandmark" bottom_delta="-4" left="15" height="17" name="emergency_teleport_landmark_drop" width="430"/>
<text name="EmergencyTeleportBackupDesc" halign="center" width="432" left="14" bottom_delta="-26" follows="top">Drop a backup landmark to autoteleport to below, should you already be at above</text> <text name="EmergencyTeleportBackupDesc" halign="center" width="432" left="14" bottom_delta="-26" follows="top">Drop a backup landmark to autoteleport to below, should you already be at above</text>
<drop_target control_name="EmergencyTeleportLandmarkBackup" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_backup_drop" width="430"/> <drop_target control_name="EmergencyTeleportLandmarkBackup" bottom_delta="-8" left="15" height="17" name="emergency_teleport_landmark_backup_drop" width="430"/>
</panel> </panel>

View File

@@ -22,6 +22,8 @@
<column name="Owner" label="Propietario" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/> <column name="Owner" label="Propietario" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
<column name="Group" label="Grupo" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/> <column name="Group" label="Grupo" tool_tip="Haz doble click en cualquier resultado para marcar su posición"/>
</scroll_list> </scroll_list>
<button name="TP" label="TP"/>
<button name="Look" label="Ver"/>
<text name="counter"> <text name="counter">
Listados/Pendientes/Total Listados/Pendientes/Total
</text> </text>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<menu label="Grupos" name="groups_menu"> <menu label="Grupos" name="groups_menu">
<menu_item_call label="Mostrar Perfil" name="show_group"/> <menu_item_call label="Mostrar Información del Grupo" name="show_group"/>
<menu_item_call label="Abrir chat del grupo" name="im_group"/> <menu_item_call label="Abrir chat del grupo" name="im_group"/>
<menu_item_call label="LLamar en el grupo" name="call_group"/> <menu_item_call label="Abrir chat del Grupo" name="call_group"/>
<menu_item_call label="Activar Grupo" name="activate_group"/> <menu_item_call label="Activar Grupo" name="activate_group"/>
<menu_item_call label="Hisotiral de chat" name="Chat History"/> <menu_item_call label="Historial de chat" name="Chat History"/>
<menu_item_call label="Unirse al Grupo" name="join_group"/> <menu_item_call label="Unirse al Grupo" name="join_group"/>
<menu_item_call label="Abandonar el Grupo" name="leave_group"/> <menu_item_call label="Abandonar el Grupo" name="leave_group"/>
<menu_item_call label="Copiar Nombre" name="copy_name"/> <menu_item_call label="Copiar Nombre" name="copy_name"/>

View File

@@ -1,27 +1,31 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<menu label="Propietario" name="Object Owner Submenu"> <menu label="Propietario" name="Object Owner Submenu">
<menu_item_call label="Perfil" name="Profile"/> <menu_item_call label="Perfil" name="Profile"/>
<menu name="Acciones" label="Actions"/> <menu name="Actions" label="Acciones">
<menu_item_call label="Pagar" name="Pay"/> <menu_item_call label="Perfil Web" name="Web Profile"/>
<menu_item_call label="Mensaje Instantáneo" name="Instant Message"/> <menu_item_call label="Pagar" name="Pay"/>
<menu_item_call label="Conferencia" name="Conference Chat"/> <menu_item_call label="Mensaje Instantáneo" name="Instant Message"/>
<menu_item_call label="Llamar" name="Call"/> <menu_item_call label="Conferencia" name="Conference Chat"/>
<menu_item_call label="Llamar Conferencia" name="Conference Call"/> <menu_item_call label="Llamar" name="Call"/>
<menu_item_call label="Ofrecer Amistad" name="Add Friend"/> <menu_item_call label="Llamar Conferencia" name="Conference Call"/>
<menu_item_call label="Quitar Amistad" name="Remove Friend"/> <menu_item_call label="Ofrecer Amistad" name="Add Friend"/>
<menu_item_call label="Invitar a un Grupo" name="Invite To Group"/> <menu_item_call label="Quitar Amistad" name="Remove Friend"/>
<menu_item_call label="Seguir" name="Follow"/> <menu_item_call label="Invitar a un Grupo" name="Invite To Group"/>
<menu_item_call label="Movea A" name="Move To"/> <menu_item_call label="Seguir" name="Follow"/>
<menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/> <menu_item_call label="Mover A" name="Move To"/>
<menu_item_call label="Teleportar A" name="Teleport To"/> <menu_item_call label="Ofrecer Teleporte" name="Offer Teleport"/>
<menu_item_call label="Solicitar Teleporte" name="Request Teleport"/> <menu_item_call label="Teleportar A" name="Teleport To"/>
<menu_item_call label="Encontrar en el Mapa" name="Find on Map"/> <menu_item_call label="Solicitar Teleporte" name="Request Teleport"/>
<menu_item_call label="Compartir" name="Share"/> <menu_item_call label="Encontrar en el Mapa" name="Find on Map"/>
<menu_item_call label="Historial de Chat" name="Chat History"/> <menu_item_call label="Compartir" name="Share"/>
<menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/> <menu_item_call label="Historial de Chat" name="Chat History"/>
<menu name="Copiar" label="Copy"/> <menu_item_call label="Rastrear/No Rastrear" name="Track/Untrack"/>
<menu_item_call label="Nombre" name="Copy Name"/> </menu>
<menu_item_call label="SLURL" name="Copy SLURL"/> <menu name="Copy" label="Copiar">
<menu_item_call label="UUID" name="Copy Key"/>
<menu_item_call label="Nombre" name="Copy Name"/>
<menu_item_call label="SLURL" name="Copy SLURL"/>
</menu>
<menu_item_call label="Enfocar" name="Focus"/> <menu_item_call label="Enfocar" name="Focus"/>
<menu label="Moderación" name="Moderation" create_jump_keys=""> <menu label="Moderación" name="Moderation" create_jump_keys="">
<menu_item_call label="Silenciar" name="Mute"/> <menu_item_call label="Silenciar" name="Mute"/>

View File

@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<context_menu name="Url Popup"> <context_menu label="Grupo" name="Url Popup">
<menu_item_call label="Mostrar la información del grupo" name="show_group"/> <menu_item_call label="Mostrar la información del grupo" name="show_group"/>
<menu_item_call label="Abrir chat del grupo" name="im_group"/>
<menu_item_call label="Llamar en el grupo" name="call_group"/>
<menu_item_call label="Activar Grupo" name="activate_group"/>
<menu_item_call label="Historial de Chat" name="Chat History"/>
<menu_item_call label="Unirse al Grupo" name="join_group"/>
<menu_item_call label="Abandonar el Grupo" name="leave_group"/>
<menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/> <menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/>
<menu_item_call label="Copiar SLurl al portapapeles" name="url_copy"/> <menu_item_call label="Copiar SLurl al portapapeles" name="url_copy"/>
<menu_item_call label="Copiar Key al portapapeles" name="key_copy"/> <menu_item_call label="Copiar UUID al portapapeles" name="key_copy"/>
<menu_item_call label="Seleccionar Todo" name="Select All"/> <menu_item_call label="Seleccionar Todo" name="Select All"/>
</context_menu> </context_menu>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<context_menu label="Propietario" name="Object Owner Submenu"> <context_menu label="Propietario" name="Object Owner Submenu">
<menu_item_call label="Enviar MI..." name="send_im"/> <menu_item_call label="Enviar MI..." name="send_im"/>
<menu name="Acciones" label="Actions"> <menu name="Actions" label="Acciones">
<menu_item_call label="Perfil" name="Profile"/> <menu_item_call label="Perfil" name="Profile"/>
<menu_item_call label="Perfil Web" name="Web Profile"/> <menu_item_call label="Perfil Web" name="Web Profile"/>
<menu_item_call label="Pagar" name="Pay"/> <menu_item_call label="Pagar" name="Pay"/>

View File

@@ -135,7 +135,8 @@
<spinner left_delta="270" name="ScriptJumpCount" tool_tip="Umbral para el mensaje de salto de scripts [Predeterminado: 100]"/> <spinner left_delta="270" name="ScriptJumpCount" tool_tip="Umbral para el mensaje de salto de scripts [Predeterminado: 100]"/>
<check_box label="Soporte API Restrained Love (RLVa)" name="RestrainedLove" tool_tip="Permite a los scripts tomar control del visor, si tienes vestido un objeto compatible con RLVa."/> <check_box label="Soporte API Restrained Love (RLVa)" name="RestrainedLove" tool_tip="Permite a los scripts tomar control del visor, si tienes vestido un objeto compatible con RLVa."/>
<check_box label="Reemplazar slurls y enlaces con etiquetas" name="SinguReplaceLinks" tool_tip="Si bien puedes hacer clic con el botón derecho para ver a dónde conducen realmente al copiarlos, esto puede hacer que los enlaces sean confusos a primera vista."/> <check_box label="Reemplazar slurls y enlaces con etiquetas" name="SinguReplaceLinks" tool_tip="Si bien puedes hacer clic con el botón derecho para ver a dónde conducen realmente al copiarlos, esto puede hacer que los enlaces sean confusos a primera vista."/>
<text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito para autoteleportarte en los últimos 20 segundos previos al reinicio de región</text> <text name="EmergencyTeleportDesc" bottom_delta="-20" >Arrastra un hito debajo para autoteleportarte antes del reinicio de la región</text>
<spinner name="EmergencyTeleportSeconds" label="Comenzar intentos de teleporte antes del reinicio, en segundos"/>
<drop_target name="emergency_teleport_landmark_drop" bottom_delta="-15" width="450"/> <drop_target name="emergency_teleport_landmark_drop" bottom_delta="-15" width="450"/>
<text name="EmergencyTeleportBackupDesc" width="440" bottom_delta="-30" > <text name="EmergencyTeleportBackupDesc" width="440" bottom_delta="-30" >
Suelta aquí un hito de resguardo para autoteleportarte, si ya tienes uno en el ítem anterior</text> Suelta aquí un hito de resguardo para autoteleportarte, si ya tienes uno en el ítem anterior</text>