cs插件吧 关注:8,258贴子:88,633
  • 88回复贴,共1

【求助】玩家受到伤害显示spr文件

只看楼主收藏回复

请教各位大佬:
击中敌人掉血50就显示50.spr(在敌人所在的位置显示spr,类似杀敌显示杀字插件),
掉血30就显示30.spr(自己做的静态spr 1到400.spr) 这个要怎么写插件。


IP属地:湖北1楼2016-10-09 16:13回复
    這想法不錯


    IP属地:中国香港2楼2016-10-09 16:15
    收起回复
      MESSAGE_BEGIN ( MSG_PAS, SVC_TEMPENTITY, vecOrigin, NULL );
      WRITE_COORD ( vecOrigin.x );
      WRITE_COORD ( vecOrigin.y );
      WRITE_COORD ( vecOrigin.z );
      WRITE_SHORT ( g_iSpriteIndex );
      WRITE_BYTE ( 20 ); // 2sec
      WRITE_BYTE ( 255 );
      MESSAGE_END ( );


      IP属地:广西3楼2016-10-09 17:19
      收起回复
        那么多spr,,药丸


        IP属地:广东来自Android客户端4楼2016-10-09 20:26
        收起回复
          用acg吧,只需要10张spr


          来自Android客户端5楼2016-10-10 09:04
          收起回复
            我有这插件


            来自Android客户端6楼2016-10-11 08:11
            收起回复
              帮顶,希望早日做出,看你在好多地方开帖咨询过了


              IP属地:重庆来自Android客户端7楼2016-10-16 11:13
              收起回复
                是不是这个.105个spr


                来自Android客户端9楼2016-10-20 20:08
                收起回复
                  3楼的参数不会用。编译出来的是错误的。
                  #include <amxmodx>
                  #include <fakemeta>
                  new damage_player[33] = {0,...}, cvar_time_show
                  public plugin_init()
                  {
                  register_plugin("NST Zombie3 Combo","1.0","NST")
                  register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
                  register_event("DeathMsg", "Death", "a")
                  cvar_time_show = register_cvar("spr_time_show","3.0")
                  }
                  public event_round_start()
                  {
                  new g_reset_value[33]
                  damage_player = g_reset_value
                  spr_current = g_reset_value
                  }
                  public Death()
                  {
                  hide_spr(read_data(2), 1)
                  hide_spr(read_data(2), 2)
                  }
                  public client_damage(attacker,victim,damage,wpnindex,hitplace,TA)
                  {
                  if (!is_user_connected(victim) || !is_user_connected(attacker) || attacker==victim) return;
                  new damage_victim = get_user_health(victim)+damage// get damage attack
                  new damage_fire_old = min(damage_victim, damage)
                  UpdateLevelHumanDamage(attacker, damage_fire_old) // update level of human for damage
                  UpdateEvolutionDamage(victim, damage_fire_old)// damage victim
                  //client_print(attacker, print_chat, "%i", g_dmg_attack[attacker])
                  }
                  UpdateLevelHumanDamage(attacker, damage)
                  {
                  if (!is_user_connected(attacker)) return;
                  new damage_fire = damage// check level max
                  new damage_old = damage_player[attacker]
                  new damage_new = damage_player[attacker] + damage_fire
                  new aaaa_new = get_aaaa(damage_new)
                  new aaaa_old = get_aaaa(damage_old)
                  new aaa_new = get_aaa(damage_new)
                  new aaa_old = get_aaa(damage_old)
                  if (aaa_new != aaa_old) show_spr(attacker, aaa_new)// up damage
                  damage_player[attacker] = damage_new// set damage
                  //client_print(attacker, print_chat, "%i - %i", attacker, damage)
                  }
                  UpdateEvolutionDamage(victim, damage)
                  {
                  if (!is_user_connected(victim)) return;
                  new damage_fire = damage// check level max
                  new damage_old = damage_player[victim]
                  new damage_new = damage_player[victim] + damage_fire
                  new aaaa_new = get_aaaa(damage_new)
                  new aaaa_old = get_aaaa(damage_old)
                  new aaa_new = get_aaa(damage_new)
                  new aaa_old = get_aaa(damage_old)
                  if (aaa_new != aaa_old) show_sprdmg(victim, aaa_new)// up damage
                  damage_player[victim] = damage_new// set damage
                  //client_print(victim, print_chat, "%i - %i", victim, damage)
                  }
                  show_sprdmg(id, num)
                  {
                  hide_sprdmg(id)// hide spr old
                  new spr1, spr2// show spr new
                  if (num >= 5)
                  {
                  spr1 = 1
                  spr2 = num-5
                  }
                  else
                  {
                  spr1 = 0
                  spr2 = num
                  }
                  if (spr1 > 0) sprdmg_action(id, get_sprname(5+50))
                  if (spr2 > 0) sprdmg_action(id, get_sprname(spr2+50))
                  }
                  sprdmg_action(id, idspr)
                  {
                  if (!is_user_connected(id)) return
                  static Float:origin[3];
                  pev(id,pev_origin,origin);
                  //message_begin(MSG_PAS,SVC_TEMPENTITY);
                  message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
                  write_byte(TE_EXPLOSION); // TE_EXPLOSION
                  write_coord(floatround(origin[0])); // origin x
                  write_coord(floatround(origin[1])); // origin y
                  write_coord(floatround(origin[2])); // origin z
                  //write_short(get_sprname(idspr)); // sprites
                  write_short(idspr); // sprites
                  write_byte(10); // scale in 0.1's
                  write_byte(20); // framerate
                  write_byte(14); // flags
                  message_end(); // message end
                  }
                  show_spr(id, idspr)
                  {
                  hide_spr(id, 1)// hide spr old
                  spr_current[id] = idspr// set value
                  spr_action(id, get_sprname(11), 1)// show spr
                  spr_action(id, get_sprname(idspr), 1)
                  if (task_exists(id+201610231926)) remove_task(id+201610231926)// hide spr
                  set_task(get_pcvar_float(cvar_time_show), "task_hidehud", id+201610231926)
                  }
                  public task_hidehud(taskid)hide_spr(taskid - 201610231926, 1)
                  hide_spr(id, idspr)
                  {
                  if (idspr == 1)
                  {
                  for (new i = 1; i <= 11; i++)spr_action(id, get_sprname(i), 0)
                  spr_current[id] = 0
                  }
                  else if (idspr == 2)
                  {
                  for (new i = 51; i <= 55; i++)spr_action(id, get_sprname(i), 0)
                  }
                  }
                  spr_action(id, sprname[], run)
                  {
                  message_begin(MSG_ONE,get_user_msgid("StatusIcon",{0,0,0},id)
                  write_byte(run) // status (0=hide, 1=show, 2=flash)
                  write_string(sprname) // sprite name
                  message_end()
                  }
                  get_sprname(idspr)
                  {
                  new spr_name[33]
                  if (idspr==1) spr_name = "kill_1"
                  else if (idspr==2) spr_name = "kill_2"
                  else if (idspr==3) spr_name = "kill_3"
                  else if (idspr==4) spr_name = "kill_4"
                  else if (idspr==5) spr_name = "kill_5"
                  else if (idspr==6) spr_name = "kill_6"
                  else if (idspr==7) spr_name = "kill_7"
                  else if (idspr==8) spr_name = "kill_8"
                  else if (idspr==9) spr_name = "damage_levelup"
                  else if (idspr==10) spr_name = "damage_fragsup"
                  else if (idspr==11) spr_name = "kill_none"
                  else if (idspr==51) spr_name = "damage_100"
                  else if (idspr==52) spr_name = "damage_200"
                  else if (idspr==53) spr_name = "damage_300"
                  else if (idspr==54) spr_name = "damage_400"
                  else if (idspr==55) spr_name = "damage_500"
                  return spr_name
                  }
                  get_aaa(num)
                  {
                  new aaa, aa
                  if (num >= 100)
                  {
                  if (num >= 1000) num = num % 1000
                  aa = num % 100
                  aaa = (num - aa)/100
                  }
                  else aaa = 0
                  return aaa
                  }
                  get_aaaa(num)
                  {
                  new aaa,aaaa
                  if (num >= 1000)
                  {
                  if (num >= 10000) num = num % 10000
                  aaa = num % 1000
                  aaaa = (num - aaa)/1000
                  }
                  else aaaa = 0
                  return aaaa
                  }
                  /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
                  *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
                  */


                  IP属地:湖北10楼2016-10-23 22:10
                  收起回复
                    把/write_short(get_sprname(idspr)); // sprites换成
                    write_string(get_sprname(idspr)); // sprite name 就可以编译。不知道为什么。
                    /* 本插件由 AMXX-Studio 中文版自动生成 */
                    /* UTF-8 func by http://www.DT-Club.net */
                    #include <amxmodx>
                    #include <fakemeta>
                    new damage_player[33] = {0,...}, cvar_time_show, spr_current[33]
                    public plugin_init()
                    {
                    register_plugin("NST Zombie3 Combo","1.0","NST")
                    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
                    register_event("DeathMsg", "Death", "a")
                    cvar_time_show = register_cvar("spr_time_show","3.0")
                    }
                    public event_round_start()
                    {
                    new g_reset_value[33]
                    damage_player = g_reset_value
                    spr_current = g_reset_value
                    }
                    public Death()
                    {
                    hide_spr(read_data(2), 1)
                    hide_spr(read_data(2), 2)
                    }
                    public client_damage(attacker,victim,damage,wpnindex,hitplace,TA)
                    {
                    if (!is_user_connected(victim) || !is_user_connected(attacker) || attacker==victim) return;
                    new damage_victim = get_user_health(victim)+damage// get damage attack
                    new damage_fire_old = min(damage_victim, damage)
                    UpdateLevelHumanDamage(attacker, damage_fire_old) // update level of human for damage
                    UpdateEvolutionDamage(victim, damage_fire_old)// damage victim
                    //client_print(attacker, print_chat, "%i", g_dmg_attack[attacker])
                    }
                    UpdateLevelHumanDamage(attacker, damage)
                    {
                    if (!is_user_connected(attacker)) return;
                    new damage_fire = damage// check level max
                    new damage_old = damage_player[attacker]
                    new damage_new = damage_player[attacker] + damage_fire
                    new aaa_new = get_aaa(damage_new)
                    new aaa_old = get_aaa(damage_old)
                    if (aaa_new != aaa_old) show_spr(attacker, aaa_new)// up damage
                    damage_player[attacker] = damage_new// set damage
                    //client_print(attacker, print_chat, "%i - %i", attacker, damage)
                    }
                    UpdateEvolutionDamage(victim, damage)
                    {
                    if (!is_user_connected(victim)) return;
                    new damage_fire = damage// check level max
                    new damage_old = damage_player[victim]
                    new damage_new = damage_player[victim] + damage_fire
                    new aaa_new = get_aaa(damage_new)
                    new aaa_old = get_aaa(damage_old)
                    if (aaa_new != aaa_old) sprdmg_action(victim, aaa_new)// up damage
                    damage_player[victim] = damage_new// set damage
                    //client_print(victim, print_chat, "%i - %i", victim, damage)
                    }
                    sprdmg_action(id, idspr)
                    {
                    if (!is_user_connected(id)) return
                    static Float:origin[3];
                    pev(id,pev_origin,origin);
                    //message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
                    message_begin(MSG_PAS,SVC_TEMPENTITY);
                    write_byte(TE_EXPLOSION); // TE_EXPLOSION
                    write_coord(floatround(origin[0])); // origin x
                    write_coord(floatround(origin[1])); // origin y
                    write_coord(floatround(origin[2])); // origin z
                    //write_short(get_sprname(idspr)); // sprites
                    write_string(get_sprname(idspr)); // sprite name
                    write_byte(10); // scale in 0.1's
                    write_byte(20); // framerate
                    write_byte(14); // flags
                    message_end(); // message end
                    }
                    show_spr(id, idspr)
                    {
                    if (!is_user_connected(id)) return
                    hide_spr(id, 1)// hide spr old
                    spr_current[id] = idspr// set value
                    spr_action(id, get_sprname(11), 1)// show spr
                    spr_action(id, get_sprname(idspr), 1)
                    if (task_exists(id+201610231926)) remove_task(id+201610231926)// hide spr
                    set_task(get_pcvar_float(cvar_time_show), "task_hidehud", id+201610231926)
                    }
                    public task_hidehud(taskid)hide_spr(taskid - 201610231926, 1)
                    hide_spr(id, idspr)
                    {
                    if (idspr == 1)
                    {
                    for (new i = 1; i <= 11; i++)spr_action(id, get_sprname(i), 0)
                    spr_current[id] = 0
                    }
                    else if (idspr == 2)
                    {
                    for (new i = 51; i <= 55; i++)spr_action(id, get_sprname(i), 0)
                    }
                    }
                    spr_action(id, sprname[], run)
                    {
                    if (!is_user_connected(id)) return
                    message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
                    write_byte(run) // status (0=hide, 1=show, 2=flash)
                    write_string(sprname) // sprite name
                    message_end()
                    }
                    get_sprname(idspr)
                    {
                    new spr_name[33]
                    if (idspr==1) spr_name = "kill_1"
                    else if (idspr==2) spr_name = "kill_2"
                    else if (idspr==3) spr_name = "kill_3"
                    else if (idspr==4) spr_name = "kill_4"
                    else if (idspr==5) spr_name = "kill_5"
                    else if (idspr==6) spr_name = "kill_6"
                    else if (idspr==7) spr_name = "kill_7"
                    else if (idspr==8) spr_name = "kill_8"
                    else if (idspr==9) spr_name = "damage_levelup"
                    else if (idspr==10) spr_name = "damage_fragsup"
                    else if (idspr==11) spr_name = "kill_none"
                    else if (idspr==51) spr_name = "damage_100"
                    else if (idspr==52) spr_name = "damage_200"
                    else if (idspr==53) spr_name = "damage_300"
                    else if (idspr==54) spr_name = "damage_400"
                    else if (idspr==55) spr_name = "damage_500"
                    return spr_name
                    }
                    get_aaa(num)
                    {
                    new aaa, aa
                    if (num >= 100)
                    {
                    if (num >= 1000) num = num % 1000
                    aa = num % 100
                    aaa = (num - aa)/100
                    }
                    else aaa = 0
                    return aaa
                    }
                    /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
                    *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
                    */


                    IP属地:湖北12楼2016-10-26 00:17
                    收起回复
                      改成这样应该可以了。
                      new damage_player[33] = {0,...}, cvar_time_show, spr_current[33], spr50, spr100, spr1000
                      public plugin_precache() /// Precache models, sounds,bla bla bla..
                      {
                      spr50 = precache_model("sprites/spr50.spr")
                      spr100 = precache_model("sprites/spr100.spr")
                      spr1000 = precache_model("sprites/spr1000.spr")
                      }
                      sprdmg_action(id, num)
                      {
                      if (!is_user_connected(id)) return
                      static Float:origin[3], idspr;
                      pev(id,pev_origin,origin);
                      if (num ==50 ) idspr = spr50
                      else if (num ==100) idspr = spr100
                      else if (num ==1000) idspr = spr1000
                      message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
                      //message_begin(MSG_PAS,SVC_TEMPENTITY);
                      write_byte(TE_EXPLOSION); // TE_EXPLOSION
                      write_coord(floatround(origin[0])); // origin x
                      write_coord(floatround(origin[1])); // origin y
                      write_coord(floatround(origin[2])); // origin z
                      write_short(idspr); // sprites
                      //write_string(get_sprname(idspr)); // sprite name
                      write_byte(10); // scale in 0.1's
                      write_byte(20); // framerate
                      write_byte(14); // flags
                      message_end(); // message end
                      }


                      IP属地:湖北13楼2016-10-26 20:44
                      收起回复
                        。。。其实我觉得用一个spr就可以完成了,配合Ham_TakeDamage(不过的确是有想法)


                        IP属地:重庆来自Android客户端14楼2016-11-11 11:35
                        收起回复