Move mapents keys
This commit is contained in:
parent
8dd40df8cf
commit
f5970c6136
@ -23,75 +23,6 @@ namespace mapents
|
|||||||
game::dvar_t* addon_mapname = nullptr;
|
game::dvar_t* addon_mapname = nullptr;
|
||||||
utils::memory::allocator allocator;
|
utils::memory::allocator allocator;
|
||||||
|
|
||||||
std::unordered_map<std::string, unsigned int> keys =
|
|
||||||
{
|
|
||||||
{"code_classname", 172},
|
|
||||||
{"classname", 170},
|
|
||||||
{"origin", 740},
|
|
||||||
{"model", 669},
|
|
||||||
{"spawnflags", 989},
|
|
||||||
{"target", 1191},
|
|
||||||
{"targetname", 1193},
|
|
||||||
{"count", 216},
|
|
||||||
{"rotation", 902},
|
|
||||||
{"animscript", 71},
|
|
||||||
{"script_linkname", 920},
|
|
||||||
{"script_noteworthy", 922},
|
|
||||||
{"angles", 65},
|
|
||||||
{"parentname", 749},
|
|
||||||
{"type", 1244},
|
|
||||||
{"owner", 743},
|
|
||||||
{"radius", 851},
|
|
||||||
{"height", 488},
|
|
||||||
{"customangles", 9555},
|
|
||||||
{"speed", 997},
|
|
||||||
{"lookahead", 600},
|
|
||||||
|
|
||||||
{"_color", 1398},
|
|
||||||
{"skycolor", 34255},
|
|
||||||
{"suncolor", 1049},
|
|
||||||
{"sundirection", 1050},
|
|
||||||
{"modelscale", 23881},
|
|
||||||
{"export", 13703},
|
|
||||||
|
|
||||||
{"script_flag", 31190},
|
|
||||||
{"script_flag_true", 31196},
|
|
||||||
{"script_stealth_function", 31462},
|
|
||||||
{"script_stealth", 31460},
|
|
||||||
{"script_deathflag", 31114},
|
|
||||||
{"script_forcespawn", 31214},
|
|
||||||
{"script_stealthgroup", 31463},
|
|
||||||
{"script_delay", 916},
|
|
||||||
{"script_color_allies", 31096},
|
|
||||||
{"script_patroller", 31391},
|
|
||||||
{"script_idlereach", 31253},
|
|
||||||
{"script_linkto", 31273},
|
|
||||||
{"script_animation", 31039},
|
|
||||||
{"script_startinghealth", 31454},
|
|
||||||
{"script_pet", 9},
|
|
||||||
{"script_goalheight", 31236},
|
|
||||||
{"script_parameters", 31388},
|
|
||||||
{"script_combatmode", 31102},
|
|
||||||
{"script_ammo_clip", 31034},
|
|
||||||
{"script_moveoverride", 31299},
|
|
||||||
{"script_forcegoal", 31212},
|
|
||||||
{"script_ammo_max", 31036},
|
|
||||||
{"script_vehicleride", 31516},
|
|
||||||
{"script_idleanim", 31252},
|
|
||||||
{"script_chatgroup", 31092},
|
|
||||||
{"script_vehicle_anim", 40318},
|
|
||||||
{"script_vehicledetour", 31510},
|
|
||||||
{"script_vehiclegroupdelete", 31514},
|
|
||||||
{"script_flag_wait", 31197},
|
|
||||||
{"script_emptyspawner", 31161},
|
|
||||||
{"script_aigroup", 31025},
|
|
||||||
{"script_group", 31245},
|
|
||||||
{"script_index", 31259},
|
|
||||||
{"script_delay_post", 31122},
|
|
||||||
{"script_killspawner", 31264},
|
|
||||||
{"script_goalvolume", 31238},
|
|
||||||
};
|
|
||||||
|
|
||||||
std::unordered_map<unsigned int, game::scriptType_e> custom_fields;
|
std::unordered_map<unsigned int, game::scriptType_e> custom_fields;
|
||||||
|
|
||||||
unsigned int token_id_start = 0x16000;
|
unsigned int token_id_start = 0x16000;
|
||||||
@ -238,13 +169,13 @@ namespace mapents
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto key_ = key.substr(1, key.size() - 2);
|
const auto key_ = key.substr(1, key.size() - 2);
|
||||||
if (keys.find(key_) == keys.end())
|
if (scripting::token_map.find(key_) == scripting::token_map.end())
|
||||||
{
|
{
|
||||||
console::warn("[addon_map_ents parser] Key '%s' not found, on line %i", key_.data(), line_index);
|
console::warn("[addon_map_ents parser] Key '%s' not found, on line %i", key_.data(), line_index);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
out_buffer.append(utils::string::va("%i \"%s\"\n", keys[key_], value.data()));
|
out_buffer.append(utils::string::va("%i \"%s\"\n", scripting::token_map[key_], value.data()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return out_buffer;
|
return out_buffer;
|
||||||
@ -342,7 +273,6 @@ namespace mapents
|
|||||||
{
|
{
|
||||||
const auto id = token_id_start++;
|
const auto id = token_id_start++;
|
||||||
custom_fields[id] = type;
|
custom_fields[id] = type;
|
||||||
keys[name] = id;
|
|
||||||
scripting::token_map[name] = id;
|
scripting::token_map[name] = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,6 +287,48 @@ namespace mapents
|
|||||||
|
|
||||||
return scr_find_field_hook.invoke<unsigned int>(name, type);
|
return scr_find_field_hook.invoke<unsigned int>(name, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string replace_mapents_keys(const std::string& data)
|
||||||
|
{
|
||||||
|
std::string buffer{};
|
||||||
|
const auto lines = utils::string::split(data, '\n');
|
||||||
|
|
||||||
|
for (const auto& line : lines)
|
||||||
|
{
|
||||||
|
const auto _0 = gsl::finally([&]
|
||||||
|
{
|
||||||
|
buffer.append("\n");
|
||||||
|
});
|
||||||
|
|
||||||
|
if (line.starts_with("{") || line.starts_with("}"))
|
||||||
|
{
|
||||||
|
buffer.append(line);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto first_space = line.find_first_of(' ');
|
||||||
|
if (first_space == std::string::npos)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto id = static_cast<unsigned int>(std::atoi(line.substr(0, first_space).data()));
|
||||||
|
std::string key = std::to_string(id);
|
||||||
|
for (const auto& [token, value] : scripting::token_map)
|
||||||
|
{
|
||||||
|
if (value == id)
|
||||||
|
{
|
||||||
|
key = token;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto new_line = key + line.substr(first_space);
|
||||||
|
buffer.append(new_line);
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear_dvars()
|
void clear_dvars()
|
||||||
@ -400,7 +372,8 @@ namespace mapents
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto dest = utils::string::va("dumps/%s.ents", name);
|
const auto dest = utils::string::va("dumps/%s.ents", name);
|
||||||
const auto data = std::string(mapents->entityString, mapents->numEntityChars);
|
const auto str = std::string(mapents->entityString, mapents->numEntityChars);
|
||||||
|
const auto data = replace_mapents_keys(str);
|
||||||
utils::io::write_file(dest, data, false);
|
utils::io::write_file(dest, data, false);
|
||||||
console::info("Mapents dumped to %s\n", dest);
|
console::info("Mapents dumped to %s\n", dest);
|
||||||
});
|
});
|
||||||
@ -410,11 +383,6 @@ namespace mapents
|
|||||||
utils::hook::call(0x1406B3384, cm_trigger_model_bounds_stub);
|
utils::hook::call(0x1406B3384, cm_trigger_model_bounds_stub);
|
||||||
|
|
||||||
add_field("script_specialops", game::SCRIPT_INTEGER);
|
add_field("script_specialops", game::SCRIPT_INTEGER);
|
||||||
|
|
||||||
for (const auto& key : keys)
|
|
||||||
{
|
|
||||||
scripting::token_map[key.first] = key.second;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2028,6 +2028,72 @@ namespace scripting
|
|||||||
{"customangles", 9555},
|
{"customangles", 9555},
|
||||||
{"speed", 997},
|
{"speed", 997},
|
||||||
{"lookahead", 600},
|
{"lookahead", 600},
|
||||||
|
|
||||||
|
// mapent keys
|
||||||
|
{"code_classname", 172},
|
||||||
|
{"classname", 170},
|
||||||
|
{"origin", 740},
|
||||||
|
{"model", 669},
|
||||||
|
{"spawnflags", 989},
|
||||||
|
{"target", 1191},
|
||||||
|
{"targetname", 1193},
|
||||||
|
{"count", 216},
|
||||||
|
{"rotation", 902},
|
||||||
|
{"animscript", 71},
|
||||||
|
{"script_linkname", 920},
|
||||||
|
{"script_noteworthy", 922},
|
||||||
|
{"angles", 65},
|
||||||
|
{"parentname", 749},
|
||||||
|
{"type", 1244},
|
||||||
|
{"owner", 743},
|
||||||
|
{"radius", 851},
|
||||||
|
{"height", 488},
|
||||||
|
{"customangles", 9555},
|
||||||
|
{"speed", 997},
|
||||||
|
{"lookahead", 600},
|
||||||
|
|
||||||
|
{"_color", 1398},
|
||||||
|
{"skycolor", 34255},
|
||||||
|
{"suncolor", 1049},
|
||||||
|
{"sundirection", 1050},
|
||||||
|
{"modelscale", 23881},
|
||||||
|
{"export", 13703},
|
||||||
|
|
||||||
|
{"script_flag", 31190},
|
||||||
|
{"script_flag_true", 31196},
|
||||||
|
{"script_stealth_function", 31462},
|
||||||
|
{"script_stealth", 31460},
|
||||||
|
{"script_deathflag", 31114},
|
||||||
|
{"script_forcespawn", 31214},
|
||||||
|
{"script_stealthgroup", 31463},
|
||||||
|
{"script_delay", 916},
|
||||||
|
{"script_color_allies", 31096},
|
||||||
|
{"script_patroller", 31391},
|
||||||
|
{"script_idlereach", 31253},
|
||||||
|
{"script_linkto", 31273},
|
||||||
|
{"script_animation", 31039},
|
||||||
|
{"script_startinghealth", 31454},
|
||||||
|
{"script_pet", 9},
|
||||||
|
{"script_goalheight", 31236},
|
||||||
|
{"script_parameters", 31388},
|
||||||
|
{"script_combatmode", 31102},
|
||||||
|
{"script_ammo_clip", 31034},
|
||||||
|
{"script_moveoverride", 31299},
|
||||||
|
{"script_forcegoal", 31212},
|
||||||
|
{"script_ammo_max", 31036},
|
||||||
|
{"script_vehicleride", 31516},
|
||||||
|
{"script_idleanim", 31252},
|
||||||
|
{"script_chatgroup", 31092},
|
||||||
{"script_vehicle_anim", 40318},
|
{"script_vehicle_anim", 40318},
|
||||||
|
{"script_vehicledetour", 31510},
|
||||||
|
{"script_vehiclegroupdelete", 31514},
|
||||||
|
{"script_flag_wait", 31197},
|
||||||
|
{"script_emptyspawner", 31161},
|
||||||
|
{"script_aigroup", 31025},
|
||||||
|
{"script_group", 31245},
|
||||||
|
{"script_index", 31259},
|
||||||
|
{"script_delay_post", 31122},
|
||||||
|
{"script_killspawner", 31264},
|
||||||
|
{"script_goalvolume", 31238},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user