예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
            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);
                }
            }
예제 #5
0
        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()));
            }
        }
예제 #6
0
        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;
            }
        }