Implement start scripts to do all the extra stuff, like remove nodes from XML files.

Add WinterChernarusV2 mod's init changes.
This commit is contained in:
Daniel Ceregatti 2023-12-22 10:04:25 -08:00
parent a92cdaf539
commit 40f31d0b14
11 changed files with 109 additions and 31 deletions

View file

@ -21,30 +21,30 @@ do
TYPE=$(echo ${i} | cut -d. -f2)
UP=${FILE^^}
VAL=${!UP}
DIR="${WORKSHOP_DIR}/${ID}"
OUT="${DIR}/${i}"
if echo ${VAL} | grep -qE "^http"
then
echo
echo "${i} is a URL, downloading to ${OUT}"
curl -so ${OUT} ${VAL}
elif echo ${VAL} | grep -qE "^local"
then
echo
echo "${i} comes from mod integration, copying to ${OUT}"
echo -n " "
cp -v "${FILES}/mods/${ID}/${i}" "${OUT}"
elif echo ${VAL} | grep -qE "^\./"
then
echo
echo "${FILE} comes from the mod as ${VAL}, copying to ${OUT}"
echo -n " "
cp -v "${DIR}/${VAL}" "${OUT}"
fi
if [ -f ${OUT} ]
then
if [[ ${TYPE} = "xml" ]]
then
DIR="${WORKSHOP_DIR}/${ID}"
OUT="${DIR}/${i}"
if echo ${VAL} | grep -qE "^http"
then
echo
echo "${i} is a URL, downloading to ${OUT}"
curl -so ${OUT} ${VAL}
elif echo ${VAL} | grep -qE "^local"
then
echo
echo "${i} comes from mod integration, copying to ${OUT}"
echo -n " "
cp -v "${FILES}/mods/${ID}/${i}" "${OUT}"
elif echo ${VAL} | grep -qE "^\./"
then
echo
echo "${FILE} comes from the mod as ${VAL}, copying to ${OUT}"
echo -n " "
cp -v "${DIR}/${VAL}" "${OUT}"
fi
if [ -f ${OUT} ]
then
if [[ ${TYPE} = "xml" ]]
then
xmllint --noout ${OUT} 2> /dev/null && (
echo -e " ${green}${OUT} passes XML lint test!${default}"
) || (
@ -58,8 +58,14 @@ do
) && (
echo -e " ${green}${OUT} passes JSON lint test!${default}"
)
fi
fi
fi
fi
done
echo
if [ -f "${FILES}/mods/${ID}/start.sh" ]
then
echo
echo "Copy ${FILES}/mods/${ID}/start.sh -> ${DIR}/start.sh"
cp "${FILES}/mods/${ID}/start.sh" "${DIR}/start.sh"
echo
fi

View file

@ -0,0 +1,54 @@
--- init.c 2023-12-22 09:06:49.416111938 +0000
+++ init.c.new 2023-12-22 09:08:58.365653156 +0000
@@ -1,34 +1,19 @@
void main()
{
- //INIT ECONOMY--------------------------------------
- Hive ce = CreateHive();
- if ( ce )
- ce.InitOffline();
-
- //DATE RESET AFTER ECONOMY INIT-------------------------
+ CreateHive();
+ GetHive().InitOffline();
int year, month, day, hour, minute;
- int reset_month = 9, reset_day = 20;
- GetGame().GetWorld().GetDate(year, month, day, hour, minute);
+ GetGame().GetWorld().GetDate( year, month, day, hour, minute );
- if ((month == reset_month) && (day < reset_day))
+ //Change here the dates for whatever months you desire
+ if ( month < 12 )
{
- GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
+ year = 2011;
+ month = 12;
+ day = 25;
+ GetGame().GetWorld().SetDate( year, month, day, hour, minute );
}
- else
- {
- if ((month == reset_month + 1) && (day > reset_day))
- {
- GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
- }
- else
- {
- if ((month < reset_month) || (month > reset_month + 1))
- {
- GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
- }
- }
- }
-}
+}
class CustomMission: MissionServer
{
@@ -95,4 +80,4 @@
Mission CreateCustomMission(string path)
{
return new CustomMission();
-}
\ No newline at end of file
+}

View file

@ -16,5 +16,4 @@
<pos x="673.779" z="8747.024" a="0" y="194.405" group="HypeTrain_Myshkino"/>
<pos x="3262.817" z="12430.286" a="0" y="219.495" group="HypeTrain_Petrovka"/>
</event>
<event name="StaticTrain"/>
</eventposdef>

View file

@ -0,0 +1,9 @@
#!/usr/bin/env bash
# This is run in the directory with the target files
# Remove static trains
xmlstarlet ed -L -d '//eventposdef/event[@name="StaticTrain"]' cfgeventspawns.xml
# Remove spawn locations of former trains to prevent floating loot on tracks
xmlstarlet ed -L -d '//map/group[starts-with(@name,"Land_Train_")]' mapgrouppos.xml

View file

@ -1,4 +1,4 @@
# The following two files are map-specific, supporting chernarus, livonia, and namalsk
# The following two files are specific to chernarus, but livonia, and namalsk are also *currently* supported.
CFGEVENTGROUPS=local
CFGEVENTSPAWNS=local
CFGSPAWNABLETYPES=local

View file

@ -0,0 +1 @@
2981609048

View file

@ -134,7 +134,7 @@ report() {
}
mergexml(){
echo
echo
# First copy the pristine files from upstream
echo -e "${green}Copying upstream files into local mpmissions for map ${MAP}${default}":
find /mpmissions/${MAP} \( \
@ -153,9 +153,10 @@ mergexml(){
for link in $(ls -tdr ${SERVER_PROFILE}/@* 2> /dev/null)
do
ID=$(readlink ${link} | awk -F/ '{print $NF}')
# Going to have to maintain a matrix of file names -> root node -> child node permutations
C=""
FOUND=0
# This loop handles Central Economy files
# A matrix of file names -> root node -> child node permutations
for i in "CFGSPAWNABLETYPES:spawnabletypes:type" "EVENTS:events:event" "TYPES:types:type"
do
var=$(echo ${i} | cut -d: -f1)
@ -262,6 +263,14 @@ mergexml(){
cp ${WORKSHOP_DIR}/${ID}/${var,,}.xml ${MPMISSIONS}/${MAP}/${var,,}.xml
fi
done
# Here are where start actions happen
if [ -f "${WORKSHOP_DIR}/${ID}/start.sh" ]
then
echo "Running start script -> ${WORKSHOP_DIR}/${ID}/start.sh"
pushd ${MPMISSIONS}/${MAP} > /dev/null
bash -x "${WORKSHOP_DIR}/${ID}/start.sh"
popd > /dev/null
fi
done
if [ -d ${SERVER_PROFILE}/custom ]
then