|
实体的概念
在游戏里 一切场景分为实体和固体两种
固体在引擎外是没有网络信息(属性)的,
实体是有网络信息(属性)的
HL游戏支持 500 个实体 在游戏中,
HL程序将实体信息按照一定的时间发送至每个客户端
实体是要实时发送至每个客户端 以确保实体的位置,状态,速率 等等属性
断线后有一段时间看不到游戏里面的实体 例如 门,人物 箱子 等等
游戏中的门 可以移动的箱子 人物 手雷 枪 地面上的物件 都称为实体
2 实体的属性
在AMXX里 操作实体需要实体的序列号 实体序列号为整数类型
使用 pev(实体序号,实体的属性,【变量】) 取得实体的信息
使用 set_pev(实体序号,实体的属性,【变量】) 设置实体的信息
fakemeta_const.inc 给出了一些实体的属性
2.1.1 字符串型实体属性 取得或设置实体字符串
pev_string_start = 0, //无效的实体属性 主要用于遍历
pev_classname, 实体类型名称 做地图的人会知道这些 实体的类决定了实体是什么用途
pev_globalname,
pev_model, 实体模型
pev_target, 实体的目标 用于控制
pev_targetname, 实体的目标 用于控制
pev_netname, 实体的网络名称 如玩家游戏名称
pev_message, 实体的激发的文字
pev_noise, 保留备用的 可以自由存放
pev_noise1, 保留备用的 可以自由存放
pev_noise2, 保留备用的 可以自由存放
pev_noise3, 保留备用的 可以自由存放
pev_string_end, //无效的实体属性 主要用于遍历
2.1.2 实体值型实体属性 里面装载另一个实体号
pev_edict_start, //无效的实体属性 主要用于遍历
pev_chain,
pev_dmg_inflictor, //被伤害的人/实体 ,攻击者
pev_enemy, //敌人 用于NPC
pev_aiment, //帽子等装饰 用于连接2个实体
pev_owner, //所有者
pev_groundentity, //脚下的实体
pev_euser1, //保留备用的 可以自由存放
pev_euser2, //保留备用的 可以自由存放
pev_euser3, //保留备用的 可以自由存放
pev_euser4, //保留备用的 可以自由存放
pev_edict_end, //无效的实体属性 主要用于遍历
2.1.3 小数型实体属性 取得或设置实体的详细值
pev_float_start, //无效的实体属性 主要用于遍历
pev_impacttime, //碰撞时间
pev_starttime, //开始时间
pev_idealpitch, //理想的PITCH范围
pev_ideal_yaw, //理想的YAW范围
pev_pitch_speed, //朝向PITCH的速度
pev_yaw_speed, //朝向YAW的速度
pev_ltime, //时间长度
pev_nextthink, //下次心跳时间
pev_gravity, //重力
pev_friction, //摩擦速度 如滑雪
pev_frame, //当前实体播放的动作帧数
pev_animtime, //在什么时候开始播放实体动画
pev_framerate, //动画播放速度比率
pev_scale, //大小 仅用于SPR
pev_renderamt, //渲染 详见 fakemeta_util.inc fm_set_rendering
pev_health, //生命值
pev_frags, //比分
pev_takedamage, //实体是否可被伤害 参看HLSDK.INC
pev_max_health, //最大生命值
pev_teleport_time, //传输时间
pev_armortype, //护甲类型
pev_armorvalue, //护甲值
pev_dmg_take, //伤害值保存
pev_dmg_save, //伤害值保存
pev_dmg, //实体威力值 用于手雷等爆炸物
pev_dmgtime, //实体威力爆发时间 主要用于手雷爆炸物
pev_speed, //速度
pev_air_finished,
pev_pain_finished,
pev_radsuit_finished,
pev_maxspeed, //最大速度
pev_fov, //视野
pev_flFallVelocity, //坠落的速度
pev_fuser1, //保留备用的 可以自由存放
pev_fuser2, //保留备用的 可以自由存放
pev_fuser3, //保留备用的 可以自由存放
pev_fuser4, //保留备用的 可以自由存放
pev_float_end, //无效的实体属性 主要用于遍历
2.1.4 整数型实体属性 取得或设置实体的详细值
pev_int_start, //无效的实体属性 主要用于遍历
pev_fixangle, //朝向与视角朝向同步
pev_modelindex, //模型缓存序号
pev_viewmodel, //V模型
pev_weaponmodel, //P模型
pev_movetype, //移动类型 参看HLSDK.INC
pev_solid, //固态类型 参看HLSDK.INC
pev_skin, //模型的皮肤样式 如果模型有
pev_body, //子模型 如果模型有
pev_effects, //渲染亮度
pev_light_level, //亮度等级
pev_sequence, //模型的动作序列
pev_gaitsequence, //下半身动作序列 仅用于玩家
pev_rendermode, //详见 fakemeta_util.inc fm_set_rendering
pev_renderfx, //详见 fakemeta_util.inc fm_set_rendering
pev_weapons, //武器表(位)
pev_deadflag, //死亡标记 参看HLSDK.INC
pev_button, //正在被按下的按键
pev_impulse, //手电 喷图 喷射 等
pev_spawnflags, //出生标记 参看HLSDK.INC
pev_flags, //状态标记 参看HLSDK.INC
pev_colormap,
pev_team, //队伍
pev_waterlevel, //浸泡在水中的程度
pev_watertype, //浸泡在哪种液体中
pev_playerclass, //玩家角色
pev_weaponanim, //武器动作
pev_pushmsec, //推时间
pev_bInDuck, //蹲下
pev_flTimeStepSound, //脚步声
pev_flSwimTime, //游泳时间
pev_flDuckTime, //蹲下时间
pev_iStepLeft, //步伐
pev_gamestate, //游戏状态
pev_oldbuttons, //之前按下的按键
pev_groupinfo, //组类型
pev_iuser1, //保留备用的 可以自由存放
pev_iuser2, //保留备用的 可以自由存放
pev_iuser3, //保留备用的 可以自由存放
pev_iuser4, //保留备用的 可以自由存放
pev_int_end, //无效的实体属性 主要用于遍历
2.1.5 向量实体属性 取得或设置实体的向量
pev_vecarray_start, //无效的实体属性 主要用于遍历
pev_origin, //实体坐标
pev_oldorigin, //实体之前的坐标
pev_velocity, //实体速率
pev_basevelocity, //实体基础速率 用于传送带等
pev_clbasevelocity,
pev_movedir, //可能是移动目标
pev_angles, //实体朝向
pev_avelocity, //实体受速率影响时朝向变化 仅对实体有效
pev_v_angle, //实体视角朝向
pev_endpos, //开始点
pev_startpos, //结束点
pev_absmin, //实体范围 开始
pev_absmax, //实体范围 结束
pev_mins, //实体大小 开始
pev_maxs, //实体大小 结束
pev_size, //实体大小
pev_rendercolor, //详见 fakemeta_util.inc fm_set_rendering
pev_view_ofs, //瞄准视角的速率
pev_vuser1, //保留备用的 可以自由存放
pev_vuser2, //保留备用的 可以自由存放
pev_vuser3, //保留备用的 可以自由存放
pev_vuser4, //保留备用的 可以自由存放
pev_punchangle, //晃动朝向 仅对玩家有效
pev_vecarray_end, //无效的实体属性 主要用于遍历
2.2 在游戏中创建一个实体
使用 fakemeta_util.inc
函数过程 fm_create_entity(字符串类型:实体类)
函数返回结果 0-500 的实体序号
0则创建失败 原因超过500个实体 或其他
使用例子
new Ent = fm_create_entity("info_target") 创建一个实体
if(!pev_valid(Ent)) return 0 如果这个实体无效 那么不往下执行
set_pev(Ent,pev_classname,“gift”) 设定实体的名称
fm_entity_set_model(Ent,“models/w.mdl”) 设定实体的模型
fm_entity_set_origin(Ent,fOrigin) 设定实体的坐标
创建一个导弹
create_ent_by_player(id,model[])
{
new Ent = fm_create_entity("info_target")
if(!pev_valid(Ent)) return 0
set_pev(Ent,pev_classname,"gift")
fm_entity_set_model(Ent,model)
//取得玩家实体坐标属性
new Float:fOrigin[3];pev(id,pev_origin,fOrigin)
//取得玩家向前的力速率
new Float:vel[3];velocity_by_aim(id,70,vel)
//根据坐标和速率 算出距离玩家前面的一个点
xs_vec_add(fOrigin,vel,fOrigin) //位置在玩家前
fm_entity_set_origin(Ent,fOrigin)
//取得玩家向前的速度
velocity_by_aim(id,400,vel);
//设置实体速度
set_pev(Ent,pev_velocity,vel)
}
|
上一篇:AMXX信息下一篇:Emit_Sound发出声音相关说明
|