📄 g_local_add.pas
字号:
flood_locktill: single; // locked from talking
flood_when: array[0..9] of single; // when messages were said
flood_whenhead: integer; // head pointer for when said
respawn_time: single; // can respawn when time > this
{$ifdef CTF}
//ZOID
ctf_grapple: pointer; // entity of grapple
ctf_grapplestate: integer; // true if pulling
ctf_grapplereleasetime: Single; // time of grapple release
ctf_regentime: Single; // regen tech
ctf_techsndtime: Single;
ctf_lasttechmsg: Single;
{$endif}
chase_target: edict_p; // player we are chasing
update_chase: qboolean; // need to update chase info?
{$ifdef CTF}
menutime: single; // time to update menu
menudirty: qboolean;
//ZOID
{$endif}
end;
Proc_Pedictt = procedure(x: edict_p); cdecl;
Proc_Pedictt_single = procedure(self: edict_p; dist: single); cdecl;
Boolfunc_Pedictt = function(self: edict_p): qboolean; cdecl;
Proc_2Pedictt_single = procedure(self, other: edict_p; eta: single); cdecl;
Proc_2Pedictt = procedure(self, other: edict_p); cdecl;
Proc_2edictt_cplanet_csurfacet = Procedure(self, other: edict_p;
plane: cplane_p; surf: csurface_p); cdecl;
Proc_3edictt = Procedure (self, other, activator: edict_p); cdecl;
Proc_2edictt_single_int = Procedure(self, other: edict_p;
kick: single; damage: integer); cdecl;
Proc_3edictt_int_vec3t = Procedure(self, inflictor, attacker: edict_p;
damage: integer; const point: vec3_t); cdecl;
moveinfo_p = ^moveinfo_t;
moveinfo_t = record
// fixed data
start_origin,
start_angles,
end_origin,
end_angles: vec3_t;
sound_start,
sound_middle,
sound_end: integer;
accel,
speed,
decel,
distance: Single;
wait: Single;
// state data
state: integer;
dir: vec3_t;
current_speed,
move_speed,
next_speed,
remaining_distance,
decel_distance: Single;
endfunc: Proc_Pedictt;
end;
mframe_p = ^mframe_t;
mframe_t = record
aifunc: Proc_Pedictt_single;
dist: Single;
thinkfunc: Proc_Pedictt;
end;
mframe_at = array[0..MaxInt div SizeOf(mframe_t) - 1] of mframe_t;
mframe_a = ^mframe_at;
mmove_p = ^mmove_t;
mmove_t = record
firstframe,
lastframe: integer;
frame: mframe_p;
endfunc: Proc_Pedictt;
end;
monsterinfo_p = ^monsterinfo_t;
monsterinfo_t = record
currentmove: mmove_p;
aiflags,
nextframe: integer;
scale: Single;
stand,
idle,
search,
walk,
run: Proc_Pedictt;
dodge: Proc_2Pedictt_single;
attack: Proc_Pedictt;
melee: Proc_Pedictt;
sight: Proc_2Pedictt;
checkattack: Boolfunc_Pedictt;
pausetime,
attack_finished: Single; // CAK - FIXED!!! WAS IN WRONG ORDER!!!!! NAUGHTY!!!
saved_goal: vec3_t; // CAK - THIS WHOLE STRUCT WAS WRONG!!!!!!
search_time,
trail_time: Single;
last_sighting: vec3_t;
attack_state,
lefty: integer;
idle_time: Single;
linkcount: integer;
power_armor_type,
power_armor_power: integer;
end;
edict_t = record
s: entity_state_t;
client: gclient_p; // NULL if not a player
// the server expects the first part
// of gclient_s to be a player_state_t
// but the rest of it is opaque
inuse: qboolean;
linkcount: integer;
// FIXME: move these fields to a server private sv_entity_t
area: link_t; // linked to a division node or leaf
num_clusters: integer; // if -1, use headnode instead
clusternums: array[0..MAX_ENT_CLUSTERS - 1] of integer;
headnode: integer; // unused if num_clusters != -1
areanum, areanum2: integer;
//================================
svflags :integer;
mins, maxs: vec3_t;
absmin, absmax, size: vec3_t;
solid: solid_t;
clipmask: integer;
owner: edict_p;
// DO NOT MODIFY ANYTHING ABOVE THIS, THE SERVER
// EXPECTS THE FIELDS IN THAT ORDER!
//================================
movetype: movetype_t; // CAK - was Integer
flags: integer;
model: PChar;
freetime: single; // sv.time when the object was freed
//
// only used locally in game, not by server
//
_message,
classname: Pchar;
spawnflags: integer;
timestamp: Single;
angle: Single; // set in qe3, -1 = up, -2 = down
target,
targetname,
killtarget,
team,
pathtarget,
deathtarget,
combattarget: PChar;
target_ent: edict_p;
speed, accel, decel: Single;
movedir: vec3_t;
pos1, pos2: vec3_t;
velocity: vec3_t;
avelocity: vec3_t;
mass: integer;
air_finished,
gravity: Single; // per entity gravity multiplier (1.0 is normal)
// use for lowgrav artifact, flares
goalentity: edict_p;
movetarget: edict_p;
yaw_speed,
ideal_yaw: Single;
nextthink: single;
prethink: Proc_Pedictt;
think: Proc_Pedictt;
blocked: Proc_2Pedictt; //move to moveinfo?
touch: Proc_2edictt_cplanet_csurfacet;
use: Proc_3edictt;
pain: Proc_2edictt_single_int;
die: Proc_3edictt_int_vec3t;
touch_debounce_time, // are all these legit? do we need more/less of them?
pain_debounce_time,
damage_debounce_time,
fly_sound_debounce_time, //move to clientinfo
last_move_time: single;
health,
max_health,
gib_health,
deadflag: integer;
show_hostile: qboolean;
powerarmor_time: Single;
map: PChar; // target_changelevel
viewheight: Integer; // height above origin where eyesight is determined
takedamage: damage_t; // CAK - was Integer
dmg,
radius_dmg: integer;
dmg_radius: Single; // CAK - THIS WAS WRONG!!!!!
sounds, //make this a spawntemp var
count: integer;
chain,
enemy,
oldenemy,
activator,
groundentity: edict_p;
groundentity_linkcount: integer;
teamchain,
teammaster: edict_p;
mynoise, // can go in client only
mynoise2: edict_p;
noise_index,
noise_index2: integer;
volume,
attenuation: Single;
// timing variables
wait,
delay, // before firing targets
random: Single;
teleport_time: single;
watertype,
waterlevel: integer;
move_origin: vec3_t;
move_angles: vec3_t;
// move this to clientinfo?
light_level: integer;
style: integer; // also used as areaportal number
item: gitem_p; // for bonus items
// common data blocks
moveinfo: moveinfo_t;
monsterinfo: monsterinfo_t;
end;
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -