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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1392|回复: 12

[已解决] [插件]如何创建一个播放SPR的实体?[已解决++] [复制链接]

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-6-5 17:09:27 |显示全部楼层
本帖最后由 水蛭 于 2011-6-6 10:44 编辑

以下是我的创建方法:
  1. public make_flame(id)
  2. {
  3.         // 得到玩家坐标、角度
  4.         new Float:vec[3], Float:angle[3], Float:origin[3]
  5.         pev(id, pev_origin, origin) //坐标
  6.         pev(id, pev_angles, angle) //角度

  7.         // 创建一个实体,实体索引为ent
  8.         new ent = create_entity("info_target")

  9.         set_pev(ent, pev_solid, 1) //设置实体固体属性:可以碰撞,但不会挡住其他实体
  10.         set_pev(ent, pev_owner, id) //设置实体的物主:id
  11.         set_pev(ent, pev_origin, origin) //设置实体的坐标为玩家的坐标
  12.         set_pev(ent, pev_angles, angle) //设置实体的角度为玩家的角度
  13.         entity_set_model(ent, sprite_fire) //设置实体的模型为sprite_fire具体不多说.【spr】
  14.         set_pev(ent, pev_movetype, 5) //设置实体的移动类型:没有重力,但会与东西碰撞
  15.         set_pev(ent, pev_classname, "flamegun_fire") //设置实体的类型名称:flamegun_fire
  16.         set_pev(ent, pev_size, {-0.2, -0.2, -0.2}, {0.2, 0.2, 0.2}) //设置实体的尺寸:0.4像素²
  17.         set_pev(ent, pev_renderfx, 19) //设置实体的渲染效果:
  18.         set_pev(ent, pev_rendermode, 5) //设置实体的渲染模式:
  19.         set_pev(ent, pev_renderamt, 200.0) //设置实体的透明度
  20.         set_pev(ent, pev_frame, 1.0) //设置实体当前播放的帧
  21.         set_pev(ent, pev_framerate, 1.1) //设置实体播放帧的速度的倍数
  22.         set_pev(ent, pev_scale, 0.1) //设置实体SPR的大小倍数
  23.         set_pev(ent, pev_animtime, 1.1) //设置实体……动画时间……翻译不来
  24.         set_pev(ent, pev_spawnflags, SF_SPRITE_STARTON) //设置实体出生标志为SPR……


  25.         velocity_by_aim(id, 350, vec) //得到玩家瞄准的位置转换为移动方向和给一个350的推力……大概
  26.         set_pev(ent, pev_velocity, any:vec) //让实体移动
  27. }
复制代码
如上↑↑↑↑↑↑↑↑↑!我只有一个问题,为什么他的spr只播放第一帧,就是不播放第二帧捏……下一帧也不播放了。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-6-5 23:24:28 |显示全部楼层
本帖最后由 p5248891 于 2011-6-5 23:27 编辑

比较主要的代码断 只用fakemeta
  1.         new Float:origin[3]
  2.         pev(id,pev_origin,origin)
  3.         new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "env_sprite" ) )
  4.         engfunc( EngFunc_SetModel, ent, "sprites/explode1.spr" );
  5.         set_pev(ent, pev_origin, origin)
  6.         set_pev(ent, pev_framerate, 10.0)
  7.         set_pev(ent,pev_renderamt,255.0)
  8.         set_pev(ent, pev_renderfx, kRenderFxNone) // 渲染效果 普通
  9.         set_pev(ent, pev_rendermode, kRenderTransAdd) // 渲染模式 附加
  10.         set_pev(ent, pev_scale, 1.0)
  11.         dllfunc(DLLFunc_Spawn,ent) // 这句可以播放动画
复制代码
已有 1 人评分被赞许 收起 理由
水蛭 + 1 很给力!

总评分: 被赞许 + 1   查看全部评分

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-6-6 07:10:06 |显示全部楼层
本帖最后由 水蛭 于 2011-6-6 07:31 编辑
p5248891 发表于 2011-6-5 23:24
比较主要的代码断 只用fakemeta


谢谢——很好很强大。
是不是要env_sprites才行.是不是要dllspawn这个实体才算是真正出现了?
刚测试出如果不是↑实体的话就不能播放下一帧,是的话就不能移动……哎。二者不可得兼可恶。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-6-6 10:41:53 |显示全部楼层
我的只能让mdl移动,怎么才能让spr移动?
  1.         new Float:origin[3],Float:velocity[3]
  2.         pev(id,pev_origin,origin)
  3.         new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) )
  4.         engfunc( EngFunc_SetModel, ent, "sprites/explode1.spr" );
  5.         //engfunc( EngFunc_SetModel, ent, "models/grenade.mdl" );
  6.         set_pev(ent, pev_origin, origin)
  7.         set_pev(ent, pev_framerate, 10.0)
  8.         set_pev(ent,pev_renderamt,255.0)
  9.         set_pev(ent, pev_renderfx, kRenderFxNone)
  10.         set_pev(ent, pev_rendermode, kRenderTransAdd)
  11.         set_pev(ent, pev_scale, 1.0)
  12.        
  13.         set_pev(ent,pev_movetype,MOVETYPE_FLY)
  14.         velocity_by_aim(id,350,velocity)
  15.         set_pev(ent,pev_velocity,velocity)
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-6-6 10:43:42 |显示全部楼层
p5248891 发表于 2011-6-6 10:41
我的只能让mdl移动,怎么才能让spr移动?

也可以移动啊,我把dllspawn和实体名称都换掉后就能移动了,我给他
set-task然后0.1秒换一次帧……真麻烦。

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-6-6 10:49:09 |显示全部楼层
我的实体也换成"info_target"
看看我代码差了什么?

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-6-6 10:57:49 |显示全部楼层
插件发布了,于是看你源码

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-6-6 11:11:25 |显示全部楼层
p5248891 发表于 2011-6-6 10:57
插件发布了,于是看你源码

你能打开那个帖子吗?我打不开了……不知道什么问题
已有 1 人评分被赞许 收起 理由
p5248891 + 1 我很赞同

总评分: 被赞许 + 1   查看全部评分

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-6-6 11:17:03 |显示全部楼层
现在不知道为什么打不开   
我发现是spr卡住的问题,origin[2] += 20.0就解决……

使用道具 举报

Rank: 10Rank: 10Rank: 10

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

可爱小猫

发表于 2011-6-6 11:19:59 |显示全部楼层
p5248891 发表于 2011-6-6 11:17
现在不知道为什么打不开   
我发现是spr卡住的问题,origin[2] += 20.0就解决…… ...

……卡住?你向上瞄准就行呢,我也是被这个蛋疼问题弄坏了才+20,
实体大小明明才0.1像素²啊。难道是因为scale把尺寸扩大了?

使用道具 举报

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

回顶部