Raised This Month: $ Target: $400
 0% 

find ent by origin.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
[ --<-@ ] Black Rose
ANNIHILATED
Join Date: Sep 2005
Location: Stockholm, Sweden.
Old 01-16-2007 , 16:52   find ent by origin.
Reply With Quote #1

This fuction is supposed to find an entity, but it finds the wrong one.
Maby there's a way to continue from 'ent' but i dunno how to stop the loop if nothing was found with classname 'my_classname' in specifyed sphere.
Funny thing is it worked before, and I can't remember me changing any of it.
Code:
stock FindEntAtOrigin(Float:fOrigin[3]) {         new classname[10], Float:fRadius, ent         while ( fRadius < 50.0 ) {                 fRadius += 5.0         ent = engfunc(EngFunc_FindEntityInSphere, g_MaxPlayers, fOrigin, fRadius)                 if ( ent ) {             pev(ent, pev_classname, classname, 9)             if ( equal(classname, "my_classname") )                 return ent;         }     }     return 0; }

Last edited by [ --<-@ ] Black Rose; 01-16-2007 at 16:56.
[ --<-@ ] Black Rose is offline
XxAvalanchexX
Veteran Member
Join Date: Oct 2004
Location: abort73.com
Old 01-16-2007 , 16:57   Re: find ent by origin.
Reply With Quote #2

The first argument for the FindEntity functions is the entity index (minus one) to start searching from. So, if you use 134, it will begin looking at entities 135 and onward. This is how you would process all entities in a sphere:

Code:
ent = g_MaxPlayers; while((ent = engfunc(EngFunc_FindEntityInSphere, ent, fOrigin, fRadius)) != 0) {      // whatever }

It keeps checking from ent and onwards. Since ent keeps getting updated as the last entity that it found, it never catches the same entity twice. It keeps going until the next entity found is returned 0, meaning there are no more.
__________________
No longer around. Thanks your support, everyone! As always:
THIS ONES FOR YOU
3000 PTS
XxAvalanchexX is offline
[ --<-@ ] Black Rose
ANNIHILATED
Join Date: Sep 2005
Location: Stockholm, Sweden.
Old 01-16-2007 , 16:58   Re: find ent by origin.
Reply With Quote #3

Thank you Avalanche.
I thought about something like that but i wasn't sure how to stop it.

EDIT2: It works now.
current function:
Code:
stock FindEntAtOrigin(Float:fOrigin[3]) {         new classname[10], Float:fRadius, ent         while ( fRadius < 50.0 && ! ent ) {                 fRadius += 10.0         ent = g_MaxPlayers                 while ( ent != 0 ) {                         ent = engfunc(EngFunc_FindEntityInSphere, ent, fOrigin, fRadius)                         pev(ent, pev_classname, classname, 9)                         if ( equal(classname, "wpn_spawn") )                 return ent;         }     }     return 0; }

Last edited by [ --<-@ ] Black Rose; 01-17-2007 at 10:30.
[ --<-@ ] Black Rose is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 22:25.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode