Added scripts from C:\Users\ploet\Desktop\Habbo\Xabbo Scripte: - 39 KI/Chatbot scripts (ChatGPT, Gemini, Grok, DeepSeek, Ollama) - Game solvers (Domino, Dodgeball, Obsidian Maze, IceBall) - Collision avoidance bots (5 versions) - Plant/breeding automation (12 scripts) - Trading tools, packet debuggers, room utilities - Navigation & teleport helpers Removed: 9 files (3 empty, 2 trivial, 4 cross-duplicates) Updated README with full categorized index of all 230+ scripts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
95 lines
2.7 KiB
C#
95 lines
2.7 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
var activeTrader = "";
|
|
var traderId = -1;
|
|
var allReceivedItems = new HashSet<string>();
|
|
|
|
string GetItemName(int itemId, string itemType, int spriteId) {
|
|
try {
|
|
var type = itemType == "s" ? ItemType.Floor : ItemType.Wall;
|
|
var furniInfo = FurniData.GetInfo(type, spriteId);
|
|
return furniInfo.Name;
|
|
} catch {
|
|
return $"item_{spriteId}";
|
|
}
|
|
}
|
|
|
|
OnIntercept(In["TradingOpen"], async e => {
|
|
var userId1 = e.Packet.ReadInt();
|
|
var canTrade1 = e.Packet.ReadInt();
|
|
var userId2 = e.Packet.ReadInt();
|
|
var canTrade2 = e.Packet.ReadInt();
|
|
|
|
traderId = (userId1 == Self.Id) ? userId2 : userId1;
|
|
allReceivedItems.Clear();
|
|
|
|
var trader = Users.FirstOrDefault(u => u.Id == traderId);
|
|
if (trader != null) {
|
|
activeTrader = trader.Name;
|
|
}
|
|
});
|
|
|
|
OnIntercept(In["TradingItemList"], async e => {
|
|
var packet = e.Packet;
|
|
|
|
try {
|
|
var user1Id = packet.ReadInt();
|
|
var user1ItemCount = packet.ReadInt();
|
|
var user1CreditCount = packet.ReadInt();
|
|
var user1Items = packet.ReadInt();
|
|
|
|
var user2Id = packet.ReadInt();
|
|
var user2ItemCount = packet.ReadInt();
|
|
|
|
if (user2Id == traderId && user2ItemCount > 0) {
|
|
for (int j = 0; j < user2ItemCount; j++) {
|
|
try {
|
|
var itemId = packet.ReadInt();
|
|
var itemType = packet.ReadString();
|
|
var furniId = packet.ReadInt();
|
|
var spriteId = packet.ReadInt();
|
|
|
|
if (spriteId > 0 && spriteId < 100000) {
|
|
var itemName = GetItemName(itemId, itemType, spriteId);
|
|
allReceivedItems.Add(itemName);
|
|
}
|
|
|
|
if (j == 0) {
|
|
break;
|
|
}
|
|
|
|
} catch {
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (allReceivedItems.Count > 0) {
|
|
await Task.Delay(1);
|
|
Send(Out["AcceptTrading"]);
|
|
}
|
|
}
|
|
} catch {
|
|
}
|
|
});
|
|
|
|
OnIntercept(In["TradingConfirmation"], async e => {
|
|
await Task.Delay(1);
|
|
Send(Out["ConfirmAcceptTrading"]);
|
|
});
|
|
|
|
OnIntercept(In["TradingCompleted"], async e => {
|
|
if (!string.IsNullOrEmpty(activeTrader) && allReceivedItems.Count > 0) {
|
|
await Task.Delay(1);
|
|
|
|
var itemList = string.Join(", ", allReceivedItems);
|
|
Shout($"Hey {activeTrader} thank you for the {itemList}!");
|
|
}
|
|
|
|
activeTrader = "";
|
|
traderId = -1;
|
|
allReceivedItems.Clear();
|
|
});
|
|
|
|
Wait(); |