Small gsc changes

This commit is contained in:
quaK 2023-06-14 20:17:56 +03:00
parent 6107a587f4
commit 7ce3d81583
5 changed files with 16 additions and 12 deletions

View File

@ -78,12 +78,14 @@ namespace gsc
{ {
const auto& pos = function.value(); const auto& pos = function.value();
unknown_function_error = std::format( unknown_function_error = std::format(
"while processing function '{}' in script '{}':\nunknown script '{}'", pos.first, pos.second, scripting::current_file "while processing function '{}' in script '{}':\nunknown script '{}' ({})",
pos.first, pos.second, scripting::current_file, scripting::current_file_id
); );
} }
else else
{ {
unknown_function_error = std::format("unknown script '{}'", scripting::current_file); unknown_function_error = std::format("unknown script '{}' ({})",
scripting::current_file, scripting::current_file_id);
} }
} }
@ -93,7 +95,8 @@ namespace gsc
const auto name = scripting::get_token(thread_name); const auto name = scripting::get_token(thread_name);
unknown_function_error = std::format( unknown_function_error = std::format(
"while processing script '{}':\nunknown function '{}::{}'", scripting::current_file, filename, name "while processing script '{}':\nunknown function '{}::{}'",
scripting::current_file, filename, name
); );
} }

View File

@ -102,7 +102,7 @@ namespace gsc
if (func == nullptr) if (func == nullptr)
{ {
scr_error("function doesn't exist"); scr_error(utils::string::va("builtin function \"%s\" doesn't exist", gsc_ctx->func_name(function_id).data()), true);
return; return;
} }
@ -140,7 +140,7 @@ namespace gsc
if (meth == nullptr) if (meth == nullptr)
{ {
scr_error("function doesn't exist"); scr_error(utils::string::va("builtin method \"%s\" doesn't exist", gsc_ctx->meth_name(method_id).data()), true);
return; return;
} }
@ -252,9 +252,9 @@ namespace gsc
} }
} }
void scr_error(const char* error) void scr_error(const char* error, const bool force_print)
{ {
force_error_print = true; force_error_print = force_print;
gsc_error_msg = error; gsc_error_msg = error;
game::Scr_ErrorInternal(); game::Scr_ErrorInternal();

View File

@ -34,7 +34,7 @@ namespace gsc
extern const game::dvar_t* developer_script; extern const game::dvar_t* developer_script;
void scr_error(const char* error); void scr_error(const char* error, const bool force_print = false);
namespace function namespace function
{ {

View File

@ -28,6 +28,7 @@ namespace scripting
utils::concurrency::container<shared_table_t> shared_table; utils::concurrency::container<shared_table_t> shared_table;
std::string current_file; std::string current_file;
unsigned int current_file_id{};
namespace namespace
{ {
@ -46,8 +47,7 @@ namespace scripting
utils::hook::detour db_find_xasset_header_hook; utils::hook::detour db_find_xasset_header_hook;
std::string current_script_file; const char* current_script_file_name;
unsigned int current_file_id{};
game::dvar_t* g_dump_scripts; game::dvar_t* g_dump_scripts;
@ -153,7 +153,7 @@ namespace scripting
void process_script_stub(const char* filename) void process_script_stub(const char* filename)
{ {
current_script_file = filename; current_script_file_name = filename;
const auto file_id = atoi(filename); const auto file_id = atoi(filename);
if (file_id) if (file_id)
@ -176,7 +176,7 @@ namespace scripting
if (!script_function_table_sort.contains(filename)) if (!script_function_table_sort.contains(filename))
{ {
const auto script = gsc::find_script(game::ASSET_TYPE_SCRIPTFILE, current_script_file.data(), false); const auto script = gsc::find_script(game::ASSET_TYPE_SCRIPTFILE, current_script_file_name, false);
if (script) if (script)
{ {
const auto end = &script->bytecode[script->bytecodeLen]; const auto end = &script->bytecode[script->bytecodeLen];

View File

@ -13,6 +13,7 @@ namespace scripting
extern utils::concurrency::container<shared_table_t> shared_table; extern utils::concurrency::container<shared_table_t> shared_table;
extern std::string current_file; extern std::string current_file;
extern unsigned int current_file_id;
void on_shutdown(const std::function<void(bool, bool)>& callback); void on_shutdown(const std::function<void(bool, bool)>& callback);
std::optional<std::string> get_canonical_string(const unsigned int id); std::optional<std::string> get_canonical_string(const unsigned int id);