Created
March 23, 2023 08:25
-
-
Save Haeniken/dd031f84dfdfea7b616868b2edca8bc1 to your computer and use it in GitHub Desktop.
Azeroth-core extractor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Set client and server directories as environment variables | |
# if you don't want to enter them here | |
if [ -z $CLIENT_DIR ]; then | |
echo -n "Enter directory where client files are located: " | |
read CLIENT_DIR | |
if ! cd $CLIENT_DIR; then | |
echo "Cannot access $CLIENT_DIR" | |
exit 1 | |
fi | |
if [ ! -d $CLIENT_DIR/Data ]; then | |
echo "Cannot find client files in $CLIENT_DIR" | |
exit 1 | |
fi | |
fi | |
if [ -z $SERVER_DIR ]; then | |
echo -n "Enter directory where server files are located: " | |
read SERVER_DIR | |
if ! cd $SERVER_DIR; then | |
echo "Cannot access $SERVER_DIR" | |
exit 1 | |
fi | |
fi | |
# These should all be correct on a standard installation | |
DATA_DIR=${SERVER_DIR}/data | |
MAPEXTRACTOR=${SERVER_DIR}/bin/map_extractor | |
VMAP4EXTRACTOR=${SERVER_DIR}/bin/vmap4_extractor | |
VMAP4ASSEMBLER=${SERVER_DIR}/bin/vmap4_assembler | |
MMAPS_GENERATOR=${SERVER_DIR}/bin/mmaps_generator | |
check_files() { | |
for i in $MAPEXTRACTOR $VMAP4EXTRACTOR $VMAP4ASSEMBLER $MMAPS_GENERATOR | |
do | |
if [[ ! -x $i ]] | |
then | |
echo "Invalid executable: $i" | |
echo "Check that the extraction tools are installed correctly." | |
exit | |
fi | |
done | |
} | |
show_header() { | |
echo "======================================================" | |
echo "Trinitycore (3.3.5) DBC, Maps, VMaps & MMaps Extractor" | |
echo "======================================================" | |
echo | |
echo | |
echo "Client directory: ${CLIENT_DIR}" | |
echo "Data directory: ${DATA_DIR}" | |
echo | |
} | |
extract_dbc_maps() { | |
echo | |
echo "Extracting DBC, Camera and Maps files" | |
echo | |
echo "-- Using $MAPEXTRACTOR" | |
echo "-- Copying extracted data to ${DATA_DIR}" | |
if [[ ! -d ${DATA_DIR} ]] | |
then | |
echo "-- Creating ${DATA_DIR}" | |
mkdir ${DATA_DIR} | |
fi | |
echo "-- Starting in 5 seconds" | |
sleep 5 | |
cd ${CLIENT_DIR} | |
$MAPEXTRACTOR | |
echo "-- Extraction complete, copying dbc and maps files" | |
cp -r dbc maps ${DATA_DIR} | |
if [[ -d ${CLIENT_DIR}/Cameras ]] | |
then | |
echo "-- Camera files found, copying" | |
cp -r Cameras ${DATA_DIR} | |
fi | |
echo "-- Done" | |
echo | |
} | |
extract_vmaps() { | |
echo | |
echo "Extracting Visual Maps" | |
echo | |
echo "-- Using ${VMAP4EXTRACTOR}" | |
echo "-- Using ${VMAP4ASSEMBLER}" | |
echo "-- Copying extracted data to ${DATA_DIR}/vmaps" | |
echo "-- Starting in 5 seconds" | |
sleep 5 | |
cd ${CLIENT_DIR} | |
$VMAP4EXTRACTOR | |
mkdir vmaps | |
$VMAP4ASSEMBLER Buildings vmaps | |
echo "-- Extraction complete, copying files" | |
cp -r vmaps ${DATA_DIR} | |
echo "-- Done" | |
echo | |
} | |
extract_mmaps() { | |
echo | |
echo "Extracting Movement Maps (this may take a while)" | |
echo | |
echo "-- Using ${MMAPS_GENERATOR}" | |
echo "-- Copying extracted data to ${DATA_DIR}/mmaps" | |
echo "-- Starting in 5 seconds" | |
sleep 5 | |
cd ${CLIENT_DIR} | |
mkdir mmaps | |
$MMAPS_GENERATOR | |
echo "-- Extraction complete, copying files" | |
cp -r mmaps ${DATA_DIR} | |
echo "-- Done" | |
echo | |
} | |
clean_client() { | |
echo | |
echo "Cleaning up extracted client files (copied server files are not removed)" | |
echo | |
echo "Deleting the following directories from ${CLIENT_DIR}" | |
echo "-- Buildings, Cameras, dbc, maps, mmaps, vmaps" | |
echo | |
echo "Enter y to continue or anything else to cancel" | |
read a | |
if [[ ${a} = "y" ]] | |
then | |
cd ${CLIENT_DIR} | |
rm -fr Buildings Cameras dbc maps mmaps vmaps | |
echo "Done" | |
fi | |
} | |
show_menu() { | |
PS3='Enter choice: ' | |
options=("Extract DBC and Maps files" "Extract Visual Maps (VMaps)" "Extract Movement Maps (MMaps)" | |
"Extract all files" "Clean up client" "Quit") | |
select opt in "${options[@]}" | |
do | |
case $opt in | |
"Extract DBC and Maps files") | |
extract_dbc_maps | |
show_header | |
;; | |
"Extract Visual Maps (VMaps)") | |
extract_vmaps | |
show_header | |
;; | |
"Extract Movement Maps (MMaps)") | |
extract_mmaps | |
show_header | |
;; | |
"Extract all files") | |
extract_dbc_maps | |
extract_vmaps | |
extract_mmaps | |
echo "All files extracted" | |
break | |
;; | |
"Clean up client") | |
clean_client | |
;; | |
"Quit") | |
echo | |
break | |
;; | |
*) echo "$REPLY is not a valid option";; | |
esac | |
done | |
} | |
show_header | |
check_files | |
show_menu |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment