View Full Version : Problems with Osman map

February 15th, 2012, 19:52
Thank You for adding more gametypes. This will help the map reach a wider audience and hopefully have a longer lifespan than a map with only two gametypes would have had.

Myself and a colleague from our server gave this map a quick test before we put it on our public server. We only check the map in the CTF gametype, as that's what we play, and our first observations were that the ctf spawns were all spread along a line that extended from the rear of the base to not much further ahead of the flag base, with none advancing near the middle of the map. With such a long distance between flags, and the possibility to meet several spawning enemy when you finally got near to their base, we felt it would hinder players from normal ctf play and would turn them to camping instead. :(

We also noted the teleporters, which we immediately disabled, as we feel that they have no real function on this map, and are unrealistic in a WWII setting. (A per server preference)

The overall size is good, although it may become a bit too snipe orientated for our liking, especially with a large open water feature that can be viewed in is entirety from the large central tower. The tower is accessible from a small exterior elevator on the outer wall, however after exiting onto the tower roof, the lift auto descends with no means for the person on the tower to get off, except through death, as there is no switch at the top of the tower to recall the elevator.

We found some spots in the water were we could lie prone without any water to hinder our vision and only our headgear showing above the water line. This however is not uncommon in maps with large water features.

Unfortunately after a short time of testing we found a major bug within this map, and it's all to do with the drowning script.

Firstly we noticed that the drowning script was not always working as intended, and often it simply did not work at all, giving us a free run, with clear vision under the water. We then began to look more closely at what was happening when we entered the water feature, and we discovered that after deliberately drowning a few times that the drowning 'bar' began acting erratically (flashing briefly but not moving or simply not appearing although it's background box was). This effect is also noticable, near the end, in the video you posted on Xfire. After this we noticed that there was a major degregation in the on-screen hud elements, simply put, they started to disappear, one by one. First we noticed that when carrying the flag, the flag icon did not show on-screen (top left) below the team scores, then we noticed that the health re-gen bar (below the ammo count, bottom right) had also gone. Soon after this we lost the landmine icon that is normally above the grenade counter (bottom right).

My colleague is able to follow the coding in the scripts within the maps, as he has fixed several bugs and added several new features to our mod (eXtreme+ v2.6), and after checking the scripts in this map he informed me that the watertutorial_drown.gsc which is used in this map is not ending processes, that it has started, when they are no longer required. (Sorry, I'm not technically gifted in this department to explain fully). My colleague, a German citizen, suggested to invite you along to our private match server where he would explain his findings to you, if you so desire. A meeting, (or chat), could be arranged via PM

We have had problems in the past with maps that contained a drowning script that was incompatible with our mod, some were even known to crash their own map at random intervals. At that time we searched the eXtreme+ forum and found a drown script that was recommended for use with the mod (eXtreme+ v2.6). To test this theory I substituted the drown script within watertutorial_drown.gsc for the drown script (v1) created by BionicNipple, and changing only the getentarray from 'water' to the getentarray 'drown' that is used in mp_osman, I was unable to recreate the problems and found the map to be stable. This also worked in testing on AWE V3.4

The (unedited) drown code (v1) by BionicNipple

//[Nip] Drowning Water Script v1
//[Nip] by BionicNipple (bionic.nipple@gmail.com)
//[Nip] This script makes a player slowly drown when their head falls below the
//[Nip] water line.
//[Nip] TO USE: Create a trigger_multiple brush with targetname set to "water"
//[Nip] for each body of water in your map. It should be the same size as the
//[Nip] body of water. Include this file in maps\mp and add the following line
//[Nip] to your mp_mapname.gsc:
//[Nip] thread maps\mp\drowning::main();

precacheShader("white"); //[Nip] Used to tint a drowning player's screen.

thread onPlayerConnect();
thread monitor_water();

//[Nip] For some reason the mouth needs to be created right away
//[Nip] and not later on when they're in the water.
level waittill("connected", player);
player thread createMouth();

//[Nip] Create a "mouth". If this ent falls below the water line (i.e. touches) - drown.
if (isDefined(self.mouth)) return;

self waittill("spawned_player");
wait .5;
self.mouth = spawn("script_origin", (0, 0, 0));
self.mouth linkto(self, "j_mouth_le", (0, 0, 0), (0, 0, 0));

//[Nip] Search for water pools and monitor them.
pools = getentarray("water", "targetname");
if (isDefined(pools))
for (i=0; i<pools.size; i++)
if (pools[i].classname == "trigger_multiple")
pools[i] thread monitor_pool();

//[Nip] Wait till a player jumps in this pool\river\lake.
self waittill("trigger", player);
player monitor_player(self);

//[Nip] If the mouth is below the water line, slowly drown the player and tint the screen.
self endon("disconnect");

if (isDefined(self.isDrowning) && self.isDrowning == true) return;
self.isDrowning = true;

water_vision = newClientHudElem(self);
water_vision.x = 0;
water_vision.y = 0;
water_vision setshader ("white", 640, 480);
water_vision.alignX = "left";
water_vision.alignY = "top";
water_vision.horzAlign = "fullscreen";
water_vision.vertAlign = "fullscreen";
water_vision.color = (.16, .38, .5);
water_vision.alpha = 0;

while (self.mouth istouching(trigger))
self.health -= 10;
if (self.health < 1)
self suicide();
water_vision.alpha = .75;
water_vision fadeOverTime(1);
water_vision.alpha = .25;
wait 1;
self.isDrowning = false;
water_vision destroy();

Hats off to you, this was a good map for your first publicly realeased map, I hope you continue to create more maps for CoD2 :number-one-45:

February 18th, 2012, 06:57
I wrote you a Pm