This is the script I am using:
main() { precacheShader("white"); level.drown_barsize = 288; level.drown_time = 8; level.drown_hurttime = 6; drownage = getentarray("drown","targetname"); for(d=0;d<drownage.size;d++) drownage[d] thread water(); } water() { self.ceiling = getent(self.target,"targetname"); while(1) { self waittill("trigger", player); if(player.sessionstate == "playing" && !player isTouching(self.ceiling) && !isDefined(player.drowning)) player thread drown(self); } } drown(trigger) { self endon("disconnect"); self.drowning = true; wait 0.15; water_vision = newClientHudElem(self); water_vision.x = 0; water_vision.y = 0; water_vision.alignX = "left"; water_vision.alignY = "top"; water_vision.horzAlign = "fullscreen"; water_vision.vertAlign = "fullscreen"; water_vision.sort = 0; water_vision.alpha = 0.75; water_vision.color = (0.16, 0.38, 0.5); water_vision setshader ("white", 640, 480); drown_bar_back = newClientHudElem(self); drown_bar_back.x = 320; drown_bar_back.y = 385; drown_bar_back.alignX = "center"; drown_bar_back.alignY = "middle"; drown_bar_back.alpha = 0.5; drown_bar_back.sort = 1; drown_bar_back.color = (0,0,0); drown_bar_back setShader("white", (level.drown_barsize + 4), 14); drown_bar = newClientHudElem(self); drown_bar.x = (320 - (level.drown_barsize / 2)); drown_bar.y = 385; drown_bar.alignX = "left"; drown_bar.alignY = "middle"; drown_bar.alpha = 1; drown_bar.sort = 2; drown_bar.color = (1,1,1); drown_bar setShader("white", 1, ; drown_bar scaleOverTime(level.drown_time, level.drown_barsize, ; underwatertime = 0; damagetime = 0; while(self.sessionstate == "playing" && self isTouching(trigger) && !self isTouching(trigger.ceiling) && underwatertime < level.drown_time) { wait 0.05; underwatertime += 0.05; damagetime++; if(underwatertime >= level.drown_hurttime && damagetime >= 4) { radiusDamage(self.origin,9,1,1); damagetime = 0; } } if(self.sessionstate == "playing" && underwatertime >= level.drown_time) // Been underwater for too long { water_vision destroy(); radiusDamage(self.origin,22, 3000, 3000); deathmethod[0] = " made a hole in the water and lay down quietly to rest forever."; deathmethod[1] = " paid a long lasting visit to Davy Jones's Locker."; deathmethod[2] = " went diving without breathing apparatus."; deathmethod[3] = " swam like a brick."; iPrintln(self.name + deathmethod[randomInt(deathmethod.size)]); } else if(self.sessionstate == "playing" && underwatertime < level.drown_time) // Came up for air { water_vision.alpha = 0.5; water_vision fadeOverTime(3); water_vision.alpha = 0; water_vision thread destroyaftertime(self); } else // Died or went to spectators while underwater water_vision destroy(); drown_bar_back destroy(); drown_bar destroy(); self.drowning = undefined; } destroyaftertime(player) { player endon("disconnect"); wait 3; self destroy(); }
When I load the map I get this error:
"cannot cast undefined to string: (file 'maps/mp/mp_xi_bedlam_drown.gsc', line 15)
self.ceiling = getent(self.target,"targetname");
...