View Single Post
Re: Work In progress (WIP) #6
Old
  (#51)
stefanhendriks
RealBot Author
 
stefanhendriks's Avatar
 
Status: Offline
Posts: 3,088
Join Date: Nov 2003
Location: Netherlands
Default Re: Work In progress (WIP) #6 - 18-01-2004

About camping, here i have a snippet of code (can't reply more, gotta go now)

Code:
// Find a node which has almost no danger!
int cNodeMachine::node_camp(Vector vOrigin, int iTeam)
{  
 // Use Meredians to search for nodes
 int iX, iY;
 VectorToMeredian(vOrigin, &iX, &iY);
 float fDanger=2.0;
 float fDistance=9999;
 int iVisibility=9999;
 int iBestNode=-1;
 
 // Theory:
 // Find a node, close, and less danger...
 // and with less visibility
 
 if (iX > -1 && iY > -1)
 {
 // Search in this meredian
 for (int i=0; i < NODES_MEREDIANS; i++)
  if (Meredians[iX][iY].iNodes[i] > -1)
  {		   
			int iNode = Meredians[iX][iY].iNodes[i];
			if (Nodes[iNode].iNodeBits & BIT_WATER)
				continue; // next node, do not camp under water!
			if (InfoNodes[iNode].fDanger[iTeam] < fDanger)				
				if (func_distance(vOrigin, Nodes[iNode].origin) < fDistance)
				{
					// Calculate visibility
					int iVis=-1;
					
					for (int iVisNr=0; iVisNr < iNode; iVisNr++)
							if (GetVisibilityFromTo(iNode,iVisNr))
								iVis++;
					if (iVis < 0)
						iVis = 99999;
					if (iVis < iVisibility)
					{
						iBestNode = iNode;
						fDistance = func_distance(vOrigin, Nodes[iNode].origin);
						fDanger = InfoNodes[iNode].fDanger[iTeam];
						iVisibility = iVis;
					}
				}
  }
 }
 return iBestNode;
}


Author of RealBot, "Arrakis" and "Dune 2 - The Maker" | co-Founder of Bots-United | Fundynamic | Blog | E-Mail me
  
Reply With Quote