News | Forum | People | FAQ | Links | Search | Register | Log in
Mapping Help
This is the place to ask about mapping problems, techniques, and bug fixing, and pretty much anything else you want to do in the level editor.

For questions about coding, check out the Coding Help thread: https://www.celephais.net/board/view_thread.php?id=60097
First | Previous | Next | Last
Blagger Is Just Simply Quite Pleased! 
;-) 
Sorry, Sorrry, Sooorrrry 
So sorry times many times! 
BlaGGer 
I really think you need to take medical advice from a neurologist to solve your restlessness problem... believe me... ;) 
Flawless Victory! 
blagh! 
Trigger_teleport Sound 
I there a problem with the SILENT flag in the trigger_teleport routine as it makes no difference if it is set or not.

I am looking in the triggers.qc file and the only reference I can see is
if (!(self.spawnflags & SILENT))

Is that right? & or == 
Silence Is Golden 
It may be that the flag is working, just not how you expect. Silent teleporters still make the noise when something teleports in, they just don't make the ambient teleporter hum near to the trigger. It's intended for trigger_teleports that sit outside the main level, for teleporting monsters in, as the sound out there would be pointless, unless it spilled over into the real level, which would be confusing. 
Preach 
What I am wanting is for no sound at all when I teleport my extra monsters in. I am happy for there to be sound when the player uses a trasporter. I have some triggers that teleport monsters into places the player has been to once and I do not want the player to know that by hearing sounds.

I thought that was what the flag SILENT was for . Can you guide me how I may stop the teleport sound? 
The Sound Of Silence 
Ok, the first function to look at is play_teleport, which selects a random teleport sound and plays it. However, we cannot change this function, because it is a think function for a temporary entity. This means we have no way to check whether it was spawned by a trigger_teleport that is silent or not. So, we need to look at the code that calls this bit.

The next function is spawn_tfog, which spawns a new entity s, who's only purpose is to play the sound in the right place in 0.2 seconds. Ideally we would have an if statement around that spawn function, but again we can't be sure what function has called spawn_tfog. If it was the trigger_teleport, then we'd know the trigger was the "self" entity. But another entity might call spawn_tfog, and so modifying this function might cause problems in other places.

So, we go back one more function, to teleport_touch. So, above this function add the line
float NONOISE = 4;
This is just defining a new constant for the flags on a teleporter; if you set flag 4 then the trigger_teleport, then anything teleported will be silent.

Then go down into the function, and find the lines

makevectors (t.mangle);
org = t.origin + 32 * v_forward;
spawn_tfog (org);


and replace it with

if(!(self.flags & NONOISE))
{
makevectors (t.mangle);
org = t.origin + 32 * v_forward;

spawn_tfog (org);}


Notice that this gets rid of spawn_tfog totally, so you get no flash as well as no sound. I assume that if the monsters are meant to teleport in without informing the player, no teleporter flash is needed.

If you did want silent teleports that included the flash, you'd need to add
else
{
makevectors (t.mangle);
org = t.origin + 32 * v_forward;
spawn_tfog_silent(org);
}

after the if statement, and make a copy of spawn_tfog called spawn_tfog_silent, which omitted the sound spawning lines.

As a side note for mappers, it turns out that play_teleport is a function like barrel_explode that can be called by the func_notnull trick. So if you want to spam false teleport sounds at the player, you now have the power! Well, I'll confess I've not actually tried it in a map, but it looks like it should work. 
 
[deleted by metlslime] 
Cough 
cough 
Crosbow 
I managed to change the v_shot gun mdl into a crosbow. Now I want to make it shoot arrows. So I made the crosbow.mdl of 7 frames, and one arrow.mdl for the arrow.

Now it comes to qc and I knew this would be a hard one for me. I've been looking to the 3Dinside for one, but I could only find thowing axe to compare. But the zip file link is lost. Is it really much coding to make it go?

http://members.home.nl/gimli/frame3.jpg 
Bows And Arrows 
I'm not gonna do a detailed how to here, be warned, but rest assured it's not too hard. Have a look at the code for firing nails, it's pretty close to firing an arrow. Just copy and rename the nail functions, and change the model, the speed and the damage. Then in the weapon firing code, change the fire function for the shotgun from the current one to the new arrow one. Let me know if anything goes wrong, or if you wanted different behavior from that of a nail. 
Great! 
I was allready looking to older examples of the Phenomenon CD. But with this I can go on for a while.
Glad to have this little help, because c coding for me is almost as hard as writing a full sentence without spelling problems! 
 
[deleted by metlslime] 
MadFox 
Are you trying to "rebirth" hexen weapons ? 
Knew It Won't Be Easy 
I don't think the shotgun has a substantive bullit?

By now my only progress is replacing the s_spike.mdl for an arrow.mdl
Then the supershotgun shoots arrows, while the nailgun still punshes nails.

But that's no true code afterall. 
I Understood That. 
 
Arrows And Stuff 
Ok, the full walkthrough on coding the arrow in.

Find
void() W_FireSuperSpikes =
and duplicate the whole function, renaming the copy of the function to W_FireArrow

In this version of the function, replace the model of the spike with the arrow model and either find a suitable sound replacement or just delete that line. Change the line
newmis.touch = superspike_touch;
to
newmis.touch = arrow_touch;
and

self.currentammo = self.ammo_nails = self.ammo_nails - 2;

to


self.currentammo = self.ammo_shells = self.ammo_shells - 1;


Copy the function void() superspike_touch = and paste it about the W_FireArrow function. Now rename it as arrow_touch. Here you can set the damage you want the arrow to do, replace the two instances that say 18 with whatever damage you see fit : -).

Finally, go down to the function W_Attack. Find the line

else if (self.weapon == IT_SHOTGUN)
{
player_shot1 ();
W_FireShotgun ();
self.attack_finished = time + 0.5;

and change it to


else if (self.weapon == IT_SHOTGUN)
{
player_shot1 ();
W_FireArrow ();
self.attack_finished = time + 0.5;



Note that the weapon is using a single shell each time it fires. If you want to change what kind of ammo it uses you need to poke around in lots of different functions, even more if you want it to use multiple shells in a shot. So let me know what you had in mind ammo-wise and I'll get back to you. 
Kind 
you took the time to give me some attention!

I was already working with a weapons.qc from "Freak" in his Firepower addition.
He had a progs.dat which was working right, but the client.qc and weapons.qc didn't work.

I'll try this code, and let you know how it goes. 
Preach 
Thank you.

I like your training methods-

if(!(self.flags & NONOISE))

should be

if(!(self.spawnflags & NONOISE))

Just like last time I stared at it not working for a long time before I saw the problem. I found it so I must be learning!!

But I am still very grateful for your help and I am still thanking you and you are helping others as well. Well done. 
WARNING: DO NOT TAKE AURALLY 
Oh yeah, all the stuff I write about QC should come with the following disclaimer:
Preach is to busy/lasy to actually compile the code he writes on this board, let alone test if it work. Use at your own risk. 
Nonetheless... 
...you are a great boon to this community.

Thankyou. 
Preach 
I blow my own trumpet now.

I changed your transporting monsters progs.dat to have silent monsters if I want by setting Spawnflag 4 on the monster

void() monster_teleport =
{
if(!self.spawnflags & NONOISE) //blaGGer setup the if-then-else routine
{
self.think1(); //PREACH: set up the monster in place
spawn_tfog(self.origin); // spawn the effect
spawn_tdeath(self.origin, self); // and teleport as required
}
else
{
self.think1();
spawn_tdeath(self.origin, self);
}

};


I will hug a tree with happiness. 
What's On The Tele.. 
(...the goldfish bowl, like usual)

Looks solid, the only thing that I'd check is that spawnflag 4 isn't used for anything else on any monster - it doesn't look like it though. If it is, just change it to some higher power of 2, like 16 or 32.

In other news, I have been experimenting with what you can and can't do with a func_notnull, and the results are suprising to say the least. The teleport sound I mentioned a few posts earlier works, although it'll only play once per entity as it has a remove in the function. But I've found many more functions that work too...I have a little testmap made up, but I'm gonna see if I can't make something useful out of the entities before I let on. 
Exploding Walls 
I looking at a exploding wall mod by Ben Lehman (1996). It works good but the rubble bits flicker in the game until they disappear.

Does any of you know how to stop this? 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.