public virtual void LoadOut(Player player) { player.clearWeaponCycle(); player.setInventory("Ryder", 1); player.setInventory("RyderClip", player.maxInventory("RyderClip")); player.setInventory("RyderAmmo", player.maxInventory("RyderAmmo")); player.addToWeaponCycle("Ryder"); player.setInventory("Lurker", 1); player.setInventory("LurkerClip", player.maxInventory("LurkerClip")); player.setInventory("LurkerAmmo", player.maxInventory("LurkerAmmo")); player.addToWeaponCycle("Lurker"); player.setInventory("LurkerGrenadeLauncher", 1); player.setInventory("LurkerGrenadeAmmo", player.maxInventory("LurkerGrenadeAmmo")); player.addToWeaponCycle("LurkerGrenadeLauncher"); player.setInventory("ProxMine", player.maxInventory("ProxMine")); player.addToWeaponCycle("ProxMine"); player.setInventory("DeployableTurret", player.maxInventory("DeployableTurret")); player.addToWeaponCycle("DeployableTurret"); SimDataBlock playerdatablock = player.getDataBlock(); string junk = playerdatablock["mainWeapon.image"]; player.mountImage(junk == string.Empty ? "LurkerWeaponImage" : junk, 0, true, string.Empty); //ShapeBase.mountImage(player, junk == "" ? junk : "LurkerWeaponImage", 0, true, ""); }
public static void serverCmddismountVehicle(GameConnection client) { Player player = client["player"]; Vehicle car = player.getControlObject(); Player passenger = car.getMountNodeObject(0); ((PlayerData)passenger.getDataBlock()).doDismount(passenger); client.setControlObject(player); }
public override void onRemove(GameBase obj) { for (int i = 0; i < this["numMountPoints"].AsInt(); i++) { if (obj.getMountNodeObject(i) == 0) { continue; } Player passenger = obj.getMountNodeObject(i).AsString(); //change to csharp ((TurretShapeData)passenger.getDataBlock()).call("doDismount", true.AsString()); } }
public virtual TransformF PointInSpawnSphere(Player objectToSpawn, SpawnSphere spawnSphere) { bool spawnLocationFound = false; int attemptsToSpawn = 0; TransformF spherLocationP3F = new TransformF(); while (!spawnLocationFound && attemptsToSpawn < 5) { spherLocationP3F = spawnSphere.getTransform(); Random r = new Random(); float angleY = (float)tMath.mDegToRad((r.NextDouble() * 100) * tMath.M_2PI_F); float angleXZ = (float)tMath.mDegToRad((r.NextDouble() * 100) * tMath.M_2PI_F); int radius = spawnSphere["radius"].AsInt(); spherLocationP3F.mPositionX += (float)(Math.Cos(angleY) * Math.Sin(angleXZ) * (r.Next(radius * -1, radius))); spherLocationP3F.mPositionY += (float)(Math.Cos(angleXZ) * (r.Next(radius * -1, radius))); spawnLocationFound = true; // Now have to check that another object doesn't already exist at this spot. // Use the bounding box of the object to check if where we are about to spawn in is // clear. TransformF boundingboxsize = new TransformF(((SimDataBlock)objectToSpawn.getDataBlock())["boundingBox"]); float searchRadius = boundingboxsize.mPositionX; float boxSizeY = boundingboxsize.mPositionY; if (boxSizeY > searchRadius) { searchRadius = boxSizeY; } List <UInt32> objectsfound = console.ContainerRadiusSearch(spherLocationP3F.GetPosition(), searchRadius, (UInt32)SceneObjectTypesAsUint.PlayerObjectType, false); if (objectsfound.Count > 0) { spawnLocationFound = false; } attemptsToSpawn++; } if (!spawnLocationFound) { spherLocationP3F = spawnSphere.getTransform(); console.warn("WARNING: Could not spawn player after 5 times"); } return(spherLocationP3F); }
public override void onRemove(GameBase obj) { // if there are passengers/driver, kick them out for (int i = 0; i < ((VehicleData)obj.getDataBlock())["numMountPoints"].AsInt(); i++) { if (!((SimObject)obj.getMountNodeObject(i)).isMemberOfClass("Player")) { continue; } Player passenger = obj.getMountNodeObject(i); if (passenger != "0") { PlayerData passengerdatablock = passenger.getDataBlock(); passengerdatablock.doDismount(passenger); } } }
public static void serverCmdcarUnmountObj(GameConnection client, Player obj) { obj.unmount(); obj.setControlObject(obj); TransformF ejectpos = obj.getTransform(); ejectpos += new TransformF(0, 0, 5); obj.setTransform(ejectpos); Vehicle mvehicle = obj["mVehicle"]; Point3F ejectvel = mvehicle.getVelocity(); ejectvel += new Point3F(0, 0, 10); ejectvel = ejectvel.vectorScale(((SimDataBlock)(obj.getDataBlock()))["mass"].AsFloat()); obj.applyImpulse(ejectpos.GetPosition(), ejectvel); }
public virtual TransformF PointInSpawnSphere(Player objectToSpawn, SpawnSphere spawnSphere) { bool spawnLocationFound = false; int attemptsToSpawn = 0; TransformF spherLocationP3F = new TransformF(); while (!spawnLocationFound && attemptsToSpawn < 5) { spherLocationP3F = spawnSphere.getTransform(); Random r = new Random(); float angleY = (float) tMath.mDegToRad((r.NextDouble()*100)*tMath.M_2PI_F); float angleXZ = (float) tMath.mDegToRad((r.NextDouble()*100)*tMath.M_2PI_F); int radius = spawnSphere["radius"].AsInt(); spherLocationP3F.mPositionX += (float) (Math.Cos(angleY)*Math.Sin(angleXZ)*(r.Next(radius*-1, radius))); spherLocationP3F.mPositionY += (float) (Math.Cos(angleXZ)*(r.Next(radius*-1, radius))); spawnLocationFound = true; // Now have to check that another object doesn't already exist at this spot. // Use the bounding box of the object to check if where we are about to spawn in is // clear. TransformF boundingboxsize = new TransformF(((SimDataBlock) objectToSpawn.getDataBlock())["boundingBox"]); float searchRadius = boundingboxsize.mPositionX; float boxSizeY = boundingboxsize.mPositionY; if (boxSizeY > searchRadius) searchRadius = boxSizeY; List<UInt32> objectsfound = console.ContainerRadiusSearch(spherLocationP3F.GetPosition(), searchRadius, (UInt32) SceneObjectTypesAsUint.PlayerObjectType, false); if (objectsfound.Count > 0) spawnLocationFound = false; attemptsToSpawn++; } if (!spawnLocationFound) { spherLocationP3F = spawnSphere.getTransform(); console.warn("WARNING: Could not spawn player after 5 times"); } return spherLocationP3F; }
public virtual bool SpawnPlayer(string spawnpoint, bool nocontrol) { Player player = this["player"]; if (player.isObject()) { console.error("Attempting to create a player for a client that already has one!"); return(false); } if ((spawnpoint.Split(' ').GetUpperBound(0) == 0) && (spawnpoint.isObject())) { // Attempt to treat %spawnPoint as an object string spawnclass = sGlobal["$Game::DefaultPlayerClass"]; string spawndatablock = sGlobal["$Game::DefaultPlayerDataBlock"]; SimObject ospawnpoint = spawnpoint; // Overrides by the %spawnPoint if (ospawnpoint["spawnClass"] != "") { spawnclass = ospawnpoint["spawnClass"]; //spawndatablock = ospawnpoint["spawnDataBlock"]; } else if (ospawnpoint["spawnDatablock"] != "") { // This may seem redundant given the above but it allows // the SpawnSphere to override the datablock without // overriding the default player class spawndatablock = ospawnpoint["spawnDatablock"]; } string spawnproperties = ospawnpoint["spawnProperties"]; string spawnScript = ospawnpoint["spawnScript"]; // Spawn with the engine's Sim::spawnObject() function player = Util.spawnObject(spawnclass, spawndatablock, "", spawnproperties, spawnScript, typeof(Player).FullName); //player.TickCounterNotifyServer = true; //player.TickCounterAdd("TestCheck", 100); //player.TickNotifyBefore = true; //player.TickNotifyClient = true; //player.TickNotifyServer = true; //player.TickNotifyBefore = true; // If we have an object do some initial setup if (console.isObject(player)) { // Pick a location within the spawn sphere. player.setTransform(PointInSpawnSphere(player, (spawnpoint))); } else { // If we weren't able to create the player object then warn the user // When the player clicks OK in one of these message boxes, we will fall through // to the "if (!isObject(%player))" check below. if (console.GetVarString(spawndatablock).Trim() != "") { console.warn("Unable to create a player with class " + spawnclass + " and datablock " + spawndatablock + ".\n\nStarting as an Observer instead."); } else { console.warn("Unable to create a player with class " + spawnclass + ".\n\nStarting as an Observer instead."); } } } else { // Create a default player player = console.SpawnObject(sGlobal["$Game::DefaultPlayerClass"], sGlobal["$Game::DefaultPlayerDataBlock"], string.Empty, string.Empty, string.Empty); if (player.isMemberOfClass("Player")) { //if (SimObject.SimObject_isMemberOfClass(player, "Player")) console.warn("Trying to spawn a class that does not derive from player!!!!!"); } // Treat %spawnPoint as a transform player.setTransform(new TransformF(spawnpoint)); } // Update the default camera to start with the player if (!console.isObject(player)) { this["spawnCamera"] = spawnpoint; return(false); } ((SimSet)"MissionCleanup").pushToBack(player); // Update the default camera to start with the player // Store the client object on the player object for // future reference player["client"] = this; // If the player's client has some owned turrets, make sure we let them // know that we're a friend too. if (this["ownedTurrets"].AsInt() >= 1) { SimSet turrets = this["ownedTurrets"]; for (uint i = 0; i < turrets.getCount(); i++) { ((AITurretShape)turrets.getObject(i)).addToIgnoreList(player); } } player.setShapeName(this["playerName"]); SimDataBlock playerdata = player.getDataBlock(); player.setEnergyLevel(playerdata["maxEnergy"].AsFloat()); if (this["skin"] != string.Empty) { string availableSkins = playerdata["availableSkins"]; foreach (GameConnection other in ClientGroup.Where(other => other != this)) { availableSkins = availableSkins.Replace(console.GetVarString(other + ".skin"), " "); availableSkins = availableSkins.Replace(" ", " "); } List <string> availskin = availableSkins.Split('\t').ToList(); if (availskin.Count > 0) { int r = new Random().Next(0, availskin.Count - 1); this["skin"] = availskin[r]; } } player.setSkinName(this["skin"]); this["player"] = player; console.error("--->Player ID is " + player); SimObject control = null; if (console.GetVarString("$startWorldEditor") == "1") { control = this["camera"]; Camera c = this["camera"]; c.setMode("Fly"); console.Call("EditorGui", "syncCameraGui"); } else { control = player; } if (!nocontrol) { this.setControlObject(control); } int team = new Random().Next(1, 2); player.AddObjectTo_MobSearchGroup(team); message.MessageClient(this, "System", "Your on Team " + team); console.error(DateTime.Now + " --- PLAYER JOIN::Name '" + Util.StripMLControlChars(player.getShapeName()) + "'::ID '" + player + "'"); return(true); }
public static void serverCmdcarUnmountObj(GameConnection client, Player obj) { obj.unmount(); obj.setControlObject(obj); TransformF ejectpos = obj.getTransform(); ejectpos += new TransformF(0, 0, 5); obj.setTransform(ejectpos); Vehicle mvehicle = obj["mVehicle"]; Point3F ejectvel = mvehicle.getVelocity(); ejectvel += new Point3F(0, 0, 10); ejectvel = ejectvel.vectorScale(((SimDataBlock) (obj.getDataBlock()))["mass"].AsFloat()); obj.applyImpulse(ejectpos.GetPosition(), ejectvel); }