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); }
/// <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. } }
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])); // } } } } }
public SongData(float lowerBound, float upperBound, int amountOfEvents, SpawnEvent type) { this.lowerBound = lowerBound; this.upperBound = upperBound; this.amountOfEvents = amountOfEvents; this.type = type; }
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); } }
/// <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; } }
/// <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; }
//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++; } }
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(); } } }
/// <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); }
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); } }
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; } } }
/// <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; } } } }
//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++; } }
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; } }
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); }
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; } } } }
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(; }
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."); } }
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); } }
public void OnPlayerSpawned(Player p, SpawnEvent se) { this.Invoke("On_PlayerSpawned", new object[] { p, se }); }
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); }
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(); }
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); }
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); }
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); }
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"); } }
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); } }
// --- 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; }
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); }
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); } }
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 = ""; // } } }
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); } }
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); } }
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); }
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(); }
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); }
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)); } } } }
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); }
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; }
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); }
public void addSpawnEvent(SpawnEvent spawnEvent) { events.Add (spawnEvent); }