Paimon-Kawaii / L4D2-Plugins

21 stars 0 forks source link

坦克伤害修改 #4

Closed ShigureUii closed 11 months ago

ShigureUii commented 1 year ago

大佬你的这个插件是否能添加一个攻击倒地玩家的伤害修改还有打铁的伤害

Paimon-Kawaii commented 11 months ago

大佬你的这个插件是否能添加一个攻击倒地玩家的伤害修改还有打铁的伤害

想要实现这个应该不难,只需要使用如下代码应该就能做到:

#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <paiutils>

/***
  Some Codes.
  balabalabala...
***/

public void OnPluginStart()
{
  HookEvent("tank_spawn", Event_OnTankSpawn);
  HookEvent("player_death", Event_OnTankDead);
}

void Event_OnTankSpawn(Event event, const char[] name, bool dontBroadcast)
{
  int client = GetClientOfUserId(event.GetInt("userid"));
  SDKHook(client, SDKHook_TraceAttack, TraceAttack);
}

void Event_OnTankDead(Event event, const char[] name, bool dontBroadcast)
{
  int client = GetClientOfUserId(event.GetInt("userid"));
  if(!IsTank(client)) return;

  SDKUnhook(client, SDKHook_TraceAttack, TraceAttack);
}

Action TraceAttack(int victim, int &attacker, int &inflictor, float &damage, int &damagetype)
{
  if(!IsTank(attacker))
  {
    SDKUnhook(attacker, SDKHook_TraceAttack, TraceAttack);
    return Plugin_Continue;
  }
  if(!IsSurvivor(victim)) return Plugin_Continue;
  if(damagetype == DMG_VEHICLE) damage = 铁的伤害;
  if(IsPlayerIncap(victim)) damage = 倒地伤害;

  return Plugin_Changed;
}

这些代码编译一下就行,如果需要动态控制伤害的话,写个convar去控制就好. 抱歉看到的有点晚ww