PDA

View Full Version : Hard steering...



darthslaw
06-14-2004, 07:45 AM
I've come back a bit to add another feature to my guided Sentinel rocket for Nightfire, and I wanted to implement limited steering abilities, so the rocket can't turn so fast. This would be a similar effect to using "ParseArg(player, "maxrotvel=50");" or something like that, except that has no effect on ppl who use the mouse.
I thought this thread (http://forums.massassi.net/html/Forum4/HTML/004105.html) had what I was looking for (SM's Missile Warrior mod), but that's not exactly the effect I was after.
Any ideas on how to accomplish this? "get new alignment, do some crazy vector math, and set the alignment to a percentage of the full one" (GBK, approx wording).
Here's the code I was using, in case it sparks any ideas (it seems to have no effect on the difficulty of the steering).

btw, I'm not currently concerned with MP compatibility, as NF is primarily a SP mod -- all MP concerns are secondary.

# Jedi Knight Cog Script
#
# class_rocket2.cog
#
# JK Mod - Nightfire -- Sentinel Rockets (Guided)
#
# Class cog for rockets. Leaves smoketrail behind rocket and fires
# "flame" pars behind it, too. Animates flame texture on rocket.
# Also returns player to internal view if he's guiding rocket.
#
# This cog is a modified form of the default LEC 00_smoketrail.cog
# Runs on c/s flags to reduce lag
#
# Thanks to GBK and SaberMaster for inspiration on the hard-turning. -- if I ever get it to work, that is
#
# (C) 2004 JK Modification: Nightfire
# ================================================== =====================
flags=0x240

symbols

template smoke=+smoketrail local
template flames=+flametrail local
template explode=+rocket_exp local
template CameraTpl=+Zoom_Cam local

material flamemat=flames.mat local
material mat0=redstatic0.mat local

thing player local
thing rocket local
thing dummy local
int id local
int i local

model rocket0=rocket2-0.3do local
model rocket1=rocket2-1.3do local
model rocket2=rocket2-2.3do local
model rocket3=rocket2-3.3do local
model rocket4=rocket2-4.3do local
model rocket5=rocket2-5.3do local
model rocket6=rocket2-6.3do local
model rocket7=rocket2-7.3do local
model rocket8=rocket2-8.3do local

flex newx local
flex newz local
flex max=0.003 local

vector rocketlook local
vector ghostlook local

message created
message pulse
message removed
message damaged
message timer

end
# ================================================== =====================
code
# .................................................. .....................
created:
rocket = GetSenderRef();
player = GetThingParent(rocket);
SetThingPulse(rocket, 0.01);
SetTimerEx(0.5, 0, 0, 0);
MaterialAnim(flamemat, 10, 0x1);
MaterialAnim(mat0, 10, 0x3);

Return;
# .................................................. .....................
pulse:
rocket = GetSenderRef();
//player = GetThingParent(rocket);
player = GetLocalPlayerThing();
CreateThing(smoke, rocket);
CreateThing(flames, rocket);

rocketlook = GetThingLVec(rocket);

Dummy = FireProjectile(player, CameraTpl, -1, -1, '0 0 0', '0 0 0', 0, 0, 0, 0);
ghostlook = GetThingLVec(dummy);
newx = VectorX(ghostlook) - VectorX(rocketlook);
if(newx > max) newx = max;
if(newx < -max) newx = -max;
newz = VectorZ(ghostlook) - VectorZ(rocketlook);
if(newz > max) newz = max;
if(newz < -max) newz = -max;
Dummy = FireProjectile(player, CameraTpl, -1, -1, VectorSet(newx, 0, newz), '0 0 0', 0, 0, 0, 0);
SetThingLook(rocket, GetThingLVec(dummy));
SetThingVel(rocket, VectorScale(GetThingLVec(rocket), 2));
// if(player == GetLocalPlayerThing()) //local player == rocket's pilot
if(rocket != -1)
{
dummy = FireProjectile(rocket, CameraTpl, -1, -1, '0 0.042 0', '0 0 0', 0, 0, 0, 0);
AttachThingToThingEx(dummy, rocket, 0x6);
SetCameraFocus(0, dummy);
if(GetCurrentCamera() == 1) CycleCamera();
}

Return;
# .................................................. .....................
removed:
rocket = GetSenderRef();
SendMessage(GetInvCog(player, 7), user1);
for(i = 0; i < 9; i = i + 1) KillTimerEx(i);
CreateThing(explode, rocket);
SetThingPulse(GetSenderRef(), 0);
SetCameraFocus(0, player);

Return;
# .................................................. .....................
damaged:
SendMessage(GetInvCog(player, 7), user1);
for(i = 0; i < 9; i = i + 1) KillTimerEx(i);

Return;
# .................................................. .....................
timer:
id = GetSenderID();
if(id == 0)
{
ParseArg(rocket, "typeflags=0x24020c");
// SetTypeFlags(rocket, 0x24020c);
SetTimerEx(7.5, 1, 0, 0);
}
else if(id == 1)
{
SetThingModel(rocket, rocket0);
SetTimerEx(1.5, 2, 0, 0);
}
else if(id == 2)
{
SetThingModel(rocket, rocket1);
SetTimerEx(1.5, 3, 0, 0);
}
else if(id == 3)
{
SetThingModel(rocket, rocket2);
SetTimerEx(1.25, 4, 0, 0);
}
else if(id == 4)
{
SetThingModel(rocket, rocket3);
SetTimerEx(1.25, 5, 0, 0);
}
else if(id == 5)
{
SetThingModel(rocket, rocket4);
SetTimerEx(1.0, 6, 0, 0);
}
else if(id == 6)
{
SetThingModel(rocket, rocket5);
SetTimerEx(0.85, 7, 0, 0);
}
else if(id == 7)
{
SetThingModel(rocket, rocket6);
SetTimerEx(0.75, 8, 0, 0);
}
else if(id == 8)
{
SetThingModel(rocket, rocket7);
SetTimerEx(0.5, 9, 0, 0);
}
else if(id == 9)
{
SetThingModel(rocket, rocket8);
}

Return;
# .................................................. .....................
end

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) || f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) || t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) || OMF > * (http://www.bkkbazaar.com/omf/)

[This message has been edited by Darth Slaw (edited June 14, 2004).]

Tazz
06-14-2004, 01:42 PM
I think there are variables like maxrotvel in the templates. Try that in w/ParseArg

------------------
-There are easier things in life than finding a good woman, like nailing Jello to a tree, for instance

-Tazz

darthslaw
06-14-2004, 03:50 PM
<font face="Verdana, Arial" size="2">Originally posted by Darth Slaw:
This would be a similar effect to using "ParseArg(player, "maxrotvel=50");" or something like that, except that has no effect on ppl who use the mouse.</font>

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) &#0124;&#0124; f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) &#0124;&#0124; t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) &#0124;&#0124; OMF &gt; * (http://www.bkkbazaar.com/omf/)

[This message has been edited by Darth Slaw (edited June 14, 2004).]

DSLS_DeathSythe
06-15-2004, 05:38 PM
i dont know if it will help but heres a cog i made that does what it sounds like you want.

################################################## ########
# Jedi Knight Cog Script (JK)
#---------------------------------------------------------
# 00_SMOKETRAIL.COG
# -Leaves a smoke trail behind a moving object.
# -Allows the player to have control of the raildet.
# -Singleplayer only.
#---------------------------------------------------------
# Modified version of LEC's 00_smoketrail.cog
# Written By DSLS_DeathSythe
# This COG is NOT supported by LucasArts Entertainment Co.
################################################## ########
flags=0x240
symbols
#---------------------------------------------------------
message startup
message created
message removed
message pulse
#--------------------#
thing player=-1 local
thing rocket=-1 local

thing temp_thng=-1 local
template temp_tpl=+repeaterball local

template smoke=+smoke local
thing dummy=-1 local
int smoke_count=0 local

vector old_lookVec local
int old_camera=0 local
int count=0 local

vector look_dir local
flex y_dir=0.0 local
flex z_dir=0.0 local
flex yaw_max=100.0 local
flex pitch_max=100.0 local
#---------------------------------------------------------
end
#================================================= ========
code
#---------------------------------------------------------
startup:
player = GetLocalPlayerThing();
rocket = -1;
return;
#---------------------------------------------------------
created:
//-Only one rocket at time.
//-If there is already one going, destroy it and
// send the new one in the right direction.
if(rocket != -1)
{
SetLifeLeft(rocket, 0.1);
StopThing(GetSenderRef());
SetThingLook(GetSenderRef(), old_lookVec);
SetThingVel(rocket, VectorScale(GetThingLVec(rocket), 2));
}
else
{
old_lookVec = GetThingLVec(player);
old_camera = GetCurrentCamera();
}
rocket = GetSenderRef();

//-Let the rocket fly for 30 seconds...
SetLifeLeft(rocket, 30.0);

//-set 100 msec timer for smoke release and control stuff
SetThingPulse(rocket, 0.01);

//-Stop the rockets spinning...
ParseArg(rocket, "angvel=(0.0/0.0/0.0)");
SetWeaponFlags(rocket, 0x100);

//-Stop the players movements, center his view, and adjust
// the min and max headpitch...
SetActorFlags(player, 0x40002);
SetThingLook(player, '1.0 0 0');
ParseArg(player, "minheadpitch=-90.00");
ParseArg(player, "maxheadpitch=90.00");

//-If the player isnt in internal view, switch cameras
if(old_camera != 0) CycleCamera();
SetCameraFocus(0, rocket);
count = 0;
return;
#---------------------------------------------------------
removed:
//-If its not the currently controlled rocket then ignore it...
if(GetSenderRef() != rocket)
return;
//-Else reset all the players stuff...
ClearActorFlags(player, 0x40000);
SetCameraFocus(0, player);
if(GetCurrentCamera() != old_camera) CycleCamera();
SetThingLook(player, old_lookVec);
ParseArg(player, "minheadpitch=-80.00");
ParseArg(player, "maxheadpitch=80.00");
rocket = -1;
return;
#---------------------------------------------------------
pulse:
//-Dont let the smoke come out every pulse...
smoke_count = smoke_count + 1;
if(smoke_count &gt;= 5)
{
//-create smoke at our current location
dummy = CreateThing(smoke, GetSenderRef());
smoke_count = 0;
}

//-Small delay before we take control of the rocket...
if(count &lt; 10)
{
count = count + 1;
return;
}
else
{
//-Limit the players YAW movements...
look_dir = GetThingLVec(player);
if(VectorX(look_dir) &lt; 0 && VectorY(look_dir) &gt; 0)
SetThingLook(player, '0 1.0 0');
if(VectorX(look_dir) &lt; 0 && VectorY(look_dir) &lt; 0)
SetThingLook(player, '0 -1.0 0');

//-Get the playes true look vector...
temp_thng = FireProjectile(player, temp_tpl, -1, -1, '0 0 0', '0 0 0', 1.0, 0x0, 0.0, 0.0);
StopThing(temp_thng);
SetLifeLeft(temp_thng, 0.02);
SetThingFlags(temp_thng, 0x80000);
look_dir = GetThingLVec(temp_thng);

//-Adjust the rockets look by the players look_dir...
y_dir = VectorY(look_dir) * yaw_max;
z_dir = VectorZ(look_dir) * pitch_max;
look_dir = VectorSet(z_dir, y_dir, 0.0);
SetThingRotVel(rocket, look_dir);
SetThingVel(rocket, VectorScale(GetThingLVec(rocket), 2));
}
return;
################################################## ########
end
look it over, test it, maybe you can use some of the code. the max turn speed is the yaw_max and pitch_max so adjust those if you think it needs to turn faster. the only problem is that some times the controls mess up and the rocket starts turning the wrong way. [FIXED]

its a little hard to control the rocket the first few tries but with a little practice it gets easier. use slow easy movements to control it. the rocket is not able to make real sharp turns, but it does ok for open areas.

i didnt make it for MP at all. i have no idea what would even happen if it was tried in MP.
i did try it in SP though, that was fun. http://forums.massassi.net/html/biggrin.gif

hope it helps you.

[Edit: updated the cog and fixed the problem of it flying in the wrong direction]

------------------
Famous last words - "It seemed like a good idea at the time."

[This message has been edited by DSLS_DeathSythe (edited June 16, 2004).]

darthslaw
06-16-2004, 03:28 PM
Jeez, DeathSythe. You make me look bad http://forums.massassi.net/html/smile.gif http://forums.massassi.net/html/wink.gif
Thanks a lot! This is exactly what I was looking for! http://forums.massassi.net/html/biggrin.gif

Thanks again!

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) &#0124;&#0124; f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) &#0124;&#0124; t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) &#0124;&#0124; OMF &gt; * (http://www.bkkbazaar.com/omf/)

[SF]pjb
06-17-2004, 05:19 AM
i'm wouldent this make drivable vehicles a real possiblility?

------------------
I am Darth PJB!
well, go on, run away!

i have a plastic lightsaber and a jedi cape.. am i a nerd?

If gravity is a crule mistress, and bar tenders with bad grammar are untrustworthy, what is air?

SG-fan
06-17-2004, 08:00 PM
drivable vehicles are already a possibility. Now ground vehicles with PROPERLY moving tires and PHYSICS would be nice, yet impossible.

------------------
Sam: "Sir we can't call it 'The Enterprise'"
Jack: "Why not!"

JediKirby
06-18-2004, 08:51 PM
Please impliment MP, since you know, all of the MP levels I'll be making for NF would love to have that rocket launcher in it.

JediKirby

------------------
-Proud Leader of the Minnessassian Council
&lt;]-[ellequin&gt; Nothing is quite as satisfying as placing a .177 lead pellet in between the eyes of a cat.
&lt;]-[ellequin&gt; I think I will leave it's corpse there, to warn all the other cats to keep out of my hibiscus patch

Live on, Adam.

darthslaw
06-19-2004, 02:15 PM
I'll definitely try, since I would LOVE to get ppl like that, but chances are it would be rather laggy. But still, heh, I'll try...

------------------
nytfyre m0d (http://www.nightfire.uni.cc/site/page.php) &#0124;&#0124; f33l t3h p0w3r (http://www.geocities.com/qrphome/pwp3/) &#0124;&#0124; t3h l0st c0gz (http://www.tbns.net/GBK/ol/index.htm) &#0124;&#0124; OMF &gt; * (http://www.bkkbazaar.com/omf/)

EAH_XxLuNaTiKxX
06-19-2004, 06:37 PM
A long while back, i created an guided missile (with effects) that the player could control by steering with the keyboard or mouse.

I called it the Redeemer (LuNaTiK guided missle) Dont know if this is any help, but you might want to take a look at it and figure out how i did it, most functions that are important are labeled....

_____________________________________________

################################################## #######
# [Redeemer (LuNaTiK Guided Missile)] #
# WEAP_SABER.COG #
# Bin 10 #
#**********(C) 2002 by &lt;&lt; EAH_XxLuNaTiKxX &gt;&gt;************#
#**********************Passes C/S***********************#
################################################## #######

symbols

message startup
message activated
message autoselect
message selected
message deselected
message killed
message pulse
message timer
message fire
message newplayer

model povModel=conv.3do local //internal model
model saberMesh=cong.3do local //external model
keyframe mountAnim=ConVmnt.key local //mounting keyframe

template dismountAnim=+concbullet local //main projectile
template holdAnim=+punch local //head pitch
template povSnapAnim1=darkside local //fake camera
template povSnapAnim2=+ssparks_saber local //flash
template povSnapAnim3=+conccloud local //aura
template povPreFireAnim=+raildet_exp2 local //explosion
message user1 //UNUSED
message user2 //UNUSED
message user4 //UNUSED
template povFireAnimB2=+debris_exp local //explosion 2
message removed //removed message
template povFireAnimR1=+force_lightning local //lightning

template povChargeAnim=x local //this block is UNUSED
template povPreBlockAnim=x local
template preFireAnimL=X local
template preFireAnimR=X local
template fireAnimF1=X local
template fireAnimF2=x local
template fireAnimB1=x local
template fireAnimB2=X local
template fireAnimL1=X local
template fireAnimR1=x local
template snapAnim1=x local
template snapAnim2=x local
template snapAnim3=x local
template chargeAnim=X local
template preBlockAnim=X local
template holsterAnim=x local
sound dismountSound=x.WAV local

sound mountSound=df_rif_ready.WAV local //mount sound
sound hitSound01=16metalgroan03.wav local //launch sound
sound hitSound02=tieenginewhine01.wav local //doom sound

sound hitSound03=x.WAV local //this block is UNUSED
sound hitSound12=x.WAV local
sound hitSound14=x.WAV local
sound swingSound01=x.WAV local
sound swingSound02=x.WAV local
sound swingSound03=x.WAV local
template swingSound04=x local
template swingSound05=X local
template swingSound06=X local
template swingSound07=X local
template swingSound08=X local
template swingSoundDbl01=x local
template humSound01=x local

# .................................................. ......................................

flex damage local
flex bladeLen local
flex holsterWait local

thing player local
thing antagonist local

vector ppos local
vector apos local
vector diff local
vector thrust local

flex damage local
flex type local
flex dot local

int mountAnimID local
int preAnimID local
int povPreAnimID local
int slashAnimID local
int povSlashAnimID local

int mode local
int slash local
int nextAttack local
int humChannel local
int holsterTrack local
int slashSound local

int assign local
int nosaber local

vector shakePos local
vector shakeAngle local

cog kyleCog local

end

# ================================================== ======================================

code

################################################## ######
player = GetLocalPlayerThing();
kyleCog = GetThingClassCog(player);
ClearActorFlags(player, 0x2000);
jkDisableSaber(player);
slash = 0;
nextAttack = 0;
slashAnimID=-1;
povSlashAnimID=-1;
return;
id = GetSenderId();
if (id == 0)
{
PlaySoundThing(mountSound, player, 1.0, -1, -1, 0x80);
humChannel = PlaySoundThing(humSound01, player, 1.0, -1, -1, 0x81);
jkSetFlags(player, 0x5);
}
else
if (id == 1)
{
if (nosaber == 0)
SetActorFlags(player, 0x2000);
}
else
if (id == 2)
{
StopKey(player, holsterTrack, 0.0);
}
return;
assign = GetSenderRef();
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 0) && (GetPrimaryFocus(0) == player))
CycleCamera();
jkSetPOVModel( player, povModel );
SetArmedMode( player, 2 );
jkSetWeaponMesh( player, saberMesh );
jkSetWaggle(player, '10.0 7.0 0.0', 350);
if (assign == 0)
{
PlayMode(player, 42);
mountAnimID = jkPlayPOVKey( player, mountAnim, 0, 0x14 );
SetTimerEx(0.7, 0, 0, 0);
}
else
{
mountAnimID = jkPlayPOVKey( player, holdAnim, 0, 0x14 );
humChannel = PlaySoundThing(humSound01, player, 1.0, -1, -1, 0x81);
jkSetFlags(player, 0x80);
}
SetMountWait(player, GetKeyLen(mountAnim));
SetCurWeapon( player, 10 );
SetActorFlags(player, 0x2000);
jkDisableSaber(player);
nosaber = 0;
return;
if ((jkGetSaberCam() == 1) && (GetCurrentCamera() == 1) && (GetPrimaryFocus(1) == player))
CycleCamera();
jkSetFlags(player, 0x8);
PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80);
jkPlayPOVKey( player, dismountAnim, 0, 18 );
holsterWait = GetKeyLen(holsterAnim);
SetMountWait(player, holsterWait);
holsterTrack = PlayKey(player, holsterAnim, 1, 0x4);
SetTimerEx(holsterWait, 2, 0.0, 0.0);
if(mountAnimID != -1)
{
jkStopPOVKey( player, mountAnimID, 0 );
mountAnimID = -1;
}
jkSetWaggle(player, '0.0 0.0 0.0', 0);
slash = 0;

# .................................................. ......................................

selected:
Print("Redeemer [LuNaTiK Guided Missile]");
PlayMode(player, 41); //duplication of weap_concrifle's selected: message, simply because I can ;p
jkSetPOVModel(player, povModel);
SetArmedMode(player, 1);
jkSetWeaponMesh(player, saberMesh);
jkSetWaggle(player, VectorSet(10.0, 7.0, 0.0), 350);
PlaySoundThing(mountSound, player, 1.0, -1.0, -1.0, 0x80);
trackID = jkPlayPOVKey(player, mountAnim, 0, 20);
SetMountWait(player, GetKeyLen(mountAnim));
jkClearFlags(player, 0x5);
SetCurWeapon(player, 10);
Return;

activated:
if(!on)
{
on = 1;
redeemer = FireProjectile(player, dismountAnim, hitSound01, 18, NULL, NULL, 1.0, 0x1, 90, 90);
camera = CreateThing(povSnapAnim1, redeemer);
SetThingRotVel(camera, VectorSet(0, 0, 0));
SetLifeLeft(camera, 9999.0);
AttachThingToThingEx(camera, redeemer, 0x8);
SetLifeLeft(redeemer, 9999.0);
SetThingCurGeoMode(camera, 0);
cam_mode = GetCurrentCamera();
SetCameraFocus(cam_mode, camera);
SetActorFlags(player, 0x188);
SetThingFlags(player, 0x110);
CaptureThing(redeemer); //I wonder what this will do? http://forums.massassi.net/html/smile.gif
effects = 0;
first = 0;
SetPulse(.03);
}
Return;

pulse:
pitch = FireProjectile(player, holdAnim, -1, -1, NULL, NULL, 0, 0, 0, 0);
zSetThingCurGeoMode(pitch, 0);
aimvec = GetThingLVec(pitch);
SetThingLook(redeemer, aimvec);
SetThingLook(camera, aimvec);
SetThingVel(redeemer, VectorScale(aimvec, 2.0));
DestroyThing(pitch);
effects = effects + 1;
if(effects % 20 == 0)
{
CreateThing(povFireAnimR1, redeemer);
PlaySoundThing(hitSound02, redeemer, 1.0, -1, -1, 0x80);
}
Return;

killed:
newplayer:
deselected:
if(on)
{
DestroyThing(redeemer);
no_more:
if(!first)
{
SetCameraFocus(cam_mode, player);
ClearActorFlags(player, 0x188);
ClearThingFlags(player, 0x110);
SetPulse(0);
ReleaseThing(redeemer);
go = 1;
for(i = 0; i &lt; GetNumPlayers() && go == 1; i = i + 1)
{
potential = GetPlayerThing(i);
dist = VectorDist(GetThingPos(camera), GetThingPos(potential));
if(dist &lt; 1.0 && potential != player)
{
victim = potential;
go = 0;
}
else
{
victim = -1;
}
}
count = 0;
SetTimerEx(0.01, camera, 0, 0);
}
}
Return;

removed:
if(on && GetSenderRef() == redeemer)
{
call no_more;
first = 1;
}
Return;

timer:
if(on)
{
if(victim != -1)
{
jkSetTarget(victim);
TeleportThing(victim, camera);
ClearActorFlags(victim, 0x8188);
ClearThingFlags(victim, 0xFFFFDF99);
SetThingHealth(victim, 1);
DamageThing(victim, 9999999999999999e99999999999999, 0xABCDEF, player);
ClearThingFlags(victim, 0x21088A1C);
}
if(count % 3 == 0) CreateThing(povSnapAnim2, camera);
aura2 = CreateThing(povSnapAnim3, camera);
SetThingLook(aura2, RandVec());
CreateThing(povPreFireAnim, camera);
CreateThing(povFireAnimB2, camera);
count = count + 1;
if(count &lt; 10)
{
SetTimerEx(0.1, camera, 0, 0);
}
else
if(count &gt;= 10)
{
KillTimerEx(camera);
DetachThing(camera);
DestroyThing(camera);
on = 0;
jkEndTarget();
}
}
Return;

startup:
player = GetLocalPlayerThing();
on = 0;
jkSetTargetColors(56, 4, 2);
Return;

autoselect:
ReturnEx(999);
Return;


//now THIS is a huge resource...
x(x(x(x, x, x, x)));
for(x; x &lt; x; x = x + 1);
{}
if((-x() != x) && (x(x()) == x) && (x(x())))
{ X(x);}
x;
x;
{
if(x(x) &gt; x)
{
x(x, x, x, x);
}
X = x(x, x, x, x);
if(X != -x)
{
if(x != x)
{
x(x, x(x));
x(x, x);
x();
X(x, X(x(x), x(x)));
x(X, X(X(x), x));
}}
}
x();
if(x == X)
{
x(x, X, -X, -x, x, x, x, x, X, X);
x(X, x(x), -x, -x, x, '0.0 0.0 0.0', x, X, x, X);
x(X, x(x), -x, -x, x, X, 0, 0, x, X);
x = x(x, x, x, x);
x(x, x);
x(x, x);
x(x, x);
x(X, '0.0 0.0 0.0');
x(x, x, x, x);
}
else
if(X == x)
{
x(x, x, -x, -x, X, X, X, x, x, x);
X(x, x, -x, -x, x, x(x, x, x), x, X, X, x);
X(x, x, -x, -x, x, x(x, x, x), x, X, x, X);
X(X, X, -x, -x, x, x(x, x, x), x, X, X, x);
X(X, x(x), -x, -x, x, x(X, -x, x), X, x, x, x);
}
else
if(x == X)
{
x(x(x), x, x, -x, -x, x);
X = x(x, x, x, x);
x(x);
}
else
if(x == X)
{
x = x(x, x, x, x);
x(x, x(x));
}
else
{
x= x(X, X, -x, -x, x, X, x, X, x, X);
x(x);
if(x &gt;= x)
{
x(x, x);
}
x(x, x);
x(x, x(x(x), x));
if(x &lt;= x)
{
x(x, x);
x(x, x, x, x), x, x, x, x;
}}


end

# EAH_XxLuNaTiKxX

And Hell, it passes checksum #

------------------
eternity is the now ~ that never was

[This message has been edited by EAH_XxLuNaTiKxX (edited June 20, 2004).]

[This message has been edited by EAH_XxLuNaTiKxX (edited June 20, 2004).]

a_person
06-19-2004, 08:16 PM
Holy Crap its eah lunatik.

------------------
~Nightfire Mod (http://www.nightfire.uni.cc)~

DSLS_DeathSythe
06-20-2004, 08:22 AM
the idea of guided rockets in MP was fun enough to keep me interested.
i got it working in MP, but it still has a few little bugs.
i can post the cogs later if you want, after i fix the problems.

------------------
Famous last words - "It seemed like a good idea at the time."