Keeps the repo root clean - only README.md visible on landing page. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
168 lines
4.9 KiB
C#
168 lines
4.9 KiB
C#
bool isFirstIntercept = true;
|
|
|
|
var keyMap = new Dictionary<string, string>() {
|
|
{"-100", "@id"},
|
|
{"-101", "@class_id"},
|
|
{"-102", "@height"},
|
|
{"-110", "@state"},
|
|
{"-120", "@position.x"},
|
|
{"-121", "@position.y"},
|
|
{"-122", "@rotation"},
|
|
{"-123", "@altitude"},
|
|
{"-124", "@is_invisible"},
|
|
{"-129", "@type"},
|
|
{"-130", "@is_stackable"},
|
|
{"-131", "@can_stand_on"},
|
|
{"-132", "@can_sit_on"},
|
|
{"-133", "@can_lay_on"},
|
|
{"-140", "@dimensions.x"},
|
|
{"-141", "@dimensions.y"},
|
|
{"-180", "@owner_id"},
|
|
{"-190", "@wallitem_offset"},
|
|
{"-200", "@index"},
|
|
{"-205", "@type"},
|
|
{"-206", "@gender"},
|
|
{"-210", "@level"},
|
|
{"-211", "@achievement_score"},
|
|
{"-220", "@is_hc"},
|
|
{"-221", "@has_rights"},
|
|
{"-222", "@is_group_admin"},
|
|
{"-223", "@is_owner"},
|
|
{"-230", "@position.x"},
|
|
{"-231", "@position.y"},
|
|
{"-232", "@direction"},
|
|
{"-233", "@altitude"},
|
|
{"-237", "@team.score"},
|
|
{"-238", "@team.color"},
|
|
{"-239", "@team.type"},
|
|
{"-240", "@handitem"},
|
|
{"-241", "@effect"},
|
|
{"-242", "@is_frozen"},
|
|
{"-243", "@is_muted"},
|
|
{"-250", "@favourite_group_id"},
|
|
{"-260", "@dance"},
|
|
{"-261", "@sign"},
|
|
{"-262", "@is_idle"},
|
|
{"-266", "@room_entry.method"},
|
|
{"-267", "@room_entry.teleport_id"},
|
|
{"-270", "@user_id"},
|
|
{"-271", "@pet_id"},
|
|
{"-272", "@bot_id"},
|
|
{"-280", "@pet_owner_id"},
|
|
{"-300", "@furni_count"},
|
|
{"-301", "@user_count"},
|
|
{"-310", "@wired_timer"},
|
|
{"-320", "@teams.red.score"},
|
|
{"-321", "@teams.green.score"},
|
|
{"-322", "@teams.blue.score"},
|
|
{"-323", "@teams.yellow.score"},
|
|
{"-330", "@teams.red.size"},
|
|
{"-331", "@teams.green.size"},
|
|
{"-332", "@teams.blue.size"},
|
|
{"-333", "@teams.yellow.size"},
|
|
{"-380", "@room_id"},
|
|
{"-381", "@group_id"},
|
|
{"-400", "@selector_furni_count"},
|
|
{"-401", "@selector_user_count"},
|
|
{"-410", "@signal_furni_count"},
|
|
{"-411", "@signal_user_count"},
|
|
{"-420", "@event.signal.antenna_id"},
|
|
{"-450", "@event.chat.type"},
|
|
{"-451", "@event.chat.style"},
|
|
{"-460", "@event.variable_update.change_type"},
|
|
{"-461", "@event.variable_update.old_value"},
|
|
{"-462", "@event.variable_update.new_value"},
|
|
{"-463", "@event.variable_update.difference"},
|
|
{"-1000", "@current_time"},
|
|
{"-1001", "@current_time.milliseconds_of_seconds"},
|
|
{"-1002", "@current_time.seconds_of_minute"},
|
|
{"-1003", "@current_time.minute_of_hour"},
|
|
{"-1004", "@current_time.hour_of_day"},
|
|
{"-1005", "@current_time.day_of_week"},
|
|
{"-1006", "@current_time.day_of_month"},
|
|
{"-1007", "@current_time.day_of_year"},
|
|
{"-1008", "@current_time.week_of_year"},
|
|
{"-1009", "@current_time.month_of_year"},
|
|
{"-1010", "@current_time.year"},
|
|
{"~100", "~background_color.hue"},
|
|
{"~101", "~background_color.saturation"},
|
|
{"~102", "~background_color.lightness"},
|
|
{"~103", "~teleport.target_id"},
|
|
{"~110", "~area_hide.root_x"},
|
|
{"~111", "~area_hide.root_y"},
|
|
{"~112", "~area_hide.width"},
|
|
{"~113", "~area_hide.length"},
|
|
{"~114", "~area_hide.is_invisible_furni"},
|
|
{"~115", "~area_hide.hiding_wallitems"},
|
|
{"~116", "~area_hide.inverted"},
|
|
{"~120", "~clock.state"},
|
|
{"~121", "~clock.pulse_count"},
|
|
{"~122", "~clock.is_game_aware"},
|
|
{"~400", "~pet.level"},
|
|
{"~401", "~pet.experience"},
|
|
{"~402", "~pet.energy"},
|
|
{"~403", "~pet.happiness"},
|
|
{"~410", "~pet.max_level"},
|
|
{"~411", "~pet.experience_required"},
|
|
{"~412", "~pet.max_energy"},
|
|
{"~413", "~pet.max_happiness"},
|
|
{"~420", "~pet.scratches"},
|
|
{"~430", "~pet.owner_id"},
|
|
{"~431", "~pet.creation_time"},
|
|
{"~500", "~horse.has_saddle"},
|
|
{"~501", "~horse.is_riding"},
|
|
{"~502", "~horse.controller_user_id"},
|
|
{"~600", "~plant.rarity_level"},
|
|
{"~601", "~plant.shape"},
|
|
{"~602", "~plant.color"},
|
|
{"~610", "~plant.can_breed"},
|
|
{"~611", "~plant.can_harvest"},
|
|
{"~612", "~plant.can_revive"},
|
|
{"~613", "~plant.is_dead"},
|
|
{"~614", "~plant.is_growing"},
|
|
{"~615", "~plant.remaining_wellbeing_seconds"},
|
|
{"~616", "~plant.remaining_growing_seconds"},
|
|
{"~617", "~plant.max_wellbeing_seconds"}
|
|
};
|
|
|
|
OnIntercept(In["WiredVariablesForObject"], e => {
|
|
if (!isFirstIntercept) {
|
|
Log("----------------------------------------");
|
|
} else {
|
|
isFirstIntercept = false;
|
|
}
|
|
|
|
int param1 = e.Packet.ReadInt();
|
|
int param2 = e.Packet.ReadInt();
|
|
int itemCount = e.Packet.ReadInt();
|
|
|
|
Log($"Type: {(param1 == 0 ? "Furni" : "User")} | ID/Index: {param2}");
|
|
|
|
for (int i = 0; i < itemCount; i++) {
|
|
string key = e.Packet.ReadString();
|
|
int value = e.Packet.ReadInt();
|
|
|
|
string varName = keyMap.ContainsKey(key) ? keyMap[key] : $"Unknown ({key})";
|
|
Log($"{varName}: {value}");
|
|
}
|
|
});
|
|
|
|
OnIntercept(Out["ClickFurni"], e => {
|
|
int furniId = e.Packet.ReadInt();
|
|
Send(Out["WiredGetVariablesForObject"], 0, furniId);
|
|
Log($"Requested variables for furni ID: {furniId}");
|
|
});
|
|
|
|
OnIntercept(Out["GetSelectedBadges"], e => {
|
|
int userId = e.Packet.ReadInt();
|
|
|
|
var user = Room.Users.FirstOrDefault(u => u.Id == userId);
|
|
if (user != null) {
|
|
int userIndex = user.Index;
|
|
Send(Out["WiredGetVariablesForObject"], 1, userIndex);
|
|
Log($"Requested variables for user ID: {userId} (Index: {userIndex})");
|
|
}
|
|
});
|
|
|
|
Log("Variable capture script started. Click on furni or users to see their variables.");
|
|
Wait(); |