Merge viewer-quickgraphics
commit
da9446dcd8
|
|
@ -1731,11 +1731,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>468e88a527e610804c3eecf07f4ed70b</string>
|
||||
<string>01a7cc9d0e56238a9abedd7a41ccd0a3</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Darwin/installer/llphysicsextensions_source-1.0.298369-darwin-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Darwin/installer/llphysicsextensions_source-1.0.313564-darwin-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1745,9 +1745,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>793964e49c935b414c4bdbb8a0d14ad1</string>
|
||||
<string>c94dc7ab6efe59c0d5d04fc447257c57</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Linux/installer/llphysicsextensions_source-1.0.298369-linux-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Linux/installer/llphysicsextensions_source-1.0.313564-linux-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1757,16 +1757,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>922aad5261aac150e5ce3c094e57f373</string>
|
||||
<string>4a9dbeb437d0e1546b93d16073ff1442</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/CYGWIN/installer/llphysicsextensions_source-1.0.298369-windows-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/CYGWIN/installer/llphysicsextensions_source-1.0.313564-windows-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.0.298369</string>
|
||||
<string>1.0.313564</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_stub</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@
|
|||
#include "lldir.h"
|
||||
#include "llfile.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llsdserialize.h"
|
||||
#include "llproxy.h"
|
||||
#include "llcorehttputil.h"
|
||||
#include "llhttpsdhandler.h"
|
||||
|
|
@ -49,6 +48,7 @@
|
|||
|
||||
#include <curl/curl.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <boost/regex.hpp>
|
||||
|
||||
|
||||
// [SL:KB] - Patch: Viewer-CrashLookup | Checked: 2011-03-24 (Catznip-2.6.0a) | Added: Catznip-2.6.0a
|
||||
|
|
@ -84,12 +84,15 @@ protected:
|
|||
|
||||
void LLCrashLoggerHandler::onSuccess(LLCore::HttpResponse * response, const LLSD &content)
|
||||
{
|
||||
LL_DEBUGS("CRASHREPORT") << "Request to " << response->getRequestURL() << "succeeded" << LL_ENDL;
|
||||
gBreak = true;
|
||||
gSent = true;
|
||||
}
|
||||
|
||||
void LLCrashLoggerHandler::onFailure(LLCore::HttpResponse * response, LLCore::HttpStatus status)
|
||||
{
|
||||
LL_WARNS("CRASHREPORT") << "Request to " << response->getRequestURL()
|
||||
<< " failed: " << status.toString() << LL_ENDL;
|
||||
gBreak = true;
|
||||
}
|
||||
|
||||
|
|
@ -164,27 +167,25 @@ std::string getStartupStateFromLog(std::string& sllog)
|
|||
return startup_state;
|
||||
}
|
||||
|
||||
bool LLCrashLogger::readDebugFromXML(LLSD& dest, const std::string& filename )
|
||||
bool LLCrashLogger::readFromXML(LLSD& dest, const std::string& filename )
|
||||
{
|
||||
std::string db_file_name = gDirUtilp->getExpandedFilename(LL_PATH_DUMP,filename);
|
||||
|
||||
// <FS:ND> Properly handle unicode path on Windows. Maybe could use a llifstream instead of ifdef?
|
||||
|
||||
// std::ifstream debug_log_file(db_file_name.c_str());
|
||||
// std::ifstream log_file(db_file_name.c_str());
|
||||
|
||||
#ifdef LL_WINDOWS
|
||||
std::ifstream debug_log_file( utf8str_to_utf16str( db_file_name ).c_str());
|
||||
std::ifstream log_file( utf8str_to_utf16str( db_file_name ).c_str());
|
||||
#else
|
||||
std::ifstream debug_log_file(db_file_name.c_str());
|
||||
std::ifstream log_file(db_file_name.c_str());
|
||||
#endif
|
||||
|
||||
// </FS:ND>
|
||||
|
||||
// Look for it in the debug_info.log file
|
||||
if (debug_log_file.is_open())
|
||||
// Look for it in the given file
|
||||
if (log_file.is_open())
|
||||
{
|
||||
LLSDSerialize::fromXML(dest, debug_log_file);
|
||||
debug_log_file.close();
|
||||
LLSDSerialize::fromXML(dest, log_file);
|
||||
log_file.close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -228,9 +229,16 @@ void LLCrashLogger::gatherFiles()
|
|||
|
||||
LLSD static_sd;
|
||||
LLSD dynamic_sd;
|
||||
//if we ever want to change the endpoint we send crashes to
|
||||
//we can construct a file download ( a la feature table filename for example)
|
||||
//containing the new endpoint
|
||||
LLSD endpoint;
|
||||
std::string grid;
|
||||
std::string fqdn;
|
||||
|
||||
bool has_logs = readDebugFromXML( static_sd, "static_debug_info.log" );
|
||||
has_logs |= readDebugFromXML( dynamic_sd, "dynamic_debug_info.log" );
|
||||
bool has_logs = readFromXML( static_sd, "static_debug_info.log" );
|
||||
has_logs |= readFromXML( dynamic_sd, "dynamic_debug_info.log" );
|
||||
|
||||
|
||||
if ( has_logs )
|
||||
{
|
||||
|
|
@ -240,6 +248,7 @@ void LLCrashLogger::gatherFiles()
|
|||
|
||||
mFileMap["SecondLifeLog"] = mDebugLog["SLLog"].asString();
|
||||
mFileMap["SettingsXml"] = mDebugLog["SettingsFilename"].asString();
|
||||
mFileMap["CrashHostUrl"] = loadCrashURLSetting();
|
||||
if(mDebugLog.has("CAFilename"))
|
||||
{
|
||||
LLCore::HttpRequest::setStaticPolicyOption(LLCore::HttpRequest::PO_CA_FILE,
|
||||
|
|
@ -251,8 +260,8 @@ void LLCrashLogger::gatherFiles()
|
|||
LLCore::HttpRequest::GLOBAL_POLICY_ID, gDirUtilp->getCAFile(), NULL);
|
||||
}
|
||||
|
||||
LL_INFOS() << "Using log file from debug log " << mFileMap["SecondLifeLog"] << LL_ENDL;
|
||||
LL_INFOS() << "Using settings file from debug log " << mFileMap["SettingsXml"] << LL_ENDL;
|
||||
LL_INFOS("CRASHREPORT") << "Using log file from debug log " << mFileMap["SecondLifeLog"] << LL_ENDL;
|
||||
LL_INFOS("CRASHREPORT") << "Using settings file from debug log " << mFileMap["SettingsXml"] << LL_ENDL;
|
||||
}
|
||||
// else
|
||||
// {
|
||||
|
|
@ -274,36 +283,16 @@ void LLCrashLogger::gatherFiles()
|
|||
mFileMap.erase( "SecondLifeLog" ); // <FS:ND/> Don't send any Firestorm.log. It's likely huge and won't help for crashdump processing.
|
||||
mDebugLog.erase( "SLLog" ); // <FS:ND/> Remove SLLog, as it's a path that contains the OS user name.
|
||||
|
||||
//Use the debug log to reconstruct the URL to send the crash report to
|
||||
if(mDebugLog.has("CrashHostUrl"))
|
||||
{
|
||||
// Crash log receiver has been manually configured.
|
||||
mCrashHost = mDebugLog["CrashHostUrl"].asString();
|
||||
}
|
||||
|
||||
if ( has_logs && (mFileMap["CrashHostUrl"] != "") )
|
||||
{
|
||||
mCrashHost = mFileMap["CrashHostUrl"];
|
||||
}
|
||||
// <FS:ND> Might hardcode mCrashHost to crashlogs.phoenixviewer.com if unset
|
||||
|
||||
// <FS:ND> Do not send out crash reports to Linden Labs. They won't have much use for them without symbols.
|
||||
|
||||
// else if(mDebugLog.has("CurrentSimHost"))
|
||||
// {
|
||||
// mCrashHost = "https://";
|
||||
// mCrashHost += mDebugLog["CurrentSimHost"].asString();
|
||||
// mCrashHost += ":12043/crash/report";
|
||||
// }
|
||||
// else if(mDebugLog.has("GridName"))
|
||||
// {
|
||||
// // This is a 'little' hacky, but its the best simple solution.
|
||||
// std::string grid_host = mDebugLog["GridName"].asString();
|
||||
// LLStringUtil::toLower(grid_host);
|
||||
|
||||
// mCrashHost = "https://login.";
|
||||
// mCrashHost += grid_host;
|
||||
// mCrashHost += ".lindenlab.com:12043/crash/report";
|
||||
// }
|
||||
|
||||
// Use login servers as the alternate, since they are already load balanced and have a known name
|
||||
// mAltCrashHost = "https://login.agni.lindenlab.com:12043/crash/report";
|
||||
//default to agni, per product
|
||||
//mAltCrashHost = "http://viewercrashreport.agni.lindenlab.com/cgi-bin/viewercrashreceiver.py";
|
||||
|
||||
// </FS:ND>
|
||||
|
||||
|
|
@ -313,30 +302,31 @@ void LLCrashLogger::gatherFiles()
|
|||
updateApplication("Encoding files...");
|
||||
|
||||
// <FS:ND> We're not using this. We do not send a LLSD xml with all data embedded.
|
||||
//for(std::map<std::string, std::string>::iterator itr = mFileMap.begin(); itr != mFileMap.end(); ++itr)
|
||||
//{
|
||||
// std::ifstream f((*itr).second.c_str());
|
||||
// if(f.is_open())
|
||||
//{
|
||||
// std::stringstream s;
|
||||
// s << f.rdbuf();
|
||||
|
||||
// for(std::map<std::string, std::string>::iterator itr = mFileMap.begin(); itr != mFileMap.end(); ++itr)
|
||||
// {
|
||||
// std::ifstream f((*itr).second.c_str());
|
||||
// if(!f.is_open())
|
||||
// {
|
||||
// LL_INFOS("CRASHREPORT") << "Can't find file " << (*itr).second << LL_ENDL;
|
||||
// continue;
|
||||
// }
|
||||
// std::stringstream s;
|
||||
// s << f.rdbuf();
|
||||
// std::string crash_info = s.str();
|
||||
// if(itr->first == "SecondLifeLog")
|
||||
// {
|
||||
// if(!mCrashInfo["DebugLog"].has("StartupState"))
|
||||
// {
|
||||
// mCrashInfo["DebugLog"]["StartupState"] = getStartupStateFromLog(crash_info);
|
||||
// }
|
||||
// trimSLLog(crash_info);
|
||||
// }
|
||||
|
||||
// std::string crash_info = s.str();
|
||||
// if(itr->first == "SecondLifeLog")
|
||||
// {
|
||||
// if(!mCrashInfo["DebugLog"].has("StartupState"))
|
||||
// {
|
||||
// mCrashInfo["DebugLog"]["StartupState"] = getStartupStateFromLog(crash_info);
|
||||
// }
|
||||
// trimSLLog(crash_info);
|
||||
// }
|
||||
|
||||
// mCrashInfo[(*itr).first] = LLStringFn::strip_invalid_xml(rawstr_to_utf8(crash_info));
|
||||
// }
|
||||
// mCrashInfo[(*itr).first] = LLStringFn::strip_invalid_xml(rawstr_to_utf8(crash_info));
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// LL_WARNS("CRASHREPORT") << "Can't find file " << (*itr).second << LL_ENDL;
|
||||
//}
|
||||
//}
|
||||
|
||||
// </FS:ND>
|
||||
|
||||
|
|
@ -417,8 +407,9 @@ LLSD LLCrashLogger::constructPostData()
|
|||
|
||||
const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
|
||||
|
||||
S32 LLCrashLogger::loadCrashBehaviorSetting()
|
||||
std::string LLCrashLogger::loadCrashURLSetting()
|
||||
{
|
||||
|
||||
// First check user_settings (in the user's home dir)
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
|
||||
if (! mCrashSettings.loadFromFile(filename))
|
||||
|
|
@ -428,38 +419,14 @@ S32 LLCrashLogger::loadCrashBehaviorSetting()
|
|||
mCrashSettings.loadFromFile(filename);
|
||||
}
|
||||
|
||||
// If we didn't load any files above, this will return the default
|
||||
S32 value = mCrashSettings.getS32("CrashSubmitBehavior");
|
||||
|
||||
// Whatever value we got, make sure it's valid
|
||||
switch (value)
|
||||
{
|
||||
case CRASH_BEHAVIOR_NEVER_SEND:
|
||||
return CRASH_BEHAVIOR_NEVER_SEND;
|
||||
case CRASH_BEHAVIOR_ALWAYS_SEND:
|
||||
return CRASH_BEHAVIOR_ALWAYS_SEND;
|
||||
}
|
||||
|
||||
return CRASH_BEHAVIOR_ASK;
|
||||
}
|
||||
|
||||
bool LLCrashLogger::saveCrashBehaviorSetting(S32 crash_behavior)
|
||||
{
|
||||
switch (crash_behavior)
|
||||
{
|
||||
case CRASH_BEHAVIOR_ASK:
|
||||
case CRASH_BEHAVIOR_NEVER_SEND:
|
||||
case CRASH_BEHAVIOR_ALWAYS_SEND:
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
mCrashSettings.setS32("CrashSubmitBehavior", crash_behavior);
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
|
||||
mCrashSettings.saveToFile(filename, FALSE);
|
||||
|
||||
return true;
|
||||
if (! mCrashSettings.controlExists("CrashHostUrl"))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
return mCrashSettings.getString("CrashHostUrl");
|
||||
}
|
||||
}
|
||||
|
||||
// [SL:KB] - Patch: Viewer-CrashReporting | Checked: 2011-03-24 (Catznip-2.6.0a) | Added: Catznip-2.6.0a
|
||||
|
|
@ -480,13 +447,13 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg
|
|||
LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
|
||||
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
|
||||
|
||||
gBreak = false;
|
||||
httpOpts->setTimeout(timeout);
|
||||
|
||||
for(int i = 0; i < retries; ++i)
|
||||
{
|
||||
updateApplication(llformat("%s, try %d...", msg.c_str(), i+1));
|
||||
|
||||
LL_INFOS("CRASHREPORT") << "POST crash data to " << host << LL_ENDL;
|
||||
LLCore::HttpHandle handle = LLCoreHttpUtil::requestPostWithLLSD(httpRequest.get(), LLCore::HttpRequest::DEFAULT_POLICY_ID, 0,
|
||||
host, data, httpOpts, LLCore::HttpHeaders::ptr_t(), LLCore::HttpHandler::ptr_t(new LLCrashLoggerHandler));
|
||||
|
||||
|
|
@ -499,10 +466,11 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg
|
|||
}
|
||||
|
||||
while(!gBreak)
|
||||
{
|
||||
updateApplication(); // No new message, just pump the IO
|
||||
{
|
||||
ms_sleep(250);
|
||||
updateApplication(); // No new message, just pump the IO
|
||||
httpRequest->update(0L);
|
||||
}
|
||||
}
|
||||
if(gSent)
|
||||
{
|
||||
return gSent;
|
||||
|
|
@ -515,13 +483,16 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg
|
|||
|
||||
bool LLCrashLogger::sendCrashLog(std::string dump_dir)
|
||||
{
|
||||
|
||||
gDirUtilp->setDumpDir( dump_dir );
|
||||
|
||||
// std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
|
||||
// "SecondLifeCrashReport");
|
||||
std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "FirestormCrashReport");
|
||||
std::string report_file = dump_path + ".log";
|
||||
|
||||
|
||||
LL_DEBUGS("CRASHREPORT") << "sending " << report_file << LL_ENDL;
|
||||
|
||||
gatherFiles();
|
||||
|
||||
LLSD post_data;
|
||||
|
|
@ -536,13 +507,19 @@ bool LLCrashLogger::sendCrashLog(std::string dump_dir)
|
|||
#endif
|
||||
|
||||
LLSDSerialize::toPrettyXML(post_data, out_file);
|
||||
out_file.flush();
|
||||
out_file.close();
|
||||
|
||||
bool sent = false;
|
||||
|
||||
//*TODO: Translate
|
||||
if(mCrashHost != "")
|
||||
if(mCrashHost != "")
|
||||
{
|
||||
LL_WARNS("CRASHREPORT") << "Sending crash data to server from CrashHostUrl '" << mCrashHost << "'" << LL_ENDL;
|
||||
|
||||
std::string msg = "Using override crash server... ";
|
||||
msg = msg+mCrashHost.c_str();
|
||||
updateApplication(msg.c_str());
|
||||
|
||||
sent = runCrashLogPost(mCrashHost, post_data, std::string("Sending to server"), 3, 5);
|
||||
}
|
||||
|
||||
|
|
@ -550,6 +527,7 @@ bool LLCrashLogger::sendCrashLog(std::string dump_dir)
|
|||
|
||||
// if(!sent)
|
||||
// {
|
||||
//updateApplication("Using default server...");
|
||||
// sent = runCrashLogPost(mAltCrashHost, post_data, std::string("Sending to alternate server"), 3, 5);
|
||||
// }
|
||||
|
||||
|
|
@ -563,83 +541,32 @@ bool LLCrashLogger::sendCrashLog(std::string dump_dir)
|
|||
bool LLCrashLogger::sendCrashLogs()
|
||||
{
|
||||
|
||||
//pertinent code from below moved into a subroutine.
|
||||
LLSD locks = mKeyMaster.getProcessList();
|
||||
LLSD newlocks = LLSD::emptyArray();
|
||||
|
||||
LLSD opts = getOptionData(PRIORITY_COMMAND_LINE);
|
||||
LLSD rec;
|
||||
|
||||
if ( opts.has("pid") && opts.has("dumpdir") && opts.has("procname") )
|
||||
if ( opts.has("dumpdir") )
|
||||
{
|
||||
rec["pid"]=opts["pid"];
|
||||
rec["dumpdir"]=opts["dumpdir"];
|
||||
rec["procname"]=opts["procname"];
|
||||
}
|
||||
|
||||
// <FS:ND> Try to send the current crash right away, if that fails queue it for next time.
|
||||
if( rec && rec.has("dumpdir") )
|
||||
if( !sendCrashLog( rec["dumpdir"].asString() ) )
|
||||
newlocks.append(rec);
|
||||
// </FS:ND>
|
||||
|
||||
if (locks.isArray())
|
||||
else
|
||||
{
|
||||
for (LLSD::array_iterator lock=locks.beginArray();
|
||||
lock !=locks.endArray();
|
||||
++lock)
|
||||
{
|
||||
if ( (*lock).has("pid") && (*lock).has("dumpdir") && (*lock).has("procname") )
|
||||
{
|
||||
if ( mKeyMaster.isProcessAlive( (*lock)["pid"].asInteger(), (*lock)["procname"].asString() ) )
|
||||
{
|
||||
newlocks.append(*lock);
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO: This is a hack but I didn't want to include boost in another file or retest everything related to lldir
|
||||
if (LLCrashLock::fileExists((*lock)["dumpdir"].asString()))
|
||||
{
|
||||
//the viewer cleans up the log directory on clean shutdown
|
||||
//but is ignorant of the locking table.
|
||||
if (!sendCrashLog((*lock)["dumpdir"].asString()))
|
||||
{
|
||||
newlocks.append(*lock); //Failed to send log so don't delete it.
|
||||
}
|
||||
else
|
||||
{
|
||||
//mCrashInfo["DebugLog"].erase("MinidumpPath");
|
||||
return false;
|
||||
}
|
||||
|
||||
mKeyMaster.cleanupProcess((*lock)["dumpdir"].asString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Discarding corrupted entry from lock table." << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// <FS:ND> We want this appended right away, or this crash only gets send the next time the crashreporter runs.
|
||||
// if (rec)
|
||||
// {
|
||||
// newlocks.append(rec);
|
||||
// }
|
||||
// </FS:ND>
|
||||
|
||||
mKeyMaster.putProcessList(newlocks);
|
||||
return true;
|
||||
return sendCrashLog(rec["dumpdir"].asString());
|
||||
}
|
||||
|
||||
void LLCrashLogger::updateApplication(const std::string& message)
|
||||
{
|
||||
if (!message.empty()) LL_INFOS() << message << LL_ENDL;
|
||||
if (!message.empty()) LL_INFOS("CRASHREPORT") << message << LL_ENDL;
|
||||
}
|
||||
|
||||
bool LLCrashLogger::init()
|
||||
{
|
||||
LL_DEBUGS("CRASHREPORT") << LL_ENDL;
|
||||
|
||||
LLCore::LLHttp::initialize();
|
||||
|
||||
// We assume that all the logs we're looking for reside on the current drive
|
||||
|
|
@ -671,25 +598,7 @@ bool LLCrashLogger::init()
|
|||
// Set the log file to crashreport.log
|
||||
LLError::logToFile(log_file); //NOTE: Until this line, LL_INFOS LL_WARNS, etc are blown to the ether.
|
||||
|
||||
// Handle locking
|
||||
bool locked = mKeyMaster.requestMaster(); //Request master locking file. wait time is defaulted to 300S
|
||||
|
||||
while (!locked && mKeyMaster.isWaiting())
|
||||
{
|
||||
LL_INFOS("CRASHREPORT") << "Waiting for lock." << LL_ENDL;
|
||||
#if LL_WINDOWS
|
||||
Sleep(1000);
|
||||
#else
|
||||
sleep(1);
|
||||
#endif
|
||||
locked = mKeyMaster.checkMaster();
|
||||
}
|
||||
|
||||
if (!locked)
|
||||
{
|
||||
LL_WARNS("CRASHREPORT") << "Unable to get master lock. Another crash reporter may be hung." << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
LL_INFOS("CRASHREPORT") << "Crash reporter file rotation complete." << LL_ENDL;
|
||||
|
||||
mCrashSettings.declareS32("CrashSubmitBehavior", CRASH_BEHAVIOR_ALWAYS_SEND,
|
||||
"Controls behavior when viewer crashes "
|
||||
|
|
@ -697,16 +606,6 @@ bool LLCrashLogger::init()
|
|||
"1 = always send crash report, "
|
||||
"2 = never send crash report)");
|
||||
|
||||
// LL_INFOS() << "Loading crash behavior setting" << LL_ENDL;
|
||||
// mCrashBehavior = loadCrashBehaviorSetting();
|
||||
|
||||
// If user doesn't want to send, bail out
|
||||
if (mCrashBehavior == CRASH_BEHAVIOR_NEVER_SEND)
|
||||
{
|
||||
LL_INFOS() << "Crash behavior is never_send, quitting" << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
init_curl();
|
||||
LLCore::HttpRequest::createService();
|
||||
LLCore::HttpRequest::startThread();
|
||||
|
|
|
|||
|
|
@ -49,13 +49,12 @@ class LLCrashLogger : public LLApp
|
|||
public:
|
||||
LLCrashLogger();
|
||||
virtual ~LLCrashLogger();
|
||||
S32 loadCrashBehaviorSetting();
|
||||
bool readDebugFromXML(LLSD& dest, const std::string& filename );
|
||||
std::string loadCrashURLSetting();
|
||||
bool readFromXML(LLSD& dest, const std::string& filename );
|
||||
void gatherFiles();
|
||||
void mergeLogs( LLSD src_sd );
|
||||
|
||||
virtual void gatherPlatformSpecificFiles() {}
|
||||
bool saveCrashBehaviorSetting(S32 crash_behavior);
|
||||
bool sendCrashLog(std::string dump_dir);
|
||||
bool sendCrashLogs();
|
||||
LLSD constructPostData();
|
||||
|
|
|
|||
|
|
@ -66,22 +66,19 @@ void LLCrashLoggerMac::gatherPlatformSpecificFiles()
|
|||
|
||||
bool LLCrashLoggerMac::mainLoop()
|
||||
{
|
||||
|
||||
if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND)
|
||||
{
|
||||
gSendReport = true;
|
||||
}
|
||||
|
||||
if(gRememberChoice)
|
||||
{
|
||||
if(gSendReport) saveCrashBehaviorSetting(CRASH_BEHAVIOR_ALWAYS_SEND);
|
||||
else saveCrashBehaviorSetting(CRASH_BEHAVIOR_NEVER_SEND);
|
||||
}
|
||||
|
||||
if(gSendReport)
|
||||
{
|
||||
setUserText(gUserNotes);
|
||||
sendCrashLogs();
|
||||
}
|
||||
|
||||
LL_INFOS() << "Sending of logs complete" << LL_ENDL;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,16 +39,12 @@ int main(int argc, char **argv)
|
|||
LLSD options = LLApp::instance()->getOptionData(
|
||||
LLApp::PRIORITY_COMMAND_LINE);
|
||||
|
||||
if (!(options.has("pid") && options.has("dumpdir")))
|
||||
{
|
||||
LL_WARNS() << "Insufficient parameters to crash report." << LL_ENDL;
|
||||
}
|
||||
|
||||
if (! app.init())
|
||||
{
|
||||
LL_WARNS() << "Unable to initialize application." << LL_ENDL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (app.getCrashBehavior() != CRASH_BEHAVIOR_ALWAYS_SEND)
|
||||
{
|
||||
// return NSApplicationMain(argc, (const char **)argv);
|
||||
|
|
|
|||
|
|
@ -83,10 +83,6 @@ static void exceptionTerminateHandler()
|
|||
|
||||
bool initViewer()
|
||||
{
|
||||
#if LL_SOLARIS && defined(__sparc)
|
||||
asm ("ta\t6"); // NOTE: Make sure memory alignment is enforced on SPARC
|
||||
#endif
|
||||
|
||||
// Set the working dir to <bundle>/Contents/Resources
|
||||
if (chdir(gDirUtilp->getAppRODataDir().c_str()) == -1)
|
||||
{
|
||||
|
|
@ -301,6 +297,7 @@ void LLAppViewerMacOSX::initCrashReporting(bool reportFreeze)
|
|||
std::string appname = gDirUtilp->getExecutableFilename();
|
||||
std::string str[] = { "-pid", pid_str.str(), "-dumpdir", logdir, "-procname", appname.c_str() };
|
||||
std::vector< std::string > args( str, str + ( sizeof ( str ) / sizeof ( std::string ) ) );
|
||||
LL_WARNS() << "about to launch mac-crash-logger" << pid_str << " " << logdir << " " << appname << LL_ENDL;
|
||||
launchApplication(&command_str, &args);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,89 +103,68 @@ void LLAvatarRenderInfoAccountant::avatarRenderInfoGetCoro(std::string url, U64
|
|||
|
||||
if (result.has(KEY_AGENTS))
|
||||
{
|
||||
const LLSD & avatar_render_info = result[KEY_AGENTS];
|
||||
if (avatar_render_info.isMap())
|
||||
const LLSD & agents = result[KEY_AGENTS];
|
||||
if (agents.isMap())
|
||||
{
|
||||
if ( avatar_render_info.has(KEY_REPORTING_COMPLEXITY_LIMIT)
|
||||
&& avatar_render_info.has(KEY_OVER_COMPLEXITY_LIMIT))
|
||||
for (LLSD::map_const_iterator agent_iter = agents.beginMap();
|
||||
agent_iter != agents.endMap();
|
||||
agent_iter++
|
||||
)
|
||||
{
|
||||
U32 reporting = avatar_render_info[KEY_REPORTING_COMPLEXITY_LIMIT].asInteger();
|
||||
U32 overlimit = avatar_render_info[KEY_OVER_COMPLEXITY_LIMIT].asInteger();
|
||||
|
||||
LL_DEBUGS("AvatarRenderInfo") << "complexity limit: "<<reporting<<" reporting, "<<overlimit<<" over limit"<<LL_ENDL;
|
||||
|
||||
LLAvatarRenderNotifier::getInstance()->updateNotificationRegion(reporting, overlimit);
|
||||
}
|
||||
|
||||
if (avatar_render_info.has(KEY_AGENTS))
|
||||
{
|
||||
const LLSD & agents = avatar_render_info[KEY_AGENTS];
|
||||
if (agents.isMap())
|
||||
LLUUID target_agent_id = LLUUID(agent_iter->first);
|
||||
LLViewerObject* avatarp = gObjectList.findObject(target_agent_id);
|
||||
if (avatarp && avatarp->isAvatar())
|
||||
{
|
||||
for (LLSD::map_const_iterator agent_iter = agents.beginMap();
|
||||
agent_iter != agents.endMap();
|
||||
agent_iter++
|
||||
)
|
||||
const LLSD & agent_info_map = agent_iter->second;
|
||||
if (agent_info_map.isMap())
|
||||
{
|
||||
LLUUID target_agent_id = LLUUID(agent_iter->first);
|
||||
LLViewerObject* avatarp = gObjectList.findObject(target_agent_id);
|
||||
if (avatarp && avatarp->isAvatar())
|
||||
{
|
||||
const LLSD & agent_info_map = agent_iter->second;
|
||||
if (agent_info_map.isMap())
|
||||
{
|
||||
LL_DEBUGS("AvatarRenderInfo") << " Agent " << target_agent_id
|
||||
<< ": " << agent_info_map << LL_ENDL;
|
||||
LL_DEBUGS("AvatarRenderInfo") << " Agent " << target_agent_id
|
||||
<< ": " << agent_info_map << LL_ENDL;
|
||||
|
||||
if (agent_info_map.has(KEY_WEIGHT))
|
||||
{
|
||||
((LLVOAvatar *) avatarp)->setReportedVisualComplexity(agent_info_map[KEY_WEIGHT].asInteger());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo") << "agent entry invalid"
|
||||
<< " agent " << target_agent_id
|
||||
<< " map " << agent_info_map
|
||||
<< LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (agent_info_map.has(KEY_WEIGHT))
|
||||
{
|
||||
LL_DEBUGS("AvatarRenderInfo") << "Unknown agent " << target_agent_id << LL_ENDL;
|
||||
((LLVOAvatar *) avatarp)->setReportedVisualComplexity(agent_info_map[KEY_WEIGHT].asInteger());
|
||||
}
|
||||
} // for agent_iter
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo") << "agent entry invalid"
|
||||
<< " agent " << target_agent_id
|
||||
<< " map " << agent_info_map
|
||||
<< LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo") << "malformed get response agents avatar_render_info is not map" << LL_ENDL;
|
||||
LL_DEBUGS("AvatarRenderInfo") << "Unknown agent " << target_agent_id << LL_ENDL;
|
||||
}
|
||||
} // has "agents"
|
||||
else if (avatar_render_info.has(KEY_ERROR))
|
||||
{
|
||||
const LLSD & error = avatar_render_info[KEY_ERROR];
|
||||
LL_WARNS("AvatarRenderInfo") << "Avatar render info GET error: "
|
||||
<< error[KEY_IDENTIFIER]
|
||||
<< ": " << error[KEY_MESSAGE]
|
||||
<< LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo") << "no agent key in get response" << LL_ENDL;
|
||||
}
|
||||
} // for agent_iter
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo") << "malformed get response is not map" << LL_ENDL;
|
||||
LL_WARNS("AvatarRenderInfo") << "malformed get response '" << KEY_AGENTS << "' is not map" << LL_ENDL;
|
||||
}
|
||||
} // has "agents"
|
||||
else if (result.has(KEY_ERROR))
|
||||
else
|
||||
{
|
||||
const LLSD & error = result[KEY_ERROR];
|
||||
LL_WARNS() << "Avatar render info GET error: "
|
||||
<< error[KEY_IDENTIFIER]
|
||||
<< ": " << error[KEY_MESSAGE]
|
||||
<< " from region " << regionp->getName()
|
||||
LL_INFOS("AvatarRenderInfo") << "no '"<< KEY_AGENTS << "' key in get response" << LL_ENDL;
|
||||
}
|
||||
|
||||
if ( result.has(KEY_REPORTING_COMPLEXITY_LIMIT)
|
||||
&& result.has(KEY_OVER_COMPLEXITY_LIMIT))
|
||||
{
|
||||
U32 reporting = result[KEY_REPORTING_COMPLEXITY_LIMIT].asInteger();
|
||||
U32 overlimit = result[KEY_OVER_COMPLEXITY_LIMIT].asInteger();
|
||||
|
||||
LL_DEBUGS("AvatarRenderInfo") << "complexity limit: "<<reporting<<" reporting, "<<overlimit<<" over limit"<<LL_ENDL;
|
||||
|
||||
LLAvatarRenderNotifier::getInstance()->updateNotificationRegion(reporting, overlimit);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarRenderInfo")
|
||||
<< "response is missing either '" << KEY_REPORTING_COMPLEXITY_LIMIT
|
||||
<< "' or '" << KEY_OVER_COMPLEXITY_LIMIT << "'"
|
||||
<< LL_ENDL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -141,10 +141,6 @@ class LLFloaterCompileQueue : public LLFloaterScriptQueue
|
|||
{
|
||||
friend class LLFloaterReg;
|
||||
public:
|
||||
static void onSaveBytecodeComplete(const LLUUID& asset_id,
|
||||
void* user_data,
|
||||
S32 status);
|
||||
|
||||
// remove any object in mScriptScripts with the matching uuid.
|
||||
void removeItemByItemID(const LLUUID& item_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -2218,101 +2218,6 @@ void LLPreviewLSL::saveIfNeeded(bool sync /*= true*/)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
void LLPreviewLSL::onSaveComplete(const LLUUID& iuuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
|
||||
{
|
||||
// NaCl - LSL Preprocessor
|
||||
LLUUID asset_uuid = iuuid;
|
||||
// NaCl End
|
||||
LLScriptSaveInfo* info = reinterpret_cast<LLScriptSaveInfo*>(user_data);
|
||||
if(0 == status)
|
||||
{
|
||||
if (info)
|
||||
{
|
||||
const LLViewerInventoryItem* item;
|
||||
item = (const LLViewerInventoryItem*)gInventory.getItem(info->mItemUUID);
|
||||
if(item)
|
||||
{
|
||||
LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
|
||||
// NaCl - LSL Preprocessor
|
||||
if(asset_uuid.isNull())
|
||||
asset_uuid.generate();
|
||||
// NaCl End
|
||||
new_item->setAssetUUID(asset_uuid);
|
||||
new_item->setTransactionID(info->mTransactionID);
|
||||
new_item->updateServer(FALSE);
|
||||
gInventory.updateItem(new_item);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Inventory item for script " << info->mItemUUID
|
||||
<< " is no longer in agent inventory." << LL_ENDL;
|
||||
}
|
||||
|
||||
// Find our window and close it if requested.
|
||||
LLPreviewLSL* self = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", info->mItemUUID);
|
||||
if (self)
|
||||
{
|
||||
getWindow()->decBusyCount();
|
||||
self->mPendingUploads--;
|
||||
if (self->mPendingUploads <= 0
|
||||
&& self->mCloseAfterSave)
|
||||
{
|
||||
self->closeFloater();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Problem saving script: " << status << LL_ENDL;
|
||||
LLSD args;
|
||||
args["REASON"] = std::string(LLAssetStorage::getErrorString(status));
|
||||
LLNotificationsUtil::add("SaveScriptFailReason", args);
|
||||
}
|
||||
delete info;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLPreviewLSL::onSaveBytecodeComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
|
||||
{
|
||||
LLUUID* instance_uuid = (LLUUID*)user_data;
|
||||
LLPreviewLSL* self = NULL;
|
||||
if(instance_uuid)
|
||||
{
|
||||
self = LLFloaterReg::findTypedInstance<LLPreviewLSL>("preview_script", *instance_uuid);
|
||||
}
|
||||
if (0 == status)
|
||||
{
|
||||
if (self)
|
||||
{
|
||||
LLSD row;
|
||||
row["columns"][0]["value"] = "Compile successful!";
|
||||
row["columns"][0]["font"] = "SANSSERIF_SMALL";
|
||||
self->mScriptEd->mErrorList->addElement(row);
|
||||
|
||||
// Find our window and close it if requested.
|
||||
self->getWindow()->decBusyCount();
|
||||
self->mPendingUploads--;
|
||||
if (self->mPendingUploads <= 0
|
||||
&& self->mCloseAfterSave)
|
||||
{
|
||||
self->closeFloater();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Problem saving LSL Bytecode (Preview)" << LL_ENDL;
|
||||
LLSD args;
|
||||
args["REASON"] = std::string(LLAssetStorage::getErrorString(status));
|
||||
LLNotificationsUtil::add("SaveBytecodeFailReason", args);
|
||||
}
|
||||
delete instance_uuid;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLPreviewLSL::onLoadComplete( LLVFS *vfs, const LLUUID& asset_uuid, LLAssetType::EType type,
|
||||
void* user_data, S32 status, LLExtStat ext_status)
|
||||
|
|
@ -2923,96 +2828,6 @@ void LLLiveLSLEditor::saveIfNeeded(bool sync /*= true*/)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void LLLiveLSLEditor::onSaveTextComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
|
||||
{
|
||||
// <FS> Remove more legacy stuff -Sei
|
||||
#if 0
|
||||
LLLiveLSLSaveData* data = (LLLiveLSLSaveData*)user_data;
|
||||
|
||||
if (status)
|
||||
{
|
||||
LL_WARNS() << "Unable to save text for a script." << LL_ENDL;
|
||||
LLSD args;
|
||||
args["REASON"] = std::string(LLAssetStorage::getErrorString(status));
|
||||
LLNotificationsUtil::add("CompileQueueSaveText", args);
|
||||
}
|
||||
else
|
||||
{
|
||||
LLSD floater_key;
|
||||
floater_key["taskid"] = data->mSaveObjectID;
|
||||
floater_key["itemid"] = data->mItem->getUUID();
|
||||
LLLiveLSLEditor* self = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key);
|
||||
if (self)
|
||||
{
|
||||
self->getWindow()->decBusyCount();
|
||||
self->mPendingUploads--;
|
||||
if (self->mPendingUploads <= 0
|
||||
&& self->mCloseAfterSave)
|
||||
{
|
||||
self->closeFloater();
|
||||
}
|
||||
}
|
||||
}
|
||||
delete data;
|
||||
data = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void LLLiveLSLEditor::onSaveBytecodeComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed)
|
||||
{
|
||||
// <FS> Remove more legacy stuff -Sei
|
||||
#if 0
|
||||
LLLiveLSLSaveData* data = (LLLiveLSLSaveData*)user_data;
|
||||
if(!data)
|
||||
return;
|
||||
if(0 ==status)
|
||||
{
|
||||
LL_INFOS() << "LSL Bytecode saved" << LL_ENDL;
|
||||
LLSD floater_key;
|
||||
floater_key["taskid"] = data->mSaveObjectID;
|
||||
floater_key["itemid"] = data->mItem->getUUID();
|
||||
LLLiveLSLEditor* self = LLFloaterReg::findTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key);
|
||||
if (self)
|
||||
{
|
||||
// Tell the user that the compile worked.
|
||||
self->mScriptEd->mErrorList->setCommentText(LLTrans::getString("SaveComplete"));
|
||||
// close the window if this completes both uploads
|
||||
self->getWindow()->decBusyCount();
|
||||
self->mPendingUploads--;
|
||||
if (self->mPendingUploads <= 0
|
||||
&& self->mCloseAfterSave)
|
||||
{
|
||||
self->closeFloater();
|
||||
}
|
||||
}
|
||||
LLViewerObject* object = gObjectList.findObject(data->mSaveObjectID);
|
||||
if(object)
|
||||
{
|
||||
object->saveScript(data->mItem, data->mActive, false);
|
||||
dialog_refresh_all();
|
||||
//LLToolDragAndDrop::dropScript(object, ids->first,
|
||||
// LLAssetType::AT_LSL_TEXT, FALSE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "Problem saving LSL Bytecode (Live Editor)" << LL_ENDL;
|
||||
LL_WARNS() << "Unable to save a compiled script." << LL_ENDL;
|
||||
|
||||
LLSD args;
|
||||
args["REASON"] = std::string(LLAssetStorage::getErrorString(status));
|
||||
LLNotificationsUtil::add("CompileQueueSaveBytecode", args);
|
||||
}
|
||||
|
||||
std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_uuid.asString());
|
||||
std::string dst_filename = llformat("%s.lso", filepath.c_str());
|
||||
LLFile::remove(dst_filename);
|
||||
delete data;
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOL LLLiveLSLEditor::canClose()
|
||||
{
|
||||
return (mScriptEd->canClose());
|
||||
|
|
|
|||
|
|
@ -280,7 +280,6 @@ protected:
|
|||
virtual void loadAsset();
|
||||
/*virtual*/ void saveIfNeeded(bool sync = true);
|
||||
|
||||
|
||||
static void onSearchReplace(void* userdata);
|
||||
static void onLoad(void* userdata);
|
||||
// <FS:Ansariel> FIRE-7514: Script in external editor needs to be saved twice
|
||||
|
|
@ -291,9 +290,7 @@ protected:
|
|||
static void onLoadComplete(LLVFS *vfs, const LLUUID& uuid,
|
||||
LLAssetType::EType type,
|
||||
void* user_data, S32 status, LLExtStat ext_status);
|
||||
static void onSaveComplete(const LLUUID& uuid, void* user_data, S32 status, LLExtStat ext_status);
|
||||
static void onSaveBytecodeComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status);
|
||||
|
||||
|
||||
protected:
|
||||
static void* createScriptEdPanel(void* userdata);
|
||||
|
||||
|
|
@ -361,8 +358,6 @@ private:
|
|||
static void onLoadComplete(LLVFS *vfs, const LLUUID& asset_uuid,
|
||||
LLAssetType::EType type,
|
||||
void* user_data, S32 status, LLExtStat ext_status);
|
||||
static void onSaveTextComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status);
|
||||
static void onSaveBytecodeComplete(const LLUUID& asset_uuid, void* user_data, S32 status, LLExtStat ext_status);
|
||||
static void onRunningCheckboxClicked(LLUICtrl*, void* userdata);
|
||||
static void onReset(void* userdata);
|
||||
|
||||
|
|
|
|||
|
|
@ -85,12 +85,6 @@ Check at Internet forbindelsen fungerer korrekt.
|
|||
Gem ændringer til nuværende tøj/krops del?
|
||||
<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem ikke" yestext="Gem"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Der var et problem med skrivning af animations data. Prøv igen senere.
|
||||
</notification>
|
||||
|
|
|
|||
|
|
@ -219,12 +219,6 @@ Marktplatzinitialisierung aufgrund eines System- oder Netzwerkfehlers fehlgeschl
|
|||
Wir haben Ihre Auflistung entfernt, da der Versionsordner leer ist. Um diese Auflistung erneut zu listen, müssen Sie Artikel zum Versionsordner hinzufügen.
|
||||
<usetemplate ignoretext="Benachrichtigen, wenn Auflistung aufgrund eines leeren Versionsordners nicht aufgelistet wird" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Der Text für ein Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Eine kompiliertes Skript konnte aus folgendem Grund nicht hochgeladen werden: [REASON]. Bitte versuchen Sie es erneut.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Fehler beim Schreiben von Animationsdaten. Bitte versuchen Sie es erneut.
|
||||
</notification>
|
||||
|
|
@ -621,16 +615,10 @@ Möchten Sie die letzte gespeicherte Version vom Server laden?
|
|||
(**Warnung** Dieser Vorgang kann nicht rückgängig gemacht werden.)
|
||||
<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Ein Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Skript konnte nicht gespeichert werden, weil das zugehörige Objekt nicht gefunden wurde.
|
||||
Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
Ihre Startregion ist nicht definiert.
|
||||
Geben Sie den Namen der Region im Feld „Startposition“ ein oder wählen Sie „Mein letzter Standort“ oder „Mein Zuhause“ als Startposition aus.
|
||||
|
|
|
|||
|
|
@ -553,22 +553,6 @@ This listing could not be updated.
|
|||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="CompileQueueSaveText"
|
||||
type="alertmodal">
|
||||
There was a problem uploading the text for a script due to the following reason: [REASON]. Please try again later.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="CompileQueueSaveBytecode"
|
||||
type="alertmodal">
|
||||
There was a problem uploading the compiled script due to the following reason: [REASON]. Please try again later.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="WriteAnimationFail"
|
||||
|
|
@ -1587,14 +1571,6 @@ Would you like to load the server's last saved version?
|
|||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="SaveScriptFailReason"
|
||||
type="alertmodal">
|
||||
There was a problem saving a script due to the following reason: [REASON]. Please try re-saving the script later.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="SaveScriptFailObjectNotFound"
|
||||
|
|
@ -1604,14 +1580,6 @@ The object may be out of range or may have been deleted.
|
|||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="SaveBytecodeFailReason"
|
||||
type="alertmodal">
|
||||
There was a problem saving a compiled script due to the following reason: [REASON]. Please try re-saving the script later.
|
||||
<tag>fail</tag>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="StartRegionEmpty"
|
||||
|
|
|
|||
|
|
@ -212,12 +212,6 @@ La inicialización del mercado ha fallado por un error del sistema o de la red.
|
|||
Hemos retirado tu lista de artículos porque el stock está vacío. Para volver a publicar tus artículos, añade más unidades a la carpeta de stock.
|
||||
<usetemplate ignoretext="Mostrar alerta cuando una lista de artículos se retire porque la carpeta de stock está vacía" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Hubo un problema al subir el texto de un script por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Hubo un problema al subir el script compilado por la siguiente razón: [REASON]. Por favor, inténtalo más tarde.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Hubo un problema al escribir los datos de la animación. Por favor, inténtalo más tarde.
|
||||
</notification>
|
||||
|
|
@ -601,16 +595,10 @@ El objeto debe de haber sido borrado o estar fuera de alcance ('out of rang
|
|||
(**Cuidado** No podrás deshacer esta operación).
|
||||
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Aceptar"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Al guardar un script se ha producido un problema por: [REASON]. Por favor, vuelve a intentar guardarlo más tarde.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
No se ha podido guardar el script porque no se pudo encontrar el objeto en que está incluído.
|
||||
El objeto debe de haber sido borrado o estar fuera de alcance ('out of range')..
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Al guardar un script compilado se ha producido un problema por: [REASON]. Por favor, vuelve a intentar guardarlo más tarde.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
No está definida tu región inicial.
|
||||
Por favor, escribe el nombre de la región en el cuadro de Posición inicial o elige para esa posición Mi Base o Mi última posición.
|
||||
|
|
|
|||
|
|
@ -129,10 +129,12 @@ Ce listing ne peut pas être mis à jour.
|
|||
We have unlisted your listing because the version folder is empty. You need to add items to the version folder to list the listing again.
|
||||
<usetemplate ignoretext="Alert when a listing is unlisted because version folder is empty" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">There was a problem uploading the text for a script due to the following reason: [REASON]. Please try again later.</notification>
|
||||
<notification name="CompileQueueSaveBytecode">There was a problem uploading the compiled script due to the following reason: [REASON]. Please try again later.</notification>
|
||||
<notification name="WriteAnimationFail">There was a problem writing animation data. Please try again later.</notification>
|
||||
<notification name="UploadAuctionSnapshotFail">There was a problem uploading the auction snapshot due to the following reason: [REASON]</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Une erreur est survenue lors de l'écriture des données d'animation. Veuillez réessayer ultérieurement.
|
||||
</notification>
|
||||
<notification name="UploadAuctionSnapshotFail">
|
||||
Un problème est survenu lors du chargement du script compilé, suite au problème suivant : [REASON]
|
||||
</notification>
|
||||
<notification name="UnableToViewContentsMoreThanOne">
|
||||
Unable to view the contents of more than one item at a time.
|
||||
Please select only one object and try again.
|
||||
|
|
@ -428,7 +430,6 @@ Would you like to load the server's last saved version?
|
|||
(**Warning** This operation cannot be undone.)
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">There was a problem saving a script due to the following reason: [REASON]. Please try re-saving the script later.</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Could not save the script because the object it is in could not be found.
|
||||
The object may be out of range or may have been deleted.
|
||||
|
|
|
|||
|
|
@ -164,6 +164,10 @@ L'inizializzazione con il Marketplace non ha avuto successo a causa di un e
|
|||
'[ERROR_CODE]'
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MerchantForceValidateListing">
|
||||
Per creare l'annuncio, abbiamo corretto la gerarchia dei contenuti dell'annuncio.
|
||||
<usetemplate ignoretext="Avvisami se la gerarchia del contenuto viene corretta per creare un annuncio" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ConfirmMerchantActiveChange">
|
||||
Questa azione cambierà il contenuto attivo di questo annuncio. Vuoi continuare?
|
||||
<usetemplate ignoretext="Conferma prima di modificare un annuncio attivo su Marketplace" name="okcancelignore" notext="Annulla" yestext="OK"/>
|
||||
|
|
@ -211,12 +215,6 @@ L'inizializzazione con il Marketplace non ha avuto successo a causa di un e
|
|||
L'annuncio è stato rimosso perché il magazzino è esaurito. Aggiungi altre unità alla cartella di magazzino prima di pubblicare nuovamente l'annuncio.
|
||||
<usetemplate ignoretext="Avverti quando un annuncio viene rimosso perché la cartella di magazzino è vuota" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
C'è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
C'è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
C'è stato un problema di scrittura dati dell'animazione. Riprova più tardi.
|
||||
</notification>
|
||||
|
|
@ -584,16 +582,10 @@ Vuoi ripristinare l'ultima versione salvata sul server?
|
|||
(**Attenzione** Questa operazione non è reversibile)
|
||||
<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
C'è stato un problema salvando lo script a causa del seguente motivo : [REASON]. Riprova a salvare lo script più tardi.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Non è stato possibile salvare lo script perchè l'oggetto che lo contiene non è stato trovato.
|
||||
L'oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
C'è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON]. Riprova a salvare lo script più tardi.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
La tua Regione di inizio non è stata definita.
|
||||
Per scegliere il luogo dove vuoi trovarti all'accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
|
||||
|
|
|
|||
|
|
@ -219,16 +219,6 @@
|
|||
<usetemplate ignoretext="バージョンフォルダが空のためにリストが表示されないと警告が表示されます。" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification name="CompileQueueSaveText">
|
||||
次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。
|
||||
[REASON]
|
||||
後でもう一度お試しください。
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。
|
||||
[REASON]
|
||||
後でもう一度お試しください。
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
|
||||
</notification>
|
||||
|
|
@ -622,16 +612,10 @@ L$ が不足しているのでこのグループに参加することができ
|
|||
(**警告**:この操作後元に戻すことはできません)
|
||||
<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。 後でもう一度試してください。
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
|
||||
オブジェクトは範囲外か、または削除されているかもしれません。
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
ログイン位置が指定されていません。
|
||||
ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<notifications>
|
||||
<global name="skipnexttime">
|
||||
Nie pokazuj tego następnym razem
|
||||
|
|
@ -155,12 +155,6 @@ Inicjalizacja Marketplace nieudana z powodu błędu sieci lub systemu. Spróbuj
|
|||
Twoja rzecz została usunięta z listy, ponieważ folder wersji jest pusty. Musisz dodać więcej jej jednostek do folderu wersji, aby można było ją ponownie wyświetlać na liście.
|
||||
<usetemplate ignoretext="Powiadom, gdy rzecz jest zdjęta z listy, bo folder wersji jest pusty" name="okignore" />
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
W trakcie ładowania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
|
||||
</notification>
|
||||
|
|
@ -541,16 +535,10 @@ Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
|
|||
(*UWAGA* Ta operacja jest nieodwracalna.)
|
||||
<usetemplate name="okcancelbuttons" notext="Anuluj" />
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
|
||||
Obiekt może znajdować się zbyt daleko albo został usunięty.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Nie można zapisać skompilowanego skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
Twoje miejsce startu nie zostało określone.
|
||||
Wpisz proszę nazwę regionu w lokalizację startu w polu Lokalizacja Startu lub wybierz 'Moja ostatnia lokalizacja' albo 'Miejsce Startu'.
|
||||
|
|
|
|||
|
|
@ -163,6 +163,10 @@ Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema
|
|||
'[ERROR_CODE]'
|
||||
<usetemplate name="okbutton" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="MerchantForceValidateListing">
|
||||
Para criar sua listagem, consertamos a hierarquia do conteúdo da sua listagem.
|
||||
<usetemplate ignoretext="Avisar-me quando a criação de uma listagem consertar a hierarquia do conteúdo" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="ConfirmMerchantActiveChange">
|
||||
Esta ação alterará o conteúdo ativo desta listagem. Deseja continuar?
|
||||
<usetemplate ignoretext="Confirmar antes de alterar uma listagem ativa no Marketplace" name="okcancelignore" notext="Cancelar" yestext="OK"/>
|
||||
|
|
@ -210,12 +214,6 @@ Ocorreu uma falha na inicialização do Marketplace devido a um erro do sistema
|
|||
Removemos sua listagem porque o estoque está vazio. Você precisa adicionar mais unidades à pasta de estoque para que a listagem seja exibida novamente.
|
||||
<usetemplate ignoretext="Alertar quando uma listagem não for listada porque a pasta de estoque está vazia" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Houve um problema com o carregamento do texto para um script devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Houve um problema durante o carregamento do script compilado devido à seguinte razão: [REASON]. Por favor, tente novamente mais tarde.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Falha nos dados de inscrição de animação. Por favor, tente mais tarde.
|
||||
</notification>
|
||||
|
|
@ -581,16 +579,10 @@ Gostaria de carregar a última versão salva?
|
|||
(**Aviso** Esta operação não pode ser desfeita).
|
||||
<usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Houve um problema em salvar um script devido à seguinte razão: [REASON]. Tente salvar novamente o script mais tarde.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Não foi possível salvar o script pois o objeto em que ele está não pôde ser encontrado.
|
||||
O objeto pode estar fora de alcance ou ter sido deletado.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Houve um problema em salvar uma compilação de script devido a seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
Sua região de partida não está definida.
|
||||
Digite o nome da região na caixa 'Ponto de partida' ou selecione 'Meu último local' ou 'Minha casa' como ponto de partida.
|
||||
|
|
|
|||
|
|
@ -219,12 +219,6 @@
|
|||
Публикация вашего списка прекращена, так как папка версии пуста. Добавьте предметы в папку запасов, чтобы опубликовать список снова.
|
||||
<usetemplate ignoretext="Оповещать о неудавшейся публикации списка из-за того, что папка версии пуста" name="okignore" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Ошибка при передаче текста скрипта по следующей причине: [REASON]. Повторите попытку позже.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Ошибка при передаче скомпилированного скрипта по следующей причине: [REASON]. Повторите попытку позже.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Ошибка при записи данных анимации. Повторите попытку позже.
|
||||
</notification>
|
||||
|
|
@ -609,16 +603,10 @@
|
|||
(**Предупреждение** Эту операцию нельзя отменить.)
|
||||
<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Ошибка при сохранении скрипта по следующей причине: [REASON]. Попробуйте сохранить скрипт через некоторое время.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
Не удалось сохранить скрипт: не найден объект, в котором он находится.
|
||||
Возможно, объект находится вне допустимого диапазона или удален.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Ошибка при сохранении скомпилированного скрипта по следующей причине: [REASON]. Попробуйте сохранить скрипт через некоторое время.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
Ваш стартовый регион не определен.
|
||||
Введите название региона в поле "Место старта" или выберите в качестве места старта "Мое последнее место" или "Мой дом".
|
||||
|
|
|
|||
|
|
@ -219,12 +219,6 @@ Bu öğeyi Pazaryeri üzerinde düzenlemek için [[URL] buraya tıklayın].
|
|||
Sürüm klasörü boş olduğu için ilanınızı yayından kaldırdık. İlanı yeniden yayınlamak için sürüm klasörüne daha fazla birim eklemeniz gerekir.
|
||||
<usetemplate ignoretext="Bir ilan, sürüm klasörü boş olduğu için listeden kaldırılınca uyar" name="okignore" yestext="Tamam"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
Aşağıdaki nedenden dolayı, bir komut dosyası için metin karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
Aşağıdaki nedenden dolayı, derlenen komut dosyası karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
Animasyon verileri yazılırken bir sorun oluştu. Lütfen daha sonra tekrar deneyin.
|
||||
</notification>
|
||||
|
|
@ -603,16 +597,10 @@ Sunucunun son kaydedilmiş sürümünü yüklemek ister misiniz?
|
|||
(**Uyarı** Bu işlem geri alınamaz.)
|
||||
<usetemplate name="okcancelbuttons" notext="İptal" yestext="Tamam"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
Aşağıdaki nedenden dolayı, komut dosyası kaydedilirken bir sorun oluştu: [REASON]. Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
İçinde olduğu nesne bulunamadığından komut dosyası kaydedilemiyor.
|
||||
Nesne aralık dışında ya da silinmiş olabilir.
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
Aşağıdaki nedenden dolayı, derlenen komut dosyası kaydedilirken bir sorun oluştu: [REASON]. Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
Başlangıç Bölgeniz tanımlanmamış.
|
||||
Lütfen Başlangıç Konumu kutusuna Bölge adını yazın ya da Son Bulunduğum Konum veya Ana Konumumu Başlangıç Konumu olarak seçin.
|
||||
|
|
|
|||
|
|
@ -164,6 +164,10 @@
|
|||
'[ERROR_CODE]'
|
||||
<usetemplate name="okbutton" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="MerchantForceValidateListing">
|
||||
為能建立你的刊登內容,我們修正了你刊登內容的層級架構。
|
||||
<usetemplate ignoretext="如果建立新的刊登時會修動內容物的層級架構,給我提醒" name="okignore" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="ConfirmMerchantActiveChange">
|
||||
這個動作會改變此刊登的內容。 你確定要繼續嗎?
|
||||
<usetemplate ignoretext="在我變更 Marketplace 的一項刊登內容之前,先跟我確認" name="okcancelignore" notext="取消" yestext="確定"/>
|
||||
|
|
@ -211,12 +215,6 @@
|
|||
因為存量爲零,我們已經把你的刊登物下架。 你若希望重新刊登,必須先增加存量。
|
||||
<usetemplate ignoretext="限量資料夾如果成空、導致刊登物下架,告知我" name="okignore" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveText">
|
||||
上傳腳本文字時出問題,原因:[REASON]。 請稍候再試一次。
|
||||
</notification>
|
||||
<notification name="CompileQueueSaveBytecode">
|
||||
上傳已編譯腳本時出問題,原因:[REASON]。 請稍候再試一次。
|
||||
</notification>
|
||||
<notification name="WriteAnimationFail">
|
||||
寫入動作資料時出錯。 請稍候再試一次。
|
||||
</notification>
|
||||
|
|
@ -587,16 +585,10 @@
|
|||
(*警告* 這動作無法還原。)
|
||||
<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
|
||||
</notification>
|
||||
<notification name="SaveScriptFailReason">
|
||||
儲存腳本時出問題,原因:[REASON]。 請稍後再嘗試儲存腳本。
|
||||
</notification>
|
||||
<notification name="SaveScriptFailObjectNotFound">
|
||||
無法儲存腳本,找不到它所屬的物件。
|
||||
該物件可能超出範圍或已被刪除。
|
||||
</notification>
|
||||
<notification name="SaveBytecodeFailReason">
|
||||
儲存編譯腳本時出問題,原因:[REASON]。 請稍後再嘗試儲存腳本。
|
||||
</notification>
|
||||
<notification name="StartRegionEmpty">
|
||||
你的起始地區尚未定義。
|
||||
請在「開始位置」框裡輸入區域名,或選擇「我上一次位置」或「我的家」作為開始位置。
|
||||
|
|
|
|||
|
|
@ -174,22 +174,6 @@ bool handle_button_click(WORD button_id)
|
|||
return false;
|
||||
}
|
||||
|
||||
// See if "do this next time" is checked and save state
|
||||
S32 crash_behavior = CRASH_BEHAVIOR_ASK;
|
||||
LRESULT result = SendDlgItemMessage(gHwndReport, IDC_CHECK_AUTO, BM_GETCHECK, 0, 0);
|
||||
if (result == BST_CHECKED)
|
||||
{
|
||||
if (button_id == IDOK)
|
||||
{
|
||||
crash_behavior = CRASH_BEHAVIOR_ALWAYS_SEND;
|
||||
}
|
||||
else if (button_id == IDCANCEL)
|
||||
{
|
||||
crash_behavior = CRASH_BEHAVIOR_NEVER_SEND;
|
||||
}
|
||||
((LLCrashLoggerWindows*)LLCrashLogger::instance())->saveCrashBehaviorSetting(crash_behavior);
|
||||
}
|
||||
|
||||
// We're done with this dialog.
|
||||
gFirstDialog = FALSE;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue