/* static */ bool ScriptController::Break(const char* message) { if (_network_dedicated || !_settings_client.gui.ai_developer_tools) return false; ScriptObject::GetActiveInstance()->Pause(); char log_message[1024]; snprintf(log_message, sizeof(log_message), "Break: %s", message); ScriptLog::Log(ScriptLog::LOG_SQ_ERROR, log_message); /* Inform script developer that his script has been paused and * needs manual action to continue. */ ShowAIDebugWindow(ScriptObject::GetRootCompany()); return true; }
void AIInstance::Died() { ScriptInstance::Died(); ShowAIDebugWindow(_current_company); const AIInfo *info = AIConfig::GetConfig(_current_company)->GetInfo(); if (info != NULL) { ShowErrorMessage(STR_ERROR_AI_PLEASE_REPORT_CRASH, INVALID_STRING_ID, WL_WARNING); if (info->GetURL() != NULL) { ScriptLog::Info("Please report the error to the following URL:"); ScriptLog::Info(info->GetURL()); } } }
void AIInstance::Died() { DEBUG(ai, 0, "The AI died unexpectedly."); this->is_dead = true; if (this->instance != NULL) this->engine->ReleaseObject(this->instance); delete this->engine; this->instance = NULL; this->engine = NULL; ShowAIDebugWindow(_current_company); const AIInfo *info = AIConfig::GetConfig(_current_company)->GetInfo(); if (info != NULL) { ShowErrorMessage(STR_ERROR_AI_PLEASE_REPORT_CRASH, INVALID_STRING_ID, 0, 0); if (info->GetURL() != NULL) { AILog::Info("Please report the error to the following URL:"); AILog::Info(info->GetURL()); } } }