//发送请求移动消息 //public bool RequestMove(int mode, int arg_num, float[] args, string info) public bool RequestMove(ref VarList args, ref VarList ret) { try { if (args.GetCount() < 3) { //Log.Trace(" arguments count must be > 3"); ret.AddBool(false); return(false); } int mode = args.GetInt(0); int arg_num = args.GetInt(1); if (arg_num > 256) { //Log.Trace("more arguments"); ret.AddBool(false); return(false); } if (args.GetCount() < (arg_num + 2)) { //Log.Trace("too few arguments"); ret.AddBool(false); return(false); } StoreArchive ar = new StoreArchive(m_buffer, m_buffer.Length); ar.WriteInt8(GlobalClineMsgId.CLIENT_REQUEST_MOVE);//消息ID ar.WriteInt8(mode); ar.WriteInt16(arg_num); for (int i = 0; i < arg_num; i++) { float value = args.GetFloat(2 + i); ar.WriteFloat(value); } string info = ""; if (args.GetCount() > (arg_num + 2)) { info = args.GetString(arg_num + 2); } ar.WriteStringNoLen(info); return(m_sender.Send(ar.GetData(), ar.GetLength())); } catch (System.Exception ex) { Log.TraceExcep(ref ex); return(false); } }
// bool public bool SetValue(int row, int col, bool result) { if (row >= GetRowCount() || col >= GetColcount() || row < 0 || col < 0) { return(false); } VarList rowItem = rowSet[row]; if (rowItem == null) { return(false); } if (col < rowItem.GetCount()) { rowItem.SetBool(col, result); } else { rowItem.AddBool(result); } return(true); }
//发送请求移动消息 //public bool RequestMove(int mode, int arg_num, float[] args, string info) public bool RequestMove(ref VarList args, ref VarList ret) { try { if (args.GetCount() < 1) { ret.AddBool(false); return(false); } int mode = args.GetInt(0); int arg_num = args.GetCount() - 1; StoreArchive ar = StoreArchive.Load(m_buffer, m_buffer.Length); ar.WriteInt8(GlobalClineMsgId.CLIENT_REQUEST_MOVE);//消息ID ar.WriteInt8(mode); ar.WriteInt16(arg_num); for (int i = 0; i < arg_num; i++) { float value = args.GetFloat(1 + i); ar.WriteFloat(value); } return(m_sender.Send(ar.GetData(), ar.GetLength())); } catch (System.Exception ex) { LogSystem.LogError(ex); return(false); } }
/// <summary> /// 赋值VarList /// </summary> /// <param name="args"></param> /// <param name="index"></param> /// <param name="newList"></param> public static void CopyVarList(ref VarList args, ref VarList newList, int start, int count) { int index = start; for (; index < args.GetCount() && count > 0; index++, count--) { int type = args.GetType(index); switch (type) { case VarType.Bool: newList.AddBool(args.GetBool(index)); break; case VarType.Int: newList.AddInt(args.GetInt(index)); break; case VarType.String: newList.AddString(args.GetString(index)); break; case VarType.WideStr: newList.AddWideStr(args.GetWideStr(index)); break; case VarType.Object: newList.AddObject(args.GetObject(index)); break; case VarType.Float: newList.AddFloat(args.GetFloat(index)); break; case VarType.Double: newList.AddDouble(args.GetDouble(index)); break; case VarType.Int64: newList.AddInt64(args.GetInt64(index)); break; } } }
public void GetRoleInfo(ref VarList args, ref VarList ret) { try { if (mRoles == null || mRoles.Count == 0) { return; } if (args == null || ret == null) { return; } if (args.GetCount() == 0) { return; } if (args.GetType(0) != VarType.Int) { return; } int nIndex = args.GetInt(0); if (nIndex >= mRoles.Count) { return; } VarList paraList = mRoles[nIndex].paraList; for (int i = 0; i < paraList.GetCount(); i++) { switch (paraList.GetType(i)) { case VarType.Bool: { ret.AddBool(paraList.GetBool(i)); } break; case VarType.Int: { ret.AddInt(paraList.GetInt(i)); } break; case VarType.Int64: { ret.AddInt64(paraList.GetInt64(i)); } break; case VarType.Float: { ret.AddFloat(paraList.GetFloat(i)); } break; case VarType.Double: { ret.AddDouble(paraList.GetDouble(i)); } break; case VarType.String: { ret.AddString(paraList.GetString(i)); } break; case VarType.WideStr: { ret.AddWideStr(paraList.GetWideStr(i)); } break; case VarType.Object: { ret.AddObject(paraList.GetObject(i)); } break; default: return; } } } catch (Exception ex) { //Log.Trace("GameReceiver.GetRoleInfo Exception:" + ex.ToString()); } return; }
//添加一个参数 public static void AddObjectArgs(ref VarList args, ref object o) { System.Type itype = o.GetType(); if (itype == typeof(bool)) { args.AddBool((bool)o); } else if (itype == typeof(int)) { args.AddInt((int)o); } else if (itype == typeof(long)) { args.AddInt64((long)o); } else if (itype == typeof(float)) { args.AddFloat((float)o); } else if (itype == typeof(double)) { args.AddDouble((double)o); } else if (itype == typeof(ObjectID)) { args.AddObject((ObjectID)o); } else if (itype == typeof(string)) { args.AddString((string)o); } else if (itype == typeof(byte[])) { args.AddUserData((byte[])o); } else if (itype == typeof(WideString)) { args.AddWideStr(((WideString)o).mstrContent); } else if (itype == typeof(VarList)) { int iCount = ((VarList)o).GetCount(); for (int j = 0; j < iCount; j++) { switch (((VarList)o).GetType(j)) { case VarType.Bool: args.AddBool(((VarList)o).GetBool(j)); break; case VarType.Int: args.AddInt(((VarList)o).GetInt(j)); break; case VarType.Int64: args.AddInt64(((VarList)o).GetInt64(j)); break; case VarType.Float: args.AddFloat(((VarList)o).GetFloat(j)); break; case VarType.Double: args.AddDouble(((VarList)o).GetDouble(j)); break; case VarType.String: args.AddString(((VarList)o).GetString(j)); break; case VarType.WideStr: args.AddWideStr(((VarList)o).GetWideStr(j)); break; case VarType.Object: args.AddObject(((VarList)o).GetObject(j)); break; case VarType.UserData: args.AddUserData(((VarList)o).GetUserData(j)); break; } } } }
//发送客户端自定义消息,请保留此功能,谢谢! public static bool SendCustomGM(string content) { if (mGameSender == null) { return(false); } VarList args = VarList.GetVarList(); string[] split = content.Split(' '); int len = split.Length; if (len % 2 == 0) { for (int i = 0; i < len; ++i) { switch (split[i]) { case "BOOL": ++i; args.AddBool(Convert.ToBoolean(split[i])); break; case "INT": ++i; args.AddInt(Convert.ToInt32(split[i])); break; case "INT64": ++i; args.AddInt64(Convert.ToInt64(split[i])); break; case "FLOAT": ++i; args.AddFloat(Convert.ToSingle(split[i])); break; case "DOUBLE": ++i; args.AddDouble(Convert.ToDouble(split[i])); break; case "STRING": ++i; args.AddString(split[i]); break; case "WIDESTR": ++i; args.AddWideStr(split[i]); break; } } } if (mGameSender.Custom(ref args)) { args.Collect(); return(true); } args.Collect(); return(false); }