xabbo-scripts/Trade Accept.csx
Administrator b6c31a7feb Add 165 scripts from desktop collection + update README
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>
2026-03-16 09:47:56 +01:00

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();