请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

ESFKAMI

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

ESFX

ESF: Xenoverse

ESF123

ESF1.2.3

EVM2.1

EVM2.1

ECXSSJ

ECX: TeamSSJ

ECX2.2

ECX RC2

ECX2.3

ECX RC3

查看: 679|回复: 0

[代码|Code]ECX选人界面Hook|ECX Podium Hook

[复制链接]

206

主题

211

帖子

981

积分

ESFKAMI

Rank: 8Rank: 8

积分
981
发表于 2017-7-13 17:22:07 | 显示全部楼层 |阅读模式

  1. /*
  2. 你可以把本源码放在CCI\.Plugins文件夹中编译[]
  3. You can put this file into "CCI\.Plugins" dir to compile.
  4. */
  5. #include <amxx/amxmodx>
  6. #include <amxx/fakemeta>
  7. #include <amxx/engine>
  8. #include <xtension/Class>

  9. new PodiumEnt, LeftAvatarEnt, RightAvatarEnt, MiddleAvatarEnt
  10. new LeftAura, RightAura
  11. new bool: PodiumVisible[33]

  12. public plugin_init()
  13. {
  14.         register_plugin("ESF: ECX Podium Hook", "1.0", "ESFKAMI");
  15.         register_forward(FM_AddToFullPack, "fw_AddToFullPack_Post", true)
  16. }

  17. public @ClassCreation()
  18. {
  19.         PodiumEnt = find_ent_by_class(0, "corePodium")
  20.         LeftAvatarEnt = find_ent_by_class(0, "coreAvatar")
  21.         RightAvatarEnt = LeftAvatarEnt + 1
  22.         MiddleAvatarEnt = LeftAvatarEnt + 2

  23.         new Float: PodiumOrg[3], Float: LeftAuraOrg[3], Float: RightAuraOrg[3], Float: MiddleAuraOrg[3]
  24.         pev(PodiumEnt, pev_origin, PodiumOrg)// 获取选人界面实体坐标[] get the origin of the podium entity
  25.         pev(LeftAvatarEnt, pev_origin, LeftAuraOrg)// 获取左侧人物实体坐标[] get origin for the left aura entity
  26.         pev(RightAvatarEnt, pev_origin, RightAuraOrg)// 获取右侧人物实体坐标[] get origin for the right aura entity
  27.         pev(MiddleAvatarEnt, pev_origin, MiddleAuraOrg)// 获取中间人物实体坐标[] get the origin of the middle avatar entity

  28.         set_pev(LeftAvatarEnt, pev_sequence, 2)// 为左侧人物实体设定播放动作[] set sequence for the left avatar entity
  29.         set_pev(RightAvatarEnt, pev_sequence, 2)// 为右侧人物实体设定播放动作[] set sequence for the right avatar entity

  30.         LeftAura = create_entity( "env_model" )// 创建左边的暴气模型实体[] create the left aura entity
  31.         engfunc( EngFunc_SetModel, LeftAura, "models/evolution/Auras/shape_01.mdl" )// 为实体设置模型[] set model
  32.         entity_set_float(LeftAura, EV_FL_framerate, 1.0)// 设置动作播放帧率[] set framerate
  33.         entity_set_int(LeftAura, EV_INT_sequence, 0)// 设置动作[] set sequence
  34.         set_pev( LeftAura, pev_classname, "LeftAuraEnt")// 设置名字[] set class name
  35.         set_pev( LeftAura, pev_skin, 3)// 设置皮肤[] set skin
  36.         set_pev( LeftAura, pev_scale, 0.25)// 缩放大小[] set scale
  37.         set_pev( LeftAura, pev_origin , LeftAuraOrg)// 设定坐标[] set origin
  38.         set_rendering( LeftAura, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 50 )// 设置渲染模式[] set render mode

  39.         // 同上[] same as above
  40.         RightAura = create_entity( "env_model" )
  41.         engfunc( EngFunc_SetModel, RightAura, "models/evolution/Auras/shape_06.mdl" )
  42.         entity_set_float(RightAura, EV_FL_framerate, 1.0);
  43.         entity_set_int(RightAura, EV_INT_sequence, 0)
  44.         set_pev(RightAura, pev_classname, "RightAuraEnt")
  45.         set_pev(RightAura, pev_skin, 5)
  46.         set_pev(RightAura, pev_scale, 0.25)
  47.         set_pev(RightAura, pev_origin , RightAuraOrg)
  48.         set_rendering(RightAura, kRenderFxNone, 0, 0, 0, kRenderTransAdd, 50 )
  49. }

  50. public fw_AddToFullPack_Post(ES_Handle, e, iEntity, iHost, iHostFlags, iPlayer, iSet)
  51. {
  52.         if(pev_valid(iEntity))
  53.         {
  54.                 new szClassName[32]
  55.                 pev(iEntity, pev_classname, szClassName, 31)
  56.                 if(equal(szClassName, "coreAvatar")) // 判断玩家是否正在选择人物[] check if client is choosing characters
  57.                 {
  58.                         if(get_es(ES_Handle, ES_ModelIndex) < 10)
  59.                         {
  60.                                 PodiumVisible[iHost] = false
  61.                         }
  62.                         else
  63.                         {
  64.                                 PodiumVisible[iHost] = true
  65.                         }
  66.                 }

  67.                 if(equal(szClassName, "LeftAuraEnt") || equal(szClassName, "RightAuraEnt"))// 设置选人界面中左右两侧暴气实体是否可视[] set whether the auras are visible
  68.                 {
  69.                         if(!PodiumVisible[iHost])// 如果玩家没有在选项人物[] if the Podium entity is invisible
  70.                         {
  71.                                 set_es(ES_Handle, ES_Effects, EF_NODRAW)// 单向渲染选人界面中左右两侧暴气实体为不可视[] set the aura entity invisible to a single client
  72.                         }
  73.                 }
  74.         }
  75. }

  76. public plugin_precache()
  77. {
  78.         precache_model("models/evolution/Auras/shape_01.mdl")
  79.         precache_model("models/evolution/Auras/shape_06.mdl")
  80. }
复制代码



回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|ESFKAMI    

GMT+8, 2018-1-23 04:02 , Processed in 0.248368 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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