AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Code Snippets/Tutorials (https://forums.alliedmods.net/forumdisplay.php?f=83)
-   -   [INFO] Fakemeta & Ham detailed function descriptions and examples (https://forums.alliedmods.net/showthread.php?t=93229)

ot_207 05-26-2009 08:03

[INFO] Fakemeta & Ham detailed function descriptions and examples
 
Fakemeta Func Wiki

I think that we all need to contribute to this topic so let's get it started.

FakeMeta Functions
HamSandWich Functions
Contributors
  • Arkshine
  • Starsailor
  • joropito
  • Nomexous

ot_207 05-26-2009 08:18

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Fakemeta function:
PHP Code:

EngFunc_PointContents 

Description:
This function checks an origin and gives us information of its whearabouts.

The constants that this function returns are these:
Code:

#define        CONTENTS_EMPTY                  -1
#define        CONTENTS_SOLID                  -2
#define        CONTENTS_WATER                  -3
#define        CONTENTS_SLIME                  -4
#define        CONTENTS_LAVA                  -5
#define        CONTENTS_SKY                    -6
#define        CONTENTS_ORIGIN                -7          // Removed at csg time
#define        CONTENTS_CLIP                  -8          // Changed to contents_solid
#define        CONTENTS_CURRENT_0              -9
#define        CONTENTS_CURRENT_90            -10
#define        CONTENTS_CURRENT_180            -11
#define        CONTENTS_CURRENT_270            -12
#define        CONTENTS_CURRENT_UP            -13
#define        CONTENTS_CURRENT_DOWN          -14
#define CONTENTS_TRANSLUCENT            -15
#define        CONTENTS_LADDER                -16
#define        CONTENT_FLYFIELD                -17
#define        CONTENT_GRAVITY_FLYFIELD        -18
#define        CONTENT_FOG                    -19

Usage:
PHP Code:

static Float:origin[3]
static 
result
result 
engfunc(EngFunc_PointContentsorigin)
// if for example result is CONTENTS_SKY
// then the origin that we see is in the sky we can for example use this to see where a player is aming if he is aiming at sky this will be the result! 


Arkshine 05-26-2009 08:26

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
( Nice initiative but I think it should be update on the wiki too because more readable. Also for here creating a list for fakemeta and ham would be interesting. )

joaquimandrade 05-26-2009 08:35

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Nice ot.

ot_207 05-26-2009 08:39

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Quote:

Originally Posted by arkshine (Post 835014)
( Nice initiative but I think it should be update on the wiki too because more readable. Also for here creating a list for fakemeta and ham would be interesting. )

I think that we should update here first and after that do a wiki. :)
And thanks!

Quote:

Originally Posted by joaquimandrade (Post 835016)
Nice ot.

Thanks! If you have functions or constants that are important please post :).

ot_207 05-26-2009 09:08

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Fakemeta function:
PHP Code:

EngFunc_TraceLine 

Description:
This function traces between 2 origins and gives us information about it.

The constants that we can use in flags:
PHP Code:

#define DONT_IGNORE_MONSTERS            0
#define IGNORE_MONSTERS                 1
#define IGNORE_MISSILE                  2
#define IGNORE_GLASS                    0x100 

These constants can be used together.
Ex: IGNORE_MISSILE | IGNORE_MONSTERS | IGNORE_GLASS - This makes the traceline ignore missiles, monsters (players) and glass.

Here is a drawing that will show you how it works!
PHP Code:

engfunc(EngFunc_TraceLinestartendIGNORE_GLASS0tr

[IMG]http://img529.**************/img529/1863/traceline1.jpg[/IMG]

PHP Code:

engfunc(EngFunc_TraceLinestartendDONT_IGNORE_MONSTERS0tr

[IMG]http://img529.**************/img529/1415/traceline2.jpg[/IMG]

PHP Code:

engfunc(EngFunc_TraceLinestartendIGNORE_GLASS0tr

[IMG]http://img529.**************/img529/5815/traceline3.jpg[/IMG]

PHP Code:

engfunc(EngFunc_TraceLinestartendIGNORE_GLASS0tr

[IMG]http://img529.**************/img529/326/traceline4.jpg[/IMG]

Functions that come with the TraceLine pack:
PHP Code:

// Description: This creates a trace handle! 
// It is important to use because we don't want our plugins to mess with eachothers info!
new ptr create_tr2() 

PHP Code:

// Description: This creates a trace handle! 
// It is important to use because we don't want our plugins to mess with each others info!
free_tr2(ptr

PHP Code:

// Description: Gets/Sets information from/in the trace_handle
[g|s]et_tr2(trace_handleCONSTANTnumber_if_needed!) 

CONSTANT Expresion has this posible values:
Code:

enum TraceResult
{
        TR_AllSolid,                // int
        TR_StartSolid,                // int
        TR_InOpen,                // int
        TR_InWater,                // int
        TR_flFraction,                // float
        TR_vecEndPos,                // float array[3]
        TR_flPlaneDist,                // float
        TR_vecPlaneNormal,        // float array[3]
        TR_pHit,                // int (edict_t*)
        TR_iHitgroup,                // int
};

The float and array values need the third argument! Example:

PHP Code:

    new allsolid get_tr2(traceTR_AllSolid)
    new 
startsolid get_tr2(traceTR_StartSolid)
    
// TR_StartSolid is a boolean that says whether you were "inside" something 
    // (usually the world) when the trace started (point A)
    // TR_AllSolid tells you if you ever got out of the "inside" or not.
    
    
new inopen get_tr2(traceTR_InOpen)
    
// TR_InOpen means that the start point is in Open
    // That means in the world and not in an ent or something
    
    
new hit get_tr2(traceTR_pHit)
    
// What was hit by the traceline. It will either be a player index,
    // entity index, 0 (part of map), or -1 (didn't hit anything; 
    // doesn't happen with player tracelines).
    
    
new hitgroup get_tr2(traceTR_iHitgroup)
    
// If the traceline hit another player, returns will be HIT_HEAD,
    // HIT_CHEST, HIT_LEFTLEG... etc. If the traceline hit part of the
    // map, this returns HIT_GENERIC.
    
    
new Float:fraction
    get_tr2
(traceTR_flFractionfraction)
    
// Returns a number between 0.0 and 1.0, indicating how far the
    // traceline traveled start to end before it hit something. Depending
    // on what conditions were passed to this traceline forward function,
    // it could either be a wall or another entity.
    
    
new Float:end_origin[3]
    
get_tr2(traceTR_vecEndPosend_origin)
    
// The official end of the traceline. Not necesarily the same as the
    // second argument passed to this traceline forward function.
    
    
new Float:normal[3]
    
get_tr2(traceTR_vecPlaneNormalnormal)
    
// Returns a 1 unit long vector normal to the spot that it hit. Note
    // that "normal" has a special connotation here. It doesn't mean "regular." 

Example Stock:
PHP Code:

stock is_wall_between_points(Float:start[3], Float:end[3], ignore_ent)
{
    
// Create the trace handle! It is best to create it!
    
new ptr create_tr2()
    
    
// The main traceline function!
    // This function ignores GLASS, MISSILE and MONSTERS!
    // Here is an example of how you should combine all the flags!
    
engfunc(EngFunc_TraceLinestartendIGNORE_GLASS IGNORE_MONSTERS IGNORE_MISSILEignore_entptr)
    
    
// We are interested in the fraction parameter
    
new fraction
    get_tr2
(ptrTR_flFractionfraction)
    
    
// Free the trace handle (don't forget to do this!)
    
free_tr2(ptr)
    
    
// If = 1.0 then it didn't hit anything!
    
return (fraction != 1.0)


Extra info:
Valve - arguments of the trace handle
TraceLine Tutorial (Nomexous)

ot_207 05-26-2009 09:37

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Fakemeta function:
PHP Code:

EngFunc_FindEntityInSphere 

Description:
Find entities within a radius. The function returnes the next entity id after the start entity!

This is a drawing to show how this function works:
[IMG]http://img265.**************/img265/2395/screenshot053.png[/IMG]


If we use
PHP Code:

engfunc(EngFunc_FindEntityInSphere, -1originradius

The function in the situation above will return 1!
PHP Code:

engfunc(EngFunc_FindEntityInSphere20originradius

The function in the situation above will return 30!
PHP Code:

engfunc(EngFunc_FindEntityInSphere100originradius

The function in the situation above will return 0, meaning that it didn't find an entity with an id grater than 100!


Usage:
PHP Code:

engfunc(EngFunc_FindEntityInSphereent_to_startoriginradius


Dr.G 05-26-2009 09:53

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
nice ot. if anyone think a sphere is another word for circle its not -> http://en.wikipedia.org/wiki/File:Sphere_wireframe.svg

ot_207 05-26-2009 09:57

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
Quote:

Originally Posted by Dr.G (Post 835050)
nice ot. if anyone think a sphere is another word for circle its not -> http://en.wikipedia.org/wiki/File:Sphere_wireframe.svg

Thanks! That was just as an example. If someone would do a 3d design it would be great :mrgreen:.

Dr.G 05-26-2009 10:46

Re: [INFO] Fakemeta & Ham detailed function descriptions and examples
 
1 Attachment(s)
this is some screenshots from autocad


All times are GMT -4. The time now is 11:34.

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