UGX-Mods Login

or login with an authentication provider below
Sign In with Google
Sign In with Twitter
Sign In with Discord
Sign In with Steam
Sign In with Facebook
Sign In with Twitch

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - StraightArrow

Hi everyone,
 
I've always thought of zombies as more of a tower defense horde mode. I found it strange that the games didn't evolve much past rebuilding barriers for this aspect. So here is my early WIP of adding more tower defense aspects to the game to make high rounds more interesting. This mod just closes the help door in nacht. it kinda works on other doors but is pretty janky. pretty sure der reise doesnt load with this on. Haven't been able to test multiplayer as my friends dont have waw and dont want to buy it.
 
What it does:
 
Allows you to close door after opening it. Careful! Zombies will come knock it down after a few seconds!
 
Plan to do:
 
1. Make  all doors closeable
 
2. Make the debris act like closeable doors
 
3. allow player to 'barricade' against door to increase time it takes to knock down
 
4. increase polish. add fx and different sound/animation to make it look like door is coming down
 
5. make this work on all maps including modded ones
 
 
 
Known issues:
 
1. rarely zombies can slip in through door. the game is jank and collision doesn't apply to everyone, go figure
 
2. Some zombies get confused when door opens and cant chase after you
 
Download:
https://www.mediafire.com/folder/1h98uv62lpirr/zm_closedoor
3 months ago
Code Snippet
Plaintext
#decompiled verruckt.lua
Script.Level = {}
function Script.Level.Setup()
  Script.NumberOfCourtyardSpawns = 8
  Script.Level.NumberOfStartAreas = 2
  Script.Level.Areas = {
    {
      Name = "GermanStart",
      NumberOfSpawns = 2,
      NumberOfCourtyardWindows = 2
    },
    {
      Name = "AmericanStart",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 2
    },
    {
      Name = "AmericanDown1",
      NumberOfSpawns = 0,
      NumberOfCourtyardWindows = 0
    },
    {
      Name = "AmericanDown2",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 2
    },
    {
      Name = "AmericanUp1",
      NumberOfSpawns = 2,
      NumberOfCourtyardWindows = 1
    },
    {
      Name = "AmericanUp2",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 0
    },
    {
      Name = "AmericanUp3",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 0
    },
    {
      Name = "Generator",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 0
    },
    {
      Name = "GermanUp2",
      NumberOfSpawns = 2,
      NumberOfCourtyardWindows = 0
    },
    {
      Name = "GermanUp1",
      NumberOfSpawns = 1,
      NumberOfCourtyardWindows = 1
    }
  }
  Script.CourtyardSpawns = 8
  Script.Level.Links = {
    {
      LinkName = "LinkGerSrt_AmerSrt",
      TriggerName = "NA",
      Area1 = "GermanStart",
      Area2 = "AmericanStart"
    },
    {
      LinkName = "LinkAmerSrt_AmerDwn1",
      TriggerName = "AmerSrt_AmerDwn1_Trigger",
      Area1 = "AmericanStart",
      Area2 = "AmericanDown1"
    },
    {
      LinkName = "LinkAmerSrt_AmerDwn2",
      TriggerName = "AmerSrt_AmerDwn2_Trigger",
      Area1 = "AmericanStart",
      Area2 = "AmericanDown2"
    },
    {
      LinkName = "LinkAmerDwn2_AmerUp1",
      TriggerName = "AmerDwn_AmerUp1_Trigger",
      Area1 = "AmericanDown2",
      Area2 = "AmericanUp1"
    },
    {
      LinkName = "LinkAmerUp1_AmerUp2",
      TriggerName = "AmerUp1_AmerUp2_Trigger",
      Area1 = "AmericanUp1",
      Area2 = "AmericanUp2"
    },
    {
      LinkName = "LinkAmerUp2_AmerUp3",
      TriggerName = "AmerUp2_AmerUp3_Trigger",
      Area1 = "AmericanUp2",
      Area2 = "AmericanUp3"
    },
    {
      LinkName = "LinkAmerUp3_Gen",
      TriggerName = "AmerUp3_Gen_Trigger",
      Area1 = "AmericanUp3",
      Area2 = "Generator"
    },
    {
      LinkName = "LinkGerUp2_Gen",
      TriggerName = "GerUp2_Gen_Trigger",
      Area1 = "Generator",
      Area2 = "GermanUp2"
    },
    {
      LinkName = "LinkGerUp1_GerUp2",
      TriggerName = "GerUp1_GerUp2_Trigger",
      Area1 = "GermanUp2",
      Area2 = "GermanUp1"
    },
    {
      LinkName = "LinkGerSrt_GerUp1",
      TriggerName = "GerSrt_GerUp1_Trigger",
      Area1 = "GermanUp1",
      Area2 = "GermanStart"
    }
  }
  Script.Level.MysteryBoxes = {
    "MysteryBoxGenerator",
    "MysteryBoxAmericanDownstairs",
    "MysteryBoxGermanStart",
    "MysteryBoxGermanUpstairs1",
    "MysteryBoxGermanUpstairs2"
  }
  if Game.IsIPadMode() == true then
    Script.ipadNormalSpawns = {
      "GermanStartZombieSpawn1",
      "AmericanDown2ZombieSpawn1",
      "AmericanUp1ZombieSpawn1",
      "AmericanUp1ZombieSpawn2",
      "AmericanUp2ZombieSpawn1",
      "AmericanUp3ZombieSpawn1",
      "GeneratorZombieSpawn1",
      "GermanUp2ZombieSpawn1",
      "GermanUp2ZombieSpawn2",
      "GermanUp1ZombieSpawn1"
    }
  end
  Script.Level.Waves = Script.Level.BuildWaveTable()
  Script.Level.MaxZombiesAmount = 24
end
function Script.Level.Begin()
  Game.SetDefaultFogConfig("verruckt", 1000)
  Script.SetupInitialMeshes({
    "outside1",
    "outside2",
    "outside3",
    "outside4",
    "outside5",
    "outside6",
    "outside7",
    "outside8",
    "outside9",
    "outside10",
    "outside11",
    "outside12"
  })
  Script.SetupInsideMeshes()
  if Game.IsAreaUnlocked(Script.AreaOne.OpenAreas[1]) then
    Script.OpenArea(Script.AreaOne.OpenAreas[1])
  end
  if Game.IsAreaUnlocked(Script.AreaTwo.OpenAreas[1]) then
    Script.OpenArea(Script.AreaTwo.OpenAreas[1])
  end
  Game.StopAmbience()
  Game.AddAmbienceChannel("zombies")
  Game.AddAmbienceChannel("verrucktAmbience")
  Game.AddAmbienceChannel("wind")
  Script.Level.SetTrapActive("Trap1", false)
  Script.Level.SetTrapActive("Trap2", false)
  for _FORV_3_, _FORV_4_ in ipairs(Script.Level.MysteryBoxes) do
    if _FORV_3_ > 1 then
      Game.SetASMTrigger(_FORV_4_, "deactivateMysteryBox", 1)
    end
  end
  Script.Level.MysteryBoxMemory = {}
  Script.Level.MysteryBoxMemorySize = 2
  if Game.RandomNumber(1, 3, RAND_MYSTBOX) == 1 then
    Game.Timeout(6000, "PowerStart1")
  else
    Game.Timeout(6000, "PowerStart2")
  end
  Game.SetUsingPlayerVox(false)
  Game.SetUsingImpactEffects(false)
end
function Script.Level.Resume()
  Game.SetDefaultFogConfig("verruckt", 1000)
  Script.SetupInsideMeshes()
  Game.StopAmbience()
  Game.AddAmbienceChannel("zombies")
  Game.AddAmbienceChannel("verrucktAmbience")
  Game.AddAmbienceChannel("wind")
  Game.ResetTriggerASMState("Trap1")
  Game.ResetTriggerASMState("Trap2")
  Script.Level.MysteryBoxMemory = {}
  Script.Level.MysteryBoxMemorySize = 2
  Game.SetUsingPlayerVox(false)
  Game.SetUsingImpactEffects(false)
end
function Script.Level.Trigger(_ARG_0_, _ARG_1_, _ARG_2_, _ARG_3_)
  if Game.MatchHash(_ARG_0_, "GeneratorSwitch") then
    if Game.IsLocalPlayer(_ARG_1_) == true then
      Game.SetAchievement("ver_yougotpowah")
    end
    Script.Level.TurnOnGenerator()
  elseif Game.MatchHash(_ARG_0_, "DentistChairVolume") then
    if Game.IsLocalPlayer(_ARG_1_) == true then
      Game.SetAchievement("ver_openwide")
    end
    Game.DisableTrigger("DentistChairVolume")
    Game.EnableSoundEmitter("DentistWhizz")
    Game.DisableSoundEmitterOnSoundEnd("DentistWhizz")
    Game.Timeout(5500, "endDentist")
  end
end
function Script.Level.Timeout(_ARG_0_)
  if Game.MatchHash(_ARG_0_, "endDentist") then
    Game.DisableSoundEmitter("DentistWhizz")
  elseif Game.MatchHash(_ARG_0_, "endGenSound") then
    Game.DisableSoundEmitter("SoundGeneratorTurnOn")
  elseif Game.MatchHash(_ARG_0_, "Trap1End") then
    Script.Level.SetTrapActive("Trap1", false)
    Game.SetASMTrigger("Trap1", "zapperEnd", 1)
  elseif Game.MatchHash(_ARG_0_, "Trap2End") then
    Script.Level.SetTrapActive("Trap2", false)
    Game.SetASMTrigger("Trap2", "zapperEnd", 1)
  elseif Game.MatchHash(_ARG_0_, "PowerStart1") or Game.MatchHash(_ARG_0_, "PowerStart2") then
    Game.PlaySound(_ARG_0_)
  end
end
function Script.Level.Signal(_ARG_0_, _ARG_1_, _ARG_2_)
  if Game.MatchHash(_ARG_1_, "zapperOn") then
    if Game.MatchHash(_ARG_0_, "Trap1") then
      Script.Level.SetTrapActive("Trap1", true)
    elseif Game.MatchHash(_ARG_0_, "Trap2") then
      Script.Level.SetTrapActive("Trap2", true)
    else
      Game.DDMsgF("LuaDebug", "We have an asm message with no owner - get John D")
    end
  elseif Game.MatchHash(_ARG_1_, "zapperOff") then
    if Game.MatchHash(_ARG_0_, "Trap1") then
      Script.Level.SetTrapActive("Trap1", false)
    elseif Game.MatchHash(_ARG_0_, "Trap2") then
      Script.Level.SetTrapActive("Trap2", false)
    else
      Game.DDMsgF("LuaDebug", "We have an asm message with no owner - get John D")
    end
  elseif Game.MatchHash(_ARG_1_, "zapperStart") then
    if Game.MatchHash(_ARG_0_, "Trap1") then
      Game.Timeout(30000, "Trap1End")
    elseif Game.MatchHash(_ARG_0_, "Trap2") then
      Game.Timeout(30000, "Trap2End")
    else
      Game.DDMsgF("LuaDebug", "We have an asm message with no owner - get John D")
    end
  elseif Game.MatchHash(_ARG_1_, "teddyBear") then
    Script.Level.WarpMysteryBox(_ARG_0_)
  end
end
function Script.Level.SetTrapActive(_ARG_0_, _ARG_1_)
  if _ARG_1_ then
    Game.EnableRender(_ARG_0_ .. "Effect1")
    Game.EnableRender(_ARG_0_ .. "Effect2")
    Game.EnableRender(_ARG_0_ .. "Effect3")
    Game.EnableRender(_ARG_0_ .. "Effect4")
    Game.EnableRender(_ARG_0_ .. "Effect5")
    Game.EnableRender(_ARG_0_ .. "Effect6")
    Game.EnableSoundEmitter(_ARG_0_ .. "Sound1")
    Game.EnableSoundEmitter(_ARG_0_ .. "Sound2")
    Game.EnableSplashEffect(_ARG_0_ .. "Laser1")
    Game.EnableSplashEffect(_ARG_0_ .. "Laser2")
  else
    Game.DisableRender(_ARG_0_ .. "Effect1")
    Game.DisableRender(_ARG_0_ .. "Effect2")
    Game.DisableRender(_ARG_0_ .. "Effect3")
    Game.DisableRender(_ARG_0_ .. "Effect4")
    Game.DisableRender(_ARG_0_ .. "Effect5")
    Game.DisableRender(_ARG_0_ .. "Effect6")
    Game.DisableSoundEmitter(_ARG_0_ .. "Sound1")
    Game.DisableSoundEmitter(_ARG_0_ .. "Sound2")
    Game.DisableSplashEffect(_ARG_0_ .. "Laser1")
    Game.DisableSplashEffect(_ARG_0_ .. "Laser2")
  end
end
function Script.Level.TurnOnGenerator()
  Game.DisableTrigger("GeneratorSwitch")
  Game.EnableSoundEmitter("SoundGeneratorTurnOn")
  Game.Timeout(37500, "endGenSound")
  Game.ActivateCollisionMesh("col_LinkGerSrt_AmerSrt")
  Game.ActivateNavigationMesh("nav_LinkGerSrt_AmerSrt")
  Game.SetASMTrigger("BuyPerkRevive", "genTurnOn", 1)
  Game.SetASMTrigger("BuyPerkJugga", "genTurnOn", 1)
  Game.SetASMTrigger("BuyPerkSpeed", "genTurnOn", 1)
  Game.SetASMTrigger("BuyPerkDbTap", "genTurnOn", 1)
  Game.EnableSoundEmitter("SoundPerkHum1")
  Game.EnableSoundEmitter("SoundPerkHum2")
  Game.EnableSoundEmitter("SoundPerkHum3")
  Game.EnableSoundEmitter("SoundPerkHum4")
  Game.SetASMTrigger("Trap1", "genTurnOn", 1)
  Game.SetASMTrigger("Trap2", "genTurnOn", 1)
  Game.SetASMTrigger("StartDoorLink", "genTurnOn", 1)
  Script.AreasJoined = true
  Game.SetAreaUnlocked("GermanStart", true)
  Game.SetAreaUnlocked("AmericanStart", true)
  Script.OpenArea()
  Game.SetLinkUnlocked("LinkGerSrt_AmerSrt")
end
function Script.Level.WarpMysteryBox(_ARG_0_)
  table.insert(Script.Level.MysteryBoxMemory, 1, _ARG_0_)
  while table.getn(Script.Level.MysteryBoxMemory) > Script.Level.MysteryBoxMemorySize do
    table.remove(Script.Level.MysteryBoxMemory)
  end
  for _FORV_5_, _FORV_6_ in ipairs(Script.Level.MysteryBoxes) do
    for _FORV_11_, _FORV_12_ in ipairs(Script.Level.MysteryBoxMemory) do
      if Game.MatchHash(_FORV_12_, _FORV_6_) then
        break
      end
    end
    if true == false then
      table.insert({}, _FORV_6_)
    end
  end
  newBox = {}[Game.RandomNumber(1, table.getn({}) + 1, RAND_MYSTBOX)]
  Game.DDMsgF("LuaDebug", "Mystery box warping to " .. newBox)
  Game.SetASMTrigger(newBox, "activateMysteryBoxFalling", 1)
end
function Script.Level.MultipleSpawnLevelInfo(_ARG_0_, _ARG_1_, _ARG_2_, _ARG_3_, _ARG_4_)
  if _ARG_4_ == false then
    Game.SetAreaUnlocked("AmericanStart", true)
    Game.SetAreaUnlocked("GermanStart", true)
  end
  Script.AreaOne = {
    Name = "German",
    Status = "initialising",
    Player1 = {
      Name = _ARG_0_,
      Spawn = "Player1Spawn"
    },
    Player2 = {
      Name = _ARG_1_,
      Spawn = "Player2Spawn"
    },
    OpenAreas = {
      "GermanStart"
    },
    Zombies = 0
  }
  Script.AreaTwo = {
    Name = "American",
    Status = "initialising",
    Player1 = {
      Name = _ARG_2_,
      Spawn = "Player3Spawn"
    },
    Player2 = {
      Name = _ARG_3_,
      Spawn = "Player4Spawn"
    },
    OpenAreas = {
      "AmericanStart"
    },
    Zombies = 0
  }
end
function Script.Level.GetWaveInfo(_ARG_0_)
  if _ARG_0_ <= table.getn(Script.Level.Waves) then
    return Script.Level.Waves[_ARG_0_]
  end
  return Script.Level.ZombieWaveEquation(_ARG_0_)
end
function Script.Level.BuildWaveTable()
  if Script.Level.BuildWaveTableFull ~= nil then
    return Script.Level.BuildWaveTableFull()
  end
  return {
    {
      Zombies = {
        {
          {1, 1},
          {2, 2},
          {1, 3},
          {2, 4}
        },
        {
          {1, 1},
          {2, 2},
          {1, 3},
          {2, 4}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {3, 4}
        },
        {
          {3, 1},
          {3, 2},
          {3, 3},
          {3, 4}
        }
      },
      ZombieHealth = {40, 80},
      SpawnSpeed = 4000,
      InitialSpawns = 2,
      InitialSpawnSpeed = 5000
    },
    {
      Zombies = {
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {3, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8}
        }
      },
      ZombieHealth = {75, 150},
      SpawnSpeed = 4000,
      InitialSpawns = 2,
      InitialSpawnSpeed = 5000
    },
    {
      Zombies = {
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {1, 8},
          {1, 9}
        },
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {1, 8},
          {1, 9}
        },
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {3, 5},
          {3, 6},
          {3, 7},
          {2, 8},
          {1, 9}
        },
        {
          {1, 1},
          {1, 2},
          {3, 3},
          {3, 4},
          {3, 5},
          {3, 6},
          {3, 7},
          {2, 8},
          {1, 9}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {3, 4},
          {3, 5},
          {3, 6},
          {4, 7},
          {2, 8},
          {1, 9}
        }
      },
      ZombieHealth = {125, 250},
      SpawnSpeed = 3000,
      InitialSpawns = 3,
      InitialSpawnSpeed = 4000
    },
    {
      Zombies = {
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {1, 8},
          {2, 9},
          {1, 10}
        },
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {1, 8},
          {2, 9},
          {1, 10}
        },
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {3, 5},
          {3, 6},
          {3, 7},
          {2, 8},
          {3, 9},
          {1, 10},
          {1, 11}
        },
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {3, 5},
          {3, 6},
          {4, 7},
          {2, 8},
          {4, 9},
          {3, 10},
          {2, 11}
        },
        {
          {1, 1},
          {1, 2},
          {2, 3},
          {2, 4},
          {3, 5},
          {3, 6},
          {4, 7},
          {2, 8},
          {4, 9},
          {3, 10},
          {3, 11}
        }
      },
      ZombieHealth = {175, 350},
      SpawnSpeed = 3000,
      InitialSpawns = 3,
      InitialSpawnSpeed = 3000
    }
  }
end
function Script.Level.ZombieWaveEquation(_ARG_0_)
  if Script.Level.ZombieWaveEquationFull ~= nil then
    return Script.Level.ZombieWaveEquationFull(_ARG_0_)
  end
  return {
    Zombies = {
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      }
    },
    ZombieHealth = {
      100000 / 2,
      100000
    },
    SpawnSpeed = 120000,
    InitialSpawns = 1,
    InitialSpawnSpeed = 120000
  }
end
Code Snippet
Plaintext
#decompiled nacht_group.lua
Script.Level = {}
function Script.Level.Setup()
  Script.Level.Areas = {
    {Name = "StartRoom", NumberOfSpawns = 5},
    {
      Name = "MysteryBoxRoom",
      NumberOfSpawns = 3
    },
    {
      Name = "UpstairsRoom",
      NumberOfSpawns = 4
    }
  }
  Script.Level.Links = {
    {
      LinkName = "LinkBackSofa",
      TriggerName = "BackSofaTrigger",
      Area1 = "UpstairsRoom",
      Area2 = "MysteryBoxRoom"
    },
    {
      LinkName = "LinkFrSofa",
      TriggerName = "FrontSofaTrigger",
      Area1 = "StartRoom",
      Area2 = "UpstairsRoom"
    },
    {
      LinkName = "LinkDoor",
      TriggerName = "DoorTrigger",
      Area1 = "StartRoom",
      Area2 = "MysteryBoxRoom"
    }
  }
  if Game.IsIPadMode() == true then
    Script.ipadNormalSpawns = {
      "mysteryboxroomZombieSpawn3"
    }
  end
  Script.Level.Waves = Script.Level.BuildWaveTable()
  Script.Level.MaxZombiesAmount = 24
end
function Script.Level.Begin()
  Game.SetDefaultFogConfig("nacht", 1000)
  Script.SetupInitialMeshes({
    "Outside2",
    "Outside3",
    "Outside4"
  })
  Script.SetupInsideMeshes()
  Script.OpenArea("StartRoom")
  Game.StopAmbience()
  Game.AddAmbienceChannel("zombies")
  Game.AddAmbienceChannel("world")
  Game.AddAmbienceChannel("wind")
  Script.SetUpBarrels("BarrelExplosive", 25)
  Script.Level.RadioOn = false
  Script.Level.RadioChannel = 1
  Game.SetUsingPlayerVox(false)
  Game.SetUsingImpactEffects(false)
end
function Script.Level.Resume()
  Game.SetDefaultFogConfig("nacht", 1000)
  Script.SetupInsideMeshes()
  Game.StopAmbience()
  Game.AddAmbienceChannel("zombies")
  Game.AddAmbienceChannel("world")
  Game.AddAmbienceChannel("wind")
  Script.Level.RadioOn = false
  Script.Level.RadioChannel = 1
  Game.SetUsingPlayerVox(false)
  Game.SetUsingImpactEffects(false)
end
function Script.Level.GameOver()
  Game.DisableSoundEmitter("RadioTrack1")
  Game.DisableSoundEmitter("RadioTrack2")
  Game.DisableSoundEmitter("RadioTrack3")
end
function Script.Level.GetWaveInfo(_ARG_0_)
  if _ARG_0_ <= table.getn(Script.Level.Waves) then
    return Script.Level.Waves[_ARG_0_]
  end
  return Script.Level.ZombieWaveEquation(_ARG_0_)
end
function Script.Level.Trigger(_ARG_0_, _ARG_1_, _ARG_2_, _ARG_3_)
  if Game.MatchHash(_ARG_0_, "RadioVolume") then
    if Game.IsLocalPlayer(_ARG_1_) == true then
      Game.SetAchievement("radioSilence")
    end
    if Script.Level.RadioChannel == 1 then
      Game.EnableSoundEmitter("RadioTrack1")
      Game.DisableSoundEmitter("RadioTrack2")
      Game.DisableSoundEmitter("RadioTrack3")
      Script.Level.RadioChannel = 2
    elseif Script.Level.RadioChannel == 2 then
      Game.EnableSoundEmitter("RadioTrack2")
      Game.DisableSoundEmitter("RadioTrack1")
      Game.DisableSoundEmitter("RadioTrack3")
      Script.Level.RadioChannel = 3
    elseif Script.Level.RadioChannel == 3 then
      Game.EnableSoundEmitter("RadioTrack3")
      Game.DisableSoundEmitter("RadioTrack1")
      Game.DisableSoundEmitter("RadioTrack2")
      Script.Level.RadioChannel = 4
    elseif Script.Level.RadioChannel == 4 then
      Game.DisableSoundEmitter("RadioTrack1")
      Game.DisableSoundEmitter("RadioTrack2")
      Game.DisableSoundEmitter("RadioTrack3")
      Script.Level.RadioChannel = 1
    end
  end
end
function Script.Level.BuildWaveTable()
  if Script.Level.BuildWaveTableFull ~= nil then
    return Script.Level.BuildWaveTableFull()
  end
  return {
    {
      Zombies = {
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4}
        },
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4}
        },
        {
          {2, 1},
          {2, 2},
          {1, 3},
          {1, 4}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {1, 4}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4}
        }
      },
      ZombieHealth = {40, 80},
      SpawnSpeed = 4000,
      InitialSpawns = 2,
      InitialSpawnSpeed = 5000
    },
    {
      Zombies = {
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {1, 1},
          {1, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8}
        }
      },
      ZombieHealth = {75, 150},
      SpawnSpeed = 4000,
      InitialSpawns = 2,
      InitialSpawnSpeed = 5000
    },
    {
      Zombies = {
        {
          {2, 1},
          {2, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8}
        },
        {
          {2, 1},
          {2, 2},
          {2, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {3, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {3, 4},
          {3, 5},
          {3, 6},
          {2, 7},
          {2, 8}
        }
      },
      ZombieHealth = {125, 250},
      SpawnSpeed = 3000,
      InitialSpawns = 3,
      InitialSpawnSpeed = 4000
    },
    {
      Zombies = {
        {
          {2, 1},
          {2, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8},
          {1, 9},
          {1, 10}
        },
        {
          {2, 1},
          {2, 2},
          {1, 3},
          {1, 4},
          {1, 5},
          {1, 6},
          {1, 7},
          {1, 8},
          {1, 9},
          {1, 10}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {2, 4},
          {2, 5},
          {2, 6},
          {2, 7},
          {2, 8},
          {1, 9},
          {1, 10},
          {1, 11}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {2, 4},
          {2, 5},
          {3, 6},
          {3, 7},
          {2, 8},
          {2, 9},
          {2, 10},
          {1, 11}
        },
        {
          {2, 1},
          {2, 2},
          {3, 3},
          {2, 4},
          {3, 5},
          {3, 6},
          {3, 7},
          {2, 8},
          {2, 9},
          {2, 10},
          {2, 11}
        }
      },
      ZombieHealth = {175, 350},
      SpawnSpeed = 3000,
      InitialSpawns = 3,
      InitialSpawnSpeed = 4000
    }
  }
end
function Script.Level.ZombieWaveEquation(_ARG_0_)
  if Script.Level.ZombieWaveEquationFull ~= nil then
    return Script.Level.ZombieWaveEquationFull(_ARG_0_)
  end
  return {
    Zombies = {
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      },
      {
        {3, 1}
      }
    },
    ZombieHealth = {
      100000 / 2,
      100000
    },
    SpawnSpeed = 120000,
    InitialSpawns = 1,
    InitialSpawnSpeed = 120000
  }
end
Hey y'all,
Can't seem to finish my projects but can't seem stop messing around with world at war stuff lol. so I started digging around the ipod/ipad version that was delisted from the  apple store awhile ago. After using some tools to unpack files I was able to get to some group.bin files. I'm still trying to work out entirely what encryption/packing they use but in the mean time for 1 file group.bin files I was able to extract luaQ files related to map scripts.  I've only done verruckt and nacht so far but it shouldn't be too hard to grab   something from shi no numa/der reise. Also, I only posted the interesting stuff. There's one or two other files that are just wavetables that control zombie  health, but I could post those too if it helps anybody.  If anyone is interested in the methods I used to crack it I can post it (might take forever for me to do it, me being a lazy  bum). Sorry if wrong area, just couldn't think of anywhere else it belonged. Hopefully we could repack modified script files and make some interesting mods for mobile.
Happy new year btw
4 years ago
Code Snippet
cpp
while(1)
{
//iprintln("in the while loop!");
currentweapon = players[i] getCurrentWeapon();
if(currentweapon == "m2_flamethrower_zombie_upgraded")
{
while(players [i] isfiring())
{
if(players [i] isMeleeing() == false && jump_param <200) //300 before
{
//wait .02; //the function works ok without this. the problem is tap firing. after firing there is a slight delay until the hud catches up. the wait simulates this slightly
jump_param = jump_param + 4.0;
//iprintln("in first func jump param is going up and " + jump_param );

thread flamey_jump(jump_param);

}
//there just needs to be a little wait time between these two. have too many waits now the flamethrower is jumpy
wait .05;
}
wait .2;
while ( players[i] isfiring() == false && jump_param >0 || players[i] isMeleeing() == true)
{

if (jump_param >= 200) //300 before
{
wait 1.5;
jump_param = jump_param - 3;
}
//if (jump_param >0)
//{
//thread flamey_jump(jump_param);
wait .08; //this is the problem right here, i need to wait to make the thing more sensitive but that holds up the lift up part, gotta figure it out
jump_param = jump_param - 1;
iprintln("in first func jump param is going down and " + jump_param );
//}
//continue; //thread flamey_jump(jump_param);
}




//thread flamey_jump(jump_param);

}
wait .05;


flamey_jump(jump_param)
 {
players = get_players();
for (i = 0; i < players.size; i++)
{

if (isDefined( jump_param ))
{
iprintln("in second function jump_param is " + jump_param);
}

//i think what is happening here is a race condition (especially with a while loop)
if(jump_param<200) //setting this to while causes jump_param to go beserk and change values in the loop. want to change this to while so this can execute without waiting on 1st while loop
{
// etc. etc. lets the player fly. if i check jump_param in here it is wrong by the way



I have what I believe to be a race condition. I would prefer to set the flamey_jump function's if statement to a while statement (so it can run without waiting on 'waits' in the first function), but the variable jump_param will go beserk and return the wrong values (even though they are correct with the variable check on the line just before). So the flamey_jump code will execute forever basically. I'm sure threading flamey_jump multiple times a second from the first while loop isn't helping either, but I want to constantly be feeding that variable into the 2nd function to know whether to allow flight or not.  I am a very junior scripter so I probably have this all ass backwards (go easy on me). 
6 years ago
Oof, 
After many days and nights I'm almost done with squashing the bugs. Next I'll work on some of the collision in Der Reise. Can I edit most of it through scripting? I know I can spawn new collisions. Can I despawn some of the ones the devs put in place?
6 years ago
Quick little update.
I've fixed the knifing problem with the thing. Before, when I knifed at the ground it would also let me fly (why did the devs code that knifing is the same as "firing"? These and other existential questions at 9).
Now it works as intended.  One more bug to fix then we gucci. Unfortunately I think it will be the hardest one to address...
6 years ago
I thought about that actually. Thinking I would need to delete the pullout animations so it would switch instantaneously without the player noticing the switch. 
6 years ago
True lol,
Thanks for checking it out! Yea, surprised Treyarch didn't do the blue flame thing in the first place since it only took me and the gf about 4 hrs to get it working and it seems like kind of a no-brainer (and most of that time was trying different colors and arguing which looked better:D) . Still chugging away at balancing the darn thing though :/ofc they would hide the overheat functions deep in the code so I'm trying workarounds using its sounds/fx.

6 years ago
Okey,
I know people have wanted a blue flame for the upgraded flamethrower. Still working on making it not look so white lol. There is a purple one if you go to my imgur.
Thanks to CHN for his tut and BluntStuffy.  Thanks to my gf who is awesome and helped me recolor :))
6 years ago

Finally had time to (almost) finish this idea I had floating around in my head.
Thinking of incorporating this into a bigger mod. I know this is like 2010 style stuff but idk, I like the idea of it :)
Probably gonna create a 3rd person animation to make it a little more lively.
Any tips on how to make it overheat faster only while its in the air (balancing purposes)
Also how do I attach gifs properly to this website lol
6 years ago
Fun map and I can definitley appreciate the soviet love ;)
+1!
6 years ago
All hail the god jiggy22! https://www.ugx-mods.com/forum/modding/13/weapon-mod/15242/msg150667#msg150667
use the updated map files from the ff files in zone/english. Use Toms ff extractor tool and get the map files for whatever map you're modding (you might still need to include sp weapon files manually in your mod).
Could someone pretty please modify the mod tools package download so this isnt a problem for people in the future? I don't think I'm the only one to run into this problem, and most junior scripters would probably give up pretty quickly. Please, in the ugx part of the modtools download include the updated base map files so people dont run into errors due to outdated scripts! (or explain to people that if they dont download the ugx modtools update, theyre gonna have a bad time modding base maps)
Maybe you guys have already done this, but when I tested the ugx modtool patch just now I still couldnt load in.

edit1: So all the other maps besides sumpf stopped working when I included updated sumpf scripts, im gonna try adding back in all the other updated scripts and see what happens but I guess people should just update their mod with the ff files on a case by case (map by map) basis? 
6 years ago
Thank you so much for the reply reaper. I was under the impression that if I did not change the base game files, I would not need to include them in the mod. Is that wrong? Or does it get tempramental and want you to include it sometimes and other times not?

edit 1: Also, as said before, on Der Reise almost every weapon is a default weapon. When I look at the expanded console it says it could not load weapon file for basically every weapon, as well as a long list of xanims it couldnt load. But on Nacht or Verruckt if I give all the weapons, most of them appear normally.

I am truly stupefied as to what is wrong. I just tried to reinstall WAW today as well as reinstalling mod tools.

Thanks again. This has been holding me back way too long!

edit2: Ok, thank you so much for telling me to include files. I did that with the weapons missing on der reise and now those at least are working again. I just dont understand why it wouldn't use the base game files since i did nothing to change the weapons at all! :facepalm: So since shi no numa still isnt working, I'm going to try to include some of the files the console said it couldn't find.

Thanks again! Although my faith in these tempramental tools decreases by the day...>:(

Double Post Merge: January 30, 2019, 06:42:50 am
Ok and now after including almost every zombiemode gsc, I am still unable to load into sumpf. (every other map works fine though)

I get the following error
unknown function: (file 'maps/_zombiemode_cymbal_monkey.gsc' , line 93)
grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff );
6 years ago
Ok, so all other maps besides Sumpf work. I'm starting to think it's some other problem. Most of the weapons in the maps have become default weapons. Is that the problem?
6 years ago
Does anyone else have an issue when modifying _zombiemode.gsc? I change one simple value and it starts throwing "unable to find script" errors. Even including it in my compiler files without any changes does that.  
6 years ago
I am a very junior scripter but what is your question?
6 years ago
Loading ...