xabbo-scripts/Scripts/VarsAllGetter.csx
Administrator 7a548130a3 Move all scripts into Scripts/ subfolder
Keeps the repo root clean - only README.md visible on landing page.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:49:37 +01:00

177 lines
5.3 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"},
{"-2000", "@can_move_freely"},
{"-2100", "@projectile.animation.tiles_travelled"},
{"-2101", "@projectile.animation.user_collisions"},
{"-2102", "@projectile.animation.furni_collisions"},
{"-2103", "@projectile.animation.position.x"},
{"-2104", "@projectile.animation.position.y"},
{"-2105", "@projectile.animation.position.altitude"},
{"-2106", "@projectile.animation.is_travelling"},
{"~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();