void SerializeObjectToBuffer(ushort msgType, IObjectSerializer serializer) { m_NetworkWriter.SeekZero(); m_NetworkWriter.StartMessage(msgType); serializer.Serialize(m_NetworkSyncWriter); m_NetworkWriter.FinishMessage(); }
//public static void SendBitstreamToAllClients(ref UdpBitStream bitstream, short msgType, int channel = Channels.DefaultUnreliable) //{ // reusablewriter.StartMessage(msgType); // reusablewriter.WriteUncountedByteArray(bitstream.Data, bitstream.BytesUsed); // reusablewriter.FinishMessage(); // //reusablewriter.SendPayloadArrayToAllClients(msgType); // foreach (NetworkConnection nc in NetworkServer.connections) // { // if (nc == null) // continue; // nc.SendWriter(reusablewriter, channel); // } //} public static void SendPayloadArrayToAllClients(this NetworkWriter writer, short msgType, int channel = Channels.DefaultUnreliable) { reusablewriter.StartMessage(msgType); byte[] writerArray = writer.AsArray(); int count = writer.Position; for (int i = 4; i < count; ++i) { reusablewriter.Write(writerArray[i]); } reusablewriter.FinishMessage(); foreach (NetworkConnection nc in NetworkServer.connections) { if (nc == null) { continue; } if (nc.isReady) { nc.SendWriter(reusablewriter, channel); } } }
private void ClientSendSetRoleMessage() { JObject json = new JObject { { "stageId", panelID }, //遥控第二个界面,操纵杆界面 { "gId", groupID }, //组ID: 0~3 { "uId", userID }, //用户ID:0~1 { "direction", new JObject // 操纵杆坐标 { { "x", joystick.Horizontal }, { "y", joystick.Vertical } } }, { "skill", skill } //技能释放,0表示不使用技能 }; string output = json.ToString(); //JsonConvert.SerializeObject(json); //Debug.Log(output); NetworkWriter writer = new NetworkWriter(); writer.StartMessage(MsgTypeChooseRoleSend); writer.Write(output); writer.FinishMessage(); if (myClient.isConnected) { myClient.SendWriter(writer, channelId); } }
internal Writer(NetworkWriter writer, short messageIndex, NetworkConnection target, QosType qos) { _netWriter = writer; _target = target; _qos = qos; writer.StartMessage(messageIndex); }
public void SendMessage(string targetObjectName, string methodName, object param, object param2, object param3, MsgType msgType = MsgType.Reliable) { if (debugRPC) { LogUI("CAVE2 SendMessage (Param 5)'" + methodName + "' on " + targetObjectName); } NetworkWriter writer = new NetworkWriter(); writer.StartMessage(203); writer.Write(targetObjectName); writer.Write(methodName); writer.Write(3); ParamToByte(writer, param); ParamToByte(writer, param2); ParamToByte(writer, param3); writer.FinishMessage(); ServerSendMsgToClients(writer.ToArray(), msgType); #if USING_GETREAL3D if (getReal3D.Cluster.isMaster) { getReal3D.RpcManager.call("SendCAVE2RPC5", targetObjectName, methodName, param, param2, param3); } else { SendCAVE2RPC5(targetObjectName, methodName, param, param2, param3); } #else SendCAVE2RPC5(targetObjectName, methodName, param, param2, param3); #endif }
//This is called on the client to send the current inputs void SendInputs(ref List <Inputs> inp) { if (!isLocalPlayer || isServer) { return; } if (inputWriter == null) { inputWriter = new NetworkWriter(); } inputWriter.SeekZero(); inputWriter.StartMessage(inputMessage); int sz = inp.Count; inputWriter.WritePackedUInt32((uint)sz); for (int i = 0; i < sz; i++) { cInp = inp[i]; #if (CMD_CHECKSUM) cInp.checksum = GetCommandChecksum(cInp); #endif WriteInputs(ref inputWriter, cInp, prevInput); prevInput = cInp; } inputWriter.FinishMessage(); myClient.SendWriter(inputWriter, GetNetworkChannel()); inp.Clear(); }
// Writing data to a NetworkWriter and then // Converting this to a NetworkReader. void Start() { // The data you add to your writer must be prefixed with a message type. // This is in the form of a short. short myMsgType = 143; NetworkWriter writer = new NetworkWriter(); // You start the message in your writer by passing in the message type. // This is a short meaning that it will take up 2 bytes at the start of // your message. writer.StartMessage(myMsgType); // You can now begin your message. In this case we will just use strings. //writer.Write(new Vector3(3.0f, 1.44f, 2.56f)); writer.Write("Test data 2"); //writer.Write("Test data 3"); // Make sure to end your message with FinishMessage() writer.FinishMessage(); // You can now access the data in your writer. ToArray() returns a copy // of the bytes that the writer is using and AsArray() returns the // internal array of bytes, not a copy. byte[] writerData = writer.ToArray(); CreateNetworkReader(writerData); }
//If target death //if zombie respawn automaticly //If player block move and fire, wait click respawn void Death() { death = true; NetworkWriter wr = new NetworkWriter(); wr.StartMessage(Networking_msgType_Sr.Death); wr.Write(index); wr.FinishMessage(); RoomsManager.SendReliableAtRoom(wr, index); if (zombie) { coll.enabled = false; CancelInvoke(); Invoke("Respawn", 20f); target.ZombieStopFollow(index); target = null; nav.destination = transform.position; CalculateDropChance(); } else { w = false; s = false; a = false; d = false; move = Vector3.zero; while (ZombieFollowMe.Count != 0) { RoomsManager.GetPlayerController(ZombieFollowMe[0]).FollowTargetDead(); ZombieFollowMe.RemoveAt(0); } } }
//If target respawn //If zombie respawn on random position on map //If player respawn on player layer on map public void Respawn() { death = false; if (zombie) { coll.enabled = true; do { Vect = new Vector3(Random.Range(0, 100), transform.position.y, Random.Range(0, 100)); }while (Vect.x < 20f || Vect.z < 20f); nav.Warp(Vect); } else { do { Vect = new Vector3(Random.Range(1, 10), transform.position.y, Random.Range(1, 10)); }while (Vect.x > 10f || Vect.z > 10f); transform.position = Vect; } transform.rotation = Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up); Data_PlayerFile_Sr d = RoomsManager.GetPlayerData(index); d.SetHP(d.HPMax); NetworkWriter wr = new NetworkWriter(); wr.StartMessage(Networking_msgType_Sr.Respawn); wr.Write(index); wr.Write(transform.position); wr.Write(transform.rotation); wr.FinishMessage(); RoomsManager.SendReliableAtRoom(wr, index); }
public override void Serialize(NetworkWriter writer) { writer.StartMessage(MessageTypes.SCUpdateMsgType); writer.Write(ID); writer.Write(status); writer.FinishMessage(); }
public override void Serialize(NetworkWriter writer) { writer.StartMessage(MessageTypes.CSUpdateMsgType); writer.Write(ID); writer.Write(position); writer.FinishMessage(); }
protected void SendDamage(DamageInfo damage, GameObject target) { if (NetworkServer.active) { if (target) { HealthComponent hc = target.GetComponent <HealthComponent>(); if (hc) { hc.TakeDamage(damage); } GlobalEventManager.instance.OnHitEnemy(damage, target); } GlobalEventManager.instance.OnHitAll(damage, target); } else if (ClientScene.ready) { write.StartMessage(53); write.Write(target); WriteDmgInfo(write, damage); write.Write((target.GetComponent <HealthComponent>() != null)); write.FinishMessage(); ClientScene.readyConnection.SendWriter(write, QosChannelIndex.defaultReliable.intVal); } }
public void LoadTopPlayerList() { TopList.Clear(); Linq.CommandText = "SELECT PlayerName, zombie, zombie_mutant, zombie_strong, PlayerScores FROM charecter ORDER BY PlayerScores DESC"; MySqlDataReader reader = Linq.ExecuteReader(); int r = 0; while (reader.Read() && r < 10) { int i = 0; TopPlayer t = new TopPlayer(); t.nick = reader.GetString(i++); t.zombieKill = int.Parse(reader.GetString(i++)); t.zombieMutantKill = int.Parse(reader.GetString(i++)); t.zombieStrongKill = int.Parse(reader.GetString(i++)); t.Score = int.Parse(reader.GetString(i++)); TopList.Add(t); r++; } reader.Close(); top = new NetworkWriter(); top.StartMessage(Networking_msgType_Sr.TopList); top.Write(TopList.Count); foreach (TopPlayer pl in TopList) { top.Write(pl.nick); top.Write(pl.zombieKill); top.Write(pl.zombieMutantKill); top.Write(pl.zombieStrongKill); top.Write(pl.Score); } top.FinishMessage(); Invoke("LoadTopPlayerList", 30f); }
// Token: 0x06001F16 RID: 7958 RVA: 0x00092A70 File Offset: 0x00090C70 private void ProcessQueue() { if (this.snapshotQueue.Count == 0) { return; } NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(51); int num = Mathf.Min(Mathf.FloorToInt((float)(1000 - networkWriter.Position) / 61f), this.snapshotQueue.Count); networkWriter.Write((byte)num); for (int i = 0; i < num; i++) { CharacterNetworkTransformManager.NetSnapshot netSnapshot = this.snapshotQueue.Dequeue(); this.currentOutMessage.gameObject = netSnapshot.gameObject; this.currentOutMessage.newPosition = netSnapshot.snapshot.position; this.currentOutMessage.aimDirection = netSnapshot.snapshot.aimDirection; this.currentOutMessage.moveVector = netSnapshot.snapshot.moveVector; this.currentOutMessage.rotation = netSnapshot.snapshot.rotation; this.currentOutMessage.isGrounded = netSnapshot.snapshot.isGrounded; this.currentOutMessage.timestamp = netSnapshot.snapshot.serverTime; networkWriter.Write(this.currentOutMessage); } networkWriter.FinishMessage(); if (NetworkServer.active) { NetworkServer.SendWriterToReady(null, networkWriter, QosChannelIndex.characterTransformUnreliable.intVal); return; } if (ClientScene.readyConnection != null) { ClientScene.readyConnection.SendWriter(networkWriter, QosChannelIndex.characterTransformUnreliable.intVal); } }
public virtual void SendByChannel(short msgType, MessageBase msg, int channelId) { m_Writer.StartMessage(msgType); msg.Serialize(m_Writer); m_Writer.FinishMessage(); SendWriter(m_Writer, channelId); }
public void SendMsg(MessageBase msg) { short msgType = 0; if (msg.GetType().Name == "TextMessage") { msgType = MRTMsgType.Text; } else if (msg.GetType().Name == "AnchorMessage") { msgType = MRTMsgType.Anchor; } else if (msg.GetType().Name == "SpawnMessage") { msgType = MRTMsgType.Spawn; } NetworkWriter writer = new NetworkWriter(); writer.StartMessage(msgType); msg.Serialize(writer); writer.FinishMessage(); // send message to server stream.Write(writer.ToArray(), 0, writer.ToArray().Length); }
private static void MMTime(ConCommandArgs args) { string scaleString = ArgsHelper.GetValue(args.userArgs, 0); float scale = 1f; if (args.Count == 0) { Debug.Log(Time.timeScale); return; } if (float.TryParse(scaleString, out scale)) { Time.timeScale = scale; Debug.Log(args.sender.userName + " set time scale to " + scale); Chat.AddMessage("<style=cWorldEvent>" + args.sender.userName + " set time scale to " + scale + "</style>"); } else { Debug.Log("Invalid arguments, example: 'mmtime {int} (0=pause,1=normal)'"); } NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(101); networkWriter.Write((double)Time.timeScale); networkWriter.FinishMessage(); NetworkServer.SendWriterToReady(null, networkWriter, QosChannelIndex.time.intVal); }
/// <summary> /// Send int value by reliable channel 0 to all room /// </summary> /// <param name="msgType"></param> /// <param name="value"></param> /// <param name="sessionID"></param> public static void SendIntToAllRoom(short msgType, int value, int roomID) { NetworkWriter wr = new NetworkWriter(); wr.StartMessage(msgType); wr.Write(value); wr.FinishMessage(); Room room = GetRoom(roomID); if (room) { foreach (PlayerData data in room.playersData) { if (data != null) { if (data.playerData.PlayerReady) { NetworkConnection conn = GetPlayerConnection(data.sessionID); if (conn != null && conn.connectionId != -1) { conn.SendWriter(wr, 0); } } } } } }
void SerializeMessageToBuffer(ushort msgType, IMessageSerializer serializer) { m_NetworkWriter.SeekZero(); m_NetworkWriter.StartMessage(msgType); serializer.Serialize(m_NetworkWriter); m_NetworkWriter.FinishMessage(); }
private static void CCTimeScale(ConCommandArgs args) { string scaleString = ArgsHelper.GetValue(args.userArgs, 0); float scale = 1f; if (args.Count == 0) { Debug.Log(Time.timeScale); return; } if (float.TryParse(scaleString, out scale)) { Time.timeScale = scale; Debug.Log("Time scale set to " + scale); } else { Debug.Log("Incorrect arguments. Try: time_scale 0.5"); } NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(101); networkWriter.Write((double)Time.timeScale); networkWriter.FinishMessage(); NetworkServer.SendWriterToReady(null, networkWriter, QosChannelIndex.time.intVal); }
public void OnClientConnected(NetworkMessage netMsg) { NetworkWriter writer = new NetworkWriter(); writer.StartMessage(kMsgId); byte[] data = new byte[kPacketSize]; writer.Write(data, kPacketSize); writer.FinishMessage(); LogAssert.Expect(LogType.Error, "ChannelBuffer buffer limit of 16 packets reached."); // these messages do not all fit in the transport layer send queue. // to be recieved on the server, they must be buffered by HLAPI bool gotFailure = false; for (int i = 0; i < kNumMsgs; i++) { if (!myClient.SendWriter(writer, Channels.DefaultReliable)) { gotFailure = true; break; } } Assert.AreEqual(true, gotFailure); isTestDone = true; }
private void ClientTransmitVotesToServer() { if (!NetworkClient.active) { Debug.LogWarning("[Client] function 'System.Void RoR2.PreGameRuleVoteController::ClientTransmitVotesToServer()' called on server"); return; } Debug.Log("PreGameRuleVoteController.ClientTransmitVotesToServer()"); if (!this.networkUserNetworkIdentity) { Debug.Log("Can't transmit votes: No network user object."); return; } NetworkUser component = this.networkUserNetworkIdentity.GetComponent <NetworkUser>(); if (!component) { Debug.Log("Can't transmit votes: No network user component."); return; } NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(70); networkWriter.Write(base.gameObject); this.WriteVotes(networkWriter); networkWriter.FinishMessage(); component.connectionToServer.SendWriter(networkWriter, QosChannelIndex.defaultReliable.intVal); }
private static void CCTimeScale(ConCommandArgs args) { if (args.Count == 0) { Log.Message(Time.timeScale); return; } if (TextSerialization.TryParseInvariant(args[0], out float scale)) { Time.timeScale = scale; Log.Message("Time scale set to " + scale); } else { Log.Message("Incorrect arguments. Try: time_scale 0.5"); } NetworkWriter networkWriter = new NetworkWriter(); networkWriter.StartMessage(101); networkWriter.Write((double)Time.timeScale); networkWriter.FinishMessage(); NetworkServer.SendWriterToReady(null, networkWriter, QosChannelIndex.time.intVal); }
// Token: 0x0600122D RID: 4653 RVA: 0x000597DC File Offset: 0x000579DC public void SendSetEntityState(int stateMachineIndex) { if (!NetworkServer.active && !base.hasAuthority) { return; } NetworkWriter networkWriter = new NetworkWriter(); EntityStateMachine entityStateMachine = this.stateMachines[stateMachineIndex]; short value = StateIndexTable.TypeToIndex(entityStateMachine.state.GetType()); networkWriter.StartMessage(48); networkWriter.Write(this.networkIdentity); networkWriter.Write((byte)stateMachineIndex); networkWriter.Write(value); entityStateMachine.state.OnSerialize(networkWriter); networkWriter.FinishMessage(); if (NetworkServer.active) { NetworkServer.SendWriterToReady(base.gameObject, networkWriter, this.GetNetworkChannel()); return; } if (ClientScene.readyConnection != null) { ClientScene.readyConnection.SendWriter(networkWriter, this.GetNetworkChannel()); } }
internal int CopyPacketToNetworkWriter(ArraySegment <byte> packet, [NotNull] NetworkWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } var arr = packet.Array; if (arr == null) { throw new ArgumentNullException("packet"); } writer.SeekZero(); writer.StartMessage(TypeCode); { //Length prefix the packet writer.WritePackedUInt32((uint)packet.Count); //Copy out the bytes. //You might think we could use `Write(buffer, offset, count)` here. You would be wrong! In that method the 'offset' is the //offset to write to in the packet! This is probably a bug in unity! for (var i = 0; i < packet.Count; i++) { writer.Write(arr[packet.Offset + i]); // } } writer.FinishMessage(); return(writer.Position); }
internal Writer(NetworkWriter writer, Int16 messageIndex, NetworkConnection target, QosType qos) { this.netWriter = writer; this.connection = target; this.qos = qos; writer.StartMessage(messageIndex); }
public static void Send(int hostId, int connectionId, int channelId, MessageBase message, short messageType) { NetworkWriter writer = new NetworkWriter(); writer.StartMessage(messageType); message.Serialize(writer); writer.FinishMessage(); byte[] writerData = writer.ToArray(); int bufferLength = P2PController.bufferLength; bufferLength = writerData.Length; //Debug.Log("Send packet with size: " + bufferLength); NetworkTransport.Send(hostId, connectionId, channelId, writerData, bufferLength, out P2PController.error); P2PController.CheckError("Send"); if (Recorder.session != null) { Recorder.session.messagesSent++; Recorder.session.AddLeavingBandwidth(bufferLength); if (channelId == P2PChannels.ReliableChannelId) { Recorder.session.importantMessagesSent++; } } }
public override void SendC2S(uint guid, int commandId, object argument) { if (!NetworkClient.active) { throw new UnauthorizedAccessException( "You can not invoke actions on the host as you do not have a client instance."); } var networkWriter = new NetworkWriter(); networkWriter.StartMessage(MessageTypeC2S); networkWriter.Write(guid); networkWriter.Write(commandId); if (argument is Action <NetworkWriter> anw) { anw(networkWriter); } else { networkWriter.WriteObject(argument); } networkWriter.FinishMessage(); ClientScene.readyConnection.SendWriter(networkWriter, ChannelId); }
NetworkWriter INetworkSender.CreateWriter(int signalType) { NetworkWriter writer = new NetworkWriter(); writer.StartMessage(msgType); writer.Write(signalType); return(writer); }
//Save player kills and rang to DB public static void Kill(int sessionID, string zombie) { Data_PlayerFile_Sr player = RoomsManager.GetPlayerData(sessionID); if ("strongzombie" == zombie) { player.zombieStrong++; } else if ("mutantzombie" == zombie) { player.zombieMutant++; } else if ("zombie" == zombie || "sickzombie" == zombie || "policezombie" == zombie) { player.zombie++; } player.PlayerScores = player.zombie + (player.zombieMutant * 2) + (player.zombieStrong * 3); if (player.rang != 11) { int rang = CheckRang(player.PlayerScores); if (rang > player.rang) { player.rang = rang; NetworkWriter wr = new NetworkWriter(); wr.StartMessage(Networking_msgType_Sr.Rang); wr.Write(sessionID); wr.Write(player.rang); wr.FinishMessage(); RoomsManager.SendReliableAtRoom(wr, sessionID); string title = SetTitle(player.rang); if (!string.IsNullOrEmpty(title)) { player.title = title; wr = new NetworkWriter(); wr.StartMessage(Networking_msgType_Sr.Title); wr.Write(sessionID); wr.Write(title); wr.FinishMessage(); RoomsManager.SendReliableAtRoom(wr, sessionID); } } } Linq.CommandText = string.Format("UPDATE charecter SET zombie = '{0}', zombie_mutant = '{1}', zombie_strong = '{2}', PlayerScores = '{3}', rang = '{4}', title = '{5}' WHERE PlayerName = '{6}'", player.zombie, player.zombieMutant, player.zombieStrong, player.PlayerScores, player.rang, player.title, player.nick); MySqlDataReader Reader = Linq.ExecuteReader(); try { Reader.Read(); Reader.Close(); } catch (MySqlException ex) { Debug.Log(ex.ErrorCode + ex.Message); } Reader.Close(); }