搜索
查看: 7072|回复: 11

【求助】爆炸光坏的代码怎么写?

[复制链接]
发表于 2011-7-22 21:58:33 | 显示全部楼层 |阅读模式 来自 中国–湖北–武汉
其实也不是什么新鲜玩意,就是想在手雷拖尾插件的基础上再增加点东西,即手雷爆炸的时候,附带产生一个红色的光坏(如图示)。插件的代码写完了,但是没能编译成功,希望能有高人帮忙修改一下。

  1. #include <amxmodx>
  2. #include <engine>
  3. #include <csx>

  4. #define TE_BEAMFOLLOW 22

  5. new g_trail
  6. new ExSpr

  7. public plugin_init()
  8. {
  9.        register_plugin("Grenade Trail","1.0","X-man")
  10.        register_cvar("amx_grentrail","1")
  11. }
  12. public plugin_precache() {
  13.        g_trail = precache_model("sprites/smoke.spr")
  14.        ExSpr = precache_model("sprites/shockwave.spr")
  15. }
  16. public grenade_throw(id,greindex,wpn)
  17. {
  18.        if(!get_cvar_num("amx_grentrail"))
  19.        return PLUGIN_HANDLED
  20.        if(wpn == CSW_HEGRENADE)
  21.        Create_TE_BEAMFOLLOW(greindex, g_trail, 10, 10, 255, 0, 0, 200)
  22.        return PLUGIN_CONTINUE
  23. }
  24. stock Create_TE_BEAMFOLLOW(id, g_trail, life, width, r, g, b, brightness)
  25. {
  26.         message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  27.         write_byte(TE_BEAMFOLLOW)
  28.         write_short(id)
  29.         write_short(g_trail)
  30.         write_byte(life)
  31.         write_byte(width)
  32.         write_byte(r)
  33.         write_byte(g)
  34.         write_byte(b)
  35.         write_byte(brightness)
  36.         message_end()
  37. }  

  38. public HE_explode(ent)
  39. {
  40.         if(!pev_valid(ent))
  41.                 return;
  42.        
  43.         new origin[3], Float:originG[3]
  44.         pev(ent, pev_origin, originG)
  45.         fm_FVecIVec(originG,origin)
  46.                
  47.         HE_Explosion(origin)       
  48. }

  49. public HE_Explosion(origin[3])
  50. {
  51.         message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  52.         write_byte(21)
  53.         write_coord(origin[0])
  54.         write_coord(origin[1])
  55.         write_coord(origin[2])
  56.         write_coord(origin[0])
  57.         write_coord(origin[1])
  58.         write_coord(origin[2] + 385)
  59.         write_short(ExSpr)
  60.         write_byte(0)
  61.         write_byte(0)
  62.         write_byte(5)
  63.         write_byte(80)
  64.         write_byte(0)
  65.         write_byte(225)
  66.         write_byte(0)
  67.         write_byte(0)
  68.         write_byte(192)
  69.         write_byte(0)
  70.         message_end()

  71.         message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  72.         write_byte(21)
  73.         write_coord(origin[0])
  74.         write_coord(origin[1])
  75.         write_coord(origin[2])
  76.         write_coord(origin[0])
  77.         write_coord(origin[1])
  78.         write_coord(origin[2] + 470)
  79.         write_short(ExSpr)
  80.         write_byte(0)
  81.         write_byte(0)
  82.         write_byte(5)
  83.         write_byte(80)
  84.         write_byte(0)
  85.         write_byte(225)
  86.         write_byte(0)
  87.         write_byte(0)
  88.         write_byte(192)
  89.         write_byte(0)
  90.         message_end()

  91.         message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  92.         write_byte(21)
  93.         write_coord(origin[0])
  94.         write_coord(origin[1])
  95.         write_coord(origin[2])
  96.         write_coord(origin[0])
  97.         write_coord(origin[1])
  98.         write_coord(origin[2] + 555)
  99.         write_short(ExSpr)
  100.         write_byte(0)
  101.         write_byte(0)
  102.         write_byte(5)
  103.         write_byte(80)
  104.         write_byte(0)
  105.         write_byte(225)
  106.         write_byte(0)
  107.         write_byte(0)
  108.         write_byte(192)
  109.         write_byte(0)
  110.         message_end()

  111.         message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
  112.         write_byte(27);
  113.         write_coord(origin[0])
  114.         write_coord(origin[1])
  115.         write_coord(origin[2])
  116.         write_byte(60)
  117.         write_byte(225)
  118.         write_byte(0)
  119.         write_byte(0)
  120.         write_byte(8)
  121.         write_byte(60)
  122.         message_end()
  123. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
发表于 2011-7-23 15:18:26 | 显示全部楼层 来自 中国–广东–广州
刚好手头上有一个发俭给你吧...大哥最近去那了很久不见你上线哦
回复

使用道具 举报

发表于 2011-7-23 15:22:59 | 显示全部楼层 来自 中国–广东–广州
本帖最后由 点通粉丝 于 2011-7-23 15:34 编辑

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

const m_fGrenadeState             = 114;

new exp;
new cvar_radius;

public plugin_init()
{
        register_plugin("GrenadeEffect", "1.0", "xxx");
        cvar_radius = register_cvar("explosion_radius", "200");
        //register_clcmd("test","blastcircles");
        RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade");
}

public plugin_precache()
        exp = precache_model("sprites/shockwave.spr");

public fw_ThinkGrenade(ent)
{
        // Invalid entity
        if (!pev_valid(ent))
                return HAM_IGNORED;
       
        if (get_pdata_int(ent, m_fGrenadeState) & (1<<0))
        {
                blastcircles(ent);
        }
        return HAM_IGNORED;
}

public blastcircles(id)
{
        client_print(0,print_chat,"blastcircles");
        new Float:forigin[3];
        pev(id, pev_origin, forigin);
        new blast = get_pcvar_num(cvar_radius);
       
        engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, forigin)
        write_byte(TE_BEAMCYLINDER)
        engfunc(EngFunc_WriteCoord,forigin[0])
        engfunc(EngFunc_WriteCoord,forigin[1])
        engfunc(EngFunc_WriteCoord,forigin[2] - 16)
        engfunc(EngFunc_WriteCoord,forigin[0])
        engfunc(EngFunc_WriteCoord,forigin[1])
        engfunc(EngFunc_WriteCoord,forigin[2] - 16 + blast)
        write_short(exp)
        write_byte(6)
        write_byte(2)
        write_byte(6)
        write_byte(90)  //
        write_byte(4)   //
        write_byte(238) //
        write_byte(130) //
        write_byte(238)
        write_byte(250)
        write_byte(5)
        message_end()

        engfunc(EngFunc_MessageBegin, MSG_PVS,SVC_TEMPENTITY,forigin)
        write_byte(TE_PARTICLEBURST) // TE id
        engfunc(EngFunc_WriteCoord,forigin[0]) // x
        engfunc(EngFunc_WriteCoord,forigin[1]) // y
        engfunc(EngFunc_WriteCoord,forigin[2]) // z
        write_short(240) //
        write_byte(140) //
        write_byte(2) //
        message_end()

        engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, forigin)
        write_byte(TE_BEAMCYLINDER)
        engfunc(EngFunc_WriteCoord,forigin[0])
        engfunc(EngFunc_WriteCoord,forigin[1])
        engfunc(EngFunc_WriteCoord,forigin[2] - 16)
        engfunc(EngFunc_WriteCoord,forigin[0])
        engfunc(EngFunc_WriteCoord,forigin[1])
        engfunc(EngFunc_WriteCoord,forigin[2] - 2936 + blast /2)
        write_short(exp)
        write_byte(1)
        write_byte(2)
        write_byte(4)
        write_byte(6)
        write_byte(255)
        write_byte(255)
        write_byte(255)
        write_byte(255)
        write_byte(255)  
        write_byte(5)
        message_end()

        engfunc(EngFunc_MessageBegin, MSG_PVS,SVC_TEMPENTITY,forigin)
        write_byte(TE_PARTICLEBURST) // TE id
        engfunc(EngFunc_WriteCoord,forigin[0]) // x
        engfunc(EngFunc_WriteCoord,forigin[1]) // y
        engfunc(EngFunc_WriteCoord,forigin[2]) // z
        write_short(200) //
        write_byte(100) //
        write_byte(4) //
        message_end()

} 2# 点通粉丝
回复

使用道具 举报

发表于 2011-7-23 15:29:05 | 显示全部楼层 来自 中国–广东–广州
本帖最后由 点通粉丝 于 2011-7-23 15:38 编辑

我这个好像也有点问题的..不能同步显示的
望Osker Lee 大哥修正一下吧..
另外帮手加多一个spr特效上去...就是在光环爆炸中间加多一个spr爆炸效果上去吧..谢了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

 楼主| 发表于 2011-7-23 16:35:07 | 显示全部楼层 来自 中国–湖北–武汉
本帖最后由 Osker Lee 于 2011-7-23 16:44 编辑

工作了,没办法,为了生计得到处奔波劳碌啊...... {:3_65:} 至于怎么加SPR图标,参考这个插件的源代码应该对你有所帮助:

死亡光环插件+鬼魂插件(修正版):
http://www.dt-club.net/forum/vie ... 6984&highlight=
回复

使用道具 举报

发表于 2011-7-23 17:41:26 | 显示全部楼层 来自 中国–广东–广州
工作了,没办法,为了生计得到处奔波劳碌啊...... {:3_65:} 至于怎么加SPR图标,参考这个插件的源代码应该对你有所帮助:

死亡光环插件+鬼魂插件(修正版):
http://www.dt-club.net/forum/viewthread.php?tid=36984 ...
Osker Lee 发表于 2011-7-23 16:35


我的代码有没效果?????????
回复

使用道具 举报

 楼主| 发表于 2011-7-23 17:43:01 | 显示全部楼层 来自 中国–湖北–武汉
本帖最后由 Osker Lee 于 2011-7-23 17:47 编辑

另外,你的源码貌似有问题,我编译成amxx后放游戏里使用,结果一扔手雷马上就当机了,游戏会被弹出。(我的是CS1.6 Ver.4554版本,AMXX1.8.1 + Metamod1.19)
回复

使用道具 举报

发表于 2011-7-23 17:47:33 | 显示全部楼层 来自 中国–广东–广州
本帖最后由 点通粉丝 于 2011-7-23 17:48 编辑

没可能..我是CS1.5+amxx1.76c上使用的
要不用我的试一下吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

发表于 2011-7-23 17:49:25 | 显示全部楼层 来自 中国–广东–广州
看一下还有问题没有
回复

使用道具 举报

 楼主| 发表于 2011-7-23 18:07:39 | 显示全部楼层 来自 中国–湖北–武汉
问题依旧,这个CS1.5可能没问题,CS1.6就不行了,估计得重写一下代码。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表