xabbo-scripts/Scripts/User Collector NL Server.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

95 lines
2.0 KiB
C#

// Automatisch durch Räume gehen und User in TXT speichern (nur Namen)
using System.IO;
var minUsers = 1;
var delayBetweenRooms = 3000;
var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
var filePath = Path.Combine(desktopPath, "HabboUserList_nl.txt");
var allUsers = new HashSet<string>();
// Existierende User laden
if (File.Exists(filePath))
{
foreach (var line in File.ReadAllLines(filePath))
{
if (!string.IsNullOrWhiteSpace(line))
{
allUsers.Add(line.Trim());
}
}
Log($"Bestehende Liste geladen: {allUsers.Count} User");
}
void SaveToFile()
{
File.WriteAllLines(filePath, allUsers.OrderBy(x => x));
Log($"[GESPEICHERT] {allUsers.Count} User");
}
var categories = new[] { "popular", "recommended" };
var allRooms = new Dictionary<long, dynamic>();
Log("=== Suche Räume... ===");
foreach (var category in categories)
{
try
{
var rooms = SearchNav(category).Where(x => x.Users >= minUsers);
foreach (var room in rooms)
{
if (!allRooms.ContainsKey(room.Id))
allRooms[room.Id] = room;
}
Delay(1000);
}
catch { }
}
Log($"Gefunden: {allRooms.Count} Räume");
int roomCount = 0;
foreach (var room in allRooms.Values)
{
if (!Run) break;
roomCount++;
Log($"[{roomCount}/{allRooms.Count}] {room.Name}");
try
{
if (EnsureEnterRoom(room.Id) == RoomEntryResult.Success)
{
Delay(1500);
int newUsers = 0;
foreach (var user in Users)
{
if (allUsers.Add(user.Name))
newUsers++;
}
if (newUsers > 0)
{
Log($" +{newUsers} neue User");
SaveToFile();
}
LeaveRoom();
}
}
catch { }
Delay(delayBetweenRooms);
}
SaveToFile();
Log($"");
Log($"=== FERTIG ===");
Log($"Gesamt: {allUsers.Count} User");
Log($"Datei: {filePath}");