Slastraf Posted October 23, 2015 Share Posted October 23, 2015 Script.maxEnemies = 3 Script.currentround = roundssurvived -1 Script.spawner1 = nil --entity "spawn1" Script.spawner2 = nil --entity "spawn2" Script.spawner3 = nil --entity "spawn3" Script.spawner4 = nil --entity "spawn4" Script.spawner5 = nil --entity "spawn5" Script.spawner6 = nil --entity "spawn6" Script.spawner7 = nil --entity "spawn7" Script.fighting = true Script.alreadyrunning = false --[[wichtige Varieblen: zombieskilled = 0 roundssurvived = 0 ]]-- function Script:Start() self.spawners={} self.spawners[0]=self.spawner1 self.spawners[1]=self.spawner2 self.spawners[2]=self.spawner3 self.spawners[3]=self.spawner4 self.spawners[4]=self.spawner5 self.spawners[5]=self.spawner6 self.spawners[6]=self.spawner7 --self.spawner2.script:SpawnEnemy(1) --self.spawner2.script:SpawnEnemy(2) self:NewRound() end function Script:UpdatePhysics() --local rounds = roundssurvived --calculates the new amount of zombies in new round --if window:KeyDown(Key.W) then self:NewRound() end if zombiesleft <0 then zombiesleft = 0 end if zombiesleft == 0 then self.fighting = false end --if self.fighting == false then self:NewRound() end self:UpdateZombieSpawn() end function Script:NewRound() roundssurvived= roundssurvived +1 local a = (roundssurvived*.1) + roundssurvived self.maxEnemies= self.maxEnemies + Math:Round(a) end function Script:UpdateZombieSpawn() if zombiesleft==0 then self:NewRound() end local g = self.maxEnemies if self.fighting == false then for n=0,self.maxEnemies do if self.fighting == true then break end if n==maxEnemies then self.fighting = true break end local b=Math:Round(Math:Random(0, 6)) self.spawners[b].script:SpawnEnemy(b) zombiesleft = zombiesleft +1 end end --alreadyrunning = true end --[[ function Script:Collision(entity, position, normal, speed) end ]]-- function Script:PostRender(context) context:SetBlendMode(Blend.Alpha) context:DrawText(tostring(self.maxEnemies),200,2) context:SetBlendMode(Blend.Solid) end --[[ function Script:DrawEach(camera) end ]]-- --[[ --This function will be called after the world is rendered, before the screen is refreshed. --Use this to perform any 2D drawing you want the entity to display. function Script:PostRender(context) end ]]-- --[[ --This function will be called when the entity is deleted. function Script:Detach() end ]]-- --[[ --This function will be called when the last instance of this script is deleted. function Script:Cleanup() end ]]-- This is a script of mine and if I use it like that a huge amount of crawlers get spawned (it should only be as much as in the maxenemies value). I think it is probably because the for loop gets called several times before the first one makes the fighting = true, which should end the for -loop. My question is how to fix that. Quote Link to comment Share on other sites More sharing options...
Jazz Posted October 24, 2015 Share Posted October 24, 2015 Typo? if n==maxEnemies then Quote --- Scott Using Windows 7 Ultimate 64 bit/Core I7-2700K @ 4312mhz/24G RAM/Nvidia GTX 1060 Link to comment Share on other sites More sharing options...
Rick Posted October 24, 2015 Share Posted October 24, 2015 for n=0,self.maxEnemies do if self.fighting == true then break end if n==maxEnemies then self.fighting = true break end local b=Math:Round(Math:Random(0, 6)) self.spawners[b].script:SpawnEnemy(b) zombiesleft = zombiesleft +1 end end This doesn't really make sense. The if statement to check if n == maxEnemies is kind of useless given your loop goes to maxEnemies anyway. That means your for loop will stop once it hits maxEnemies anyway. What are you trying to do here again? What's the goal? 1 Quote Link to comment Share on other sites More sharing options...
Slastraf Posted October 24, 2015 Author Share Posted October 24, 2015 for n=0,self.maxEnemies do if self.fighting == true then break end if n==maxEnemies then self.fighting = true break end local b=Math:Round(Math:Random(0, 6)) self.spawners[b].script:SpawnEnemy(b) zombiesleft = zombiesleft +1 end end This doesn't really make sense. The if statement to check if n == maxEnemies is kind of useless given your loop goes to maxEnemies anyway. That means your for loop will stop once it hits maxEnemies anyway. What are you trying to do here again? What's the goal? I want to spawn enemies in the world, and maxenemies is increasing every round. The goal is to make it actually work fluently and in the later state of developing the enemies are resetted every 3 rounds but they also got more hp. Quote Link to comment Share on other sites More sharing options...
Rick Posted October 24, 2015 Share Posted October 24, 2015 You'll have to define what "more fluently" really means. What are your exact requirements for this? 1 Quote Link to comment Share on other sites More sharing options...
Slastraf Posted October 24, 2015 Author Share Posted October 24, 2015 You'll have to define what "more fluently" really means. What are your exact requirements for this? Always when theres a new level , the maxzombies value is increasing by 30%, When theres a new level the for loop gets called once and spawns the enemies. I put this in the updatwphysiscs function so the program always updates if its time to spawn new enemies or not. The new map function gets triggered when fighting == false. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.