Client-side maturity handling when teleporting. Adds new notification that asks if you want to change maturity settings with a single click and automatically re-fire the teleport request.
This commit is contained in:
@@ -646,6 +646,12 @@ AIHTTPTimeoutPolicyBase transfer_18s(AIHTTPTimeoutPolicyBase::getDebugSettingsCu
|
||||
transactionOp18s
|
||||
);
|
||||
|
||||
// This used to be '30 seconds'.
|
||||
Transaction transactionOp30s(30);
|
||||
AIHTTPTimeoutPolicyBase transfer_30s(AIHTTPTimeoutPolicyBase::getDebugSettingsCurlTimeout(),
|
||||
transactionOp30s
|
||||
);
|
||||
|
||||
// This used to be '300 seconds'. We derive this from the hardcoded result so users can't mess with it.
|
||||
Transaction transactionOp300s(300);
|
||||
AIHTTPTimeoutPolicyBase transfer_300s(HTTPTimeoutPolicy_default,
|
||||
@@ -852,6 +858,7 @@ P(lcl_responder);
|
||||
P(MPImportGetResponder);
|
||||
P(MPImportPostResponder);
|
||||
P(mapLayerResponder);
|
||||
P(maturityPreferences, transfer_30s);
|
||||
P(mediaTypeResponder);
|
||||
P(meshDecompositionResponder);
|
||||
P(meshHeaderResponder);
|
||||
|
||||
@@ -130,6 +130,104 @@ std::string gAuthString;
|
||||
LLUUID gReSitTargetID;
|
||||
LLVector3 gReSitOffset;
|
||||
// </edit>
|
||||
class LLTeleportRequest
|
||||
{
|
||||
public:
|
||||
enum EStatus
|
||||
{
|
||||
kPending,
|
||||
kStarted,
|
||||
kFailed,
|
||||
kRestartPending
|
||||
};
|
||||
|
||||
LLTeleportRequest();
|
||||
virtual ~LLTeleportRequest();
|
||||
|
||||
EStatus getStatus() const {return mStatus;};
|
||||
void setStatus(EStatus pStatus) {mStatus = pStatus;};
|
||||
|
||||
virtual bool canRestartTeleport();
|
||||
|
||||
virtual void startTeleport() = 0;
|
||||
virtual void restartTeleport();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
EStatus mStatus;
|
||||
};
|
||||
|
||||
class LLTeleportRequestViaLandmark : public LLTeleportRequest
|
||||
{
|
||||
public:
|
||||
LLTeleportRequestViaLandmark(const LLUUID &pLandmarkId);
|
||||
virtual ~LLTeleportRequestViaLandmark();
|
||||
|
||||
virtual bool canRestartTeleport();
|
||||
|
||||
virtual void startTeleport();
|
||||
virtual void restartTeleport();
|
||||
|
||||
protected:
|
||||
inline const LLUUID &getLandmarkId() const {return mLandmarkId;};
|
||||
|
||||
private:
|
||||
LLUUID mLandmarkId;
|
||||
};
|
||||
|
||||
class LLTeleportRequestViaLure : public LLTeleportRequestViaLandmark
|
||||
{
|
||||
public:
|
||||
LLTeleportRequestViaLure(const LLUUID &pLureId, BOOL pIsLureGodLike);
|
||||
virtual ~LLTeleportRequestViaLure();
|
||||
|
||||
virtual bool canRestartTeleport();
|
||||
|
||||
virtual void startTeleport();
|
||||
|
||||
protected:
|
||||
inline BOOL isLureGodLike() const {return mIsLureGodLike;};
|
||||
|
||||
private:
|
||||
BOOL mIsLureGodLike;
|
||||
};
|
||||
|
||||
class LLTeleportRequestViaLocation : public LLTeleportRequest
|
||||
{
|
||||
public:
|
||||
LLTeleportRequestViaLocation(const LLVector3d &pPosGlobal);
|
||||
virtual ~LLTeleportRequestViaLocation();
|
||||
|
||||
virtual bool canRestartTeleport();
|
||||
|
||||
virtual void startTeleport();
|
||||
virtual void restartTeleport();
|
||||
|
||||
protected:
|
||||
inline const LLVector3d &getPosGlobal() const {return mPosGlobal;};
|
||||
|
||||
private:
|
||||
LLVector3d mPosGlobal;
|
||||
};
|
||||
|
||||
|
||||
class LLTeleportRequestViaLocationLookAt : public LLTeleportRequestViaLocation
|
||||
{
|
||||
public:
|
||||
LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal);
|
||||
virtual ~LLTeleportRequestViaLocationLookAt();
|
||||
|
||||
virtual bool canRestartTeleport();
|
||||
|
||||
virtual void startTeleport();
|
||||
virtual void restartTeleport();
|
||||
|
||||
protected:
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
//--------------------------------------------------------------------
|
||||
// Statics
|
||||
//
|
||||
@@ -200,6 +298,19 @@ LLAgent::LLAgent() :
|
||||
mbTeleportKeepsLookAt(false),
|
||||
|
||||
mAgentAccess(new LLAgentAccess(gSavedSettings)),
|
||||
mGodLevelChangeSignal(),
|
||||
mCanEditParcel(false),
|
||||
mTeleportRequest(),
|
||||
mTeleportFinishedSlot(),
|
||||
mTeleportFailedSlot(),
|
||||
mIsMaturityRatingChangingDuringTeleport(false),
|
||||
mMaturityRatingChange(0U),
|
||||
mIsDoSendMaturityPreferenceToServer(false),
|
||||
mMaturityPreferenceRequestId(0U),
|
||||
mMaturityPreferenceResponseId(0U),
|
||||
mMaturityPreferenceNumRetries(0U),
|
||||
mLastKnownRequestMaturity(SIM_ACCESS_MIN),
|
||||
mLastKnownResponseMaturity(SIM_ACCESS_MIN),
|
||||
mTeleportState( TELEPORT_NONE ),
|
||||
mRegionp(NULL),
|
||||
|
||||
@@ -276,9 +387,21 @@ void LLAgent::init()
|
||||
|
||||
gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2));
|
||||
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2));
|
||||
mLastKnownResponseMaturity = static_cast<U8>(gSavedSettings.getU32("PreferredMaturity"));
|
||||
mLastKnownRequestMaturity = mLastKnownResponseMaturity;
|
||||
mIsDoSendMaturityPreferenceToServer = true;
|
||||
|
||||
LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback));
|
||||
|
||||
if (!mTeleportFinishedSlot.connected())
|
||||
{
|
||||
mTeleportFinishedSlot = LLViewerParcelMgr::getInstance()->setTeleportFinishedCallback(boost::bind(&LLAgent::handleTeleportFinished, this));
|
||||
}
|
||||
if (!mTeleportFailedSlot.connected())
|
||||
{
|
||||
mTeleportFailedSlot = LLViewerParcelMgr::getInstance()->setTeleportFailedCallback(boost::bind(&LLAgent::handleTeleportFailed, this));
|
||||
}
|
||||
|
||||
mInitialized = TRUE;
|
||||
}
|
||||
|
||||
@@ -291,6 +414,14 @@ void LLAgent::cleanup()
|
||||
if(mPendingLure)
|
||||
delete mPendingLure;
|
||||
mPendingLure = NULL;
|
||||
if (mTeleportFinishedSlot.connected())
|
||||
{
|
||||
mTeleportFinishedSlot.disconnect();
|
||||
}
|
||||
if (mTeleportFailedSlot.connected())
|
||||
{
|
||||
mTeleportFailedSlot.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2374,38 +2505,271 @@ int LLAgent::convertTextToMaturity(char text)
|
||||
return LLAgentAccess::convertTextToMaturity(text);
|
||||
}
|
||||
|
||||
bool LLAgent::sendMaturityPreferenceToServer(int preferredMaturity)
|
||||
extern AIHTTPTimeoutPolicy maturityPreferences_timeout;
|
||||
class LLMaturityPreferencesResponder : public LLHTTPClient::ResponderWithResult
|
||||
{
|
||||
if (!getRegion())
|
||||
return false;
|
||||
|
||||
// Update agent access preference on the server
|
||||
std::string url = getRegion()->getCapability("UpdateAgentInformation");
|
||||
if (!url.empty())
|
||||
{
|
||||
// Set new access preference
|
||||
LLSD access_prefs = LLSD::emptyMap();
|
||||
if (preferredMaturity == SIM_ACCESS_PG)
|
||||
{
|
||||
access_prefs["max"] = "PG";
|
||||
}
|
||||
else if (preferredMaturity == SIM_ACCESS_MATURE)
|
||||
{
|
||||
access_prefs["max"] = "M";
|
||||
}
|
||||
if (preferredMaturity == SIM_ACCESS_ADULT)
|
||||
{
|
||||
access_prefs["max"] = "A";
|
||||
}
|
||||
public:
|
||||
LLMaturityPreferencesResponder(LLAgent *pAgent, U8 pPreferredMaturity, U8 pPreviousMaturity);
|
||||
virtual ~LLMaturityPreferencesResponder();
|
||||
|
||||
LLSD body = LLSD::emptyMap();
|
||||
body["access_prefs"] = access_prefs;
|
||||
llinfos << "Sending access prefs update to " << (access_prefs["max"].asString()) << " via capability to: "
|
||||
<< url << llendl;
|
||||
LLHTTPClient::post(url, body, new LLHTTPClient::ResponderIgnore); // Ignore response
|
||||
return true;
|
||||
virtual void result(const LLSD &pContent);
|
||||
virtual void error(U32 pStatus, const std::string& pReason);
|
||||
|
||||
virtual AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy(void) const { return maturityPreferences_timeout; }
|
||||
|
||||
private:
|
||||
U8 parseMaturityFromServerResponse(const LLSD &pContent);
|
||||
|
||||
LLAgent *mAgent;
|
||||
U8 mPreferredMaturity;
|
||||
U8 mPreviousMaturity;
|
||||
};
|
||||
|
||||
LLMaturityPreferencesResponder::LLMaturityPreferencesResponder(LLAgent *pAgent, U8 pPreferredMaturity, U8 pPreviousMaturity) :
|
||||
mAgent(pAgent),
|
||||
mPreferredMaturity(pPreferredMaturity),
|
||||
mPreviousMaturity(pPreviousMaturity)
|
||||
{
|
||||
}
|
||||
|
||||
LLMaturityPreferencesResponder::~LLMaturityPreferencesResponder()
|
||||
{
|
||||
}
|
||||
|
||||
void LLMaturityPreferencesResponder::result(const LLSD &pContent)
|
||||
{
|
||||
U8 actualMaturity = parseMaturityFromServerResponse(pContent);
|
||||
|
||||
if (actualMaturity != mPreferredMaturity)
|
||||
{
|
||||
llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity)
|
||||
<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', the server responded with '"
|
||||
<< LLViewerRegion::accessToString(actualMaturity) << "' [value:" << static_cast<U32>(actualMaturity) << ", llsd:"
|
||||
<< pContent << "]" << llendl;
|
||||
}
|
||||
mAgent->handlePreferredMaturityResult(actualMaturity);
|
||||
}
|
||||
|
||||
void LLMaturityPreferencesResponder::error(U32 pStatus, const std::string& pReason)
|
||||
{
|
||||
llwarns << "while attempting to change maturity preference from '" << LLViewerRegion::accessToString(mPreviousMaturity)
|
||||
<< "' to '" << LLViewerRegion::accessToString(mPreferredMaturity) << "', we got an error because '"
|
||||
<< pReason << "' [status:" << pStatus << "]" << llendl;
|
||||
mAgent->handlePreferredMaturityError();
|
||||
}
|
||||
|
||||
U8 LLMaturityPreferencesResponder::parseMaturityFromServerResponse(const LLSD &pContent)
|
||||
{
|
||||
// stinson 05/24/2012 Pathfinding regions have re-defined the response behavior. In the old server code,
|
||||
// if you attempted to change the preferred maturity to the same value, the response content would be an
|
||||
// undefined LLSD block. In the new server code with pathfinding, the response content should always be
|
||||
// defined. Thus, the check for isUndefined() can be replaced with an assert after pathfinding is merged
|
||||
// into server trunk and fully deployed.
|
||||
U8 maturity = SIM_ACCESS_MIN;
|
||||
if (pContent.isUndefined())
|
||||
{
|
||||
maturity = mPreferredMaturity;
|
||||
}
|
||||
else
|
||||
{
|
||||
llassert(!pContent.isUndefined());
|
||||
llassert(pContent.isMap());
|
||||
|
||||
if (!pContent.isUndefined() && pContent.isMap())
|
||||
{
|
||||
// stinson 05/24/2012 Pathfinding regions have re-defined the response syntax. The if statement catches
|
||||
// the new syntax, and the else statement catches the old syntax. After pathfinding is merged into
|
||||
// server trunk and fully deployed, we can remove the else statement.
|
||||
if (pContent.has("access_prefs"))
|
||||
{
|
||||
llassert(pContent.has("access_prefs"));
|
||||
llassert(pContent.get("access_prefs").isMap());
|
||||
llassert(pContent.get("access_prefs").has("max"));
|
||||
llassert(pContent.get("access_prefs").get("max").isString());
|
||||
if (pContent.get("access_prefs").isMap() && pContent.get("access_prefs").has("max") &&
|
||||
pContent.get("access_prefs").get("max").isString())
|
||||
{
|
||||
LLSD::String actualPreference = pContent.get("access_prefs").get("max").asString();
|
||||
LLStringUtil::trim(actualPreference);
|
||||
maturity = LLViewerRegion::shortStringToAccess(actualPreference);
|
||||
}
|
||||
}
|
||||
else if (pContent.has("max"))
|
||||
{
|
||||
llassert(pContent.get("max").isString());
|
||||
if (pContent.get("max").isString())
|
||||
{
|
||||
LLSD::String actualPreference = pContent.get("max").asString();
|
||||
LLStringUtil::trim(actualPreference);
|
||||
maturity = LLViewerRegion::shortStringToAccess(actualPreference);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return maturity;
|
||||
}
|
||||
|
||||
void LLAgent::handlePreferredMaturityResult(U8 pServerMaturity)
|
||||
{
|
||||
// Update the number of responses received
|
||||
++mMaturityPreferenceResponseId;
|
||||
llassert(mMaturityPreferenceResponseId <= mMaturityPreferenceRequestId);
|
||||
|
||||
// Update the last known server maturity response
|
||||
mLastKnownResponseMaturity = pServerMaturity;
|
||||
|
||||
// Ignore all responses if we know there are more unanswered requests that are expected
|
||||
if (mMaturityPreferenceResponseId == mMaturityPreferenceRequestId)
|
||||
{
|
||||
// If we received a response that matches the last known request, then we are good
|
||||
if (mLastKnownRequestMaturity == mLastKnownResponseMaturity)
|
||||
{
|
||||
mMaturityPreferenceNumRetries = 0;
|
||||
reportPreferredMaturitySuccess();
|
||||
llassert(static_cast<U8>(gSavedSettings.getU32("PreferredMaturity")) == mLastKnownResponseMaturity);
|
||||
}
|
||||
// Else, the viewer is out of sync with the server, so let's try to re-sync with the
|
||||
// server by re-sending our last known request. Cap the re-tries at 3 just to be safe.
|
||||
else if (++mMaturityPreferenceNumRetries <= 3)
|
||||
{
|
||||
llinfos << "Retrying attempt #" << mMaturityPreferenceNumRetries << " to set viewer preferred maturity to '"
|
||||
<< LLViewerRegion::accessToString(mLastKnownRequestMaturity) << "'" << llendl;
|
||||
sendMaturityPreferenceToServer(mLastKnownRequestMaturity);
|
||||
}
|
||||
// Else, the viewer is style out of sync with the server after 3 retries, so inform the user
|
||||
else
|
||||
{
|
||||
mMaturityPreferenceNumRetries = 0;
|
||||
reportPreferredMaturityError();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::handlePreferredMaturityError()
|
||||
{
|
||||
// Update the number of responses received
|
||||
++mMaturityPreferenceResponseId;
|
||||
llassert(mMaturityPreferenceResponseId <= mMaturityPreferenceRequestId);
|
||||
|
||||
// Ignore all responses if we know there are more unanswered requests that are expected
|
||||
if (mMaturityPreferenceResponseId == mMaturityPreferenceRequestId)
|
||||
{
|
||||
mMaturityPreferenceNumRetries = 0;
|
||||
|
||||
// If we received a response that matches the last known request, then we are synced with
|
||||
// the server, but not quite sure why we are
|
||||
if (mLastKnownRequestMaturity == mLastKnownResponseMaturity)
|
||||
{
|
||||
llwarns << "Got an error but maturity preference '" << LLViewerRegion::accessToString(mLastKnownRequestMaturity)
|
||||
<< "' seems to be in sync with the server" << llendl;
|
||||
reportPreferredMaturitySuccess();
|
||||
}
|
||||
// Else, the more likely case is that the last request does not match the last response,
|
||||
// so inform the user
|
||||
else
|
||||
{
|
||||
reportPreferredMaturityError();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::reportPreferredMaturitySuccess()
|
||||
{
|
||||
// If there is a pending teleport request waiting for the maturity preference to be synced with
|
||||
// the server, let's start the pending request
|
||||
if (hasPendingTeleportRequest())
|
||||
{
|
||||
startTeleportRequest();
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::reportPreferredMaturityError()
|
||||
{
|
||||
// If there is a pending teleport request waiting for the maturity preference to be synced with
|
||||
// the server, we were unable to successfully sync with the server on maturity preference, so let's
|
||||
// just raise the screen.
|
||||
mIsMaturityRatingChangingDuringTeleport = false;
|
||||
if (hasPendingTeleportRequest())
|
||||
{
|
||||
setTeleportState(LLAgent::TELEPORT_NONE);
|
||||
}
|
||||
|
||||
// Get the last known maturity request from the user activity
|
||||
std::string preferredMaturity = LLViewerRegion::accessToString(mLastKnownRequestMaturity);
|
||||
LLStringUtil::toLower(preferredMaturity);
|
||||
|
||||
// Get the last known maturity response from the server
|
||||
std::string actualMaturity = LLViewerRegion::accessToString(mLastKnownResponseMaturity);
|
||||
LLStringUtil::toLower(actualMaturity);
|
||||
|
||||
// Notify the user
|
||||
LLSD args = LLSD::emptyMap();
|
||||
args["PREFERRED_MATURITY"] = preferredMaturity;
|
||||
args["ACTUAL_MATURITY"] = actualMaturity;
|
||||
LLNotificationsUtil::add("MaturityChangeError", args);
|
||||
|
||||
// Check the saved settings to ensure that we are consistent. If we are not consistent, update
|
||||
// the viewer, but do not send anything to server
|
||||
U8 localMaturity = static_cast<U8>(gSavedSettings.getU32("PreferredMaturity"));
|
||||
if (localMaturity != mLastKnownResponseMaturity)
|
||||
{
|
||||
bool tmpIsDoSendMaturityPreferenceToServer = mIsDoSendMaturityPreferenceToServer;
|
||||
mIsDoSendMaturityPreferenceToServer = false;
|
||||
llinfos << "Setting viewer preferred maturity to '" << LLViewerRegion::accessToString(mLastKnownResponseMaturity) << "'" << llendl;
|
||||
gSavedSettings.setU32("PreferredMaturity", static_cast<U32>(mLastKnownResponseMaturity));
|
||||
mIsDoSendMaturityPreferenceToServer = tmpIsDoSendMaturityPreferenceToServer;
|
||||
}
|
||||
}
|
||||
|
||||
bool LLAgent::isMaturityPreferenceSyncedWithServer() const
|
||||
{
|
||||
return (mMaturityPreferenceRequestId == mMaturityPreferenceResponseId);
|
||||
}
|
||||
|
||||
void LLAgent::sendMaturityPreferenceToServer(U8 pPreferredMaturity)
|
||||
{
|
||||
// Only send maturity preference to the server if enabled
|
||||
if (mIsDoSendMaturityPreferenceToServer)
|
||||
{
|
||||
// Increment the number of requests. The handlers manage a separate count of responses.
|
||||
++mMaturityPreferenceRequestId;
|
||||
|
||||
// Update the last know maturity request
|
||||
mLastKnownRequestMaturity = pPreferredMaturity;
|
||||
|
||||
// Create a response handler
|
||||
boost::intrusive_ptr<LLMaturityPreferencesResponder> responderPtr = new LLMaturityPreferencesResponder(this, pPreferredMaturity, mLastKnownResponseMaturity);
|
||||
|
||||
// If we don't have a region, report it as an error
|
||||
if (getRegion() == NULL)
|
||||
{
|
||||
responderPtr->error(0U, "region is not defined");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Find the capability to send maturity preference
|
||||
std::string url = getRegion()->getCapability("UpdateAgentInformation");
|
||||
|
||||
// If the capability is not defined, report it as an error
|
||||
if (url.empty())
|
||||
{
|
||||
responderPtr->error(0U, "capability 'UpdateAgentInformation' is not defined for region");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set new access preference
|
||||
LLSD access_prefs = LLSD::emptyMap();
|
||||
access_prefs["max"] = LLViewerRegion::accessToShortString(pPreferredMaturity);
|
||||
|
||||
LLSD body = LLSD::emptyMap();
|
||||
body["access_prefs"] = access_prefs;
|
||||
llinfos << "Sending viewer preferred maturity to '" << LLViewerRegion::accessToString(pPreferredMaturity)
|
||||
<< "' via capability to: " << url << llendl;
|
||||
LLHTTPClient::post(url, body, responderPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
BOOL LLAgent::getAdminOverride() const
|
||||
@@ -2426,6 +2790,12 @@ void LLAgent::setAdminOverride(BOOL b)
|
||||
void LLAgent::setGodLevel(U8 god_level)
|
||||
{
|
||||
mAgentAccess->setGodLevel(god_level);
|
||||
mGodLevelChangeSignal(god_level);
|
||||
}
|
||||
|
||||
LLAgent::god_level_change_slot_t LLAgent::registerGodLevelChanageListener(god_level_change_callback_t pGodLevelChangeCallback)
|
||||
{
|
||||
return mGodLevelChangeSignal.connect(pGodLevelChangeCallback);
|
||||
}
|
||||
|
||||
void LLAgent::setAOTransition()
|
||||
@@ -2443,9 +2813,9 @@ bool LLAgent::validateMaturity(const LLSD& newvalue)
|
||||
return mAgentAccess->canSetMaturity(newvalue.asInteger());
|
||||
}
|
||||
|
||||
void LLAgent::handleMaturity(const LLSD& newvalue)
|
||||
void LLAgent::handleMaturity(const LLSD &pNewValue)
|
||||
{
|
||||
sendMaturityPreferenceToServer(newvalue.asInteger());
|
||||
sendMaturityPreferenceToServer(static_cast<U8>(pNewValue.asInteger()));
|
||||
}
|
||||
|
||||
void LLAgent::buildFullname(std::string& name) const
|
||||
@@ -3457,7 +3827,7 @@ void LLAgent::clearVisualParams(void *data)
|
||||
// protected
|
||||
bool LLAgent::teleportCore(bool is_local)
|
||||
{
|
||||
if(TELEPORT_NONE != mTeleportState)
|
||||
if ((TELEPORT_NONE != mTeleportState) && (mTeleportState != TELEPORT_PENDING))
|
||||
{
|
||||
llwarns << "Attempt to teleport when already teleporting." << llendl;
|
||||
// <edit>
|
||||
@@ -3544,6 +3914,102 @@ bool LLAgent::teleportCore(bool is_local)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LLAgent::hasRestartableFailedTeleportRequest()
|
||||
{
|
||||
return ((mTeleportRequest != NULL) && (mTeleportRequest->getStatus() == LLTeleportRequest::kFailed) &&
|
||||
mTeleportRequest->canRestartTeleport());
|
||||
}
|
||||
|
||||
void LLAgent::restartFailedTeleportRequest()
|
||||
{
|
||||
if (hasRestartableFailedTeleportRequest())
|
||||
{
|
||||
mTeleportRequest->setStatus(LLTeleportRequest::kRestartPending);
|
||||
startTeleportRequest();
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::clearTeleportRequest()
|
||||
{
|
||||
mTeleportRequest.reset();
|
||||
}
|
||||
|
||||
void LLAgent::setMaturityRatingChangeDuringTeleport(U8 pMaturityRatingChange)
|
||||
{
|
||||
mIsMaturityRatingChangingDuringTeleport = true;
|
||||
mMaturityRatingChange = pMaturityRatingChange;
|
||||
}
|
||||
|
||||
bool LLAgent::hasPendingTeleportRequest()
|
||||
{
|
||||
return ((mTeleportRequest != NULL) &&
|
||||
((mTeleportRequest->getStatus() == LLTeleportRequest::kPending) ||
|
||||
(mTeleportRequest->getStatus() == LLTeleportRequest::kRestartPending)));
|
||||
}
|
||||
|
||||
void LLAgent::startTeleportRequest()
|
||||
{
|
||||
if (hasPendingTeleportRequest())
|
||||
{
|
||||
if (!isMaturityPreferenceSyncedWithServer())
|
||||
{
|
||||
gTeleportDisplay = TRUE;
|
||||
setTeleportState(TELEPORT_PENDING);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (mTeleportRequest->getStatus())
|
||||
{
|
||||
case LLTeleportRequest::kPending :
|
||||
mTeleportRequest->setStatus(LLTeleportRequest::kStarted);
|
||||
mTeleportRequest->startTeleport();
|
||||
break;
|
||||
case LLTeleportRequest::kRestartPending :
|
||||
llassert(mTeleportRequest->canRestartTeleport());
|
||||
mTeleportRequest->setStatus(LLTeleportRequest::kStarted);
|
||||
mTeleportRequest->restartTeleport();
|
||||
break;
|
||||
default :
|
||||
llassert(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::handleTeleportFinished()
|
||||
{
|
||||
clearTeleportRequest();
|
||||
if (mIsMaturityRatingChangingDuringTeleport)
|
||||
{
|
||||
// notify user that the maturity preference has been changed
|
||||
std::string maturityRating = LLViewerRegion::accessToString(mMaturityRatingChange);
|
||||
LLStringUtil::toLower(maturityRating);
|
||||
LLSD args;
|
||||
args["RATING"] = maturityRating;
|
||||
LLNotificationsUtil::add("PreferredMaturityChanged", args);
|
||||
mIsMaturityRatingChangingDuringTeleport = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::handleTeleportFailed()
|
||||
{
|
||||
if (mTeleportRequest != NULL)
|
||||
{
|
||||
mTeleportRequest->setStatus(LLTeleportRequest::kFailed);
|
||||
}
|
||||
if (mIsMaturityRatingChangingDuringTeleport)
|
||||
{
|
||||
// notify user that the maturity preference has been changed
|
||||
std::string maturityRating = LLViewerRegion::accessToString(mMaturityRatingChange);
|
||||
LLStringUtil::toLower(maturityRating);
|
||||
LLSD args;
|
||||
args["RATING"] = maturityRating;
|
||||
LLNotificationsUtil::add("PreferredMaturityChanged", args);
|
||||
mIsMaturityRatingChangingDuringTeleport = false;
|
||||
}
|
||||
}
|
||||
|
||||
void LLAgent::teleportRequest(
|
||||
const U64& region_handle,
|
||||
const LLVector3& pos_local,
|
||||
@@ -3590,7 +4056,12 @@ void LLAgent::teleportViaLandmark(const LLUUID& landmark_asset_id)
|
||||
return;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLandmark(landmark_asset_id));
|
||||
startTeleportRequest();
|
||||
}
|
||||
|
||||
void LLAgent::doTeleportViaLandmark(const LLUUID& landmark_asset_id)
|
||||
{
|
||||
LLViewerRegion *regionp = getRegion();
|
||||
if(regionp && teleportCore())
|
||||
{
|
||||
@@ -3605,6 +4076,12 @@ void LLAgent::teleportViaLandmark(const LLUUID& landmark_asset_id)
|
||||
}
|
||||
|
||||
void LLAgent::teleportViaLure(const LLUUID& lure_id, BOOL godlike)
|
||||
{
|
||||
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLure(lure_id, godlike));
|
||||
startTeleportRequest();
|
||||
}
|
||||
|
||||
void LLAgent::doTeleportViaLure(const LLUUID& lure_id, BOOL godlike)
|
||||
{
|
||||
LLViewerRegion* regionp = getRegion();
|
||||
if(regionp && teleportCore())
|
||||
@@ -3637,18 +4114,21 @@ void LLAgent::teleportViaLure(const LLUUID& lure_id, BOOL godlike)
|
||||
// James Cook, July 28, 2005
|
||||
void LLAgent::teleportCancel()
|
||||
{
|
||||
LLViewerRegion* regionp = getRegion();
|
||||
if(regionp)
|
||||
if (!hasPendingTeleportRequest())
|
||||
{
|
||||
// send the message
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessage("TeleportCancel");
|
||||
msg->nextBlockFast(_PREHASH_Info);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, getSessionID());
|
||||
sendReliableMessage();
|
||||
}
|
||||
gTeleportDisplay = FALSE;
|
||||
LLViewerRegion* regionp = getRegion();
|
||||
if(regionp)
|
||||
{
|
||||
// send the message
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
msg->newMessage("TeleportCancel");
|
||||
msg->nextBlockFast(_PREHASH_Info);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, getID());
|
||||
msg->addUUIDFast(_PREHASH_SessionID, getSessionID());
|
||||
sendReliableMessage();
|
||||
}
|
||||
}
|
||||
clearTeleportRequest();
|
||||
gAgent.setTeleportState( LLAgent::TELEPORT_NONE );
|
||||
}
|
||||
|
||||
@@ -3673,8 +4153,19 @@ void LLAgent::teleportViaLocation(const LLVector3d& pos_global)
|
||||
}
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocation(pos_global));
|
||||
startTeleportRequest();
|
||||
}
|
||||
|
||||
void LLAgent::doTeleportViaLocation(const LLVector3d& pos_global)
|
||||
{
|
||||
LLViewerRegion* regionp = getRegion();
|
||||
|
||||
if (!regionp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
U64 handle = to_region_handle(pos_global);
|
||||
LLSimInfo* info = LLWorldMap::getInstance()->simInfoFromHandle(handle);
|
||||
bool calc = gSavedSettings.getBOOL("OptionOffsetTPByAgentHeight");
|
||||
@@ -3734,7 +4225,12 @@ void LLAgent::teleportViaLocationLookAt(const LLVector3d& pos_global)
|
||||
return;
|
||||
}
|
||||
// [/RLVa:KB]
|
||||
mTeleportRequest = LLTeleportRequestPtr(new LLTeleportRequestViaLocationLookAt(pos_global));
|
||||
startTeleportRequest();
|
||||
}
|
||||
|
||||
void LLAgent::doTeleportViaLocationLookAt(const LLVector3d& pos_global)
|
||||
{
|
||||
mbTeleportKeepsLookAt = true;
|
||||
gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); // detach camera form avatar, so it keeps direction
|
||||
U64 region_handle = to_region_handle(pos_global);
|
||||
@@ -4230,4 +4726,148 @@ LLAgentQueryManager::~LLAgentQueryManager()
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLTeleportRequest
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLTeleportRequest::LLTeleportRequest()
|
||||
: mStatus(kPending)
|
||||
{
|
||||
}
|
||||
|
||||
LLTeleportRequest::~LLTeleportRequest()
|
||||
{
|
||||
}
|
||||
|
||||
bool LLTeleportRequest::canRestartTeleport()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void LLTeleportRequest::restartTeleport()
|
||||
{
|
||||
llassert(0);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLTeleportRequestViaLandmark
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLTeleportRequestViaLandmark::LLTeleportRequestViaLandmark(const LLUUID &pLandmarkId)
|
||||
: LLTeleportRequest(),
|
||||
mLandmarkId(pLandmarkId)
|
||||
{
|
||||
}
|
||||
|
||||
LLTeleportRequestViaLandmark::~LLTeleportRequestViaLandmark()
|
||||
{
|
||||
}
|
||||
|
||||
bool LLTeleportRequestViaLandmark::canRestartTeleport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLandmark::startTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLandmark(getLandmarkId());
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLandmark::restartTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLandmark(getLandmarkId());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLTeleportRequestViaLure
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLTeleportRequestViaLure::LLTeleportRequestViaLure(const LLUUID &pLureId, BOOL pIsLureGodLike)
|
||||
: LLTeleportRequestViaLandmark(pLureId),
|
||||
mIsLureGodLike(pIsLureGodLike)
|
||||
{
|
||||
}
|
||||
|
||||
LLTeleportRequestViaLure::~LLTeleportRequestViaLure()
|
||||
{
|
||||
}
|
||||
|
||||
bool LLTeleportRequestViaLure::canRestartTeleport()
|
||||
{
|
||||
// stinson 05/17/2012 : cannot restart a teleport via lure because of server-side restrictions
|
||||
// The current scenario is as follows:
|
||||
// 1. User A initializes a request for User B to teleport via lure
|
||||
// 2. User B accepts the teleport via lure request
|
||||
// 3. The server sees the init request from User A and the accept request from User B and matches them up
|
||||
// 4. The server then removes the paired requests up from the "queue"
|
||||
// 5. The server then fails User B's teleport for reason of maturity level (for example)
|
||||
// 6. User B's viewer prompts user to increase their maturity level profile value.
|
||||
// 7. User B confirms and accepts increase in maturity level
|
||||
// 8. User B's viewer then attempts to teleport via lure again
|
||||
// 9. This request will time-out on the viewer-side because User A's initial request has been removed from the "queue" in step 4
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLure::startTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLure(getLandmarkId(), isLureGodLike());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLTeleportRequestViaLocation
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLTeleportRequestViaLocation::LLTeleportRequestViaLocation(const LLVector3d &pPosGlobal)
|
||||
: LLTeleportRequest(),
|
||||
mPosGlobal(pPosGlobal)
|
||||
{
|
||||
}
|
||||
|
||||
LLTeleportRequestViaLocation::~LLTeleportRequestViaLocation()
|
||||
{
|
||||
}
|
||||
|
||||
bool LLTeleportRequestViaLocation::canRestartTeleport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLocation::startTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLocation(getPosGlobal());
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLocation::restartTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLocation(getPosGlobal());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// LLTeleportRequestViaLocationLookAt
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLTeleportRequestViaLocationLookAt::LLTeleportRequestViaLocationLookAt(const LLVector3d &pPosGlobal)
|
||||
: LLTeleportRequestViaLocation(pPosGlobal)
|
||||
{
|
||||
}
|
||||
|
||||
LLTeleportRequestViaLocationLookAt::~LLTeleportRequestViaLocationLookAt()
|
||||
{
|
||||
}
|
||||
|
||||
bool LLTeleportRequestViaLocationLookAt::canRestartTeleport()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLocationLookAt::startTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLocationLookAt(getPosGlobal());
|
||||
}
|
||||
|
||||
void LLTeleportRequestViaLocationLookAt::restartTeleport()
|
||||
{
|
||||
gAgent.doTeleportViaLocationLookAt(getPosGlobal());
|
||||
}
|
||||
// EOF
|
||||
|
||||
@@ -47,6 +47,8 @@
|
||||
#include "llinventorymodel.h"
|
||||
#include "v3dmath.h"
|
||||
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/signals2.hpp>
|
||||
|
||||
extern const BOOL ANIMATE;
|
||||
@@ -67,8 +69,10 @@ class LLViewerObject;
|
||||
class LLAgentDropGroupViewerNode;
|
||||
class LLAgentAccess;
|
||||
class LLSimInfo;
|
||||
class LLTeleportRequest;
|
||||
|
||||
typedef std::vector<LLViewerObject*> llvo_vec_t;
|
||||
typedef boost::shared_ptr<LLTeleportRequest> LLTeleportRequestPtr;
|
||||
|
||||
enum EAnimRequest
|
||||
{
|
||||
@@ -557,7 +561,8 @@ public:
|
||||
TELEPORT_MOVING = 3, // Viewer has received destination location from source simulator
|
||||
TELEPORT_START_ARRIVAL = 4, // Transition to ARRIVING. Viewer has received avatar update, etc., from destination simulator
|
||||
TELEPORT_ARRIVING = 5, // Make the user wait while content "pre-caches"
|
||||
TELEPORT_LOCAL = 6 // Teleporting in-sim without showing the progress screen
|
||||
TELEPORT_LOCAL = 6, // Teleporting in-sim without showing the progress screen
|
||||
TELEPORT_PENDING = 7
|
||||
};
|
||||
|
||||
public:
|
||||
@@ -573,9 +578,6 @@ public:
|
||||
// Teleport Actions
|
||||
//--------------------------------------------------------------------
|
||||
public:
|
||||
void teleportRequest(const U64& region_handle,
|
||||
const LLVector3& pos_local, // Go to a named location home
|
||||
bool look_at_from_camera = false);
|
||||
void teleportViaLandmark(const LLUUID& landmark_id); // Teleport to a landmark
|
||||
void teleportHome() { teleportViaLandmark(LLUUID::null); } // Go home
|
||||
void teleportViaLure(const LLUUID& lure_id, BOOL godlike); // To an invited location
|
||||
@@ -586,6 +588,44 @@ public:
|
||||
protected:
|
||||
bool teleportCore(bool is_local = false); // Stuff for all teleports; returns true if the teleport can proceed
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Teleport State
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
public:
|
||||
bool hasRestartableFailedTeleportRequest();
|
||||
void restartFailedTeleportRequest();
|
||||
void clearTeleportRequest();
|
||||
void setMaturityRatingChangeDuringTeleport(U8 pMaturityRatingChange);
|
||||
|
||||
private:
|
||||
friend class LLTeleportRequest;
|
||||
friend class LLTeleportRequestViaLandmark;
|
||||
friend class LLTeleportRequestViaLure;
|
||||
friend class LLTeleportRequestViaLocation;
|
||||
friend class LLTeleportRequestViaLocationLookAt;
|
||||
|
||||
LLTeleportRequestPtr mTeleportRequest;
|
||||
boost::signals2::connection mTeleportFinishedSlot;
|
||||
boost::signals2::connection mTeleportFailedSlot;
|
||||
|
||||
bool mIsMaturityRatingChangingDuringTeleport;
|
||||
U8 mMaturityRatingChange;
|
||||
|
||||
bool hasPendingTeleportRequest();
|
||||
void startTeleportRequest();
|
||||
|
||||
void teleportRequest(const U64& region_handle,
|
||||
const LLVector3& pos_local, // Go to a named location home
|
||||
bool look_at_from_camera = false);
|
||||
void doTeleportViaLandmark(const LLUUID& landmark_id); // Teleport to a landmark
|
||||
void doTeleportViaLure(const LLUUID& lure_id, BOOL godlike); // To an invited location
|
||||
void doTeleportViaLocation(const LLVector3d& pos_global); // To a global location - this will probably need to be deprecated
|
||||
void doTeleportViaLocationLookAt(const LLVector3d& pos_global);// To a global location, preserving camera rotation
|
||||
|
||||
void handleTeleportFinished();
|
||||
void handleTeleportFailed();
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Teleport State
|
||||
//--------------------------------------------------------------------
|
||||
@@ -648,6 +688,16 @@ public:
|
||||
void requestEnterGodMode();
|
||||
void requestLeaveGodMode();
|
||||
|
||||
typedef boost::function<void (U8)> god_level_change_callback_t;
|
||||
typedef boost::signals2::signal<void (U8)> god_level_change_signal_t;
|
||||
typedef boost::signals2::connection god_level_change_slot_t;
|
||||
|
||||
god_level_change_slot_t registerGodLevelChanageListener(god_level_change_callback_t pGodLevelChangeCallback);
|
||||
|
||||
private:
|
||||
god_level_change_signal_t mGodLevelChangeSignal;
|
||||
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Maturity
|
||||
//--------------------------------------------------------------------
|
||||
@@ -670,10 +720,25 @@ public:
|
||||
void setTeen(bool teen);
|
||||
void setMaturity(char text);
|
||||
static int convertTextToMaturity(char text);
|
||||
bool sendMaturityPreferenceToServer(int preferredMaturity); // ! "U8" instead of "int"?
|
||||
private:
|
||||
bool mIsDoSendMaturityPreferenceToServer;
|
||||
unsigned int mMaturityPreferenceRequestId;
|
||||
unsigned int mMaturityPreferenceResponseId;
|
||||
unsigned int mMaturityPreferenceNumRetries;
|
||||
U8 mLastKnownRequestMaturity;
|
||||
U8 mLastKnownResponseMaturity;
|
||||
|
||||
bool isMaturityPreferenceSyncedWithServer() const;
|
||||
void sendMaturityPreferenceToServer(U8 pPreferredMaturity);
|
||||
|
||||
friend class LLMaturityPreferencesResponder;
|
||||
void handlePreferredMaturityResult(U8 pServerMaturity);
|
||||
void handlePreferredMaturityError();
|
||||
void reportPreferredMaturitySuccess();
|
||||
void reportPreferredMaturityError();
|
||||
|
||||
// Maturity callbacks for PreferredMaturity control variable
|
||||
void handleMaturity(const LLSD& newvalue);
|
||||
void handleMaturity(const LLSD &pNewValue);
|
||||
bool validateMaturity(const LLSD& newvalue);
|
||||
|
||||
|
||||
|
||||
@@ -3959,7 +3959,8 @@ void LLAppViewer::idle()
|
||||
}
|
||||
|
||||
static const LLCachedControl<bool> hide_tp_screen("AscentDisableTeleportScreens",false);
|
||||
if (!hide_tp_screen && gAgent.getTeleportState() != LLAgent::TELEPORT_NONE && gAgent.getTeleportState() != LLAgent::TELEPORT_LOCAL)
|
||||
LLAgent::ETeleportState tp_state = gAgent.getTeleportState();
|
||||
if (!hide_tp_screen && tp_state != LLAgent::TELEPORT_NONE && tp_state != LLAgent::TELEPORT_LOCAL && tp_state != LLAgent::TELEPORT_PENDING)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -725,11 +725,9 @@ void LLStatusBar::setHealth(S32 health)
|
||||
{
|
||||
if (mHealth > (health + gSavedSettings.getF32("UISndHealthReductionThreshold")))
|
||||
{
|
||||
LLVOAvatar *me;
|
||||
|
||||
if ((me = gAgentAvatarp))
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
if (me->getSex() == SEX_FEMALE)
|
||||
if (gAgentAvatarp->getSex() == SEX_FEMALE)
|
||||
{
|
||||
make_ui_sound("UISndHealthReductionF");
|
||||
}
|
||||
|
||||
@@ -426,13 +426,22 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot, boo
|
||||
const std::string& message = gAgent.getTeleportMessage();
|
||||
switch( gAgent.getTeleportState() )
|
||||
{
|
||||
case LLAgent::TELEPORT_PENDING:
|
||||
gTeleportDisplayTimer.reset();
|
||||
if(!hide_tp_screen)
|
||||
gViewerWindow->setShowProgress(TRUE);
|
||||
gViewerWindow->setProgressPercent(llmin(teleport_percent, 0.0f));
|
||||
gAgent.setTeleportMessage(LLAgent::sTeleportProgressMessages["pending"]);
|
||||
gViewerWindow->setProgressString(LLAgent::sTeleportProgressMessages["pending"]);
|
||||
break;
|
||||
|
||||
case LLAgent::TELEPORT_START:
|
||||
// Transition to REQUESTED. Viewer has sent some kind
|
||||
// of TeleportRequest to the source simulator
|
||||
gTeleportDisplayTimer.reset();
|
||||
if(!hide_tp_screen)
|
||||
gViewerWindow->setShowProgress(TRUE);
|
||||
gViewerWindow->setProgressPercent(0);
|
||||
gViewerWindow->setProgressPercent(llmin(teleport_percent, 0.0f));
|
||||
gAgent.setTeleportState( LLAgent::TELEPORT_REQUESTED );
|
||||
gAgent.setTeleportMessage(
|
||||
LLAgent::sTeleportProgressMessages["requesting"]);
|
||||
|
||||
@@ -5930,17 +5930,35 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
||||
}
|
||||
}
|
||||
|
||||
bool handle_special_notification_callback(const LLSD& notification, const LLSD& response)
|
||||
bool handle_prompt_for_maturity_level_change_callback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
|
||||
if (0 == option)
|
||||
{
|
||||
// set the preference to the maturity of the region we're calling
|
||||
int preferredMaturity = notification["payload"]["_region_access"].asInteger();
|
||||
gSavedSettings.setU32("PreferredMaturity", preferredMaturity);
|
||||
gAgent.sendMaturityPreferenceToServer(preferredMaturity);
|
||||
U8 preferredMaturity = static_cast<U8>(notification["payload"]["_region_access"].asInteger());
|
||||
gSavedSettings.setU32("PreferredMaturity", static_cast<U32>(preferredMaturity));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool handle_prompt_for_maturity_level_change_and_reteleport_callback(const LLSD& notification, const LLSD& response)
|
||||
{
|
||||
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
|
||||
|
||||
if (0 == option)
|
||||
{
|
||||
// set the preference to the maturity of the region we're calling
|
||||
U8 preferredMaturity = static_cast<U8>(notification["payload"]["_region_access"].asInteger());
|
||||
gSavedSettings.setU32("PreferredMaturity", static_cast<U32>(preferredMaturity));
|
||||
gAgent.setMaturityRatingChangeDuringTeleport(preferredMaturity);
|
||||
gAgent.restartFailedTeleportRequest();
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -5949,39 +5967,148 @@ bool handle_special_notification_callback(const LLSD& notification, const LLSD&
|
||||
// some of the server notifications need special handling. This is where we do that.
|
||||
bool handle_special_notification(std::string notificationID, LLSD& llsdBlock)
|
||||
{
|
||||
int regionAccess = llsdBlock["_region_access"].asInteger();
|
||||
llsdBlock["REGIONMATURITY"] = LLViewerRegion::accessToString(regionAccess);
|
||||
|
||||
// we're going to throw the LLSD in there in case anyone ever wants to use it
|
||||
LLNotificationsUtil::add(notificationID+"_Notify", llsdBlock);
|
||||
U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger());
|
||||
std::string regionMaturity = LLViewerRegion::accessToString(regionAccess);
|
||||
LLStringUtil::toLower(regionMaturity);
|
||||
llsdBlock["REGIONMATURITY"] = regionMaturity;
|
||||
|
||||
bool returnValue = false;
|
||||
LLNotificationPtr maturityLevelNotification;
|
||||
std::string notifySuffix = "_Notify";
|
||||
if (regionAccess == SIM_ACCESS_MATURE)
|
||||
{
|
||||
if (gAgent.isTeen())
|
||||
{
|
||||
LLNotificationsUtil::add(notificationID+"_KB", llsdBlock);
|
||||
return true;
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock);
|
||||
returnValue = true;
|
||||
|
||||
notifySuffix = "_NotifyAdultsOnly";
|
||||
}
|
||||
else if (gAgent.prefersPG())
|
||||
{
|
||||
LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_special_notification_callback);
|
||||
return true;
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0)
|
||||
{
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
else if (regionAccess == SIM_ACCESS_ADULT)
|
||||
{
|
||||
if (!gAgent.isAdult())
|
||||
{
|
||||
LLNotificationsUtil::add(notificationID+"_KB", llsdBlock);
|
||||
return true;
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock);
|
||||
returnValue = true;
|
||||
|
||||
notifySuffix = "_NotifyAdultsOnly";
|
||||
}
|
||||
else if (gAgent.prefersPG() || gAgent.prefersMature())
|
||||
{
|
||||
LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_special_notification_callback);
|
||||
return true;
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(notificationID, "RegionEntryAccessBlocked") == 0)
|
||||
{
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
if ((maturityLevelNotification == NULL) || maturityLevelNotification->isIgnored())
|
||||
{
|
||||
// Given a simple notification if no maturityLevelNotification is set or it is ignore
|
||||
LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
// some of the server notifications need special handling. This is where we do that.
|
||||
bool handle_teleport_access_blocked(LLSD& llsdBlock)
|
||||
{
|
||||
std::string notificationID("TeleportEntryAccessBlocked");
|
||||
U8 regionAccess = static_cast<U8>(llsdBlock["_region_access"].asInteger());
|
||||
std::string regionMaturity = LLViewerRegion::accessToString(regionAccess);
|
||||
LLStringUtil::toLower(regionMaturity);
|
||||
llsdBlock["REGIONMATURITY"] = regionMaturity;
|
||||
|
||||
bool returnValue = false;
|
||||
LLNotificationPtr maturityLevelNotification;
|
||||
std::string notifySuffix = "_Notify";
|
||||
if (regionAccess == SIM_ACCESS_MATURE)
|
||||
{
|
||||
if (gAgent.isTeen())
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock);
|
||||
returnValue = true;
|
||||
|
||||
notifySuffix = "_NotifyAdultsOnly";
|
||||
}
|
||||
else if (gAgent.prefersPG())
|
||||
{
|
||||
if (gAgent.hasRestartableFailedTeleportRequest())
|
||||
{
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
else if (regionAccess == SIM_ACCESS_ADULT)
|
||||
{
|
||||
if (!gAgent.isAdult())
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_AdultsOnlyContent", llsdBlock);
|
||||
returnValue = true;
|
||||
|
||||
notifySuffix = "_NotifyAdultsOnly";
|
||||
}
|
||||
else if (gAgent.prefersPG() || gAgent.prefersMature())
|
||||
{
|
||||
if (gAgent.hasRestartableFailedTeleportRequest())
|
||||
{
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_ChangeAndReTeleport", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_and_reteleport_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_Change", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gAgent.clearTeleportRequest();
|
||||
maturityLevelNotification = LLNotificationsUtil::add(notificationID+"_PreferencesOutOfSync", llsdBlock, llsdBlock, handle_prompt_for_maturity_level_change_callback);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ((maturityLevelNotification == NULL) || maturityLevelNotification->isIgnored())
|
||||
{
|
||||
// Given a simple notification if no maturityLevelNotification is set or it is ignore
|
||||
LLNotificationsUtil::add(notificationID + notifySuffix, llsdBlock);
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
||||
@@ -6025,16 +6152,20 @@ bool attempt_standard_notification(LLMessageSystem* msgsystem)
|
||||
|
||||
RegionEntryAccessBlocked
|
||||
RegionEntryAccessBlocked_Notify
|
||||
RegionEntryAccessBlocked_NotifyAdultsOnly
|
||||
RegionEntryAccessBlocked_Change
|
||||
RegionEntryAccessBlocked_KB
|
||||
RegionEntryAccessBlocked_AdultsOnlyContent
|
||||
RegionEntryAccessBlocked_ChangeAndReTeleport
|
||||
LandClaimAccessBlocked
|
||||
LandClaimAccessBlocked_Notify
|
||||
LandClaimAccessBlocked_NotifyAdultsOnly
|
||||
LandClaimAccessBlocked_Change
|
||||
LandClaimAccessBlocked_KB
|
||||
LandClaimAccessBlocked_AdultsOnlyContent
|
||||
LandBuyAccessBlocked
|
||||
LandBuyAccessBlocked_Notify
|
||||
LandBuyAccessBlocked_NotifyAdultsOnly
|
||||
LandBuyAccessBlocked_Change
|
||||
LandBuyAccessBlocked_KB
|
||||
LandBuyAccessBlocked_AdultsOnlyContent
|
||||
|
||||
-----------------------------------------------------------------------*/
|
||||
if (handle_special_notification(notificationID, llsdBlock))
|
||||
@@ -6086,6 +6217,30 @@ void process_alert_message(LLMessageSystem *msgsystem, void **user_data)
|
||||
}
|
||||
}
|
||||
|
||||
bool handle_not_age_verified_alert(const std::string &pAlertName)
|
||||
{
|
||||
LLNotificationPtr notification = LLNotificationsUtil::add(pAlertName);
|
||||
if ((notification == NULL) || notification->isIgnored())
|
||||
{
|
||||
LLNotificationsUtil::add(pAlertName + "_Notify");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool handle_special_alerts(const std::string &pAlertName)
|
||||
{
|
||||
bool isHandled = false;
|
||||
|
||||
if (LLStringUtil::compareStrings(pAlertName, "NotAgeVerified") == 0)
|
||||
{
|
||||
|
||||
isHandled = handle_not_age_verified_alert(pAlertName);
|
||||
}
|
||||
|
||||
return isHandled;
|
||||
}
|
||||
|
||||
void process_alert_core(const std::string& message, BOOL modal)
|
||||
{
|
||||
// HACK -- handle callbacks for specific alerts
|
||||
@@ -6109,7 +6264,10 @@ void process_alert_core(const std::string& message, BOOL modal)
|
||||
// Allow the server to spawn a named alert so that server alerts can be
|
||||
// translated out of English.
|
||||
std::string alert_name(message.substr(ALERT_PREFIX.length()));
|
||||
LLNotificationsUtil::add(alert_name);
|
||||
if (!handle_special_alerts(alert_name))
|
||||
{
|
||||
LLNotificationsUtil::add(alert_name);
|
||||
}
|
||||
}
|
||||
else if (message.find(NOTIFY_PREFIX) == 0)
|
||||
{
|
||||
@@ -6410,6 +6568,7 @@ bool script_question_cb(const LLSD& notification, const LLSD& response)
|
||||
|
||||
// ...with description on top
|
||||
LLNotificationsUtil::add("DebitPermissionDetails");
|
||||
return false;
|
||||
}
|
||||
|
||||
// check whether permissions were granted or denied
|
||||
@@ -6778,7 +6937,7 @@ void process_teleport_failed(LLMessageSystem *msg, void**)
|
||||
else
|
||||
{
|
||||
// change notification name in this special case
|
||||
if (handle_special_notification("RegionEntryAccessBlocked", llsd_block))
|
||||
if (handle_teleport_access_blocked(llsd_block))
|
||||
{
|
||||
if( gAgent.getTeleportState() != LLAgent::TELEPORT_NONE )
|
||||
{
|
||||
|
||||
@@ -720,6 +720,31 @@ std::string LLViewerRegion::accessToShortString(U8 sim_access)
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
U8 LLViewerRegion::shortStringToAccess(const std::string &sim_access)
|
||||
{
|
||||
U8 accessValue;
|
||||
|
||||
if (LLStringUtil::compareStrings(sim_access, "PG") == 0)
|
||||
{
|
||||
accessValue = SIM_ACCESS_PG;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(sim_access, "M") == 0)
|
||||
{
|
||||
accessValue = SIM_ACCESS_MATURE;
|
||||
}
|
||||
else if (LLStringUtil::compareStrings(sim_access, "A") == 0)
|
||||
{
|
||||
accessValue = SIM_ACCESS_ADULT;
|
||||
}
|
||||
else
|
||||
{
|
||||
accessValue = SIM_ACCESS_MIN;
|
||||
}
|
||||
|
||||
return accessValue;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLViewerRegion::processRegionInfo(LLMessageSystem* msg, void**)
|
||||
{
|
||||
@@ -1925,6 +1950,7 @@ bool LLViewerRegion::meshRezEnabled() const
|
||||
return (mSimulatorFeatures.has("MeshRezEnabled") &&
|
||||
mSimulatorFeatures["MeshRezEnabled"].asBoolean());
|
||||
}
|
||||
}
|
||||
|
||||
bool LLViewerRegion::dynamicPathfindingEnabled() const
|
||||
{
|
||||
|
||||
@@ -210,6 +210,7 @@ public:
|
||||
|
||||
// Returns "M", "PG", "A" etc.
|
||||
static std::string accessToShortString(U8 sim_access);
|
||||
static U8 shortStringToAccess(const std::string &sim_access);
|
||||
|
||||
// Return access icon name
|
||||
static std::string getAccessIcon(U8 sim_access);
|
||||
|
||||
@@ -631,7 +631,7 @@ void LLViewerTextureList::updateImages(F32 max_time)
|
||||
//Can't check gTeleportDisplay due to a process_teleport_local(), which sets it to true for local teleports... so:
|
||||
// Do this case if IS teleporting but NOT local teleporting, AND either the TP screen is set to appear OR we just entered the sim (TELEPORT_START_ARRIVAL)
|
||||
LLAgent::ETeleportState state = gAgent.getTeleportState();
|
||||
if(state != LLAgent::TELEPORT_NONE && state != LLAgent::TELEPORT_LOCAL &&
|
||||
if(state != LLAgent::TELEPORT_NONE && state != LLAgent::TELEPORT_LOCAL && state != LLAgent::TELEPORT_PENDING &&
|
||||
(!hide_tp_screen || state == LLAgent::TELEPORT_START_ARRIVAL || state == LLAgent::TELEPORT_ARRIVING))
|
||||
{
|
||||
if(!cleared)
|
||||
|
||||
@@ -3675,43 +3675,48 @@ Are you sure you want to change the Estate Covenant?
|
||||
icon="alertmodal.tga"
|
||||
name="RegionEntryAccessBlocked"
|
||||
type="alertmodal">
|
||||
You are not allowed in that Region due to your maturity Rating. This may be a result of a lack of information validating your age.
|
||||
|
||||
Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating.
|
||||
<usetemplate
|
||||
The region you're trying to visit contains content exceeding your current preferences. You can change your preferences using Edit > Preferences > General.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RegionEntryAccessBlocked_KB"
|
||||
name="RegionEntryAccessBlocked_AdultsOnlyContent"
|
||||
type="alertmodal">
|
||||
You are not allowed in that region due to your maturity Rating.
|
||||
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
|
||||
Go to the Knowledge Base for more information about maturity Ratings?
|
||||
<url option="0" name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Go to Knowledge Base"
|
||||
notext="Close"
|
||||
ignoretext="When Region entry is blocked due to maturity Rating"/>
|
||||
ignoretext="Region crossing: The region you're trying to visit contains content which is accessible to adults only."/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="RegionEntryAccessBlocked_Notify"
|
||||
type="notifytip">
|
||||
You are not allowed in that region due to your maturity Rating.
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="RegionEntryAccessBlocked_NotifyAdultsOnly"
|
||||
type="notifytip">
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RegionEntryAccessBlocked_Change"
|
||||
type="alertmodal">
|
||||
You are not allowed in that Region due to your maturity Rating preference.
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
|
||||
You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General.
|
||||
<form name="form">
|
||||
@@ -3723,68 +3728,211 @@ You can click 'Change Preference' to raise your maturity Rating prefer
|
||||
default="true"
|
||||
index="1"
|
||||
name="Cancel"
|
||||
text="Close"/>
|
||||
<ignore name="ignore" text="When Region entry is blocked due to maturity Rating preference"/>
|
||||
text="Cancel"/>
|
||||
<ignore name="ignore" text="When crossing region: The region you're trying to visit contains content excluded by your preferences."/>
|
||||
</form>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="RegionEntryAccessBlocked_PreferencesOutOfSync"
|
||||
type="alertmodal">
|
||||
We are having technical difficulties with your teleport because your preferences are out of sync with the server.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportEntryAccessBlocked"
|
||||
type="alertmodal">
|
||||
The region you're trying to visit contains content exceeding your current preferences. You can change your preferences using Edit > Preferences > General.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportEntryAccessBlocked_AdultsOnlyContent"
|
||||
type="alertmodal">
|
||||
<unique>
|
||||
<context>REGIONMATURITY</context>
|
||||
</unique>
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
|
||||
Go to the Knowledge Base for more information about maturity Ratings?
|
||||
<url option="0" name="url">
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Go to Knowledge Base"
|
||||
notext="Close"
|
||||
ignoretext="When teleporting: The region you're trying to visit contains content which is accessible to adults only."/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="TeleportEntryAccessBlocked_Notify"
|
||||
type="notifytip">
|
||||
<unique>
|
||||
<context>REGIONMATURITY</context>
|
||||
</unique>
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="TeleportEntryAccessBlocked_NotifyAdultsOnly"
|
||||
type="notifytip">
|
||||
<unique>
|
||||
<context>REGIONMATURITY</context>
|
||||
</unique>
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportEntryAccessBlocked_ChangeAndReTeleport"
|
||||
type="alertmodal">
|
||||
<unique>
|
||||
<context>REGIONMATURITY</context>
|
||||
</unique>
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content. We can change your preferences and continue with the teleport, or you can cancel this teleport.
|
||||
<form name="form">
|
||||
<button
|
||||
index="0"
|
||||
name="OK"
|
||||
text="Change and continue"/>
|
||||
<button
|
||||
default="true"
|
||||
index="1"
|
||||
name="Cancel"
|
||||
text="Cancel"/>
|
||||
<ignore name="ignore" text="When teleporting (restartable): The region you're trying to visit contains content excluded by your preferences."/>
|
||||
</form>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportEntryAccessBlocked_Change"
|
||||
type="alertmodal">
|
||||
<unique>
|
||||
<context>REGIONMATURITY</context>
|
||||
</unique>
|
||||
The region you're trying to visit contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content. We can change your preferences, or you can cancel the teleport. After your preferences are changed, you will need to attempt the teleport again.
|
||||
<form name="form">
|
||||
<button
|
||||
index="0"
|
||||
name="OK"
|
||||
text="Change preferences"/>
|
||||
<button
|
||||
default="true"
|
||||
index="1"
|
||||
name="Cancel"
|
||||
text="Cancel"/>
|
||||
<ignore name="ignore" text="When Teleporting (non-restartable): The region you're trying to visit contains content excluded by your preferences."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TeleportEntryAccessBlocked_PreferencesOutOfSync"
|
||||
type="alertmodal">
|
||||
We are having technical difficulties with your teleport because your preferences are out of sync with the server.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="PreferredMaturityChanged"
|
||||
type="alertmodal">
|
||||
You won't receive any more notifications that you're about to visit a region with [RATING] content. You may change your content preferences in the future by using Edit > Preferences > General from the menu bar.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="MaturityChangeError"
|
||||
type="alertmodal">
|
||||
We were unable to change your preferences to view [PREFERRED_MATURITY] content at this time. Your preferences have been reset to view [ACTUAL_MATURITY] content. You may attempt to change your preferences again by using Edit > Preferences > General from the menu bar.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandClaimAccessBlocked"
|
||||
type="alertmodal">
|
||||
You cannot claim this land due to your maturity Rating. This may be a result of a lack of information validating your age.
|
||||
|
||||
Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating.
|
||||
<usetemplate
|
||||
The land you're trying to claim has a maturity rating exceeding your current preferences. You can change your preferences using Edit > Preferences > General.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandClaimAccessBlocked_KB"
|
||||
name="LandClaimAccessBlocked_AdultsOnlyContent"
|
||||
type="alertmodal">
|
||||
You cannot claim this land due to your maturity Rating.
|
||||
Only adults can claim this land.
|
||||
|
||||
Go to the Knowledge Base for more information about maturity Ratings?
|
||||
<url option="0" name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Go to Knowledge Base"
|
||||
notext="Close"
|
||||
ignoretext="When claiming land is blocked due to maturity Rating"/>
|
||||
ignoretext="When only adults can claim this land."/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="LandClaimAccessBlocked_Notify"
|
||||
type="notifytip">
|
||||
You cannot claim this land due to your maturity Rating.
|
||||
The land you're trying to claim contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="LandClaimAccessBlocked_NotifyAdultsOnly"
|
||||
type="notifytip">
|
||||
The land you're trying to claim contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandClaimAccessBlocked_Change"
|
||||
type="alertmodal">
|
||||
You cannot claim this land due to your maturity Rating preference.
|
||||
The land you're trying to claim contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
|
||||
You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General.
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Change Preference"
|
||||
notext="Close"
|
||||
ignoretext="When claiming land is blocked due to maturity Rating preference"/>
|
||||
<form name="form">
|
||||
<button
|
||||
index="0"
|
||||
name="OK"
|
||||
text="Change Preference"/>
|
||||
<button
|
||||
default="true"
|
||||
index="1"
|
||||
name="Cancel"
|
||||
text="Cancel"/>
|
||||
<ignore name="ignore" text="When the land you're trying to claim contains content excluded by your preferences."/>
|
||||
</form>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandBuyAccessBlocked"
|
||||
type="alertmodal">
|
||||
You cannot buy this land due to your maturity Rating. This may be a result of a lack of information validating your age.
|
||||
|
||||
Please verify you have the latest Viewer installed, and go to the Knowledge Base for details on accessing areas with this maturity rating.
|
||||
The land you're trying to buy has a maturity rating exceeding your current preferences. You can change your preferences using Edit > Preferences > General.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
@@ -3792,40 +3940,54 @@ Please verify you have the latest Viewer installed, and go to the Knowledge Base
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandBuyAccessBlocked_KB"
|
||||
name="LandBuyAccessBlocked_AdultsOnlyContent"
|
||||
type="alertmodal">
|
||||
You cannot buy this land due to your maturity Rating.
|
||||
Only adults can buy this land.
|
||||
|
||||
Go to the Knowledge Base for more information about maturity Ratings?
|
||||
<url option="0" name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Go to Knowledge Base"
|
||||
notext="Close"
|
||||
ignoretext="When a Land purchase is blocked due to maturity Rating"/>
|
||||
ignoretext="Only adults can buy this land."/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="LandBuyAccessBlocked_Notify"
|
||||
type="notifytip">
|
||||
You cannot buy this land due to your maturity Rating.
|
||||
The land you're trying to buy contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="LandBuyAccessBlocked_NotifyAdultsOnly"
|
||||
type="notifytip">
|
||||
The land you're trying to buy contains [REGIONMATURITY] content, which is accessible to adults only.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="LandBuyAccessBlocked_Change"
|
||||
type="alertmodal">
|
||||
You cannot buy this land due to your maturity Rating preference.
|
||||
The land you're trying to buy contains [REGIONMATURITY] content, but your current preferences are set to exclude [REGIONMATURITY] content.
|
||||
|
||||
You can click 'Change Preference' to raise your maturity Rating preference now and allow you to enter. You will be able to search and access [REGIONMATURITY] content from now on. If you later want to change this setting back, go to Edit > Preferences... > General.
|
||||
<usetemplate
|
||||
name="okcancelignore"
|
||||
yestext="Change Preference"
|
||||
notext="Close"
|
||||
ignoretext="When a Land purchase is blocked due to maturity Rating preference"/>
|
||||
<form name="form">
|
||||
<button
|
||||
index="0"
|
||||
name="OK"
|
||||
text="Change Preferences"/>
|
||||
<button
|
||||
default="true"
|
||||
index="1"
|
||||
name="Cancel"
|
||||
text="Cancel"/>
|
||||
<ignore name="ignore" text="When the land you're trying to buy contains content excluded by your preferences."/>
|
||||
</form>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
@@ -5417,6 +5579,12 @@ Would you like to visit the [SECOND_LIFE] website to verify your age?
|
||||
yestext="Yes"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notifytip.tga"
|
||||
name="NotAgeVerified_Notify"
|
||||
type="notifytip">
|
||||
You need to be age-verified in order to access this parcel.
|
||||
</notification>
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="Cannot enter parcel: no payment info on file"
|
||||
|
||||
@@ -2060,99 +2060,144 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se
|
||||
¿Estás seguro de que quieres cambiar el contrato del Estado?
|
||||
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification name="RegionEntryAccessBlocked">
|
||||
No estás autorizado en esa región por tu nivel de calificación. Puede deberse a que no hay información validada de tu edad.
|
||||
|
||||
Por favor, comprueba que tienes instalado el último visor, y ve a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
Tus preferencias de contenido actuales te impiden visitar la región que has seleccionado. Puedes cambiar las preferencias en Editar > Preferencias > General.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification name="RegionEntryAccessBlocked_KB">
|
||||
No estás autorizado en esa región por tu nivel de calificación.
|
||||
<notification name="RegionEntryAccessBlocked_AdultsOnlyContent">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para aprender más sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate name="okcancelignore" yestext="Ir a la Base de Conocimientos" notext="Cerrar" ignoretext="Cuando la entrada a la región está bloqueada por el nivel de calificación"/>
|
||||
<usetemplate ignoretext="Paso a otra región: la región que intentas visitar tiene un contenido solo accesible para los adultos." name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
|
||||
</notification>
|
||||
|
||||
<notification name="RegionEntryAccessBlocked_Notify">
|
||||
No estás autorizado en esa región por tu nivel de calificación.
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos.
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_NotifyAdultsOnly">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
</notification>
|
||||
|
||||
<notification name="RegionEntryAccessBlocked_Change">
|
||||
No estás autorizado en esa región por tu nivel de calificación..
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos.
|
||||
|
||||
Puedes pulsar 'Cambiar preferencia' para aumentar tu nivel de calificación y poder entrar. Desde ese momento, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer esta configuración, ve a Editar > Preferencias... > General.
|
||||
<form name="form">
|
||||
<button name="OK" text="Cambiar preferencia"/>
|
||||
<button name="OK" text="Cambiar preferencias"/>
|
||||
<button default="true" name="Cancel" text="Cancelar"/>
|
||||
<ignore name="ignore" text="Cuando paso a otra región: tus preferencias de contenido no te permiten visitar la región que has seleccionado."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_PreferencesOutOfSync">
|
||||
Estamos experimentando dificultades técnicas con el teleporte porque tus preferencias no están sincronizadas con el servidor.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked">
|
||||
Tus preferencias de contenido actuales te impiden visitar la región que has seleccionado. Puedes cambiar las preferencias en Editar > Preferencias > General.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_AdultsOnlyContent">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para aprender más sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate ignoretext="Cuando teletransportarse: la región que intentas visitar tiene un contenido solo accesible para los adultos." name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_Notify">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos.
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_NotifyAdultsOnly">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_ChangeAndReTeleport">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos. Podemos cambiar tus preferencias y proceder a teleportarte o bien tú puedes cancelar el teleporte.
|
||||
<form name="form">
|
||||
<button name="OK" text="Cambiar y continuar"/>
|
||||
<button name="Cancel" text="Cancelar"/>
|
||||
<ignore name="ignore" text="Cuando la entrada a la región está bloqueada por la preferencia del nivel de calificación"/>
|
||||
<ignore name="ignore" text="Cuando teletransportarse (reiniciable): tus preferencias de contenido no te permiten visitar la región que has seleccionado."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_Change">
|
||||
La región que intentas visitar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos. Puedes cambiar tus preferencias o bien cancelar el teleporte. Después de cambiar tus preferencias, intenta teleportarte otra vez.
|
||||
<form name="form">
|
||||
<button name="OK" text="Cambiar preferencias"/>
|
||||
<button name="Cancel" text="Cancelar"/>
|
||||
<ignore name="ignore" text="Cuando teletransportarse (no reiniciable): tus preferencias de contenido no te permiten visitar la región que has seleccionado."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_PreferencesOutOfSync">
|
||||
Estamos experimentando dificultades técnicas con el teleporte porque tus preferencias no están sincronizadas con el servidor.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="PreferredMaturityChanged">
|
||||
No recibirás más notificaciones cuando vayas a visitar una región con un contenido [RATING]. En el futuro, puedes cambiar tus preferencias de contenido en Editar > Preferencias > General en la barra de menús.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MaturityChangeError">
|
||||
En este momento no se pueden cambiar tus preferencias para ver el contenido [PREFERRED_MATURITY]. Tus preferencias se han restablecido para que puedas ver el contenido [ACTUAL_MATURITY]. Si deseas cambiar las preferencias otra vez, en la barra de menús, selecciona Editar > Preferencias > General.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked">
|
||||
Tus preferencias actuales de calificación de contenido te impiden reclamar el terreno que has seleccionado. Puedes cambiar las preferencias en Editar > Preferencias > General.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_AdultsOnlyContent">
|
||||
Solo los adultos pueden reclamar este terreno.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para más información sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate ignoretext="Cuando solo adultos pueden reclamar este terreno." name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_Notify">
|
||||
El terreno que intentas reclamar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos.
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_NotifyAdultsOnly">
|
||||
El terreno que intentas reclamar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_Change">
|
||||
El terreno que intentas reclamar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos. Podemos cambiar tus preferencias y después puedes volver a intentar reclamar el terreno.
|
||||
<form name="form">
|
||||
<button name="OK" text="Cambiar preferencias"/>
|
||||
<button name="Cancel" text="Cancelar"/>
|
||||
<ignore name="ignore" text="Cuando tus preferencias de contenido no te permiten reclamar el terreno que has seleccionado."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked">
|
||||
Tus preferencias actuales de calificación de contenido te impiden comprar el terreno que has seleccionado. Puedes cambiar las preferencias en Editar > Preferencias > General.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_AdultsOnlyContent">
|
||||
Solo los adultos pueden comprar este terreno.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para más información sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
|
||||
</url>
|
||||
<usetemplate ignoretext="Solo los adultos pueden comprar este terreno." name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_Notify">
|
||||
El terreno que intentas comprar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos.
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_NotifyAdultsOnly">
|
||||
El terreno que intentas comprar tiene un contenido [REGIONMATURITY], que solo es accesible para los adultos.
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_Change">
|
||||
El terreno que intentas comprar tiene un contenido [REGIONMATURITY], pero tus preferencias actuales no te autorizan a ver este tipo de contenidos. Podemos cambiar tus preferencias y después puedes volver a intentar comprar el terreno.
|
||||
<form name="form">
|
||||
<button name="OK" text="Cambiar preferencias"/>
|
||||
<button name="Cancel" text="Cancelar"/>
|
||||
<ignore name="ignore" text="Cuando tus preferencias de contenido no te permiten comprar el terreno que has seleccionado."/>
|
||||
</form>
|
||||
</notification>
|
||||
|
||||
<notification name="LandClaimAccessBlocked">
|
||||
No puedes reclamar este terreno por tu nivel de calificación. Puede deberse a que no hay información validada de tu edad.
|
||||
|
||||
Por favor, comprueba que tienes instalado el último visor, y ve a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification name="LandClaimAccessBlocked_KB">
|
||||
No puedes reclamar este terreno por tu nivel de calificación.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para más información sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
</url>
|
||||
<usetemplate name="okcancelignore" yestext="Ir a la Base de Conocimientos" notext="Cerrar" ignoretext="Cuando el reclamar terreno está bloqueado por el nivel de calificación"/>
|
||||
</notification>
|
||||
|
||||
<notification name="LandClaimAccessBlocked_Notify">
|
||||
Por tu nivel de calificación, No puedes reclamar este terreno.
|
||||
</notification>
|
||||
|
||||
<notification name="LandClaimAccessBlocked_Change">
|
||||
No puedes reclamar este terreno por tus preferencias de nivel de calificación.
|
||||
|
||||
Puedes pulsar 'Cambiar preferencia' para aumentar tu nivel de calificación y poder entrar. Desde ese momento, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer esta configuración, ve a Editar > Preferencias... > General..
|
||||
<usetemplate name="okcancelignore" yestext="Cambiar preferencia" notext="Cerrar" ignoretext="Cuando el reclamar terreno está bloqueado por la preferencia del nivel de calificación"/>
|
||||
</notification>
|
||||
|
||||
<notification name="LandBuyAccessBlocked">
|
||||
No puedes comprar este terreno por tu nivel de calificación. Puede deberse a que no hay información validada de tu edad.
|
||||
|
||||
Por favor, compruebs que tienes instalado el último visor, y ve a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification name="LandBuyAccessBlocked_KB">
|
||||
No puedes comprar este terreno por tus preferencias de nivel de calificación.
|
||||
|
||||
¿Quieres ir a la Base de Conocimientos para más información sobre el nivel de calificación?
|
||||
<url name="url">
|
||||
https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=6010
|
||||
</url>
|
||||
<usetemplate name="okcancelignore" yestext="Ir a la Base de Conocimientos" notext="Cerrar" ignoretext="Cuando la compra de terreno está bloqueada por el nivel de calificación"/>
|
||||
</notification>
|
||||
|
||||
<notification name="LandBuyAccessBlocked_Notify">
|
||||
No puedes comprar este terreno por tu nivel de calificación.
|
||||
</notification>
|
||||
|
||||
<notification name="LandBuyAccessBlocked_Change">
|
||||
No puedes comprar este terreno por tus preferencias de nivel de calificación.
|
||||
|
||||
Puedes pulsar 'Cambiar preferencia' para aumentar tu nivel de calificación y poder entrar. Desde ese momento, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer esta configuración, ve a Editar > Preferencias... > General.
|
||||
<usetemplate name="okcancelignore" yestext="Cambiar preferencia" notext="Cerrar" ignoretext="Cuando la compra de terreno está bloqueada por la preferencia del nivel de calificación"/>
|
||||
</notification>
|
||||
|
||||
<notification name="TooManyPrimsSelected">
|
||||
"Hay seleccionadas demasiadas primitivas. Por favor, selecciona [MAX_PRIM_COUNT] o menos, y reinténtalo"
|
||||
Hay seleccionadas demasiadas primitivas. Por favor, selecciona [MAX_PRIM_COUNT] o menos, y reinténtalo
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
@@ -2614,7 +2659,7 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
|
||||
|
||||
<notification name="ConfirmQuit">
|
||||
¿Estás seguro de que quieres salir?
|
||||
<usetemplate ignoretext="Cuando esté saliendo de Second Life." name="okcancelignore" notext="Continuar" yestext="Salir"/>
|
||||
<usetemplate ignoretext="Cuando esté saliendo de [APP_NAME]." name="okcancelignore" notext="Continuar" yestext="Salir"/>
|
||||
</notification>
|
||||
|
||||
<notification name="HelpReportAbuseEmailLL">
|
||||
@@ -2699,9 +2744,9 @@ Aportar una descripción precisa nos ayuda a clasificar y procesar los informes
|
||||
|
||||
Parece que estás denunciando una violación de la propiedad intelectual. Por favor, asegúrate de que tu denuncia es correcta.
|
||||
|
||||
(1) El proceso de la denuncia. Debes enviar una denuncia de infracción si crees que un Residente está violando el sistema de permisos de [SECOND_LIFE], por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de [SECOND_LIFE] o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de Second Life.
|
||||
(1) El proceso de la denuncia. Debes enviar una denuncia de infracción si crees que un Residente está violando el sistema de permisos de [SECOND_LIFE], por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de [SECOND_LIFE] o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de [SECOND_LIFE].
|
||||
|
||||
(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de Second Life, DEBES enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php.
|
||||
(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de [SECOND_LIFE], DEBES enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php.
|
||||
|
||||
Si todavía quieres seguir con el proceso de infracción, por favor, cierra esta ventana y termina de enviar tu denuncia. En concreto, debes seleccionar la categoría 'CopyBot o Programa para saltarse los permisos'.
|
||||
|
||||
@@ -3070,7 +3115,9 @@ Pero, vaya, diviértete si quieres.
|
||||
</url>
|
||||
<usetemplate ignoretext="Advertir de la falta de la verificación de edad" name="okcancelignore" notext="No" yestext="Sí"/>
|
||||
</notification>
|
||||
|
||||
<notification name="NotAgeVerified_Notify">
|
||||
Pour que vous puissiez accéder à cette parcelle, votre âge doit être vérifié.
|
||||
</notification>
|
||||
<notification name="Cannot enter parcel: no payment info on file">
|
||||
Antes de que puedas acceder a esta parcela, se requiere que tengas archivada tu información de pago.
|
||||
¿Quieres visitar la web de Second Life para actualizar esto?
|
||||
|
||||
@@ -125,7 +125,7 @@ Media/audio sont bloqués pour [DOMAIN]
|
||||
Filtres medias ont été reinitialisés
|
||||
</notification>
|
||||
<notification functor="GenericAcknowledge" label="Message d'alerte inconnu" name="MissingAlert">
|
||||
Votre version de Second Life ne peut afficher ce message d'erreur.
|
||||
Votre version de [APP_NAME] ne peut afficher ce message d'erreur.
|
||||
|
||||
Détails de l'erreur: L'alerte, appelée '[_NAME]' est introuvable dans notifications.xml.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
@@ -273,7 +273,7 @@ En cochant cette case, votre parcelle apparaîtra :
|
||||
<notification name="ClickPartnerHelpAvatar">
|
||||
Vous pouvez proposer à un autre résident de devenir votre partenaire ou dissoudre un partenariat existant à partir du site de [SECOND_LIFE].
|
||||
|
||||
Aller sur le site de Second Life pour avoir plus d'informations sur les partenariats?
|
||||
Aller sur le site de [SECOND_LIFE_GRID] pour avoir plus d'informations sur les partenariats?
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Aller sur cette page"/>
|
||||
</notification>
|
||||
<notification name="ClickUploadHelpPermissions">
|
||||
@@ -311,7 +311,7 @@ Votre prix de vente sera de [SALE_PRICE] [CURRENCY] et la vente sera disponible
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ConfirmLandSaleToAnyoneChange">
|
||||
Attention : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de Second Life, même aux personnes qui ne sont pas dans cette région.
|
||||
Attention : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de [SECOND_LIFE], même aux personnes qui ne sont pas dans cette région.
|
||||
|
||||
Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente.
|
||||
Votre prix de vente sera de [SALE_PRICE] [CURRENCY] et la vente sera disponible à [NAME].
|
||||
@@ -458,17 +458,17 @@ Une fois payés, les frais ne sont pas remboursables.
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CacheWillClear">
|
||||
Le cache sera vidé après le redémarrage de [SECOND_LIFE].
|
||||
Le cache sera vidé après le redémarrage de [APP_NAME].
|
||||
</notification>
|
||||
<notification name="CacheWillBeMoved">
|
||||
Le cache sera déplacé après le redémarrage de [SECOND_LIFE].
|
||||
Le cache sera déplacé après le redémarrage de [APP_NAME].
|
||||
Remarque : cela videra le cache.
|
||||
</notification>
|
||||
<notification name="ChangeConnectionPort">
|
||||
Les paramètres du port prendront effet après le redémarrage de [SECOND_LIFE].
|
||||
Les paramètres du port prendront effet après le redémarrage de [APP_NAME].
|
||||
</notification>
|
||||
<notification name="ChangeSkin">
|
||||
Le nouveau thème apparaîtra après le redémarrage de [SECOND_LIFE].
|
||||
Le nouveau thème apparaîtra après le redémarrage de [APP_NAME].
|
||||
</notification>
|
||||
<notification name="GoToAuctionPage">
|
||||
Aller à la page web de [SECOND_LIFE] pour voir le détail des enchères ou enchérir.
|
||||
@@ -527,7 +527,7 @@ L'objet est peut-être inaccessible ou a peut-être été supprimé.
|
||||
Impossible d'écrire le fichier [[FILE]]
|
||||
</notification>
|
||||
<notification name="UnsupportedHardware">
|
||||
Avertissement : vous n'avez pas la configuration système requise pour utiliser Second Life. Si vous continuez à utiliser Second Life, votre performance risque d'être moindre. Malheureusement, nous n'offrons aucune assistance pour les problèmes de configuration système.
|
||||
Avertissement : vous n'avez pas la configuration système requise pour utiliser [APP_NAME]. Si vous continuez à utiliser [APP_NAME], votre performance risque d'être moindre. Malheureusement, nous n'offrons aucune assistance pour les problèmes de configuration système.
|
||||
|
||||
MINSPECS
|
||||
Voulez-vous visiter [_URL] pour plus d'informations ?
|
||||
@@ -539,7 +539,7 @@ Voulez-vous visiter [_URL] pour plus d'informations ?
|
||||
<notification name="UnknownGPU">
|
||||
Votre système contient une carte graphique que nous ne connaissons pas actuellement.
|
||||
Cela est souvent le cas avec le nouveau materiel qui n'a pas encore été testé.
|
||||
Vous pourrez probablement utiliser Second Life sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques.
|
||||
Vous pourrez probablement utiliser [APP_NAME] sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques.
|
||||
(Menu Édition > Préférences > Graphiques).
|
||||
<form name="form">
|
||||
<ignore name="ignore" text="Lors de la détection d'une carte graphique inconnue"/>
|
||||
@@ -826,7 +826,7 @@ aucune parcelle sélectionnée.
|
||||
la région dans laquelle il est situé est introuvable.
|
||||
</notification>
|
||||
<notification name="CannotCloseFloaterBuyLand">
|
||||
Vous ne pouvez pas fermer la fenêtre 'Acheter le terrain' avant que Second Life n'estime le montant de cette transaction.
|
||||
Vous ne pouvez pas fermer la fenêtre 'Acheter le terrain' avant que [APP_NAME] n'estime le montant de cette transaction.
|
||||
</notification>
|
||||
<notification name="CannotDeedLandNothingSelected">
|
||||
Cession du terrain impossible :
|
||||
@@ -1167,7 +1167,7 @@ Retourner sur www.secondlife.com pour créer un nouveau compte ?
|
||||
<usetemplate name="okcancelbuttons" notext="Continuer" yestext="Nouveau compte"/>
|
||||
</notification>
|
||||
<notification name="LoginPacketNeverReceived">
|
||||
Vous avez des problèmes à vous connecter. Il peut s'agir d'un problème avec votre connexion internet ou les serveurs de Second Life.
|
||||
Vous avez des problèmes à vous connecter. Il peut s'agir d'un problème avec votre connexion internet ou les serveurs de [SECOND_LIFE_GRID].
|
||||
|
||||
Nous vous conseillons de vérifier votre connexion Internet et de réessayer dans quelques minutes, de cliquer sur Aide, ou bien de cliquer sur Téléporter pour être téléporté vers votre domicile.
|
||||
<form name="form">
|
||||
@@ -1535,88 +1535,141 @@ Cette action modifiera des milliers de régions et sera difficile à digérer po
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked">
|
||||
Votre catégorie d'accès ne vous autorise pas à pénétrer dans cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge.
|
||||
|
||||
Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès.
|
||||
La région que vous essayez de visiter comporte du contenu dont le niveau dépasse celui de vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Édition > Préférences > Général.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_KB">
|
||||
Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<notification name="RegionEntryAccessBlocked_AdultsOnlyContent">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
|
||||
http://community.secondlife.com/t5/Base-de-connaissances/Cat%C3%A9gories-niveaux-de-contenu/ta-p/700311
|
||||
</url>
|
||||
<usetemplate ignoretext="Lorsque l'accès à une région est bloqué à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/>
|
||||
<usetemplate ignoretext="Passage à une autre région : la région que vous essayez de visiter comporte du contenu uniquement accessible aux adultes." name="okcancelignore" notext="Fermer" yestext="Accéder à la Base de connaissances"/>
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_Notify">
|
||||
Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région.
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY].
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_NotifyAdultsOnly">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_Change">
|
||||
Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région.
|
||||
|
||||
En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général.
|
||||
<form name="form">
|
||||
<button
|
||||
name="OK"
|
||||
text="Modifier les Préférences"/>
|
||||
<button
|
||||
default="true"
|
||||
name="Cancel"
|
||||
text="Fermer"/>
|
||||
<ignore name="ignore" text="Lorsque l'accès à une région est bloqué à cause des préférences concernant la catégorie d'accès"/>
|
||||
</form>
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY].
|
||||
|
||||
En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général.
|
||||
<form name="form">
|
||||
<button name="OK" text="Modifier les préférences"/>
|
||||
<button default="true" name="Cancel" text="Annuler"/>
|
||||
<ignore name="ignore" text="Passage à une autre région : la région que vous essayez de visiter comporte du contenu dont le niveau est exclu de vos préférences actuelles."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="RegionEntryAccessBlocked_PreferencesOutOfSync">
|
||||
Nous rencontrons des difficultés techniques au niveau de votre téléportation car vos préférences ne sont pas synchronisées avec le serveur.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked">
|
||||
La région que vous essayez de visiter comporte du contenu dont le niveau dépasse celui de vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Moi > Préférences > Général.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_AdultsOnlyContent">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<url name="url">
|
||||
http://community.secondlife.com/t5/Base-de-connaissances/Cat%C3%A9gories-niveaux-de-contenu/ta-p/700311
|
||||
</url>
|
||||
<usetemplate ignoretext="Téléportation : la région que vous essayez de visiter comporte du contenu uniquement accessible aux adultes." name="okcancelignore" notext="Fermer" yestext="Accéder à la Base de connaissances"/>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_Notify">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY].
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_NotifyAdultsOnly">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_ChangeAndReTeleport">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY]. Il est possible de modifier vos préférences afin de poursuivre la téléportation ou d'annuler la téléportation.
|
||||
<form name="form">
|
||||
<button name="OK" text="Modifier et continuer"/>
|
||||
<button name="Cancel" text="Annuler"/>
|
||||
<ignore name="ignore" text="Téléportation (redémarrage possible) : la région que vous essayez de visiter comporte du contenu dont le niveau est exclu de vos préférences."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_Change">
|
||||
La région que vous essayez de visiter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY]. Il est possible de modifier vos préférences ou d'annuler la téléportation. Une fois vos préférences modifiées, vous devrez réessayer de vous téléporter.
|
||||
<form name="form">
|
||||
<button name="OK" text="Modifier les préférences"/>
|
||||
<button name="Cancel" text="Annuler"/>
|
||||
<ignore name="ignore" text="Téléportation (redémarrage impossible) : la région que vous essayez de visiter comporte du contenu dont le niveau est exclu de vos préférences."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="TeleportEntryAccessBlocked_PreferencesOutOfSync">
|
||||
Nous rencontrons des difficultés techniques au niveau de votre téléportation car vos préférences ne sont pas synchronisées avec le serveur.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="PreferredMaturityChanged">
|
||||
Aucune autre notification vous informant que vous allez visiter une région au contenu [RATING] ne vous sera envoyée. Vous pouvez modifier vos préférences de contenu à l'avenir en accédant à Édition > Préférences > Général, à partir de la barre de menus.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MaturityChangeError">
|
||||
Impossible de modifier vos préférences afin d'afficher le contenu [PREFERRED_MATURITY] à l'heure actuelle. Le paramètre [ACTUAL_MATURITY] a été rétabli. Vous pouvez réessayer de modifier vos préférences en accédant à Édition > Préférences > Général, à partir de la barre de menus.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked">
|
||||
Votre catégorie d'accès ne vous permet pas de réclamer cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge.
|
||||
|
||||
Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès.
|
||||
Le niveau de contenu du terrain que vous essayez de revendiquer dépasse celui défini dans vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Édition > Préférences > Général.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_KB">
|
||||
Votre catégorie d'accès ne vous permet pas de réclamer cette région.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<notification name="LandClaimAccessBlocked_AdultsOnlyContent">
|
||||
Seuls les adultes sont autorisés à revendiquer ce terrain.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
|
||||
http://community.secondlife.com/t5/Base-de-connaissances/Cat%C3%A9gories-niveaux-de-contenu/ta-p/700311
|
||||
</url>
|
||||
<usetemplate ignoretext="Lorsqu'une région ne peut pas être réclamée à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/>
|
||||
<usetemplate ignoretext="Seuls les adultes sont autorisés à revendiquer ce terrain." name="okcancelignore" notext="Fermer" yestext="Accéder à la Base de connaissances"/>
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_Notify">
|
||||
Votre catégorie d'accès ne vous autorise pas à réclamer cette région.
|
||||
Le terrain que vous essayez de revendiquer comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY].
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_NotifyAdultsOnly">
|
||||
Le terrain que vous essayez de revendiquer comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
</notification>
|
||||
<notification name="LandClaimAccessBlocked_Change">
|
||||
Votre catégorie d'accès ne vous permet pas de réclamer cette région.
|
||||
|
||||
En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général.
|
||||
<usetemplate ignoretext="Lorsqu'une région ne peut pas être réclamée à cause des préférences concernant la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
|
||||
Le terrain que vous essayez de revendiquer comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY]. Il est possible de modifier vos préférences, puis d'essayer de revendiquer ce terrain à nouveau.
|
||||
<form name="form">
|
||||
<button name="OK" text="Modifier les préférences"/>
|
||||
<button name="Cancel" text="Annuler"/>
|
||||
<ignore name="ignore" text="Le terrain que vous essayez de revendiquer comporte du contenu dont le niveau est exclu de vos préférences."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked">
|
||||
Votre catégorie d'accès ne vous permet pas d'acheter cette région. Cela vient peut-être du fait qu'il manquait des informations pour valider votre âge.
|
||||
|
||||
Vérifiez que vous avez la toute dernière version du client et consultez les pages d'aide pour savoir comment accéder aux zones ayant ce niveau d'accès.
|
||||
Le niveau de contenu du terrain que vous essayez d'acheter dépasse celui défini dans vos préférences actuelles. Vous pouvez modifier vos préférences en accédant à Édition > Préférences > Général.
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_KB">
|
||||
Votre catégorie d'accès ne vous permet pas d'acheter cette région.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<notification name="LandBuyAccessBlocked_AdultsOnlyContent">
|
||||
Seuls les adultes sont autorisés à acheter ce terrain.
|
||||
|
||||
Souhaitez-vous en savoir plus sur les différentes catégories d'accès ?
|
||||
<url name="url">
|
||||
http://wiki.secondlife.com/wiki/Pr%C3%A9sentation_des_cat%C3%A9gories_de_contenu_(KB)
|
||||
http://community.secondlife.com/t5/Base-de-connaissances/Cat%C3%A9gories-niveaux-de-contenu/ta-p/700311
|
||||
</url>
|
||||
<usetemplate ignoretext="Lorsqu'une région ne peut pas être achetée à cause de la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Consulter les pages d'aide"/>
|
||||
<usetemplate ignoretext="Seuls les adultes sont autorisés à acheter ce terrain." name="okcancelignore" notext="Fermer" yestext="Accéder à la Base de connaissances"/>
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_Notify">
|
||||
Votre catégorie d'accès ne vous permet pas d'acheter cette région.
|
||||
Le terrain que vous essayez d'acheter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY].
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_NotifyAdultsOnly">
|
||||
Le terrain que vous essayez d'acheter comporte du contenu [REGIONMATURITY] uniquement accessible aux adultes.
|
||||
</notification>
|
||||
<notification name="LandBuyAccessBlocked_Change">
|
||||
Votre catégorie d'accès ne vous autorise pas à acheter cette région.
|
||||
|
||||
En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général.
|
||||
<usetemplate ignoretext="Lorsqu'une région ne peut pas être achetée à cause des préférences concernant la catégorie d'accès" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/>
|
||||
Le terrain que vous essayez d'acheter comporte du contenu [REGIONMATURITY] alors que les préférences que vous avez définies excluent tout contenu [REGIONMATURITY]. Il est possible de modifier vos préférences, puis d'essayer d'acheter ce terrain à nouveau.
|
||||
<form name="form">
|
||||
<button name="OK" text="Modifier les préférences"/>
|
||||
<button name="Cancel" text="Annuler"/>
|
||||
<ignore name="ignore" text="Le terrain que vous essayez d'acheter comporte du contenu dont le niveau est exclu de vos préférences."/>
|
||||
</form>
|
||||
</notification>
|
||||
<notification name="TooManyPrimsSelected">
|
||||
"Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer."
|
||||
Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer.
|
||||
</notification>
|
||||
<notification name="ProblemImportingEstateCovenant">
|
||||
Problème lors de l'importation du règlement du domaine.
|
||||
@@ -1872,7 +1925,7 @@ Si vous laissez ce champ vide, les rapports d'infraction seront envoyés à
|
||||
Valeur par défaut : désactivé
|
||||
</notification>
|
||||
<notification label="Versions de voix non compatibles" name="VoiceVersionMismatch">
|
||||
Cette version de Second Life n'est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour Second Life pour que le chat vocal fonctionne correctement.
|
||||
Cette version de [APP_NAME] n'est pas compatible avec la fonctionnalité de chat vocal dans cette région. Vous devez mettre à jour [APP_NAME] pour que le chat vocal fonctionne correctement.
|
||||
</notification>
|
||||
<notification label="Règlement du domaine" name="HelpEstateCovenant">
|
||||
Définir un règlement pour le domaine vous permet de vendre les parcelles de ce domaine. S'il n'y a pas de règlement, vous ne pouvez pas vendre le terrain. Si vous ne souhaitez pas indiquer de règlement ou donner de conseils aux acheteurs, laissez la section relative au règlement vide.
|
||||
@@ -1995,7 +2048,7 @@ Déplacer les objets de l'inventaire ?
|
||||
</notification>
|
||||
<notification name="ConfirmQuit">
|
||||
Etes-vous certain(e) de vouloir quitter ?
|
||||
<usetemplate ignoretext="Lorsque vous quittez Second Life" name="okcancelignore" notext="Continuer" yestext="Quitter"/>
|
||||
<usetemplate ignoretext="Lorsque vous quittez [APP_NAME]" name="okcancelignore" notext="Continuer" yestext="Quitter"/>
|
||||
</notification>
|
||||
<notification name="HelpReportAbuseEmailLL">
|
||||
Utilisez cet outil pour signaler des infractions aux Conditions d'utilisation et aux Règles de la communauté. Voir :
|
||||
@@ -2068,7 +2121,7 @@ Les descriptions précises nous permettent de résoudre les bugs plus rapidement
|
||||
|
||||
Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction :
|
||||
|
||||
(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de droits de Second Life, par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des Conditions d'utilisation ou des règles de la communauté. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de Second Life.
|
||||
(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de droits de [SECOND_LIFE], par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des Conditions d'utilisation ou des règles de la communauté. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de [SECOND_LIFE].
|
||||
|
||||
(2) Demandez à ce que du contenu à l'intérieur de Second Life soit supprimé. Pour demander à ce que du contenu soit supprimé de Second Life, vous devez soumettre un rapport d'infraction valide, tel que fourni dans notre Règlement contre les violations des droit d'auteurs (DMCA), à http://secondlife.com/corporate/dmca.php.
|
||||
|
||||
@@ -2193,7 +2246,7 @@ En cliquant sur le bouton Ciel Avancé, vous aurez accès à tous les réglages
|
||||
En cliquant sur le bouton Eau Avancée, vous aurez accès à tous les réglages relatifs à l'eau.
|
||||
</notification>
|
||||
<notification name="HelpDayCycle">
|
||||
L'éditeur du cycle du jour vous permet de contrôler le ciel au cours du cycle jour/nuit de second Life. C'est ce même cycle qui est contrôlé par le curseur Heure de la journée dans l'éditeur d'environnement basique.
|
||||
L'éditeur du cycle du jour vous permet de contrôler le ciel au cours du cycle jour/nuit de [SECOND_LIFE_GRID]. C'est ce même cycle qui est contrôlé par le curseur Heure de la journée dans l'éditeur d'environnement basique.
|
||||
|
||||
L'éditeur du jour fonctionne grâce au réglage d'images-clés. Ces images-clés sont représentées par les marques grises sur la ligne du temps et ont des préréglages qui leurs sont associées. Au cours de la journée et de la nuit, le ciel WindLight s'anime en passant d'une clé à l'autre.
|
||||
|
||||
@@ -2275,7 +2328,7 @@ Même chose que l'azimut.
|
||||
Contrôle la vitesse des nuages sur l'axe des Y.
|
||||
</notification>
|
||||
<notification name="HelpClassicClouds">
|
||||
Cochez cette option pour utiliser les anciens nuages de Second Life en plus des nuages WindLight.
|
||||
Cochez cette option pour utiliser les anciens nuages de [APP_NAME] en plus des nuages WindLight.
|
||||
</notification>
|
||||
<notification name="HelpWaterFogColor">
|
||||
Permet de sélectionner la couleur du brouillard sous l'eau.
|
||||
@@ -2373,7 +2426,7 @@ Même chose que l'azimut.
|
||||
</notification>
|
||||
<notification name="NotAgeVerified">
|
||||
Pour que vous puissiez accéder à cette parcelle, votre âge doit être vérifié.
|
||||
Voulez-vous aller sur le site de Second Life pour vérifier votre âge ?
|
||||
Voulez-vous aller sur le site de [SECOND_LIFE_GRID] pour vérifier votre âge ?
|
||||
|
||||
[_URL]
|
||||
<url name="url" option="0">
|
||||
@@ -2381,6 +2434,9 @@ Voulez-vous aller sur le site de Second Life pour vérifier votre âge ?
|
||||
</url>
|
||||
<usetemplate ignoretext="Avertir si l'âge n'a pas été vérifié" name="okcancelignore" notext="Non" yestext="Oui"/>
|
||||
</notification>
|
||||
<notification name="NotAgeVerified_Notify">
|
||||
Pour que vous puissiez accéder à cette parcelle, votre âge doit être vérifié.
|
||||
</notification>
|
||||
<notification name="Cannot enter parcel: no payment info on file">
|
||||
Avant de pouvoir pénétrer sur cette parcelle, vous devez enregistrer vos informations de paiement.
|
||||
Voulez-vous aller sur le site de Second Life pour enregistrer ces informations ?
|
||||
@@ -2930,7 +2986,7 @@ Les objets flexibles ne peuvent pas avoir de propriétés physiques et doivent r
|
||||
</notification>
|
||||
<notification name="FirstDebugMenus">
|
||||
Vous avez activé le menu Avancé.
|
||||
Ce menu contient des fonctionnalités utiles pour les développeurs qui travaillent sur Second Life.
|
||||
Ce menu contient des fonctionnalités utiles pour les développeurs qui travaillent sur [APP_NAME].
|
||||
Pour activer/désactiver ce menu sous Windows, appuyez sur Ctrl-Alt-D. Sur un Mac, appuyez sur Cmd-Opt-Maj-D
|
||||
</notification>
|
||||
<notification name="FirstSculptedPrim">
|
||||
@@ -3038,7 +3094,7 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore
|
||||
- Votre processeur ne remplit pas les conditions minimum requises.
|
||||
</global>
|
||||
<global name="UnsupportedGLRequirements">
|
||||
Vous semblez ne pas avoir le matériel requis pour utiliser Second Life. Second Life requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les drivers les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation.
|
||||
Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les drivers les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation.
|
||||
|
||||
Si vous avez toujours des problèmes, veuillez consulter la page suivante : http://www.secondlife.com/support
|
||||
</global>
|
||||
|
||||
Reference in New Issue
Block a user