bool InNoLootZone(BasePlayer victim, BasePlayer attacker) { // Event Manager plugin support - http://oxidemod.org/plugins/event-manager.740/ if (EventManager) { if (!((bool)EventManager.Call("isPlaying", victim))) { return(false); } PrintToChat(attacker, Lang("NoLootZone", attacker.UserIDString)); return(true); } // Zone Manager plugin support - http://oxidemod.org/plugins/zones-manager.739/ if (ZoneManager) { var noLooting = Enum.Parse(ZoneManager.GetType().GetNestedType("ZoneFlags"), "NoPlayerLoot", true); if (!((bool)ZoneManager.Call("HasPlayerFlag", victim, noLooting))) { return(false); } PrintToChat(attacker, Lang("NoLootZone", attacker.UserIDString)); return(true); } return(false); }
void TransferMoney(BasePlayer victim, BasePlayer attacker) { // Check if player is in event/zone with no looting var inEvent = EventManager?.Call("isPlaying", victim); if (inEvent != null && (bool)inEvent) { return; } if (ZoneManager != null) { var noLooting = Enum.Parse(ZoneManager.GetType().GetNestedType("ZoneFlags"), "noplayerloot", true); if ((bool)ZoneManager.CallHook("HasPlayerFlag", victim, noLooting)) { return; } } // Calculate and transfer money var wallet = (double)Economics.Call("GetPlayerMoney", victim.userID); var amount = victim.IsSleeping() ? Math.Floor(wallet * (PercentSleeping / 100)) : Math.Floor(wallet * (PercentAwake / 100)); if (amount > 0) { Economics.Call("Transfer", victim.userID, attacker.userID, amount); PrintToChat(attacker, MoneyStolen.Replace("{amount}", amount.ToString()).Replace("{player}", victim.displayName)); return; } PrintToChat(attacker, NothingStolen.Replace("{player}", victim.displayName)); }
void Transfer(BasePlayer victim, BasePlayer attacker) { // Check if player is in event with no looting var inEvent = EventManager?.Call("isPlaying", victim); if (inEvent != null && (bool)inEvent) { return; } // Check if player is in zone with no looting if (ZoneManager) { var noLooting = Enum.Parse(ZoneManager.GetType().GetNestedType("ZoneFlags"), "noplayerloot", true); if ((bool)ZoneManager.CallHook("HasPlayerFlag", victim, noLooting)) { return; } } // Economics plugin support var money = 0d; if (Economics && economics) { // Check if victim's balance is greater than 0 var balance = (double)Economics.Call("GetPlayerMoney", victim.userID); // Calculate amount based on victim's balance money = victim.IsSleeping() ? Math.Floor(balance * (percentSleeping / 100)) : Math.Floor(balance * (percentAwake / 100)); if (money > 0) { // Transfer money from victim to attacker Economics.Call("Transfer", victim.userID, attacker.userID, money); } } // ServerRewards plugin support var points = 0d; if (ServerRewards && rewards) { // Check if victim's balance is greater than 0 var balance = (int)ServerRewards.Call("CheckPoints", victim.userID); // Calculate amount based on victim's balance points = victim.IsSleeping() ? Math.Floor(balance * (percentSleeping / 100)) : Math.Floor(balance * (percentAwake / 100)); if (points > 0) { // Transfer points from victim to attacker ServerRewards.Call("TakePoints", victim.userID, points); ServerRewards.Call("AddPoints", attacker.userID, points); } } // Notify attacker if (money > 0) { PrintToChat(attacker, Lang("StoleMoney", attacker.UserIDString, money, victim.displayName)); } if (points > 0) { PrintToChat(attacker, Lang("StolePoints", attacker.UserIDString, points, victim.displayName)); } if (money <= 0 && points <= 0) { PrintToChat(attacker, Lang("StoleNothing", attacker.UserIDString, victim.displayName)); } }