设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4261|回复: 18

[AMXX]一些自己知道的pev函数用法   [复制链接]

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-6-26 18:58:25 |显示全部楼层
本帖最后由 水蛭 于 2011-6-28 06:19 编辑

因为放假了闲得慌,没事做就找茬写了这些东西,有错误请指出。
********pev_classname
常见用法:
        1:
        new classname[33]//[33]前面的自己认识就好,些什么随便.
        pev(ent, pev_classname, classname, 32)//参数3要和上面写的一致,参数4要比参数3的数据组少1
        if (equali(classname, "类型名"))
        {
                *****
        }
        2:
        set_pev(ent, pev_classname, "类型名")
功能介绍:
        1:
        得到实体的类型名称,上面的"类型名"有很多种例如"weapon_c4"、"info_target".
        2:
        设置实体的类型名称,上面的"类型名"可以自己写,也可以写[认识/已有]的实体名称.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_model
常见用法:
        1:
        new model[33]//[33]前面的自己认识就好,些什么随便.
        pev(ent, pev_model, model, 32)
        if (equali(model, "模型路径"))
        {
                *****
        }
        2:
        set_pev(ent, pev_model, "模型路径")
功能介绍:
        1:
        得到实体的模型,上面的"模型路径"例如"models/player.mdl"、"models/player/gsg9/gsg9.mdl".
        2:
        设置实体的模型,上面的"模型路径"自己写,例如"models/abcdplant.mdl".
注:        玩家也是实体,类型名称叫做player.用这个设置模型我没成功过,模型没有显示出来.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_target
********pev_targetname两个一起介绍
见过用法:
        new target[32]
        pev(ent1, pev_targetname, target, 31)
        if (equal(target, "目标名称"))
        {
                set_pev(ent2, pev_target, ent)
        }
功能介绍:
        得到实体1的目标名称.(像地图制作里面一样.里面有个(目标).)
        如果实体1的目标的名称为"目标名称"
        设置实体2的目标为实体1
注:        这东西我没用过,没那么无聊去看地图某实体的名称.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_netname
见过用法:
        set_pev(id, pev_netname, "admin")
注:        这不是设置玩家TAB记分牌上面的名称.没用过.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_enemy
常见用法:
        1:
        new id = pev(ent, pev_enemy)//id=实体的敌人
        if (is_user_alive(id) && pev_valid(id))……//如果id是活的,有效的实体……
        2:
        set_pev(ent, pev_enemy, id)//设置实体的敌人是id
可以用法:
public god_touch(toucher, touched)
{
        // 如果不是有效的toucher撞击者和touched被撞击着实体,忽略
        // pev_valid有效的/ || 或者/ return FMREX_IGNORED 忽略
        if (!pev_valid(toucher) || !pev_valid(touched)) return FMRES_IGNORED
        // 得到toucher撞击者的类型名称
        new class[33]
        pev(toucher, pev_classname, class, 32)
        // 如果类型名称为god_ent
        if (equali(class, "god_ent")) //并没有这个实体,除非自己把某实体类型名设为god_ent
        {
                // 新建id=所有人(0);id小于33;id叠加
                for (new id=0; id<33; id++)
                {
                        如果id不是活人(!=不是)或者不是有效实体,忽略
                        if (!is_user_alive(id) || !pev_valid(id)) return FMRES_IGNORED
                        // 如果被touched撞击者不等于id
                        if (touched != id)
                        {
                                // 设置撞击者的敌人是id
                                set_pev(toucher, pev_enemy, id)
                                // 执行下一个函数
                                god_attack(toucher)
                        }
                }
        }
}
public god_attack(ent) // 这里的ent等于上面的toucher
{
        new id = pev(ent, pev_enemy) // 得到ent实体的敌人
        user_kill(id) // 杀死id
}
介绍:当god上帝实体撞击某人时,这个人不是上帝的敌人,其他人全部去死.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_aiment
常见用法:
        1:
        new ent2 = pev(ent1, pev_aiment)
        2:
        set_pev(ent1, pev_aiment, ent2)
功能介绍:
        1:
        得到实体1瞄准的实体2.
        2:
        设置实体1瞄准实体2.
注:        虽然实体2移动时会瞄准不到,不过还是会跟上来的,跑慢了酒杯瞄准到了.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_owner
常见用法:
        1:
        new owner = pev(ent, pev_owner)
        2:
        set_pev(ent, pev_owner, id)
功能介绍:
        1:
        得到ent实体的拥有者owner.
        2:
        设置ent的拥有者为id
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_nextthink
常见用法:
        set_pev(ent, pev_nextthink, get_gametime())
功能介绍:
        设置实体下一次思考的时间,get_gametime()是当前时间,如果改成get_gametime()+0.1
        就变成每0.1秒思考一次.影响实体思考函数FM_Think的执行速度.
注:        FM_Think函数里面也要写上思考时间,要不然实体出生后只执行一次思考就不继续了.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_gravity
常见用法:
        new gravity = pev(id, pev_gravity) // 得到实体id的重力gravity
        if (gravity == 800) // 如果gravity等于800
        {
                set_pev(id, pev_gravity, 100) // 设置id的重力为100
        }
功能介绍:
        设置实体的重力,玩家默认重力是800.
注:        if 的括号里面,如果是小于等于则写<=,如果是等于则写==,如果是大于等于则写>=
        小于和大于就不需要=了.
        if 外面则用 一个等于号例如 new num = gravity
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_friction
介绍:设置/得到实体的摩擦力,没用过.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_frame
用法:
        new frame
        pev(ent, pev_frame, frame) // 不能frame=pev(ent, pev_frame)
        set_pev(ent, pev_frame, frame+1)//设置帧+1等于当前帧变成下一帧
介绍:
        设置实体当前的帧,可以是模型帧和SPR帧.set_pev(ent, pev_frame, 1/2/3/4/5)都可以,知道帧有多少就行.
用法x:
        // 设置0.1秒后执行1次play_frame,ent执行,  标记为循环(b)
        // 就是ent实体每0.1秒执行1次play_frame函数
        set_task(0.1, "play_frame", ent, _, _, "b")
public play_frame(ent)
{
        new frame
        pev(ent, pev_frame, frame)
        set_pev(ent, pev_frame, frame+1)
}
介绍x:        实体ent每0.1秒换成下一帧.(最后一帧会停下).
注:        set_task一般用法: set_task(%.f, "****", id) //id实体在%.f秒后执行****
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_framerate
常见用法:
        set_pev(id, pev_framerate, 1.1)
介绍:        设置实体帧的播放速度,以上是1.1倍速度。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_scale
常见用法:
        new scale
        pev(ent, pev_scale, scale) // 得到尺寸
        set_pev(ent, pev_scale. scale+0.1) // 增大尺寸
介绍:
        设置spr实体的尺寸,可以用set_task的b模式进行连续循环增大
例:        // 每0.2秒增加0.1的尺寸,spr图标才会增大吧,对模型似乎无效.
        set_task(0.2, "add_scale", ent, _, _, "b")
public add_scale(ent)
{
        new scale
        pev(ent, pev_scale, scale)
        set_pev(ent, pev_scale. scale+0.1)
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_renderamt
用法:
        set_pev(id, pev_renderamt, (0~255))
介绍:
        pev_rendermode设为kRenderTransAlpha时
        这个函数可以设置实体的透明度!0为完全透明,255为完全现身.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_health
常见用法:
        new Float:hp = pev(id, pev_health) // 得到.f的生命值
        set_pev(id, pev_health, hp+50.0) // 设置生命值+50.0,小数点不要漏掉……
介绍:        得到生命值和设置生命值,和get_user_health不一样,pev_health是小数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_takedamage
常见用法:
        set_pev(ent, pev_takedamage, 1.0)
介绍:
        让实体可以受伤,半条命的上帝模式(控制台输入god)就能让自己不受伤,就是这个.
        takedamage设为0就不会受伤,2.0是CS玩家的受伤方式,1.0大概就是可打碎实体(玻璃/木块)这种.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_max_health
用法:
        1:
public fw_PlayerPreThink(id)
{
        new Float:maxhp = pev(id, pev_maxhealth) // 得到玩家的最大生命值
        new Float:hp = pev(id, pev_health)         // 得到玩家当前的生命值
        if (hp > maxhp)                                 // 如果生命值大于最大生命值
        {
                set_pev(id, pev_health, maxhp)         // 设置生命值为最大生命值
        }
}
        2:
        set_pev(id, pev_maxhealth, 1000.0)
说明:
        用法1我不知道对不对,没去测试过,估计只要设置了最大生命就不会大于这个生命值了,
        不必自己再把生命设置为最大生命值吧.
注:        pev得到生命值要用Float:吧.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_armortype
常见用法:

        set_pev(id, pev_armortype, type)
        type =↓
        CS_ARMOR_NONE = 0, // 没有护甲        --------\
        CS_ARMOR_KEVLAR = 1, // 只有护甲---------写文字和数字都可以
        CS_ARMOR_VESTHELM = 2 // 有护甲有头盔---/
介绍:
        设置实体的护甲类型
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_armorvalue
用法:
        set_pev(id, pev_armorvalue, 1243875)
介绍:
        设置实体的护甲值数.
注:
        小键盘CS快捷键0可用原型:
        set_pev(id, pev_armorvalue, 100)
        set_pev(id, pev_armortype, 2)
        cs_set_user_money(id, cs_get_user_money(id)-1000, 1) // 参数3,屏幕右下角的钱是否变色
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_speed
用法:
        1://得到当前速度,如果玩家速度小于等于200.0,怎样.
        new Float:speed
        pev(id, pev_speed, speed)
        if (speed <= 200.0){}
        2://如果怎样,设置玩家速度为200.0
        if (******)
                set_pev(id, pev_speed, 200.0)
介绍:
        设置玩家当前移动速度,应该不会大于pev_maxspeed(默认最大速度250.0,鸟狙最大速度260.0)
注:        .0不要忘了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_maxspeed
见过用法:
public fw_PlyaerPreThink(id)
{
        // 在玩家思考里面,如果玩家还活着,设置最大的移动速度
        if (is_user_alive(id)) fm_set_user_maxspeed(id)
}
stock fm_set_user_maxspeed(id)
{
        new Float:flMaxSpeed;
        switch (get_user_weapon(id)) // 得到玩家当前的武器
        {
                // 如果武器为sg550,awp,g3sg1, flMaxSpeed这个值设为210.0
                case CSW_SG550, CSW_AWP, CSW_G3SG1 : flMaxSpeed = 210.0
                case CSW_M249 : flMaxSpeed = 220.0
                case CSW_AK47 : flMaxSpeed = 221.0
                case CSW_M3, CSW_M4A1 : flMaxSpeed = 230.0
                case CSW_SG552 : flMaxSpeed = 235.0
                case CSW_XM1014, CSW_AUG, CSW_GALIL, CSW_FAMAS : flMaxSpeed = 240.0
                case CSW_P90 : flMaxSpeed = 245.0
                case CSW_SCOUT, CSW_KNIFE : flMaxSpeed = 260.0
                // 如果不是上面的这些武器,默认指为250.0
                default : flMaxSpeed = 250.0
        }
        set_pev(id, pev_maxspeed, flMaxSpeed) // 上面的设置完后在这里设置最大速度.
}
注:
        switch (值)里面的if (值==值2){}要改成case 值2:{}
        ZP僵尸插件的设置僵尸速度什么的就是单独一个set_pev(id, pev_maxspeed, 值)
        所以不管拿什么武器都一样速度.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_fov
常见用法:
        set_pev(id, pev_fov, 100.0)
介绍:        设置实体视觉范围,默认是90度,僵尸插件的第一个僵尸有些插件设为180了吧.
注:
        数值过大会导致手臂模型看起来非常长,而且感觉跑得很快,CSOL为何感觉暴走很快就是追不上?
        就是视角范围变大了.错觉而已.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_modelindex
说明:
        读取并设置实体模型的hitboxes,如果把玩家模型设为小鸡,
        你就只能瞄准小鸡而不能瞄准原头部的高度来爆头了.
        我个激动啊……我找这个功能找了很久呢
        不过还不会用.我是查了下资料才知道他的功能的.
        ZP的手法太高级我看不懂,谁有兴趣研究下.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_viewmodel2
用法:
        set_pev(id, pev_viewmodel2, "models/v_***.mdl")
说明:
        设置玩家的V模型(手臂模型).
注:
        必须要用一定的条件限制,否则设置后,不管什么武器都是这个V模型了.
        一般是在CurWeapon切换武器函数使用的.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_weaponmodel2
用法:
        set_pev(id, pev_weaponmodel2, "models/p_***.mdl")
说明:
        设置玩家的p模型(第三人称武器模型).
注:        和上面的V模型一样需要条件限制.

public plugin_init()
{        // 初始化切换武器的事件
        register_event("CurWeapon", "Event_cur_weapon", "be", "1=1")
}
public Event_cur_weapon(id)
{
        if (get_user_weapon(id) == CSW_KNIFE) // 如果玩家切换的武器是刀子
        {
                set_pev(id, pev_viewmodel2, any:"models/v_knife_new.mdl")
                set_pev(id, pev_weaponmodel2, any:"models/p_knife_new.mdl")
        }
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_movetype
用法:
        set_pev(ent, pev_movetype, type)
介绍:
        设置实体的移动类型
        type的数值在hlsdk_const.inc里面
        type =↓
        MOVETYPE_NONE                = 0 // 不移动
        MOVETYPE_WALK                = 3 // 在地上移动(只能用在玩家实体上)
        MOVETYPE_STEP                = 4 // 有重力,特殊边缘处理(用在怪物实体)(HL?)
        MOVETYPE_FLY                = 5 // 没有重力但能和实体碰撞(如果有推力,直线飞行)
        MOVETYPE_TOSS                = 6 // 有重力,能和实体碰撞(如果有推力,抛物线飞行)
        MOVETYPE_PUSH                = 7 // No clip to world, push and crush
        MOVETYPE_NOCLIP                = 8 // 没有重力没有碰撞,只移动(会穿墙,没有任何撞击效果)
        MOVETYPE_FLYMISSILE        = 9 // 给怪物实体额外的尺寸……不理解
        MOVETYPE_BOUNCE                = 10// 和MOVETYPE_TOSS差不多,但会弹起来.TOSS是停在地上
        MOVETYPE_BOUNCEMISSILE        = 11// 如光线反射,没有重力的飞行,弹开.
        MOVETYPE_FOLLOW                = 12// 跟随瞄准的实体(pev_aiment需要设置)
        MOVETYPE_PUSHSTEP        = 13// 需要物理效果/世界的碰撞的BSP地图模型
注:        ↑写文字和数字都可以,数字节省字数啊
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
已有 2 人评分声望 金币 被赞许 收起 理由
1019914068 + 1 神马都是浮云
我是Jacy + 20 + 20 + 1

总评分: 声望 + 20  金币 + 20  被赞许 + 2   查看全部评分

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-6-26 19:01:08 |显示全部楼层
本帖最后由 水蛭 于 2011-6-26 19:11 编辑

********pev_solid
用法:
        1:
        new type = pev(ent, pev_solid)
        if (type == ****)
        2:
        set_pev(ent, pev_solid, type)
介绍:
        设置实体的固体类型
        type的值在hlsdk_const.inc里面
        type =↓
        SOLID_NOT        = 0 // 对其他实体没有任何作用,例如不碰撞
        SOLID_TRIGGER        = 1 // 与实体的边缘发生碰撞效果,但不会挡住实体
        SOLID_BBOX        = 2 // 与实体边缘发生碰撞效果,挡住实体
        SOLID_SLIDEBOX        = 3 // 与实体边缘发生碰撞效果,但这个实体必须不在地上(被撞的那个实体)
        SOLID_BSP        = 4 // BSP clip,与实体的边缘发生碰撞效果,挡住实体
注:        BSP clip似乎是可以穿过一些固体,例如仓库门口对面的[中间有好多洞]的门(桥下方).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_skin
用法:
        set_pev(id, pev_skin, 1)
介绍:
        设置实体的模型的皮肤,0是第一皮肤,1是第二皮肤.
注:        其实就是更换这个模型可以替换的贴图,找不到的话会直接用默认贴图.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_body
用法:        同上(0是默认,1是第二个身体)
介绍:        设置实体模型的另一个身体,例如C4和拆弹器就是模型的另一部分身体.
注:
        其实就是把模型里面的可用身体组调出来,没有的话就无效.
        例如我把3个僵尸模型合成1个模型,可以用这个参数调用另外2个没显示的模型
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_sequence
用法:        set_pev(id, pev_sequence, 74)
介绍:        设置实体模型播放的动作,CS人物模型有110个动作,
注:
        这只是播放上半身的动作,例如开枪、装子弹、拿什么枪的动作.
        有关函数:pev_gaitsequence, pev_weaponanim
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_gaitsequence
用法:        set_pev(id, pev_gaitsequence, 1)
介绍:        设置实体模型下半身的动作,1就是站着不动时的动作,2是蹲下,3是行走4是跑,5是蹲行,6是跳,7没有,0没有.
注:
        上面写的动作只针对有正确动作的模型,你把动作序列弄乱了别怪我写错- -
        有关函数:pev_sequence, pev_weaponanim
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_rendermode
用法:
        set_pev(id, pev_rendermode, mode)
介绍:
        设置实体的渲染模式.相关参数在amxconst.inc
        mode =↓
        kRenderNormal                = 0        // 普通,无光
        kRenderTransColor        = 1        // 纯颜色(仅固体实体)
        kRenderTransTexture        = 2        // 纹理,微光(整个纹理都发光)
        kRenderGlow                = 3        // 发光,(仅spr图标)
        kRenderTransAlpha        = 4        // 固体,无光
        kRenderTransAdd                = 5        // 附加,让spr不会因为距离远近而变大变小
注:        2和4测试过,可以用pev_renderamt来让实体透明
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_renderfx
用法:
        set_pev(id, pev_renderfx, mode)
介绍:
        设置实体的渲染效果,相关参数在amxconst.inc
        mode =↓
        kRenderFxNone                // 普通 (0)
        kRenderFxPulseSlow        // 脉冲 缓慢 (1)
        kRenderFxPulseFast        // 脉冲 快速 (2)
        kRenderFxPulseSlowWide        // 脉冲 缓慢大范围 (3)
        kRenderFxPulseFastWide        // 脉冲 快速大范围 (4)
        kRenderFxFadeSlow        // 褪色 缓慢 (5)//像闪光弹那样吧
        kRenderFxFadeFast        // 褪色 快速 (6)//像半条命踩传送球时的绿屏那样吧
        kRenderFxSolidSlow        // ??
        kRenderFxSolidFast        // ??
        kRenderFxStrobeSlow        // 滤波 缓慢 (9)
        kRenderFxStrobeFast        // 滤波 快速 (10)
        kRenderFxStrobeFaster        // 滤波 极快 (11)
        kRenderFxFlickerSlow        // 闪烁 缓慢 (12)
        kRenderFxFlicke***st        // 闪烁 快速 (13)
        kRenderFxNoDissipation        // 恒定的发光模式 (14)
        kRenderFxDistort        // 扭曲 (仅模型) (15)//知道半条命的绿色怪物巨人garg吗?打死后扭曲爆炸的
        kRenderFxHologram        // 扭曲+渐隐 (16)
        kRenderFxDeadPlayer        // 死亡玩家?(17)
        kRenderFxExplode        // 扩到非常大 (18)
        kRenderFxGlowShell        // 发光外壳(仅模型)(19)
        kRenderFxClampMinScale        // ??
注:        还是写数字比较省字数
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_weapons
用法:
        new wpn = pev(id, pev_weapon)
        if (wpn == CSW_KNIFE)
介绍:        以上用法是得到玩家当前的武器是否为刀子
注:        set_pev似乎很麻烦,不理他了.pev(id, pev_weapon)=get_user_weapon(id)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_deadflag
用法:
        set_pev(id, pev_deadflag, flag)
介绍:
        设置实体的死亡标志,相关参数在hlsdk_const.inc
        flag =↓
        DEAD_NO                = 0 // 活的
        DEAD_DYING        = 1 // 播放死亡动作或继续等待窗口掉到地上//不理解- -
        DEAD_DEAD        = 2 // 死掉了,已经躺在地上
        DEAD_RESPAWNABLE= 3 // 能复活……?
        DEAD_DISCARDBODY= 4 // 丢弃的身体?可能是去当观察者了丢掉尸体在地上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_button
用法:
        1:
        new buttons = pev(id, pev_button)
        if (buttons & IN_USE)
        2:
        set_pev(id, pev_button, (pev(id,pev_button)&IN_ATTACK))
介绍:
        得到/设置玩家按着的按钮,相关参数在hlsdk_const.inc
        IN_ATTACK        // 攻击(鼠标左键)
        IN_JUMP                // 跳跃(空格)
        IN_DUCK                // 蹲下(Ctrl)
        IN_FORWARD        // 前进(W)
        IN_BACK                // 退后(S)
        IN_USE                // 使用(E)
        IN_CANCEL        // 取消(不知道)
        IN_LEFT                // 估计是左转
        IN_RIGHT        // 估计是右转
        IN_MOVELEFT        // 左移(A)
        IN_MOVERIGHT        // 右移(D)
        IN_ATTACK2        // 攻击2(鼠标右键)
        IN_RUN                // 奔跑(好像是说玩家在移动状态吧)
        IN_RELOAD        // 上子弹(R)
        IN_ALT1                // 不知道
        IN_SCORE        // 似乎是打开记分牌
注:
        if 括号里面的&&代表并且,||代表或者, &是其他函数的表达
        相关函数: pev_oldbuttons
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_flags
常见用法:
        new flag = pev(entity, pev_flags)
        if (flag & FL_ONGROUND) // 实体是否在地上
介绍:
        一般是得到实体的标志,相关参数在hlsdk_const.inc

        FL_FLY                        // Changes the SV_Movestep() behavior to not need to be on ground
        FL_SWIM                        // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water)
        FL_CONVEYOR
        FL_CLIENT
        FL_INWATER                // 与水实体碰撞的状态
        FL_MONSTER
        FL_GODMODE
        FL_NOTARGET
        FL_SKIPLOCALHOST        // Don't send entity to local host, it's predicting this entity itself
        FL_ONGROUND                // 与地面【墙壁似乎也可以】碰撞的状态
        FL_PARTIALGROUND        // 与局部地面碰撞的状态,并非所有的角落都有效
        FL_WATERJUMP                // 在水面跳起的状态(跳得很矮的那个)
        FL_FROZEN                // Player is frozen for 3rd person camera
        FL_FAKECLIENT                // JAC: fake client, simulated server side; don't send network messages to them
        FL_DUCKING                // 完全蹲下的状态
        FL_FLOAT                // Apply floating force to this entity when in water
        FL_GRAPHED                // Worldgraph has this ent listed as something that blocks a connection
        FL_IMMUNE_WATER               
        FL_IMMUNE_SLIME               
        FL_IMMUNE_LAVA               
        FL_PROXY                // This is a spectator proxy
        FL_ALWAYSTHINK                // Brush model flag -- call think every frame regardless of nextthink - ltime (for constantly changing velocity/path)
        FL_BASEVELOCITY                // Base velocity has been applied this frame (used to convert base velocity into momentum)
        FL_MONSTERCLIP                // Only collide in with monsters who have FL_MONSTERCLIP set
        FL_ONTRAIN                // Player is _controlling_ a train, so movement commands should be ignored on client during prediction.
        FL_WORLDBRUSH                // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something)
        FL_SPECTATOR                // This client is a spectator, don't run touch functions, etc.
        FL_CUSTOMENTITY                // This is a custom entity
        FL_KILLME                // 死亡状态,一般是设置为死亡状态
        FL_DORMANT                // Entity is dormant, no updates to client
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_team
用法:
        new team = pev(id, pev_team)
        if (team == 0/1)
        set_pev(id, pev_team, 0/1)
介绍:
        设置实体的队伍,没找到相关介绍,玩家的队伍可以用cs_get_user_team(id)
        if (cs_get_user_team(id) == CS_TEAM_T) // 1匪徒
        if (cs_get_user_team(id) == CS_TEAM_CT)// 2警察
        if (cs_get_user_team(id) == CS_TEAM_SPECTATOR)// 3观察者
        if (cs_get_user_team(id) == CS_TEAM_UNASSIGNED)// 0未分配
注:
        new team = pev(id, pev_team)只是为了省字数- -
        if的括号里面可以直接pev(id, pev_team)==???
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_weaponanim
用法:
        set_pev(id, pev_weaponanim, 5)
介绍:
        设置玩家V模型播放的动作,播放完会停在最后一帧,所以需要自己想办法恢复到idle帧.
        例如:
        // 得到玩家当前的武器,    得到玩家当前按的按钮
        new wpn = get_user_weapon(id), button = pev(id, pev_button)
        // 如果武器是刀子并且按着攻击按键
        if (wpn==CSW_KNIFE && button & IN_ATTACK)
        {
                // 播放V模型的第五个动作
                set_pev(id, pev_weaponanim, 4)
                // 1.1秒后执行fixanim(id)
                set_task(1.1, "fixanim" id)
        }
public fixanim(id) // 恢复动作0(播放第一个动作)
{
        set_pev(id, pev_weaponanim, 0)
}
注:        有关函数:pev_sequence, pev_gaitsequence
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_oldbuttons
常见用法:
        1://得到玩家是否放开使用键E
        new oldbutton = pev(id, pev_oldbuttons)
        if (oldbutton & IN_USE)
        2://设置玩家放开使用键E
        set_pev(id, pev_oldbuttons, (pev(id,pev_oldbuttons) & IN_USE))
功能介绍:
        和pev_button差不多,不同在于oldbuttons是放开的按钮,button是按着的按钮
        丢手雷原型:
        // 如果不是按着攻击键, 并且已经放开攻击键,
        if (!(button & IN_ATTACK) && oldbutton & IN_ATTACK)
注:
        如果按着不放也可以算是放开好像.所以上面的if才要!(button & IN_ATTACK)
        if 括号里面的!意思等于不是
        相关函数: pev_button
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_origin
常见用法:
        new Float:[防表情文字]origin[3]
        pev(id, pev_origin, origin) // 得到实体id的坐标
        origin[2] += 16.0            // Z坐标+16.0
        set_pev(ent, pev_origin, origin)//设置实体ent的坐标
说明:
        origin[3]可以分为origin[0](地图x坐标),origin[一](y坐标),origin[2](z坐标)
        XY坐标并非指玩家的前后左右而是地图.
        origin[2]+=16.0可以写成origin[2] = origin[2]+16.0
        设置坐标后ent的坐标比id高出16.0
        玩家的尺寸是64.0像素,16是不够的,会和玩家卡住.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_oldorigin
用法:
        new Float:[防表情文字]ogn[3], Float: oldogn[3]
        pev(id, pev_origin, ogn)        //得到玩家当前坐标
        set_pev(id, pev_oldorigin, ogn)        //定义玩家旧坐标为现在的坐标
        //怎样怎样后……
        new Float:[防表情文字]oldogn[3]
        pev(id, pev_oldorigin, oldogn)        //得到玩家旧坐标
        set_pev(id, pev_origin, oldogn)        //把玩家现在的位置设置到旧坐标
说明:
        oldorigin只是一个坐标值,用法可以自己去挖掘.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_velocity
常见用法:
        1: (实体上移)
        new Float:vec[3]
        pev(ent, pev_velocity, vec)        //得到实体移动方向
        vec[2] += 40.0                        //移动高度再多加40.0
        set_pev(ent, pev_velocity, vec)        //给实体一个推力
        2: (超级跳制作法)
        new Float:vec[3]
        velocity_by_aim(id, 600, vec)        //得到玩家瞄准方向,设一个600速的推力
        vec[2] = 300.0                        //高度为300.0
        set_pev(ent, pev_velocity, vec)        //让玩家移动
介绍:
        pev_velocity是得到推力方向和设置推力方向的.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_angles
常见用法:
        new Float:angles[3]
        pev(id, pev_angles, angles)//得到玩家的角度
        set_pev(ent, pev_angles, angles)//设置实体的角度
介绍:        设置和得到角度.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_mins
********pev_maxs
********pev_size
常见用法:
        1:
        new Float:min[3], Float:max[3]
        pev(id, pev_mins, min)                //得到玩家实体尺寸的最小值
        pev(id, pev_maxs, max)                //得到最大值
        set_pev(ent, pev_size, min, max)//设置实体的尺寸
        2:
        new Float:min[3], Float:max[3]
        pev(ent, pev_size, min, max)        //得到玩家实体的尺寸
        set_pev(id, pev_mins, min)        //设置实体尺寸的最小值
        set_pev(id, pev_maxs, max)        //设置实体尺寸的最大值
        3://标准CS玩家实体大小↓
        set_pev(ent, pev_size, {-16.0,-16.0,-36.0}, {16.0,16.0,36.0})
说明:        pev_size只是设置一个透明的格子的大小,就像你踩着玩家头上,头是园的走起来是平的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_rendercolor
常见用法:
        new Float:color[3]
        color[0] = 0.0~255.0
        color[一] = 0.0~255.0// 一改成1
        color[2] = 0.0~255.0
        set_pev(id, pev_rendercolor, color)
说明:
        设置实体的渲染颜色,例如一些黑白spr能变成绿色,红色,粉红等.
        color[0]是红色程度,[ 1 ]是绿色程度,[2]是蓝色程度.
        黄色= color[0]=150.0 color[一]=150.0 color[2]=0.0
整合- -:
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
        static Float:color[3]
        color[0] = float(r)
        color[一] = float(g) //一改成1
        color[2] = float(b)
       
        set_pev(entity, pev_renderfx, any:fx)
        set_pev(entity, pev_rendercolor, any:color)
        set_pev(entity, pev_rendermode, any:render)
        set_pev(entity, pev_renderamt, any:float(amount))
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_view_ofs
常见用法:
        set_pev(id, pev_view_ofs, {0.0,0.0,20.0})
说明:
        设置实体眼睛位置,↑是设置高度为20.0默认似乎是20.0或者15.0,
        设置高一点可以修复{cs人物眼睛长在胸口}的bug
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
********pev_punchangle
见过用法:
public event_damage(id) // 伤害事件
{
        // 得到id的攻击者,id变成受害者
        new attacker = get_user_attacker(id)
        // 如果攻击者是僵尸          并且  受害者不是僵尸
        if (zp_get_user_zombie(attacker) && !zp_get_user_zombie(id))
        {
                new Float:random[3]
                for(new i = 0; i < 3; i++)
                {
                        // 把random[3]设为随机70.0~100.0
                        random = random_float(70.0, 100.0)
                }
                // 让受害者屏幕颤抖,颤抖值为random[3]
                Punch_View(id, random)
        }
}
stock Punch_View(id, Float:ViewAngle[3])
{
        // 主要就是这里,颤动值↑ViewAngle[3]
        set_pev(id, pev_punchangle, ViewAngle)
}
说明:
        见过魔尊的丧尸攻击吗?人类的屏幕被甩到哪里去了都不知道……
        [屏幕中V模型还瞄准原来的位置,准星和视角却转到另一个地方去]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

使用道具 举报

Modchina声望-崇敬

妹纸什么的都是浮云

Rank: 10Rank: 10Rank: 10

帖子
705
精华
1
声望
4405 点
金币
256 Mold
被赞许
31 次
注册时间
2010-9-8

懒人勋章 可爱小猫

发表于 2011-6-26 19:04:54 |显示全部楼层
本帖最后由 mmbnjh 于 2011-6-26 19:05 编辑

好东西,占完板凳再慢慢看

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
3735
精华
1
声望
5900 点
金币
2148 Mold
被赞许
47 次
注册时间
2009-12-20

优秀版主奖 Modchina灌水王 星界财团 可爱小猫

发表于 2011-6-26 19:05:03 |显示全部楼层
非常好,那啥,爆破点AB怎么区分》。。
至于你信不信,我反正信了

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-6-26 19:14:58 |显示全部楼层
programe 发表于 2011-6-26 19:05
非常好,那啥,爆破点AB怎么区分》。。

似乎没这功能.本来就没有什么A和B的。
但是能找到爆破点实体,实体名称叫做func_bomb_target和info_bomb_target
一个是固体实体一个是点实体,
new class[33]
pev(ent, pev_classname, class, 32)
if (equali(class, "func_bomb_target") || equali(class, "info_bomb_target"))
{
}

话说楼上2位回复也太快了吧

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
4597
精华
3
声望
9452 点
金币
26 Mold
被赞许
115 次
注册时间
2009-10-18

MTT职员 最佳贡献奖 热心会员奖 可爱小猫 黑暗使者 Modchina元老 Modchina灌水王 星界财团 图界之神

发表于 2011-6-26 19:18:42 |显示全部楼层
看不懂啊看不懂
话说我回复也太慢了吧

使用道具 举报

Modchina声望-崇敬

妹纸什么的都是浮云

Rank: 10Rank: 10Rank: 10

帖子
705
精华
1
声望
4405 点
金币
256 Mold
被赞许
31 次
注册时间
2010-9-8

懒人勋章 可爱小猫

发表于 2011-6-26 20:02:07 |显示全部楼层
水蛭 发表于 2011-6-26 19:14
似乎没这功能.本来就没有什么A和B的。
但是能找到爆破点实体,实体名称叫做func_bomb_target和info_bomb_t ...

我可是在论坛首页每3分钟刷新一次,发现有新主题发布,我就进来抢沙发

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2011-6-26 20:04:38 |显示全部楼层
mmbnjh 发表于 2011-6-26 20:02
我可是在论坛首页每3分钟刷新一次,发现有新主题发布,我就进来抢沙发

这么说来你比我还闲着没事做……

使用道具 举报

Modchina声望-崇敬

妹纸什么的都是浮云

Rank: 10Rank: 10Rank: 10

帖子
705
精华
1
声望
4405 点
金币
256 Mold
被赞许
31 次
注册时间
2010-9-8

懒人勋章 可爱小猫

发表于 2011-6-26 20:17:11 |显示全部楼层
本帖最后由 mmbnjh 于 2011-6-26 20:18 编辑
水蛭 发表于 2011-6-26 20:04
这么说来你比我还闲着没事做……


没办法啦!MS3D  PS会基础,就是AMXX不懂,什么变量,函数啊!都不懂,中考的数学试卷关于函数什么的全没写。

论坛上面的高手,都没有发有点使用的东西,就1434哥发的那个MS3D教程和艾森的PS教程有用之外,关于其他的教程都没有详细讲解



使用道具 举报

Moderator

他们叫我疯子呢。。。

Rank: 8Rank: 8

帖子
3076
精华
3
声望
5278 点
金币
676 Mold
被赞许
67 次
注册时间
2009-10-22

MTT职员 黑暗使者 Modchina灌水王 懒人勋章 可爱小猫

发表于 2011-6-26 20:43:00 |显示全部楼层
我很想知道info_bomb_target是个什么玩意,能吃吗

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部