Ejemplo n.º 1
0
        private void OnJoin(JoinPacket packet, NetPeer peer)
        {
            Debug.Log("[S] Join packet received: " + packet.UserName);

            var serverCharacter = new ServerCharacter(packet.UserName, peer, Gameconfig.StartingPoint[peer.Id]);

            _serverManager.AddCharadcter((byte)peer.Id, serverCharacter);

            //Send join accept
            var ja = new JoinAcceptPacket {
                Id = (byte)peer.Id, UserName = packet.UserName, ServerTick = _serverTick
            };

            peer.Send(WritePacket(ja), SendType.ReliableOrdered);

            // 들어온 친구한테 기존 정보 다 보내줌
            var pj = new CharacterJoinedPacket {
                UserName        = packet.UserName,
                NewCharacter    = true,
                CharacterPacket = serverCharacter.CharacterPacket,
                ServerTick      = _serverTick
            };

            _netManager.SendToAll(WritePacket(pj), SendType.ReliableOrdered, peer);

            // 이전 유저들에게 정보 다 보내줌
            pj.NewCharacter = false;
            foreach (var pair in _serverManager.Characters.Where(pair => pair.Key != (byte)peer.Id))
            {
                pj.UserName        = pair.Value._data.Name;
                pj.CharacterPacket = pair.Value.CharacterPacket;
                peer.Send(WritePacket(pj), SendType.ReliableOrdered);
            }
        }
Ejemplo n.º 2
0
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            ChatStatusPacket packetToHandle  = (ChatStatusPacket)packet;
            ServerCharacter  serverCharacter = (ServerCharacter)worldState.GetCharacter(netState.WorldId);

            if (serverCharacter != null)
            {
                foreach (int mapCharacterId in worldState.Characters)
                {
                    ServerCharacter  characterToUpdate = (ServerCharacter)worldState.GetCharacter(mapCharacterId);
                    NetState         clientSendTo      = characterToUpdate.Owner;
                    ChatStatusPacket packetToSend;

                    if (serverCharacter.IsDead && !characterToUpdate.IsDead)
                    {
                        packetToSend = new ChatStatusPacket(serverCharacter.Id, packetToHandle.State);
                    }
                    else
                    {
                        packetToSend = new ChatStatusPacket(serverCharacter.Id, packetToHandle.State);
                    }

                    clientSendTo.Send(packetToSend);
                }
            }
        }
        private void __sendDestroyedMessage(ServerCharacter serverCharacter)
        {
            var message = new Messages.TurnActionEventMessage();

            message.turnActionEvent = TurnActionEvent.Destroyed;
            message.instanceId      = serverCharacter.Id;

            GameServer.Instance.sendMessage(Messages.Type.TURN_ACTION_EVENT, message);
        }
    //SERVER ONLY
    public void OnStartServer()
    {
        server = gameObject.GetComponent <ServerCharacter>();

        //register for call backs to move player on server
        if (Server.packetHandlers.ContainsKey((int)ClientPackets.CmdMove) == false)
        {
            //add the handler
            Server.packetHandlers.Add((int)ClientPackets.CmdMove, CmdMoveStatic);
        }
    }
Ejemplo n.º 5
0
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            AimToPacket     packetToHandle  = (AimToPacket)packet;
            ServerCharacter serverCharacter = (ServerCharacter)worldState.GetCharacter(netState.WorldId);

            if (serverCharacter != null)
            {
                serverCharacter.SetAimToPosition(new Point(packetToHandle.X, packetToHandle.Y));
                worldState.SendStatChangeToMapCharacters(serverCharacter);
            }
        }
        private void __sendCharacterStateChangedMessage(ServerCharacter serverCharacter)
        {
            var message = new Messages.TurnActionEventMessage();

            message.turnActionEvent = TurnActionEvent.CharacterStateChanged;
            message.instanceId      = serverCharacter.Id;
            message.hp     = serverCharacter.HP;
            message.attack = serverCharacter.AttackChance;

            GameServer.Instance.sendMessage(Messages.Type.TURN_ACTION_EVENT, message);
        }
        public bool damagedBy(ServerCharacter serverCharacter, int extraAmount = 0)
        {
            if (!serverCharacter.attack())
            {
                return(false);
            }

            this.HP            -= serverCharacter.Power + extraAmount;
            serverCharacter.HP -= this.Power;

            return(true);
        }
        private void OnSuccessfulChange(int mapId, int mobileId, int containerID, int itemId, ServerWorldState worldState)
        {
            foreach (int characterId in worldState.GetMapCharacters(mapId))
            {
                if (characterId == mobileId)
                {
                    continue;
                }

                ServerCharacter characterToUpdate = ((ServerCharacter)worldState.GetCharacter(characterId));
                NetState        clientSendTo      = characterToUpdate.Owner;

                clientSendTo.Send(new MoveItemServerPacket(itemId, mobileId, containerID));
            }
        }
Ejemplo n.º 9
0
 IEnumerator ReceiveCharacterState()
 {
   while (true)
   {
     if (this.client == null)
     {
       break;
     }
     byte[] bytes = new byte[1024];
     this.client.Receive(bytes);
     ServerCharacter character = new ServerCharacter(bytes);
     this.playerController.UpdateFromServer(character);
     yield return new WaitForSeconds(.01f);
   }
 }
Ejemplo n.º 10
0
    public void UpdateFromServer(ServerCharacter character)
    {
        Vector3 newPosition = new Vector3(
            character.position.x,
            this.transform.position.y,
            character.position.y
            );
        Vector3 direction = newPosition - this.transform.position;

        if (Vector3.Angle(direction, model.forward) > 20f)
        {
            model.LookAt(model.position + direction, Vector3.up);
        }
        this.transform.position = newPosition;
    }
Ejemplo n.º 11
0
        public ServerCharacter spawnCard(ServerCharacter serverCharacter)
        {
            this.Field.Add(serverCharacter);

            var message = new Messages.TurnActionEventMessage();

            message.turnActionEvent = TurnActionEvent.Instantiated;
            message.playerId        = this.Id;
            message.cardId          = serverCharacter.card.Id;
            message.instanceId      = serverCharacter.Id;
            message.hp     = serverCharacter.HP;
            message.power  = serverCharacter.Power;
            message.attack = serverCharacter.AttackChance;

            GameServer.Instance.sendMessage(Messages.Type.TURN_ACTION_EVENT, message);

            return(serverCharacter);
        }
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            UseItemPacket incomingPacket = (UseItemPacket)packet;
            //if (incomingPacket.MobileId != netState.WorldId)
            //{
            //    netState.SendError(0, string.Format("Invalid CMD: '{0},{1},{2}'.", incomingPacket.PacketId, incomingPacket.MobileId, incomingPacket.ItemId));
            //    return;
            //}

            ServerCharacter serverCharacter = (ServerCharacter)worldState.GetCharacter(netState.WorldId);
            Item            itemToUse       = worldState.GetItem(incomingPacket.ItemId);

            if (serverCharacter != null && itemToUse != null)
            {
                if (itemToUse.IsWorldItem)
                {
                    if (serverCharacter.PickupItem(itemToUse))
                    {
                        worldState.SaveItemPosition(itemToUse);
                        this.OnSuccessfulUse(serverCharacter.CurrentMapId, incomingPacket.MobileId, incomingPacket.ItemId, worldState);
                    }
                }
                else
                {
                    if (itemToUse.Category == ItemCategory.Consumable)
                    {
                        ConsumableItem consumable = (ConsumableItem)itemToUse;
                        if (consumable.Use(serverCharacter, worldState))
                        {
                            worldState.SaveItemUse(itemToUse);
                            this.OnSuccessfulUse(serverCharacter.CurrentMapId, incomingPacket.MobileId, incomingPacket.ItemId, worldState);
                        }
                    }
                    if (itemToUse.Category == ItemCategory.Armor || itemToUse.Category == ItemCategory.Weapon)
                    {
                        if (serverCharacter.Equip(itemToUse))
                        {
                            worldState.SaveCharacterItems(serverCharacter);
                            this.OnSuccessfulUse(serverCharacter.CurrentMapId, incomingPacket.MobileId, incomingPacket.ItemId, worldState);
                        }
                    }
                }
            }
        }
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            AuthPacket         incomingPacket = (AuthPacket)packet;
            PlayerSessionModel session        = worldState.GetPlayerSession(incomingPacket.SessionId);

            //worldState.AuthenticateClient(netState, incomingPacket.SessionId, incomingPacket.CharacterId);

            if (session != null)
            {
                IPAddress sessionIPAddress = IPAddress.Parse(session.ClientAddress);

                if (netState.Address == sessionIPAddress || sessionIPAddress.Equals(IPAddress.IPv6Loopback) || sessionIPAddress.Equals(IPAddress.Loopback))
                {
                    netState.Id = session.Id;
                    ServerCharacter selectedChar = worldState.LoadCharacter(session.CharacterID);
                    if (selectedChar != null)
                    {
                        selectedChar.Owner         = netState;
                        selectedChar.Owner.WorldId = selectedChar.Id;
                        worldState.AddCharacter(selectedChar);
                        netState.WriteConsole("Session confirmed, character: {0} selected.", selectedChar.Id);
                    }
                    else
                    {
                        netState.WriteConsole("AUTHERROR: Invalid characterID: {0}.", session.CharacterID);
                        netState.Dispose();
                    }
                }
                else
                {
                    netState.WriteConsole("AUTHERROR: Session failed, adress '{0}' did not match session address '{1}'.", netState.Address.ToString(), sessionIPAddress.ToString());
                    netState.Dispose();
                }
            }
            else
            {
                netState.WriteConsole("AUTHERROR: Invalid sessionID '{0}'.", incomingPacket.SessionId);
                netState.Dispose();
            }
        }
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            MoveItemPacket incomingPacket = (MoveItemPacket)packet;
            //if (incomingPacket.MobileId != netState.WorldId)
            //{
            //    netState.SendError(0, string.Format("Invalid CMD: '{0},{1},{2}'.", incomingPacket.PacketId, incomingPacket.MobileId, incomingPacket.ItemId));
            //    return;
            //}

            ServerCharacter serverCharacter = (ServerCharacter)worldState.GetCharacter(netState.WorldId);
            Item            item            = (Item)worldState.GetItem(incomingPacket.ItemID);

            if (serverCharacter != null && item != null)
            {
                if (incomingPacket.MoveToID.HasValue) //item.Data.IsWorldItem &&
                {
                    int           containerID = incomingPacket.MoveToID.Value;
                    ContainerItem moveTo      = (ContainerItem)worldState.GetItem(containerID);
                    if (moveTo != null)
                    {
                        if (serverCharacter.MoveItem(item, moveTo))
                        {
                            worldState.SaveItemPosition(item);
                            this.OnSuccessfulChange(serverCharacter.CurrentMapId, serverCharacter.Id, containerID, incomingPacket.ItemID, worldState);
                        }
                    }
                }
                else if (incomingPacket.MoveToPosition.HasValue)
                {
                    Point moveToPostion = incomingPacket.MoveToPosition.Value;
                    if (serverCharacter.MoveItem(item, moveToPostion))
                    {
                        worldState.SaveItemPosition(item);
                        this.OnSuccessfulChange(serverCharacter.CurrentMapId, serverCharacter.Id, moveToPostion, incomingPacket.ItemID, worldState);
                    }
                }
            }
        }
        protected override void OnHandle(IPacket packet, NetState netState, ServerWorldState worldState)
        {
            PerformAbilityPacket incomingPacket = (PerformAbilityPacket)packet;
            ServerCharacter      mobileToUpdate = (ServerCharacter)worldState.GetCharacter(netState.WorldId);

            if (mobileToUpdate != null)
            {
                if (worldState.PerformAbility(incomingPacket.AbilityUsed, mobileToUpdate))
                {
                    foreach (int characterId in worldState.GetMapCharacters(mobileToUpdate.CurrentMapId))
                    {
                        if (characterId == mobileToUpdate.Id)
                        {
                            continue;
                        }

                        ServerCharacter characterToUpdate = ((ServerCharacter)worldState.GetCharacter(characterId));
                        NetState        clientSendTo      = characterToUpdate.Owner;

                        clientSendTo.Send(incomingPacket);
                    }
                }
            }
        }
Ejemplo n.º 16
0
 public virtual void AttachServerCharacter(ServerCharacter sc)
 {
     me = sc;
 }
Ejemplo n.º 17
0
        private void addServerCharacters()
        {
            // TODO: Implement based on scripts!!!

            // create npc owyn
            ServerCharacter npcOwyn = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY_NPC);
            EntityAppearance appearance = new EntityAppearance(PredefinedModelType.HUMAN_MALE);
            appearance.Boots = PredefinedModelBoots.BOOTS_BROWN;
            appearance.Hair = PredefinedModelHair.HAIR_BROWN;
            appearance.Head = PredefinedModelHead.HEAD_1;
            appearance.Pants = PredefinedModelPants.PANTS_BLUE;
            appearance.Shirt = PredefinedModelShirt.SHIRT_LIGHTBROWN;
            appearance.Skin = PredefinedModelSkin.SKIN_PALE;
            npcOwyn.Name = "Owyn";
            npcOwyn.CreateSetInitialAppearance(appearance);
            EntityLocation location = new EntityLocation();
            location.CurrentMap = mapManager.StartPointMap;
            location.Z = 0;
            location.X = 122;
            location.Y = 125;
            location.Rotation = 270;
            location.IsSittingDown = false;
            npcOwyn.CreateSetInitialLocation(location);

            // add npc to the world
            addEntityImplementationToWorld(npcOwyn);
            npcOwyn.LocationChangeMapAtEnterWorld();
            npcOwyn.CreateApplyInitialState();

            // create npc cerdiss
            ServerCharacter npcCerdiss = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY_NPC);
            EntityAppearance appearanceCerdiss = new EntityAppearance(PredefinedModelType.SKELETON);
            npcCerdiss.Name = "Cerdiss";
            npcCerdiss.CreateSetInitialAppearance(appearanceCerdiss);
            EntityLocation locationCerdiss = new EntityLocation();
            locationCerdiss.CurrentMap = mapManager.StartPointMap;
            locationCerdiss.Z = 0;
            locationCerdiss.X = 163;
            locationCerdiss.Y = 29;
            locationCerdiss.Rotation = 180;
            locationCerdiss.IsSittingDown = false;
            locationCerdiss.Dimension = (int)PredefinedDimension.SHADOWS;
            npcCerdiss.CreateSetInitialLocation(locationCerdiss);
            npcCerdiss.CreateApplyInitialState();

            // add npc to the world
            addEntityImplementationToWorld(npcCerdiss);
            npcCerdiss.LocationChangeMapAtEnterWorld();

            for (int i = 0; i < 3; i++)
            {
                // create rat
                ServerCharacter rat1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
                EntityAppearance appearancerat = new EntityAppearance(PredefinedModelType.RAT);
                rat1.CreateSetInitialAppearance(appearancerat);
                rat1.Name = "Rat";
                EntityLocation locationrat = new EntityLocation();
                locationrat.CurrentMap = mapManager.StartPointMap;
                locationrat.Z = 0;
                locationrat.X = (short)(107 + i);
                locationrat.Y = (short)(167 + i);
                locationrat.Rotation = 180;
                locationrat.IsSittingDown = false;
                rat1.CreateSetInitialLocation(locationrat);
                rat1.CreateSetRespawnTime(30000);
                rat1.MaxCombatXP = 2000; // easy
                rat1.CreateApplyInitialState();

                // AI
                WonderingDumbNonAggresiveAIImplementation aiImpl =
                    new WonderingDumbNonAggresiveAIImplementation(locationrat.X, locationrat.Y, 15, 2000);
                rat1.AIAttach(aiImpl);

                // add rat to the world
                addEntityImplementationToWorld(rat1);
                rat1.LocationChangeMapAtEnterWorld();
            }

            for (int i = 0; i < 1; i++)
            {
                // create rat
                ServerCharacter rat1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
                EntityAppearance appearancerat = new EntityAppearance(PredefinedModelType.RAT);
                rat1.CreateSetInitialAppearance(appearancerat);
                rat1.Name = "Rat";
                EntityLocation locationrat = new EntityLocation();
                locationrat.CurrentMap = mapManager.StartPointMap;
                locationrat.Z = 0;
                locationrat.X = (short)(91 + i);
                locationrat.Y = (short)(117 + i);
                locationrat.Rotation = 180;
                locationrat.IsSittingDown = false;
                rat1.CreateSetInitialLocation(locationrat);
                rat1.CreateSetRespawnTime(30000);
                rat1.MaxCombatXP = 4000; // medium
                rat1.CreateApplyInitialState();

                // AI
                WonderingDumbNonAggresiveAIImplementation aiImpl =
                    new WonderingDumbNonAggresiveAIImplementation(locationrat.X, locationrat.Y, 10, 2000);
                rat1.AIAttach(aiImpl);

                // add rat to the world
                addEntityImplementationToWorld(rat1);
                rat1.LocationChangeMapAtEnterWorld();
            }

            for (int i = 0; i < 2; i++)
            {
                // create rabbit
                ServerCharacter rabbit1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
                EntityAppearance appearanceRabbit = new EntityAppearance(PredefinedModelType.BROWN_RABBIT);
                rabbit1.CreateSetInitialAppearance(appearanceRabbit);
                rabbit1.Name = "Rabbit";
                EntityLocation locationRabbit = new EntityLocation();
                locationRabbit.CurrentMap = mapManager.StartPointMap;
                locationRabbit.Z = 0;
                locationRabbit.X = (short)(54 + i);
                locationRabbit.Y = (short)(138 + i);
                locationRabbit.Rotation = 180;
                locationRabbit.IsSittingDown = false;
                rabbit1.CreateSetInitialLocation(locationRabbit);
                rabbit1.CreateSetRespawnTime(40000);
                rabbit1.MaxCombatXP = 4000; // medium
                rabbit1.CreateApplyInitialState();

                // AI
                WonderingDumbNonAggresiveAIImplementation aiImpl =
                    new WonderingDumbNonAggresiveAIImplementation(locationRabbit.X, locationRabbit.Y, 30,3000);
                rabbit1.AIAttach(aiImpl);

                // add rabbit to the world
                addEntityImplementationToWorld(rabbit1);
                rabbit1.LocationChangeMapAtEnterWorld();
            }

            for (int i = 0; i < 2; i++)
            {
                // create rabbit
                ServerCharacter rabbit1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
                EntityAppearance appearanceRabbit = new EntityAppearance(PredefinedModelType.BROWN_RABBIT);
                rabbit1.CreateSetInitialAppearance(appearanceRabbit);
                rabbit1.Name = "Rabbit";
                EntityLocation locationRabbit = new EntityLocation();
                locationRabbit.CurrentMap = mapManager.StartPointMap;
                locationRabbit.Z = 0;
                locationRabbit.X = (short)(27 + i);
                locationRabbit.Y = (short)(41 + i);
                locationRabbit.Rotation = 180;
                locationRabbit.IsSittingDown = false;
                rabbit1.CreateSetInitialLocation(locationRabbit);
                rabbit1.CreateSetRespawnTime(40000);
                rabbit1.MaxCombatXP = 4000; // medium
                rabbit1.CreateApplyInitialState();

                // AI
                WonderingDumbNonAggresiveAIImplementation aiImpl =
                    new WonderingDumbNonAggresiveAIImplementation(locationRabbit.X, locationRabbit.Y, 30, 3000);
                rabbit1.AIAttach(aiImpl);

                // add rabbit to the world
                addEntityImplementationToWorld(rabbit1);
                rabbit1.LocationChangeMapAtEnterWorld();
            }

            for (int i = 0; i < 2; i++)
            {
                // create snake
                ServerCharacter snake1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
                EntityAppearance appearancesnake = new EntityAppearance(PredefinedModelType.SNAKE_1);
                snake1.CreateSetInitialAppearance(appearancesnake);
                snake1.Name = "Snake";
                EntityLocation locationsnake = new EntityLocation();
                locationsnake.CurrentMap = mapManager.StartPointMap;
                locationsnake.Z = 0;
                locationsnake.X = (short)(149 + i);
                locationsnake.Y = (short)(131 + i);
                locationsnake.Rotation = 180;
                locationsnake.IsSittingDown = false;
                snake1.CreateSetInitialLocation(locationsnake);
                snake1.CreateSetRespawnTime(30000);
                snake1.MaxCombatXP = 6000; // hard
                snake1.CreateApplyInitialState();

                // AI
                WonderingDumbNonAggresiveAIImplementation aiImpl =
                    new WonderingDumbNonAggresiveAIImplementation(locationsnake.X, locationsnake.Y, 20, 3000);
                snake1.AIAttach(aiImpl);

                // add snake to the world
                addEntityImplementationToWorld(snake1);
                snake1.LocationChangeMapAtEnterWorld();
            }

            // create troll
            ServerCharacter troll1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
            EntityAppearance appearancetroll = new EntityAppearance(PredefinedModelType.TROLL);
            troll1.CreateSetInitialAppearance(appearancetroll);
            troll1.Name = "Troll";
            EntityLocation locationtroll = new EntityLocation();
            locationtroll.CurrentMap = mapManager.StartPointMap;
            locationtroll.Z = 0;
            locationtroll.X = 74;
            locationtroll.Y = 63;
            locationtroll.Rotation = 90;
            locationtroll.IsSittingDown = false;
            troll1.CreateSetInitialLocation(locationtroll);
            troll1.CreateSetRespawnTime(60000);
            troll1.MaxCombatXP = 20000; // Impossible
            troll1.CreateApplyInitialState();

            // add troll to the world
            addEntityImplementationToWorld(troll1);
            troll1.LocationChangeMapAtEnterWorld();

            // create deer
            ServerCharacter deer1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
            EntityAppearance appearancedeer = new EntityAppearance(PredefinedModelType.DEER);
            deer1.CreateSetInitialAppearance(appearancedeer);
            deer1.Name = "Deer";
            EntityLocation locationdeer = new EntityLocation();
            locationdeer.CurrentMap = mapManager.StartPointMap;
            locationdeer.Z = 0;
            locationdeer.X = 104;
            locationdeer.Y = 19;
            locationdeer.Rotation = 0;
            locationdeer.IsSittingDown = false;
            deer1.CreateSetInitialLocation(locationdeer);
            deer1.CreateSetRespawnTime(60000);
            deer1.MaxCombatXP = 6000; // hard
            deer1.CreateApplyInitialState();

            // AI
            WonderingDumbNonAggresiveAIImplementation aiImplDeer =
                new WonderingDumbNonAggresiveAIImplementation(locationdeer.X, locationdeer.Y, 50, 5000);
            deer1.AIAttach(aiImplDeer);

            // add deer to the world
            addEntityImplementationToWorld(deer1);
            deer1.LocationChangeMapAtEnterWorld();

            // create beaver
            ServerCharacter beaver1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
            EntityAppearance appearancebeaver = new EntityAppearance(PredefinedModelType.DEER);
            beaver1.CreateSetInitialAppearance(appearancebeaver);
            beaver1.Name = "Deer";
            EntityLocation locationbeaver = new EntityLocation();
            locationbeaver.CurrentMap = mapManager.StartPointMap;
            locationbeaver.Z = 0;
            locationbeaver.X = 164;
            locationbeaver.Y = 42;
            locationbeaver.Rotation = 0;
            locationbeaver.IsSittingDown = false;
            beaver1.CreateSetInitialLocation(locationbeaver);
            beaver1.CreateSetRespawnTime(60000);
            beaver1.MaxCombatXP = 4000; // medium
            beaver1.CreateApplyInitialState();

            // AI
            WonderingDumbNonAggresiveAIImplementation aiImplbeaver =
                new WonderingDumbNonAggresiveAIImplementation(locationbeaver.X, locationbeaver.Y, 50, 5000);
            beaver1.AIAttach(aiImplbeaver);

            // add beaver to the world
            addEntityImplementationToWorld(beaver1);
            beaver1.LocationChangeMapAtEnterWorld();

            // create armedSkell
            ServerCharacter armedSkell1 = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
            EntityAppearance appearancearmedSkell = new EntityAppearance(PredefinedModelType.ARMED_SKELETON);
            armedSkell1.CreateSetInitialAppearance(appearancearmedSkell);
            armedSkell1.Name = "Armed Skeleton";
            EntityLocation locationarmedSkell = new EntityLocation();
            locationarmedSkell.CurrentMap = mapManager.StartPointMap;
            locationarmedSkell.Z = 0;
            locationarmedSkell.X = 158;
            locationarmedSkell.Y = 26;
            locationarmedSkell.Rotation = 0;
            locationarmedSkell.IsSittingDown = false;
            locationarmedSkell.Dimension = (int)PredefinedDimension.SHADOWS;
            armedSkell1.CreateSetInitialLocation(locationarmedSkell);
            armedSkell1.CreateSetRespawnTime(60000);
            armedSkell1.MaxCombatXP = 6000; // hard
            armedSkell1.CreateApplyInitialState();

            // AI
            WonderingDumbNonAggresiveAIImplementation aiImplarmedSkell =
                new WonderingDumbNonAggresiveAIImplementation(locationarmedSkell.X, locationarmedSkell.Y, 10, 5000);
            armedSkell1.AIAttach(aiImplarmedSkell);

            // add armedSkell to the world
            addEntityImplementationToWorld(armedSkell1);
            armedSkell1.LocationChangeMapAtEnterWorld();

            // create town person
            ServerCharacter townperson = new ServerCharacter(PredefinedEntityImplementationKind.ENTITY);
            EntityAppearance appearance2 = new EntityAppearance(PredefinedModelType.DWARF_MALE);
            appearance2.Boots = PredefinedModelBoots.BOOTS_BROWN;
            appearance2.Hair = PredefinedModelHair.HAIR_BLOND;
            appearance2.Head = PredefinedModelHead.HEAD_3;
            appearance2.Pants = PredefinedModelPants.PANTS_GREEN;
            appearance2.Shirt = PredefinedModelShirt.SHIRT_BLUE;
            appearance2.Skin = PredefinedModelSkin.SKIN_PALE;
            townperson.Name = "Boric";
            townperson.CreateSetInitialAppearance(appearance2);
            EntityLocation location2 = new EntityLocation();
            location2.CurrentMap = mapManager.StartPointMap;
            location2.Z = 0;
            location2.X = 100;
            location2.Y = 143;
            location2.Rotation = 180;
            location2.IsSittingDown = false;
            townperson.CreateSetInitialLocation(location2);
            townperson.CreateSetRespawnTime(0);
            townperson.MaxCombatXP = 6000; // hard
            townperson.CreateApplyInitialState();

            // AI
            WonderingDumbNonAggresiveAIImplementation aiImpltownperson =
                new WonderingDumbNonAggresiveAIImplementation(location2.X, location2.Y, 60, 10000);
            townperson.AIAttach(aiImpltownperson);

            // add npc to the world
            addEntityImplementationToWorld(townperson);
            townperson.LocationChangeMapAtEnterWorld();
        }
Ejemplo n.º 18
0
 public void removeServerCharacter(ServerCharacter serverCharacter)
 {
     this.Field.Remove(serverCharacter);
 }
Ejemplo n.º 19
0
 public AoeAction(ServerCharacter parent, ref ActionRequestData data)
     : base(parent, ref data)
 {
 }