diff --git a/tools/gdc-psyfork/GameConfigs.cpp b/tools/gdc-psyfork/GameConfigs.cpp index 5a5368d3..8bbb1c0f 100644 --- a/tools/gdc-psyfork/GameConfigs.cpp +++ b/tools/gdc-psyfork/GameConfigs.cpp @@ -153,6 +153,10 @@ SMCResult CGameConfig::ReadSMC_NewSection(const SMCStates *states, const char *n { m_ParseState = PSTATE_GAMEDEFS_SIGNATURES; } + else + { + m_IgnoreLevel++; + } break; } diff --git a/tools/gdc-psyfork/example-scripts/gdc_core.sh b/tools/gdc-psyfork/example-scripts/gdc_core.sh index d57f26ae..c4725b8d 100644 --- a/tools/gdc-psyfork/example-scripts/gdc_core.sh +++ b/tools/gdc-psyfork/example-scripts/gdc_core.sh @@ -7,7 +7,11 @@ SM_PATH=/home/gdc/sourcemod-central ENGINE_BIN=${ENGINE_PATH}/bin/engine GAME_BIN=${ENGINE_PATH}/${GAME_DIR}/bin/server STEAMINF=${ENGINE_PATH}/${GAME_DIR}/steam.inf -BIN_EXT="" + +if [ "${GAMEDATA_DIR}" == "" ] ; then + GAMEDATA_DIR=${GAME_DIR} +fi + if [ $MOD == 1 ] ; then BIN_EXT="_i486" fi @@ -15,12 +19,12 @@ fi echo -e "Checking game ${GAME_DIR}...\n" if [ $MOD == 0 ] && [ "$1" == "auto" ] ; then - ./updatecheck.pl "${STEAMINF}" + UPDATE_RES=`./updatecheck.pl "${STEAMINF}"` if [ $? -ne 0 ] ; then exit 1 - elif [ ! -e ${STEAMINF}.new ] ; then - echo -e "Update (maybe) available but no steam.inf.new written!\n" fi + EXPECTED_VER=`echo ${UPDATE_RES} | egrep -o '([0-9]+)$'` + echo Expecting version ${EXPECTED_VER} fi export RDTSC_FREQUENCY="disabled" @@ -36,24 +40,43 @@ fi if [ ${UPDATE} -eq 1 ] ; then cd ${DD_PATH} - if [ $MOD == 0 ] ; then - #workaround for DD1 "bug" (won't redownload file of same name/size) - rm -f ${STEAMINF}.old - mv ${STEAMINF} ${STEAMINF}.old + if [ "${DD_GAME}" != "" ] ; then + DD_OPT_AUTH=`tr '\r\n' ' ' < dd-login-info.txt` + elif [ "${DD_APP}" != "" ] ; then + DD_OPT_AUTH=`tr '\r\n' ' ' < dd-login-info.txt` + else + echo "Error: neither DD_GAME nor DD_APP are set!" + exit 1 fi for i in 1 2 3 4 5 do - mono DepotDownloader.exe \ - -game "${DD_GAME}" \ - -dir ${DD_DIR} \ - -filelist server.txt \ - -all-platforms + if [ "${DD_GAME}" != "" ] ; then + mono DepotDownloader.exe \ + -game "${DD_GAME}" \ + -dir ${DD_DIR} \ + -filelist server.txt \ + -all-platforms \ + -no-exclude \ + ${DD_OPT_CELL} \ + ${DD_OPT_AUTH} + else + mono DepotDownloader.exe \ + -app "${DD_APP}" \ + -dir ${DD_DIR} \ + -filelist server.txt \ + -all-platforms \ + -no-exclude \ + ${DD_OPT_CELL} \ + ${DD_OPT_AUTH} + fi + + echo if [ $? == 0 ] ; then break elif [ $i == 5 ] ; then - echo -e "Update failed five times; giving up ¯\(º_º)/¯\n" + echo Update failed five times; welp break fi @@ -64,14 +87,21 @@ fi if [ "$1" == "auto" ] ; then DOWNLOADED_VER=`grep -E "^(Patch)?Version=(([0-9]\.?)+)" ${STEAMINF} | grep -Eo "([0-9]\.?)+" | sed s/[^0-9]//g` - EXPECTED_VER=`cat ${STEAMINF}.new` if [ ${DOWNLOADED_VER} != ${EXPECTED_VER} ] ; then - echo -e "Download resulted with version ${DOWNLOADED_VER}, but expected ${EXPECTED_VER}. Exiting.\n" + echo Download resulted with version ${DOWNLOADED_VER}, but expected ${EXPECTED_VER}. Exiting. exit 1 fi fi +# update game-specific +cd ${SCRIPT_PATH} +GAME_SCRIPT_NAME=`echo $0 | sed s/\.sh$//` +echo checking to see if ${GAME_SCRIPT_NAME}_repos.sh exists +if [ -e ${GAME_SCRIPT_NAME}_repos.sh ] ; then + ./${GAME_SCRIPT_NAME}_repos.sh +fi + # update sourcemod cd ${SM_PATH}/tools/gdc-psyfork hg pull -u @@ -88,15 +118,6 @@ do -w ${GAME_BIN}.dll \ -y ${ENGINE_BIN}.dll echo -e "------------------------------------------------------\n" - echo -e "\n" done -if [ ! -e ${STEAMINF} ] ; then - mv ${STEAMINF}.old ${STEAMINF} -fi - -if [ "$1" == "auto" ] && [ -e ${STEAMINF}.new ] ; then - rm ${STEAMINF}.new -fi - exit 0 diff --git a/tools/gdc-psyfork/example-scripts/gdc_csgo.sh b/tools/gdc-psyfork/example-scripts/gdc_csgo.sh new file mode 100644 index 00000000..e5fd413e --- /dev/null +++ b/tools/gdc-psyfork/example-scripts/gdc_csgo.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Path to DepotDownloader +DD_PATH=/home/gdc/dd + +# Path for DepotDownloader to download to, relative to DD_PATH +DD_DIR=csgo + +# AppId to use for DepotDownloader for Steam3 content (steamcmd app_update number) +DD_APP=740 + +# Absolute path to game's engine directory +ENGINE_PATH=${DD_PATH}/${DD_DIR}/ + +# Game's directory name +GAME_DIR=csgo + +# SM gamedata engine name +ENGINE_NAME=csgo + +# List of gamedata files to run checks on +gamedata_files=( + "sdktools.games/engine.csgo.txt" + "sm-cstrike.games/game.csgo.txt" +) + +# Is game a 2006/2007 "mod" ? +# If so, bin names are adjusted with _i486 suffix and no update check will be done +MOD=0 + +# DO NOT EDIT BELOW THIS LINE + +source ./gdc_core.sh $1 $2 $3 $4 + +exit $? diff --git a/tools/gdc-psyfork/example-scripts/gdc_cstrike.sh b/tools/gdc-psyfork/example-scripts/gdc_cstrike.sh index 7d55a360..fea4ff1f 100644 --- a/tools/gdc-psyfork/example-scripts/gdc_cstrike.sh +++ b/tools/gdc-psyfork/example-scripts/gdc_cstrike.sh @@ -6,7 +6,7 @@ DD_PATH=/home/gdc/dd # Path for DepotDownloader to download to, relative to DD_PATH DD_DIR=source -# Game to use for DepotDownloader -game param +# Game to use for DepotDownloader for Steam2 content (hldsupdatetool -game param) DD_GAME="Counter-Strike Source" # Absolute path to game's engine directory diff --git a/tools/gdc-psyfork/symbols.txt b/tools/gdc-psyfork/symbols.txt index dff997c3..f22f7ecc 100644 --- a/tools/gdc-psyfork/symbols.txt +++ b/tools/gdc-psyfork/symbols.txt @@ -40,6 +40,7 @@ "GroundEntChanged" "_ZN11CBaseEntity35NetworkStateChanged_m_hGroundEntityEv" "OnTakeDamage" "_ZN11CBaseEntity12OnTakeDamageERK15CTakeDamageInfo" "PreThink" "_ZN11CBasePlayer8PreThinkEv" + "PostConstructor" "_ZN11CBaseEntity15PostConstructorEPKc" "PostThink" "_ZN11CBasePlayer9PostThinkEv" "Reload" "_ZN17CBaseCombatWeapon6ReloadEv" "SetTransmit" "_ZN11CBaseEntity11SetTransmitEP18CCheckTransmitInfob" @@ -72,14 +73,24 @@ "GetSoundEmissionOrigin" "_ZNK11CBaseEntity22GetSoundEmissionOriginEv" "GetServerClass" "_ZN11CBaseEntity14GetServerClassEv" "StudioFrameAdvance" "_ZN14CBaseAnimating18StudioFrameAdvanceEv" - "ShouldGib" "_ZN20CBaseCombatCharacter9ShouldGibERK15CTakeDamageInfo" + "ShouldGib" "_ZN9CTFPlayer9ShouldGibERK15CTakeDamageInfob" "GetRadius" "_ZN13CTFBaseRocket9GetRadiusEv" "DeflectPlayer" "_ZN13CTFWeaponBase13DeflectPlayerEP9CTFPlayerS1_R6VectorS3_S3_" + + // CSSDM + "IPointsForKill" "_ZN14CTeamplayRules14IPointsForKillEP11CBasePlayerS1_" + "RemoveAllItems" "_ZN11CBasePlayer14RemoveAllItemsEb" + "GiveAmmo" "_ZN20CBaseCombatCharacter8GiveAmmoEiib" + + // NapalmLagFix + "RadiusDamage" "_ZN10CGameRules12RadiusDamageERK15CTakeDamageInfoRK6VectorfiP11CBaseEntity" } "Options" { "CreateGameRulesObject" "allowmultiple,allowmidfunc" + "TakeOverBot" "allowmidfunc" + "OnVersusRoundStart" "allowmidfunc" } } @@ -116,12 +127,26 @@ } } + "#default" + { + "#supported" + { + "engine" "css" + "engine" "orangebox_valve" + } + + "Keys" + { + "TraceAttack" "_ZN11CBaseEntity11TraceAttackERK15CTakeDamageInfoRK6VectorP10CGameTraceP15CDmgAccumulator" + } + } + "#default" { "#supported" { "engine" "left4dead" - "game" "left4dead2" + "engine" "left4dead2" } "Keys"