initial commit
commit
5f4e2749c0
|
@ -0,0 +1,3 @@
|
||||||
|
build/
|
||||||
|
|
||||||
|
.vscode/
|
|
@ -0,0 +1,48 @@
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.26)
|
||||||
|
|
||||||
|
project(object_debugger)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "-Os -s -m32 -static-libgcc -static-libstdc++ -static")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_PREFIX "")
|
||||||
|
|
||||||
|
if (NOT DEFINED ALPACABOT_DIR)
|
||||||
|
set(ALPACABOT_DIR $ENV{USERPROFILE}\\AlpacaBot)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ALPACABOT_INCLUDE_DIR)
|
||||||
|
set(ALPACABOT_INCLUDE_DIR ${ALPACABOT_DIR}\\Include)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ALPACABOT_LIB_DIR)
|
||||||
|
set(ALPACABOT_LIB_DIR ${ALPACABOT_DIR}\\Library)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT DEFINED ALPACABOT_SCRIPT_DIR)
|
||||||
|
set(ALPACABOT_SCRIPT_DIR ${ALPACABOT_DIR}\\Scripts\\Local)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(SOURCE_FILES
|
||||||
|
src/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES})
|
||||||
|
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
RUNTIME_OUTPUT_DIRECTORY ${ALPACABOT_SCRIPT_DIR}/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
|
${ALPACABOT_INCLUDE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_directories(${PROJECT_NAME} PRIVATE
|
||||||
|
${ALPACABOT_LIB_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
|
AlpacaLibrary
|
||||||
|
)
|
|
@ -0,0 +1,125 @@
|
||||||
|
#include <filesystem>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <unordered_set>
|
||||||
|
|
||||||
|
#include <Game/Core.hpp>
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
void Setup() {
|
||||||
|
ScriptInfo Info;
|
||||||
|
Info.Name = "Object Debugger";
|
||||||
|
Info.Description = "Debug objects";
|
||||||
|
Info.Version = "1.00";
|
||||||
|
Info.Category = "Magic";
|
||||||
|
Info.Author = "Warren";
|
||||||
|
Info.UID = "UID";
|
||||||
|
Info.ForumPage = "forum.alpacabot.org";
|
||||||
|
SetScriptInfo(Info);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnStart() {
|
||||||
|
SetLoopDelay(5);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Interactable::GameObject> get_game_objects() {
|
||||||
|
return GameObjects::GetAllWithin(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Interactable::WallObject> get_wall_objects() {
|
||||||
|
return WallObjects::GetAllWithin(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Interactable::GroundObject> get_ground_objects() {
|
||||||
|
return GroundObjects::GetAllWithin(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Interactable::DecorativeObject> get_decorative_objects() {
|
||||||
|
return DecorativeObjects::GetAllWithin(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<Interactable::NPC> get_npcs() { return NPCs::GetAllWithin(10); }
|
||||||
|
|
||||||
|
std::vector<Interactable::Player> get_players() {
|
||||||
|
return Players::GetAllWithin(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class paint_mode {
|
||||||
|
game_objects,
|
||||||
|
wall_objects,
|
||||||
|
ground_objects,
|
||||||
|
decorative_objects,
|
||||||
|
npcs,
|
||||||
|
players
|
||||||
|
};
|
||||||
|
|
||||||
|
void paint_object(const auto &obj, uint8_t r, uint8_t g, uint8_t b, uint8_t a) {
|
||||||
|
const auto model = obj.GetModel();
|
||||||
|
Paint::DrawModel(model, r, g, b, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
paint_mode pmode = paint_mode::players;
|
||||||
|
|
||||||
|
bool Loop() {
|
||||||
|
Paint::Clear();
|
||||||
|
|
||||||
|
if (GetAsyncKeyState(VK_MENU)) {
|
||||||
|
pmode = static_cast<paint_mode>((static_cast<int>(pmode) + 1) % 6);
|
||||||
|
Wait(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto paint_objects = [&](const auto &objects, uint8_t r, uint8_t g,
|
||||||
|
uint8_t b) {
|
||||||
|
for (const auto &obj : objects) {
|
||||||
|
const auto name = obj.GetName();
|
||||||
|
if (name == "")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const auto tile = obj.GetTile();
|
||||||
|
if (!tile)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const auto w2s = Internal::TileToMainscreen(tile, 0, 0, 0);
|
||||||
|
if (!w2s)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
paint_object(obj, r, g, b, 255);
|
||||||
|
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << name;
|
||||||
|
ss << ": (" << tile.X << ", " << tile.Y << ", " << tile.Plane << ")";
|
||||||
|
|
||||||
|
Paint::DrawString(ss.str(), w2s, 255, 255, 255, 255);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
switch (pmode) {
|
||||||
|
case paint_mode::game_objects:
|
||||||
|
paint_objects(get_game_objects(), 255, 0, 0);
|
||||||
|
break;
|
||||||
|
case paint_mode::wall_objects:
|
||||||
|
paint_objects(get_wall_objects(), 0, 255, 0);
|
||||||
|
break;
|
||||||
|
case paint_mode::ground_objects:
|
||||||
|
paint_objects(get_ground_objects(), 0, 0, 255);
|
||||||
|
break;
|
||||||
|
case paint_mode::decorative_objects:
|
||||||
|
paint_objects(get_decorative_objects(), 255, 255, 0);
|
||||||
|
break;
|
||||||
|
case paint_mode::npcs:
|
||||||
|
paint_objects(get_npcs(), 128, 0, 128);
|
||||||
|
break;
|
||||||
|
case paint_mode::players:
|
||||||
|
paint_objects(get_players(), 0, 255, 255);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Paint::SwapBuffer();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OnBreak() { return true; }
|
||||||
|
|
||||||
|
void OnEnd() {}
|
Loading…
Reference in New Issue