Add object rezz time to the bridge (in extended info mode), clean up its code a little

master
PanteraPolnocy 2022-07-31 17:42:55 +02:00
parent b85418417f
commit c76deb7661
7 changed files with 125 additions and 124 deletions

View File

@ -6,160 +6,159 @@
// Global variables and CONSTANTS
//
// Bridge platform
string BRIDGE_VERSION = "2.28"; // This should match fslslbridge.cpp
string gLatestURL;
integer gViewerIsFirestorm;
integer gTryHandshakeOnce = TRUE;
key gOwner;
// Bridge platform
string BRIDGE_VERSION = "2.29"; // This should match fslslbridge.cpp
string gLatestURL;
integer gViewerIsFirestorm;
integer gTryHandshakeOnce = TRUE;
key gOwner;
// Teleport
float TP_TARGET_DISTANCE = 1.0; // Distance to target when move to target should stop
integer MAX_TIME_TO_TP = 10; // (seconds) Should be set to 10 for normal use
float TP_TIMER_TICK = 0.05;
vector gMttVector; // Target for llMoveToTarget() teleport
integer gStartTPTimer;
// Teleport
float TP_TARGET_DISTANCE = 1.0; // Distance to target when move to target should stop
integer MAX_TIME_TO_TP = 10; // (seconds) Should be set to 10 for normal use
float TP_TIMER_TICK = 0.05;
vector gMttVector; // Target for llMoveToTarget() teleport
integer gStartTPTimer;
// Movelock
integer gUseMoveLock;
integer gRelockMoveLockAfterMovement;
integer gRelockIsUserMoving;
// Movelock
integer gUseMoveLock;
integer gRelockMoveLockAfterMovement;
integer gRelockIsUserMoving;
// Flight assist
integer gIsFlyingNow;
float FLIGHT_CHECK_NORMAL = 0.5;
float FLIGHT_CHECK_SLOW = 3.0;
float gFlightAssistPushForce;
// Flight assist
integer gIsFlyingNow;
float FLIGHT_CHECK_NORMAL = 0.5;
float FLIGHT_CHECK_SLOW = 3.0;
float gFlightAssistPushForce;
// OpenCollar/LockMeister AO interface
integer gAO_EnabledOC;
integer gAO_EnabledLM;
integer gAO_ChannelOC;
integer AO_CHANNEL_LM = -8888;
integer gAO_ListenerOC;
integer gAO_ListenerLM;
key gAO_CollarKey;
// OpenCollar/LockMeister AO interface
integer gAO_EnabledOC;
integer gAO_EnabledLM;
integer gAO_ChannelOC;
integer AO_CHANNEL_LM = -8888;
integer gAO_ListenerOC;
integer gAO_ListenerLM;
key gAO_CollarKey;
//
// Bridge platform helper functions
//
requestBridgeURL()
{
llReleaseURL(gLatestURL);
gLatestURL = "";
llRequestSecureURL();
// llRequestURL(); -- Uncomment this line and comment the previous one for HTTP instead of HTTPS
}
requestBridgeURL()
{
llReleaseURL(gLatestURL);
gLatestURL = "";
llRequestSecureURL();
}
detachBridge()
{
llReleaseURL(gLatestURL);
llRequestPermissions(gOwner, PERMISSION_ATTACH);
}
detachBridge()
{
llReleaseURL(gLatestURL);
llRequestPermissions(gOwner, PERMISSION_ATTACH);
}
//
// OpenCollar/LockMeister AO interface functions
//
aoListenOC(key collarid, integer enabled)
aoListenOC(key collarid, integer enabled)
{
llListenRemove(gAO_ListenerOC);
if (enabled)
{
llListenRemove(gAO_ListenerOC);
if (enabled)
{
gAO_ListenerOC = llListen(gAO_ChannelOC, "", collarid, "");
gAO_CollarKey = collarid;
}
else
{
gAO_CollarKey = NULL_KEY;
}
gAO_ListenerOC = llListen(gAO_ChannelOC, "", collarid, "");
gAO_CollarKey = collarid;
}
else
{
gAO_CollarKey = NULL_KEY;
}
}
aoState(string newstate)
{
llOwnerSay("<clientAO state="+newstate+">");
}
aoState(string newstate)
{
llOwnerSay("<clientAO state="+newstate+">");
}
integrationCheckOC()
integrationCheckOC()
{
if (gAO_EnabledOC)
{
if (gAO_EnabledOC)
if (gAO_ChannelOC != PUBLIC_CHANNEL)
{
if (gAO_ChannelOC != PUBLIC_CHANNEL)
{
aoListenOC(NULL_KEY, TRUE);
llWhisper(gAO_ChannelOC, "OpenCollar?");
}
}
else
{
aoListenOC(NULL_KEY, FALSE);
aoListenOC(NULL_KEY, TRUE);
llWhisper(gAO_ChannelOC, "OpenCollar?");
}
}
else
{
aoListenOC(NULL_KEY, FALSE);
}
}
integrationCheckLM()
integrationCheckLM()
{
if (gAO_EnabledLM)
{
if (gAO_EnabledLM)
{
gAO_ListenerLM = llListen(AO_CHANNEL_LM, "", NULL_KEY, "");
}
else
{
llListenRemove(gAO_ListenerLM);
}
gAO_ListenerLM = llListen(AO_CHANNEL_LM, "", NULL_KEY, "");
}
else
{
llListenRemove(gAO_ListenerLM);
}
}
//
// Teleport Helper functions
//
setTimerEvent2(float time)
setTimerEvent2(float time)
{
if (time <= 0)
{
if (time <= 0)
{
llSensorRemove();
}
else
{
llSensorRepeat("set-Timer-Event-2", NULL_KEY, AGENT_BY_LEGACY_NAME, 0.001, 0.001, time);
}
llSensorRemove();
}
else
{
llSensorRepeat("set-Timer-Event-2", NULL_KEY, AGENT_BY_LEGACY_NAME, 0.001, 0.001, time);
}
}
//
// Flight Assist
//
flightHover(integer yes)
flightHover(integer yes)
{
if (yes)
{
if (yes)
{
llSetForce((<0.0, 0.0, 9.8> * llGetMass()), 0);
}
else
{
llSetForce(ZERO_VECTOR, 1);
}
llSetForce((<0.0, 0.0, 9.8> * llGetMass()), 0);
}
else
{
llSetForce(ZERO_VECTOR, 1);
}
}
//
// Movelock
//
movelockMe(integer lock)
movelockMe(integer lock)
{
if (lock)
{
if (lock)
{
llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05);
llSetVehicleType(VEHICLE_TYPE_SLED);
llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05);
llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05);
}
else
{
llStopMoveToTarget();
llSetVehicleType(VEHICLE_TYPE_NONE);
}
llMoveToTarget(llGetPos() - <0, 0, 0.1>, 0.05);
llSetVehicleType(VEHICLE_TYPE_SLED);
llSetVehicleFloatParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, 0.05);
llSetVehicleFloatParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, 0.05);
}
else
{
llStopMoveToTarget();
llSetVehicleType(VEHICLE_TYPE_NONE);
}
}
//
// MAIN
@ -365,8 +364,6 @@ default
vector targ = gMttVector - loc;
float dist = llVecMag(targ);
// llOwnerSay("current: " + (string)loc + " target: " + (string)targ + " tp distance: " + (string)dist);
// If we are out of time or distance - stop
if (dist < TP_TARGET_DISTANCE || llGetUnixTime() - MAX_TIME_TO_TP > gStartTPTimer || gMttVector == loc)
{
@ -391,7 +388,6 @@ default
http_request(key httpReqID, string Method, string Body)
{
// llOwnerSay("Received HTTP " + Method + " message. Command body: " + Body);
if (Method == URL_REQUEST_GRANTED)
{
gLatestURL = Body;
@ -429,11 +425,10 @@ default
// Radar-specific command to get high-rez altitude data.
// Input is list of UUIDs to query, output is list of UUID:Altitude pairs.
// Get parameters
list tUUIDs = llCSV2List(llList2String(commandList, 1));
commandList = []; // Free memory
integer tLength = llGetListLength(tUUIDs);
key tUUID; // Key for llGetobjectDetails()
key tUUID;
vector tPos;
integer i = 0;
list responses;
@ -507,9 +502,9 @@ default
if (extended)
{
currentPosition = llGetPos();
details = llGetObjectDetails(targetkey, ([OBJECT_NAME, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_SCRIPT_MEMORY, OBJECT_SCRIPT_TIME, OBJECT_CHARACTER_TIME, OBJECT_DESC, OBJECT_ROOT, OBJECT_PRIM_COUNT, OBJECT_PRIM_EQUIVALENCE, OBJECT_TOTAL_INVENTORY_COUNT, OBJECT_VELOCITY, OBJECT_POS, OBJECT_ROT, OBJECT_OMEGA, OBJECT_CREATOR, OBJECT_OWNER, OBJECT_LAST_OWNER_ID, OBJECT_REZZER_KEY, OBJECT_GROUP, OBJECT_CREATION_TIME, OBJECT_PATHFINDING_TYPE, OBJECT_ATTACHED_POINT, OBJECT_TEMP_ATTACHED]));
details = llGetObjectDetails(targetkey, ([OBJECT_NAME, OBJECT_RUNNING_SCRIPT_COUNT, OBJECT_TOTAL_SCRIPT_COUNT, OBJECT_SCRIPT_MEMORY, OBJECT_SCRIPT_TIME, OBJECT_CHARACTER_TIME, OBJECT_DESC, OBJECT_ROOT, OBJECT_PRIM_COUNT, OBJECT_PRIM_EQUIVALENCE, OBJECT_TOTAL_INVENTORY_COUNT, OBJECT_VELOCITY, OBJECT_POS, OBJECT_ROT, OBJECT_OMEGA, OBJECT_CREATOR, OBJECT_OWNER, OBJECT_LAST_OWNER_ID, OBJECT_REZZER_KEY, OBJECT_GROUP, OBJECT_CREATION_TIME, OBJECT_REZ_TIME, OBJECT_PATHFINDING_TYPE, OBJECT_ATTACHED_POINT, OBJECT_TEMP_ATTACHED]));
details = details + [currentPosition, targetkey];
elements = 26;
elements = 27;
}
else
{
@ -522,7 +517,7 @@ default
list returnedList = [llStringToBase64(llStringTrim(llList2String(details, 0), STRING_TRIM)), llList2String(details, 1), llList2String(details, 2), llList2Integer(details, 3) / 1024, llList2Float(details, 4) * 1000.0, llList2Float(details, 5) * 1000.0];
if (extended)
{
returnedList = returnedList + [llStringToBase64(llStringTrim(llList2String(details, 6), STRING_TRIM)), llList2String(details, 7), llList2Integer(details, 8), llList2Integer(details, 9), llList2Integer(details, 10), llStringToBase64(llList2String(details, 11)), llStringToBase64(llList2String(details, 12) + " (" + (string)llVecDist(llList2Vector(details, 12), currentPosition) + " m)"), llStringToBase64(llList2String(details, 13) + " (" + (string)(RAD_TO_DEG * llRot2Euler(llList2Rot(details, 13))) + ")"), llStringToBase64(llList2String(details, 14)), llList2Key(details, 15), llList2Key(details, 16), llList2Key(details, 17), llList2Key(details, 18), llList2Key(details, 19), llList2String(details, 20), llList2Integer(details, 21), llList2Integer(details, 22), llList2Integer(details, 23), llStringToBase64(llList2String(details, 24)), llList2Key(details, 25)];
returnedList = returnedList + [llStringToBase64(llStringTrim(llList2String(details, 6), STRING_TRIM)), llList2String(details, 7), llList2Integer(details, 8), llList2Integer(details, 9), llList2Integer(details, 10), llStringToBase64(llList2String(details, 11)), llStringToBase64(llList2String(details, 12) + " (" + (string)llVecDist(llList2Vector(details, 12), currentPosition) + " m)"), llStringToBase64(llList2String(details, 13) + " (" + (string)(RAD_TO_DEG * llRot2Euler(llList2Rot(details, 13))) + ")"), llStringToBase64(llList2String(details, 14)), llList2Key(details, 15), llList2Key(details, 16), llList2Key(details, 17), llList2Key(details, 18), llList2Key(details, 19), llList2String(details, 20), llList2String(details, 21), llList2Integer(details, 22), llList2Integer(details, 23), llList2Integer(details, 24), llStringToBase64(llList2String(details, 25)), llList2Key(details, 26)];
}
llOwnerSay("<bridgeGetScriptInfo>" + llList2CSV(returnedList) + "</bridgeGetScriptInfo>");
}

View File

@ -55,7 +55,7 @@
static const std::string FS_BRIDGE_FOLDER = "#LSL Bridge";
static const std::string FS_BRIDGE_CONTAINER_FOLDER = "Landscaping";
static const U32 FS_BRIDGE_MAJOR_VERSION = 2;
static const U32 FS_BRIDGE_MINOR_VERSION = 28;
static const U32 FS_BRIDGE_MINOR_VERSION = 29;
static const U32 FS_MAX_MINOR_VERSION = 99;
static const std::string UPLOAD_SCRIPT_CURRENT = "EBEDD1D2-A320-43f5-88CF-DD47BBCA5DFB.lsltxt";
static const std::string FS_STATE_ATTRIBUTE = "state=";
@ -410,7 +410,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
while (std::getline(strStreamGetScriptInfo, scriptInfoToken, ','))
{
LLStringUtil::trim(scriptInfoToken);
if (scriptInfoArrayCount == 0 || scriptInfoArrayCount == 6 || scriptInfoArrayCount == 11 || scriptInfoArrayCount == 12 || scriptInfoArrayCount == 13 || scriptInfoArrayCount == 14 || scriptInfoArrayCount == 24)
if (scriptInfoArrayCount == 0 || scriptInfoArrayCount == 6 || scriptInfoArrayCount == 11 || scriptInfoArrayCount == 12 || scriptInfoArrayCount == 13 || scriptInfoArrayCount == 14 || scriptInfoArrayCount == 25)
{
// First value, OBJECT_NAME, should be passed from Bridge as encoded in base64
// Encoding eliminates problems with special characters and commas for CSV
@ -433,7 +433,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
++scriptInfoArrayCount;
}
if (scriptInfoArrayCount == 6 || scriptInfoArrayCount == 26)
if (scriptInfoArrayCount == 6 || scriptInfoArrayCount == 27)
{
LLStringUtil::format_map_t args;
args["OBJECT_NAME"] = scriptInfoArray[0].asString();
@ -452,7 +452,7 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
args["PATHFINDING_TEXT"] = "";
}
report_to_nearby_chat(format_string(LLTrans::getString("fsbridge_script_info"), args));
if (scriptInfoArrayCount == 26)
if (scriptInfoArrayCount == 27)
{
LLStringUtil::format_map_t args3;
args3["OBJECT_DESC"] = scriptInfoArray[6].asString();
@ -470,11 +470,12 @@ bool FSLSLBridge::lslToViewer(const std::string& message, const LLUUID& fromID,
args3["OBJECT_REZZER_KEY"] = scriptInfoArray[18].asString();
args3["OBJECT_GROUP"] = scriptInfoArray[19].asUUID().notNull() ? LLSLURL("group", scriptInfoArray[19].asUUID(), "inspect").getSLURLString() : "---";
args3["OBJECT_CREATION_TIME"] = scriptInfoArray[20].asString();
args3["OBJECT_PATHFINDING_TYPE"] = scriptInfoArray[21].asString();
args3["OBJECT_ATTACHED_POINT"] = (scriptInfoArray[22].asInteger() < 1 || scriptInfoArray[22].asInteger() > 255) ? "---" : LLTrans::getString(LLAvatarAppearance::getAttachmentPointName(scriptInfoArray[22].asInteger()));
args3["OBJECT_TEMP_ATTACHED"] = scriptInfoArray[23].asInteger() == 1 ? LLTrans::getString("Yes") : LLTrans::getString("No");
args3["AVATAR_POS"] = scriptInfoArray[24].asString();
args3["INSPECTING_KEY"] = scriptInfoArray[25].asString();
args3["OBJECT_REZ_TIME"] = scriptInfoArray[21].asString();
args3["OBJECT_PATHFINDING_TYPE"] = scriptInfoArray[22].asString();
args3["OBJECT_ATTACHED_POINT"] = (scriptInfoArray[23].asInteger() < 1 || scriptInfoArray[23].asInteger() > 255) ? "---" : LLTrans::getString(LLAvatarAppearance::getAttachmentPointName(scriptInfoArray[23].asInteger()));
args3["OBJECT_TEMP_ATTACHED"] = scriptInfoArray[24].asInteger() == 1 ? LLTrans::getString("Yes") : LLTrans::getString("No");
args3["AVATAR_POS"] = scriptInfoArray[25].asString();
args3["INSPECTING_KEY"] = scriptInfoArray[26].asString();
report_to_nearby_chat(format_string(LLTrans::getString("fsbridge_script_info_ext"), args3));
}
}

View File

@ -6801,6 +6801,7 @@ Vorheriger Besitzer: [OBJECT_LAST_OWNER_ID]
Gerezt von: [OBJECT_REZZER_KEY]
Gruppe: [OBJECT_GROUP]
Erstellungszeit: [OBJECT_CREATION_TIME]
Rezz time: [OBJECT_REZ_TIME]
Pathfinding-Typ: [OBJECT_PATHFINDING_TYPE]
Angehängt an: [OBJECT_ATTACHED_POINT]
Temporär angehängt: [OBJECT_TEMP_ATTACHED]

View File

@ -3057,6 +3057,7 @@ Previous owner: [OBJECT_LAST_OWNER_ID]
Rezzed by: [OBJECT_REZZER_KEY]
Group: [OBJECT_GROUP]
Creation time: [OBJECT_CREATION_TIME]
Rezz time: [OBJECT_REZ_TIME]
Pathfinding type: [OBJECT_PATHFINDING_TYPE]
Attachment point: [OBJECT_ATTACHED_POINT]
Temporarily attached: [OBJECT_TEMP_ATTACHED]

View File

@ -6638,6 +6638,7 @@ Propriétaire précédent : [OBJECT_LAST_OWNER_ID]
Posé par : [OBJECT_REZZER_KEY]
Groupe : [OBJECT_GROUP]
Date de création : [OBJECT_CREATION_TIME]
Rezz time: [OBJECT_REZ_TIME]
Type de cheminement : [OBJECT_PATHFINDING_TYPE]
Point d'attache : [OBJECT_ATTACHED_POINT]
Attaché temporairement : [OBJECT_TEMP_ATTACHED]

View File

@ -6107,6 +6107,7 @@ Poprzedni właściciel: [OBJECT_LAST_OWNER_ID]
Zrezzowany przez: [OBJECT_REZZER_KEY]
Grupa: [OBJECT_GROUP]
Czas utworzenia: [OBJECT_CREATION_TIME]
Czas zrezzowania: [OBJECT_REZ_TIME]
Typ odnajdywania ścieżki: [OBJECT_PATHFINDING_TYPE]
Punkt dołączenia: [OBJECT_ATTACHED_POINT]
Tymczasowo dołączone: [OBJECT_TEMP_ATTACHED]

View File

@ -6402,6 +6402,7 @@ ID объекта: [INSPECTING_KEY]
Выложено: [OBJECT_REZZER_KEY]
Группа: [OBJECT_GROUP]
Время создания: [OBJECT_CREATION_TIME]
Rezz time: [OBJECT_REZ_TIME]
Тип поиска пути: [OBJECT_PATHFINDING_TYPE]
Присоединено к: [OBJECT_ATTACHED_POINT]
Временно присоединено: [OBJECT_TEMP_ATTACHED]