├── docs ├── .prettierrc.json ├── assets │ ├── app.ico │ ├── 06-Lure.png │ ├── 15-Chat.png │ ├── 16-Log.png │ ├── 02-General.png │ ├── 03-Menu-bar.png │ ├── 04-Training.png │ ├── 09-Protection.png │ ├── 11-Inventory.png │ ├── 14-Statistics.png │ ├── 07-Trade_Route.png │ ├── 10-Party_Party.png │ ├── 13-Map_Minimap.png │ ├── 02-General_IP-Bind.png │ ├── 05-Alchemy_Blues.png │ ├── 05-Alchemy_Enhance.png │ ├── 05-Alchemy_Stats.png │ ├── 07-Trade_Settings.png │ ├── 12-Items_Shopping.png │ ├── 10-Party_Auto-Party.png │ ├── 12-Items_Item-Filter.png │ ├── 07-Trade_Job-Overview.png │ ├── 10-Party_Party-Buffing.png │ ├── 10-Party_Party-Matching.png │ ├── 13-Map_NavMesh-Viewer.png │ ├── 03-Menu-bar_View_Sidebar.png │ ├── 12-Items_Pickup-Settings.png │ ├── 02-General_Account-manager.png │ ├── 03-Menu-bar_Plugins_Quests.png │ ├── 03-Menu-bar_File_Proxy_Config.png │ ├── 03-Menu-bar_File_Select-Profile.png │ ├── 03-Menu-bar_Tools_Script-Recorder.png │ ├── 03-Menu-bar_Plugins_Command-Center.png │ ├── 03-Menu-bar_Plugins_Server-Information.png │ ├── 08-Skills_Active-Buffs__Advanced-Setup.png │ └── 08-Skills_Player-Skills__General-Setup.png └── .stylelintrc.json ├── .gitmodules ├── Application └── RSBot │ ├── app.ico │ ├── Resources │ └── app.png │ ├── Views │ ├── Dialog │ │ ├── AboutDialog.cs │ │ └── ExitDialog.cs │ └── Controls │ │ └── Cos │ │ └── MiniCosControl.cs │ └── app.manifest ├── Dependencies ├── Languages │ ├── RSBot.Quest │ │ └── ru_RU.rsl │ ├── langs.rsl │ ├── RSBot.Log │ │ ├── ar_AR.rsl │ │ ├── de_DE.rsl │ │ ├── en_US.rsl │ │ ├── tr_TR.rsl │ │ ├── vn_VN.rsl │ │ ├── es_ES.rsl │ │ └── ru_RU.rsl │ ├── RSBot.Map │ │ ├── ar_AR.rsl │ │ ├── en_US.rsl │ │ ├── tr_TR.rsl │ │ ├── vn_VN.rsl │ │ ├── de_DE.rsl │ │ ├── es_ES.rsl │ │ └── ru_RU.rsl │ ├── RSBot.CommandCenter │ │ └── ru_RU.rsl │ ├── RSBot.Chat │ │ ├── ar_AR.rsl │ │ ├── ru_RU.rsl │ │ ├── en_US.rsl │ │ ├── es_ES.rsl │ │ ├── tr_TR.rsl │ │ ├── de_DE.rsl │ │ └── vn_VN.rsl │ └── RSBot.Inventory │ │ ├── ar_AR.rsl │ │ ├── vn_VN.rsl │ │ ├── tr_TR.rsl │ │ ├── en_US.rsl │ │ └── de_DE.rsl └── Scripts │ └── Towns │ └── 23687.rbs ├── Library ├── RSBot.Core │ ├── Objects │ │ ├── Cos │ │ │ ├── JobTransport.cs │ │ │ ├── CosCommand.cs │ │ │ └── Transport.cs │ │ ├── BattleState.cs │ │ ├── LifeState.cs │ │ ├── MovementType.cs │ │ ├── ActionTarget.cs │ │ ├── ActionCommandType.cs │ │ ├── ActionState.cs │ │ ├── AmmunitionType.cs │ │ ├── Exchange │ │ │ └── ExchangeUpdateType.cs │ │ ├── JobType.cs │ │ ├── ScrollMode.cs │ │ ├── ScrollState.cs │ │ ├── MotionState.cs │ │ ├── Party │ │ │ ├── PartyPurpose.cs │ │ │ ├── PartyMemberUpdateType.cs │ │ │ └── PartyUpdateType.cs │ │ ├── PvpState.cs │ │ ├── ActionType.cs │ │ ├── PvpFlag.cs │ │ ├── Inventory │ │ │ ├── InventoryItemState.cs │ │ │ ├── Item │ │ │ │ ├── ItemUpdateFlag.cs │ │ │ │ └── InventoryItemCosInfo.cs │ │ │ └── Storage.cs │ │ ├── Quests │ │ │ ├── QuestUpdateType.cs │ │ │ ├── QuestObjective.cs │ │ │ ├── QuestType.cs │ │ │ ├── ActiveQuest.cs │ │ │ └── QuestStatus.cs │ │ ├── ActionStateFlag.cs │ │ ├── AutoInverstType.cs │ │ ├── StoreType.cs │ │ ├── PvpCapeType.cs │ │ ├── InteractMode.cs │ │ ├── TeleportType.cs │ │ ├── Job │ │ │ ├── TradeInfo.cs │ │ │ └── TransportStuckReason.cs │ │ ├── BodyState.cs │ │ ├── InviteRequestType.cs │ │ ├── ActionHitStateFlag.cs │ │ ├── FortSiegeAuthority.cs │ │ ├── Spawn │ │ │ ├── SpawnedNpcNpc.cs │ │ │ ├── SpawnedPlayerUnion.cs │ │ │ ├── SpawnedPlayerGuildMember.cs │ │ │ ├── SpawnPacketInfo.cs │ │ │ └── SpawnedNpc.cs │ │ ├── GuideTeleportType.cs │ │ ├── ChatType.cs │ │ ├── WeaponType.cs │ │ ├── MonsterRarity.cs │ │ ├── ItemPerk.cs │ │ ├── Teleportation.cs │ │ ├── DialogState.cs │ │ ├── Skill │ │ │ ├── SkillLearnErrorCode.cs │ │ │ └── SkillMasteryLearnErrorCode.cs │ │ └── TalkOption.cs │ ├── Network │ │ ├── PacketDestination.cs │ │ ├── Handler │ │ │ └── Agent │ │ │ │ ├── Entity │ │ │ │ ├── EntityUpdateStatusFlag.cs │ │ │ │ ├── EntitySingleSpawnResponse.cs │ │ │ │ ├── EntityGroupSpawnDataResponse.cs │ │ │ │ └── EntityGroupSpawnBeginResponse.cs │ │ │ │ ├── Alchemy │ │ │ │ ├── ElixirFuseRequestHandler.cs │ │ │ │ ├── StoneFuseRequestHandler.cs │ │ │ │ ├── ElixirAckResponseHandler.cs │ │ │ │ ├── MagicOptionGrantResponse.cs │ │ │ │ ├── StoneAckResponseHandler.cs │ │ │ │ └── MagicOptionUpdateResponse.cs │ │ │ │ ├── Exchange │ │ │ │ ├── ExchangeUpdateItemsResponse.cs │ │ │ │ ├── ExchangeCanceledResponse.cs │ │ │ │ ├── ExchangeApprovedResponse.cs │ │ │ │ ├── ExchangeStartedResponse.cs │ │ │ │ └── ExchangeStartResponse.cs │ │ │ │ ├── Cos │ │ │ │ └── AgentNotifyResponse.cs │ │ │ │ ├── Party │ │ │ │ ├── PartyUpdateResponseNew.cs │ │ │ │ └── PartyAutoRefuseResponse.cs │ │ │ │ ├── Inventory │ │ │ │ ├── InventoryStorageDataResponse.cs │ │ │ │ ├── InventoryGuildStorageDataResponse.cs │ │ │ │ ├── InventoryUpdateAmmoResponse.cs │ │ │ │ ├── InventoryStorageDataBeginResponse.cs │ │ │ │ ├── InventoryGuildStorageDataBeginResponse.cs │ │ │ │ └── StorageOpenRequest.cs │ │ │ │ ├── Character │ │ │ │ ├── CharacterDataResponse.cs │ │ │ │ ├── CharacterDataBeginResponse.cs │ │ │ │ ├── CharacterIncreaseStrResponse.cs │ │ │ │ └── CharacterIncreaseIntResponse.cs │ │ │ │ ├── Action │ │ │ │ └── ActionCommandResponse.cs │ │ │ │ ├── CharacterSelection │ │ │ │ └── CharacterSelectionJoinRequest.cs │ │ │ │ ├── Logout │ │ │ │ └── LogoutSuccessResponse.cs │ │ │ │ └── Job │ │ │ │ └── JobCosStuckResponse.cs │ │ ├── Protocol │ │ │ ├── PacketReader.cs │ │ │ ├── PacketWriter.cs │ │ │ └── HandshakeSecurityException.cs │ │ ├── PacketException.cs │ │ ├── IPacketHook.cs │ │ ├── IPacketHandler.cs │ │ ├── Hooks │ │ │ ├── Gateway │ │ │ │ └── GatewayLoginResponseHookOfficial.cs │ │ │ └── Agent │ │ │ │ └── Action │ │ │ │ ├── ActionSelectRequestHook.cs │ │ │ │ └── ActionTalkResponseHook.cs │ │ └── NetworkUtilities.cs │ ├── Client │ │ ├── ReferenceObjects │ │ │ ├── ObjectGender.cs │ │ │ ├── ObjectCountry.cs │ │ │ ├── AlchemyAction.cs │ │ │ ├── SkillParams.cs │ │ │ ├── ObjectDropType.cs │ │ │ ├── AlchemyType.cs │ │ │ ├── ObjectUseType.cs │ │ │ ├── RefSkillByItemOptLevel.cs │ │ │ ├── Division.cs │ │ │ ├── ObjectReqLevelType.cs │ │ │ ├── ObjectBorrowType.cs │ │ │ ├── RegionInfo │ │ │ │ ├── ModernRegionInfo.cs │ │ │ │ └── LegacyRegionInfo.cs │ │ │ ├── RefExtraAbilityByEquipItemOptLevel.cs │ │ │ ├── RefEventRewardItems.cs │ │ │ ├── ObjectRarity.cs │ │ │ ├── RefAbilityByItemOptLevel.cs │ │ │ ├── RefLevel.cs │ │ │ └── RefMagicOptAssign.cs │ │ └── IReference.cs │ ├── LogLevel.cs │ ├── Components │ │ ├── Command │ │ │ └── ICommandExecutor.cs │ │ └── Scripting │ │ │ └── IScriptCommand.cs │ ├── Event │ │ └── ISubscriber.cs │ ├── Extensions │ │ ├── UIntExtensions.cs │ │ ├── UShortExtensions.cs │ │ ├── CollectionExtensions.cs │ │ ├── BinaryWriterExtensions.cs │ │ ├── RandomExtensions.cs │ │ ├── Pk2ArchiveExtensions.cs │ │ └── StreamReaderExtensions.cs │ ├── GameClientType.cs │ └── Cryptography │ │ └── Sha256.cs ├── RSBot.Loader.Library │ ├── Detours │ │ ├── detours.lib │ │ └── include │ │ │ └── detver.h │ ├── RSBot.Loader.Library.vcxproj.filters │ └── PayloadHelper.h ├── RSBot.NavMeshApi │ ├── NavMeshRaycastResult.cs │ ├── Object │ │ ├── NavMeshEventZoneHandler.cs │ │ ├── NavMeshStructOption.cs │ │ └── NavMeshEventZoneFlag.cs │ ├── NavMeshType.cs │ ├── Terrain │ │ ├── NavMeshPlaneType.cs │ │ ├── NavMeshPlane.cs │ │ ├── NavMeshTile.cs │ │ └── NavMeshTileFlag.cs │ ├── NavMeshHitResult.cs │ ├── Edges │ │ ├── NavMeshEdgeDirection.cs │ │ ├── NavMeshLinkEdge.cs │ │ ├── NavMeshEdgeFlag.cs │ │ └── NavMeshEdgeInternal.cs │ ├── CardinalDirection.cs │ ├── Dungeon │ │ ├── DungeonColObj.cs │ │ ├── DungeonVoxel.cs │ │ ├── DungeonID.cs │ │ └── NavMeshInstBlock.cs │ ├── NavMeshRay.cs │ ├── NavMeshRaycastType.cs │ ├── NavMeshVertex.cs │ ├── ObjectIndexEntry.cs │ ├── Extensions │ │ └── Vector2Extensions.cs │ ├── RSBot.NavMeshApi.csproj │ ├── NavMeshRaycastHit.cs │ ├── Cells │ │ └── NavMeshCell.cs │ ├── NavMesh.cs │ └── Mathematics │ │ └── BoundingBoxF.cs └── RSBot.FileSystem │ ├── IO │ ├── IFileWriter.cs │ └── IFileReader.cs │ ├── RSBot.FileSystem.csproj │ ├── PackFile │ ├── Struct │ │ └── PackEntryType.cs │ ├── EnumerableExtensions.cs │ └── PackFile.cs │ ├── IFolder.cs │ ├── Local │ └── LocalFile.cs │ └── IFile.cs ├── Plugins ├── RSBot.Items │ ├── Resources │ │ └── loading.gif │ ├── Views │ │ └── View.cs │ ├── Bootstrap.cs │ └── RSBot.Items.csproj ├── RSBot.Statistics │ ├── Stats │ │ ├── Calculators │ │ │ ├── UpdateType.cs │ │ │ └── Static │ │ │ │ └── Deaths.cs │ │ └── StatisticsGroup.cs │ ├── Views │ │ └── View.cs │ └── RSBot.Statistics.csproj ├── RSBot.Chat │ ├── Views │ │ └── View.cs │ ├── Bundle │ │ └── Network │ │ │ └── ChatResponseHook.cs │ ├── Bootstrap.cs │ └── RSBot.Chat.csproj ├── RSBot.Log │ ├── Views │ │ └── View.cs │ ├── Bootstrap.cs │ └── RSBot.Log.csproj ├── RSBot.Map │ ├── Views │ │ ├── View.cs │ │ └── Dialog │ │ │ └── EntityPropertiesDialog.cs │ ├── Renderer │ │ ├── VectorExtensions.cs │ │ └── NavMeshExtenions.cs │ ├── Bootstrap.cs │ └── RSBot.Map.csproj ├── RSBot.Inventory │ ├── Views │ │ └── View.cs │ ├── Subscriber │ │ └── InventoryUpdateSubscriber.cs │ └── RSBot.Inventory.csproj ├── RSBot.Protection │ ├── Views │ │ └── View.cs │ ├── Components │ │ └── Town │ │ │ └── AbstractTownHandler.cs │ └── RSBot.Protection.csproj ├── RSBot.ServerInfo │ ├── Views │ │ ├── View.cs │ │ └── Main.cs │ └── RSBot.ServerInfo.csproj ├── RSBot.CommandCenter │ ├── Views │ │ └── View.cs │ ├── Components │ │ ├── Command │ │ │ ├── StopCommandExecutor.cs │ │ │ ├── StartCommandExecutor.cs │ │ │ ├── ShowBotCommandExecutor.cs │ │ │ └── StartHereCommandExecutor.cs │ │ └── PluginConfig.cs │ ├── RSBot.CommandCenter.csproj │ └── Network │ │ └── Handler │ │ └── EmoticonRequest.cs ├── RSBot.Quest │ ├── Views │ │ └── View.cs │ └── QuestPlugin.cs ├── RSBot.General │ ├── PacketHandler │ │ ├── GatewayLoginRequestHook.cs │ │ ├── GlobalGatewayLoginAccepted.cs │ │ ├── AgentLoginResponseRigid.cs │ │ ├── GatewayLoginResponseGlobal.cs │ │ ├── CaptchaDataResponse.cs │ │ ├── GlobalSecondaryPasswordResponse.cs │ │ ├── GatewayLoginRequestGlobal.cs │ │ ├── GatewayPendingUpdateResponse.cs │ │ ├── CharacterSelectionResponse.cs │ │ ├── AgentLoginRequestHookRigid.cs │ │ └── GatewayServerListRequestHook.cs │ └── Views │ │ └── View.cs ├── RSBot.Party │ ├── Views │ │ └── View.cs │ └── Bundle │ │ └── Commands │ │ └── CommandsConfig.cs └── RSBot.Skills │ ├── Components │ └── LearnMasteryHandler.cs │ ├── Views │ └── View.cs │ └── RSBot.Skills.csproj ├── Botbases ├── RSBot.Alchemy │ ├── Bundle │ │ ├── IAlchemyBundle.cs │ │ └── Magic │ │ │ └── MagicBundleConfig.cs │ └── Globals.cs ├── RSBot.Trade │ └── Views │ │ └── View.cs ├── RSBot.Lure │ ├── Views │ │ └── View.cs │ └── Bundle │ │ └── TargetBundle.cs └── RSBot.Training │ ├── Bundle │ ├── IBundle.cs │ ├── Protection │ │ ├── ManaRecovery.cs │ │ ├── HealthRecovery.cs │ │ └── BadStateRecovery.cs │ ├── Movement │ │ └── MovementConfig.cs │ └── Loot │ │ └── LootConfig.cs │ ├── Subscriber │ └── ConfigSubscriber.cs │ ├── Container.cs │ ├── RSBot.Training.csproj │ └── Views │ └── Dialogs │ └── CreateTrainingAreaDialog.cs ├── .editorconfig └── .github ├── ISSUE_TEMPLATE ├── feature_request.md └── bug_report.md ├── workflows ├── clean_nightlies.yml └── pull_request.yml └── FUNDING.yml /docs/.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120 3 | } 4 | -------------------------------------------------------------------------------- /docs/assets/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/app.ico -------------------------------------------------------------------------------- /docs/assets/06-Lure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/06-Lure.png -------------------------------------------------------------------------------- /docs/assets/15-Chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/15-Chat.png -------------------------------------------------------------------------------- /docs/assets/16-Log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/16-Log.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "SDUI"] 2 | path = SDUI 3 | url = https://github.com/SDClowen/SDUI.git 4 | -------------------------------------------------------------------------------- /Application/RSBot/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/Application/RSBot/app.ico -------------------------------------------------------------------------------- /docs/assets/02-General.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/02-General.png -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Quest/ru_RU.rsl: -------------------------------------------------------------------------------- 1 | RSBot.Quest.Main.checkShowCompleted="Показать выполненные" 2 | -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar.png -------------------------------------------------------------------------------- /docs/assets/04-Training.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/04-Training.png -------------------------------------------------------------------------------- /docs/assets/09-Protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/09-Protection.png -------------------------------------------------------------------------------- /docs/assets/11-Inventory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/11-Inventory.png -------------------------------------------------------------------------------- /docs/assets/14-Statistics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/14-Statistics.png -------------------------------------------------------------------------------- /docs/assets/07-Trade_Route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/07-Trade_Route.png -------------------------------------------------------------------------------- /docs/assets/10-Party_Party.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/10-Party_Party.png -------------------------------------------------------------------------------- /docs/assets/13-Map_Minimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/13-Map_Minimap.png -------------------------------------------------------------------------------- /docs/assets/02-General_IP-Bind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/02-General_IP-Bind.png -------------------------------------------------------------------------------- /docs/assets/05-Alchemy_Blues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/05-Alchemy_Blues.png -------------------------------------------------------------------------------- /docs/assets/05-Alchemy_Enhance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/05-Alchemy_Enhance.png -------------------------------------------------------------------------------- /docs/assets/05-Alchemy_Stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/05-Alchemy_Stats.png -------------------------------------------------------------------------------- /docs/assets/07-Trade_Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/07-Trade_Settings.png -------------------------------------------------------------------------------- /docs/assets/12-Items_Shopping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/12-Items_Shopping.png -------------------------------------------------------------------------------- /Application/RSBot/Resources/app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/Application/RSBot/Resources/app.png -------------------------------------------------------------------------------- /docs/assets/10-Party_Auto-Party.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/10-Party_Auto-Party.png -------------------------------------------------------------------------------- /docs/assets/12-Items_Item-Filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/12-Items_Item-Filter.png -------------------------------------------------------------------------------- /docs/assets/07-Trade_Job-Overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/07-Trade_Job-Overview.png -------------------------------------------------------------------------------- /docs/assets/10-Party_Party-Buffing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/10-Party_Party-Buffing.png -------------------------------------------------------------------------------- /docs/assets/10-Party_Party-Matching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/10-Party_Party-Matching.png -------------------------------------------------------------------------------- /docs/assets/13-Map_NavMesh-Viewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/13-Map_NavMesh-Viewer.png -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Cos/JobTransport.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Cos; 2 | 3 | public class JobTransport : Cos { } 4 | -------------------------------------------------------------------------------- /Plugins/RSBot.Items/Resources/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/Plugins/RSBot.Items/Resources/loading.gif -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_View_Sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_View_Sidebar.png -------------------------------------------------------------------------------- /docs/assets/12-Items_Pickup-Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/12-Items_Pickup-Settings.png -------------------------------------------------------------------------------- /docs/assets/02-General_Account-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/02-General_Account-manager.png -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_Plugins_Quests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_Plugins_Quests.png -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_File_Proxy_Config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_File_Proxy_Config.png -------------------------------------------------------------------------------- /Library/RSBot.Loader.Library/Detours/detours.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/Library/RSBot.Loader.Library/Detours/detours.lib -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_File_Select-Profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_File_Select-Profile.png -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_Tools_Script-Recorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_Tools_Script-Recorder.png -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_Plugins_Command-Center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_Plugins_Command-Center.png -------------------------------------------------------------------------------- /Dependencies/Languages/langs.rsl: -------------------------------------------------------------------------------- 1 | en_US:English 2 | de_DE:Deutsch 3 | tr_TR:Türkçe 4 | es_ES:Español 5 | vn_VN:Tiếng Việt 6 | ru_RU:Русский 7 | ar_AR:العربية -------------------------------------------------------------------------------- /docs/assets/03-Menu-bar_Plugins_Server-Information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/03-Menu-bar_Plugins_Server-Information.png -------------------------------------------------------------------------------- /docs/assets/08-Skills_Active-Buffs__Advanced-Setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/08-Skills_Active-Buffs__Advanced-Setup.png -------------------------------------------------------------------------------- /docs/assets/08-Skills_Player-Skills__General-Setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SDClowen/RSBot/HEAD/docs/assets/08-Skills_Player-Skills__General-Setup.png -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/BattleState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum BattleState 4 | { 5 | InPeace = 0, 6 | InBattle = 1, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/LifeState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum LifeState 4 | { 5 | Alive = 0x01, 6 | Dead = 0x02, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/MovementType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum MovementType 4 | { 5 | Walking = 0, 6 | Running = 1, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/PacketDestination.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network; 2 | 3 | public enum PacketDestination 4 | { 5 | Server = 1, 6 | Client = 2, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionTarget.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ActionTarget 4 | { 5 | None = 0, 6 | Entity = 1, 7 | Area = 2, 8 | } 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionCommandType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ActionCommandType : byte 4 | { 5 | Execute = 1, 6 | Cancel = 2, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ActionState : byte 4 | { 5 | Begin = 1, 6 | End = 2, 7 | Error = 3, 8 | } 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/AmmunitionType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum AmmunitionType 4 | { 5 | None = 0, 6 | Arrow = 1, 7 | Bolt = 2, 8 | } 9 | -------------------------------------------------------------------------------- /Plugins/RSBot.Statistics/Stats/Calculators/UpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Statistics.Stats.Calculators; 2 | 3 | internal enum UpdateType 4 | { 5 | Live, 6 | Static, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Exchange/ExchangeUpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ExchangeUpdateType : byte 4 | { 5 | Item = 1, 6 | Gold = 2, 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshRaycastResult.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | public enum NavMeshRaycastResult 4 | { 5 | Reached, 6 | Transition, 7 | Collision, 8 | } 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/JobType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum JobType 4 | { 5 | None = 0, 6 | Trade = 1, 7 | Thief = 2, 8 | Hunter = 3, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ScrollMode.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ScrollMode 4 | { 5 | None = 0, 6 | ReturnScroll = 1, 7 | BanditReturnScroll = 2, 8 | } 9 | -------------------------------------------------------------------------------- /docs/.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "plugins": ["stylelint-order"], 4 | "rules": { 5 | "order/properties-alphabetical-order": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Object/NavMeshEventZoneHandler.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Object; 2 | 3 | public delegate bool NavMeshEventZoneHandler(NavMeshInst instance, NavMeshEventZone eventZone); 4 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ScrollState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ScrollState 4 | { 5 | Cancel = 0, 6 | NormalScroll = 1, 7 | ThiefScroll = 2, //able to move 8 | } 9 | -------------------------------------------------------------------------------- /Plugins/RSBot.Statistics/Stats/StatisticsGroup.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Statistics.Stats; 2 | 3 | internal enum StatisticsGroup 4 | { 5 | Player, 6 | Loot, 7 | Enemy, 8 | Bot, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/MotionState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum MotionState 4 | { 5 | None = 0, 6 | Walking = 2, 7 | Running = 3, 8 | Sitting = 4, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Party/PartyPurpose.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Party; 2 | 3 | public enum PartyPurpose : byte 4 | { 5 | Hunting, 6 | Quest, 7 | Trade, 8 | Thief, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/PvpState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum PvpState 4 | { 5 | None = 0, 6 | Purple = 1, 7 | Red = 2, 8 | Unknown = 3, // newer clients 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectGender.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum ObjectGender : byte 4 | { 5 | Female = 0, 6 | Male = 1, 7 | Neutral = 2, 8 | } 9 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | public enum NavMeshType : byte 4 | { 5 | None = 0, 6 | 7 | Terrain = 1, 8 | Object = 2, 9 | Dungeon = 3, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Terrain/NavMeshPlaneType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Terrain; 2 | 3 | [Flags] 4 | public enum NavMeshPlaneType : byte 5 | { 6 | Solid = 0, 7 | Water = 1, 8 | Ice = 2, 9 | } 10 | -------------------------------------------------------------------------------- /Botbases/RSBot.Alchemy/Bundle/IAlchemyBundle.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Alchemy.Bundle; 2 | 3 | internal interface IAlchemyBundle 4 | { 5 | void Start(); 6 | 7 | void Stop(); 8 | 9 | void Run(T config); 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ActionType : byte 4 | { 5 | Attack = 1, 6 | Pickup = 2, 7 | Trace = 3, 8 | Cast = 4, 9 | Dispel = 5, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/PvpFlag.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum PvpFlag 4 | { 5 | None = 0, 6 | Red = 1, 7 | Gray = 2, 8 | Blue = 3, 9 | White = 4, 10 | Gold = 5, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Inventory/InventoryItemState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum InventoryItemState 4 | { 5 | Inactive = 1, 6 | Summoned = 2, 7 | Active = 3, 8 | Dead = 4, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Quests/QuestUpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Quests; 2 | 3 | public enum QuestUpdateType : byte 4 | { 5 | Add = 1, 6 | Update = 2, 7 | Remove = 3, 8 | Abandon = 4, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionStateFlag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Objects; 4 | 5 | [Flags] 6 | public enum ActionStateFlag : byte 7 | { 8 | None = 0, 9 | Attack = 1, 10 | Teleport = 8, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/AutoInverstType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Objects; 4 | 5 | [Flags] 6 | public enum AutoInverstType : byte 7 | { 8 | None = 0, 9 | Beginner = 1, 10 | Helpful = 2, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/StoreType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum StoreType 4 | { 5 | PotionTrader, 6 | WeaponTrader, 7 | ProtectorTrader, 8 | CosTrader, 9 | AccessoryTrader, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshHitResult.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | [Flags] 4 | public enum NavMeshHitResult 5 | { 6 | None = 0, 7 | Terrain = 1, 8 | Object = 2, 9 | Any = Terrain | Object, 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | trim_trailing_whitespace = false 5 | insert_final_newline = true 6 | 7 | [*.cs] 8 | indent_style = space 9 | indent_size = 4 10 | max_line_length = 120 11 | 12 | csharpier_print_width = 120 13 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/PvpCapeType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Item; 2 | 3 | public enum PvpCapeType 4 | { 5 | None = 0, 6 | Red = 1, 7 | Gray = 2, 8 | Blue = 3, 9 | White = 4, 10 | Gold = 5, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Object/NavMeshStructOption.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Object; 2 | 3 | [Flags] 4 | public enum NavMeshStructOption : int 5 | { 6 | None = 0, 7 | Edge = 1, 8 | Cell = 2, 9 | Event = 4, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectCountry.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum ObjectCountry : byte 4 | { 5 | Chinese = 0, 6 | Europe = 1, 7 | Islam = 2, 8 | Unassigned = 3, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/InteractMode.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum InteractMode 4 | { 5 | None = 0, 6 | P2P = 2, 7 | P2N_TALK2 = 3, // newer clients 8 | P2N_TALK = 4, 9 | OPNMKT_DEAL = 6, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Edges/NavMeshEdgeDirection.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Edges; 2 | 3 | public enum NavMeshCellSide : sbyte 4 | { 5 | Invalid = -1, 6 | North = 0, 7 | East = 1, 8 | South = 2, 9 | West = 3, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Cos/CosCommand.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Cos; 2 | 3 | public enum CosCommand : byte 4 | { 5 | Move = 1, 6 | Attack = 2, 7 | Pickup = 8, 8 | Follow = 9, 9 | Charm = 11, 10 | Cast = 13, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/TeleportType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum TeleportType : byte 4 | { 5 | Return = 1, 6 | Destination = 2, 7 | RUNTIME_PORTAL = 3, //CREATE_RUNTIME_PORTAL (Trigger) 8 | Guide = 5, 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/CardinalDirection.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | [Flags] 4 | public enum CardinalDirection 5 | { 6 | Invalid = 0, 7 | North = 1 << 0, 8 | East = 1 << 1, 9 | South = 1 << 2, 10 | West = 1 << 3, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Object/NavMeshEventZoneFlag.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Object; 2 | 3 | [Flags] 4 | public enum NavMeshEventZoneFlag 5 | { 6 | None = 0, 7 | Bit0 = 1 << 0, 8 | Bit1 = 1 << 1, 9 | 10 | All = Bit0 | Bit1, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Quests/QuestObjective.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Quests; 2 | 3 | public struct QuestObjective 4 | { 5 | public byte Id; 6 | public bool InProgress; 7 | public string NameStrId; 8 | public uint[] Tasks; 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/IO/IFileWriter.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.FileSystem.IO; 2 | 3 | public interface IFileWriter 4 | { 5 | public void Write(byte[] data); 6 | 7 | public void Write(byte[] data, int position); 8 | 9 | public Stream GetStream(); 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Dungeon/DungeonColObj.cs: -------------------------------------------------------------------------------- 1 | using RSBot.NavMeshApi.Mathematics; 2 | 3 | namespace RSBot.NavMeshApi.Dungeon; 4 | 5 | public class DungeonColObj 6 | { 7 | public CircleF Circle { get; set; } 8 | public string Name { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/IReference.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client; 2 | 3 | internal interface IReference 4 | { 5 | bool Load(ReferenceParser parser); 6 | } 7 | 8 | internal interface IReference : IReference 9 | { 10 | TKey PrimaryKey { get; } 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/LogLevel.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core; 2 | 3 | /// 4 | /// Enumeration of the loglevel used in Log 5 | /// 6 | public enum LogLevel 7 | { 8 | Notify, 9 | Debug, 10 | Warning, 11 | Error, 12 | Fatal, 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshRay.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | public struct NavMeshRay 4 | { 5 | public NavMeshTransform Source { get; set; } 6 | public NavMeshTransform Destination { get; set; } 7 | public NavMeshRaycastType Type { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshRaycastType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | public enum NavMeshRaycastType 4 | { 5 | Move, // this raycast result is used for movement 6 | Attack, // this raycast result is used for attacks and can pass through specific edges 7 | } 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/AlchemyAction.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum AlchemyAction : byte 4 | { 5 | Cancel = 1, 6 | Fuse = 2, 7 | SocketCreate = 3, //for Socket 8 | SocketRemove = 4, //for Socket 9 | } 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Party/PartyMemberUpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Party; 2 | 3 | internal enum PartyMemberUpdateType 4 | { 5 | NameRefObjID = 1, 6 | Level = 2, 7 | HPMP = 4, 8 | Mastery = 8, 9 | Position = 32, 10 | Guild = 64, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Party/PartyUpdateType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Party; 2 | 3 | internal enum PartyUpdateType 4 | { 5 | Dismissed = 1, 6 | Joined = 2, 7 | Leave = 3, 8 | Member = 6, 9 | Leader = 7, // 0x09 ?? 10 | LeaderChange = 9, 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshVertex.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | 3 | namespace RSBot.NavMeshApi; 4 | 5 | public class NavMeshVertex 6 | { 7 | public int Index { get; set; } 8 | public Vector3 Position { get; set; } 9 | public Vector2 Normal { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/SkillParams.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum PrimarySkillParam : int 4 | { 5 | Meele = 0, 6 | Ranged = 1, 7 | Reserved = 2, //Unknown / not used 8 | Buff = 3, 9 | Passive = 4, 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Job/TradeInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace RSBot.Core.Objects.Job; 4 | 5 | public class TradeInfo 6 | { 7 | public Dictionary Prices { get; set; } = null; 8 | 9 | public byte Scale { get; internal set; } = 0; 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Components/Command/ICommandExecutor.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Components.Command; 2 | 3 | public interface ICommandExecutor 4 | { 5 | public string CommandName { get; } 6 | 7 | public string CommandDescription { get; } 8 | 9 | public bool Execute(bool silent = false); 10 | } 11 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/BodyState.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum BodyState 4 | { 5 | None = 0, 6 | Hwan = 1, 7 | Untouchable = 2, 8 | GameMasterInvincible = 3, 9 | GameMasterInvisible = 4, 10 | Berzerk = 5, 11 | Stealth = 6, 12 | Invisible = 7, 13 | } 14 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/ar_AR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="عادي" 3 | RSBot.Log.Main.Panel.checkError="خطأ" 4 | RSBot.Log.Main.Panel.checkWarning="تحذير" 5 | RSBot.Log.Main.Panel.checkDebug="تصحيح" 6 | RSBot.Log.Main.Panel.btnReset="مسح الكل" 7 | RSBot.Log.Main.Panel.checkEnabled="تمكين" 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Job/TransportStuckReason.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Job; 2 | 3 | public enum TransportStuckReason : byte 4 | { 5 | //UIIT_MSG_COSERR_TOO_FAR_FROM_TRADECART 6 | TransportDistance = 1, 7 | 8 | //UIIT_MSG_QUEST_ERR_TOO_FAR_FROM_MONSTER 9 | CapturedDistance = 2, 10 | } 11 | -------------------------------------------------------------------------------- /Plugins/RSBot.Chat/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Chat.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Plugins/RSBot.Items/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Items.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Plugins/RSBot.Log/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Log.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Map.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/de_DE.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="Normal" 3 | RSBot.Log.Main.Panel.checkError="Error" 4 | RSBot.Log.Main.Panel.checkWarning="Warning" 5 | RSBot.Log.Main.Panel.checkDebug="Debug" 6 | RSBot.Log.Main.Panel.btnReset="Clear" 7 | RSBot.Log.Main.Panel.checkEnabled="Enabled" 8 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/en_US.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="Normal" 3 | RSBot.Log.Main.Panel.checkError="Error" 4 | RSBot.Log.Main.Panel.checkWarning="Warning" 5 | RSBot.Log.Main.Panel.checkDebug="Debug" 6 | RSBot.Log.Main.Panel.btnReset="Clear" 7 | RSBot.Log.Main.Panel.checkEnabled="Enabled" 8 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/tr_TR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="Normal" 3 | RSBot.Log.Main.Panel.checkError="Error" 4 | RSBot.Log.Main.Panel.checkWarning="Warning" 5 | RSBot.Log.Main.Panel.checkDebug="Debug" 6 | RSBot.Log.Main.Panel.btnReset="Clear" 7 | RSBot.Log.Main.Panel.checkEnabled="Enabled" 8 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/vn_VN.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="Normal" 3 | RSBot.Log.Main.Panel.checkError="Error" 4 | RSBot.Log.Main.Panel.checkWarning="Warning" 5 | RSBot.Log.Main.Panel.checkDebug="Debug" 6 | RSBot.Log.Main.Panel.btnReset="Clear" 7 | RSBot.Log.Main.Panel.checkEnabled="Enabled" 8 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/es_ES.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Log" 2 | RSBot.Log.Main.Panel.checkNormal="Normal" 3 | RSBot.Log.Main.Panel.checkError="Error" 4 | RSBot.Log.Main.Panel.checkWarning="Advertencia" 5 | RSBot.Log.Main.Panel.checkDebug="Debug" 6 | RSBot.Log.Main.Panel.btnReset="Limpiar" 7 | RSBot.Log.Main.Panel.checkEnabled="Activado" 8 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Log/ru_RU.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Журнал" 2 | RSBot.Log.Main.Panel.checkNormal="Общий" 3 | RSBot.Log.Main.Panel.checkError="Ошибка" 4 | RSBot.Log.Main.Panel.checkWarning="Варнинг" 5 | RSBot.Log.Main.Panel.checkDebug="Дебаг" 6 | RSBot.Log.Main.Panel.btnReset="Очистить" 7 | RSBot.Log.Main.Panel.checkEnabled="Включить" 8 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/InviteRequestType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum InviteRequestType : byte 4 | { 5 | Party1 = 2, 6 | Party2 = 3, 7 | Resurrection1 = 4, 8 | GuildInvite = 5, 9 | UnionInvite = 6, 10 | Resurrection2 = 8, 11 | Accademy = 9, 12 | GuildWar = 10, 13 | } 14 | -------------------------------------------------------------------------------- /Plugins/RSBot.Inventory/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Inventory.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Plugins/RSBot.Protection/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Protection.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Plugins/RSBot.Statistics/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Statistics.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | } 13 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Entity/EntityUpdateStatusFlag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Entity; 4 | 5 | [Flags] 6 | internal enum EntityUpdateStatusFlag : byte 7 | { 8 | None = 0, 9 | HP = 1, 10 | MP = 2, 11 | HPMP = HP | MP, 12 | BadEffect = 4, 13 | Fellow = 13, 14 | } 15 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ActionHitStateFlag.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ActionHitStateFlag : byte 4 | { 5 | Damage = 1, 6 | Block = 2, 7 | KnockDown = 4, 8 | KnockBack = 5, 9 | Abort = 8, 10 | Dead = 128, 11 | KnockDownDead = KnockDown | Dead, 12 | KnockBackDead = KnockBack | Dead, 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/FortSiegeAuthority.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum FortSiegeAuthority 4 | { 5 | None = 0, 6 | Commander = 1, 7 | DeputyCommander = 2, 8 | FortressWarAdministrator = 4, 9 | ProductionAdministrator = 8, 10 | TrainingAdministrator = 16, 11 | MilitaryEngineer = 32, 12 | } 13 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/ObjectIndexEntry.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi; 2 | 3 | public class ObjectIndexEntry 4 | { 5 | public int Flag { get; set; } 6 | public string Path { get; set; } 7 | 8 | public ObjectIndexEntry(int flag, string path) 9 | { 10 | this.Flag = flag; 11 | this.Path = path; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectDropType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | [Flags] 6 | public enum ObjectDropType : byte 7 | { 8 | No = 0, //000000 0 0 -> Can't drop 9 | Death = 1, //000000 0 1 -> Can drop upon death 10 | Player = 2, //000000 1 0 -> Can drop manually 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Terrain/NavMeshPlane.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Terrain; 2 | 3 | public struct NavMeshPlane 4 | { 5 | // 20.0 * 16 = 320.0 6 | 7 | public const float Width = 320.0f; 8 | public const float Length = 320.0f; 9 | 10 | public NavMeshPlaneType Type { get; set; } 11 | public float Height { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Spawn/SpawnedNpcNpc.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Spawn; 2 | 3 | public sealed class SpawnedNpcNpc : SpawnedNpc 4 | { 5 | /// 6 | /// 7 | /// 8 | /// The ref obj id 9 | public SpawnedNpcNpc(uint objId) 10 | : base(objId) { } 11 | } 12 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/ar_AR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Map" 2 | RSBot.Map.Main.label3="لا تعمل هذه الوظيفة أثناء نشاط البوت. 3 | إذا كنت تريد أن يهاجم الروبوت تلقائيا أثناء النشاط ، 4 | تعيين التجنب." 5 | RSBot.Map.Main.checkBoxAutoSelectUniques="تلقائيا اختيار اليونيك" 6 | RSBot.Map.Main.label4="إظهار" 7 | RSBot.Map.Main.lblRegion="ليس في اللعبة" 8 | NoName="" 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/GuideTeleportType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum GuideTeleportType : byte 4 | { 5 | /// 6 | /// Teleport to last recall point 7 | /// 8 | Recall = 2, 9 | 10 | /// 11 | /// Teleport to place where you died. 12 | /// 13 | Death = 3, 14 | } 15 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/IO/IFileReader.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.FileSystem.IO; 2 | 3 | public interface IFileReader : IDisposable 4 | { 5 | public byte[] ReadAllBytes(); 6 | public byte[] Read(int offset, int length); 7 | public string ReadAllText(); 8 | public string[] ReadAllLines(); 9 | public Stream GetStream(); 10 | public void Close(); 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Event/ISubscriber.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace RSBot.Core.Event; 5 | 6 | public interface ISubscriber 7 | { 8 | /// 9 | /// Gets the subscribed events. 10 | /// 11 | /// 12 | IEnumerable<(string name, Delegate handler)> GetSubscribedEvents(); 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/UIntExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Extensions; 2 | 3 | public static class UIntExtensions 4 | { 5 | public static ushort LoWord(this uint value) 6 | { 7 | return (ushort)(value & 0xFFFF); 8 | } 9 | 10 | public static ushort HiWord(this uint value) 11 | { 12 | return (ushort)(value >> 16); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Inventory/Item/ItemUpdateFlag.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Objects.Item; 4 | 5 | [Flags] 6 | public enum ItemUpdateFlag : byte 7 | { 8 | RefObjID = 1, 9 | OptLevel = 2, 10 | Unknown = 3, // ??? 11 | Variance = 4, 12 | Quanity = 8, 13 | Durability = 16, 14 | MagParams = 32, 15 | State = 64, 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/RSBot.FileSystem.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | enable 4 | enable 5 | net8.0 6 | RSBot.FileSystem 7 | x86 8 | 9 | 10 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/en_US.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Map" 2 | RSBot.Map.Main.label3="This function does not work while the bot is active. 3 | If you want the bot to auto attack while active, 4 | set Avoidance." 5 | RSBot.Map.Main.checkBoxAutoSelectUniques="Automatically select uniques" 6 | RSBot.Map.Main.label4="Show:" 7 | RSBot.Map.Main.lblRegion="Not in game" 8 | NoName="" 9 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/tr_TR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Harita" 2 | RSBot.Map.Main.label3="Bot aktifken bu fonksiyon çalışmaz. Bot aktifken 3 | otomatik saldırmasını istiyorsanız, canavar 4 | tercihlerinden ayarlayınız." 5 | RSBot.Map.Main.checkBoxAutoSelectUniques="Otomatik Unique Seçme" 6 | RSBot.Map.Main.label4="Göster:" 7 | RSBot.Map.Main.lblRegion="Oyunda değil" 8 | NoName="" 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/UShortExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Extensions; 2 | 3 | public static class UShortExtensions 4 | { 5 | public static byte ToLoByte(this ushort value) 6 | { 7 | return (byte)(value & 0xFF); 8 | } 9 | 10 | public static byte ToHiByte(this ushort value) 11 | { 12 | return (byte)(value >> 8); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/Renderer/VectorExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using System.Numerics; 3 | 4 | namespace RSBot.Map.Renderer; 5 | 6 | public static class VectorExtensions 7 | { 8 | public static PointF ToPointF(this Vector2 value) => new PointF(value.X, value.Y); 9 | 10 | public static PointF ToPointF(this Vector3 value) => new PointF(value.X, value.Z); 11 | } 12 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/vn_VN.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Bản Đồ" 2 | RSBot.Map.Main.label3="Chức năng này không hoạt động trong khi bot đang chạy. 3 | Nếu bạn muốn bot tự động tấn công khi đang hoạt động, 4 | đặt Tránh." 5 | RSBot.Map.Main.checkBoxAutoSelectUniques="Tự động lựa chọn" 6 | RSBot.Map.Main.label4="Hiện:" 7 | RSBot.Map.Main.lblRegion="Không trong trò chơi" 8 | NoName="" 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Quests/QuestType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Objects.Quests; 4 | 5 | [Flags] 6 | public enum QuestType : byte 7 | { 8 | UnkBit0 = 0x1, 9 | UnkBit1 = 0x2, //NPC.UniqueID in MARK 10 | Time = 0x4, 11 | Status = 0x8, 12 | Objective = 0x10, 13 | UnkBit5 = 0x20, 14 | RefObjects = 0x40, 15 | UnkBit7 = 0x80, //MARK 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/AlchemyType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum AlchemyType : byte 4 | { 5 | Disjoin = 1, 6 | Manufacture = 2, 7 | Elixir = 3, 8 | MagicStone = 4, 9 | AttributeStone = 5, 10 | AdvancedElixirOrSocketCreate = 8, 11 | SocketInsert = 9, 12 | SocketRemove = 10, 13 | EnhancerElixir = 19, 14 | } 15 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ChatType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum ChatType 4 | { 5 | All = 1, 6 | Private = 2, 7 | AllGM = 3, 8 | Party = 4, 9 | Guild = 5, 10 | Global = 6, 11 | Notice = 7, 12 | Stall = 9, 13 | Union = 11, 14 | Npc = 13, //taken from Cerberus (able to talk SN_TALK_QNO_EU_EASTEU_21_14 stuff) 15 | Academy = 16, 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Terrain/NavMeshTile.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Terrain; 2 | 3 | public struct NavMeshTile 4 | { 5 | public const float Width = 20.0f; 6 | public const float Length = 20.0f; 7 | 8 | public int CellIndex; 9 | public NavMeshTileFlag Flag; 10 | public short TextureID; 11 | 12 | public bool IsBlocked => (Flag & NavMeshTileFlag.Blocked) != 0; 13 | } 14 | -------------------------------------------------------------------------------- /Plugins/RSBot.ServerInfo/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.ServerInfo.Views; 2 | 3 | internal static class View 4 | { 5 | private static Main _main = new(); 6 | 7 | public static Main Main 8 | { 9 | get 10 | { 11 | if (_main == null || _main.IsDisposed) 12 | _main = new Main(); 13 | 14 | return _main; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectUseType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | [Flags] 6 | public enum ObjectUseType : byte 7 | { 8 | //Bit 0: Yes 9 | //Bit 1-6 10 | //Bit 7: AskFlag 11 | 12 | No = 0, 13 | Yes = 1, 14 | Unknown = 126, //in CanUse:255 (ITEM_MALL_DUNGEON_FREE_TICKET_FORGOTTEN_WORLD) 15 | Ask = 128, 16 | } 17 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.CommandCenter.Views; 2 | 3 | internal static class View 4 | { 5 | private static Main _main = new(); 6 | 7 | public static Main Main 8 | { 9 | get 10 | { 11 | if (_main == null || _main.IsDisposed) 12 | _main = new Main(); 13 | 14 | return _main; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Library/RSBot.Core/GameClientType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core; 2 | 3 | public enum GameClientType : byte 4 | { 5 | Japanese_Old, 6 | Thailand, 7 | Vietnam, 8 | Taiwan_Old, 9 | Vietnam193, 10 | Vietnam274, 11 | Chinese_Old, 12 | Chinese, 13 | Global, 14 | Turkey, 15 | VTC_Game, 16 | Taiwan, 17 | Korean, 18 | Japanese, 19 | RuSro, 20 | Rigid, 21 | } 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Protocol/PacketReader.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace RSBot.Core.Network.Protocol; 4 | 5 | internal class PacketReader : BinaryReader 6 | { 7 | public PacketReader(byte[] input) 8 | : base(new MemoryStream(input, false)) { } 9 | 10 | public PacketReader(byte[] input, int index, int count) 11 | : base(new MemoryStream(input, index, count, false)) { } 12 | } 13 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/de_DE.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Karte" 2 | RSBot.Map.Main.label3="Diese Funktion funktioniert nicht, wenn der Bot aktiv ist. 3 | Wenn du willst, dass der Bot automatisch angreift, während er aktiv ist, 4 | Vermeiden einstellen." 5 | RSBot.Map.Main.checkBoxAutoSelectUniques="Automatisch Uniques auswählen" 6 | RSBot.Map.Main.label4="Anzeigen:" 7 | RSBot.Map.Main.lblRegion="Nicht im Spiel" 8 | NoName="" 9 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefSkillByItemOptLevel.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public class RefSkillByItemOptLevel : IReference 4 | { 5 | public int Link; 6 | public uint SkillId; 7 | 8 | public bool Load(ReferenceParser parser) 9 | { 10 | parser.TryParse(0, out Link); 11 | parser.TryParse(1, out SkillId); 12 | 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Botbases/RSBot.Trade/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Trade.Views; 2 | 3 | internal class View 4 | { 5 | private static Main _mainInstance; 6 | 7 | public static Main Main 8 | { 9 | get 10 | { 11 | if (_mainInstance == null || _mainInstance.IsDisposed || _mainInstance.Disposing) 12 | _mainInstance = new Main(); 13 | 14 | return _mainInstance; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Botbases/RSBot.Lure/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Lure.Views; 2 | 3 | internal static class View 4 | { 5 | private static Main _mainInstance; 6 | 7 | public static Main Main 8 | { 9 | get 10 | { 11 | if (_mainInstance == null || _mainInstance.IsDisposed || _mainInstance.Disposing) 12 | _mainInstance = new Main(); 13 | 14 | return _mainInstance; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/ElixirFuseRequestHandler.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 2 | 3 | internal class ElixirFuseRequestHandler : IPacketHandler 4 | { 5 | public ushort Opcode => 0x7150; 6 | 7 | public PacketDestination Destination => PacketDestination.Server; 8 | 9 | public void Invoke(Packet packet) 10 | { 11 | GenericAlchemyRequestHandler.Invoke(packet); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/StoneFuseRequestHandler.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 2 | 3 | internal class StoneFuseRequestHandler : IPacketHandler 4 | { 5 | public ushort Opcode => 0x7151; 6 | 7 | public PacketDestination Destination => PacketDestination.Server; 8 | 9 | public void Invoke(Packet packet) 10 | { 11 | GenericAlchemyRequestHandler.Invoke(packet); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Protocol/PacketWriter.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | 3 | namespace RSBot.Core.Network.Protocol; 4 | 5 | internal class PacketWriter : BinaryWriter 6 | { 7 | private readonly MemoryStream m_ms; 8 | 9 | public PacketWriter() 10 | { 11 | m_ms = new MemoryStream(); 12 | OutStream = m_ms; 13 | } 14 | 15 | public byte[] GetBytes() 16 | { 17 | return m_ms.ToArray(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/IBundle.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Training.Bundle; 2 | 3 | internal interface IBundle 4 | { 5 | /// 6 | /// Invokes this instance. 7 | /// 8 | void Invoke(); 9 | 10 | /// 11 | /// Refreshes this instance. 12 | /// 13 | void Refresh(); 14 | 15 | /// 16 | /// Stops this instance. 17 | /// 18 | void Stop(); 19 | } 20 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Terrain/NavMeshTileFlag.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Terrain; 2 | 3 | [Flags] 4 | public enum NavMeshTileFlag : short 5 | { 6 | None = 0, 7 | Blocked = 1, 8 | Blue = 2, // Seems to be painted under bridges 9 | //Flag4 = 4, // 0 samples 10 | //Flag8 = 8, 11 | 12 | // This could actually be the 1 bit of a seperate byte flag 13 | //Flag256 = 256, 14 | //Flag512 = 512, 15 | //Flag1024 = 1024, 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/PackFile/Struct/PackEntryType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.FileSystem.PackFile.Struct; 2 | 3 | public enum PackEntryType : byte 4 | { 5 | /// 6 | /// For NOP entries. 7 | /// 8 | Nop = 0, 9 | 10 | /// 11 | /// For folder entries. 12 | /// 13 | Folder = 1, 14 | 15 | /// 16 | /// For file entries. 17 | /// 18 | File = 2, 19 | } 20 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/Views/Dialog/EntityPropertiesDialog.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Objects.Spawn; 2 | using SDUI.Controls; 3 | 4 | namespace RSBot.Map.Views.Dialog; 5 | 6 | public partial class EntityDetailsDialog : UIWindowBase 7 | { 8 | public EntityDetailsDialog(SpawnedEntity entity) 9 | { 10 | InitializeComponent(); 11 | 12 | propEntity.SelectedObject = entity; 13 | } 14 | } 15 | 16 | public class EntityDebugInformation : SpawnedEntity { } 17 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/CollectionExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace RSBot.Core.Extensions; 6 | 7 | public static class CollectionExtensions 8 | { 9 | public static void RemoveAll(this IDictionary dict, Func predicate) 10 | { 11 | foreach (var key in dict.Keys.ToArray().Where(key => predicate(key, dict[key]))) 12 | dict.Remove(key); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/WeaponType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum WeaponType 4 | { 5 | None = 1, 6 | Sword = 2, 7 | Blade = 3, 8 | Spear = 4, 9 | Glave = 5, 10 | Bow = 6, 11 | OneHandSword = 7, 12 | TwoHandSword = 8, 13 | Axe = 9, 14 | DarkStaff = 10, 15 | Staff = 11, 16 | Crossbow = 12, 17 | Dagger = 13, 18 | Harp = 14, 19 | ClericRod = 15, 20 | FortressHammer = 16, 21 | Any = 255, 22 | } 23 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/es_ES.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Mapa" 2 | RSBot.Map.Main.label3="Esta opcion no funciona mientras el bot está activo. 3 | Si desea que el bot ataque automático mientras está activo, 4 | debe establecer en evitar." 5 | RSBot.Map.Main.checkEnableCollisions="Habilitar la detección de colisiones" 6 | RSBot.Map.Main.checkBoxAutoSelectUniques="Seleccionar únicos automáticamente" 7 | RSBot.Map.Main.label4="Ver:" 8 | RSBot.Map.Main.lblRegion="Desconectado" 9 | NoName="" 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/MonsterRarity.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum MonsterRarity : byte 4 | { 5 | General = 0, 6 | Champion = 1, 7 | Unique = 3, 8 | Giant = 4, 9 | Titan = 5, 10 | Elite = 6, 11 | EliteStrong = 7, 12 | Unique2 = 8, 13 | GeneralParty = 16, 14 | ChampionParty = 17, 15 | UniqueParty = 19, 16 | GiantParty = 20, 17 | TitanParty = 21, 18 | EliteParty = 22, 19 | Unique2Party = 24, 20 | Event = 0xFF, 21 | } 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.Quest/Views/View.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Quest.Views.Sidebar; 2 | 3 | namespace RSBot.Quest.Views; 4 | 5 | internal class View 6 | { 7 | private static Main _main = new(); 8 | 9 | public static Main Main 10 | { 11 | get 12 | { 13 | if (_main == null || _main.IsDisposed) 14 | _main = new Main(); 15 | 16 | return _main; 17 | } 18 | } 19 | 20 | public static QuestSidebarElement SidebarElement { get; internal set; } = null; 21 | } 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Inventory/Storage.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Inventory; 2 | 3 | public class Storage : InventoryItemCollection 4 | { 5 | /// 6 | /// The gold amount in the storage 7 | /// 8 | public ulong Gold; 9 | 10 | /// 11 | /// Create instance of the 12 | /// 13 | /// The standart 150(5 page) 14 | public Storage(byte size = 150) 15 | : base(size) { } 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Extensions/Vector2Extensions.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | 3 | namespace RSBot.NavMeshApi.Extensions; 4 | 5 | public static class VectorExtensions 6 | { 7 | public static Vector3 ToVector3(this Vector2 v) => new Vector3(v.X, 0, v.Y); 8 | 9 | public static Vector2 ToVector2(this Vector3 v) => new Vector2(v.X, v.Z); 10 | 11 | public static Vector3 Flatten(this Vector3 v) => new Vector3(v.X, 0, v.Z); 12 | 13 | public static Vector3 UpdateY(this Vector3 v, float y) => new Vector3(v.X, y, v.Z); 14 | } 15 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/Protection/ManaRecovery.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | 3 | namespace RSBot.Training.Bundle.Protection; 4 | 5 | internal class ManaRecovery 6 | { 7 | public static bool Active => PlayerConfig.Get("RSBot.Protection.checkUseSkillMP"); 8 | public static int Value => PlayerConfig.Get("RSBot.Protection.numPlayerSkillMPMin", 50); 9 | public static uint SkillId => PlayerConfig.Get("RSBot.Protection.MpSkill"); 10 | public static double Current => 100.0 * Game.Player.Mana / Game.Player.MaximumMana; 11 | } 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Cos/Transport.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.Core.Objects.Cos; 4 | 5 | public class Transport : Cos 6 | { 7 | /// 8 | /// Dismounts this instance. 9 | /// 10 | public override bool Dismount() 11 | { 12 | var packet = new Packet(0x70CB); 13 | packet.WriteByte(0); 14 | packet.WriteUInt(UniqueId); 15 | 16 | PacketManager.SendPacket(packet, PacketDestination.Server); 17 | 18 | return base.Dismount(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/Protection/HealthRecovery.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | 3 | namespace RSBot.Training.Bundle.Protection; 4 | 5 | internal class HealthRecovery 6 | { 7 | public static bool Active => PlayerConfig.Get("RSBot.Protection.checkUseSkillHP"); 8 | public static int Value => PlayerConfig.Get("RSBot.Protection.numPlayerSkillHPMin", 50); 9 | public static uint SkillId => PlayerConfig.Get("RSBot.Protection.HpSkill"); 10 | public static double Current => 100.0 * Game.Player.Health / Game.Player.MaximumHealth; 11 | } 12 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.CommandCenter/ru_RU.rsl: -------------------------------------------------------------------------------- 1 | RSBot.CommandCenter.Main.TabControl.TabPage.label1="Пишите эти команды в чат игры" 2 | RSBot.CommandCenter.Main.TabControl.TabPage.label2="<скоро>" 3 | RSBot.CommandCenter.Main.TabControl.tabPage1="Команды эмоций" 4 | RSBot.CommandCenter.Main.TabControl.tabPage2="Команды чата" 5 | RSBot.CommandCenter.Main.TabControl.tabPage3="Уведомления" 6 | RSBot.CommandCenter.Main.btnSave="Сохранить" 7 | RSBot.CommandCenter.Main.btnResetToDefaults="По умолчанию" 8 | RSBot.CommandCenter.Main.checkEnable="Включить Command center" 9 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GatewayLoginRequestHook.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | using RSBot.General.Components; 3 | 4 | namespace RSBot.General.PacketHandler 5 | { 6 | internal class GatewayLoginRequestHook : IPacketHook 7 | { 8 | public ushort Opcode => 0x610A; 9 | 10 | public PacketDestination Destination => PacketDestination.Server; 11 | 12 | public Packet ReplacePacket(Packet packet) 13 | { 14 | AutoLogin.Cts?.Cancel(); 15 | return packet; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Application/RSBot/Views/Dialog/AboutDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using SDUI.Controls; 3 | 4 | namespace RSBot.Views; 5 | 6 | internal partial class AboutDialog : UIWindowBase 7 | { 8 | public AboutDialog() 9 | { 10 | InitializeComponent(); 11 | labelName.Text = Program.AssemblyTitle; 12 | labelDescription.Text = Program.AssemblyDescription; 13 | labelVersion.Text = Program.AssemblyVersion; 14 | } 15 | 16 | private void buttonOk_Click(object sender, EventArgs e) 17 | { 18 | Close(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Plugins/RSBot.Party/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Party.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | 13 | /// 14 | /// Gets or sets the party window. 15 | /// 16 | /// 17 | /// The party window. 18 | /// 19 | public static AutoFormParty PartyWindow { get; } = new(); 20 | } 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea or a feature for RSBot 4 | title: "[Feature request]" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Spawn/SpawnedPlayerUnion.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Spawn; 2 | 3 | public class SpawnedPlayerUnion 4 | { 5 | /// 6 | /// Gets or sets the identifier. 7 | /// 8 | /// 9 | /// The identifier. 10 | /// 11 | public uint Id { get; set; } 12 | 13 | /// 14 | /// Gets or sets the last crest rev. 15 | /// 16 | /// 17 | /// The last crest rev. 18 | /// 19 | public uint LastCrestRev { get; set; } 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/PackFile/EnumerableExtensions.cs: -------------------------------------------------------------------------------- 1 | using RSBot.FileSystem.PackFile.Struct; 2 | 3 | namespace RSBot.FileSystem.PackFile; 4 | 5 | public static class EnumerableExtensions 6 | { 7 | public static IEnumerable GetEntries(this IEnumerable blocks) 8 | { 9 | return blocks.SelectMany(block => block.Entries); 10 | } 11 | 12 | public static PackEntry? GetEntry(this IEnumerable blocks, string name) 13 | { 14 | return GetEntries(blocks).FirstOrDefault(e => e.Name == name); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GlobalGatewayLoginAccepted.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | using RSBot.General.Components; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | public class GlobalGatewayLoginAccepted : IPacketHandler 7 | { 8 | public ushort Opcode => 0x2116; 9 | 10 | public PacketDestination Destination => PacketDestination.Client; 11 | 12 | public void Invoke(Packet packet) 13 | { 14 | var isAccepted = packet.ReadByte() != 2; 15 | if (isAccepted) 16 | AutoLogin.SendSecondaryPassword(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Plugins/RSBot.Skills/Components/LearnMasteryHandler.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.Skills.Components; 4 | 5 | internal class LearnMasteryHandler 6 | { 7 | public static void LearnMastery(uint masteryId) 8 | { 9 | var packet = new Packet(0x70A2); 10 | packet.WriteInt(masteryId); 11 | packet.WriteByte(0x01); //level 12 | 13 | var callback = new AwaitCallback(null, 0xB0A2); 14 | PacketManager.SendPacket(packet, PacketDestination.Server, callback); 15 | callback.AwaitResponse(1000); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/ar_AR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Chat" 2 | RSBot.Chat.Main.TabControl.tabAll="كل" 3 | RSBot.Chat.Main.TabControl.tabPrivate="خاص" 4 | RSBot.Chat.Main.TabControl.tabParty="فريق" 5 | RSBot.Chat.Main.TabControl.tabGuild="عشيرة" 6 | RSBot.Chat.Main.TabControl.tabUnion="اتحاد" 7 | RSBot.Chat.Main.TabControl.tabAcademy="اكاديمية" 8 | RSBot.Chat.Main.TabControl.tabGlobal="عالمى / ملاحظة" 9 | RSBot.Chat.Main.TabControl.tabStall="دكان" 10 | RSBot.Chat.Main.TabControl.tabUnique="ظهور يونيك" 11 | UniqueKilled="{0} has killed the {1}!" 12 | UniqueAppeared="{0} has appeared!" -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/ru_RU.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Чат" 2 | RSBot.Chat.Main.TabControl.tabAll="Общий" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Приват" 4 | RSBot.Chat.Main.TabControl.tabParty="Группа" 5 | RSBot.Chat.Main.TabControl.tabGuild="Гильдия" 6 | RSBot.Chat.Main.TabControl.tabUnion="Союз" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Академия" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Глобал / Уведомление" 9 | RSBot.Chat.Main.TabControl.tabStall="Лоток" 10 | RSBot.Chat.Main.TabControl.tabUnique="Уники" 11 | UniqueKilled="{0} убил {1}!" 12 | UniqueAppeared="{0} появился!" 13 | -------------------------------------------------------------------------------- /Botbases/RSBot.Alchemy/Globals.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Alchemy.Bot; 2 | using RSBot.Alchemy.Views; 3 | 4 | namespace RSBot.Alchemy; 5 | 6 | internal class Globals 7 | { 8 | #region Properties 9 | 10 | /// 11 | /// Gets or sets the view 12 | /// 13 | /// 14 | /// The view. 15 | /// 16 | public static Main View { get; } = new(); 17 | 18 | /// 19 | /// Gets or sets the bot base 20 | /// 21 | public static Botbase Botbase { get; set; } 22 | 23 | #endregion Properties 24 | } 25 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/en_US.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Chat" 2 | RSBot.Chat.Main.TabControl.tabAll="All" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Private" 4 | RSBot.Chat.Main.TabControl.tabParty="Party" 5 | RSBot.Chat.Main.TabControl.tabGuild="Guild" 6 | RSBot.Chat.Main.TabControl.tabUnion="Union" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Academy" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Global / Notice" 9 | RSBot.Chat.Main.TabControl.tabStall="Stall" 10 | RSBot.Chat.Main.TabControl.tabUnique="Unique" 11 | UniqueKilled="{0} has killed the {1}!" 12 | UniqueAppeared="{0} has appeared!" -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/es_ES.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Chat" 2 | RSBot.Chat.Main.TabControl.tabAll="Todo" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Privado" 4 | RSBot.Chat.Main.TabControl.tabParty="Grupo" 5 | RSBot.Chat.Main.TabControl.tabGuild="Gremio" 6 | RSBot.Chat.Main.TabControl.tabUnion="Unión" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Academia" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Global / Noticia" 9 | RSBot.Chat.Main.TabControl.tabStall="Puesto" 10 | RSBot.Chat.Main.TabControl.tabUnique="Unicos" 11 | UniqueKilled="{0} asesinó a {1}!" 12 | UniqueAppeared="{0} apareció!" 13 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/ElixirAckResponseHandler.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Client.ReferenceObjects; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 4 | 5 | internal class ElixirAckResponseHandler : IPacketHandler 6 | { 7 | public void Invoke(Packet packet) 8 | { 9 | GenericAlchemyAckResponse.Invoke(packet, AlchemyType.Elixir); 10 | } 11 | 12 | #region Properties 13 | 14 | public ushort Opcode => 0xB150; 15 | 16 | public PacketDestination Destination => PacketDestination.Client; 17 | 18 | #endregion Properties 19 | } 20 | -------------------------------------------------------------------------------- /Plugins/RSBot.Skills/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Skills.Views; 2 | 3 | internal class View 4 | { 5 | private static Main _instance; 6 | 7 | /// 8 | /// Gets or sets the instance. 9 | /// 10 | /// 11 | /// The instance. 12 | /// 13 | public static Main Instance 14 | { 15 | get 16 | { 17 | if (_instance == null || _instance.IsDisposed || _instance.Disposing) 18 | _instance = new Main(); 19 | 20 | return _instance; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/clean_nightlies.yml: -------------------------------------------------------------------------------- 1 | name: Delete Old Prereleases 2 | 3 | on: 4 | schedule: 5 | - cron: "0 1 * * *" 6 | workflow_dispatch: 7 | 8 | jobs: 9 | cleanup-prereleases: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Delete all but last 2 prereleases 13 | uses: jay2610/delete-older-releases@1.0.0 14 | with: 15 | repo: ${{ github.repository }} 16 | keep_latest: 2 17 | delete_type: "prerelease" 18 | delete_tag_pattern: "" 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/tr_TR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Sohbet" 2 | RSBot.Chat.Main.TabControl.tabAll="Tümü" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Özel" 4 | RSBot.Chat.Main.TabControl.tabParty="Parti" 5 | RSBot.Chat.Main.TabControl.tabGuild="Guild" 6 | RSBot.Chat.Main.TabControl.tabUnion="Birlik" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Academi" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Global / Duyuru" 9 | RSBot.Chat.Main.TabControl.tabStall="Tezgah" 10 | RSBot.Chat.Main.TabControl.tabUnique="Unique" 11 | UniqueKilled="{0} {1} tarafından öldürüldü!" 12 | UniqueAppeared="{0} belirdi!" 13 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/ItemPerk.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using RSBot.Core.Client.ReferenceObjects; 3 | 4 | namespace RSBot.Core.Objects; 5 | 6 | public class ItemPerk 7 | { 8 | #region Properties 9 | 10 | [Required] 11 | public uint ItemId { get; init; } 12 | 13 | [Required] 14 | public uint Token { get; init; } 15 | 16 | public uint Value { get; set; } 17 | 18 | public uint RemainingTime { get; set; } 19 | 20 | public RefObjItem? Item => Game.ReferenceManager.GetRefItem(ItemId); 21 | 22 | #endregion Properties 23 | } 24 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/de_DE.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Chat" 2 | RSBot.Chat.Main.TabControl.tabAll="Alle" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Privat" 4 | RSBot.Chat.Main.TabControl.tabParty="Gruppe" 5 | RSBot.Chat.Main.TabControl.tabGuild="Guilde" 6 | RSBot.Chat.Main.TabControl.tabUnion="Union" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Akademy" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Global / Notiz" 9 | RSBot.Chat.Main.TabControl.tabStall="Verkaufsstand" 10 | RSBot.Chat.Main.TabControl.tabUnique="Unique" 11 | UniqueKilled="{0} hat {1} getötet!" 12 | UniqueAppeared="{0} ist aufgetaucht!" 13 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Chat/vn_VN.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Tán Gẫu" 2 | RSBot.Chat.Main.TabControl.tabAll="Tất Cả" 3 | RSBot.Chat.Main.TabControl.tabPrivate="Riêng Tư" 4 | RSBot.Chat.Main.TabControl.tabParty="Nhóm" 5 | RSBot.Chat.Main.TabControl.tabGuild="Hội" 6 | RSBot.Chat.Main.TabControl.tabUnion="Liên Minh" 7 | RSBot.Chat.Main.TabControl.tabAcademy="Học Viện" 8 | RSBot.Chat.Main.TabControl.tabGlobal="Thế Giới/Thông Báo" 9 | RSBot.Chat.Main.TabControl.tabStall="Gian Hàng" 10 | RSBot.Chat.Main.TabControl.tabUnique="Trùm" 11 | UniqueKilled="{0} đã tiêu diệt {1}!" 12 | UniqueAppeared="{0} đã xuất hiện!" 13 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Inventory/ar_AR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Inventory" 2 | RSBot.Inventory.Main.Panel.buttonUseItem="استخدام" 3 | RSBot.Inventory.Main.Panel.label1="المخزون" 4 | RSBot.Inventory.Main.Panel.label2="Free Slots:" 5 | RSBot.Inventory.UseItemDialog.label2="العنصر وفقا لقرارك الخاص يمكنك استخدام. سيتم فتح نافذة الشرط ومن هناك يمكنك تعيين الشروط التي تريدها" 6 | RSBot.Inventory.UseItemDialog.label1="إذا كنت ترغب في استخدام العنصر مباشرة، 7 | فقط انقر فوق الزر" 8 | RSBot.Inventory.UseItemDialog.buttonCancel="الاستخدام مع الشروط" 9 | RSBot.Inventory.UseItemDialog.buttonOk="استخدم مباشرة" 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/BinaryWriterExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Text; 3 | 4 | namespace RSBot.Core.Extensions; 5 | 6 | public static class BinaryWriterExtensions 7 | { 8 | public static void WriteAscii(this BinaryWriter writer, string value) 9 | { 10 | var encoding = Encoding.UTF8; 11 | 12 | var buffer = encoding.GetBytes(value); 13 | 14 | writer.Write(buffer.Length); 15 | writer.Write(buffer); 16 | } 17 | 18 | public static byte[] GetSnapshot(this BinaryWriter binary) => ((MemoryStream)binary.BaseStream).ToArray(); 19 | } 20 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/MagicOptionGrantResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 4 | 5 | internal class MagicOptionGrantResponse : IPacketHandler 6 | { 7 | public ushort Opcode => 0x34A9; 8 | 9 | public PacketDestination Destination => PacketDestination.Client; 10 | 11 | public void Invoke(Packet packet) 12 | { 13 | var slot = packet.ReadByte(); 14 | var attribute = packet.ReadString(); 15 | 16 | EventManager.FireEvent("OnMagicOptionGranted", slot, attribute); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Quests/ActiveQuest.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Client.ReferenceObjects; 2 | 3 | namespace RSBot.Core.Objects.Quests; 4 | 5 | public struct ActiveQuest 6 | { 7 | public uint Id; 8 | public int AchievementAmount; 9 | public int RequiredShareParty; 10 | 11 | public byte Unknown1; 12 | public byte Unknown2; 13 | 14 | public QuestType Type; 15 | public int RemainingTime; 16 | public QuestStatus Status; 17 | public QuestObjective[] Objectives; 18 | public uint[] Npcs; 19 | public RefQuest Quest => Game.ReferenceManager.GetRefQuest(Id); 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.Loader.Library/RSBot.Loader.Library.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {efeaa0f1-3532-41e0-84f2-45526ee3f491} 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Common 14 | 15 | 16 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Inventory/vn_VN.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Hòm Đồ" 2 | RSBot.Inventory.Main.Panel.buttonUseItem="Sử Dụng" 3 | RSBot.Inventory.Main.Panel.label1="Thùng đồ:" 4 | RSBot.Inventory.Main.Panel.label2="Ô trống:" 5 | RSBot.Inventory.UseItemDialog.label2="Chọn lọc vật phẩm theo ý muốn của bạn. Một cửa số điều kiện sẽ mở ra từ đó hãy làm gì mà bạn muốn" 6 | RSBot.Inventory.UseItemDialog.label1="Nếu bạn muốn sử dụng vật phẩm trực tiếp, 7 | chỉ cần nhấp vào nút" 8 | RSBot.Inventory.UseItemDialog.buttonCancel="Sử dụng với các điều kiện" 9 | RSBot.Inventory.UseItemDialog.buttonOk="Sử dụng trực tiếp" 10 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Quests/QuestStatus.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Quests; 2 | 3 | //1 = Initialized 4 | //2 = Complete, but not supplied 5 | //3 = Completed 6 | //4 = Completed X times 7 | //5 = Unavailable 8 | //6 = Canceled 9 | //7 = Started by User 10 | //8 = Completed by User, but not supplied 11 | public enum QuestStatus : byte 12 | { 13 | Initialized = 0x01, 14 | CompletedButNotSupplied = 0x02, 15 | Completed = 0x03, 16 | CompletedXTimes = 0x04, 17 | Unavailable = 0x05, 18 | Cancelled = 0x06, 19 | StartedByUser = 0x07, 20 | CompletedByUserButNotSupplied = 0x08, 21 | } 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Spawn/SpawnedPlayerGuildMember.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Spawn; 2 | 3 | public class SpawnedPlayerGuildMember 4 | { 5 | /// 6 | /// Gets or sets the nickname. 7 | /// 8 | /// 9 | /// The nickname. 10 | /// 11 | public string Nickname { get; set; } 12 | 13 | /// 14 | /// Gets or sets the fort siege authority. 15 | /// 16 | /// 17 | /// The fort siege authority. 18 | /// 19 | public FortSiegeAuthority FortSiegeAuthority { get; set; } 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/RSBot.NavMeshApi.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | enable 5 | enable 6 | x86 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Inventory/tr_TR.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Envanter" 2 | RSBot.Inventory.Main.Panel.buttonUseItem="Kullan" 3 | RSBot.Inventory.Main.Panel.label1="Çanta:" 4 | RSBot.Inventory.Main.Panel.label2="Boş Yer:" 5 | RSBot.Inventory.UseItemDialog.label2="Kendi kararınıza göre eşya 6 | kullanabilirsiniz. Bir koşul penceresi açılacaktır 7 | ve oradan istediğiniz şartları ayarlayabilirsiniz" 8 | RSBot.Inventory.UseItemDialog.label1="Öğeyi doğrudan kullanmak istiyorsanız, 9 | sadece butona tıklayın" 10 | RSBot.Inventory.UseItemDialog.buttonCancel="Koşul kullan" 11 | RSBot.Inventory.UseItemDialog.buttonOk="Doğrudan kullan" 12 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/PacketException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Network; 4 | 5 | public class PacketException : SystemException 6 | { 7 | public PacketException(Packet packet, Exception innerException) 8 | { 9 | this.packet = packet; 10 | Message = "PacketError:" + innerException.Message; 11 | } 12 | 13 | public PacketException(Packet packet, string message) 14 | { 15 | this.packet = packet; 16 | Message = "PacketError:" + message; 17 | } 18 | 19 | public Packet packet { get; } 20 | 21 | public override string Message { get; } 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/IFolder.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.FileSystem; 2 | 3 | public interface IFolder 4 | { 5 | #region Properties 6 | 7 | public string Path { get; } 8 | 9 | public string Name { get; } 10 | 11 | public IFolder Parent { get; } 12 | 13 | public IFileSystem FileSystem { get; } 14 | 15 | public long CreationTime { get; } 16 | 17 | public long ModifyTime { get; } 18 | 19 | #endregion 20 | 21 | #region Methods 22 | 23 | public IFolder[] GetFolders(); 24 | public IEnumerable GetFiles(); 25 | public string[] GetChildren(); 26 | 27 | #endregion 28 | } 29 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Inventory/en_US.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Inventory" 2 | RSBot.Inventory.Main.Panel.buttonUseItem="Use" 3 | RSBot.Inventory.Main.Panel.label1="Inventory:" 4 | RSBot.Inventory.Main.Panel.label2="Free Slots:" 5 | RSBot.Inventory.UseItemDialog.label2="Item according to your own decision 6 | you can use. A condition window will open 7 | and from there you can set the terms you want" 8 | RSBot.Inventory.UseItemDialog.label1="If you want to use the item directly, 9 | just click the button" 10 | RSBot.Inventory.UseItemDialog.buttonCancel="Use with conditions" 11 | RSBot.Inventory.UseItemDialog.buttonOk="Use Directly" 12 | -------------------------------------------------------------------------------- /Plugins/RSBot.Chat/Bundle/Network/ChatResponseHook.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Network; 3 | 4 | namespace RSBot.Chat.Network; 5 | 6 | internal class ChatResponseHook : IPacketHook 7 | { 8 | public ushort Opcode => 0xB025; 9 | 10 | public PacketDestination Destination => PacketDestination.Client; 11 | 12 | public Packet ReplacePacket(Packet packet) 13 | { 14 | if (!Game.Clientless && Bundle.Chat.IgnoreChatResponsePacket) 15 | { 16 | Bundle.Chat.IgnoreChatResponsePacket = false; 17 | return null; 18 | } 19 | 20 | return packet; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Exchange/ExchangeUpdateItemsResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Exchange; 4 | 5 | internal class ExchangeUpdateItemsResponse : IPacketHandler 6 | { 7 | /// 8 | public ushort Opcode => 0x308C; 9 | 10 | /// 11 | public PacketDestination Destination => PacketDestination.Client; 12 | 13 | /// 14 | public void Invoke(Packet packet) 15 | { 16 | Game.Player.Exchange?.UpdateItems(packet); 17 | 18 | EventManager.FireEvent("OnUpdateExchangeItems"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/Division.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | public class Division 6 | { 7 | #region Fields 8 | 9 | /// 10 | /// Gets or sets the name. 11 | /// 12 | /// 13 | /// The name. 14 | /// 15 | public string Name; 16 | 17 | /// 18 | /// Gets or sets the login servers. 19 | /// 20 | /// 21 | /// The login servers. 22 | /// 23 | public List GatewayServers; 24 | 25 | #endregion Fields 26 | } 27 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectReqLevelType.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public enum ObjectReqLevelType 4 | { 5 | None = -1, 6 | Character = 1, //캐릭터 7 | MasteryTrader = 2, //상인마스터리 8 | MasteryTief = 3, //도적마스터리 9 | MasteryHunter = 4, //헌터마스터리 10 | 11 | Pet2System = 5, 12 | 13 | GuildLevel = 10, 14 | 15 | //European clothing limitation 16 | MasteryWarrior = 513, //워리어201 17 | MasteryRogue = 515, //로그203 18 | MasteryWizard = 514, //위저드202 19 | MasteryWarlock = 516, //워락204 20 | MasteryBard = 517, //바드205 21 | MasteryCleric = 518, //클레릭206 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Cryptography/Sha256.cs: -------------------------------------------------------------------------------- 1 | using System.Security.Cryptography; 2 | using System.Text; 3 | 4 | namespace RSBot.Core.Cryptography; 5 | 6 | public class Sha256 7 | { 8 | public static string ComputeHash(string rawData) 9 | { 10 | using (var sha256Hash = SHA256.Create()) 11 | { 12 | var bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData)); 13 | 14 | StringBuilder builder = new(); 15 | for (var i = 0; i < bytes.Length; i++) 16 | builder.Append(bytes[i].ToString("X2")); 17 | 18 | return builder.ToString(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Components/Command/StopCommandExecutor.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components.Command; 3 | 4 | namespace RSBot.CommandCenter.Components.Command; 5 | 6 | internal class StopCommandExecutor : ICommandExecutor 7 | { 8 | public string CommandName => "stop"; 9 | 10 | public string CommandDescription => "Stop the bot"; 11 | 12 | public bool Execute(bool silent) 13 | { 14 | if (!silent) 15 | Game.ShowNotification($"[RSBot] Stopping bot [{Kernel.Bot?.Botbase.DisplayName}]"); 16 | 17 | Kernel.Bot?.Stop(); 18 | 19 | return Kernel.Bot?.Running == false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Components/Command/StartCommandExecutor.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components.Command; 3 | 4 | namespace RSBot.CommandCenter.Components.Command; 5 | 6 | internal class StartCommandExecutor : ICommandExecutor 7 | { 8 | public string CommandName => "start"; 9 | 10 | public string CommandDescription => "Start the bot"; 11 | 12 | public bool Execute(bool silent) 13 | { 14 | if (!silent) 15 | Game.ShowNotification($"[RSBot] Starting bot [{Kernel.Bot?.Botbase.DisplayName}]"); 16 | 17 | Kernel.Bot?.Start(); 18 | 19 | return Kernel.Bot?.Running == true; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Application/RSBot/Views/Dialog/ExitDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using SDUI.Controls; 5 | 6 | namespace RSBot.Views; 7 | 8 | public partial class ExitDialog : UIWindowBase 9 | { 10 | public ExitDialog() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void checkDontAskAgain_CheckedChanged(object sender, EventArgs e) 16 | { 17 | GlobalConfig.Set("RSBot.showExitDialog", !checkDontAskAgain.Checked); 18 | } 19 | 20 | private void ExitDialog_Load(object sender, EventArgs e) 21 | { 22 | LanguageManager.Translate(this, Kernel.Language); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Components/Command/ShowBotCommandExecutor.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components.Command; 3 | using RSBot.Core.Event; 4 | 5 | namespace RSBot.CommandCenter.Components.Command; 6 | 7 | internal class ShowBotCommandExecutor : ICommandExecutor 8 | { 9 | public string CommandName => "show"; 10 | 11 | public string CommandDescription => "Show the bot window"; 12 | 13 | public bool Execute(bool silent) 14 | { 15 | if (!silent) 16 | Game.ShowNotification("[RSBot] Showing bot window"); 17 | 18 | EventManager.FireEvent("OnShowBotWindow"); 19 | 20 | return true; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Exchange/ExchangeCanceledResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Exchange; 4 | 5 | internal class ExchangeCanceledResponse : IPacketHandler 6 | { 7 | /// 8 | public ushort Opcode => 0x3088; 9 | 10 | /// 11 | public PacketDestination Destination => PacketDestination.Client; 12 | 13 | /// 14 | public void Invoke(Packet packet) 15 | { 16 | Game.Player.Exchange = null; 17 | 18 | Log.Notify("Exchange has been canceled."); 19 | 20 | EventManager.FireEvent("OnCancelExchange"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Describe a bug you've encountered in RSBot 4 | title: "[Bug]" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Version (please complete the following information):** 11 | - SRO version: [e.g. iSRO] 12 | - RSBot version (or commit): [e.g. v2.3] 13 | 14 | **Describe the bug** 15 | A clear and concise description of what the bug is. 16 | 17 | **To reproduce the behavior:** 18 | Steps to reproduce the behavior: 19 | 1. Walk to Samarkand 20 | 2. Start bot 21 | 3. Get disconnected from the server 22 | 23 | **(Optional) Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Protocol/HandshakeSecurityException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Network.Protocol; 4 | 5 | public class HandshakeSecurityException : Exception 6 | { 7 | /// 8 | /// Initializes a new instance of the class. 9 | /// 10 | /// Die Meldung, in der der Fehler beschrieben wird. 11 | public HandshakeSecurityException(string message) 12 | { 13 | Message = message; 14 | } 15 | 16 | /// 17 | /// Gets the exception message 18 | /// 19 | public override string Message { get; } 20 | } 21 | -------------------------------------------------------------------------------- /Botbases/RSBot.Alchemy/Bundle/Magic/MagicBundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using RSBot.Core.Client.ReferenceObjects; 3 | using RSBot.Core.Objects; 4 | 5 | namespace RSBot.Alchemy.Bundle.Magic; 6 | 7 | internal class MagicBundleConfig 8 | { 9 | #region Properties 10 | 11 | /// 12 | /// Gets or sets the selected item 13 | /// 14 | public InventoryItem Item { get; set; } 15 | 16 | /// 17 | /// Gets or sets a dictionary of inventory items and the referenced magic option 18 | /// 19 | public Dictionary MagicStones { get; set; } 20 | 21 | #endregion Properties 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectBorrowType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | [Flags] 6 | public enum ObjectBorrowType : byte 7 | { 8 | //GuildStorage works only when Storage is set. 9 | //PetInventory only works if GuildStorage is set.? 10 | 11 | //Bit 7: Storage 12 | //Bit 6: GuildStorage 13 | //Bit 5: PetInventory 14 | //Bit 4-0: Exchange, might contain sub 15 | 16 | No = 0, 17 | Storage = 128, 18 | GuildStorage = 64, 19 | PetInventory = 32, 20 | Exchange = Bit4 & Bit3 & Bit2 & Bit1 & Bit0, 21 | Bit4 = 16, 22 | Bit3 = 8, 23 | Bit2 = 4, 24 | Bit1 = 2, 25 | Bit0 = 1, 26 | } 27 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/IPacketHook.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network; 2 | 3 | public interface IPacketHook 4 | { 5 | /// 6 | /// Gets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | ushort Opcode { get; } 12 | 13 | /// 14 | /// Gets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | PacketDestination Destination { get; } 20 | 21 | /// 22 | /// Replaces the packet and returns a new packet. 23 | /// 24 | /// 25 | Packet ReplacePacket(Packet packet); 26 | } 27 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Inventory/de_DE.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Inventar" 2 | RSBot.Inventory.Main.Panel.buttonUseItem="Benutzen" 3 | RSBot.Inventory.Main.Panel.label1="Inventar:" 4 | RSBot.Inventory.Main.Panel.label2="Freie Plätze:" 5 | RSBot.Inventory.UseItemDialog.label2="Artikel nach Ihrer eigenen Entscheidung 6 | können Sie verwenden. Es öffnet sich ein Konditionsfenster 7 | und von dort aus können Sie die gewünschten Bedingungen festlegen" 8 | RSBot.Inventory.UseItemDialog.label1="Wenn Sie den Artikel direkt verwenden möchten, 9 | klicken Sie einfach auf den Button" 10 | RSBot.Inventory.UseItemDialog.buttonCancel="Verwendung mit Bedingungen" 11 | RSBot.Inventory.UseItemDialog.buttonOk="Direkt verwenden" 12 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/Movement/MovementConfig.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Training.Bundle.Movement; 2 | 3 | internal class MovementConfig 4 | { 5 | /// 6 | /// Gets or sets a value indicating whether [walk to center]. 7 | /// 8 | /// 9 | /// true if [walk to center]; otherwise, false. 10 | /// 11 | public bool WalkToCenter { get; set; } 12 | 13 | /// 14 | /// Gets or sets a value indicating whether [walk around]. 15 | /// 16 | /// 17 | /// true if [walk around]; otherwise, false. 18 | /// 19 | public bool WalkAround { get; set; } 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Exchange/ExchangeApprovedResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Exchange; 4 | 5 | internal class ExchangeApprovedResponse : IPacketHandler 6 | { 7 | /// 8 | public ushort Opcode => 0x3087; 9 | 10 | /// 11 | public PacketDestination Destination => PacketDestination.Client; 12 | 13 | /// 14 | public void Invoke(Packet packet) 15 | { 16 | Game.Player.Exchange.Complete(); 17 | Game.Player.Exchange = null; 18 | 19 | Log.Notify("Exchange completed."); 20 | 21 | EventManager.FireEvent("OnApproveExchange"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Components/Command/StartHereCommandExecutor.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components; 3 | using RSBot.Core.Components.Command; 4 | 5 | namespace RSBot.CommandCenter.Components.Command; 6 | 7 | internal class StartHereCommandExecutor : ICommandExecutor 8 | { 9 | public string CommandName => "here"; 10 | 11 | public string CommandDescription => "Set training area and start bot"; 12 | 13 | public bool Execute(bool silent) 14 | { 15 | if (!silent) 16 | Game.ShowNotification("[RSBot] Starting bot at the current location"); 17 | 18 | return CommandManager.Execute("area", true) && CommandManager.Execute("start", true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Teleportation.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Client.ReferenceObjects; 2 | 3 | namespace RSBot.Core.Objects; 4 | 5 | public class Teleportation 6 | { 7 | /// 8 | /// Gets or sets a value indicating whether this instance is teleporting. 9 | /// 10 | /// 11 | /// true if this instance is teleporting; otherwise, false. 12 | /// 13 | public bool IsTeleporting { get; set; } 14 | 15 | /// 16 | /// Gets or sets the teleport destination. 17 | /// 18 | /// 19 | /// The teleport destination. 20 | /// 21 | public RefTeleport Destination { get; set; } 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMeshRaycastHit.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | using RSBot.NavMeshApi.Cells; 3 | using RSBot.NavMeshApi.Edges; 4 | using RSBot.NavMeshApi.Mathematics; 5 | 6 | namespace RSBot.NavMeshApi; 7 | 8 | public class NavMeshRaycastHit 9 | { 10 | public RID Region { get; set; } 11 | public Vector3 Position { get; set; } 12 | public Vector3 World => this.Region.Position + this.Position; 13 | public NavMeshEdge? Edge { get; set; } 14 | public NavMeshCell Cell { get; set; } 15 | public NavMeshInst Instance { get; set; } 16 | public NavMesh NavMesh => this.Cell?.NavMesh; 17 | 18 | public override string ToString() => $"{this.NavMesh} -> [{this.Cell}; {this.Edge}; {this.Instance}]"; 19 | } 20 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [sdclowen] 4 | patreon: sdclowen 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: ['https://www.buymeacoffee.com/sdclowen'] 14 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/DialogState.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | using RSBot.Core.Objects.Spawn; 3 | 4 | namespace RSBot.Core.Objects; 5 | 6 | public class DialogState 7 | { 8 | private uint _dialogNpcId; 9 | internal uint RequestedCloseNpcId = 0; 10 | 11 | internal uint RequestedNpcId = 0; 12 | public bool IsInDialog => _dialogNpcId != 0; 13 | public TalkOption TalkOption { get; set; } 14 | 15 | //Special trader shops with Bargain goods has started. 16 | public bool IsSpecialityTime { get; set; } 17 | 18 | public SpawnedNpc Npc 19 | { 20 | get => _dialogNpcId == 0 ? null : SpawnManager.GetEntity(_dialogNpcId); 21 | set => _dialogNpcId = value?.UniqueId ?? 0; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request 2 | 3 | on: 4 | pull_request: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | build: 10 | runs-on: windows-latest 11 | 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v4 15 | with: 16 | fetch-depth: 0 17 | submodules: recursive 18 | 19 | - name: Install .NET Core 20 | uses: actions/setup-dotnet@v4 21 | with: 22 | dotnet-version: 8.0.x 23 | 24 | - name: Setup MSBuild.exe 25 | uses: microsoft/setup-msbuild@v2 26 | 27 | - name: Handle dependencies 28 | run: dotnet restore RSBot.sln 29 | 30 | - name: Build the application 31 | run: msbuild /p:Configuration=Release /p:Platform=x86 32 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Spawn/SpawnPacketInfo.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.Core.Objects.Spawn; 4 | 5 | internal class SpawnPacketInfo 6 | { 7 | /// 8 | /// Gets or sets the type. 9 | /// 10 | /// 11 | /// The type. 12 | /// 13 | public byte Type { get; set; } 14 | 15 | /// 16 | /// Gets or sets the amount. 17 | /// 18 | /// 19 | /// The amount. 20 | /// 21 | public ushort Amount { get; set; } 22 | 23 | /// 24 | /// Gets or sets the packet. 25 | /// 26 | /// 27 | /// The packet. 28 | /// 29 | public Packet Packet { get; set; } 30 | } 31 | -------------------------------------------------------------------------------- /Application/RSBot/Views/Controls/Cos/MiniCosControl.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Drawing; 4 | using SDUI.Controls; 5 | 6 | namespace RSBot.Views.Controls; 7 | 8 | [ToolboxItem(false)] 9 | public partial class MiniCosControl : DoubleBufferedControl 10 | { 11 | private bool _selected; 12 | 13 | public MiniCosControl() 14 | { 15 | InitializeComponent(); 16 | } 17 | 18 | public bool Selected 19 | { 20 | get => _selected; 21 | set 22 | { 23 | _selected = value; 24 | panel.BorderColor = value ? Color.Yellow : Color.Transparent; 25 | } 26 | } 27 | 28 | private void OnClick_Redirector(object sender, EventArgs e) 29 | { 30 | OnClick(e); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Components/Scripting/IScriptCommand.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace RSBot.Core.Components.Scripting; 4 | 5 | public interface IScriptCommand 6 | { 7 | #region Properties 8 | 9 | string Name { get; } 10 | 11 | bool IsBusy { get; } 12 | 13 | Dictionary Arguments { get; } 14 | 15 | #endregion Properties 16 | 17 | #region Methods 18 | 19 | /// 20 | /// Executes this instance. 21 | /// 22 | /// A value indicating if the command has been executed successfully. 23 | bool Execute(string[] arguments = null); 24 | 25 | /// 26 | /// Stops the execution of the command 27 | /// 28 | void Stop(); 29 | 30 | #endregion Methods 31 | } 32 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/IPacketHandler.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network; 2 | 3 | /// 4 | /// Every packet handler has to inerhit this interface. 5 | /// 6 | public interface IPacketHandler 7 | { 8 | /// 9 | /// Gets or sets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | ushort Opcode { get; } 15 | 16 | /// 17 | /// Gets or sets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | PacketDestination Destination { get; } 23 | 24 | /// 25 | /// Handles the packet. 26 | /// 27 | /// The packet. 28 | void Invoke(Packet packet); 29 | } 30 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Edges/NavMeshLinkEdge.cs: -------------------------------------------------------------------------------- 1 | using RSBot.NavMeshApi.Cells; 2 | 3 | namespace RSBot.NavMeshApi.Edges; 4 | 5 | public class NavMeshLinkEdge 6 | { 7 | public short LinkedObjID { get; set; } 8 | public short LinkedObjEdgeID { get; set; } 9 | public short EdgeID { get; set; } 10 | 11 | public NavMeshInst LinkedInst { get; set; } 12 | public NavMeshEdgeGlobal LinkedObjEdge { get; set; } 13 | public NavMeshCellTri LinkedCell => (NavMeshCellTri)this.LinkedObjEdge.SrcCell; 14 | public NavMeshEdgeGlobal Edge { get; set; } 15 | public NavMeshCellTri Cell => (NavMeshCellTri)this.Edge.SrcCell; 16 | 17 | public override string ToString() 18 | { 19 | return $"{this.LinkedInst}: {this.Cell}-{this.Edge} --> {this.LinkedObjEdge}-{this.LinkedCell}"; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Skill/SkillLearnErrorCode.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Skill; 2 | 3 | public enum SkillLearnErrorCode : ushort 4 | { 5 | /// 6 | /// Cannot learn the skill due to insufficient strength. 7 | /// 8 | UIIT_STT_SKILL_LEARN_STR_INSUFFICIENCY = 0x0334, 9 | 10 | /// 11 | /// [Not displayed] 12 | /// 13 | UIIT_STT_SKILL_LEARN_ALREADY_EXISTS = 0x0634, 14 | 15 | /// 16 | /// Cannot learn the skill due to insufficient intelligence. 17 | /// 18 | UIIT_STT_SKILL_LEARN_INT_INSUFFICIENCY = 0x0434, 19 | 20 | /// 21 | /// You can't learn the current skill due to insufficient skill points. 22 | /// 23 | UIIT_STT_SKILL_POINT_INSUFFICIENCY = 0x0A34, 24 | } 25 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Cells/NavMeshCell.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using System.Numerics; 3 | using RSBot.NavMeshApi.Edges; 4 | 5 | namespace RSBot.NavMeshApi.Cells; 6 | 7 | [DebuggerDisplay("NavMeshCell: {Index}")] 8 | public abstract class NavMeshCell 9 | { 10 | public NavMesh NavMesh { get; set; } 11 | public int Index { get; set; } 12 | 13 | public int EdgeCount { get; private protected set; } 14 | 15 | internal abstract void AddEdge(NavMeshEdge edge, NavMeshCellSide direction); 16 | 17 | public abstract IEnumerable Edges { get; } 18 | 19 | public abstract void MoveTowardsCenter(ref Vector3 vPos); 20 | 21 | public override string ToString() 22 | { 23 | return $"C:{this.Index}"; 24 | } 25 | 26 | public abstract bool Contains(Vector3 position); 27 | } 28 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Exchange/ExchangeStartedResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | using RSBot.Core.Objects.Exchange; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent.Exchange; 5 | 6 | internal class ExchangeStartedResponse : IPacketHandler 7 | { 8 | /// 9 | public ushort Opcode => 0x3085; 10 | 11 | /// 12 | public PacketDestination Destination => PacketDestination.Client; 13 | 14 | /// 15 | public void Invoke(Packet packet) 16 | { 17 | var playerUniqueId = packet.ReadUInt(); 18 | Game.Player.Exchange = new ExchangeInstance(playerUniqueId); 19 | 20 | Log.Notify($"Started exchanging with the player {Game.Player.Exchange.ExchangePlayer.Name}"); 21 | 22 | EventManager.FireEvent("OnStartExchange"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Plugins/RSBot.Inventory/Subscriber/InventoryUpdateSubscriber.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Event; 3 | 4 | namespace RSBot.Inventory.Subscriber; 5 | 6 | internal static class InventoryUpdateSubscriber 7 | { 8 | private static object _lock; 9 | 10 | /// 11 | /// Subscribes the events. 12 | /// 13 | public static void SubscribeEvents() 14 | { 15 | _lock = new object(); 16 | EventManager.SubscribeEvent("OnInventoryUpdate", OnInventoryUpdate); 17 | } 18 | 19 | private static void OnInventoryUpdate() 20 | { 21 | var autoSort = PlayerConfig.Get("RSBot.Inventory.AutoSort", false); 22 | if (!autoSort) 23 | return; 24 | 25 | lock (_lock) 26 | { 27 | Game.Player.Inventory.Sort(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/Loot/LootConfig.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Training.Bundle.Loot; 2 | 3 | internal class LootConfig 4 | { 5 | /// 6 | /// Gets or sets a value indicating whether [use ability pet]. 7 | /// 8 | /// 9 | /// true if [use ability pet]; otherwise, false. 10 | /// 11 | public bool UseAbilityPet { get; set; } 12 | 13 | /// 14 | /// Gets a value , true Turn off the pickup if the player botting, otherwise false 15 | /// 16 | public bool DontPickupWhileBotting { get; set; } 17 | 18 | /// 19 | /// Gets a value , true Turn off the pickup if the player in berzerk mode, otherwise false 20 | /// 21 | public bool DontPickupInBerzerk { get; set; } 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Cos/AgentNotifyResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | using RSBot.Core.Components.Scripting.Commands; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent 5 | { 6 | internal class AgentNotifyResponse : IPacketHandler 7 | { 8 | public ushort Opcode => 0x300C; 9 | 10 | public PacketDestination Destination => PacketDestination.Client; 11 | 12 | public void Invoke(Packet packet) 13 | { 14 | var noticeType = packet.ReadByte(); 15 | if (Game.ClientType > GameClientType.Thailand) 16 | packet.ReadByte(); 17 | 18 | if (noticeType == 0x4 && ScriptManager.Running) //can't teleport while riding on vehicle 19 | { 20 | MoveScriptCommand.MustDismount = true; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Spawn/SpawnedNpc.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.Core.Objects.Spawn; 4 | 5 | public class SpawnedNpc : SpawnedBionic 6 | { 7 | /// 8 | /// 9 | /// 10 | /// The ref obj id 11 | public SpawnedNpc(uint objId) 12 | : base(objId) { } 13 | 14 | /// 15 | /// Gets or sets the npc talk. 16 | /// 17 | public NpcTalk Talk { get; } = new(); 18 | 19 | /// 20 | /// Froms the packet. 21 | /// 22 | /// The packet. 23 | /// The bionic. 24 | /// 25 | internal virtual void Deserialize(Packet packet) 26 | { 27 | Talk.Deserialize(packet); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Plugins/RSBot.Protection/Components/Town/AbstractTownHandler.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using RSBot.Core; 3 | 4 | namespace RSBot.Protection.Components.Town; 5 | 6 | public abstract class AbstractTownHandler 7 | { 8 | private static readonly ushort[] TownSpawnRegionIds = 9 | { 10 | 22106, 11 | 22617, 12 | 22618, 13 | 22874, 14 | 23087, 15 | 23088, 16 | 23345, 17 | 23346, 18 | 23602, 19 | 23603, 20 | 23687, 21 | 25000, 22 | 26265, 23 | 26959, 24 | 27243, 25 | 27244, 26 | 27499, 27 | 27500, 28 | }; 29 | 30 | public static bool PlayerInTownScriptRegion() 31 | { 32 | var regionId = Game.Player.Position.Region; 33 | 34 | return TownSpawnRegionIds.Contains(regionId); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Skill/SkillMasteryLearnErrorCode.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Skill; 2 | 3 | public enum SkillMasteryLearnErrorCodes : ushort 4 | { 5 | /// 6 | /// [Not displayed] You can't learn mastery due to invalid conditions. 7 | /// 8 | UIIT_STT_SKILL_LEARN_MASTERY_INVALID = 0x0138, 9 | 10 | /// 11 | /// You can't learn mastery due to insufficient skill points. 12 | /// 13 | UIIT_STT_SKILL_POINT_INSUFFICIENCY_MASTERY = 0x0238, 14 | 15 | /// 16 | /// Cannot learn it any longer due to mastery limit. 17 | /// 18 | UIIT_STT_SKILL_LEARN_MASTERY_LIMIT = 0x0438, 19 | 20 | /// 21 | /// Cannot learn due to total mastery limit. 22 | /// 23 | UIIT_STT_SKILL_LEARN_MASTERY_TOTAL_LIMIT = 0x0538, 24 | } 25 | -------------------------------------------------------------------------------- /Plugins/RSBot.ServerInfo/Views/Main.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Windows.Forms; 3 | using RSBot.General.Components; 4 | using SDUI.Controls; 5 | 6 | namespace RSBot.ServerInfo.Views; 7 | 8 | [ToolboxItem(false)] 9 | public partial class Main : DoubleBufferedControl 10 | { 11 | public Main() 12 | { 13 | CheckForIllegalCrossThreadCalls = false; 14 | InitializeComponent(); 15 | 16 | UpdateServerInfo(); 17 | } 18 | 19 | private void UpdateServerInfo() 20 | { 21 | lvServerInfo.Items.Clear(); 22 | 23 | if (Serverlist.Servers == null) 24 | return; 25 | 26 | foreach (var server in Serverlist.Servers) 27 | { 28 | var toInsert = new ListViewItem(new[] { server.Name, server.State }); 29 | lvServerInfo.Items.Add(toInsert); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Loader.Library/Detours/include/detver.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Common version parameters. 4 | // 5 | // Microsoft Research Detours Package, Version 4.0.1 6 | // 7 | // Copyright (c) Microsoft Corporation. All rights reserved. 8 | // 9 | 10 | #define _USING_V110_SDK71_ 1 11 | #include "winver.h" 12 | #if 0 13 | #include 14 | #include 15 | #else 16 | #ifndef DETOURS_STRINGIFY 17 | #define DETOURS_STRINGIFY_(x) #x 18 | #define DETOURS_STRINGIFY(x) DETOURS_STRINGIFY_(x) 19 | #endif 20 | 21 | #define VER_FILEFLAGSMASK 0x3fL 22 | #define VER_FILEFLAGS 0x0L 23 | #define VER_FILEOS 0x00040004L 24 | #define VER_FILETYPE 0x00000002L 25 | #define VER_FILESUBTYPE 0x00000000L 26 | #endif 27 | #define VER_DETOURS_BITS DETOURS_STRINGIFY(DETOURS_BITS) 28 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RegionInfo/ModernRegionInfo.cs: -------------------------------------------------------------------------------- 1 | using RSBot.NavMeshApi.Mathematics; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects.RegionInfo; 4 | 5 | public class ModernRegionInfo : LegacyRegionInfo, IReference 6 | { 7 | public string Type; 8 | public string Name; 9 | 10 | public bool Load(ReferenceParser parser) 11 | { 12 | parser.TryParse(0, out Type); 13 | parser.TryParse(1, out Name); 14 | parser.TryParse(2, out XSector); 15 | parser.TryParse(3, out YSector); 16 | parser.TryParse(4, out RegionType); 17 | 18 | parser.TryParse(5, out float minX); 19 | parser.TryParse(6, out float minY); 20 | parser.TryParse(7, out float maxX); 21 | parser.TryParse(8, out float maxY); 22 | 23 | Bounds = new RectangleF(minX, minY, maxX, maxY); 24 | 25 | return true; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Exchange/ExchangeStartResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | using RSBot.Core.Objects.Exchange; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent.Exchange; 5 | 6 | internal class ExchangeStartResponse : IPacketHandler 7 | { 8 | /// 9 | public ushort Opcode => 0xB081; 10 | 11 | /// 12 | public PacketDestination Destination => PacketDestination.Client; 13 | 14 | /// 15 | public void Invoke(Packet packet) 16 | { 17 | if (packet.ReadByte() != 1) 18 | return; 19 | 20 | var playerUniqueId = packet.ReadUInt(); 21 | Game.Player.Exchange = new ExchangeInstance(playerUniqueId); 22 | 23 | Log.Notify($"Started exchanging with the player {Game.Player.Exchange.ExchangePlayer.Name}"); 24 | 25 | EventManager.FireEvent("OnStartExchange"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Party/PartyUpdateResponseNew.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Party; 2 | 3 | internal class PartyUpdateResponseNew : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x3E6E; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | PartyUpdateResponse.PartyUpdateResponseCommon(packet); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Library/RSBot.Loader.Library/PayloadHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | 8 | template 9 | void PayloadRead(ifstream& stream, T& dst) 10 | { 11 | stream.read(reinterpret_cast(&dst), sizeof(T)); 12 | } 13 | 14 | void PayloadReadString(ifstream& stream, string& dst) 15 | { 16 | int nLength; 17 | PayloadRead(stream, nLength); 18 | 19 | char* buffer = (char*)malloc(nLength); 20 | stream.read(buffer, nLength); 21 | buffer[nLength] = '\0'; 22 | 23 | dst = string(buffer); 24 | } 25 | 26 | template 27 | void PayloadWrite(ofstream& stream, T& src) 28 | { 29 | stream.write(reinterpret_cast(&src), sizeof(T)); 30 | } 31 | 32 | void PayloadWriteString(ofstream& stream, string& src) 33 | { 34 | int nLength = src.size(); 35 | PayloadWrite(stream, nLength); 36 | 37 | stream.write(src.c_str(), nLength); 38 | } -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/AgentLoginResponseRigid.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.General.PacketHandler; 4 | 5 | internal class AgentLoginResponseRigid : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xA118; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | new AgentLoginResponse().Invoke(packet); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefExtraAbilityByEquipItemOptLevel.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public class RefExtraAbilityByEquipItemOptLevel : IReference 4 | { 5 | private const int SKILL_COUNT = 5; 6 | 7 | public uint ItemId; 8 | public byte OptLevel; 9 | public uint[] Skills; 10 | 11 | public bool Load(ReferenceParser parser) 12 | { 13 | if (!parser.TryParse(0, out int service) || service == 0) 14 | return false; 15 | 16 | parser.TryParse(1, out ItemId); 17 | parser.TryParse(2, out OptLevel); 18 | 19 | Skills = new uint[SKILL_COUNT]; 20 | for (var i = 0; i < SKILL_COUNT; i++) 21 | { 22 | if (!parser.TryParse(20 + i, out uint skillId)) 23 | return false; 24 | 25 | Skills[i] = skillId; 26 | } 27 | 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GatewayLoginResponseGlobal.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.General.PacketHandler; 4 | 5 | internal class GatewayLoginResponseGlobal : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xA10A; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | new GatewayLoginResponse().Invoke(packet); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/InventoryStorageDataResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 2 | 3 | internal class InventoryStorageDataResponse : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x3049; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | Game.ChunkedPacket.WriteBytes(packet.GetBytes()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Entity/EntitySingleSpawnResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Entity; 4 | 5 | internal class EntitySingleSpawnResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x3015; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | SpawnManager.Parse(packet); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/CaptchaDataResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | using RSBot.General.Components; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | internal class CaptchaDataResponse : IPacketHandler 7 | { 8 | /// 9 | /// Gets or sets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | public ushort Opcode => 0x2322; 15 | 16 | /// 17 | /// Gets or sets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | public PacketDestination Destination => PacketDestination.Client; 23 | 24 | /// 25 | /// Handles the packet. 26 | /// 27 | /// The packet. 28 | public void Invoke(Packet packet) 29 | { 30 | AutoLogin.SendStaticCaptcha(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Bundle/Protection/BadStateRecovery.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Objects; 3 | 4 | namespace RSBot.Training.Bundle.Protection; 5 | 6 | internal class BadStateRecovery 7 | { 8 | public static bool Active => PlayerConfig.Get("RSBot.Protection.checkUseBadStatusSkill"); 9 | public static uint SkillId => PlayerConfig.Get("RSBot.Protection.BadStatusSkill"); 10 | public static uint SkillIdForUniversall => PlayerConfig.Get("RSBot.Protection.BadStatusSkill"); 11 | public static uint SkillIdForPurification => PlayerConfig.Get("RSBot.Protection.BadStatusSkill"); 12 | public static bool IsInBadStatus => IsUniversall || IsPurification; 13 | 14 | public static bool IsUniversall => (Game.Player.BadEffect & BadEffectAll.UniversallPillEffects) != 0; 15 | public static bool IsPurification => (Game.Player.BadEffect & BadEffectAll.PurificationPillEffects) != 0; 16 | } 17 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/InventoryGuildStorageDataResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 2 | 3 | internal class InventoryGuildStorageDataResponse : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x3255; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | Game.ChunkedPacket.WriteBytes(packet.GetBytes()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GlobalSecondaryPasswordResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Network; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | public class GlobalSecondaryPasswordResponse : IPacketHandler 7 | { 8 | public ushort Opcode => 0xA117; 9 | 10 | public PacketDestination Destination => PacketDestination.Client; 11 | 12 | public void Invoke(Packet packet) 13 | { 14 | var type = packet.ReadByte(); 15 | if (type != 4) 16 | return; 17 | 18 | var result = packet.ReadByte(); 19 | if (result == 1) 20 | { 21 | Log.NotifyLang("SecondaryPwSuccess"); 22 | return; 23 | } 24 | 25 | var errorCode = packet.ReadByte(); 26 | switch (errorCode) 27 | { 28 | case 1: 29 | Log.NotifyLang("SecondaryPwWrong"); 30 | break; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/RandomExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Extensions; 4 | 5 | public static class RandomExtensions 6 | { 7 | /// 8 | /// Returns a random floating-point number that is greater than or equal to , and less than 9 | /// . 10 | /// 11 | /// 12 | /// 13 | /// 14 | public static float NextFloat(this Random random, float min, float max) 15 | { 16 | return (max - min) * (float)random.NextDouble() + min; 17 | } 18 | 19 | /// 20 | /// Returns a random floating-point number that is greater than or equal to 0.0, and less than 1.0. 21 | /// 22 | public static float NextFloat(this Random random) 23 | { 24 | return (float)random.NextDouble(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Botbases/RSBot.Lure/Bundle/TargetBundle.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components; 3 | using RSBot.Core.Objects.Spawn; 4 | using RSBot.Lure.Components; 5 | 6 | namespace RSBot.Lure.Bundle; 7 | 8 | internal class TargetBundle 9 | { 10 | public static void Tick() 11 | { 12 | if (!LureConfig.UseAttackingSkills && !LureConfig.UseNormalAttack) 13 | return; 14 | 15 | SpawnManager.TryGetEntity( 16 | f => 17 | f.AttackingPlayer == false 18 | && Game.SelectedEntity?.UniqueId != f.UniqueId 19 | && f.Position.DistanceTo(LureConfig.Area.Position) > 15 20 | && f.Position.DistanceTo(LureConfig.Area.Position) <= LureConfig.Area.Radius, 21 | out var mob 22 | ); 23 | 24 | if (Game.Player.InAction) 25 | SkillManager.CancelAction(); 26 | 27 | mob?.TrySelect(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Plugins/RSBot.Party/Bundle/Commands/CommandsConfig.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Party.Bundle.Commands; 2 | 3 | internal class CommandsConfig 4 | { 5 | /// 6 | /// Gets or sets the player list. 7 | /// 8 | /// 9 | /// The player list. 10 | /// 11 | public string[] PlayerList { get; set; } 12 | 13 | /// 14 | /// Gets or sets a value indicating whether [listen from list]. 15 | /// 16 | /// 17 | /// true if [listen from list]; otherwise, false. 18 | /// 19 | public bool ListenFromList { get; set; } 20 | 21 | /// 22 | /// Gets or sets a value indicating whether [only from master]. 23 | /// 24 | /// 25 | /// true if [only from master]; otherwise, false. 26 | /// 27 | public bool ListenOnlyMaster { get; set; } 28 | } 29 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Hooks/Gateway/GatewayLoginResponseHookOfficial.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Hooks; 2 | 3 | internal class GatewayLoginResponseHookOfficial : IPacketHook 4 | { 5 | /// 6 | /// Gets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0xA10A; 12 | 13 | /// 14 | /// Gets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Replaces the packet and returns a new packet. 23 | /// 24 | /// 25 | /// 26 | public Packet ReplacePacket(Packet packet) 27 | { 28 | return new GatewayLoginResponseHook().ReplacePacket(packet); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GatewayLoginRequestGlobal.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.General.PacketHandler; 4 | 5 | internal class GatewayLoginRequestGlobal : IPacketHandler 6 | { 7 | /// 8 | /// Gets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x610A; 14 | 15 | /// 16 | /// Gets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Server; 22 | 23 | /// 24 | /// Replaces the packet and returns a new packet. 25 | /// 26 | /// 27 | /// 28 | public void Invoke(Packet packet) 29 | { 30 | new GatewayLoginRequest().Invoke(packet); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GatewayPendingUpdateResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | using RSBot.General.Views; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | internal class GatewayPendingUpdateResponse : IPacketHandler 7 | { 8 | /// 9 | /// Gets or sets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | public ushort Opcode => 0x210E; 15 | 16 | /// 17 | /// Gets or sets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | public PacketDestination Destination => PacketDestination.Client; 23 | 24 | /// 25 | /// Handles the packet. 26 | /// 27 | /// The packet. 28 | public void Invoke(Packet packet) 29 | { 30 | View.PendingWindow?.Update(packet); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RegionInfo/LegacyRegionInfo.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Objects; 2 | using RSBot.NavMeshApi.Mathematics; 3 | 4 | namespace RSBot.Core.Client.ReferenceObjects.RegionInfo; 5 | 6 | public class LegacyRegionInfo : IReference 7 | { 8 | public byte XSector; 9 | public byte YSector; 10 | public string RegionType = "ALL"; 11 | public RectangleF Bounds; 12 | public Region Region => new(XSector, YSector); 13 | 14 | public bool Load(ReferenceParser parser) 15 | { 16 | parser.TryParse(0, out XSector); 17 | parser.TryParse(1, out YSector); 18 | parser.TryParse(2, out RegionType); 19 | 20 | parser.TryParse(3, out float minX); 21 | parser.TryParse(4, out float minY); 22 | parser.TryParse(5, out float maxX); 23 | parser.TryParse(6, out float maxY); 24 | 25 | Bounds = new RectangleF(minX, minY, maxX, maxY); 26 | 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/CharacterSelectionResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Network; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | internal class CharacterSelectionResponse : IPacketHandler 7 | { 8 | /// 9 | /// Gets or sets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | public ushort Opcode => 0xB001; 15 | 16 | /// 17 | /// Gets or sets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | public PacketDestination Destination => PacketDestination.Client; 23 | 24 | /// 25 | /// Handles the packet. 26 | /// 27 | /// The packet. 28 | public void Invoke(Packet packet) 29 | { 30 | Log.NotifyLang("Welcome"); 31 | Log.StatusLang("Ready"); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Dungeon/DungeonVoxel.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | using RSBot.NavMeshApi.Mathematics; 3 | 4 | namespace RSBot.NavMeshApi.Dungeon; 5 | 6 | public class DungeonVoxel 7 | { 8 | public const float Width = 200.0f; 9 | public const float Height = 200.0f; 10 | public const float Length = 200.0f; 11 | 12 | private readonly List _blocks = new List(); 13 | 14 | public BoundingBoxF BoundingBox { get; } 15 | public DungeonVoxelID ID { get; set; } 16 | public IReadOnlyList Blocks => _blocks; 17 | 18 | public DungeonVoxel(DungeonVoxelID id) 19 | { 20 | this.ID = id; 21 | 22 | var min = new Vector3(this.ID.X * Width, this.ID.Y * Height, this.ID.Z * Length); 23 | this.BoundingBox = new BoundingBoxF(min, min + new Vector3(Width, Height, Length)); 24 | } 25 | 26 | public void AddBlock(NavMeshInstBlock block) => _blocks.Add(block); 27 | } 28 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/AgentLoginRequestHookRigid.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Network; 2 | 3 | namespace RSBot.General.PacketHandler; 4 | 5 | internal class AgentLoginRequestHookRigid : IPacketHook 6 | { 7 | /// 8 | /// Gets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x6118; 14 | 15 | /// 16 | /// Gets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Server; 22 | 23 | /// 24 | /// Replaces the packet and returns a new packet. 25 | /// 26 | /// 27 | /// 28 | public Packet ReplacePacket(Packet packet) 29 | { 30 | return new AgentLoginRequestHook().ReplacePacket(packet); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefEventRewardItems.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public class RefEventRewardItems : IReference 4 | { 5 | public bool Load(ReferenceParser parser) 6 | { 7 | parser.TryParse(0, out EventId); 8 | parser.TryParse(1, out EventCodeName); 9 | parser.TryParse(2, out ItemCodeName); 10 | parser.TryParse(3, out ItemAmount); 11 | parser.TryParse(7, out MinRequiredLevel); 12 | parser.TryParse(8, out MaxRequiredLevel); 13 | 14 | return true; 15 | } 16 | 17 | #region Fields 18 | 19 | public uint EventId; 20 | public string EventCodeName; 21 | public string ItemCodeName; 22 | public ushort ItemAmount; 23 | public ushort MinRequiredLevel; 24 | public ushort MaxRequiredLevel; 25 | 26 | public RefObjItem Item => ItemCodeName == "xxx" ? null : Game.ReferenceManager.GetRefItem(ItemCodeName); 27 | 28 | #endregion Fields 29 | } 30 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Character/CharacterDataResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Character; 2 | 3 | internal class CharacterDataResponse : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x3013; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | if (Game.ChunkedPacket == null) 28 | return; 29 | 30 | Game.ChunkedPacket.WriteBytes(packet.GetBytes()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/NavMesh.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | using RSBot.NavMeshApi.Cells; 3 | using RSBot.NavMeshApi.Mathematics; 4 | 5 | namespace RSBot.NavMeshApi; 6 | 7 | public abstract class NavMesh 8 | { 9 | public abstract NavMeshType Type { get; } 10 | public abstract RID Region { get; } 11 | 12 | public virtual NavMeshCell GetNavMeshCell(int index) => throw new NotImplementedException(); 13 | 14 | public virtual NavMeshCell ResolveCellAndHeight(ref Vector3 offset) => throw new NotImplementedException(); 15 | 16 | public virtual bool ResolveCellAndHeight(NavMeshTransform position) => throw new NotImplementedException(); 17 | 18 | public virtual NavMeshRaycastResult Raycast( 19 | NavMeshTransform src, 20 | NavMeshTransform dst, 21 | NavMeshRaycastType type, 22 | out NavMeshRaycastHit hit 23 | ) => throw new NotImplementedException(); 24 | 25 | public override string ToString() => $"[{this.Type}] {this.Region}"; 26 | } 27 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/Pk2ArchiveExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using RSBot.Core.Client; 4 | using RSBot.FileSystem; 5 | 6 | namespace RSBot.Core.Extensions; 7 | 8 | public static class Pk2Extensions 9 | { 10 | /// 11 | /// Gets the stream from a DDJ file in the Pk2 archive and converts the DDS Format to System.Image. 12 | /// 13 | /// The archive. 14 | /// 15 | public static Image ToImage(this IFile file) 16 | { 17 | var ddjBuffer = file.OpenRead().ReadAllBytes(); 18 | 19 | try 20 | { 21 | var ddsBuffer = new byte[ddjBuffer.Length - 20]; 22 | Array.ConstrainedCopy(ddjBuffer, 20, ddsBuffer, 0, ddjBuffer.Length - 20); //Cuts the first 20 bytes. 23 | return DDSImage.ToBitmap(ddsBuffer); 24 | } 25 | catch 26 | { 27 | return new Bitmap(16, 16); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Dungeon/DungeonID.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Dungeon; 2 | 3 | [Serializable] 4 | public enum DungeonID : byte 5 | { 6 | World = 0, 7 | Dunhwang_Cv1 = 1, 8 | jinsi_floor06 = 2, // @"dungeon\china\jinsi_floor06.dof" 9 | jinsi_floor05 = 3, // @"dungeon\china\jinsi_floor05.dof" 10 | jinsi_floor04 = 4, // @"dungeon\china\jinsi_floor04.dof" 11 | jinsi_floor03 = 5, // @"dungeon\china\jinsi_floor03.dof" 12 | jinsi_floor02 = 6, // @"dungeon\china\jinsi_floor02.dof" 13 | jinsi_floor01 = 7, // @"dungeon\china\jinsi_floor01.dof" 14 | gngwc = 8, 15 | @event = 9, 16 | pha_cv_selkis = 10, 17 | pha_cv_neith = 11, 18 | pha_cv_anubis = 12, 19 | pha_cv_isis = 13, 20 | pha_cv_haro = 14, 21 | st_seth = 15, 22 | pha_cv = 16, 23 | fortress_dungeon = 17, 24 | flame = 18, 25 | piety_boss_di = 19, 26 | piety_boss_uno = 20, 27 | piety_boss_upi = 21, 28 | hide = 22, 29 | gm_event = 23, 30 | prison = 24, 31 | } 32 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Entity/EntityGroupSpawnDataResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Entity; 2 | 3 | internal class EntityGroupSpawnDataResponse : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x3019; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | if (Game.SpawnInfo == null) 28 | return; //No active spawn! 29 | 30 | Game.SpawnInfo.Packet.WriteBytes(packet.GetBytes()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/Local/LocalFile.cs: -------------------------------------------------------------------------------- 1 | using RSBot.FileSystem.IO; 2 | 3 | namespace RSBot.FileSystem.Local; 4 | 5 | public class LocalFile : IFile 6 | { 7 | private readonly FileInfo _fileInfo; 8 | 9 | public LocalFile(string filePath, IFileSystem fileSystem) 10 | { 11 | Path = filePath; 12 | FileSystem = fileSystem; 13 | 14 | _fileInfo = new FileInfo(filePath); 15 | } 16 | 17 | public IFileSystem FileSystem { get; } 18 | public IFolder Parent => FileSystem.GetFolder(System.IO.Path.GetDirectoryName(Path) ?? ""); 19 | public string Path { get; } 20 | public string Name => _fileInfo.Name; 21 | public string Extension => _fileInfo.Extension; 22 | public long Size => _fileInfo.Length; 23 | 24 | public long CreateTime => _fileInfo.CreationTime.Ticks; 25 | 26 | public long ModifyTime => _fileInfo.LastWriteTime.Ticks; 27 | 28 | public IFileReader OpenRead() 29 | { 30 | return FileSystem.OpenRead(Path); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Dependencies/Languages/RSBot.Map/ru_RU.rsl: -------------------------------------------------------------------------------- 1 | DisplayName="Карта" 2 | RSBot.Map.Main.label3="Эта функция не работает, пока бот активен.\nЕсли вы хотите, чтобы бот атаковал,\nпока активен, настройте приоритет мобов." 3 | RSBot.Map.Main.checkBoxAutoSelectUniques="Автовыделение уников" 4 | RSBot.Map.Main.label4="Показать:" 5 | RSBot.Map.Main.lblRegion="Не в игре" 6 | NoName="<Без имени>" 7 | RSBot.Map.Main.checkEnableCollisions="Включить обнаружение препятствий" 8 | RSBot.Map.Main.TabControl.TabPage.Panel.btnNvmResetToPlayer="Сбросить" 9 | RSBot.Map.Main.TabControl.mapCanvas="Миникарта" 10 | RSBot.Map.Main.TabControl.tabNavMeshViewer="NavMesh Viewer" 11 | RSBot.Map.Main.Panel.Panel.label4="Фильтр:" 12 | RSBot.Map.Main.Panel.checkEnableCollisions="Включить обнаружение препятствий" 13 | RSBot.Map.Main.Panel.label3="Эта функция не работает, пока бот активен.\nЕсли вы хотите, чтобы бот атаковал,\nпока активен, настройте приоритет мобов." 14 | RSBot.Map.Main.Panel.checkBoxAutoSelectUniques="Автовыделение уников" 15 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Edges/NavMeshEdgeFlag.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.NavMeshApi.Edges; 2 | 3 | [Flags] 4 | public enum NavMeshEdgeFlag 5 | { 6 | None = 0, 7 | 8 | BlockDst2Src = 1, 9 | 10 | BlockSrc2Dst = 2, 11 | 12 | Blocked = BlockDst2Src | BlockSrc2Dst, 13 | 14 | /// 15 | /// Connects a with another 16 | /// 17 | Internal = 4, 18 | 19 | /// 20 | /// Connects a with another 21 | /// 22 | Global = 8, 23 | 24 | /// 25 | /// Used for Bridges, only collied if within same 26 | /// 27 | Railing = 16, 28 | 29 | /// 30 | /// Used for Dungeon entrances (obsolete?) 31 | /// 32 | Entrance = 32, 33 | 34 | Bit6 = 64, 35 | 36 | /// 37 | /// Can be casted through 38 | /// 39 | Siege = 128, 40 | } 41 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/PacketHandler/GatewayServerListRequestHook.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | using RSBot.Core.Network; 3 | 4 | namespace RSBot.General.PacketHandler; 5 | 6 | internal class GatewayServerListRequestHook : IPacketHook 7 | { 8 | /// 9 | /// Gets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | public ushort Opcode => 0x6101; 15 | 16 | /// 17 | /// Gets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | public PacketDestination Destination => PacketDestination.Server; 23 | 24 | /// 25 | /// Replaces the packet and returns a new packet. 26 | /// 27 | /// 28 | /// 29 | public Packet ReplacePacket(Packet packet) 30 | { 31 | ClientlessManager.RequestServerList(); 32 | return null; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Character/CharacterDataBeginResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Character; 2 | 3 | internal class CharacterDataBeginResponse : IPacketHandler 4 | { 5 | /// 6 | /// Gets or sets the opcode. 7 | /// 8 | /// 9 | /// The opcode. 10 | /// 11 | public ushort Opcode => 0x34A5; 12 | 13 | /// 14 | /// Gets or sets the destination. 15 | /// 16 | /// 17 | /// The destination. 18 | /// 19 | public PacketDestination Destination => PacketDestination.Client; 20 | 21 | /// 22 | /// Handles the packet. 23 | /// 24 | /// The packet. 25 | public void Invoke(Packet packet) 26 | { 27 | Game.Player?.StopMoving(); 28 | Game.ChunkedPacket = new Packet(0); 29 | 30 | if (Game.Clientless) 31 | Game.Ready = false; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Plugins/RSBot.Log/Bootstrap.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using RSBot.Core.Plugins; 5 | 6 | namespace RSBot.Log; 7 | 8 | public class Bootstrap : IPlugin 9 | { 10 | /// 11 | public string InternalName => "RSBot.Log"; 12 | 13 | /// 14 | public string DisplayName => "Log"; 15 | 16 | /// 17 | public bool DisplayAsTab => true; 18 | 19 | /// 20 | public int Index => 99; 21 | 22 | /// 23 | public bool RequireIngame => false; 24 | 25 | /// 26 | public void Initialize() { } 27 | 28 | /// 29 | public Control View => Views.View.Instance; 30 | 31 | /// 32 | public void Translate() 33 | { 34 | LanguageManager.Translate(View, Kernel.Language); 35 | } 36 | 37 | /// 38 | public void OnLoadCharacter() 39 | { 40 | // do nothing 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Plugins/RSBot.Chat/Bootstrap.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using RSBot.Core.Plugins; 5 | 6 | namespace RSBot.Chat; 7 | 8 | public class Bootstrap : IPlugin 9 | { 10 | /// 11 | public string InternalName => "RSBot.Chat"; 12 | 13 | /// 14 | public string DisplayName => "Chat"; 15 | 16 | /// 17 | public bool DisplayAsTab => true; 18 | 19 | /// 20 | public int Index => 98; 21 | 22 | /// 23 | public bool RequireIngame => true; 24 | 25 | /// 26 | public void Initialize() { } 27 | 28 | /// 29 | public Control View => Views.View.Instance; 30 | 31 | /// 32 | public void Translate() 33 | { 34 | LanguageManager.Translate(View, Kernel.Language); 35 | } 36 | 37 | /// 38 | public void OnLoadCharacter() 39 | { 40 | // do nothing 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Plugins/RSBot.Items/Bootstrap.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using RSBot.Core.Plugins; 5 | 6 | namespace RSBot.Items; 7 | 8 | public class Bootstrap : IPlugin 9 | { 10 | /// 11 | public string InternalName => "RSBot.Items"; 12 | 13 | /// 14 | public string DisplayName => "Items"; 15 | 16 | /// 17 | public bool DisplayAsTab => true; 18 | 19 | /// 20 | public int Index => 5; 21 | 22 | /// 23 | public bool RequireIngame => true; 24 | 25 | /// 26 | public void Initialize() { } 27 | 28 | /// 29 | public Control View => Views.View.Instance; 30 | 31 | /// 32 | public void Translate() 33 | { 34 | LanguageManager.Translate(View, Kernel.Language); 35 | } 36 | 37 | /// 38 | public void OnLoadCharacter() 39 | { 40 | // do nothing 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Plugins/RSBot.Log/RSBot.Log.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/ObjectRarity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | [Flags] 6 | public enum ObjectRarity : byte 7 | { 8 | ClassA = 0, //ITEM=White MOB=General 9 | ClassB = 1, //ITEM=Blue MOB=Champion 10 | ClassC = 2, //ITEM=SOX MOB=unused 11 | ClassD = 3, //ITEM=SET MOB=Unique 12 | ClassE = 4, // MOB=Giant 13 | ClassF = 5, // MOB=Titan 14 | ClassG = 6, //ITEM=ROC,SET_11_B MOB=Elite 15 | ClassH = 7, //ITEM=LEGEND MOB=Elite (Strong) 16 | ClassI = 8, // MOB=Unique (TQ, GOD, SD) 17 | 18 | //Party = 10 19 | //For ITEM_: see above, this rarity is also used in SERVER_AGENT_OBJECT_SPAWN when OBJECT equals ITEM... 20 | //For COS_T / TRADE_COS: it might be used for TIEF/HUNTER AI target priority since behemoth and lvl60+ cos are higher than normal ones 21 | //For MOB_: it could affect on spawn chance unless its a unique? 22 | } 23 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/Inventory/Item/InventoryItemCosInfo.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects.Item; 2 | 3 | public struct InventoryItemCosInfo 4 | { 5 | /// 6 | /// Model Id 7 | /// 8 | public uint Id; 9 | 10 | /// 11 | /// The name 12 | /// 13 | public string Name; 14 | 15 | private byte _level; 16 | 17 | /// 18 | /// The level (Do not use lower then chinese clients!) 19 | /// 20 | public byte Level 21 | { 22 | get 23 | { 24 | if (Game.ClientType >= GameClientType.Chinese_Old) 25 | return _level; 26 | 27 | var record = Game.ReferenceManager.GetRefObjChar(Id); 28 | if (record != null) 29 | return record.Level; 30 | 31 | return 1; 32 | } 33 | set => _level = value; 34 | } 35 | 36 | /// 37 | /// The rental 38 | /// 39 | public RentInfo Rental; 40 | } 41 | -------------------------------------------------------------------------------- /Plugins/RSBot.Chat/RSBot.Chat.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.Items/RSBot.Items.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.Quest/QuestPlugin.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using RSBot.Core.Event; 5 | using RSBot.Core.Plugins; 6 | using RSBot.Quest.Views.Sidebar; 7 | 8 | namespace RSBot.Quest; 9 | 10 | public class QuestPlugin : IPlugin 11 | { 12 | public string InternalName => "RSBot.QuestLog"; 13 | public string DisplayName => "Quests"; 14 | public bool DisplayAsTab => false; 15 | public int Index => 0; 16 | public bool RequireIngame => true; 17 | 18 | public void Initialize() 19 | { 20 | Views.View.SidebarElement = new QuestSidebarElement(); 21 | 22 | EventManager.FireEvent("OnAddSidebarElement", Views.View.SidebarElement); 23 | } 24 | 25 | public Control View => Views.View.Main; 26 | 27 | public void Translate() 28 | { 29 | LanguageManager.Translate(View, Kernel.Language); 30 | } 31 | 32 | /// 33 | public void OnLoadCharacter() 34 | { 35 | // do nothing 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Party/PartyAutoRefuseResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Party; 4 | 5 | internal class PartyAutoRefuseResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xB067; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | if (Game.Party.HasPendingRequest) 30 | Game.AcceptanceRequest = null; 31 | 32 | EventManager.FireEvent("OnPartyRequestRefused"); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Plugins/RSBot.Skills/RSBot.Skills.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Hooks/Agent/Action/ActionSelectRequestHook.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | 3 | namespace RSBot.Core.Network.Hooks.Agent.Action; 4 | 5 | internal class ActionSelectRequestHook : IPacketHook 6 | { 7 | /// 8 | /// Gets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x7045; 14 | 15 | /// 16 | /// Gets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Server; 22 | 23 | /// 24 | /// Replaces the packet and returns a new packet. 25 | /// 26 | /// 27 | /// 28 | public Packet ReplacePacket(Packet packet) 29 | { 30 | if (Kernel.Bot.Running || ShoppingManager.Running) 31 | return null; 32 | 33 | return packet; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Hooks/Agent/Action/ActionTalkResponseHook.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Components; 2 | 3 | namespace RSBot.Core.Network.Hooks.Agent.Action; 4 | 5 | internal class ActionTalkResponseHook : IPacketHook 6 | { 7 | /// 8 | /// Gets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xB046; 14 | 15 | /// 16 | /// Gets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Replaces the packet and returns a new packet. 25 | /// 26 | /// 27 | /// 28 | public Packet ReplacePacket(Packet packet) 29 | { 30 | if (Kernel.Bot.Running || ShoppingManager.Running) 31 | return null; 32 | 33 | return packet; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Plugins/RSBot.Inventory/RSBot.Inventory.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.Protection/RSBot.Protection.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Plugins/RSBot.Statistics/RSBot.Statistics.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Subscriber/ConfigSubscriber.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | using RSBot.Training.Bundle; 3 | 4 | namespace RSBot.Training.Subscriber; 5 | 6 | internal class ConfigSubscriber 7 | { 8 | /// 9 | /// Subscribes the events. 10 | /// 11 | public static void SubscribeEvents() 12 | { 13 | EventManager.SubscribeEvent("OnEnterGame", ReloadSettings); 14 | EventManager.SubscribeEvent("OnSavePlayerConfig", ReloadSettings); 15 | } 16 | 17 | /// 18 | /// Configurations the subscriber on save player settings. 19 | /// 20 | private static void ReloadSettings() 21 | { 22 | if (Container.Lock == null || Container.Bot == null) 23 | return; 24 | 25 | lock (Container.Lock) 26 | { 27 | //Reload the botbase config 28 | Container.Bot.Reload(); 29 | 30 | //Reload all bundles to apply the new configuration 31 | Bundles.Reload(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Action/ActionCommandResponse.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Network.Handler.Agent.Action; 2 | 3 | internal class ActionCommandResponse : IPacketHandler 4 | { 5 | /// 6 | /// Invokes the specified packet. 7 | /// 8 | /// The packet. 9 | public void Invoke(Packet packet) 10 | { 11 | if (packet.ReadByte() != 0x01) 12 | return; 13 | 14 | Objects.Action.DeserializeEnd(packet); 15 | } 16 | 17 | #region Properites 18 | 19 | /// 20 | /// Gets or sets the opcode. 21 | /// 22 | /// 23 | /// The opcode. 24 | /// 25 | public ushort Opcode => 0xB071; 26 | 27 | /// 28 | /// Gets or sets the destination. 29 | /// 30 | /// 31 | /// The destination. 32 | /// 33 | public PacketDestination Destination => PacketDestination.Client; 34 | 35 | #endregion Properites 36 | } 37 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/StoneAckResponseHandler.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Client.ReferenceObjects; 2 | using RSBot.Core.Components; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 5 | 6 | internal class StoneAckResponseHandler : IPacketHandler 7 | { 8 | #region Methods 9 | 10 | public void Invoke(Packet packet) 11 | { 12 | var type = AlchemyType.MagicStone; 13 | 14 | if (AlchemyManager.ActiveAlchemyItems != null && AlchemyManager.ActiveAlchemyItems.Count >= 2) 15 | { 16 | var stone = AlchemyManager.ActiveAlchemyItems[1].Record; 17 | if (stone.TypeID3 == 11 && stone.TypeID4 == 2) 18 | type = AlchemyType.AttributeStone; 19 | } 20 | 21 | GenericAlchemyAckResponse.Invoke(packet, type); 22 | } 23 | 24 | #endregion Methods 25 | 26 | #region Properties 27 | 28 | public ushort Opcode => 0xB151; 29 | 30 | public PacketDestination Destination => PacketDestination.Client; 31 | 32 | #endregion Properties 33 | } 34 | -------------------------------------------------------------------------------- /Plugins/RSBot.General/Views/View.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.General.Views; 2 | 3 | internal class View 4 | { 5 | /// 6 | /// Gets or sets the instance. 7 | /// 8 | /// 9 | /// The instance. 10 | /// 11 | public static Main Instance { get; } = new(); 12 | 13 | /// 14 | /// Gets or sets the instance. 15 | /// 16 | /// 17 | /// The instance. 18 | /// 19 | public static PendingWindow PendingWindow { get; } = new(); 20 | 21 | /// 22 | /// Gets or sets the instance. 23 | /// 24 | /// 25 | /// The instance. 26 | /// 27 | public static AccountsWindow AccountsWindow { get; } = new(); 28 | 29 | /// 30 | /// Gets or sets the instance. 31 | /// 32 | /// 33 | /// The instance. 34 | /// 35 | public static SoundNotificationWindow SoundNotificationWindow { get; } = new(); 36 | } 37 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/Bootstrap.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | using RSBot.Core; 3 | using RSBot.Core.Components; 4 | using RSBot.Core.Plugins; 5 | 6 | namespace RSBot.Map; 7 | 8 | public class Bootstrap : IPlugin 9 | { 10 | /// 11 | public string InternalName => "RSBot.Map"; 12 | 13 | /// 14 | public string DisplayName => "Map"; 15 | 16 | /// 17 | public bool DisplayAsTab => true; 18 | 19 | /// 20 | public int Index => 6; 21 | 22 | /// 23 | public bool RequireIngame => true; 24 | 25 | /// 26 | public void Initialize() { } 27 | 28 | /// 29 | public Control View => Views.View.Instance; 30 | 31 | /// 32 | public void Translate() 33 | { 34 | LanguageManager.Translate(View, Kernel.Language); 35 | } 36 | 37 | /// 38 | public void OnLoadCharacter() 39 | { 40 | Views.View.Instance.InitUniqueObjects(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefAbilityByItemOptLevel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace RSBot.Core.Client.ReferenceObjects; 5 | 6 | public class RefAbilityByItemOptLevel : IReference 7 | { 8 | public int Id; 9 | public uint ItemId; 10 | public byte OptLevel; 11 | 12 | public int PrimaryKey => Id; 13 | 14 | public bool Load(ReferenceParser parser) 15 | { 16 | if (!parser.TryParse(0, out int service) || service == 0) 17 | return false; 18 | 19 | if (!parser.TryParse(1, out Id)) 20 | return false; 21 | 22 | parser.TryParse(2, out ItemId); 23 | parser.TryParse(3, out OptLevel); 24 | 25 | return true; 26 | } 27 | 28 | /// 29 | /// Gets the links. 30 | /// 31 | /// 32 | public IEnumerable GetLinks() 33 | { 34 | return Game.ReferenceManager.SkillByItemOptLevels.Where(tl => tl.Link == Id).Select(p => p.SkillId); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Objects/TalkOption.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Objects; 2 | 3 | public enum TalkOption : byte 4 | { 5 | Store = 1, 6 | Quest = 2, 7 | Storage = 3, 8 | Repair = 4, 9 | Monster = 5, 10 | SetReturnPoint = 7, 11 | TeleportTarget = 8, 12 | TeleportReturnPoint = 9, 13 | WithdrawSkill = 10, 14 | Stable = 11, 15 | Trade = 12, 16 | Guild = 15, 17 | MagicPopPlay = 17, 18 | MagicPopExchange = 18, 19 | EventChristmasExchange = 19, 20 | Trader = 20, 21 | Tief = 21, 22 | Hunter = 22, 23 | FortressAdministration = 23, 24 | FortressApplication = 24, 25 | FortressStructManagement = 25, 26 | FortressItemProduction = 26, 27 | FortressTraining = 27, 28 | TeleportLastLocation = 28, 29 | TeleportGuide = 30, 30 | FortressPully = 31, 31 | GrantMagicOption = 32, 32 | ArenaManager = 33, 33 | ArenaItemManager = 34, 34 | Consigment = 35, 35 | SummonPartyMember = 39, 36 | TeleportExitFortressDungeon = 40, 37 | TeleportExitDungeon = 41, 38 | } 39 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Container.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Training.Bot; 2 | using RSBot.Training.Views; 3 | 4 | namespace RSBot.Training; 5 | 6 | internal static class Container 7 | { 8 | private static Main _mainView; 9 | 10 | /// 11 | /// Gets or sets the bot. 12 | /// 13 | /// 14 | /// The bot. 15 | /// 16 | public static Botbase Bot { get; set; } 17 | 18 | /// 19 | /// Gets or sets the view. 20 | /// 21 | /// 22 | /// The view. 23 | /// 24 | public static Main View 25 | { 26 | get 27 | { 28 | if (_mainView == null || _mainView.Disposing || _mainView.IsDisposed) 29 | _mainView = new Main(); 30 | 31 | return _mainView; 32 | } 33 | } 34 | 35 | /// 36 | /// Gets or sets the lock. 37 | /// 38 | /// 39 | /// The lock. 40 | /// 41 | public static object Lock { get; set; } 42 | } 43 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Extensions/StreamReaderExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Text; 3 | 4 | namespace RSBot.Core.Extensions; 5 | 6 | public static class StreamReaderExtensions 7 | { 8 | public static string ReadLineByCRLF(this StreamReader reader) 9 | { 10 | var builder = new StringBuilder(); 11 | return reader.ReadLineByCRLF(builder); 12 | } 13 | 14 | public static string ReadLineByCRLF(this StreamReader reader, StringBuilder builder) 15 | { 16 | builder.Clear(); //clear builder 17 | 18 | const int CODE_LF = 0x0A; 19 | const int CODE_CR = 0x0D; 20 | 21 | while (true) 22 | { 23 | var c = reader.Read(); 24 | if (c == -1) 25 | break; 26 | 27 | if (c == CODE_CR && reader.Peek() == CODE_LF) 28 | { 29 | reader.Read(); //read LF 30 | break; 31 | } 32 | 33 | builder.Append((char)c); 34 | } 35 | 36 | return builder.ToString(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Character/CharacterIncreaseStrResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Character; 4 | 5 | internal class CharacterIncreaseStrResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xB050; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | if (packet.ReadByte() != 1) 30 | return; 31 | 32 | Game.Player.StatPoints--; 33 | EventManager.FireEvent("OnIncreaseStrength"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Character/CharacterIncreaseIntResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Character; 4 | 5 | internal class CharacterIncreaseIntResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0xB051; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | if (packet.ReadByte() != 1) 30 | return; 31 | 32 | Game.Player.StatPoints--; 33 | EventManager.FireEvent("OnIncreaseIntelligence"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/CharacterSelection/CharacterSelectionJoinRequest.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.CharacterSelection; 4 | 5 | internal class CharacterSelectionJoinRequest : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x7001; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Server; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | var characterName = packet.ReadString(); 30 | 31 | PlayerConfig.Load(characterName); 32 | 33 | EventManager.FireEvent("OnEnterGame"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Dungeon/NavMeshInstBlock.cs: -------------------------------------------------------------------------------- 1 | using RSBot.NavMeshApi.Mathematics; 2 | 3 | namespace RSBot.NavMeshApi.Dungeon; 4 | 5 | public class NavMeshInstBlock : NavMeshInst 6 | { 7 | public BoundingBoxF BoundingBox { get; set; } 8 | 9 | public List ObjectList { get; set; } = new List(); 10 | 11 | /// 12 | /// Used for navigation 13 | /// 14 | public List ConnectedBlocks { get; } = new List(); 15 | 16 | /// 17 | /// Used for occlustion culling 18 | /// 19 | public List VisibleBlocks { get; } = new List(); 20 | 21 | /// 22 | /// Used for caching 23 | /// 24 | public List NeighborBlocks { get; } = new List(); 25 | 26 | /// 27 | /// The floor index of this block. 28 | /// 29 | public int FloorIndex { get; set; } 30 | 31 | /// 32 | /// The room index of this block. 33 | /// 34 | public int RoomIndex { get; set; } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Mathematics/BoundingBoxF.cs: -------------------------------------------------------------------------------- 1 | using System.Numerics; 2 | 3 | namespace RSBot.NavMeshApi.Mathematics; 4 | 5 | public readonly struct BoundingBoxF 6 | { 7 | #region Properties 8 | 9 | public float Width => this.Max.X - this.Min.X; 10 | public float Height => this.Max.Y - this.Min.Y; 11 | public float Length => this.Max.Z - this.Min.Z; 12 | public Vector3 Center => (this.Max + this.Min) * 0.5f; 13 | 14 | public Vector3 Min { get; } 15 | public Vector3 Max { get; } 16 | 17 | public Vector3 Size => new Vector3(this.Width, this.Height, this.Length); 18 | 19 | #endregion Properties 20 | 21 | public BoundingBoxF(Vector3 min, Vector3 max) 22 | { 23 | this.Min = min; 24 | this.Max = max; 25 | } 26 | 27 | public readonly bool Contains(in Vector3 p) 28 | { 29 | return p.X >= this.Min.X 30 | && p.X <= this.Max.X 31 | && p.Y >= this.Min.Y 32 | && p.Y <= this.Max.Y 33 | && p.Z >= this.Min.Z 34 | && p.Z <= this.Max.Z; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/RSBot.CommandCenter.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A plugin to map ingame emoticon actions and chat commands to bot actions 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Application/RSBot/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Dependencies/Scripts/Towns/23687.rbs: -------------------------------------------------------------------------------- 1 | move 1250 316 244 135 92 2 | move 1276 435 244 135 92 3 | move 1246 551 244 135 92 4 | move 1179 602 244 135 92 5 | store NPC_KT_WAREHOUSE 6 | move 1151 716 244 135 92 7 | move 1052 836 244 135 92 8 | move 974 926 244 135 92 9 | move 902 1018 243 135 92 10 | move 849 1074 243 135 92 11 | buy NPC_KT_POTION 12 | move 766 984 243 135 92 13 | move 702 888 246 135 92 14 | move 616 817 243 135 92 15 | move 545 778 243 135 92 16 | buy NPC_KT_SMITH 17 | repair NPC_KT_SMITH 18 | move 621 706 243 135 92 19 | move 641 533 243 135 92 20 | move 644 395 243 135 92 21 | move 632 300 243 135 92 22 | move 595 225 243 135 92 23 | buy NPC_KT_ARMOR 24 | move 650 163 243 135 92 25 | move 719 96 243 135 92 26 | move 807 18 243 135 92 27 | move 853 1896 243 135 91 28 | buy NPC_KT_ACCESSORY 29 | move 963 1898 243 135 91 30 | move 1116 1902 243 135 91 31 | move 1301 1913 243 135 91 32 | move 1428 1919 243 135 91 33 | move 1495 1911 244 135 91 34 | move 1522 1888 245 135 91 35 | buy NPC_KT_HORSE 36 | move 1491 10 243 135 92 37 | move 1368 99 244 135 92 38 | move 1160 131 244 135 92 39 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/InventoryUpdateAmmoResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 4 | 5 | internal class InventoryUpdateAmmoResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x3201; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | var ammunitionAmount = packet.ReadUShort(); 30 | Game.Player.Inventory.UpdateItemAmount(7, ammunitionAmount); 31 | 32 | EventManager.FireEvent("OnUpdateAmmunition"); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Logout/LogoutSuccessResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Logout; 4 | 5 | internal class LogoutSuccessResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x300A; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | Log.Notify("The player has left the game!"); 30 | Kernel.Proxy?.Shutdown(); //Forced disconnect because LogoutMode of 0x7005 is not yet supported. 31 | EventManager.FireEvent("OnLogout"); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/Renderer/NavMeshExtenions.cs: -------------------------------------------------------------------------------- 1 | using System.Drawing; 2 | using RSBot.NavMeshApi.Edges; 3 | 4 | namespace RSBot.Map.Renderer; 5 | 6 | public static class NavMeshExtenions 7 | { 8 | public static Pen ToPen(this NavMeshEdgeFlag flag) 9 | { 10 | if ((flag & NavMeshEdgeFlag.Blocked) != 0) 11 | return Pens.Red; 12 | 13 | if ((flag & NavMeshEdgeFlag.Railing) != 0) 14 | return Pens.Blue; 15 | 16 | return Pens.Lime; 17 | } 18 | 19 | internal static Color ToColor(this int i) 20 | { 21 | // https://discussions.unity.com/t/how-can-i-get-the-pre-defined-color-of-a-navmesh-area/193595/3 22 | static int Bit(int a, int b) => (a & 1 << b) >> b; 23 | 24 | if (i == 0) 25 | return Color.FromArgb(alpha: 128, red: 0, green: 192, blue: 255); 26 | 27 | int r = (Bit(i, 4) + Bit(i, 1) * 2 + 1) * 63; 28 | int g = (Bit(i, 3) + Bit(i, 2) * 2 + 1) * 63; 29 | int b = (Bit(i, 5) + Bit(i, 0) * 2 + 1) * 63; 30 | return Color.FromArgb(128, r, g, b); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Job/JobCosStuckResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | using RSBot.Core.Objects.Job; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent.Job; 5 | 6 | internal class JobCosStuckResponse : IPacketHandler 7 | { 8 | /// 9 | /// Gets or sets the opcode. 10 | /// 11 | /// 12 | /// The opcode. 13 | /// 14 | public ushort Opcode => 0x30E7; 15 | 16 | /// 17 | /// Gets or sets the destination. 18 | /// 19 | /// 20 | /// The destination. 21 | /// 22 | public PacketDestination Destination => PacketDestination.Client; 23 | 24 | /// 25 | /// Handles the packet. 26 | /// 27 | /// The packet. 28 | public void Invoke(Packet packet) 29 | { 30 | var reason = (TransportStuckReason)packet.ReadByte(); 31 | EventManager.FireEvent("OnJobCosStuck", reason); 32 | 33 | Log.Notify("[Job] Your transport is stuck!"); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Alchemy/MagicOptionUpdateResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | using RSBot.Core.Objects; 3 | 4 | namespace RSBot.Core.Network.Handler.Agent.Alchemy; 5 | 6 | internal class MagicOptionUpdateResponse : IPacketHandler 7 | { 8 | public ushort Opcode => 0x34AA; 9 | public PacketDestination Destination => PacketDestination.Client; 10 | 11 | public void Invoke(Packet packet) 12 | { 13 | var result = packet.ReadByte(); 14 | 15 | if (result == 2) 16 | { 17 | var errorCode = packet.ReadUShort(); 18 | 19 | EventManager.FireEvent("OnMagicOptionUpdateError", errorCode); 20 | } 21 | 22 | var unkByte = packet.ReadByte(); //planned counter? 23 | if (unkByte != 0) 24 | { 25 | var slot = packet.ReadByte(); 26 | 27 | var oldItem = Game.Player.Inventory.GetItemAt(slot); 28 | var item = InventoryItem.FromPacket(packet, slot); 29 | 30 | EventManager.FireEvent("OnMagicOptionUpdate", oldItem, item); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/InventoryStorageDataBeginResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Objects.Inventory; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 4 | 5 | internal class InventoryStorageDataBeginResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x3047; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | Game.ChunkedPacket = new Packet(0); 30 | Game.Player.Storage = Game.Player.Storage ?? new Storage(); 31 | Game.Player.Storage.Gold = packet.ReadULong(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/RSBot.Training.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Bots 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | False 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefLevel.cs: -------------------------------------------------------------------------------- 1 | namespace RSBot.Core.Client.ReferenceObjects; 2 | 3 | public class RefLevel : IReference 4 | { 5 | public byte PrimaryKey => Level; 6 | 7 | public bool Load(ReferenceParser parser) 8 | { 9 | if (!parser.TryParse(0, out Level)) 10 | return false; 11 | 12 | parser.TryParse(1, out Exp_C); 13 | parser.TryParse(2, out Exp_M); 14 | 15 | if (Game.ClientType >= GameClientType.Chinese_Old) 16 | { 17 | parser.TryParse(9, out Exp_C_Pet2); 18 | parser.TryParse(10, out StoredSp_Pet2); 19 | } 20 | 21 | return true; 22 | } 23 | 24 | #region Fields 25 | 26 | public byte Level; 27 | public long Exp_C; 28 | 29 | public int Exp_M; 30 | 31 | /*public int Cost_M; 32 | public int Cost_ST; 33 | public int GUST_Mob_Exp; 34 | public int JobExp_Trader; 35 | public int JobExp_Robber; 36 | public int JobExp_Hunter;*/ 37 | public long Exp_C_Pet2; 38 | public int StoredSp_Pet2; 39 | 40 | #endregion Fields 41 | } 42 | -------------------------------------------------------------------------------- /Botbases/RSBot.Training/Views/Dialogs/CreateTrainingAreaDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using RSBot.Core; 4 | using SDUI.Controls; 5 | 6 | namespace RSBot.Training.Views.Dialogs; 7 | 8 | public partial class CreateTrainingAreaDialog : UIWindowBase 9 | { 10 | public CreateTrainingAreaDialog() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void buttonAccept_Click(object sender, EventArgs e) 16 | { 17 | if (string.IsNullOrWhiteSpace(TrainingName.Text)) 18 | DialogResult = DialogResult.Retry; 19 | } 20 | 21 | private void CreateTrainingAreaDialog_FormClosing(object sender, FormClosingEventArgs e) 22 | { 23 | if (DialogResult == DialogResult.Retry) 24 | e.Cancel = true; 25 | } 26 | 27 | private void CreateTrainingAreaDialog_Load(object sender, EventArgs e) 28 | { 29 | var pos = Game.Player.Movement.Source; 30 | labelPos.Text = $"X: {pos.X:0.0} Y:{pos.Y:0.0}"; 31 | labelArea.Text = Game.ReferenceManager.GetTranslation(pos.Region.ToString()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Entity/EntityGroupSpawnBeginResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Objects.Spawn; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Entity; 4 | 5 | internal class EntityGroupSpawnBeginResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x3017; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | Game.SpawnInfo = new SpawnPacketInfo 30 | { 31 | Packet = new Packet(0x3019), 32 | Type = packet.ReadByte(), 33 | Amount = packet.ReadUShort(), 34 | }; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/IFile.cs: -------------------------------------------------------------------------------- 1 | using RSBot.FileSystem.IO; 2 | 3 | namespace RSBot.FileSystem; 4 | 5 | public interface IFile 6 | { 7 | #region Properties 8 | 9 | public string Path { get; } 10 | public string Name { get; } 11 | public string Extension { get; } 12 | public long Size { get; } 13 | public IFileSystem FileSystem { get; } 14 | public IFolder Parent { get; } 15 | 16 | public long CreateTime { get; } 17 | public long ModifyTime { get; } 18 | 19 | #endregion 20 | 21 | #region Methods 22 | 23 | public IFileReader OpenRead(); 24 | 25 | public byte[] Read(int position, int length) 26 | { 27 | return OpenRead().Read(position, length); 28 | } 29 | 30 | public string ReadAllText() 31 | { 32 | return OpenRead().ReadAllText(); 33 | } 34 | 35 | public byte[] ReadAllBytes() 36 | { 37 | return OpenRead().ReadAllBytes(); 38 | } 39 | 40 | public string[] ReadAllLines() 41 | { 42 | return OpenRead().ReadAllText().Split(Environment.NewLine); 43 | } 44 | 45 | #endregion 46 | } 47 | -------------------------------------------------------------------------------- /Library/RSBot.NavMeshApi/Edges/NavMeshEdgeInternal.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | 3 | namespace RSBot.NavMeshApi.Edges; 4 | 5 | public class NavMeshEdgeInternal : NavMeshEdge 6 | { 7 | public NavMeshEdgeInternal(NavMesh mesh, int index) 8 | : base(mesh, index) { } 9 | 10 | public override void Link() 11 | { 12 | this.SrcCell = this.NavMesh.GetNavMeshCell(this.SrcCellIndex); 13 | if (this.SrcCell == null) 14 | Debug.WriteLine($"Couldn't find SrcCellIndex {this.SrcCellIndex} on {this.NavMesh} when linking {this}"); 15 | this.SrcCell?.AddEdge(this, this.SrcSide); 16 | 17 | if ( /*!this.IsBlocked &&*/ 18 | this.DstCellIndex > 0 19 | ) 20 | { 21 | this.DstCell = this.NavMesh.GetNavMeshCell(this.DstCellIndex); 22 | if (this.DstCell == null) 23 | Debug.WriteLine( 24 | $"Couldn't find DstCellIndex {this.DstCellIndex} on {this.NavMesh} when linking {this}" 25 | ); 26 | this.DstCell.AddEdge(this, this.DstSide); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Client/ReferenceObjects/RefMagicOptAssign.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace RSBot.Core.Client.ReferenceObjects; 4 | 5 | public class RefMagicOptAssign : IReference 6 | { 7 | #region Methods 8 | 9 | public bool Load(ReferenceParser parser) 10 | { 11 | if (parser == null) 12 | return false; 13 | 14 | parser.TryParse(1, out Race); 15 | parser.TryParse(2, out TypeId3); 16 | parser.TryParse(3, out TypeId4); 17 | 18 | AvailableMagicOptions = new List(80); 19 | for (var i = 4; i < parser.GetColumnCount(); i++) 20 | if (parser.TryParse(i, out string option)) 21 | AvailableMagicOptions.Add(option); 22 | 23 | AvailableMagicOptions.RemoveAll(m => string.IsNullOrEmpty(m) || m == "xxx"); 24 | 25 | return true; 26 | } 27 | 28 | #endregion Methods 29 | 30 | #region Fields 31 | 32 | public byte Race; 33 | public byte TypeId3; 34 | public byte TypeId4; 35 | public List AvailableMagicOptions; 36 | 37 | #endregion Fields 38 | } 39 | -------------------------------------------------------------------------------- /Library/RSBot.FileSystem/PackFile/PackFile.cs: -------------------------------------------------------------------------------- 1 | using RSBot.FileSystem.IO; 2 | using RSBot.FileSystem.PackFile.Struct; 3 | 4 | namespace RSBot.FileSystem.PackFile; 5 | 6 | public class PackFile : IFile 7 | { 8 | public readonly PackEntry Entry; 9 | 10 | public PackFile(string path, PackEntry entry, IFileSystem fileSystem) 11 | { 12 | Path = path; 13 | FileSystem = fileSystem; 14 | Entry = entry; 15 | } 16 | 17 | public long CreateTime => Entry.CreationTime; 18 | public long ModifyTime => Entry.ModifyTime; 19 | 20 | public IFileSystem FileSystem { get; } 21 | public string Path { get; } 22 | public string Name => Entry.Name; 23 | public string Extension => System.IO.Path.GetExtension(Name); 24 | 25 | public long Size => Entry.Size; 26 | 27 | public IFolder Parent => FileSystem.GetFolder(System.IO.Path.GetDirectoryName(Path) ?? ""); 28 | 29 | public IFileReader OpenRead() 30 | { 31 | return FileSystem.OpenRead(Entry); 32 | } 33 | 34 | public override string ToString() 35 | { 36 | return Path; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/InventoryGuildStorageDataBeginResponse.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Objects.Inventory; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 4 | 5 | internal class InventoryGuildStorageDataBeginResponse : IPacketHandler 6 | { 7 | /// 8 | /// Gets or sets the opcode. 9 | /// 10 | /// 11 | /// The opcode. 12 | /// 13 | public ushort Opcode => 0x3253; 14 | 15 | /// 16 | /// Gets or sets the destination. 17 | /// 18 | /// 19 | /// The destination. 20 | /// 21 | public PacketDestination Destination => PacketDestination.Client; 22 | 23 | /// 24 | /// Handles the packet. 25 | /// 26 | /// The packet. 27 | public void Invoke(Packet packet) 28 | { 29 | Game.ChunkedPacket = new Packet(0); 30 | Game.Player.GuildStorage = Game.Player.GuildStorage ?? new Storage(); 31 | Game.Player.GuildStorage.Gold = packet.ReadULong(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Network/Handler/EmoticonRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using RSBot.CommandCenter.Components; 3 | using RSBot.Core; 4 | using RSBot.Core.Components; 5 | using RSBot.Core.Network; 6 | 7 | namespace RSBot.CommandCenter.Network.Handler; 8 | 9 | internal class EmoticonRequest : IPacketHandler 10 | { 11 | public ushort Opcode => 0x3091; 12 | 13 | public PacketDestination Destination => PacketDestination.Server; 14 | 15 | public void Invoke(Packet packet) 16 | { 17 | if (!PluginConfig.Enabled) 18 | return; 19 | 20 | var type = (EmoticonType)packet.ReadByte(); 21 | var emoticon = Emoticons.GetEmoticonItemByType(type); 22 | var assignedCommand = PluginConfig.GetAssignedEmoteCommand(emoticon.Name); 23 | 24 | Task.Run(() => 25 | { 26 | if (!CommandManager.Execute(assignedCommand)) 27 | Log.Debug( 28 | $"[Command center] Command execution of the command [{assignedCommand}] for emoticon [{emoticon.Name}] failed." 29 | ); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/Handler/Agent/Inventory/StorageOpenRequest.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core.Event; 2 | 3 | namespace RSBot.Core.Network.Handler.Agent.Inventory; 4 | 5 | internal class StorageOpenRequest : IPacketHandler 6 | { 7 | #region Methods 8 | 9 | /// 10 | /// Handles the packet. 11 | /// 12 | /// The packet. 13 | public void Invoke(Packet packet) 14 | { 15 | var entityId = packet.ReadUInt(); 16 | 17 | EventManager.FireEvent("OnStorageOpenRequest", entityId); 18 | } 19 | 20 | #endregion Methods 21 | 22 | #region Properties 23 | 24 | /// 25 | /// Gets or sets the opcode. 26 | /// 27 | /// 28 | /// The opcode. 29 | /// 30 | public ushort Opcode => 0x703C; 31 | 32 | /// 33 | /// Gets or sets the destination. 34 | /// 35 | /// 36 | /// The destination. 37 | /// 38 | public PacketDestination Destination => PacketDestination.Server; 39 | 40 | #endregion Properties 41 | } 42 | -------------------------------------------------------------------------------- /Plugins/RSBot.Map/RSBot.Map.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A open source bot for Silkroad Online 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Library/RSBot.Core/Network/NetworkUtilities.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Net.NetworkInformation; 3 | 4 | namespace RSBot.Core.Network; 5 | 6 | internal class NetworkUtilities 7 | { 8 | /// 9 | /// Get Free Port 10 | /// Returns the first free port between a range 11 | /// 12 | /// Start index 13 | /// End index 14 | /// Step Distance 15 | /// Free port 16 | public static ushort GetFreePort(ushort start, ushort end, ushort step) 17 | { 18 | var properties = IPGlobalProperties.GetIPGlobalProperties(); 19 | var tcpEndPoints = properties.GetActiveTcpListeners(); 20 | 21 | var usedPorts = tcpEndPoints.Select(p => p.Port).ToList(); 22 | ushort result = 0; 23 | 24 | for (var port = start; port < end; port += step) 25 | { 26 | if (usedPorts.Contains(port)) 27 | continue; 28 | result = port; 29 | break; 30 | } 31 | 32 | return result; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Plugins/RSBot.CommandCenter/Components/PluginConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using RSBot.Core; 3 | 4 | namespace RSBot.CommandCenter.Components; 5 | 6 | internal class PluginConfig 7 | { 8 | public static bool Enabled => PlayerConfig.Get("RSBot.CommandCenter.Enabled", true); 9 | 10 | public static Dictionary GetEmoteToCommandMapping() 11 | { 12 | var result = new Dictionary(16); 13 | 14 | foreach (var emoticon in Emoticons.Items) 15 | { 16 | var actionName = PlayerConfig.Get( 17 | $"RSBot.CommandCenter.MappedEmotes.{emoticon.Name}", 18 | Emoticons.GetEmoticonDefaultCommand(emoticon.Name) 19 | ); 20 | 21 | result.Add(emoticon.Name, actionName); 22 | } 23 | 24 | return result; 25 | } 26 | 27 | public static string GetAssignedEmoteCommand(string emoteName) 28 | { 29 | var mapping = GetEmoteToCommandMapping(); 30 | 31 | return mapping.ContainsKey(emoteName) ? mapping[emoteName] : Emoticons.GetEmoticonDefaultCommand(emoteName); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Plugins/RSBot.ServerInfo/RSBot.ServerInfo.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0-windows 4 | disable 5 | true 6 | disable 7 | .\..\..\Build\Data\Plugins 8 | false 9 | A plugin to display server related meta informations 10 | Copyright © 2018 - 2025, RSBot Team 11 | https://github.com/SDClowen/RSBot 12 | https://github.com/SDClowen/RSBot 13 | Library 14 | x86 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Plugins/RSBot.Statistics/Stats/Calculators/Static/Deaths.cs: -------------------------------------------------------------------------------- 1 | using RSBot.Core; 2 | using RSBot.Core.Components; 3 | using RSBot.Core.Event; 4 | 5 | namespace RSBot.Statistics.Stats.Calculators.Static; 6 | 7 | internal class Deaths : IStatisticCalculator 8 | { 9 | private int _deathsCounter; 10 | public string Name => "Deaths"; 11 | public string Label => LanguageManager.GetLang("Calculators.Deaths.Label"); 12 | public StatisticsGroup Group => StatisticsGroup.Player; 13 | public string ValueFormat => "{0}"; 14 | public UpdateType UpdateType => UpdateType.Static; 15 | 16 | public object GetValue() 17 | { 18 | return _deathsCounter; 19 | } 20 | 21 | public void Reset() 22 | { 23 | _deathsCounter = 0; 24 | } 25 | 26 | public void Initialize() 27 | { 28 | SubscribeEvents(); 29 | } 30 | 31 | private void SubscribeEvents() 32 | { 33 | EventManager.SubscribeEvent("OnPlayerDied", OnPlayerDead); 34 | } 35 | 36 | private void OnPlayerDead() 37 | { 38 | if (Kernel.Bot.Running) 39 | _deathsCounter++; 40 | } 41 | } 42 | --------------------------------------------------------------------------------