Beispiel #1
0
        public void createMonsterRange(String mapId, String monsterId, int x, int y, int amount, int range)
        {
            CMonsterObject data = Program.objectsData[monsterId] as CMonsterObject;

            for (int i = 0; i < amount; i++)
            {
                CMonsterObject monster = new CMonsterObject();
                monster.ObjectType    = CObjectType.MONSTER;
                monster.ObjectId      = System.Guid.NewGuid().ToString();
                monster.Level         = data.Level;
                monster.CharacterName = data.CharacterName;
                monster.ResourceId    = data.ResourceId;
                monster.Action        = CAction.STOP;
                monster.Direction     = CDirection.RandomDirection();
                Point pos = randomPointInCircle(x, y, range);
                monster.PosX        = pos.x;
                monster.PosY        = pos.y;
                monster.Speed       = data.Speed;
                monster.HealthMax   = data.HealthMax;
                monster.Health      = data.Health;
                monster.ManaMax     = data.ManaMax;
                monster.Mana        = data.Mana;
                monster.AttackRange = data.AttackRange;
                monster.AttackSpeed = data.AttackSpeed;
                Program.objectList.Add(monster);
                Console.WriteLine("创建角色 " + monsterId + ",Guid:" + monster.ObjectId + ",X:" + monster.PosX + ",Y:" + monster.PosY);
            }
        }
Beispiel #2
0
        public void registerMonsterData(String monsterId, String name, int level, String resourceId, int speed, int health, int mana, int attackRange, float attackSpeed, Boolean passitiveMonster = false)
        {
            CMonsterObject monster = new CMonsterObject();

            monster.ObjectType       = CObjectType.MONSTER;
            monster.Level            = level;
            monster.CharacterName    = name;
            monster.ResourceId       = resourceId;
            monster.Speed            = speed;
            monster.HealthMax        = health;
            monster.Health           = health;
            monster.ManaMax          = mana;
            monster.Mana             = mana;
            monster.AttackRange      = attackRange;
            monster.AttackSpeed      = attackSpeed;
            monster.PassitiveMonster = passitiveMonster;

            Program.objectsData.Add(monsterId, monster);
        }
Beispiel #3
0
    public static void CallAddObject(string strIdent)
    {
        try
        {
            Game game = Game.Instance;
            if (game == null || game.mGameClient == null)
            {
                return;
            }

            IGameSceneObj sceneObj = game.mGameClient.GetSceneObj(strIdent);
            if (sceneObj == null)
            {
                return;
            }

            IObject cObj = null;
            int     type = 0;
            if (!sceneObj.QueryPropInt("ObjectType", ref type))
            {
                LogSystem.Log("could not find type : ", strIdent);

                return;
            }

            string strModel = string.Empty;
            if (!sceneObj.QueryPropString("ResourcePath", ref strModel))
            {
                LogSystem.Log("could not find ResourcePath : ", strIdent);

                return;
            }

            ObjectType ObjType = (ObjectType)type;

            switch (ObjType)
            {
            case ObjectType.ObjectType_Player:
                if (game.mGameClient.IsPlayer(strIdent))
                {
                    cObj = new CRoleObject();
                    ObjectManager.mRole = cObj as CRoleObject;
                }
                else
                {
                    cObj = new CPlayerObject();
                }
                break;

            case ObjectType.ObjectType_Npc:
                cObj = new CNpcObject();
                break;

            case ObjectType.ObjectType_Monster:
                cObj = new CMonsterObject();
                break;

            case ObjectType.ObjectType_Soldier:
            case ObjectType.ObjectType_Creeps:

                break;

            case ObjectType.ObjectType_Born:
                break;
            }

            if (cObj != null)
            {
                cObj.mObjectType   = ObjType;
                cObj.mGameSceneObj = sceneObj;
                cObj.mObjectRes    = strModel;
                cObj.mStrIdent     = strIdent;
                cObj.OnAddObject();
                ObjectManager.AddObject(strIdent, cObj);
                if (cObj is CRoleObject)
                {
                    //GUIManager.CacheView<CharacterPanel>();
                    //GUIManager.CacheView<PlayerMainViewPanel>();
                    //GUIManager.CacheView<PlayerControlPanel>();
                    //GUIManager.CacheView<PlayerStatePanel>();
                    //GUIManager.CacheView<PlayerMapControlPanel>();
                    //GUIManager.CacheView<MainChatPanel>();

                    // 添加到主角的AOI中
                }
                else
                {
                    RangeTools.MotifyObjectAoi(mRole, cObj);
                }
            }
        }
        catch (System.Exception ex)
        {
            LogSystem.LogError("on_add_object catch error", ex.ToString());
        }
    }
Beispiel #4
0
        static void requestObjectList(byte[] data, int recv, Socket socket)
        {
            String objectId = "";
            int    startX   = int.MaxValue;
            int    startY   = int.MaxValue;
            int    width    = int.MaxValue;
            int    height   = int.MaxValue;

            for (int i = 1; i < recv;)
            {
                int length = BitConverter.ToInt32(new byte[] { data[i + 3], data[i + 2], data[i + 1], data[i] }, 0);
                int type   = data[i + 4];
                switch (type)
                {
                case TYPE_INT:
                    byte[] intNumber = new byte[] { data[i + 8], data[i + 7], data[i + 6], data[i + 5] };
                    if (startX == int.MaxValue)
                    {
                        startX = BitConverter.ToInt32(intNumber, 0);
                    }
                    else if (startY == int.MaxValue)
                    {
                        startY = BitConverter.ToInt32(intNumber, 0);
                    }
                    else if (width == int.MaxValue)
                    {
                        width = BitConverter.ToInt32(intNumber, 0);
                    }
                    else if (height == int.MaxValue)
                    {
                        height = BitConverter.ToInt32(intNumber, 0);
                    }
                    break;

                case TYPE_STRING:
                    objectId = Encoding.UTF8.GetString(data, i + 5, length);
                    break;
                }
                i += (length + 5);
            }

            foreach (CGameObject o in objectList)
            {
                if (o.PosX > startX && o.PosX < startX + width && o.PosY > startY && o.PosY < startY + height && o.ObjectId != objectId)
                {
                    CServerPackage package = new CServerPackage();
                    package.success    = ACK_CONFIRM;
                    package.controller = CONTROLLER_INFO;
                    package.action     = ACTION_CAMERAVIEW_OBJECT_LIST;

                    if (o.ObjectType == CObjectType.PLAYER && o is CCharacterObject)
                    {
                        CCharacterObject player = o as CCharacterObject;
                        package.param.Add(new object[] { player.ObjectId.Length, player.ObjectId });
                        package.param.Add(new object[] { 4, player.Level });
                        package.param.Add(new object[] { Encoding.UTF8.GetBytes(player.CharacterName).Length, player.CharacterName });
                        package.param.Add(new object[] { player.ResourceId.Length, player.ResourceId });
                        package.param.Add(new object[] { 4, player.Direction });
                        package.param.Add(new object[] { 4, player.PosX });
                        package.param.Add(new object[] { 4, player.PosY });
                        package.param.Add(new object[] { 4, player.Speed });
                        package.param.Add(new object[] { 4, player.HealthMax });
                        package.param.Add(new object[] { 4, player.Health });
                        package.param.Add(new object[] { 4, player.ManaMax });
                        package.param.Add(new object[] { 4, player.Mana });
                        package.param.Add(new object[] { 4, player.EnergyMax });
                        package.param.Add(new object[] { 4, player.Energy });
                        package.param.Add(new object[] { 4, player.AttackRange });
                        package.param.Add(new object[] { 4, player.AttackSpeed });

                        package.param.Add(new object[] { 4, player.Action });
                        package.param.Add(new object[] { 4, player.TargetX });
                        package.param.Add(new object[] { 4, player.TargetY });
                    }
                    else if (o.ObjectType == CObjectType.MONSTER && o is CMonsterObject)
                    {
                        CMonsterObject monster = o as CMonsterObject;
                        package.param.Add(new object[] { monster.ObjectId.Length, monster.ObjectId });
                        package.param.Add(new object[] { 4, monster.Level });
                        package.param.Add(new object[] { Encoding.UTF8.GetBytes(monster.CharacterName).Length, monster.CharacterName });
                        package.param.Add(new object[] { monster.ResourceId.Length, monster.ResourceId });
                        package.param.Add(new object[] { 4, monster.Direction });
                        package.param.Add(new object[] { 4, monster.PosX });
                        package.param.Add(new object[] { 4, monster.PosY });
                        package.param.Add(new object[] { 4, monster.Speed });
                        package.param.Add(new object[] { 4, monster.HealthMax });
                        package.param.Add(new object[] { 4, monster.Health });
                        package.param.Add(new object[] { 4, monster.ManaMax });
                        package.param.Add(new object[] { 4, monster.Mana });
                        package.param.Add(new object[] { 4, 0 });
                        package.param.Add(new object[] { 4, 0 });
                        package.param.Add(new object[] { 4, monster.AttackRange });
                        package.param.Add(new object[] { 4, monster.AttackSpeed });
                        package.param.Add(new object[] { 4, monster.PassitiveMonster });

                        package.param.Add(new object[] { 4, monster.Action });
                        package.param.Add(new object[] { 4, monster.TargetX });
                        package.param.Add(new object[] { 4, monster.TargetY });
                    }

                    sendPackage(socket, package);
                }
            }

            /*
             * if (other_posX > startX && other_posX < startX + width && other_posY > startY && other_posY < startY + height)
             * {
             *  CServerPackage package = new CServerPackage();
             *  package.success = ACK_CONFIRM;
             *  package.controller = CONTROLLER_INFO;
             *  package.action = ACTION_CAMERAVIEW_OBJECT_LIST;
             *
             *  package.param.Add(new object[] { otherObjectId.Length, otherObjectId });
             *  package.param.Add(new object[] { otherResourceId.Length, otherResourceId });
             *  package.param.Add(new object[] { Encoding.UTF8.GetBytes(otherPlayerName).Length, otherPlayerName });
             *  package.param.Add(new object[] { 4, other_posX });
             *  package.param.Add(new object[] { 4, other_posY });
             *  package.param.Add(new object[] { 4, other_speed });
             *  package.param.Add(new object[] { 4, action1 });
             *  package.param.Add(new object[] { 4, other_targetX });
             *  package.param.Add(new object[] { 4, other_targetY });
             *
             *  sendPackage(socket, package);
             *  //Console.WriteLine("Found a player!");
             *
             *  CServerPackage package1 = new CServerPackage();
             *  package1.success = ACK_CONFIRM;
             *  package1.controller = CONTROLLER_INFO;
             *  package1.action = ACTION_CAMERAVIEW_OBJECT_LIST;
             *
             *  package1.param.Add(new object[] { other1ObjectId.Length, other1ObjectId });
             *  package1.param.Add(new object[] { other1ResourceId.Length, other1ResourceId });
             *  package1.param.Add(new object[] { Encoding.UTF8.GetBytes(other1PlayerName).Length, other1PlayerName });
             *  package1.param.Add(new object[] { 4, other1_posX });
             *  package1.param.Add(new object[] { 4, other1_posY });
             *  package1.param.Add(new object[] { 4, other1_speed });
             *  package1.param.Add(new object[] { 4, action2 });
             *  package1.param.Add(new object[] { 4, other1_targetX });
             *  package1.param.Add(new object[] { 4, other1_targetY });
             *
             *  sendPackage(socket, package1);
             *  //Console.WriteLine("Found a player!");
             * }
             */
            //Console.WriteLine("Request Rectangle: x = " + startX.ToString() + ", y = " + startY.ToString() + ", width = " + width.ToString() + ", height = " + height.ToString());
        }
Beispiel #5
0
    public void InitMonster(List <CloneSceneProperty.CloneSceneMonsterInfo> list)
    {
        if (list == null)
        {
            return;
        }

        int count = list.Count;

        if (count < 1)
        {
            return;
        }

        //GameObject monsterParent = NGUITools.AddChild(gameObject);
        //monsterParent.transform.localPosition = Vector3.zero;
        //monsterParent.name = "Monsters";

        for (int i = 0; i < count; ++i)
        {
            CloneSceneProperty.CloneSceneMonsterInfo csm = list[i];
            if (csm == null)
            {
                continue;
            }

            int     monsterId = csm.mMonsterId;
            Vector3 postion   = csm.mMonsterPosition;
            float   rotation  = csm.mMonsterRotationY;
            float   scale     = csm.mMonsterScale;
            if (scale.Equals(0.0f))
            {
                scale = 1.0f;
            }

            CMonsterObject cObj = new CMonsterObject();

            GameObject go = ResourceManager.Instance.GetMonsterPrefab(monsterId.ToString());
            if (go == null)
            {
                LogSystem.LogError("GetMonsterPrefab Failed, monsterId = " + monsterId);

                continue;
            }

            ++mIndex;

            cObj.mObjId = monsterId;
            cObj.mIndex = mIndex;

            go.name = monsterId.ToString();
            //go.transform.parent = monsterParent.transform;
            go.transform.position   = postion;
            go.transform.rotation   = Quaternion.Euler(0.0f, rotation, 0.0f);
            go.transform.localScale = new Vector3(scale, scale, scale);

            //ui
            GameObject uiPrefab  = ResourceManager.Instance.GetUIPrefab("UMonsterBloodUI");
            Vector2    position2 = Camera.main.WorldToScreenPoint(postion);
            uiPrefab.transform.position = position2;

            cObj.mGameObject = go;
            cObj.mTransform  = go.transform;

            cObj.mPosition = postion;

            cObj.AddComponent <AnimatorComponent>();

            cObj.AddComponent <RestoreComponent>();
            cObj.AddComponent <InjuredComponent>();

            cObj.AddComponent <FindingPathComponent>();
            cObj.AddComponent <MoveComponent>();
            cObj.AddComponent <AttackComponent>();
            cObj.AddComponent <HatredComponent>();
            cObj.AddComponent <PursuitComponent>();

            cObj.AddComponent <SkillComponent>();
            cObj.AddComponent <EffectComponent>();

            RangeTools.MotifyObjectAoi(ObjectManager.mRole, cObj);

            ObjectManager.mObjectsList.Add(cObj);
        }
    }