Page 1 of 1

How the ProxMine works

Posted: Wed Sep 29, 2004 5:23 am
by yfmain
I'm a newbie of D3E, and I wonder how the proxmine works.
It is a quite simple object, and it does not have any gunpoint.
But you know, when you hit it, it would explode and cover a very large range. I check the tablefile of this item, but nothing there.
Is there anything in script which is doing this, and where the exploding animation came from?

could anyone explain to me how such objects work and how to make it work?

Posted: Wed Sep 29, 2004 9:38 am
by DigiJo
all mines in d3 are robots and follow the instructions of a compiled ai. (modul aigame.dll)

Posted: Wed Sep 29, 2004 11:21 am
by yfmain
Can we build such instruction files for custom Robots?

Posted: Wed Sep 29, 2004 4:18 pm
by Duper
See THIS Thread for just THAT thing! :)


oops.. I said that word again! ACK!

Posted: Thu Sep 30, 2004 3:24 am
by yfmain
Thanks, but this thread did say what i want.

I exported the Proxmine.oof and table.gam item out and make a new .mn3, then i use this robot in my level, just like what Jon did, but the new mines in my level are only standing there without doing anything. I have to shoot them to die.

I write a script of one of the mine, and make the behavior simular like the original Proxmine, but it only works with the mines i defined with names.

So how could i make a robot like the proxmine, and i can put them in the game without doing any script work for every of them.

What DigiJo said makes sense, but i have no idea how to make a instruction for them.


BTW, How can i show a uservar on the screen or write then in a output file? i use the HUD message with integer, but it only showed the message without a number from uservar.

Posted: Thu Sep 30, 2004 3:45 pm
by Interceptor6
Well, if you want to make a custom prox mine you don't need to make it a robot. You can leave it as a weapon.

Countermeasures are weapons with an extremely low lifetime that spawn a robot (what you see in the game). You can just edit the weapon page to have a lifetime of -1 or 9999 and get rid of the robot spawn.

The Explosion for the Prox mines is simple a blast ring that was generated with an internal script that can't be edited in dallas. It is a lot easier to use the weaponized version, it will perform the same way.

But if you want to use the robot version, just make sure that the GAM page has the same name as that of the original prox, and set the Script name override to DestroyOnContact or ExplodeonContact with a very low HP level.

Hope that helps.

-Int

Posted: Fri Oct 01, 2004 3:03 am
by yfmain
That makes sense for How the Proxmine works. Thanks, Int.

I never did any weapons, but i guess it also needs to be defined how to behave in Dallas every time when you use them.

I like the idea of overriding functions, this probably makes a custom robot more like the original one. Could you tell me where can i find relevant infos for doing this, such as what functions i can override and what these functions do. Thanks,
;)

Posted: Fri Oct 01, 2004 3:28 pm
by Interceptor6
Actually, weapons themselves don't require any scripting at all, and are quite simple to make. all you need is a few models (oof) and a weapon page in your level's gam. The only other thing you need is a Generic Object page in the tablefile for the powerup, but that is it.

But as for creating a custom 'script override', i'm not sure. I know of a few built in override names, but not how to create a new one. There is probably a way to do it, but you might beed to know some coding, since so far I haven't been able to make a script for an ObjectID instead of a single object, as in scripting behavior for all 'Squids' instead of just one squid with a dallas name.

Here are a few of the built in ones:

ExplodeonContact - Makes an object explode when it comes in contact with a player.

DestroyOnContact - This will destroy any object that comes in to contact with it, like the subway trains in Retribution level 4.

Skiff - This makes the robot behave somewhat similar to an airplane. It simply flies around randomly looking for targets, and does not evade or circle any enimies. This is useful on terrain.

Thief - This makes a robot act like a thiefbot.

Barnswallow - This will make the robot drag powerups around randomly like the 'Barnswallow' does.

Sniper - The Orbot uses this one. The robot will fire a few shots and usually not be much foa threat.

SniperNoRun - This causes a robot to act more like a Playership (like the blackpyros in level 4), which can create a very powerful enemy. However, this has one downside: the robot usually takes off and runs throughout a level after firing a few shots at you, so only use this one if you want a roaming enemy or you have the enemy in a secluded area.

I'm sure there are a few more, but those are the ones I use the most often in the gams.

Anyways, good luck. I found out most of that just by experimenting ad searching through Table.gam, so just look around in there and you can find out a lot of stuff on how the GAM works. ( you can extract this from d3.hog using hogview32 )

-Int

Posted: Mon Oct 04, 2004 4:47 am
by yfmain
There are a few more overridable functions extracted from table.gam, i got them by following your idea, thanks,;)
Seeker, sixgun, stinger, humonculous, sickle, Chemicalball, Hateptmc, EvaderModA, JoshBell

GBPowerUp, Sparky, Mantaray, Barnswallow
SpyHunter, FireAtDist

Actually I think overriding functions is quite limited, as it can only be used in the object that invokes these functions. But for the object like proxmine, which does not use such things at all, you cannot override a function for it. Also, if your overrided object must have an object name to be identified in Dallas, why would you directly write a script for it instead overriding?

Have you got any clue to write scripts for all 'Squids' instead of a single named squid, i try to work with it, but it only allow me to choose a named object as the script Owner.

I guess i probably misunderstand in some part with this overriding thing, why would designier let us to override something. is the for disabling the original AI and building new behaviors for them or what? This gives me a feeling that it should work for all existing objects instead of only one, otherwise why would we need it?

Maybe i'm just being stupid to say some rubbish, but i have not got any better learning for it.

Cheers,

yf