Cod4 gas granaten gefunden im speicher !!! (tear_grenades)

poltergeistluxx
Hallo!

Ich bin mir so ziemlich sehr sicher dass ich was sensationelles gefunden habe und zwar gas granaten! (also waren die gas masken im spiel doch nicht umsonst Augenzwinkern )

Ich denke die entwickler haben sie implementiert aber wieder rausgenommen (oder nur deaktiviert) denn die funktionen sind noch drin !!!

Ccldesty und ich werden probieren die gas granaten irgendwie zu aktivieren.

(edit: hier das video: http://youtube.com/watch?v=Q0qfoz0kcHc )
Hier noch der gesamte code der _tear_grenades.gsc

die man übrigens mit dem hex editor finden kann und exportieren kann worüber ich nicht weiter reden möchte also stellt mir keine fragen darüber !!!

so hier der code:

*********************************************

main()
{
level.tearradius = 170;
level.tearheight = 128;
level.teargasfillduration = 7; // time until gas fills the area specified
level.teargasduration = 23; // duration gas remains in area
level.tearsufferingduration = 3; // (duration after leaving area of effect)

level.teargrenadetimer = 4; // should match time to appearance of effect

precacheShellShock("teargas");

fgmonitor = maps\mp\gametypes\_perplayer::init("tear_grenade_monitor", ::startMonitoringTearUsage, ::stopMonitoringTearUsage);
maps\mp\gametypes\_perplayer::enable(fgmonitor);
}

startMonitoringTearUsage()
{
self thread monitorTearUsage();
}
stopMonitoringTearUsage(disconnected)
{
self notify("stop_monitoring_tear_usage");
}

monitorTearUsage()
{
self endon("stop_monitoring_tear_usage");

wait .05;

if (!self hasWeapon("tear_grenade_mp"))
return;

// when this player's tear grenade ammo goes down, assume the nearest "grenade" entity is a tear grenade.

prevammo = self getammocount("tear_grenade_mp");
while(1)
{
ammo = self getammocount("tear_grenade_mp");
if (ammo < prevammo)
{
num = prevammo - ammo;
iprintln(num);
for (i = 0; i < num; i++)
{
grenades = getEntArray("grenade", "classname");
bestdist = undefined;
bestg = undefined;
for (g = 0; g < grenades.size; g++)
{
if (!isdefined(grenades[g].teargrenade))
{
dist = distance(grenades[g].origin, self.origin + (0,0,4 );
if (!isdefined(bestdist) || dist < bestdist)
{
bestdist = dist;
bestg = g;
}
}
}
if (isdefined(bestdist))
{
grenades[bestg].teargrenade = true;
grenades[bestg] thread tearGrenade_think(self.pers["team"]);
}
}
}
prevammo = ammo;
wait .05;
}
}

tearGrenade_think(team)
{
// wait for death

// (grenade doesn't actually die until finished smoking)
wait level.teargrenadetimer;

ent = spawnstruct();
ent thread tear(self.origin);
}

tear(pos)
{
trig = spawn("trigger_radius", pos, 0, level.tearradius, level.tearheight);

//thread drawcylinder(pos, level.tearradius, level.tearheight);

starttime = gettime();

self thread teartimer();
self endon("tear_timeout");

while(1)
{
trig waittill("trigger", player);

if (player.sessionstate != "playing")
continue;

time = (gettime() - starttime) / 1000;

currad = level.tearradius;
curheight = level.tearheight;
if (time < level.teargasfillduration) {
currad = currad * (time / level.teargasfillduration);
curheight = curheight * (time / level.teargasfillduration);
}

offset = (player.origin + (0,0,32)) - pos;
offset2d = (offset[0], offset[1], 0);
if (lengthsquared(offset2d) > currad*currad)
continue;
if (player.origin[2] - pos[2] > curheight)
continue;

player.teargasstarttime = gettime(); // purposely overriding old value
if (!isdefined(player.teargassuffering))
player thread teargassuffering();
}
}
teartimer()
{
wait level.teargasduration;
self notify("tear_timeout");
}

teargassuffering()
{
self endon("death");
self endon("disconnect");

self.teargassuffering = true;

self shellshock("teargas", 60);

while(1)
{
if (gettime() - self.teargasstarttime > level.tearsufferingduration * 1000)
break;

wait 1;
}

self shellshock("teargas", 1);

self.teargassuffering = undefined;
}

drawcylinder(pos, rad, height)
{
time = 0;
while(1)
{
currad = rad;
curheight = height;
if (time < level.teargasfillduration) {
currad = currad * (time / level.teargasfillduration);
curheight = curheight * (time / level.teargasfillduration);
}

for (r = 0; r < 20; r++)
{
theta = r / 20 * 360;
theta2 = (r + 1) / 20 * 360;

line(pos + (cos(theta) * currad, sin(theta) * currad, 0), pos + (cos(theta2) * currad, sin(theta2) * currad, 0));
line(pos + (cos(theta) * currad, sin(theta) * currad, curheight), pos + (cos(theta2) * currad, sin(theta2) * currad, curheight));
line(pos + (cos(theta) * currad, sin(theta) * currad, 0), pos + (cos(theta) * currad, sin(theta) * currad, curheight));
}
time += .05;
if (time > level.teargasduration)
break;
wait .05;
}
}

********************************************

wenn das nicht mal süss aussieht :}
wenn ihr es nicht glauben wollt kann ich eine anleitung posten für die die es selber sehen wollen und die datei selber aus dem "speicher" exportieren möchten.


EDIT: HIER DAS VIDEO !!! : http://youtube.com/watch?v=Q0qfoz0kcHc
KubikRubik
krasse sache
die hex-sache
ist das sehr schwer?
poltergeistluxx
nee ^^ man muss sich nur ein klein wenig in c++ und so auskennen aber ein profi braucht man nicht zu sein dafür um mods zu erstellen Zunge raus
ein paar kleinere kenntnisse sind aber nicht schlecht Augenzwinkern
Interceptor
hmmm ... scheint sich um einen Effekt für Tränengas zu handeln.

Ist schon lustig, wenn die Entwickler sowas im Program "vergessen" .... oder doch nicht, vielleicht die Grundlage für einen kommenden Patch? ... ach auch egal smile .... jedenfalls wird sich jeder Modder über sowas freuen.
CCL_DESTROYER
Naja vlt. haben sie es auch absichtlich wieder rausgenommen wegen spielspass gründen.
Die AC-130(die waffe aus dem flugzeug aus dem sp) oder wie die heißt war auch ursprünglich für den mp gedacht es sind auch hiervon noch überbleibsel im speicher allerdings weis nur iw wie es ursprünglich gedacht war.
Ich arbeite zurzeit an einem zoom-mod für die sniper, habe allerdings einige probleme mit dem dvar cg_fov das auf ein unters limit von 65 begrenzt ist (sniper selbst = 15), da gibt es dann auch noch das dvar cg_fovmin das man auf 1 runter setzen kann.
Ich muss rausfinden wie das game das zielen bei waffen erzeugt, scheinbar nicht durch cg_fov...
Ist ne harte nuss...
poltergeistluxx
ich habe mir von iw sagen lassen dass sie es rausgenommen haben weil es sonst laggs gäbe auf den servern.
OLD MAN WITH GUN

Zitat:

Original von KubikRubik
krasse sache
die hex-sache
ist das sehr schwer?
So la la.
Aber wozu die Arbeit.
Es gibt schon seit kurz nach dem Release von CoD4 sämtliche gsc Dateien (auch die, die poltergeistluxx oben gepostet hat) bei
modcod4.com zum download.
http://www.modcod4.com/download.php?view.5
EC|Mad2Cap
Und wer weiss, vielleicht wird die Gasgranatengeschichte mit einem Patch oder Erweiterungspack implementiert...

...ich halte da für nichts mehr ausgeschlossen... grosses Grinsen
Urukh4j
so ne gasgrante bring bestimmt mehr schaden fürs spiel als das sie das Spielerlebnis fördert...

Alleine die Tatsache, dass dann noch ne Gasmaske implementiert werden muss / implementiert ist.

Und allein die Rechenleistung für die Grafischen Effekte (Hitzeflimmern, Transparente nebelschwaden, etc).

Hat bestimmt schon nen Grund, warum die nicht drin ist... Hoffentlich bleibt das auch so. Die Blendgranaten an sich sind ja schon nervig ^^
clutzi
also mit den gasgranaten das sie NICHT implementiert werden bin ich voll für, das war bei swat4 sowas von nervig das wäre hier echt nicht von vorteil. die blendgranaten find ich auch voll ätzend aber was soll man machen solange es kein "anständigen" mod gibt las ich das mit dem unranked..