/// <summary> /// 获取玩家是否拥有指定Perk-a-Cola /// </summary> /// <param name="player">指定玩家</param> /// <param name="perk">要查询的Perk-a-Cola的对象</param> /// <returns></returns> public static bool HasPerkCola(this Entity player, PerkColaType perk) { if (player.HasField(PerkCola.QueryDvar(perk)) && player.GetField <int>(PerkCola.QueryDvar(perk)) != 0) { return(true); } return(false); }
public static string QueryDvar(PerkColaType type) { switch (type) { case PerkColaType.QUICK_REVIVE: return("perk_revive"); case PerkColaType.SPEED_COLA: return("perk_speedcola"); case PerkColaType.JUGGERNOG: return("perk_juggernog"); case PerkColaType.STAMIN_UP: return("perk_staminup"); case PerkColaType.MULE_KICK: return("perk_mulekick"); case PerkColaType.DOUBLE_TAP: return("perk_doubletap"); case PerkColaType.DEAD_SHOT: return("perk_deadshot"); case PerkColaType.PHD: return("perk_phd"); case PerkColaType.ELECTRIC_CHERRY: return("perk_cherry"); case PerkColaType.WIDOW_S_WINE: return("perk_widow"); case PerkColaType.VULTURE_AID: return("perk_vulture"); case PerkColaType.TOMBSTONE: return("perk_tombstone"); default: return(null); } }
/// <summary> /// 删除指定玩家指定的Perk-a-Cola /// </summary> /// <param name="player">指定玩家</param> /// <param name="perk">要删除的Perk-a-Cola的对象</param> public static void RemovePerkCola(this Entity player, PerkColaType type, bool tempdisable = false) { var perk = new PerkCola(type); perk.TakePlayerPerkCola(player); if (tempdisable) { var list = player.GetPerkColaHud(); foreach (var item in list) { if (item.GetField <PerkColaType>("perk") == type) { item.Call("fadeovertime", 0.5f); item.Alpha = 0; break; } } } }
/// <summary> /// 给与指定玩家指定的Perk-a-Cola,但是不播放给与特效 /// </summary> /// <param name="player">指定玩家</param> /// <param name="perk">要给与的Perk-a-Cola的对象</param> public static void GivePerkColaNoEffect(this Entity player, PerkColaType type) { var perk = new PerkCola(type); perk.GiveToPlayer(player, false); }
public PerkColaMachine(Vector3 origin, Vector3 angle, PerkColaType perk) : base(BoxType.PerkColaMachine, origin, angle, 50) { if (MapEdit.spawnedPerkColas.Contains(perk)) { Dispose(); return; } MapEdit.spawnedPerkColas.Add(perk); PerkCola = new PerkCola(perk); Icon = PerkCola.GetIcon(); ObjectiveId = Hud.CreateObjective(Origin, Icon); Cost = PerkCola.GetCost(); string fullname = PerkCola.GetFullName(); OnTriggerString += player => { if ((player.GetTeam() == "allies" && Utility.GetDvar <int>("allies_fire_sale") == 1) || (player.GetTeam() == "axis" && Utility.GetDvar <int>("axis_fire_sale") == 1)) { return("Press ^3[{+activate}] ^7to buy " + fullname + ". [Cost: ^2$^610^7]"); } return("Press ^3[{+activate}] ^7to buy " + fullname + ". [Cost: ^2$^3" + Cost + "^7]"); }; OnTriggerUse += player => { if (!player.IsAlive) { return; } if ((player.GetTeam() == "allies" && Utility.GetDvar <int>("allies_fire_sale") == 1) || (player.GetTeam() == "axis" && Utility.GetDvar <int>("axis_fire_sale") == 1) && player.GetCash() >= 10) { if (player.PerkColasCount() >= 4) { player.PrintlnBold("^1You already have 4 Perk-a-Cola."); return; } if (player.HasPerkCola(PerkCola)) { player.PrintlnBold("^1You already have " + fullname + "."); return; } player.PayCash(10); player.GivePerkCola(PerkCola); } else if (player.GetCash() >= Cost) { if (player.PerkColasCount() >= 4) { player.PrintlnBold("^1You already have 4 Perk-a-Cola."); return; } if (player.HasPerkCola(PerkCola)) { player.PrintlnBold("^1You already have " + fullname + "."); return; } player.PayCash(Cost); player.GivePerkCola(PerkCola); } else { player.Println("^1Not enough cash for " + fullname + ". Need ^2$^3" + Cost); } }; }
public PerkCola(PerkColaType type) { Type = type; }