Inside3D tutorials.

Inside3D
 • Front Page
 • Articles
 • Downloads
 • Forums
 • Hosting
 • Help Wanted
 • Interviews
 • Reviews
 • Staff

 
Allied Sites
 - AI Cafe
 - Bot Epidemic
 - Dark Places
 - Flat Earth
 - FrikBot
 - Ghoulish Art
 - Kilbert3D
 - Quake Info Pool
 - QSG: Quake Standards
 - Rusted Fork
 - Stroggs Gone Mad
 - More...
 
Quake
 - Getting Started
 - QuakeC Specs v1.0
 - QuakeC Tutorials
 - Quake Mod Index
 
Quake II
 - Getting Started
 - dll Sourcecode
 - Coding Tutorials
 
.dll Central
 - Getting Started
 - Learning
 - dll Primer
 - dll in C
 - dll in Delphi
 - Compilers
 
Jedi Knight
 - Getting Started
 - COG Specs
 - Sound Specs
 - Tutorials
 
Level Editing
 - Tutorials/Tips
 
 
Telefragged!!!
Created By: Pob the Impaler (Paul Johnstone)
eMail A.W.Johnstone@btinternet.com
Difficulty Scale Easy/Medium


Yipee the RIPs are back...

Legion (Roscoe Sincero) has buggered off to work on his ElimaReaper patch, so I'll be filling his shoes for a while.
He is still active in a consultancy capacity, so I can still draw on his wealth of knowledge for support.

So, my name is Pob the Impaler (Paul Johnstone), you can send me mail at:
A.W.Johnstone@btinternet.com (for home)
OR
itac025@lauder.ac.uk (for College)
I don't mind which address you use, so when I inevitably make a boo-boo you'll know how to send me
hate-mail :)
My site is at: http://www.btinternet.com/~impaler please help my hit-counter and visit!

Roscoe Sincero's address is legion@keg.zymurgy.org

//------------//
//-Credits--//
//-----------//

Steve Polge - For the Reaper bots
Alan Kivlin - For the clever scoreboard stuff
Lee Smith - For ProQCC
Roscoe Sincero - For starting it all off and for giving me a shot of his ElimaReaper!


|=========================================================|

ALWAYS MAKE A BACKUP OF YOUR CODE BEFORE TRYING ONE OF MY LESSONS. IF THERE IS A MISTAKE IN IT WHICH RUINS YOUR CODE OR BLOWS UP YOUR HOUSE, TOUGH SHIT, RESTORE THE BACKUP AND TELL ME WHERE I FUCKED UP.

This is a "Mini RIP" it adds a couple of teeny weeny things that significantly enhance the patch.

First up.... Doesn't it annoy you that in teamplay, the baddys always have skin 15? Well it pisses me Right Off.
So I've changed it to a random choice of skin, it's dead easy, but it looks cool...
BTW you need a player.mdl with 15 skins to see this working.
Read the original reaper readme.txt to see whatI'm blethering about. :)


Step 1


Open up defs.qc 'cos we are gonna add a new variable.
at the bottom add:

//==begin code==//
float randombotskin;
//==end code==//

save & close defs.qc


Step 2
Open up client.qc
We only want choose the random skin ONCE per level, so we need to use a function that is only called once!
First up, find the function ClientConnect(); search for void () ClientConnect = {
Above this function add this:

//====begin code====//
float () getrandombotskin = {
// Get a random bot skin for the enemy team bots.
local float botskin;
botskin = random();
if (botskin <= 0.066)
	{
	return(0);
        }
if ((botskin > 0.066) && (botskin <= 0.132))
	{
	return(1);
	}
if ((botskin > 0.132) && (botskin <= 0.198))
	{
	return(2);
	}
if (( botskin > 0.198) && (botskin <= 0.264))
	{
	return(3);
	}
if ((botskin > 0.264) && (botskin <= 0.33))
	{
	return(4);
	}
if ((botskin > 0.33) && (botskin <= 0.396))
	{
	return(5);
	}
if ((botskin > 0.396) && (botskin <= 0.462))
	{
	return(6);
	}
if ((botskin > 0.462) && (botskin <= 0.528))
	{
	return(7);
	}
if ((botskin > 0.528) && (botskin <= 0.594))
	{
	return(8);
	}
if ((botskin > 0.594) && (botskin <= 0.66))
	{
	return(9);
	}
if ((botskin > 0.66) && (botskin <= 0.726))
	{
	return(10);
	}
if ((botskin > 0.726) && (botskin <= 0.792))
	{
	return(11);
	}
if ((botskin > 0.792) && (botskin <= 0.858))
	{
	return(12);
	}
if ((botskin > 0.858) && (botskin <= 0.924))
	{
	return(13);
	}
if ((botskin > 0.924) && (botskin <= 1.000))
	{
	return(15);
	}
else
{
return(15);
}
};
//===end code=%3d/index.html


Step 3


Now find ClientConnect() again. search for void () ClientConnect = {

Find the line:
 self.impulse = 204.000;

under this add:
//====begin code===//
randombotskin = getrandombotskin();  // get random team bot skin for this level
//===end code===//

Save & close client.qc


Step 4


Now open botspawn.qc
search for all occurences of the line:
skinChange (self,15.000);

replace all occurences of this with:

//====begin code===//
skinChange (self,randombotskin);
//=== end code====//

Save and close botspawn.qc.

Compile and run!
(Remember to turn on skins mode and teamplay  :)

Good isn't it!!!  :)
Next up we are going to fix a bug Roscoe forgot to fix in his coop code.

You may have noticed that when playing coop, on anything less than skill 3 the bots can't shoot
their own arses, nevermind the monsters! So let's fix it.


Step 1

Open botfight.qc

Find the function botaim() search for vector () botaim = {  

find the lines:
if (!coop)
{
      lead = (self.enemy.origin - self.enemy.oldorigin);
      lead = (((lead * (MOVETYPE_WALK - sk)) * 3.500) * (random () - 0.500));
      tg = (tg + lead);
}

under these lines add:

//====begin code====//
else
{
lead = '0 0 0';
tg = (tg +lead);
}
//===end code===//

save and close botfight.qc
compile and play coop on skill 0, you wuss!  :)
See ya next time kiddies!








The Inside3D content and design is copyrighted by the Inside3D team, and may not be re-produced or copied without proper consent. All rights reserved. Any work credited to any author not part of InsideQC is copyrighted by that author. If you have any feedback, suggestions or flames please send it in to the author. Inside3D is hosted by telefragged and the design was originated by project-9.