you are mainly doing it right, and struct rules for lite is same as C language.

1. make sure you are saving it as .c file

2. remove semicolons from defines.
add semicolons to prooper places(marked red)

#define MODE_STAND 0
#define MODE_WALK 1

typedef struct
{
var health;
var shield;
var count;
var state;
var pathnode;
var lin_speed;
var rot_speed;
var anim_speed;
var vision_range;
var weapon_type;
var weapon;
var weapon_range;
var ammo;
ENTITY* model;
} entity3d;

function func(entity3d* ent); dont forget prototypes
function main()
{
entity3d enemy;
enemy.model = ent_create ("mymodel.mdl", vector(0,0, 25), NULL);
func(enemy);
}

function func(entity3d* ent)
{
ent.state = MODE_WALK;//dont forget semicolons

if (ent.state == MODE_WALK) printf("yaaaay i am walking.")
}



----

You should see the "yaaay i am walking" popup when you urn it


3333333333