public static void BottomPrint(GameConnection client, string message, string time, string lines) { if (lines == "" || lines.AsInt() > 3 || lines.AsInt() < 1) lines = "1"; t3d.console.commandToClient(client, "bottomPrint", new[] {message, time, lines}); }
public static void Ban(GameConnection client) { message.MessageAll("MsgAdminForce", omni.console.ColorEncode(@"\c2The Admin has banned %1."), client["playerName"]); if (!client.isAIControlled()) omni.console.Call_Classname("BanList", "add", new[] {client["guid"], client.getAddress(), omni.sGlobal["$Pref::Server::BanTime"]}); client.delete("You have been banned from this server"); }
static public bool SpamAlert(GameConnection client) { if (!tst.bGlobal["$Pref::Server::FloodProtectionEnabled"]) return false; if (!client["isSpamming"].AsBool() && client["spamMessageCount"].AsInt() >= SPAM_MESSAGE_THRESHOLD) { tst.console.error("Client " + client + " is spamming, message count = " + client["spamMessageCount"]); client["spamProtectStart"] = tst.console.getSimTime().AsString(); client["isSpamming"] = true.AsString(); using (BackgroundWorker bwr_SPAM_PENALTY_PERIOD = new BackgroundWorker()) { bwr_SPAM_PENALTY_PERIOD.DoWork += new DoWorkEventHandler(bwr_SPAM_PENALTY_PERIOD_DoWork); bwr_SPAM_PENALTY_PERIOD.RunWorkerAsync(client); } } if (client["isSpamming"].AsBool()) { double wait = Math.Floor((SPAM_PENALTY_PERIOD - (tst.console.getSimTime() - client["spamProtectStart"].AsDouble()) / 1000)); MessageClient(client, "", SPAM_MESSAGE, wait.AsString()); return true; } client["spamMessageCount"] = (client["spamMessageCount"].AsInt() + 1).AsString(); using (BackgroundWorker bwrSPAM_PROTECTION_PERIOD = new BackgroundWorker()) { bwrSPAM_PROTECTION_PERIOD.DoWork += new DoWorkEventHandler(bwrSPAM_PROTECTION_PERIOD_DoWork); } return false; }
public static void sendMsgClientKilled_Impact(string msgtype, GameConnection client, GameConnection sourceclient, string damloc) { if (client.isObject()) message.MessageAll(msgtype, "%1 fell to his death!", client["playerName"]); // console.GetVarString(string.Format("{0}.playerName", client))); }
public static void sendMsgClientKilled_TurretDamage(string msgtype, GameConnection client, GameConnection sourceclient, string damloc) { if (sourceclient == 0) message.MessageAll(msgtype, "%1 was shot down by a turret!", client["playerName"] + ");"); else if (sourceclient == client) message.MessageAll(msgtype, "%1 kill by his own turret!", client["playerName"] + ");"); else message.MessageAll(msgtype, "%1 was killed by a turret of %2!", client["playerName"] + ");", sourceclient["playerName"]); }
public static void sendMsgClientKilled_MineDamage(string msgType, GameConnection client, GameConnection sourceClient, string damLoc) { // Customized kill message for deaths caused by proximity mines if (sourceClient == 0) message.MessageAll(msgType, "%1 was blown up!", client["playerName"]); else if (sourceClient == client) message.MessageAll(msgType, "%1 stepped on his own mine!", client["playerName"]); else message.MessageAll(msgType, "%1 was blown up by %2!", client["playerName"], sourceClient["playerName"]); }
public static void sendMsgClientKilled_Default(string msgtype, GameConnection client, GameConnection sourceclient, string damloc) { if (!client.isObject()) return; if (sourceclient == client) sendMsgClientKilled_Suicide(msgtype, client, sourceclient, damloc); else if (omni.console.GetVarString(sourceclient["team"]) != string.Empty && sourceclient["team"] != client["team"]) message.MessageAll(msgtype, "%1 killed by %2 - friendly fire!", client["playerName"], sourceclient["playerName"]); else message.MessageAll(msgtype, "%1 gets nailed by %2!", client["playerName"], sourceclient.isObject() ? sourceclient["playerName"] : "a Bot!"); }
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 void IncScore(GameConnection client, string score, string dontmessageall) { if (!console.isObject(client)) return; console.SetVar(client + ".score", console.GetVarInt(client + ".score") + int.Parse(score)); if (dontmessageall == "0") message.MessageAll("MsgClientScoreChanged", "", console.GetVarString(client + ".score"), console.GetVarString(client + "kills"), console.GetVarString(client + ".deaths"), client); }
public virtual int GetScore(GameConnection client) { return client["score"].AsInt(); }
public static void serverCmdsetPlayerControl(GameConnection client) { Player player = client["player"]; client.setControlObject(player); }
public virtual void IncDeaths(GameConnection client, string death, string dontmessageall) { if (!console.isObject(client)) return; console.SetVar(string.Format("{0}.deaths", client), console.GetVarInt(string.Format("{0}.deaths", client)) + int.Parse(death)); if (dontmessageall == "0") message.MessageAll("MsgClientScoreChanged", "", console.GetVarString(client + ".score"), console.GetVarString(client + ".kills"), console.GetVarString(client + ".deaths"), client); }
public virtual string onConnectRequest(GameConnection client, string netAddress, string name) { console.print(string.Format("Connect request from:{0}", netAddress)); return iGlobal["$Server::PlayerCount"] >= iGlobal["$Pref::Server::MaxPlayers"] ? "CR_SERVERFULL" : ""; }
public static void serverCmdMissionStartPhase2Ack(GameConnection client, string seq, PlayerData playerDB) { _missionLoadBase.serverCmdMissionStartPhase2Ack(client, seq, playerDB); }
public virtual void serverCmdMissionStartPhase2Ack(GameConnection client, string seq, PlayerData playerDB) { // Make sure to ignore calls from a previous mission load if (seq != sGlobal["$missionSequence"] || !bGlobal["$MissionRunning"]) return; if (client["currentPhase"].AsDouble() != 1.5) return; client["currentPhase"] = "2"; // Set the player datablock choice client["playerDB"] = playerDB; // Update mod paths, this needs to get there before the objects. client.transmitPaths(); // Start ghosting objects to the client client.activateGhosting(); }
public void clientWantsGhostAlwaysRetry(GameConnection client) { if (bGlobal["$MissionRunning"]) client.activateGhosting(); }
public static void serverCmdflipCar(GameConnection client) { Player player = client["player"]; Vehicle car = player.getControlObject(); if (car.getClassName() != "WheeledVehicle") return; TransformF carpos = car.getTransform(); carpos += new TransformF(0, 0, 3); car.setTransform(carpos); }
public virtual void serverCmdMissionStartPhase1Ack(GameConnection client, int seq) { // Make sure to ignore calls from a previous mission load if (seq != iGlobal["$missionSequence"] || !bGlobal["$MissionRunning"]) return; if (client["currentPhase"].AsDouble() != 0.0) return; client["currentPhase"] = "1"; // Start with the CRC client.setMissionCRC(iGlobal["$missionCRC"]); // Send over the datablocks... // OnDataBlocksDone will get called when have confirmation // that they've all been received. console.print("Transmitting Datablocks"); client.transmitDataBlocks(iGlobal["$missionSequence"]); }
public static void serverCmdUse(GameConnection client, ItemData data) { if (((Player) client.getControlObject()).isObject()) ((Player) client.getControlObject()).Use(data); }
public static void serverCmdMissionStartPhase2CacheAck(GameConnection client) { _missionLoadBase.serverCmdMissionStartPhase2CacheAck(client); }
public static void sendMsgClientKilled_Suicide(string msgtype, GameConnection client, GameConnection sourceclient, string damloc) { if (client.isObject()) message.MessageAll(msgtype, "%1 takes his own life!", client["playerName"]); }
public virtual int GetKills(GameConnection client) { return client["kills"].AsInt(); }
public static void sendMsgClientKilled_Telefrag(string msgType, GameConnection client, GameConnection sourceClient, string damLoc) { message.MessageAll(msgType, "%1 was telefragged by %2!", client["playerName"], sourceClient["playerName"]); }
public virtual int GetDeaths(GameConnection client) { return client["deaths"].AsInt(); }
public static void ServerCmdtoggleBrakeLights(GameConnection client) { Player player = client["player"]; //Remember to pay attention to what type of object your looking at. WheeledVehicle vehicle = player.getControlObject().AsString(); if (vehicle.getClassName() != "WheeledVehicle") return; if (vehicle["rightBrakeLight.isEnabled"].AsBool()) { ((PointLight) vehicle["rightBrakeLight"]).setLightEnabled(false); ((PointLight) vehicle["leftBrakeLight"]).setLightEnabled(false); } else { ((PointLight) vehicle["rightBrakeLight"]).setLightEnabled(true); ((PointLight) vehicle["leftBrakeLight"]).setLightEnabled(true); } }
public virtual void onDeath(GameBase sourceobject, GameConnection sourceclient, string damagetype, string damloc) { if (this.isObject()) { if (this["ownedTurrets"] == string.Empty) this["ownedTurrets"] = new ObjectCreator("SimSet").Create().AsString(); SimSet simSet = this["ownedTurrets"]; for (uint i = 0; i < simSet.getCount(); i++) ((SimObject) simSet.getObject(i)).schedule("10", "delete"); } // clear the weaponHUD this.refreshWeaponHud(0, string.Empty, string.Empty, string.Empty, 0); Player player = this["player"]; // Clear out the name on the corpse player.setShapeName(string.Empty); // Update the numerical Health HUD //PlayerUpdateHealth(player); // Switch the client over to the death cam and unhook the player object. Camera camera = this["camera"]; if (camera.isObject() && player.isObject()) { camera.setMode("Corpse", player, string.Empty, string.Empty); //camera.call("setMode", "Corpse", player, string.Empty, string.Empty); this.setControlObject(camera); } else console.print("------------>Failed to Switch the client over to the death cam."); this["player"] = "0"; // Display damage appropriate kill message string sendMsgFunction = "sendMsgClientKilled_" + damagetype; //if (!console.isFunction(sendMsgFunction)) // { // sendMsgFunction = "sendMsgClientKilled_Default"; // } console.Call(sendMsgFunction, new string[] {"MsgClientKilled", this, sourceclient, damloc}); // Dole out points and check for win if ((damagetype == "Suicide") || (sourceclient == this)) { IncDeaths(this, "1", "1"); IncScore(this, "-1", "0"); } else { IncDeaths(this, "1", "0"); IncScore(sourceclient, "1", "1"); IncKills(sourceclient, "1", "0"); } if (iGlobal["$Game::EndGameScore"] > 0 && sourceclient["kills"].AsInt() >= iGlobal["$Game::EndGameScore"]) missionLoad.cycleGame(); }
public void checkWinner(GameConnection client) { for (int i = 0; i < 4; i++) { if (!client["touchedPlatform[" + i + "]"].AsBool()) return; // Skipped a platform, no winner message for you! } // Get the total time it took them double totalTime = Util.getSimTime() - client["miniStartTime"].AsDouble(); string timeStr = timeToText(totalTime); // See if they beat the best time if (sGlobal["$Pref::Server::miniWalkableBest"] == "") dGlobal["$Pref::Server::miniWalkableBest"] = totalTime; else if (totalTime < dGlobal["$Pref::Server::miniWalkableBest"]) { dGlobal["$Pref::Server::miniWalkableBest"] = totalTime; timeStr += "\nA new best time!"; } message.MessageClient(client, "MsgItemPickup", "\\c1Congratulations! You reached the platform in %1", timeStr); message.MessageAllExcept(client, "-1", "MsgItemPickup", "\\c1%1 reached the platform in %2", client["PlayerName"], timeStr); // Reset so they can play again client["miniStartTime"] = ""; }
public static void serverCmdMissionStartPhase3Ack(GameConnection client, string seq) { _missionLoadBase.serverCmdMissionStartPhase3Ack(client, seq); }
public virtual void serverCmdMissionStartPhase2CacheAck(GameConnection client) { client["currentPhase"] = "1.5"; }
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 virtual void serverCmdMissionStartPhase3Ack(GameConnection client, string seq) { if (seq != sGlobal["$missionSequence"] || !bGlobal["$MissionRunning"]) return; if (client["currentPhase"].AsDouble() != 2.0) return; client["currentPhase"] = "3"; // Server is ready to drop into the game if (iGlobal["$Pref::Server::MinPlayers"] > 1) console.Call("PlayerReady", new string[] {client}); else { client.startMission(); client.onClientEnterGame(); } }
public override void onCollision(ShapeBase obj, SceneObject col, Point3F vec, float len) { Player player = obj.getId(); if (player.getState() == "Dead") { return; } // Try and pickup all items if (col.getClassName() == "Item") { player.pickup(col.ID, 1); return; } if (col.GetType() != typeof(WheeledVehicle)) { return; } WheeledVehicle vcol = (WheeledVehicle)col; //AI are not allowed to drive they are lousey drivers.... GameConnection client = player["client"]; if (!client.isObject()) { return; } //Mount Vehicle. if ((console.getTypeMask(col) & (UInt32)SceneObjectTypesAsUint.GameBaseObjectType) != (UInt32)SceneObjectTypesAsUint.GameBaseObjectType) { return; } VehicleData db = vcol.getDataBlock(); if (!(((db.getClassName() == "WheeledVehicleData") || player["mountVehicle"].AsBool() || player.getState() == "Move" || col["mountable"].AsBool()))) { return; } // Only mount drivers for now. // For this specific example, only one person can fit // into a vehicle int mount = vcol.getMountNodeObject(0); if (mount > 0) { try { Player p = mount; return; } catch (Exception err) { //Water particle emitters seem to take up the seat when the vehicle is in water. vcol.unmountObject(mount.AsString()); vcol.mountObject(player, 0, new TransformF()); ((GameConnection)player["client"]).setFirstPerson(false); console.commandToClient(client, "PushVehicleMap"); } } else { vcol.mountObject(player, 0, new TransformF()); ((GameConnection)player["client"]).setFirstPerson(false); console.commandToClient(client, "PushVehicleMap"); } //if (mount > 0) //return; // For this specific FPS Example, always mount the player to node 0 player["mVehicle"] = col; }