Ejemplo n.º 1
0
        public List <CreatureAI> Spawn(SpawnEvent spawnEvent)
        {
            List <Body> bodies =
                spawnEvent.SpawnFaction.GenerateRandomSpawn(spawnEvent.NumCreatures, spawnEvent.WorldLocation);
            List <CreatureAI> toReturn = new List <CreatureAI>();

            foreach (Body body in bodies)
            {
                List <CreatureAI> creatures = body.GetChildrenOfTypeRecursive <CreatureAI>();
                foreach (CreatureAI creature in creatures)
                {
                    if (spawnEvent.Attack)
                    {
                        CreatureAI enemyMinion = spawnEvent.TargetFaction.GetNearestMinion(creature.Position);
                        if (enemyMinion != null)
                        {
                            creature.Tasks.Add(new KillEntityTask(enemyMinion.Physics, KillEntityTask.KillType.Auto));
                        }
                    }
                    else
                    {
                        Room nearestRoom = spawnEvent.TargetFaction.GetNearestRoom(creature.Position);
                        if (nearestRoom != null)
                        {
                            creature.Tasks.Add(new ActWrapperTask(new GoToZoneAct(creature, nearestRoom)));
                        }
                    }
                    toReturn.Add(creature);
                }
            }

            return(toReturn);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// If our player spawned and loaded everything.
        /// </summary>
        /// <param name="player"></param>
        /// <param name="se"></param>
        public void OnPlayerSpawned(Fougerite.Player player, SpawnEvent se)
        {
            if (RBConnectionList.ContainsKey(player.UID))
            {
                var data = RBConnectionList[player.UID];
                CurrentOnlinePlayers[player.UID] = data;                                 // Lets store the player for later use.

                Dictionary <ulong, string> IDandHWID = new Dictionary <ulong, string>(); // Create a dictionary to send to the client side.


                Dictionary <ulong, API.RustBusterUserAPI> CopiedDictionary = new Dictionary <ulong, API.RustBusterUserAPI>(CurrentOnlinePlayers);
                // Start looping through the dictionary by copying It, so we wont interfere with other for cycles. (Copying is the new Dictionary() above^)
                foreach (var x in CopiedDictionary.Keys)
                {
                    IDandHWID[x] = CopiedDictionary[x].HardwareID;
                }

                // UDP, using uLink's RPC API. Server -> Client. (Only possible by uLink's API, because RB doesn't support Server to Client connections.)
                networkView.RPC("ReceiveHardwareIDData", UnityEngine.RPCMode.Others, CopiedDictionary);

                //You can send RPC to a specific player too using this code:
                uLink.NetworkView.Get(player.PlayerClient.networkView).RPC("YourOwnRandomString", player.NetworkPlayer, RandomString(8));

                RBConnectionList.Remove(player.UID); // Remove player from the temp list.
            }
        }
Ejemplo n.º 3
0
 public void Handle(SpawnEvent message)
 {
     //游戏单位建造事件
     //Debug.Log(message.getObject());//获取建造出来的单位
     //更多详细信息的话,比如
     if (message.hasRoadEnd())//对象是否是人,如果是人就会有目的地距离啥的
     {
         characterList.Add(message.getObject());
     }
     else
     {
         vehicleList.Add(message.getObject());
     }
     message.getDistance(delegate(float d) {
         print("距离 : " + d);
     });
     if (message.hasRoadEnd() && message.getObjectOwner() != owner)
     {
         //if (IDs.getIDByName(Tags.Character.GATEWORKER) == message.getObjectID()) {
         Vector3 tempv = message.getObject().GetComponent <Roadmovable>().getTargetPosition();
         print("坐标: " + tempv);
         if (tempv.z > 135)
         {
             gameID = IDs.getIDByName(Tags.Character.GUNNER);
             if (cdAndGoldIsOK(gameID))
             {
                 UnityEvent.UnityEventCenter.SendMessage <CreateUnitEvent>(new CreateUnitEvent(gameID, new Vector3(15.5f, 0, 13.2f) + subPos, owner, mineList[0]));
                 //  }
             }
         }
     }
 }
Ejemplo n.º 4
0
 public SongData(float lowerBound, float upperBound, int amountOfEvents, SpawnEvent type)
 {
     this.lowerBound     = lowerBound;
     this.upperBound     = upperBound;
     this.amountOfEvents = amountOfEvents;
     this.type           = type;
 }
Ejemplo n.º 5
0
        private void OnPlayerSpawned(Fougerite.Player player, SpawnEvent se)
        {
            if (SpawnedUsers.Contains(player.UID))
            {
                foreach (var x in RestrictedCommands)
                {
                    player.RestrictCommand(x);
                }

                Dictionary <string, object> Data    = new Dictionary <string, object>();
                PrivilegeStorage            storage = new PrivilegeStorage(player.Admin, player.Moderator);

                if (player.Admin)
                {
                    player.ForceAdminOff(true);
                }

                if (player.Moderator)
                {
                    player.ForceModeratorOff(true);
                }

                Data["Player"] = player;
                CreateParallelTimer(TimeToLogin * 1000, Data).Start();
                WaitingUsers.Add(player.UID, storage);
                DataStore.GetInstance().Add("AuthMeLogin", player.UID, true);
                SpawnedUsers.Remove(player.UID);
            }
        }
Ejemplo n.º 6
0
    /// <summary>
    /// Server-side only. For use when a player has only joined (as a JoinedViewer) and
    /// is not in control of any mobs. Spawns the joined viewer as the indicated occupation and transfers control to it.
    /// Note that this doesn't take into account game mode or antags, it just spawns whatever is requested.
    /// </summary>
    /// <param name="request">holds the request data</param>
    /// <param name="joinedViewer">viewer who should control the player</param>
    /// <param name="occupation">occupation to spawn as</param>
    /// <param name="characterSettings">settings to use for the character</param>
    /// <returns>the game object of the spawned player</returns>
    public static GameObject ServerSpawnPlayer(PlayerSpawnRequest request, JoinedViewer joinedViewer, Occupation occupation, CharacterSettings characterSettings, bool showBanner = true)
    {
        if (ValidateCharacter(request) == false)
        {
            return(null);
        }

        NetworkConnection conn = joinedViewer.connectionToClient;

        // TODO: add a nice cutscene/animation for the respawn transition
        var newPlayer = ServerSpawnInternal(conn, occupation, characterSettings, null, showBanner: showBanner);

        if (newPlayer != null && occupation.IsCrewmember)
        {
            CrewManifestManager.Instance.AddMember(newPlayer.GetComponent <PlayerScript>(), occupation.JobType);
        }

        if (SpawnEvent != null)
        {
            SpawnEventArgs args = new SpawnEventArgs()
            {
                player = newPlayer
            };
            SpawnEvent.Invoke(null, args);
        }

        return(newPlayer);
    }
 private void OnSpawned(SpawnEvent e)
 {
     if (e.Entity is PlayerShip ship)
     {
         player = ship;
     }
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Override times in a manner that the phase englobes the targets present in the phase (if possible)
 /// </summary>
 /// <param name="log"></param>
 internal void OverrideTimes(ParsedEvtcLog log)
 {
     if (Targets.Count > 0)
     {
         long end   = long.MinValue;
         long start = long.MaxValue;
         foreach (AbstractSingleActor target in Targets)
         {
             long       startTime = target.FirstAware;
             SpawnEvent spawned   = log.CombatData.GetSpawnEvents(target.AgentItem).FirstOrDefault();
             if (spawned != null)
             {
                 startTime = spawned.Time;
             }
             EnterCombatEvent enterCombat = log.CombatData.GetEnterCombatEvents(target.AgentItem).FirstOrDefault();
             if (enterCombat != null)
             {
                 startTime = enterCombat.Time;
             }
             long      deadTime = target.LastAware;
             DeadEvent died     = log.CombatData.GetDeadEvents(target.AgentItem).FirstOrDefault();
             if (died != null)
             {
                 deadTime = died.Time;
             }
             start = Math.Min(start, startTime);
             end   = Math.Max(end, deadTime);
         }
         Start = Math.Max(Math.Max(Start, start), 0);
         End   = Math.Min(Math.Min(End, end), log.FightData.FightEnd);
     }
     DurationInM  = (End - Start) / 60000;
     DurationInMS = (End - Start);
     DurationInS  = (End - Start) / 1000;
 }
Ejemplo n.º 9
0
    //public Seq[] sequences;
    // Use this for initialization
    void Start()
    {
        var cz = GetComponent<CombatZone>();
        var wCount = 0;
        foreach (Wav wav in waves) {
            var w = new Wave();
            cz.spawnWaves.Add(w);
            cz.spawnWaves[wCount].delayNextSeq = wav.delaySeq;
            foreach (Seq seq in wav.sequences) {

                    var sq = new Sequence ();
                    cz.spawnWaves [wCount].spawnSeqs.Add (sq);
                    sq.delayNextEvent = seq.delay;
                    sq.pos = seq.pos;
                    for (int i=0; i<seq.amount; i ++) {
                            var e = new SpawnEvent ();//sq.spawnEvents[i];
                            e.enemyType = seq.eType;
                            e.equipped = seq.equipped;
                            e.paratrooper = seq.chute;
                            Vector2 p = transform.position;
                            e.offset = p + sq.pos + (seq.offset * i);
                            sq.spawnEvents.Add (e);
                    }

            }
            wCount++;
        }
    }
Ejemplo n.º 10
0
 static void OnPlayerSpawned(Fougerite.Player player, SpawnEvent se)
 {
     if (player.Name == "" || player.Name == " ")
     {
         player.Disconnect();
     }
     if (!UserIsLogged(player))
     {
         //player.Inventory.ClearAll();
         FreezePlayer(player);
         if (LanguageComponent.LanguageComponent.GetPlayerLang(player) == null)
         {
             AskLanguageTimer(player);
         }
         else
         {
             ShowLoginMessages(player);
         }
     }
     else
     {
         User user = Data.Globals.usersOnline.Find(x => x.Name == player.Name);
         if (user.SteamID != player.UID)
         {
             player.Notice("Ya estás conectado al servidor / Você já está conectado ao servidor.");
             player.Disconnect();
         }
     }
 }
Ejemplo n.º 11
0
    /// <summary>
    /// Server-side only. For use when a player has only joined (as a JoinedViewer) and
    /// is not in control of any mobs. Spawns the joined viewer as the indicated occupation and transfers control to it.
    /// Note that this doesn't take into account game mode or antags, it just spawns whatever is requested.
    /// </summary>
    /// <param name="joinedViewer">viewer who should control the player</param>
    /// <param name="occupation">occupation to spawn as</param>
    /// <param name="characterSettings">settings to use for the character</param>
    /// <returns>the game object of the spawned player</returns>
    public static GameObject ServerSpawnPlayer(JoinedViewer joinedViewer, Occupation occupation, CharacterSettings characterSettings)
    {
        NetworkConnection conn = joinedViewer.connectionToClient;

        // TODO: add a nice cutscene/animation for the respawn transition
        var newPlayer = ServerSpawnInternal(conn, occupation, characterSettings, null);

        if (newPlayer)
        {
            if (occupation.JobType != JobType.SYNDICATE &&
                occupation.JobType != JobType.AI)
            {
                SecurityRecordsManager.Instance.AddRecord(newPlayer.GetComponent <PlayerScript>(), occupation.JobType);
            }
        }

        if (SpawnEvent != null)
        {
            SpawnEventArgs args = new SpawnEventArgs()
            {
                player = newPlayer
            };
            SpawnEvent.Invoke(null, args);
        }

        return(newPlayer);
    }
Ejemplo n.º 12
0
        public override void Fire(GameState state, Queries queries)
        {
            var turret = queries.GetUnitById(SourceId);
            var pos    = turret.Position;
            var decal  = new SpawnEvent(pos, ObjectType.DecalExplosion);
            var blood  = new SpawnEvent(pos, ObjectType.ParticleBlood);

            Factory.Spawn(decal, state);
            Factory.Spawn(blood, state);

            var message = String.Format("{0} base destroyed!", turret.Side == Side.Player ? "Player" : "Enemy");

            HUDBehaviour.ShowMessage(message);

            var lanes         = F.Range(0, BalanceConsts.Lanes);
            var metrics       = F.Map(i => queries.GetLaneMetrics(i.ToString()), lanes);
            var playerHasBase = metrics.Any(m => m.PlayerBaseHealthPercentage > 0f);
            var enemyHasBase  = metrics.Any(m => m.EnemyBaseHealthPercentage > 0f);

            if (!playerHasBase)
            {
                state.Winner = Side.Enemy;
                HUDBehaviour.ShowLoseMessage("The enemy has won!");
                AudioPlayerBehaviour.PlaySound(SoundType.Defeat);
            }
            else if (!enemyHasBase)
            {
                state.Winner = Side.Player;
                HUDBehaviour.ShowWinMessage("You have won!");
                AudioPlayerBehaviour.PlaySound(SoundType.Victory);
            }
        }
Ejemplo n.º 13
0
 public void On_Spawn(Fougerite.Player player, SpawnEvent e)
 {
     if (ShouldRemoveLoadoutItemsAtConnect)
     {
         if (LoadoutEnabled == true)
         {
             player.Inventory.RemoveItem(36);
             player.Inventory.RemoveItem(37);
             player.Inventory.RemoveItem(38);
             player.Inventory.RemoveItem(39);
             player.Inventory.RemoveItem("M4", 1);
             player.Inventory.RemoveItem("P250", 1);
             player.Inventory.RemoveItem("556 Ammo", 250);
             player.Inventory.RemoveItem("9mm Ammo", 250);
             LoadoutEnabled = false;
         }
     }
     else if (PreventVanishBug)
     {
         if (DataStore.GetInstance().ContainsKey("Vanish", player.SteamID))
         {
             DataStore.GetInstance().Remove("Vanish", player.SteamID);
             player.Health += 100f;
         }
     }
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Call this to trigger the spawning of the loot. Will spawn one item per event, picking the item randomly
        /// per event using the defined weight. Every call will pick randomly again (but most of the time, the caller
        /// will destroy the LootSpawner too as you spawn loot from something only once)
        /// </summary>
        public void SpawnLoot()
        {
            Vector3 position = transform.position;

            SFXManager.PlaySound(SFXManager.Use.WorldSound, new SFXManager.PlayData()
            {
                Clip     = SpawnedClip,
                Position = position
            });

            //we go over all the events.
            for (int i = 0; i < Events.Length; ++i)
            {
                SpawnEvent Event = Events[i];

                //first iterate over all object to make a total weight value.
                int totalWeight = 0;
                foreach (var entry in Event.Entries)
                {
                    totalWeight += entry.Weight;
                }

                //if we don't have any weight just exit
                if (totalWeight == 0)
                {
                    continue;
                }

                //then go back again on all the object to build a lookup table based on percentage.
                List <InternalPurcentageEntry> lookupTable = new List <InternalPurcentageEntry>();
                float previousPercent = 0.0f;
                foreach (var entry in Event.Entries)
                {
                    float percent = entry.Weight / (float)totalWeight;
                    InternalPurcentageEntry percentageEntry = new InternalPurcentageEntry();
                    percentageEntry.Entry      = entry;
                    percentageEntry.Percentage = previousPercent + percent;

                    previousPercent = percentageEntry.Percentage;

                    lookupTable.Add(percentageEntry);
                }

                float rng = Random.value;
                for (int k = 0; k < lookupTable.Count; ++k)
                {
                    if (rng <= lookupTable[k].Percentage)
                    {
                        GameObject obj = new GameObject(lookupTable[k].Entry.Item.ItemName);
                        //GameObject obj = Instantiate(lookupTable[k].Entry.Item.WorldObjectPrefab);
                        var l = obj.AddComponent <Loot>();
                        l.Item = lookupTable[k].Entry.Item;

                        l.Spawn(position);

                        break;
                    }
                }
            }
        }
Ejemplo n.º 15
0
    //public Seq[] sequences;
    // Use this for initialization
    void Start()
    {
        var cz     = GetComponent <CombatZone>();
        var wCount = 0;

        foreach (Wav wav in waves)
        {
            var w = new Wave();
            cz.spawnWaves.Add(w);
            cz.spawnWaves[wCount].delayNextSeq = wav.delaySeq;
            foreach (Seq seq in wav.sequences)
            {
                var sq = new Sequence();
                cz.spawnWaves [wCount].spawnSeqs.Add(sq);
                sq.delayNextEvent = seq.delay;
                sq.pos            = seq.pos;
                for (int i = 0; i < seq.amount; i++)
                {
                    var e = new SpawnEvent();                                     //sq.spawnEvents[i];
                    e.enemyType   = seq.eType;
                    e.equipped    = seq.equipped;
                    e.paratrooper = seq.chute;
                    Vector2 p = transform.position;
                    e.offset = p + sq.pos + (seq.offset * i);
                    sq.spawnEvents.Add(e);
                }
            }
            wCount++;
        }
    }
Ejemplo n.º 16
0
 protected override bool InitCombatReplay(ParsedEvtcLog log)
 {
     if (base.InitCombatReplay(log))
     {
         // Trim
         DespawnEvent despawnCheck = log.CombatData.GetDespawnEvents(AgentItem).LastOrDefault();
         SpawnEvent   spawnCheck   = log.CombatData.GetSpawnEvents(AgentItem).LastOrDefault();
         DeadEvent    deathCheck   = log.CombatData.GetDeadEvents(AgentItem).LastOrDefault();
         AliveEvent   aliveCheck   = log.CombatData.GetAliveEvents(AgentItem).LastOrDefault();
         if (AgentItem.Type != AgentItem.AgentType.EnemyPlayer && deathCheck != null && (aliveCheck == null || aliveCheck.Time < deathCheck.Time))
         {
             CombatReplay.Trim(AgentItem.FirstAware, deathCheck.Time);
         }
         else if (despawnCheck != null && (spawnCheck == null || spawnCheck.Time < despawnCheck.Time))
         {
             CombatReplay.Trim(AgentItem.FirstAware, despawnCheck.Time);
         }
         else
         {
             CombatReplay.Trim(AgentItem.FirstAware, AgentItem.LastAware);
         }
         return(true);
     }
     return(false);
 }
    private IEnumerator SpawnEnemyWaveCoroutine(EnemyWaveData wave)
    {
        currentWaveSpawnEvents.Clear();
        currentWaveSpawnEvents.AddRange(wave.spawnEvents);
        activelySpawning = true;

        while (activelySpawning)
        {
            for (int i = 0; i < currentWaveSpawnEvents.Count - 1; i++)
            {
                SpawnEvent se         = currentWaveSpawnEvents[i];
                float      spawnDelay = Random.Range(se.preSpawnDelayMin, se.preSpawnDelayMax);
                yield return(new WaitForSeconds(spawnDelay));

                Transform spawnLocation = GetSpawnLocationFromSpawnEvent(se);
                SpawnEnemy(se.enemyPrefab, spawnLocation.position);

                // is this the last enemy to spawn in the wave?
                if (currentWaveSpawnEvents.Count > 0 &&
                    currentWaveSpawnEvents.Last() == se)
                {
                    activelySpawning = false;
                }
            }
            activelySpawning = false;
        }
    }
Ejemplo n.º 18
0
    public Pattern LoadPatternFromFile(string file)
    {
        Debug.Log("Loading pattern from file " + file);
        var pattern = new Pattern();
        var xml     = new XmlDocument();

        xml.LoadXml(File.ReadAllText(file));

        var patternNode = xml.SelectSingleNode("pattern");

        pattern.Length = float.Parse(patternNode.SelectSingleNode("length").InnerText);

        var spawnEvents = new List <SpawnEvent>();
        var spawns      = patternNode.SelectNodes("spawn");

        foreach (XmlNode spawnNode in spawns)
        {
            SpawnEvent spawn = new SpawnEvent(float.Parse(spawnNode.SelectSingleNode("distance").InnerText),
                                              spawnNode.SelectSingleNode("object").InnerText.Trim(),
                                              float.Parse(spawnNode.SelectSingleNode("ypos").InnerText),
                                              spawnNode.SelectSingleNode("parent").InnerText);
            spawnEvents.Add(spawn);
        }

        // sort the list before applying to the pattern as a queue
        spawnEvents.Sort(CompareByDistance);
        pattern.SpawnEvents = new Queue <SpawnEvent>(spawnEvents);

        return(pattern);
    }
Ejemplo n.º 19
0
    public void SpawnLoot()
    {
        if (Player == null)
        {
            return;
        }

        Vector3 position = transform.position;
        var     source   = AudioManager.GetWorldSFXSource();

        source.transform.position = position;
        source.PlayOneShot(SpawnedClip);

        for (int i = 0; i < Events.Length; ++i)
        {
            SpawnEvent spawnEvent = Events[i];

            int weightSum = 0;
            foreach (var entry in spawnEvent.Entries)
            {
                weightSum += entry.Weight;
            }

            if (weightSum == 0)
            {
                continue;
            }

            List <InternalPercentageEntry> lookUpTable = new List <InternalPercentageEntry>();
            float previousPercent = 0f;
            foreach (var entry in spawnEvent.Entries)
            {
                float percent = entry.Weight / (float)weightSum;
                InternalPercentageEntry percentageEntry = new InternalPercentageEntry();
                percentageEntry.Entry      = entry;
                percentageEntry.Percentage = previousPercent + percent;

                previousPercent = percentageEntry.Percentage;

                lookUpTable.Add(percentageEntry);
            }

            float range = Random.value;
            for (int k = 0; k < lookUpTable.Count; ++i)
            {
                if (range <= lookUpTable[k].Percentage)
                {
                    GameObject obj  = new GameObject(lookUpTable[k].Entry.Item.itemName);
                    var        loot = obj.AddComponent <Loot>();
                    loot.Item       = lookUpTable[k].Entry.Item;
                    loot.Player     = Player;
                    loot.PickupClip = LootPickUpClip;
                    loot.AggroRange = 2;
                    loot.Spawn(position);
                    break;
                }
            }
        }
    }
Ejemplo n.º 20
0
 public void OnPlayerSpawned(Fougerite.Player player, SpawnEvent se)
 {
     var location = player.Location;
     float x = player.X;
     float y = player.Y;
     float z = player.Z;
     player.TeleportTo(;
 }
Ejemplo n.º 21
0
 public void OnPlayerSpawned(Fougerite.Player pl, SpawnEvent se)
 {
     if (PoisonedIDs.Contains(pl.SteamID))
     {
         pl.AdjustPoisonLevel(AmountOfVenne);
         pl.MessageFrom(Name, red + "WARNING " + white + " You are still poisoned.");
     }
 }
Ejemplo n.º 22
0
 void OnPlayerSpawning(Fougerite.Player param0, SpawnEvent param1)
 {
     foreach (KeyValuePair <string, V8Plugin> plugin in plugins)
     {
         plugin.Value.Invoke("On_PlayerSpawned", param0, param1); // Deprecated
         plugin.Value.Invoke("OnPlayerSpawned", param0, param1);
     }
 }
Ejemplo n.º 23
0
 public void OnPlayerSpawned(Player p, SpawnEvent se)
 {
     this.Invoke("On_PlayerSpawned", new object[]
     {
         p,
         se
     });
 }
Ejemplo n.º 24
0
        private void OnPlayerSpawned(Fougerite.Player player, SpawnEvent se)
        {
            if (RespawnFlagKillList.Contains(player.SteamID))
            {
                player.TeleportTo(RespawnFlags[player.SteamID]);

                RespawnFlagKillList.Remove(player.SteamID);
            }
        }
        private void Spawning()
        {
            GameObject spawningObject = Instantiate(objectToSpawn);

            spawningObject.transform.position = transform.position;
            spawningObject.transform.rotation = transform.rotation;

            SpawnEvent?.Invoke(spawningObject.transform);
        }
Ejemplo n.º 26
0
    public override void OnMouseClick(Vector3 position)
    {
        var evnt = SpawnEvent.Create();

        evnt.TowerType = (int)_data.towerType;
        evnt.Position  = GridManager.Instance.GetCellCenterFromPosition(position);
        evnt.Send();
        InteractionManager.Instance.EndInteraction();
    }
Ejemplo n.º 27
0
    private void DoSpawnEvent(SpawnEvent spawnEvent)
    {
        //  Debug.Log("Spawning " + spawnEvent.ObjectName);
        Transform     t  = ObjectFactory.Instance.Instantiate(spawnEvent.ObjectName);
        ParallaxLayer pl = GameObject.Find(spawnEvent.Parent).GetComponent <ParallaxLayer>();

        t.SetParent(pl.GetLastTile().transform);
        t.position = new Vector3(ParallaxManager.Instance.GetRightEdge(), spawnEvent.YPosition + t.parent.position.y);
    }
Ejemplo n.º 28
0
    void OnSpawnTail(SpawnEvent data)
    {
        Debug.Log("Spawn tail");
        SnakeComponent      snake   = _world.GetComponent <SnakeComponent> (_snakeEntity);
        GameObjectComponent snakeGO = _world.GetComponent <GameObjectComponent> (_snakeEntity);
        GameObject          tail    = GameObject.Instantiate(_tailPrefab, snakeGO.Transform.localPosition, Quaternion.identity);

        snake.Tail.Insert(0, tail.transform);
    }
Ejemplo n.º 29
0
        public override void Fire(GameState state, Queries queries)
        {
            var decal = new SpawnEvent(Position, ObjectType.DecalBlood);
            var blood = new SpawnEvent(Position, ObjectType.ParticleBlood);

            Factory.Spawn(decal, state);
            Factory.Spawn(blood, state);

            AudioPlayerBehaviour.PlaySound(SoundType.Splat);
        }
Ejemplo n.º 30
0
 public void Spawned(Player pl, SpawnEvent se)
 {
     if (ds.ContainsKey("inmates", pl.SteamID))
     {
         var dict = new Dictionary <string, object>();
         dict["user"] = pl;
         Spawntimer(3 * 1000, dict).Start();
         pl.MessageFrom(Name, "Teleporting back to jail in 3 seconds");
     }
 }
Ejemplo n.º 31
0
        public static void PlayerSpawned(PlayerClient pc, Vector3 pos, bool camp)
        {
            Magma.Player player = Magma.Player.FindByPlayerClient(pc);
            SpawnEvent   se     = new SpawnEvent(pos, camp);

            if ((OnPlayerSpawned != null) && (player != null))
            {
                OnPlayerSpawned(player, se);
            }
        }
Ejemplo n.º 32
0
        // --- Constructors ---
        public Actor(GameExt pmGame, Model pmModel, Vector3 pmPos)
        {
            game=	pmGame;
            bAlive=	true;
            model=	pmModel;
            world=	Matrix.Identity;
            color=	Color.White;
            texture=	null;

            eonRespawn=	null;
            eonDeath=	null;

            pos=	pmPos;
        }
Ejemplo n.º 33
0
    public void Fire(OmniObject player)
    {
        if (Network.isClient)
            return;

        Vector2 vel = new Vector2(Mathf.Cos(player.fireAngle * Mathf.Deg2Rad) * (player.mount2time * 3) * str, Mathf.Sin(player.fireAngle * Mathf.Deg2Rad) * (player.mount2time * 3) * str);
        if (player.flipped)
            vel.x *= -1;
        Matrix4x4 tr = player.itemMatrix[0];

        Vector3 pos = tr.MultiplyPoint(Vector3.zero);

        SpawnEvent e = new SpawnEvent(OmniWorld.tick, OmniItems.itemTypes[player.mount2].name, pos, vel, -1, true, typeof(DamageableObject));
        OmniEvents.AddEvent(e);
    }
Ejemplo n.º 34
0
    public override void handle(int tick)
    {
        base.handle(tick);

        if (handled)
        {

            int posX = -1;
            int posY = -1;
            /*
            string[] args = loadPost.text.Split(':');
            for (int i = 0; i < args.Length; i++)
            {
                string[] item = args[i].Split(',');
                if (item.Length > 1)
                {
                    if (item[0] == "Name")
                        name = item[1];
                    else if (item[0] == "PosX")
                        posX = int.Parse(item[1]);
                    else if (item[0] == "PosY")
                        posY = int.Parse(item[1]);
                    else if (item[0] == "GUID")
                        guid = item[1];

                }

            }
             * */
            Vector2 spawnPos;
            if (posX == -1 || posY == -1) //new character
            {
                spawnPos = OmniWorld.getSpawnPoint();
            }
            else
            {
                spawnPos = new Vector2(posX, posY);
            }
            SpawnEvent e = new SpawnEvent(OmniWorld.tick, "Bob",name, spawnPos, Vector2.zero, OmniWorld.GetSpawnID(), typeof(ClientControllable));
            e.player = player;
            e.onHandle += PlayerSpawned;
            OmniEvents.AddEvent(e);
        }
    }
Ejemplo n.º 35
0
    public void CheckCommands()
    {
        //        bool enter = ConsoleCommand.Contains("\r") || ConsoleCommand.Contains("\n");
        //        if (enter)
        //        {
            if (ConsoleCommand.Length > 0)
            {

                string[] cmd = ConsoleCommand.Split(' ');
                if (cmd[0] == "host")
                {
                    if (cmd.Length > 1)
                    {
                        int port = Int16.Parse(cmd[1]);
                        Network.InitializeServer(128, port,false);
                    }
                }
                else if (cmd[0] == "connect")
                {
                    if (cmd.Length > 1)
                    {
                        string[] address = cmd[1].Split(':');
                        if (address.Length > 1)
                        {
                            OmniWorld.Clear();
                            int port = Int16.Parse(address[1]);
                            Network.Connect(address[0], port);
                        }
                    }
                }

                else if (cmd[0] == "omnigive")
                {
                      //OmniWorld.netView.RPC("giveItem", RPCMode.Server, Network.player, cmd[1], int.Parse(cmd[2])); //HAX
                        if (Network.isClient)
                            OmniWorld.netView.RPC("giv", RPCMode.Server, Network.player);
                        else
                        {
                            int[] giv = new int[OmniItems.itemTypes.Length * 2];
                            int c = 0;
                            for (int i = 0; i < OmniItems.itemTypes.Length; i++)
                            {
                                giv[c++] = OmniItems.itemTypes[i].id;
                                giv[c++] = 1;
                            }
                            InventoryEvent e = new InventoryEvent(OmniWorld.tick, OmniLocal.LocalID, 'a', giv);
                            OmniEvents.AddEvent(e);
                        }
                }

                else if (cmd[0] == "spawn")
                {
                    if (cmd.Length > 1)
                    {
                        if (Network.isClient)
                        {
                            OmniWorld.netView.RPC("SpawnHax", RPCMode.Server, Network.player, cmd[1].Trim()); //HAX
                        }
                        else
                        {
                           // new NetworkEvent(0);\
                            if (OmniItems.getItem(cmd[1].Trim()) >= 0)
                            {
                                OmniObject localplayer = OmniLocal.getLocalPlayer();
                                SpawnEvent e = new SpawnEvent(OmniWorld.tick, cmd[1].Trim(),null, new Vector2(localplayer.bounds.x, localplayer.bounds.y + 4),Vector2.zero, -1, typeof(ControllableObject));
                                e.onHandle += ConsoleSpawn;
                                OmniEvents.AddEvent(e);
                            }
                        }

                    }
                }

                else if (cmd[0] == "delay")
                {

                    OmniWorld.netView.RPC("delay", RPCMode.All, int.Parse(cmd[1]));
                }
                else if (cmd[0] == "ms")
                {
                    if (Network.isServer)
                        MasterServer.RegisterHost("OmniDig", "OmniDig", "OmniDig");
                    else
                    {
                        MasterServer.RequestHostList("OmniDig");
                        HostData[] d = MasterServer.PollHostList();
                    }
                }

                ConsoleCommand = "";
          //  }
        }
    }
Ejemplo n.º 36
0
 public override void OnUse(ControllableObject player, Vector3 pos)
 {
     if (!Network.isClient)
     {
         SpawnEvent e = new SpawnEvent(OmniWorld.tick, gameObject.name,gameObject.name, pos,Vector2.zero, -1, typeof(ControllableObject));
         OmniEvents.AddEvent(e);
     }
 }
Ejemplo n.º 37
0
    public void StartWorld()
    {
        ClearWorld();

         if (OmniNetwork.Dedicated)
             Network.InitializeServer(128, 7777, false);

         if (!OmniNetwork.Dedicated)
         {

             SpawnEvent e = new SpawnEvent(OmniWorld.tick + 2, "Bob","LocalPlayer", getSpawnPoint(), Vector2.zero, -1, typeof(ClientControllable));
             OmniLocal.LocalID = OmniWorld.GetSpawnID();
             OmniInventory.giveall(OmniLocal.LocalID);
             OmniEvents.AddEvent(e);
         }
         else
         {
             MasterServer.RegisterHost("OmniDigMMO", worldName, OmniLocal.localName);
         }
    }
Ejemplo n.º 38
0
    public override void OnUse(ControllableObject player, Vector3 pos2)
    {
        if (Network.isClient)
            return;

        bool flag = false;

        if(player.mountedTo != null)
        if (player.selected >= 0)
            if (player.bagItems[player.selected] != null)
                if (player.bagItems[player.selected].stack > 0)
                {
                    OmniItemType item = OmniItems.itemTypes[player.bagItems[player.selected].id];

                    Vector2 vel = new Vector2(Mathf.Cos((player.mountedTo.rotation + 90) * Mathf.Deg2Rad) * str, Mathf.Sin((player.mountedTo.rotation + 90) * Mathf.Deg2Rad) * str);
                    if (player.flipped)
                        vel.x *= -1;
                    Matrix4x4 tr = player.mountedTo.item.animList[0].skelMatrix2(player.mountedTo, player.mountedTo.Position, 1);

                    vel.x += player.mountedTo.vel.x;
                    vel.y += player.mountedTo.vel.y;

                    Vector2 pos = tr.MultiplyPoint(new Vector3(0,0,0));
                    pos.x -= item.Size / 2f;
                    pos.y -= item.Size / 2f;
                    pos += player.mountedTo.vel * OmniWorld.timeStep;
                    SpawnEvent e = new SpawnEvent(OmniWorld.tick, OmniItems.itemTypes[player.bagItems[player.selected].id].name, pos, vel, -1, true, typeof(DamageableObject));
                    e.firedBy = player.mountedTo;
                    OmniEvents.AddEvent(e);
                    flag = true;
                }
        if (!flag)
        base.OnUse(player, pos2);
    }
Ejemplo n.º 39
0
    void FullUpdate(int tick,int count, byte[] data)
    {
        if (data.Length == 1)
        {
            Debug.Log("Bad update");
            return;
        }
        MemoryStream buf = new MemoryStream(data);
        BinaryReader reader = new BinaryReader(buf);
        for (int i = 0; i < count; i++)
        {
            string name = reader.ReadString();
            string plname = reader.ReadString();
            string typename = reader.ReadString();
            int id = reader.ReadInt32();
            float x = reader.ReadSingle();
            float y = reader.ReadSingle();
            if (id == OmniLocal.LocalID)
                continue;
            SpawnEvent e = new SpawnEvent(tick, name,plname, new Vector2(x, y), Vector2.zero,id, Type.GetType(typename));
            OmniEvents.AddEvent(e);

        }
        reader.Close();
    }
Ejemplo n.º 40
0
 void SpawnHax(NetworkPlayer player, string name)
 {
     ControllableObject owner = connectedClients[player];
     SpawnEvent e = new SpawnEvent(OmniWorld.tick);
     e.target = name;
     e.onHandle += onClientSpawn;
     e.player = player;
     e.pos.x = owner.bounds.x;
     e.pos.y = owner.bounds.y;
     OmniEvents.AddEvent(e);
 }
Ejemplo n.º 41
0
        public void Spawn(SpawnEvent spawnEvent)
        {
            List<Body> bodies =
            spawnEvent.SpawnFaction.GenerateRandomSpawn(spawnEvent.NumCreatures, spawnEvent.WorldLocation);

            foreach (Body body in bodies)
            {
                List<CreatureAI> creatures = body.GetChildrenOfTypeRecursive<CreatureAI>();
                foreach (CreatureAI creature in creatures)
                {
                    CreatureAI enemyMinion = spawnEvent.TargetFaction.GetNearestMinion(creature.Position);
                    if (enemyMinion != null)
                    {
                        creature.Tasks.Add(new KillEntityTask(enemyMinion.Physics, KillEntityTask.KillType.Auto));
                    }
                }
            }
        }
Ejemplo n.º 42
0
    private void addSpawnEvent(BlobData blobData, float preferredSpawnTime, bool useFrequencySafeguard)
    {
        /*
        adds to the spawn event list, taking into account the direction and speed of the blobData

        useFrequencySafeguard ensures collisions will not be too close together
        */

        float spawnTime = preferredSpawnTime;
        if (useFrequencySafeguard) {
            float safeSpawnTime = getSafeSpawnTime (blobData);
            spawnTime = Mathf.Max (safeSpawnTime, preferredSpawnTime);
            if (spawnTime != preferredSpawnTime)
                Debug.Log ("info: used safeSpawnTime: " + safeSpawnTime + " instead of preferredSpawnTime: " + preferredSpawnTime);
        }

        SpawnEvent spawnEvent = new SpawnEvent (blobData, spawnTime);

        bool added = false;
        for (int i=0; i<spawnEvents.Count; i++) {
            SpawnEvent compareEvent = (SpawnEvent)spawnEvents [i];
            if (spawnEvent.time < compareEvent.time) {
                spawnEvents.Insert (i, spawnEvent);
                added = true;
                break;
            }
        }

        if (!added)
            spawnEvents.Add (spawnEvent);
    }
Ejemplo n.º 43
0
        public List<CreatureAI> Spawn(SpawnEvent spawnEvent)
        {
            List<Body> bodies =
            spawnEvent.SpawnFaction.GenerateRandomSpawn(spawnEvent.NumCreatures, spawnEvent.WorldLocation);
            List<CreatureAI> toReturn = new List<CreatureAI>();
            foreach (Body body in bodies)
            {
                List<CreatureAI> creatures = body.GetChildrenOfTypeRecursive<CreatureAI>();
                foreach (CreatureAI creature in creatures)
                {
                    if (spawnEvent.Attack)
                    {
                        CreatureAI enemyMinion = spawnEvent.TargetFaction.GetNearestMinion(creature.Position);
                        if (enemyMinion != null)
                        {
                            creature.Tasks.Add(new KillEntityTask(enemyMinion.Physics, KillEntityTask.KillType.Auto));
                        }
                    }
                    else
                    {
                        Room nearestRoom = spawnEvent.TargetFaction.GetNearestRoom(creature.Position);
                        if (nearestRoom != null)
                        {
                            creature.Tasks.Add(new ActWrapperTask(new GoToZoneAct(creature, nearestRoom)));
                        }
                    }
                    toReturn.Add(creature);
                }
            }

            return toReturn;
        }
Ejemplo n.º 44
0
 public override void OnUse(ControllableObject player, Vector3 pos)
 {
     SpawnEvent e = new SpawnEvent(OmniWorld.tick, this.name, player.Name + "'s " + this.name, pos, Vector2.zero, -1, typeof(VehicleObject));
     OmniEvents.AddEvent(e);
     base.OnUse(player, pos);
 }
Ejemplo n.º 45
0
 public void addSpawnEvent(SpawnEvent spawnEvent)
 {
     events.Add (spawnEvent);
 }