Compare commits
8 Commits
Author | SHA1 | Date |
---|---|---|
|
d829a79333 | |
|
144747c1d8 | |
|
0bec953871 | |
|
bb1e875abc | |
|
dc556ac916 | |
|
2765bf4e1b | |
|
6d596c39bb | |
|
f7ce2ba94d |
|
@ -1,4 +1,5 @@
|
|||
@echo off & setlocal
|
||||
cd %~dp0
|
||||
pushd ..\..
|
||||
iw4x -zonebuilder +set fs_game "mods\Hide and Seek v2" +buildzone "..\mods\Hide and Seek v2\mod" +quit
|
||||
popd
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
@echo off & setlocal
|
||||
cd %~dp0
|
||||
git-bash ./build_iwd.sh
|
||||
endlocal
|
48
build_iwd.sh
48
build_iwd.sh
|
@ -1,16 +1,22 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
iwd_target_filename="z_svr_hns.iwd"
|
||||
iwd_sv_target_filename="z_svr_hns.iwd"
|
||||
iwd_cl_target_filename="hns.iwd"
|
||||
|
||||
if [ -z "${WORKSPACE}" ]; then
|
||||
export WORKSPACE="$(pwd)"
|
||||
WORKSPACE="$(pwd)"
|
||||
fi
|
||||
export WORKSPACE
|
||||
|
||||
iwd_files()
|
||||
{
|
||||
iwd_files() {
|
||||
negate=""
|
||||
if [ "$1" = "server" ]; then
|
||||
negate="-not"
|
||||
fi
|
||||
find "${WORKSPACE}/" -type f \
|
||||
! -path "*.git*" \
|
||||
! -name "README*" \
|
||||
! -name "LICENSE*" \
|
||||
! -name "mod.*" \
|
||||
! -name "_modversion.gsc" \
|
||||
! -name "missingasset.csv" \
|
||||
|
@ -20,18 +26,34 @@ iwd_files()
|
|||
! -name "*.sh" \
|
||||
! -name "*.bat" \
|
||||
! -name "*.cmd" \
|
||||
! -name "*.iwd" |\
|
||||
sed "s;${WORKSPACE}/;;g"
|
||||
! -name "*.iwd" \
|
||||
! -name "*.str" \
|
||||
-and $negate \( \
|
||||
-name "*.menu" \
|
||||
-or -name "*.txt" \
|
||||
\) \
|
||||
| sed "s;${WORKSPACE}/;;g"
|
||||
}
|
||||
|
||||
iwd_filelist="$(mktemp)"
|
||||
iwd_files > "$iwd_filelist"
|
||||
iwd_cl_filelist="$(mktemp)"
|
||||
iwd_sv_filelist="$(mktemp)"
|
||||
|
||||
echo ""
|
||||
echo "== CLIENT =="
|
||||
iwd_files client | tee "$iwd_cl_filelist"
|
||||
echo "== SERVER =="
|
||||
iwd_files server | tee "$iwd_sv_filelist"
|
||||
echo ""
|
||||
|
||||
modversion_txt_file="maps/mp/mods/_modversion.gsc"
|
||||
echo "getModVersionString(){return \"$(git describe --tags --always --dirty)\";}" > "$modversion_txt_file"
|
||||
echo "$modversion_txt_file" >> "$iwd_filelist"
|
||||
version="$(git describe --tags --always --dirty)"
|
||||
echo "getModVersionString(){return \"$version\";}" > "$modversion_txt_file"
|
||||
(echo "LICENSE.txt") >> "$iwd_cl_filelist"
|
||||
(echo "$modversion_txt_file" && echo "LICENSE.txt") >> "$iwd_sv_filelist"
|
||||
|
||||
rm -f "${iwd_target_filename}"
|
||||
7z a -tzip -mx9 "${iwd_target_filename}" @"$iwd_filelist"
|
||||
rm -f "${iwd_sv_target_filename}" "${iwd_cl_target_filename}"
|
||||
7z a -tzip -mx9 "${iwd_sv_target_filename}" @"$iwd_sv_filelist"
|
||||
7z a -tzip -mx9 "${iwd_cl_target_filename}" @"$iwd_cl_filelist"
|
||||
|
||||
rm -f "$iwd_filelist" "$modversion_txt_file"
|
||||
rm -f "$iwd_sv_filelist" "$iwd_cl_filelist"
|
||||
git checkout HEAD -- $modversion_txt_file
|
||||
|
|
|
@ -89,8 +89,8 @@ main()
|
|||
|
||||
// Specific DVars for this gametype
|
||||
registerPrereleaseDvar(level.gameType, 30, 0, 300);
|
||||
registerSeekersPrimaryWeaponDvar(level.gameType, "ak47_reflex_mp");
|
||||
registerSeekersSecondaryWeaponDvar(level.gameType, "deserteagle_tactical_mp");
|
||||
setDvarIfUninitialized("scr_" + level.gameType + "_seekers_primary_weapon", "ak47_reflex_mp");
|
||||
setDvarIfUninitialized("scr_" + level.gameType + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
||||
|
||||
// Don't show perks
|
||||
SetDvar("scr_showperksonspawn", 0);
|
||||
|
@ -151,7 +151,7 @@ main()
|
|||
|
||||
onPrecacheGametype()
|
||||
{
|
||||
logPrint("onPrecacheGametype called");
|
||||
logPrint("onPrecacheGametype called\n");
|
||||
|
||||
game["seekers_released_sound"] = "mp_war_objective_taken";
|
||||
game["seekers_blind_sound"] = "elev_run_end";
|
||||
|
@ -179,7 +179,7 @@ onPrecacheGametype()
|
|||
|
||||
registerPrereleaseDvar(dvarString, defaultValue, minValue, maxValue)
|
||||
{
|
||||
logPrint("registerPrereleaseDvar called");
|
||||
logPrint("registerPrereleaseDvar called\n");
|
||||
|
||||
registerWatchDvarInt("prereleasetime", defaultValue);
|
||||
|
||||
|
@ -200,23 +200,9 @@ registerPrereleaseDvar(dvarString, defaultValue, minValue, maxValue)
|
|||
}
|
||||
}
|
||||
|
||||
registerSeekersPrimaryWeaponDvar(dvarString, defaultValue)
|
||||
{
|
||||
logPrint("registerSeekersPrimaryWeaponDvar called");
|
||||
|
||||
maps\mp\gametypes\_tweakables::registerTweakable("game", "seekers_primary_weapon", "scr_" + dvarString + "_seekers_primary_weapon", "ak47_reflex_mp");
|
||||
}
|
||||
|
||||
registerSeekersSecondaryWeaponDvar(dvarString, defaultValue)
|
||||
{
|
||||
logPrint("registerSeekersSecondaryWeaponDvar called");
|
||||
|
||||
maps\mp\gametypes\_tweakables::registerTweakable("game", "seekers_secondary_weapon", "scr_" + dvarString + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
||||
}
|
||||
|
||||
updateGametypeDvars()
|
||||
{
|
||||
logPrint("updateGametypeDvars called");
|
||||
logPrint("updateGametypeDvars called\n");
|
||||
|
||||
// no time <= {prereleasetime} <= 5 minutes
|
||||
level.preReleaseTime = dvarIntValue("prereleasetime", 30, 0, 5 * 60);
|
||||
|
@ -224,7 +210,7 @@ updateGametypeDvars()
|
|||
|
||||
onStartGameType()
|
||||
{
|
||||
logPrint("onStartGameType called");
|
||||
logPrint("onStartGameType called\n");
|
||||
|
||||
// Make DVars available
|
||||
setDvarIfUninitialized("scr_hns_roundswitch", 1);
|
||||
|
@ -234,8 +220,6 @@ onStartGameType()
|
|||
setDvarIfUninitialized("scr_hns_winlimit", 4);
|
||||
setDvarIfUninitialized("scr_hns_halftime", 0);
|
||||
setDvarIfUninitialized("scr_hns_numlives", 1);
|
||||
setDvarIfUninitialized("scr_hns_seekers_primary_weapon", "ak47_reflex_mp");
|
||||
setDvarIfUninitialized("scr_hns_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
||||
|
||||
// reset flags
|
||||
gameFlagClear("seekers_released");
|
||||
|
@ -330,7 +314,7 @@ levelShowModelsOnMinimap()
|
|||
|
||||
getSpawnPoint()
|
||||
{
|
||||
logPrint("getSpawnPoint called");
|
||||
logPrint("getSpawnPoint called\n");
|
||||
|
||||
if (self.pers["team"] == game["seekers"])
|
||||
spawnPointName = "mp_sd_spawn_attacker";
|
||||
|
@ -346,7 +330,7 @@ getSpawnPoint()
|
|||
|
||||
onSpawnPlayer()
|
||||
{
|
||||
logPrint("onSpawnPlayer called");
|
||||
logPrint("onSpawnPlayer called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -375,7 +359,7 @@ onSpawnPlayer()
|
|||
|
||||
onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, psOffsetTime, deathAnimDuration, killId)
|
||||
{
|
||||
logPrint("onPlayerKilled called");
|
||||
logPrint("onPlayerKilled called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -392,7 +376,7 @@ onPlayerKilled(eInflictor, attacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHit
|
|||
|
||||
checkAllowSpectating()
|
||||
{
|
||||
logPrint("checkAllowSpectating called");
|
||||
logPrint("checkAllowSpectating called\n");
|
||||
|
||||
wait(0.05);
|
||||
|
||||
|
@ -412,7 +396,7 @@ checkAllowSpectating()
|
|||
|
||||
onDeadEvent(team)
|
||||
{
|
||||
logPrint("onDeadEvent called");
|
||||
logPrint("onDeadEvent called\n");
|
||||
|
||||
if (team == "all")
|
||||
{
|
||||
|
@ -431,7 +415,7 @@ onDeadEvent(team)
|
|||
|
||||
onTimeLimit()
|
||||
{
|
||||
logPrint("onTimeLimit called");
|
||||
logPrint("onTimeLimit called\n");
|
||||
|
||||
// Hiders win when time limit reached
|
||||
thread maps\mp\gametypes\_gamelogic::endGame(game["hiders"], game["strings"]["time_limit_reached"]);
|
||||
|
@ -440,7 +424,7 @@ onTimeLimit()
|
|||
|
||||
onNormalDeath(victim, attacker, lifeId)
|
||||
{
|
||||
logPrint("onNormalDeath called");
|
||||
logPrint("onNormalDeath called\n");
|
||||
|
||||
// Make sure the kill score is set properly
|
||||
score = maps\mp\gametypes\_rank::getScoreInfoValue("kill");
|
||||
|
@ -456,7 +440,7 @@ onNormalDeath(victim, attacker, lifeId)
|
|||
|
||||
onOneLeftEvent(team)
|
||||
{
|
||||
logPrint("onOneLeftEvent called");
|
||||
logPrint("onOneLeftEvent called\n");
|
||||
|
||||
player = getLastLivingPlayer(team);
|
||||
|
||||
|
@ -466,7 +450,7 @@ onOneLeftEvent(team)
|
|||
|
||||
giveLastOnTeamWarning()
|
||||
{
|
||||
logPrint("giveLastOnTeamWarning called");
|
||||
logPrint("giveLastOnTeamWarning called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -484,7 +468,7 @@ giveLastOnTeamWarning()
|
|||
|
||||
levelReleaseTimer()
|
||||
{
|
||||
logPrint("levelReleaseTimer called");
|
||||
logPrint("levelReleaseTimer called\n");
|
||||
|
||||
gameFlagClear("seekers_prerelease_setup");
|
||||
gameFlagClear("seekers_released");
|
||||
|
@ -553,7 +537,7 @@ levelReleaseTimer()
|
|||
}
|
||||
|
||||
handleSeeker() {
|
||||
logPrint("handleSeeker called");
|
||||
logPrint("handleSeeker called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -600,20 +584,23 @@ handleSeeker() {
|
|||
wait 0.5;
|
||||
}
|
||||
|
||||
primaryWeapon = GetDvar("scr_" + level.gameType + "_seekers_primary_weapon", "ak47_reflex_mp");
|
||||
secondaryWeapon = GetDvar("scr_" + level.gameType + "_seekers_secondary_weapon", "deserteagle_tactical_mp");
|
||||
|
||||
// random primary weapon
|
||||
player GiveWeapon(level.gameTweaks["seekers_primary_weapon"].value, RandomInt(9), false);
|
||||
player setSpawnWeapon(level.gameTweaks["seekers_primary_weapon"].value);
|
||||
player SwitchToWeapon(level.gameTweaks["seekers_primary_weapon"].value);
|
||||
player GiveWeapon(primaryWeapon, RandomInt(9), false);
|
||||
player setSpawnWeapon(primaryWeapon);
|
||||
player SwitchToWeapon(primaryWeapon);
|
||||
|
||||
// deagle + tactical knife
|
||||
player GiveWeapon(level.gameTweaks["seekers_secondary_weapon"].value, 0, false);
|
||||
player GiveWeapon(secondaryWeapon, 0, false);
|
||||
|
||||
// single semtex
|
||||
player GiveWeapon("semtex_mp");
|
||||
|
||||
// ammo
|
||||
player GiveMaxAmmo(level.gameTweaks["seekers_primary_weapon"].value);
|
||||
player GiveMaxAmmo(level.gameTweaks["seekers_secondary_weapon"].value);
|
||||
player GiveMaxAmmo(primaryWeapon);
|
||||
player GiveMaxAmmo(secondaryWeapon);
|
||||
|
||||
// gametype-friendly perks
|
||||
player GivePerk("specialty_lightweight");
|
||||
|
@ -632,7 +619,7 @@ handleSeeker() {
|
|||
}
|
||||
|
||||
handleHider() {
|
||||
logPrint("handleHider called");
|
||||
logPrint("handleHider called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -686,7 +673,6 @@ handleHider() {
|
|||
player thread revealWhenGameEnds();
|
||||
/#
|
||||
player thread enableUnlimitedReload();
|
||||
player thread enableWeaponDicing("+actionslot 2");
|
||||
#/
|
||||
|
||||
if (!gameFlag("seekers_released"))
|
||||
|
@ -716,7 +702,7 @@ handleHider() {
|
|||
|
||||
setDisguiseModel(model)
|
||||
{
|
||||
logPrint("setDisguiseModel called");
|
||||
logPrint("setDisguiseModel called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -753,7 +739,7 @@ setDisguiseModel(model)
|
|||
|
||||
setRandomDisguiseModel()
|
||||
{
|
||||
logPrint("setRandomDisguiseModel called");
|
||||
logPrint("setRandomDisguiseModel called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -765,7 +751,7 @@ setRandomDisguiseModel()
|
|||
|
||||
deleteDisguiseModel()
|
||||
{
|
||||
logPrint("deleteDisguiseModel called");
|
||||
logPrint("deleteDisguiseModel called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -781,7 +767,7 @@ deleteDisguiseModel()
|
|||
|
||||
updateDisguiseView()
|
||||
{
|
||||
logPrint("updateDisguiseView called");
|
||||
logPrint("updateDisguiseView called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -810,7 +796,7 @@ updateDisguiseView()
|
|||
* person view and third person view.
|
||||
*/
|
||||
enableThirdPersonSwitch(playerCommand, value) {
|
||||
logPrint("enableThirdPersonSwitch called");
|
||||
logPrint("enableThirdPersonSwitch called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -842,7 +828,7 @@ enableThirdPersonSwitch(playerCommand, value) {
|
|||
* are looking at.
|
||||
*/
|
||||
enableModelChange(playerCommand) {
|
||||
logPrint("enableModelChange called");
|
||||
logPrint("enableModelChange called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -977,7 +963,7 @@ handleModelMenuSelection()
|
|||
*/
|
||||
watchDisguise(angleLockingPlayerCommand, angleModeSwitchPlayerCommand)
|
||||
{
|
||||
logPrint("watchDisguise called");
|
||||
logPrint("watchDisguise called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -1019,7 +1005,7 @@ watchDisguise(angleLockingPlayerCommand, angleModeSwitchPlayerCommand)
|
|||
*/
|
||||
watchDisguiseDamage()
|
||||
{
|
||||
logPrint("watchDisguiseDamage called");
|
||||
logPrint("watchDisguiseDamage called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -1053,7 +1039,7 @@ watchDisguiseDamage()
|
|||
*/
|
||||
enableDisguiseModelAngleModeSwitching(playerCommand)
|
||||
{
|
||||
logPrint("enableDisguiseModelAngleModeSwitching called");
|
||||
logPrint("enableDisguiseModelAngleModeSwitching called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -1093,7 +1079,7 @@ enableDisguiseModelAngleModeSwitching(playerCommand)
|
|||
*/
|
||||
enableDisguiseModelAngleLocking(playerCommand)
|
||||
{
|
||||
logPrint("enableDisguiseModelAngleLocking called");
|
||||
logPrint("enableDisguiseModelAngleLocking called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -1126,7 +1112,7 @@ enableDisguiseModelAngleLocking(playerCommand)
|
|||
*/
|
||||
enableUnlimitedReload()
|
||||
{
|
||||
logPrint("enableUnlimitedReload called");
|
||||
logPrint("enableUnlimitedReload called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
@ -1144,7 +1130,7 @@ enableUnlimitedReload()
|
|||
*/
|
||||
revealWhenGameEnds()
|
||||
{
|
||||
logPrint("revealWhenGameEnds called");
|
||||
logPrint("revealWhenGameEnds called\n");
|
||||
|
||||
player = self;
|
||||
|
||||
|
|
20
mod.csv
20
mod.csv
|
@ -13,14 +13,14 @@ localize,MPUI_HIDEANDSEEK_CAPS
|
|||
localize,MPUI_HIDEANDSEEK_SHORT_CAPS
|
||||
localize,OBJECTIVES_HIDEANDSEEK_DEFENDER
|
||||
|
||||
rawfile,maps/mp/gametypes/_gametypes.txt
|
||||
rawfile,maps/mp/gametypes/dm.gsc
|
||||
rawfile,maps/mp/gametypes/hns.gsc
|
||||
rawfile,maps/mp/gametypes/hns.txt
|
||||
rawfile,maps/mp/gametypes/war.gsc
|
||||
rawfile,maps/mp/mods/_math.gsc
|
||||
rawfile,maps/mp/mods/_modellist.gsc
|
||||
rawfile,maps/mp/mods/_modversion.gsc
|
||||
rawfile,maps/mp/mods/disableClassMenu.gsc
|
||||
rawfile,maps/mp/mods/helpingHints.gsc
|
||||
#rawfile,maps/mp/gametypes/_gametypes.txt
|
||||
#rawfile,maps/mp/gametypes/dm.gsc
|
||||
#rawfile,maps/mp/gametypes/hns.gsc
|
||||
#rawfile,maps/mp/gametypes/hns.txt
|
||||
#rawfile,maps/mp/gametypes/war.gsc
|
||||
#rawfile,maps/mp/mods/_math.gsc
|
||||
#rawfile,maps/mp/mods/_modellist.gsc
|
||||
#rawfile,maps/mp/mods/_modversion.gsc
|
||||
#rawfile,maps/mp/mods/disableClassMenu.gsc
|
||||
#rawfile,maps/mp/mods/helpingHints.gsc
|
||||
|
||||
|
|
|
Loading…
Reference in New Issue