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
 
I've got all my textures exported into id1/textures/ as jpegs

How do you load them though? Are you using the latest ( october 1st ) build? 
 
I tried several 1.5.0 builds and none of them seem to be able to show/load Quake textures.

I tried Tigger his method, what Bazzu suggested, but the editor crashes. Still working that out though. I would prefer not to use Tigger his method because it seems a bit uh...what's the word...unneccesary if you can simply have a editor doing all that for you. Instead of downloading and setting up lots of stuff.

Ofcourse I appreciate the suggestion and if it's the way to go, I'll use it. It's just that I prefer a editor specifically designed to work with Quake. 
Attacks 
The monster isn't attacking because none of the ai functions you call in your frame functions actually check for an attack. The normal quake monsters regularly call ai_run, which is the main ai thinking hub. ai_run should be the default action which you only stop using if you don't want the monster to get distracted during its animation - like if it's in pain or attacking or dead.

ai_run calls the function CheckAnyAttack, which determines if a missile attack can hit. If you find CheckAnyAttack in ai.qc, you can see there are lots of if statements that check if the monster is, for example, a shambler, and do the special shambler checkattack if it is. After those there is a generic checking function CheckAttack, which should suffice for your monster.

CheckAttack checks if you're in melee range, and if you are and you have a th_melee it calls that. If not, it checks for a missile attack based on the range to the target. The probability of attack is higher at certain ranges. If so and you have a th_missile, it calls that.

So the flow goes
ai_run -> CheckAnyAttack -> CheckAttack ->.th_missile

To fix the monster, simply add the following lines

void () vorebabe_run1 = [1, vorebabe_run2] {ai_run(1);};
void () vorebabe_run2 = [2, vorebabe_run3] {ai_run(4);};
void () vorebabe_run3 = [3, vorebabe_run4] {ai_run(3);};
void () vorebabe_run4 = [4, vorebabe_run5] {ai_run(5);};
void () vorebabe_run5 = [5, vorebabe_run6] {ai_run(6);};
void () vorebabe_run6 = [6, vorebabe_run7] {ai_run(4);};
void () vorebabe_run7 = [7, vorebabe_run8] {ai_run(4);};
void () vorebabe_run8 = [8, vorebabe_run9] {ai_run(3);};
void () vorebabe_run9 = [9, vorebabe_run10] {ai_run(5);};
void () vorebabe_run10 = [10, vorebabe_run1] {ai_run(6);};

You'll notice the similarity to the vorebaby_walk lines, but that we call ai_run not ai_walk, which is only designed for walking to path_corners. We are reusuing frames 1 through 10, which is allowed : - )

The final part of the fix is to change the line
self.th_run = vorebabe_walk1; to
self.th_run = vorebabe_run1;. Once he wakes up, his behaviour will change to vorebaby_run1, which will check for and call missile attacks.

One final thing I noticed is that the frame numbers you are calling in the code don't quite agree with the model. The frame numbers for the walk sequence in the model are 0,1,2...9, not 1,2,3...10 - the first frame in the model is frame number 0. I've not fixed this in the run code I posted, as frame 10 happens to look much like frame 0, so the animation loops. Perhaps it would be best to use the frame macros $walk1, $walk2 etc in the code rather than the numbers directly, as it's easier to number them correctly like that.

You'll need to fix the frame macro definitions first, take out the dollar signs in the names in the header(but NOT the main code where you add them back in). The first one should read
$frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10 with only the $frame retaining the dollar sign, and do the same for the rest of the header. But when you use it in the frame function you put the dollar sign back in, eg:

void () vorebabe_run1 = [$walk1, vorebabe_run2] {ai_run(1);};

Hope that's clear. 
Kell: 
How do you load them though? Are you using the latest ( october 1st ) build?

I load them by opening another map that uses them (sad but true.)

And yes, i am using the october 1st build... 
Thanks A Lot! 
preach, although I have read most of the qc files now, I still can't see the logic relations between them, but I'm learning.

I saw the nummers of frames once start with 0 and then with 1. I couldn't get the death frame right, it always jumped back to the stand frame. So I added a death frame and then it didn't occure.

I experimented with pasting parts of the monster attacks into it, but kept errors (of course). Now I can tune it better in. 
Host Error 
After I made the changes I can't start Quake.

CALL0 : 1455 (?)
ai.qc : ai_run
vorebabe.qc : vorebabe_run1
NO FUNCTION

I think I have made no definition for the ai_run, but I don't know how.
http://members.home.nl/gimli/vorebabe.qc 
And I Run... 
The problem is now too much running. When a monster calls ai_run but doesn't have a target, as happens when this monster spawns, it decides to try and walk if it has a movetarget, or stand otherwise. The problem is that at the moment you've given it the same standing animation as the run animation, so it calls ai_run again, trapping it in a loop.

The fix is to put back the walk frames AS WELL. Don't replace the run animations, but add these functions too:

void () vorebabe_stand1 = [$walk1, vorebabe_stand1] {ai_stand();};

void () vorebabe_walk1 = [$walk1, vorebabe_walk2] {ai_walk(1);};
void () vorebabe_walk2 = [$walk2, vorebabe_walk3] {ai_walk(4);};
void () vorebabe_walk3 = [$walk3, vorebabe_walk4] {ai_walk(3);};
void () vorebabe_walk4 = [$walk4, vorebabe_walk5] {ai_walk(5);};
void () vorebabe_walk5 = [$walk5, vorebabe_walk6] {ai_walk(6);};
void () vorebabe_walk6 = [$walk6, vorebabe_walk7] {ai_walk(4);};
void () vorebabe_walk7 = [$walk7, vorebabe_walk8] {ai_walk(4);};
void () vorebabe_walk8 = [$walk8, vorebabe_walk9] {ai_walk(3);};
void () vorebabe_walk9 = [$walk9, vorebabe_walk10] {ai_walk(5);};
void () vorebabe_walk10 = [$walk10, vorebabe_walk1] {ai_walk(6);};


Then set the lines in monster_vorebabe to look like:

self.th_stand = vorebabe_stand1;
self.th_walk = vorebabe_walk1;
self.th_run = vorebabe_run1;

Then compile and it'll work.

One more thing, you have the glowing effect on for a few frames, which works fine, except it's possible for the monster to die or go into pain inbetween the light going on and the attack turning it off. This means the light doesn't turn off again, which probably isn't what you want. Add self.effects = 0; to the top of vorebabe_die and to the bottom of vorebabe_pain - so only turn the effect off if the vorebabe actually goes into pain, but do it before you think about gibbing it. 
Pointless Feature Idea 
a "light" field on funcs that lights their faces according to its value? 
Metlslime 
here is the july version Shaderman linked on Map-Center, it has q1 wad support:

http://zerowing.idsoftware.com/files/radiant/nightly/1.5/GtkRadiant-1.5.0-2006-07-22.msi 
 
you can load jpg/tga textures by loading a folder
textures -> directory list then "load" 
AguirRe 
Thanks a lot, it works fine (so far :))
makes mapping in radiant much easier 
Good 
 
Yeah!!! 
Wauw Preach, that's what I searched!
Although you're magic scriptions aren't really clear to me, they seem to plot their aim.

I've seen so many errors now in proqcc I finally can't believe it works. Now I can add two monsters, and change their behaviour.

I have been looking to the shallrath.qc
I wanted making it throw eggs on the player, that explode these vorebabes.
So I first changed the missiles into grenades, and changed the grenade.mdl into an egg.mdl
When these eggs explode, it would spawn two or three vorebabes.

The first thing went right, the shallrath throws eggs, but the attack amount is much too high. I'm looking for the attack time, but have'nt found it yet.

Another thing is to respawn the vorebabes.
I thought to use the multigrenade code, as it has something in common. They first stick at the wall and then explode. But it is more the subroutine of making something respawn after a grenade explosion I meant.

But I think it needs a lot of coding, when a shalrath respawns two vorebabes, it needs another attack, otherwise there'll be soon to much monsters in play.

Hey.., thanks a lot again. 
Kell/Speeds: 
here is the july version Shaderman linked on Map-Center, it has q1 wad support:

Thanks, I'll check it out.

you can load jpg/tga textures by loading a folder
textures -> directory list then "load"


Ah, but q1 map files don't have directory paths in the map file, so you have to put the textures in id1/textures/ rather than id1/textures/blah/ and id1//textures/ doesn't show up in the directory list. 
Water Flow Creation 
I have a small question: I would like to create a flow, in order to force the player to go in a certain direction while crawling.... I tested trigger_push, but unfortunately having a wind sound in the water is not realistic...
So, is there any method to perform a water flow without any sound ? 
Invisible, Silent Func_trains 
maybe? 
Water Current 
we'll try to add something like that to Quoth pak1 
JPL 
The extras pack has a nice waterflow.
You should cheque it out.

http://members.home.nl/gimli/extras_r4.zip 
Kell: 
thanks again! wads loading in radiant! OMG! 
Metlslime / MadFox 
Thanks a lot for your help... 
Resetting A Counter... 
I can't seem to wrap my brain around it, but can you set up a scenario where you have to keep more than one button pressed, in order to keep a door open, using a counter? I.e. failure to do so in a timely manner causes you to have to go back and forth until all the buttons are pressed.

I assume having the correct number of buttons reported to player via the counter could be problematic:

Only 1 more to go... >> Only 2 more to go... >> Only 1 more to go... 
You Could Do It With Logic Gates That Close After A Certain Time 
But not with printing anything worthwhile to the player. 
What Czg Said 
See this post here about logic gates if you're not familiar already.

http://www.celephais.net/board/view_thread.php?id=37116&start=22 
You Could Do It With Logic Gates That Close After A Certain Time 
But not with printing anything worthwhile to the player.

Func is being a stupid whore and not responding to my requests so this probably gets doubleposted. 
You Could Do It With Logic Gates That Close After A Certain Time 
What the hell it's already posted why are you such a dick today, func? 
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.