Add object rezz time to the bridge (in extended info mode), clean up its code a little
parent
b85418417f
commit
c76deb7661
|
|
@ -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>");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Reference in New Issue