From d278bc359bf6fedd4c0dd649380e6eba5b43c21d Mon Sep 17 00:00:00 2001 From: Casper Warden <216465704+casperwardensl@users.noreply.github.com> Date: Sat, 16 Dec 2017 06:42:41 +0000 Subject: [PATCH] Add TeleportTo command and map region lookup by name --- dist/classes/commands/GridCommands.d.ts | 5 +- dist/classes/commands/GridCommands.js | 56 +++++++++--- dist/classes/commands/GridCommands.js.map | 2 +- dist/classes/commands/RegionCommands.d.ts | 4 + dist/classes/commands/RegionCommands.js | 26 ++++++ dist/classes/commands/RegionCommands.js.map | 2 +- dist/classes/commands/TeleportCommands.d.ts | 6 ++ dist/classes/commands/TeleportCommands.js | 66 +++++++++++--- dist/classes/commands/TeleportCommands.js.map | 2 +- dist/events/RegionInfoReply.d.ts | 14 +++ dist/events/RegionInfoReply.js | 6 ++ dist/events/RegionInfoReply.js.map | 1 + dist/index.d.ts | 3 +- dist/index.js | 2 + dist/index.js.map | 2 +- example/testBot.js | 10 +++ lib/classes/commands/GridCommands.ts | 71 +++++++++++---- lib/classes/commands/RegionCommands.ts | 37 +++++++- lib/classes/commands/TeleportCommands.ts | 87 ++++++++++++++++--- lib/events/RegionInfoReply.ts | 15 ++++ lib/index.ts | 5 +- 21 files changed, 362 insertions(+), 60 deletions(-) create mode 100644 dist/events/RegionInfoReply.d.ts create mode 100644 dist/events/RegionInfoReply.js create mode 100644 dist/events/RegionInfoReply.js.map create mode 100644 lib/events/RegionInfoReply.ts diff --git a/dist/classes/commands/GridCommands.d.ts b/dist/classes/commands/GridCommands.d.ts index 5d18c29..7f97ecc 100644 --- a/dist/classes/commands/GridCommands.d.ts +++ b/dist/classes/commands/GridCommands.d.ts @@ -1,10 +1,9 @@ -/// import { MapInfoReply } from '../../events/MapInfoReply'; -import * as Long from 'long'; import { UUID } from '../UUID'; import { CommandsBase } from './CommandsBase'; +import { RegionInfoReply } from '../../events/RegionInfoReply'; export declare class GridCommands extends CommandsBase { - getRegionHandle(regionID: UUID): Promise; + getRegionByName(regionName: string): Promise; getRegionMapInfo(gridX: number, gridY: number): Promise; name2Key(name: string): Promise; } diff --git a/dist/classes/commands/GridCommands.js b/dist/classes/commands/GridCommands.js index fbc2cab..a5e67de 100644 --- a/dist/classes/commands/GridCommands.js +++ b/dist/classes/commands/GridCommands.js @@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const MapInfoReply_1 = require("../../events/MapInfoReply"); -const RegionHandleRequest_1 = require("../messages/RegionHandleRequest"); const Message_1 = require("../../enums/Message"); const MapBlockRequest_1 = require("../messages/MapBlockRequest"); const UUID_1 = require("../UUID"); @@ -12,26 +11,59 @@ const GridItemType_1 = require("../../enums/GridItemType"); const CommandsBase_1 = require("./CommandsBase"); const AvatarPickerRequest_1 = require("../messages/AvatarPickerRequest"); const FilterResponse_1 = require("../../enums/FilterResponse"); +const MapNameRequest_1 = require("../messages/MapNameRequest"); +const GridLayerType_1 = require("../../enums/GridLayerType"); +const RegionInfoReply_1 = require("../../events/RegionInfoReply"); class GridCommands extends CommandsBase_1.CommandsBase { - getRegionHandle(regionID) { + getRegionByName(regionName) { return new Promise((resolve, reject) => { const circuit = this.currentRegion.circuit; - const msg = new RegionHandleRequest_1.RegionHandleRequestMessage(); - msg.RequestBlock = { - RegionID: regionID, + const response = new MapInfoReply_1.MapInfoReply(); + const msg = new MapNameRequest_1.MapNameRequestMessage(); + msg.AgentData = { + AgentID: this.agent.agentID, + SessionID: circuit.sessionID, + Flags: GridLayerType_1.GridLayerType.Objects, + EstateID: 0, + Godlike: false + }; + msg.NameData = { + Name: Utils_1.Utils.StringToBuffer(regionName) }; circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable); - circuit.waitForMessage(Message_1.Message.RegionIDAndHandleReply, 10000, (packet) => { + circuit.waitForMessage(Message_1.Message.MapBlockReply, 10000, (packet) => { const filterMsg = packet.message; - if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) { + let found = false; + filterMsg.Data.forEach((region) => { + const name = Utils_1.Utils.BufferToStringSimple(region.Name); + if (name.trim().toLowerCase() === regionName.trim().toLowerCase()) { + found = true; + } + }); + if (found) { return FilterResponse_1.FilterResponse.Finish; } - else { - return FilterResponse_1.FilterResponse.NoMatch; - } + return FilterResponse_1.FilterResponse.NoMatch; }).then((packet) => { const responseMsg = packet.message; - resolve(responseMsg.ReplyBlock.RegionHandle); + responseMsg.Data.forEach((region) => { + const name = Utils_1.Utils.BufferToStringSimple(region.Name); + if (name.trim().toLowerCase() === regionName.trim().toLowerCase() && !(region.X === 0 && region.Y === 0)) { + const reply = new RegionInfoReply_1.RegionInfoReply(); + reply.access = region.Access; + reply.X = region.X; + reply.Y = region.Y; + reply.name = name; + reply.regionFlags = region.RegionFlags; + reply.waterHeight = region.WaterHeight; + reply.agents = region.Agents; + reply.mapImageID = region.MapImageID; + reply.handle = Utils_1.Utils.RegionCoordinatesToHandle(region.X * 256, region.Y * 256); + resolve(reply); + } + }); + }).catch((err) => { + reject(err); }); }); } @@ -45,7 +77,7 @@ class GridCommands extends CommandsBase_1.CommandsBase { SessionID: circuit.sessionID, Flags: 65536, EstateID: 0, - Godlike: true + Godlike: false }; msg.PositionData = { MinX: (gridX / 256), diff --git a/dist/classes/commands/GridCommands.js.map b/dist/classes/commands/GridCommands.js.map index 0ba90df..5e5b4ff 100644 --- a/dist/classes/commands/GridCommands.js.map +++ b/dist/classes/commands/GridCommands.js.map @@ -1 +1 @@ -{"version":3,"file":"GridCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/GridCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"GridCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/GridCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/classes/commands/RegionCommands.d.ts b/dist/classes/commands/RegionCommands.d.ts index eef6e03..1dfbd90 100644 --- a/dist/classes/commands/RegionCommands.d.ts +++ b/dist/classes/commands/RegionCommands.d.ts @@ -1,3 +1,7 @@ +/// import { CommandsBase } from './CommandsBase'; +import { UUID } from '../UUID'; +import * as Long from 'long'; export declare class RegionCommands extends CommandsBase { + getRegionHandle(regionID: UUID): Promise; } diff --git a/dist/classes/commands/RegionCommands.js b/dist/classes/commands/RegionCommands.js index d9380c6..7e4c0b5 100644 --- a/dist/classes/commands/RegionCommands.js +++ b/dist/classes/commands/RegionCommands.js @@ -1,7 +1,33 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const CommandsBase_1 = require("./CommandsBase"); +const PacketFlags_1 = require("../../enums/PacketFlags"); +const RegionHandleRequest_1 = require("../messages/RegionHandleRequest"); +const Message_1 = require("../../enums/Message"); +const FilterResponse_1 = require("../../enums/FilterResponse"); class RegionCommands extends CommandsBase_1.CommandsBase { + getRegionHandle(regionID) { + return new Promise((resolve, reject) => { + const circuit = this.currentRegion.circuit; + const msg = new RegionHandleRequest_1.RegionHandleRequestMessage(); + msg.RequestBlock = { + RegionID: regionID, + }; + circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable); + circuit.waitForMessage(Message_1.Message.RegionIDAndHandleReply, 10000, (packet) => { + const filterMsg = packet.message; + if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) { + return FilterResponse_1.FilterResponse.Finish; + } + else { + return FilterResponse_1.FilterResponse.NoMatch; + } + }).then((packet) => { + const responseMsg = packet.message; + resolve(responseMsg.ReplyBlock.RegionHandle); + }); + }); + } } exports.RegionCommands = RegionCommands; //# sourceMappingURL=RegionCommands.js.map \ No newline at end of file diff --git a/dist/classes/commands/RegionCommands.js.map b/dist/classes/commands/RegionCommands.js.map index fcd8f29..0269ff3 100644 --- a/dist/classes/commands/RegionCommands.js.map +++ b/dist/classes/commands/RegionCommands.js.map @@ -1 +1 @@ -{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAE5C,oBAA4B,SAAQ,2BAAY;CAG/C;AAHD,wCAGC"} \ No newline at end of file +{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAI5C,yDAAoD;AACpD,yEAA2E;AAC3E,iDAA4C;AAC5C,+DAA0D;AAG1D,oBAA4B,SAAQ,2BAAY;IAE5C,eAAe,CAAC,QAAc;QAE1B,MAAM,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,GAAG,GAA+B,IAAI,gDAA0B,EAAE,CAAC;YACzE,GAAG,CAAC,YAAY,GAAG;gBACf,QAAQ,EAAE,QAAQ;aACrB,CAAC;YACF,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,yBAAW,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,cAAc,CAAC,iBAAO,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,MAAc,EAAkB,EAAE;gBAE7F,MAAM,SAAS,GAAG,MAAM,CAAC,OAAwC,CAAC;gBAClE,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC,CACrE,CAAC;oBACG,MAAM,CAAC,+BAAc,CAAC,MAAM,CAAC;gBACjC,CAAC;gBACD,IAAI,CACJ,CAAC;oBACG,MAAM,CAAC,+BAAc,CAAC,OAAO,CAAC;gBAClC,CAAC;YACL,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAc,EAAE,EAAE;gBAEvB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAwC,CAAC;gBACpE,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA9BD,wCA8BC"} \ No newline at end of file diff --git a/dist/classes/commands/TeleportCommands.d.ts b/dist/classes/commands/TeleportCommands.d.ts index 84bcb1b..ddd1663 100644 --- a/dist/classes/commands/TeleportCommands.d.ts +++ b/dist/classes/commands/TeleportCommands.d.ts @@ -1,6 +1,12 @@ +/// import { CommandsBase } from './CommandsBase'; import { LureEvent } from '../../events/LureEvent'; import { TeleportEvent } from '../../events/TeleportEvent'; +import { Vector3 } from '../Vector3'; +import * as Long from 'long'; export declare class TeleportCommands extends CommandsBase { + private awaitTeleportEvent(); acceptTeleport(lure: LureEvent): Promise; + teleportToHandle(handle: Long, position: Vector3, lookAt: Vector3): Promise; + teleportTo(regionName: string, position: Vector3, lookAt: Vector3): Promise; } diff --git a/dist/classes/commands/TeleportCommands.js b/dist/classes/commands/TeleportCommands.js index a73b3bc..1dba801 100644 --- a/dist/classes/commands/TeleportCommands.js +++ b/dist/classes/commands/TeleportCommands.js @@ -6,18 +6,10 @@ const TeleportEventType_1 = require("../../enums/TeleportEventType"); const PacketFlags_1 = require("../../enums/PacketFlags"); const TeleportLureRequest_1 = require("../messages/TeleportLureRequest"); const TeleportFlags_1 = require("../../enums/TeleportFlags"); +const TeleportLocationRequest_1 = require("../messages/TeleportLocationRequest"); class TeleportCommands extends CommandsBase_1.CommandsBase { - acceptTeleport(lure) { + awaitTeleportEvent() { return new Promise((resolve, reject) => { - const circuit = this.currentRegion.circuit; - const tlr = new TeleportLureRequest_1.TeleportLureRequestMessage(); - tlr.Info = { - AgentID: this.agent.agentID, - SessionID: circuit.sessionID, - LureID: lure.lureID, - TeleportFlags: TeleportFlags_1.TeleportFlags.ViaLure - }; - circuit.sendMessage(tlr, PacketFlags_1.PacketFlags.Reliable); if (this.currentRegion.caps.eventQueueClient) { if (this.bot.clientEvents === null) { reject(new Error('ClientEvents is null')); @@ -58,6 +50,60 @@ class TeleportCommands extends CommandsBase_1.CommandsBase { } }); } + else { + reject(new Error('EventQueue not ready')); + } + }); + } + acceptTeleport(lure) { + return new Promise((resolve, reject) => { + const circuit = this.currentRegion.circuit; + const tlr = new TeleportLureRequest_1.TeleportLureRequestMessage(); + tlr.Info = { + AgentID: this.agent.agentID, + SessionID: circuit.sessionID, + LureID: lure.lureID, + TeleportFlags: TeleportFlags_1.TeleportFlags.ViaLure + }; + circuit.sendMessage(tlr, PacketFlags_1.PacketFlags.Reliable); + this.awaitTeleportEvent().then((event) => { + resolve(event); + }).catch((err) => { + reject(err); + }); + }); + } + teleportToHandle(handle, position, lookAt) { + return new Promise((resolve, reject) => { + const rtm = new TeleportLocationRequest_1.TeleportLocationRequestMessage(); + rtm.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rtm.Info = { + LookAt: lookAt, + Position: position, + RegionHandle: handle + }; + this.circuit.sendMessage(rtm, PacketFlags_1.PacketFlags.Reliable); + this.awaitTeleportEvent().then((event) => { + resolve(event); + }).catch((err) => { + reject(err); + }); + }); + } + teleportTo(regionName, position, lookAt) { + return new Promise((resolve, reject) => { + this.bot.clientCommands.grid.getRegionByName(regionName).then((region) => { + this.teleportToHandle(region.handle, position, lookAt).then((event) => { + resolve(event); + }).catch((err) => { + reject(err); + }); + }).catch((err) => { + reject(err); + }); }); } } diff --git a/dist/classes/commands/TeleportCommands.js.map b/dist/classes/commands/TeleportCommands.js.map index b5b0679..47d1bff 100644 --- a/dist/classes/commands/TeleportCommands.js.map +++ b/dist/classes/commands/TeleportCommands.js.map @@ -1 +1 @@ -{"version":3,"file":"TeleportCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/TeleportCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"TeleportCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/TeleportCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/events/RegionInfoReply.d.ts b/dist/events/RegionInfoReply.d.ts new file mode 100644 index 0000000..3c78c3b --- /dev/null +++ b/dist/events/RegionInfoReply.d.ts @@ -0,0 +1,14 @@ +/// +import { UUID } from '../classes/UUID'; +import * as Long from 'long'; +export declare class RegionInfoReply { + X: number; + Y: number; + name: string; + access: number; + regionFlags: number; + waterHeight: number; + agents: number; + mapImageID: UUID; + handle: Long; +} diff --git a/dist/events/RegionInfoReply.js b/dist/events/RegionInfoReply.js new file mode 100644 index 0000000..fa8753a --- /dev/null +++ b/dist/events/RegionInfoReply.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +class RegionInfoReply { +} +exports.RegionInfoReply = RegionInfoReply; +//# sourceMappingURL=RegionInfoReply.js.map \ No newline at end of file diff --git a/dist/events/RegionInfoReply.js.map b/dist/events/RegionInfoReply.js.map new file mode 100644 index 0000000..c31a5b4 --- /dev/null +++ b/dist/events/RegionInfoReply.js.map @@ -0,0 +1 @@ +{"version":3,"file":"RegionInfoReply.js","sourceRoot":"","sources":["../../lib/events/RegionInfoReply.ts"],"names":[],"mappings":";;AAGA;CAWC;AAXD,0CAWC"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 9acc8d5..86fc5f8 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -9,4 +9,5 @@ import { InstantMessageEvent } from './events/InstantMessageEvent'; import { ChatSourceType } from './enums/ChatSourceType'; import { BotOptionFlags } from './enums/BotOptionFlags'; import { UUID } from './classes/UUID'; -export { Bot, LoginParameters, AssetType, HTTPAssets, ClientEvents, BVH, InstantMessageEvent, InstantMessageEventFlags, ChatSourceType, BotOptionFlags, UUID }; +import { Vector3 } from './classes/Vector3'; +export { Bot, LoginParameters, AssetType, HTTPAssets, ClientEvents, BVH, InstantMessageEvent, InstantMessageEventFlags, ChatSourceType, BotOptionFlags, UUID, Vector3 }; diff --git a/dist/index.js b/dist/index.js index 524302f..0467ed2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -22,4 +22,6 @@ const BotOptionFlags_1 = require("./enums/BotOptionFlags"); exports.BotOptionFlags = BotOptionFlags_1.BotOptionFlags; const UUID_1 = require("./classes/UUID"); exports.UUID = UUID_1.UUID; +const Vector3_1 = require("./classes/Vector3"); +exports.Vector3 = Vector3_1.Vector3; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 44d0caf..a4d36bb 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAiBtB,cAjBI,SAAG,CAiBJ;AAhBP,+DAA0D;AAiBtD,0BAjBI,iCAAe,CAiBJ;AAhBnB,yDAAoD;AAmBhD,uBAnBI,2BAAY,CAmBJ;AAlBhB,uCAAkC;AAmB9B,cAnBI,SAAG,CAmBJ;AAdP,iDAA4C;AAWxC,oBAXI,qBAAS,CAWJ;AAVb,mDAA8C;AAW1C,qBAXI,uBAAU,CAWJ;AAVd,+EAA0E;AActE,mCAdI,mDAAwB,CAcJ;AAb5B,sEAAiE;AAY7D,8BAZI,yCAAmB,CAYJ;AAXvB,2DAAsD;AAalD,yBAbI,+BAAc,CAaJ;AAZlB,2DAAsD;AAalD,yBAbI,+BAAc,CAaJ;AAZlB,yCAAoC;AAahC,eAbI,WAAI,CAaJ"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAmBtB,cAnBI,SAAG,CAmBJ;AAlBP,+DAA0D;AAmBtD,0BAnBI,iCAAe,CAmBJ;AAlBnB,yDAAoD;AAqBhD,uBArBI,2BAAY,CAqBJ;AApBhB,uCAAkC;AAqB9B,cArBI,SAAG,CAqBJ;AAhBP,iDAA4C;AAaxC,oBAbI,qBAAS,CAaJ;AAZb,mDAA8C;AAa1C,qBAbI,uBAAU,CAaJ;AAZd,+EAA0E;AAgBtE,mCAhBI,mDAAwB,CAgBJ;AAf5B,sEAAiE;AAc7D,8BAdI,yCAAmB,CAcJ;AAbvB,2DAAsD;AAelD,yBAfI,+BAAc,CAeJ;AAdlB,2DAAsD;AAelD,yBAfI,+BAAc,CAeJ;AAdlB,yCAAoC;AAehC,eAfI,WAAI,CAeJ;AAdR,+CAA0C;AAetC,kBAfI,iBAAO,CAeJ"} \ No newline at end of file diff --git a/example/testBot.js b/example/testBot.js index 015d413..80dd771 100644 --- a/example/testBot.js +++ b/example/testBot.js @@ -184,6 +184,16 @@ function connect() }); }); + setTimeout(() => // TODO: This 5 second delay is a fudge. We need to wait for the eventqueue to start properly + { + bot.clientCommands.teleport.teleportTo('Izanagi', new nmv.Vector3([128, 128, 20]), new nmv.Vector3([0, 1.0, 0])).then(() => + { + console.log("Teleport completed"); + }).catch((err) => { + console.error(err); + }); + }, 5000); + // When it's time to go home, call bot.close(); }).catch((error) => { diff --git a/lib/classes/commands/GridCommands.ts b/lib/classes/commands/GridCommands.ts index f0bfb97..808473e 100644 --- a/lib/classes/commands/GridCommands.ts +++ b/lib/classes/commands/GridCommands.ts @@ -1,7 +1,6 @@ import {MapInfoReply} from '../../events/MapInfoReply'; import {Packet} from '../Packet'; import * as Long from 'long'; -import {RegionHandleRequestMessage} from '../messages/RegionHandleRequest'; import {MapItemReplyMessage} from '../messages/MapItemReply'; import {Message} from '../../enums/Message'; import {MapBlockReplyMessage} from '../messages/MapBlockReply'; @@ -11,42 +10,78 @@ import {MapItemRequestMessage} from '../messages/MapItemRequest'; import {Utils} from '../Utils'; import {PacketFlags} from '../../enums/PacketFlags'; import {GridItemType} from '../../enums/GridItemType'; -import {RegionIDAndHandleReplyMessage} from '../messages/RegionIDAndHandleReply'; import {CommandsBase} from './CommandsBase'; import {AvatarPickerRequestMessage} from '../messages/AvatarPickerRequest'; import {AvatarPickerReplyMessage} from '../messages/AvatarPickerReply'; import {FilterResponse} from '../../enums/FilterResponse'; +import {MapNameRequestMessage} from '../messages/MapNameRequest'; +import {GridLayerType} from '../../enums/GridLayerType'; +import {RegionInfoReply} from '../../events/RegionInfoReply'; export class GridCommands extends CommandsBase { - getRegionHandle(regionID: UUID): Promise + getRegionByName(regionName: string) { - return new Promise((resolve, reject) => + return new Promise((resolve, reject) => { const circuit = this.currentRegion.circuit; - const msg: RegionHandleRequestMessage = new RegionHandleRequestMessage(); - msg.RequestBlock = { - RegionID: regionID, + const response = new MapInfoReply(); + const msg: MapNameRequestMessage = new MapNameRequestMessage(); + msg.AgentData = { + AgentID: this.agent.agentID, + SessionID: circuit.sessionID, + Flags: GridLayerType.Objects, + EstateID: 0, + Godlike: false + }; + msg.NameData = { + Name: Utils.StringToBuffer(regionName) }; circuit.sendMessage(msg, PacketFlags.Reliable); - circuit.waitForMessage(Message.RegionIDAndHandleReply, 10000, (packet: Packet): FilterResponse => + circuit.waitForMessage(Message.MapBlockReply, 10000, (packet: Packet): FilterResponse => { - const filterMsg = packet.message as RegionIDAndHandleReplyMessage; - if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) + const filterMsg = packet.message as MapBlockReplyMessage; + let found = false; + filterMsg.Data.forEach((region) => + { + const name = Utils.BufferToStringSimple(region.Name); + if (name.trim().toLowerCase() === regionName.trim().toLowerCase()) + { + found = true; + } + }); + if (found) { return FilterResponse.Finish; } - else - { - return FilterResponse.NoMatch; - } + return FilterResponse.NoMatch; }).then((packet: Packet) => { - const responseMsg = packet.message as RegionIDAndHandleReplyMessage; - resolve(responseMsg.ReplyBlock.RegionHandle); + const responseMsg = packet.message as MapBlockReplyMessage; + responseMsg.Data.forEach((region) => + { + const name = Utils.BufferToStringSimple(region.Name); + if (name.trim().toLowerCase() === regionName.trim().toLowerCase() && !(region.X === 0 && region.Y === 0)) + { + const reply = new RegionInfoReply(); + reply.access = region.Access; + reply.X = region.X; + reply.Y = region.Y; + reply.name = name; + reply.regionFlags = region.RegionFlags; + reply.waterHeight = region.WaterHeight; + reply.agents = region.Agents; + reply.mapImageID = region.MapImageID; + + reply.handle = Utils.RegionCoordinatesToHandle(region.X * 256, region.Y * 256); + resolve(reply); + } + }); + }).catch((err) => + { + reject(err); }); }); } - getRegionMapInfo(gridX: number, gridY: number): Promise { return new Promise((resolve, reject) => @@ -59,7 +94,7 @@ export class GridCommands extends CommandsBase SessionID: circuit.sessionID, Flags: 65536, EstateID: 0, - Godlike: true + Godlike: false }; msg.PositionData = { MinX: (gridX / 256), diff --git a/lib/classes/commands/RegionCommands.ts b/lib/classes/commands/RegionCommands.ts index e52f35e..35a9ea3 100644 --- a/lib/classes/commands/RegionCommands.ts +++ b/lib/classes/commands/RegionCommands.ts @@ -1,6 +1,41 @@ import {CommandsBase} from './CommandsBase'; +import {UUID} from '../UUID'; +import {Packet} from '../Packet'; +import * as Long from 'long'; +import {PacketFlags} from '../../enums/PacketFlags'; +import {RegionHandleRequestMessage} from '../messages/RegionHandleRequest'; +import {Message} from '../../enums/Message'; +import {FilterResponse} from '../../enums/FilterResponse'; +import {RegionIDAndHandleReplyMessage} from '../messages/RegionIDAndHandleReply'; export class RegionCommands extends CommandsBase { - + getRegionHandle(regionID: UUID): Promise + { + return new Promise((resolve, reject) => + { + const circuit = this.currentRegion.circuit; + const msg: RegionHandleRequestMessage = new RegionHandleRequestMessage(); + msg.RequestBlock = { + RegionID: regionID, + }; + circuit.sendMessage(msg, PacketFlags.Reliable); + circuit.waitForMessage(Message.RegionIDAndHandleReply, 10000, (packet: Packet): FilterResponse => + { + const filterMsg = packet.message as RegionIDAndHandleReplyMessage; + if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) + { + return FilterResponse.Finish; + } + else + { + return FilterResponse.NoMatch; + } + }).then((packet: Packet) => + { + const responseMsg = packet.message as RegionIDAndHandleReplyMessage; + resolve(responseMsg.ReplyBlock.RegionHandle); + }); + }); + } } diff --git a/lib/classes/commands/TeleportCommands.ts b/lib/classes/commands/TeleportCommands.ts index b62972c..1fedfec 100644 --- a/lib/classes/commands/TeleportCommands.ts +++ b/lib/classes/commands/TeleportCommands.ts @@ -6,22 +6,17 @@ import {TeleportEvent} from '../../events/TeleportEvent'; import {PacketFlags} from '../../enums/PacketFlags'; import {TeleportLureRequestMessage} from '../messages/TeleportLureRequest'; import {TeleportFlags} from '../../enums/TeleportFlags'; +import {Vector3} from '../Vector3'; +import {RegionInfoReply} from '../../events/RegionInfoReply'; +import {TeleportLocationRequestMessage} from '../messages/TeleportLocationRequest'; +import * as Long from 'long'; export class TeleportCommands extends CommandsBase { - acceptTeleport(lure: LureEvent): Promise + private awaitTeleportEvent(): Promise { return new Promise((resolve, reject) => { - const circuit = this.currentRegion.circuit; - const tlr = new TeleportLureRequestMessage(); - tlr.Info = { - AgentID: this.agent.agentID, - SessionID: circuit.sessionID, - LureID: lure.lureID, - TeleportFlags: TeleportFlags.ViaLure - }; - circuit.sendMessage(tlr, PacketFlags.Reliable); if (this.currentRegion.caps.eventQueueClient) { if (this.bot.clientEvents === null) @@ -77,6 +72,78 @@ export class TeleportCommands extends CommandsBase } }); } + else + { + reject(new Error('EventQueue not ready')); + } + }); + } + + acceptTeleport(lure: LureEvent): Promise + { + return new Promise((resolve, reject) => + { + const circuit = this.currentRegion.circuit; + const tlr = new TeleportLureRequestMessage(); + tlr.Info = { + AgentID: this.agent.agentID, + SessionID: circuit.sessionID, + LureID: lure.lureID, + TeleportFlags: TeleportFlags.ViaLure + }; + circuit.sendMessage(tlr, PacketFlags.Reliable); + this.awaitTeleportEvent().then((event: TeleportEvent) => + { + resolve(event); + }).catch((err) => + { + reject(err); + }); + }); + } + + teleportToHandle(handle: Long, position: Vector3, lookAt: Vector3) + { + return new Promise((resolve, reject) => + { + const rtm = new TeleportLocationRequestMessage(); + rtm.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rtm.Info = { + LookAt: lookAt, + Position: position, + RegionHandle: handle + }; + this.circuit.sendMessage(rtm, PacketFlags.Reliable); + this.awaitTeleportEvent().then((event: TeleportEvent) => + { + resolve(event); + }).catch((err) => + { + reject(err); + }); + }); + } + + teleportTo(regionName: string, position: Vector3, lookAt: Vector3) + { + return new Promise((resolve, reject) => + { + this.bot.clientCommands.grid.getRegionByName(regionName).then((region: RegionInfoReply) => + { + this.teleportToHandle(region.handle, position, lookAt).then((event: TeleportEvent) => + { + resolve(event); + }).catch((err) => + { + reject(err); + }) + }).catch((err) => + { + reject(err); + }); }); } } diff --git a/lib/events/RegionInfoReply.ts b/lib/events/RegionInfoReply.ts new file mode 100644 index 0000000..3bf01c4 --- /dev/null +++ b/lib/events/RegionInfoReply.ts @@ -0,0 +1,15 @@ +import {UUID} from '../classes/UUID'; +import * as Long from 'long'; + +export class RegionInfoReply +{ + X: number; + Y: number; + name: string; + access: number; + regionFlags: number; + waterHeight: number; + agents: number; + mapImageID: UUID; + handle: Long +} diff --git a/lib/index.ts b/lib/index.ts index bcb4fc5..14027dc 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -13,6 +13,8 @@ import {InstantMessageEvent} from './events/InstantMessageEvent'; import {ChatSourceType} from './enums/ChatSourceType'; import {BotOptionFlags} from './enums/BotOptionFlags'; import {UUID} from './classes/UUID'; +import {Vector3} from './classes/Vector3'; + export { Bot, @@ -25,5 +27,6 @@ export { InstantMessageEventFlags, ChatSourceType, BotOptionFlags, - UUID + UUID, + Vector3 };