Komplettes G-Earth Paket inkl. JRE, Extensions und Tools. Extensions: - G-BuildTools, G-Click Ultimate, G-Loader, G-Manipulate - G-Presets, G-Translator, G-Trigger, G-itemViewer - Market Utils, Packet Info Explorer, Plants - RandomRoomVisitor, RoomLogger, Sanbovir Photo Inspector - SpyFriends, WallAligner, XabboScripter, xabbo
86 lines
2.1 KiB
JavaScript
86 lines
2.1 KiB
JavaScript
import {
|
|
Extension,
|
|
HDirection,
|
|
HEntity,
|
|
HEntityType,
|
|
HPacket,
|
|
HRoomResult,
|
|
} from "gnode-api";
|
|
import extensionInfo from "./package.json" assert { type: "json" };
|
|
|
|
process.on("uncaughtException", (error) => {
|
|
console.error(error);
|
|
process.exit(0);
|
|
});
|
|
|
|
const ext = new Extension(extensionInfo);
|
|
extensionInfo.name = "Plants";
|
|
|
|
ext.run();
|
|
|
|
ext.interceptByNameOrHash(HDirection.TOCLIENT, "Users", onPlants);
|
|
ext.interceptByNameOrHash(HDirection.TOSERVER, "Chat", onCommandSended);
|
|
ext.interceptByNameOrHash(HDirection.TOCLIENT, "GetGuestRoomResult", onResetCommand);
|
|
ext.interceptByNameOrHash(HDirection.TOSERVER, "Quit", exit);
|
|
|
|
const entities = new Map();
|
|
let extensionEnabled = false;
|
|
|
|
async function onPlants(hMessage) {
|
|
await sleep(1000);
|
|
const plants = HEntity.parse(hMessage.getPacket());
|
|
plants.forEach((plant) => {
|
|
if (plant.entityType === HEntityType.PET)
|
|
entities.set(plant.id, plant.name);
|
|
});
|
|
}
|
|
|
|
function onCommandSended(hMessage) {
|
|
const packet = hMessage.getPacket();
|
|
const textMessage = packet.readString();
|
|
|
|
if (textMessage === ":plants") {
|
|
hMessage.blocked = true;
|
|
extensionEnabled = !extensionEnabled;
|
|
|
|
if (extensionEnabled) start();
|
|
|
|
const chatPacket = new HPacket(
|
|
`{in:Whisper}{i:1}{s:"Plants has been ${
|
|
extensionEnabled ? "activated" : "deactivated"
|
|
}"}{i:0}{i:34}{i:0}{i:-1}`
|
|
);
|
|
ext.sendToClient(chatPacket);
|
|
}
|
|
}
|
|
|
|
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
|
|
|
|
async function start() {
|
|
for (let plantID of entities.keys()) {
|
|
if (extensionEnabled) {
|
|
const packet = new HPacket(`{out:RespectPet}{i:${plantID}}`);
|
|
ext.sendToServer(packet);
|
|
await sleep(500);
|
|
}
|
|
}
|
|
const chatPacket = new HPacket(
|
|
`{in:Whisper}{i:1}{s:"All plants have been treated"}{i:0}{i:34}{i:0}{i:-1}`
|
|
);
|
|
ext.sendToClient(chatPacket);
|
|
}
|
|
|
|
function exit() {
|
|
entities.clear();
|
|
extensionEnabled = false;
|
|
}
|
|
|
|
function onResetCommand(hMessage) {
|
|
const packet = hMessage.getPacket();
|
|
const room = new HRoomResult(packet);
|
|
|
|
if (room.isEnterRoom) {
|
|
exit();
|
|
}
|
|
}
|