示例#1
0
        public bool GetInt64(int row, int col, ref long lValue)
        {
            try
            {
                if (row >= GetRowCount() || col >= GetColcount())
                {
                    lValue = 0;
                    return(false);
                }

                VarList row_value = (VarList)rowSet[row];
                if (row_value.GetType(col) != VarType.Int64)
                {
                    lValue = 0;
                    return(false);
                }

                lValue = row_value.GetInt64(col);
            }
            catch (Exception ex)
            {
                lValue = 0;
                LogSystem.LogError(ex.ToString());
                return(false);
            }

            return(true);
        }
示例#2
0
    /// <summary>
    /// 自动根据类型读取index位置的数据 返回值为string
    /// </summary>
    /// <param name="args"></param>
    /// <param name="index"></param>
    /// <returns></returns>
    public static string GetVarList(VarList args, int index)
    {
        int type = args.GetType(index);

        switch (type)
        {
        case VarType.Bool:
            return(args.GetBool(index) ? "true" : "false");

        case VarType.Int:
            return(args.GetInt(index).ToString());

        case VarType.String:
            return(args.GetString(index));

        case VarType.WideStr:
            return(args.GetWideStr(index));

        case VarType.Object:
            return(args.GetObject(index).ToString());

        case VarType.Float:
            return(args.GetFloat(index).ToString());

        case VarType.Double:
            return(args.GetDouble(index).ToString());

        case VarType.Int64:
            return(args.GetInt64(index).ToString());

        default:
            return("null");
        }
    }
示例#3
0
        public bool AddMsgVarList(StoreArchive ar, VarList args, int beg, int end)
        {
            try
            {
                for (int i = beg; i < end; ++i)
                {
                    switch (args.GetType(i))
                    {
                    case VarType.Int:
                        ar.WriteInt8(VarType.Int);
                        ar.WriteInt32(args.GetInt(i));
                        break;

                    case VarType.Int64:
                        ar.WriteInt8(VarType.Int64);
                        ar.WriteInt64(args.GetInt64(i));
                        break;

                    case VarType.Float:
                        ar.WriteInt8(VarType.Float);
                        ar.WriteFloat(args.GetFloat(i));
                        break;

                    case VarType.Double:
                        ar.WriteInt8(VarType.Double);
                        ar.WriteDouble(args.GetDouble(i));
                        break;

                    case VarType.String:
                        ar.WriteInt8(VarType.String);
                        ar.WriteString(args.GetString(i));
                        break;

                    case VarType.WideStr:
                        ar.WriteInt8(VarType.WideStr);
                        ar.WriteWideStr(args.GetWideStr(i));
                        break;

                    case VarType.Object:
                        ar.WriteInt8(VarType.Object);
                        ar.WriteObject(args.GetObject(i));
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                LogSystem.LogError(ex.ToString());
                return(false);
            }

            return(true);
        }
示例#4
0
    public static void PrintVarlist(string strTitle, VarList args, bool flag = false)
    {
        if (!flag)
        {
            return;
        }
        string str = UtilTools.StringBuilder("[", strTitle, " ", DateTime.Now.ToLongTimeString(), "]");

        for (int i = 0; i < args.GetCount(); ++i)
        {
            switch (args.GetType(i))
            {
            case VarType.Bool:
                str += (args.GetBool(i) ? "true" : "false");
                break;

            case VarType.Int:
                str += args.GetInt(i);
                break;

            case VarType.String:
                str += args.GetString(i);
                break;

            case VarType.WideStr:
                str += args.GetWideStr(i);
                break;

            case VarType.Object:
                str += args.GetObject(i);
                break;

            case VarType.Int64:
                str += args.GetInt64(i);
                break;

            case VarType.Float:
                str += args.GetFloat(i);
                break;

            default:
                str += "unknown";
                break;
            }

            str += " | ";
        }
        LogSystem.Log(str);
    }
示例#5
0
        public Int64 QueryInt64(int row, int col)
        {
            if (row >= GetRows() || col >= GetColCount())
            {
                return(0);
            }

            VarList row_value = (VarList)rowSet[row];

            if (row_value.GetType(col) != VarType.Int64)
            {
                return(0);
            }
            return(row_value.GetInt64(col));
        }
示例#6
0
        public string QueryWideStr(int row, int col)
        {
            if (row >= GetRows() || col >= GetColCount())
            {
                return("");
            }

            VarList row_value = (VarList)rowSet[row];

            if (row_value.GetType(col) != VarType.WideStr)
            {
                return("");
            }
            return(row_value.GetWideStr(col));
        }
示例#7
0
        public ObjectID QueryObject(int row, int col)
        {
            if (row >= GetRows() || col >= GetColCount())
            {
                return(EmptyID);
            }

            VarList row_value = (VarList)rowSet[row];

            if (row_value.GetType(col) != VarType.Object)
            {
                return(EmptyID);
            }
            return(row_value.GetObject(col).Clone());
        }
示例#8
0
        public float QueryFloat(int row, int col)
        {
            if (row >= GetRows() || col >= GetColCount())
            {
                return(0.0f);
            }

            VarList row_value = (VarList)rowSet[row];

            if (row_value.GetType(col) != VarType.Float)
            {
                return(0.0f);
            }
            return(row_value.GetFloat(col));
        }
示例#9
0
        public double QueryDouble(int row, int col)
        {
            if (row >= GetRows() || col >= GetColCount())
            {
                return(0.0);
            }

            VarList row_value = (VarList)rowSet[row];

            if (row_value.GetType(col) != VarType.Double)
            {
                return(0.0);
            }
            return(row_value.GetDouble(col));
        }
示例#10
0
    /// <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;
            }
        }
    }
示例#11
0
        public bool CreateRole(ref VarList args)
        {
            try
            {
                if ((args.GetCount() < 2) || (args.GetType(1) != VarType.WideStr))
                {
                    LogSystem.Log("arguments error");
                    return(false);
                }

                string roleName = args.GetWideStr(1);
                //role name
                byte[] name = new byte[ServerInfo.ROLENAME_MAX_LENGTH * 2 + 1];

                Array.Copy(System.Text.Encoding.Default.GetBytes(roleName), name, roleName.Length);

                //verify
                // byte[] verify = new byte[16];

                StoreArchive ar = StoreArchive.Load(m_buffer, m_buffer.Length);

                ar.WriteInt8(GlobalClineMsgId.CLIENT_CREATE_ROLE);
                ar.WriteInt32(args.GetInt(0));
                ar.WriteUnicodeLen(roleName, (ServerInfo.ROLENAME_MAX_LENGTH + 1) * 2);
                ///ar.WriteUserDataNoLen(verify);
                ar.WriteUInt16((uint)(args.GetCount() - 2));
                ///ar.WriteInt32();

                if (!AddMsgVarList(ar, args, 2, args.GetCount()))
                {
                    return(false);
                }

                return(m_sender.Send(ar.GetData(), ar.GetLength()));
            }
            catch (System.Exception ex)
            {
                LogSystem.LogError(ex);
                return(false);
            }
        }
示例#12
0
        public bool CreateRole(ref VarList args)
        {
            try
            {
                if ((args.GetCount() < 2) || (args.GetType(1) != VarType.WideStr))
                {
                    //Log.Trace("arguments error");
                    return(false);
                }

                string roleName = args.GetWideStr(1);
                //role name
                //byte[] name = new byte[ServerInfo.ROLENAME_MAX_LENGTH * 2 + 1];
                //Array.Copy(System.Text.Encoding.Default.GetBytes(roleName), name, roleName.Length);

                //verify
                byte[] verify = new byte[4];

                //校验码4个字节,对消息加密获取验证码
                byte[] varify = MsgEncode.Instance.Encode(ref args, 4);

                StoreArchive ar = new StoreArchive(m_buffer, m_buffer.Length);
                ar.WriteInt8(GlobalClineMsgId.CLIENT_CREATE_ROLE);
                ar.WriteInt32(args.GetInt(0));
                ar.WriteUnicodeLen(roleName, (ServerInfo.ROLENAME_MAX_LENGTH + 1) * 2);
                ar.WriteInt16(1);
                ar.WriteInt8(2);
                ar.WriteInt32(args.GetInt(2));
                //ar.WriteUserDataNoLen(verify);
                ar.WriteUserDataNoLen(varify);
                ar.WriteInt8(0);
                return(m_sender.Send(ar.GetData(), ar.GetLength()));
            }
            catch (System.Exception ex)
            {
                Log.TraceExcep(ref ex);
                return(false);
            }
        }
示例#13
0
        public string GetWideStr(int row, int col)
        {
            try
            {
                if (row >= GetRowCount() || col >= GetColcount())
                {
                    return("");
                }

                VarList row_value = (VarList)rowSet[row];
                if (row_value.GetType(col) != VarType.WideStr)
                {
                    return("");
                }
                return(row_value.GetWideStr(col));
            }
            catch (Exception ex)
            {
                Log.TraceExcep(ref ex);
                return("");
            }
        }
示例#14
0
        public string GetWideStr(int row, int col)
        {
            try
            {
                if (row >= GetRowCount() || col >= GetColcount())
                {
                    return(string.Empty);
                }

                VarList row_value = (VarList)rowSet[row];
                if (row_value.GetType(col) != VarType.WideStr)
                {
                    return(string.Empty);
                }
                return(row_value.GetWideStr(col));
            }
            catch (Exception ex)
            {
                LogSystem.LogError(ex);
                return(string.Empty);
            }
        }
示例#15
0
        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;
        }
示例#16
0
        int MsgVarListLen(ref VarList args,
                          int beg, int end)
        {
            int len = 0;

            try
            {
                for (int i = beg; i < end; i++)
                {
                    switch (args.GetType(i))
                    {
                    case VarType.Int:
                    {
                        len += 1;
                        len += 4;
                    }
                    break;

                    case VarType.Int64:
                    {
                        len += 1;
                        len += 8;
                    }
                    break;

                    case VarType.Float:
                    {
                        len += 1;
                        len += 4;
                    }
                    break;

                    case VarType.Double:
                    {
                        len += 1;
                        len += 4;
                    }
                    break;

                    case VarType.String:
                    {
                        len += 1;
                        len += 4;
                        len += (Encoding.Default.GetByteCount(args.GetString(i)) + 1) * 2;
                    }
                    break;

                    case VarType.WideStr:
                    {
                        len += 1;
                        len += 4;
                        len += (Encoding.Default.GetByteCount(args.GetWideStr(i)) + 1) * 2;
                    }
                    break;

                    case VarType.Object:
                    {
                        len += 1;
                        len += 8;
                    }
                    break;

                    default:
                        //Log.Trace("unkown data type");
                        break;
                    } //end switch
                }     //end for
            }
            catch (Exception ex)
            {
                //Log.Trace("Exception:" + ex.ToString());
                return(len);
            }//end try catch
            return(len);
        }
示例#17
0
        bool AddMsgVarList(ref byte[] data, ref int index, ref VarList args,
                           int beg, int end)
        {
            try
            {
                for (int i = beg; i < end; i++)
                {
                    switch (args.GetType(i))
                    {
                    case VarType.Int:
                    {
                        WriteInt8(ref data, ref index, VarType.Int);
                        WriteInt32(ref data, ref index, (uint)args.GetInt(i));
                    }
                    break;

                    case VarType.Int64:
                    {
                        WriteInt8(ref data, ref index, VarType.Int64);
                        WriteInt64(ref data, ref index, args.GetInt64(i));
                    }
                    break;

                    case VarType.Float:
                    {
                        WriteInt8(ref data, ref index, VarType.Float);
                        WriteFloat(ref data, ref index, args.GetFloat(i));
                    }
                    break;

                    case VarType.Double:
                    {
                        WriteInt8(ref data, ref index, VarType.Double);
                        WriteDouble(ref data, ref index, args.GetDouble(i));
                    }
                    break;

                    case VarType.String:
                    {
                        WriteInt8(ref data, ref index, VarType.String);
                        WriteString(ref data, ref index, args.GetString(i));
                    }
                    break;

                    case VarType.WideStr:
                    {
                        WriteInt8(ref data, ref index, VarType.WideStr);
                        WriteWideStr(ref data, ref index, args.GetWideStr(i));
                    }
                    break;

                    case VarType.Object:
                    {
                        WriteInt8(ref data, ref index, VarType.Object);
                        WriteObject(ref data, ref index, args.GetObject(i));
                    }
                    break;

                    default:
                        //Log.Trace("unkown data type");
                        break;
                    } //end switch
                }     //end for
            }
            catch (Exception ex)
            {
                //Log.Trace("Exception:" + ex.ToString());
                return(false);
            }//end try catch
            return(true);
        }
示例#18
0
        bool AddMsgVarList(ref StoreArchive storeAr, ref VarList args,
                           int beg, int end)
        {
            try
            {
                for (int i = beg; i < end; i++)
                {
                    switch (args.GetType(i))
                    {
                    case VarType.Int:
                    {
                        storeAr.WriteInt8(VarType.Int);
                        storeAr.WriteInt32(args.GetInt(i));
                    }
                    break;

                    case VarType.Int64:
                    {
                        storeAr.WriteInt8(VarType.Int64);
                        storeAr.WriteInt64(args.GetInt64(i));
                    }
                    break;

                    case VarType.Float:
                    {
                        storeAr.WriteInt8(VarType.Float);
                        storeAr.WriteFloat(args.GetFloat(i));
                    }
                    break;

                    case VarType.Double:
                    {
                        storeAr.WriteInt8(VarType.Double);
                        storeAr.WriteDouble(args.GetDouble(i));
                    }
                    break;

                    case VarType.String:
                    {
                        storeAr.WriteInt8(VarType.String);
                        storeAr.WriteString(args.GetString(i));
                    }
                    break;

                    case VarType.WideStr:
                    {
                        storeAr.WriteInt8(VarType.WideStr);
                        storeAr.WriteWideStr(args.GetWideStr(i));
                    }
                    break;

                    case VarType.Object:
                    {
                        storeAr.WriteInt8(VarType.Object);
                        storeAr.WriteObject(args.GetObject(i));
                    }
                    break;

                    default:
                        LogSystem.Log("unkown data type");
                        break;
                    } //end switch
                }     //end for
            }
            catch (Exception ex)
            {
                LogSystem.Log("Exception:", ex.ToString());
                return(false);
            }//end try catch
            return(true);
        }