void OnPlayerAuthorize(PlayerSession session, GameObject obj, OwnershipStakeServer stake) { if (!stake.IsClanTotem) { return; } if (stake.AuthorizedClans.Count() != 0) { var oldClan = stake.AuthorizedClans.First(); if (objStakes.ContainsKey(oldClan)) { objStakes[oldClan]--; } } var newClan = session.Identity.Clan; if (objStakes.ContainsKey(newClan)) { objStakes[newClan]++; } else { objStakes.Add(newClan, 1); } }
bool checkAnotherClan(OwnershipStakeServer stake, Clan clan) { if (clan == null) { return(true); } foreach (var pl in stake.AuthorizedPlayers) { if (pl.Clan != null && pl.Clan != clan) { return(false); } } return(true); }
object OnPlayerAuthorize(PlayerSession session, GameObject obj, OwnershipStakeServer ownerShip) { if (ownerShip.IsClanTotem) { return(null); } if (_config.blockAClans && !checkAnotherClan(ownerShip, session.Identity.Clan)) { SendChat(session, Msg("stakeanotherclan", session.SteamId.ToString())); return(false); } if (ownerShip.AuthorizedPlayers.Count() >= _config.MaxPlayerInTeam) { int pl = ownerShip.AuthorizedPlayers.Count() + 1; SendChat(session, string.Format(Msg("stakelimit", session.SteamId.ToString()), _config.MaxPlayerInTeam + 1)); return(false); } return(null); }
void GiveRewad() { OwnershipStakeServer stake = GetComponent <OwnershipStakeServer>(); if (stake.AuthorizedClans == null || stake.AuthorizedClans.Count() == 0) { return; } Clan clan = gameObject.GetComponent <OwnershipStakeServer>().AuthorizedClans.FirstOrDefault(); time++; if (controlClan != clan.ClanGuid) { controlClan = clan.ClanGuid; time = 0; } if (time >= 60) { time = 0; Interface.CallHook("OnClanReward", clan); } }
private void SetSpawnCommand(IPlayer player, string command, string[] args) { PlayerSession session = player.Object as PlayerSession; if (player == null) { return; } int count = 0; if (permission.UserHasPermission(session.SteamId.ToString(), "magicstakes.use")) { if (args.Length == 0) { foreach (OwnershipStakeServer stake in Resources.FindObjectsOfTypeAll <OwnershipStakeServer>()) { if (stake.AuthorizedPlayers.Contains(session.Identity) && stake.isActiveAndEnabled) { count++; if (stake.SpawnPlayers.Contains(session.Identity)) { PrintToChat(player, Msg("stakeinfo", session.SteamId.ToString()).Replace("{id}", count.ToString()).Replace("{territory}", stake.TerritoryName).Replace("{authcount}", stake.AuthorizedPlayers.Count.ToString()) + " | <color=yellow>(SPAWN)</color>."); } else { PrintToChat(player, Msg("stakeinfo", session.SteamId.ToString()).Replace("{id}", count.ToString()).Replace("{territory}", stake.TerritoryName).Replace("{authcount}", stake.AuthorizedPlayers.Count.ToString())); } } } if (count != 0) { string spawnter; if (GetSpawnStake(player) == null) { spawnter = "NO SPAWN SET"; } else { spawnter = GetSpawnStake(player).TerritoryName; } PrintToChat(player, Msg("stakes", session.SteamId.ToString()).Replace("{count}", count.ToString()).Replace("{territory}", spawnter)); } else { PrintToChat(player, Msg("nostakes", session.SteamId.ToString())); } } if (args.Length == 1) { bool found = false; foreach (OwnershipStakeServer stake in Resources.FindObjectsOfTypeAll <OwnershipStakeServer>()) { if (stake.AuthorizedPlayers.Contains(session.Identity) && stake.isActiveAndEnabled) { count++; if (Convert.ToInt32(args[0]) == count) { if (stake == null) { return; } OwnershipStakeServer OriginalStake = GetSpawnStake(player); if (OriginalStake != null) { OriginalStake.SpawnPlayers.Remove(session.Identity); } if (!stake.SpawnPlayers.Contains(session.Identity)) { stake.SpawnPlayers.Add(session.Identity); } PrintToChat(player, Msg("spawnset", session.SteamId.ToString()).Replace("{stake}", args[0]).Replace("{territory}", stake.TerritoryName)); found = true; return; } } } if (count == 0) { PrintToChat(player, Msg("nostakes", session.SteamId.ToString())); return; } if (!found) { PrintToChat(player, Msg("nostakeexists", session.SteamId.ToString()).Replace("{id}", args[0])); return; } } } else { PrintToChat(player, Msg("nopermission", session.SteamId.ToString())); } }
private void cmdTotem(PlayerSession player, string command, string[] args) { if (!permission.UserHasPermission(player.SteamId.ToString(), permissionTotem)) { hurt.SendChatMessage(player, GetMessage("Not Allowed", player.SteamId.ToString())); return; } PlayerIdentity identity = player.Identity; ulong steamID = player.SteamId.m_SteamID; if (args == null || args.Length == 0) { if (UnityEngine.Time.realtimeSinceStartup - lastRefresh[steamID] > floatTotemRefresh) { RefreshTotem(identity); } int o = 0; hurt.SendChatMessage(player, GetMessage("Select a totem", player.SteamId.ToString()).Replace("{refresh}", UnityEngine.Mathf.Ceil(floatTotemRefresh - (UnityEngine.Time.realtimeSinceStartup - lastRefresh[steamID])).ToString())); foreach (OwnershipStakeServer stake in cashedTotems[steamID]) { if (stake.AuthorizedPlayers.Contains(identity)) { hurt.SendChatMessage(player, string.Format("{0} - {1}", o.ToString(), stake.TerritoryName)); o++; } } if (o == 0) { hurt.SendChatMessage(player, GetMessage("No Totems Found", player.SteamId.ToString())); } } else { if (UnityEngine.Time.realtimeSinceStartup - lastSelection[steamID] < floatTotemSelectCooldown) { hurt.SendChatMessage(player, GetMessage("Last Selection Cooldown", player.SteamId.ToString()).Replace("{cooldown}", UnityEngine.Mathf.Ceil(floatTotemSelectCooldown - (UnityEngine.Time.realtimeSinceStartup - lastSelection[steamID])).ToString())); return; } int arg = 0; if (!int.TryParse(args[0], out arg)) { hurt.SendChatMessage(player, GetMessage("/totem TOTEMID", player.SteamId.ToString())); return; } if (!cashedTotems.ContainsKey(steamID)) { hurt.SendChatMessage(player, GetMessage("Use /totem", player.SteamId.ToString())); return; } if (cashedTotems[steamID][arg] == null) { hurt.SendChatMessage(player, GetMessage("Totem doesnt exist", player.SteamId.ToString())); return; } if (!cashedTotems[steamID][arg].AuthorizedPlayers.Contains(identity)) { hurt.SendChatMessage(player, GetMessage("No longer authorized", player.SteamId.ToString())); return; } List <OwnershipStakeServer> all = RefTrackedBehavior <OwnershipStakeServer> .GetAll(); for (int p = 0; p < all.Count; p++) { OwnershipStakeServer staked = all[p]; staked.SpawnPlayers.Remove(identity); invalidate.Invoke(staked, null); } cashedTotems[steamID][arg].SpawnPlayers.Add(identity); invalidate.Invoke(cashedTotems[steamID][arg], null); hurt.SendChatMessage(player, GetMessage("Set Spawn", player.SteamId.ToString()).Replace("{totem}", cashedTotems[steamID][arg].TerritoryName)); lastSelection[steamID] = UnityEngine.Time.realtimeSinceStartup; } }