Exemplo n.º 1
0
        public MasterRenderer3D()
        {
            // Note that shader attributes aren't set here since custom VAOs are created per renderer.
            shadowMapShader = new Shader();
            shadowMapShader.Attach(ShaderTypes.Vertex, "ShadowMap.vert");
            shadowMapShader.Attach(ShaderTypes.Fragment, "ShadowMap.frag");
            shadowMapShader.Initialize();
            shadowMapShader.Use();
            shadowMapShader.SetUniform("image", 0);

            // These default values are arbitrary, just to make sure something shows up.
            Light                  = new GlobalLight();
            Light.Direction        = vec3.UnitX;
            Light.Color            = Color.White;
            Light.AmbientIntensity = 0.1f;

            // TODO: Consider making shadow map size reloadable.
            var accessor = Properties.Access();
            var size     = accessor.GetInt("shadow.map.size");

            shadowMapTarget  = new RenderTarget(size, size, RenderTargetFlags.Depth);
            modelRenderer    = new ModelRenderer(Light);
            spriteBatch3D    = new SpriteBatch3D(Light);
            skeletonRenderer = new SkeletonRenderer(Light);

            IsEnabled = true;
        }
Exemplo n.º 2
0
        protected MeshRenderer(GlobalLight light, string property) : base(light)
        {
            var accessor       = Properties.Access();
            var bufferCapacity = accessor.GetInt(property + ".buffer.capacity");
            var indexCapacity  = accessor.GetInt(property + ".index.capacity");

            GLUtilities.AllocateBuffers(bufferCapacity, indexCapacity, out bufferId, out indexId, GL_STATIC_DRAW);
        }
Exemplo n.º 3
0
        private void RenderGlobalLight(GlobalLight light)
        {
            LightsEffect.Parameters["LightDir"].SetValue(light.Direction);
            LightsEffect.Parameters["LightColor"].SetValue(light.Color.ToVector4());
            LightsEffect.Parameters["LightIntensity"].SetValue(light.Intensity);

            RenderQuad();
        }
Exemplo n.º 4
0
 private static GlobalShaderResources.Light ToLight(GlobalLight mapLight)
 {
     return(new GlobalShaderResources.Light
     {
         Ambient = mapLight.Ambient,
         Color = mapLight.Color,
         Direction = Vector3.Normalize(mapLight.Direction)
     });
 }
Exemplo n.º 5
0
 public General(string header, GlobalLight globalLight, Fog fog, BackGroundColor backGroundColor, Frustum frustum, DirectionLightAmbient directionLightAmbient, DirectionLightDiffuse directionLightDiffuse)
 {
     Header                = header;
     GlobalLight           = globalLight;
     Fog                   = fog;
     BackGroundColor       = backGroundColor;
     Frustum               = frustum;
     DirectionLightAmbient = directionLightAmbient;
     DirectionLightDiffuse = directionLightDiffuse;
 }
Exemplo n.º 6
0
        public ModelRenderer(GlobalLight light) : base(light, "model")
        {
            shader = new Shader();
            shader.Attach(ShaderTypes.Vertex, "ModelShadow.vert");
            shader.Attach(ShaderTypes.Fragment, "ModelShadow.frag");
            shader.AddAttribute <float>(3, GL_FLOAT);
            shader.AddAttribute <float>(2, GL_FLOAT);
            shader.AddAttribute <float>(3, GL_FLOAT);

            Bind(bufferId, indexId);
        }
Exemplo n.º 7
0
 // Start is called before the first frame update
 void Start()
 {
     if (Instance != null)
     {
         DestroyImmediate(this);
     }
     else
     {
         Instance = this;
     }
 }
Exemplo n.º 8
0
 void Start()
 {
     if (instance != null && instance != this)
     {
         Destroy(gameObject);
     }
     else
     {
         instance = this;
     }
     DontDestroyOnLoad(gameObject);
 }
Exemplo n.º 9
0
        public SkeletonRenderer(GlobalLight light) : base(light, "skeletal")
        {
            shader = new Shader();
            shader.Attach(ShaderTypes.Vertex, "Skeletal.vert");
            shader.Attach(ShaderTypes.Fragment, "ModelShadow.frag");
            shader.AddAttribute <float>(3, GL_FLOAT);
            shader.AddAttribute <float>(2, GL_FLOAT);
            shader.AddAttribute <float>(3, GL_FLOAT);
            shader.AddAttribute <float>(2, GL_FLOAT);
            shader.AddAttribute <short>(2, GL_SHORT, ShaderAttributeFlags.IsInteger);

            shadowShader = new Shader();
            shadowShader.Attach(ShaderTypes.Vertex, "ShadowMapSkeletal.vert");
            shadowShader.Attach(ShaderTypes.Fragment, "ShadowMap.frag");
            shadowShader.Initialize();
            shadowShader.Use();
            shadowShader.SetUniform("image", 0);

            Bind(bufferId, indexId);
        }
Exemplo n.º 10
0
        public static MapLights ReadLights(string path)
        {
            /*string assetPath = path.Replace(".ded", ".asset");*/
            GameObject subGO = Scene.BeginEditingPrefab(path, "Lights");

            try
            {
                MapLights lights = subGO.AddComponent<MapLights>();

                BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read));

                reader.SkipInt16(); //Usually the area's code
                reader.SkipInt16(); //Usually 1, saw a 20
                short globalLightsCount = reader.ReadInt16();
                reader.SkipInt16(0);
                short globalLightsOffset = reader.ReadInt16();
                reader.SkipInt16(0);
                reader.SkipBytes(8, 0);

                short weirdLightsCount = reader.ReadInt16();
                reader.SkipInt16(0);
                short weirdLightsOffset = reader.ReadInt16();
                reader.SkipInt16(0);
                reader.SkipBytes(8, 0);
                
                short lightsCount = reader.ReadInt16();
                reader.SkipInt16(0);
                short lightsOffset = reader.ReadInt16();
                reader.SkipInt16(0);

                reader.SkipBytes(40, 0);
                short ambientOffset = reader.ReadInt16();
                reader.SkipBytes(24, 0);

                Matrix4x4 transMat = lights.GetComponentInParent<Scene>().GetSH3ToUnityMatrix();

                reader.BaseStream.Position = globalLightsOffset;
                for (int i = 0; i != globalLightsCount; i++)
                {
                    GlobalLight gl = new GlobalLight();
                    gl.rotation = reader.ReadQuaternion();
                    gl.Unknown1 = reader.ReadVector3();
                    reader.SkipInt16(0);
                    gl.Unknown2 = reader.ReadInt16();
                    lights.globalLights.Add(gl);
                }

                reader.BaseStream.Position = weirdLightsOffset;
                for (int i = 0; i != weirdLightsCount; i++)
                {
                    LocalLight ll = new LocalLight();
                    ll.color = reader.ReadColor();
                    ll.Unknown1 = reader.ReadSingle();
                    ll.Range = reader.ReadSingle();
                    reader.SkipBytes(8, 0);
                    ll.position = reader.ReadVector3YInverted();
                    reader.SkipInt16(0x0);
                    ll.Unknown2 = reader.ReadInt16();
                    lights.weirdLights.Add(ll);
                }

                reader.BaseStream.Position = lightsOffset;
                for (int i = 0; i != lightsCount; i++)
                {
                    LocalLight ll = new LocalLight();
                    ll.color = reader.ReadColor();
                    ll.Unknown1 = reader.ReadSingle();
                    ll.Range = reader.ReadSingle();
                    reader.SkipBytes(8, 0);
                    ll.position = reader.ReadVector3YInverted();
                    reader.SkipInt16(0x0);
                    ll.Unknown2 = reader.ReadInt16();
                    lights.localLights.Add(ll);

                    GameObject lightGO = new GameObject("Light " + i);
                    lightGO.transform.SetParent(subGO.transform);
                    lightGO.transform.localPosition = transMat.MultiplyPoint(ll.position);

                    Light light = lightGO.AddComponent<Light>();
                    light.type = LightType.Point;
                    light.range = ll.Range * Scene.GLOBAL_SCALE;
                    light.color = ll.color;
                    light.intensity = 8.0f;
                    light.bounceIntensity = 1.0f;
                }

                reader.BaseStream.Position = ambientOffset;
                lights.Unknown1 = reader.ReadVector4();
                lights.Unknown2 = reader.ReadVector4();
                lights.ambientColor = reader.ReadColor();
                lights.Unknown3 = reader.ReadVector4();

                reader.Close();

                Scene.FinishEditingPrefab(path, subGO);

                return lights;

            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }

            return null;
        }
Exemplo n.º 11
0
        public void Process(byte[] packet, Account a)
        {
            //a.TcpClient.NoDelay = true;
            //a.TcpClient.Client.DontFragment = true;
            //a.TcpClient.Client.NoDelay = false;
            //a.TcpClient.Client.SendBufferSize = 74;
            //a.TcpClient.LingerState = new LingerOption(false, 0);
            //a.TcpClient.SendTimeout = 0;
            //a.TcpClient.Client.SendTimeout = 0;
            //a.TcpClient.Client.LingerState = new LingerOption(false, 0);
            try
            {
                switch (packet[0])
                {
                case 0x80:
                    ServerList serverList = new ServerList();
                    serverList.Build();
                    //serverList.Send(a.TcpClient);
                    a.NetworkStream.Write(serverList.Data, 0, serverList.PacketSize);
                    break;

                case 0xA0:
                    if (a.TcpClient.Client.LocalEndPoint != null)
                    {
                        IPAddress     addr          = ((IPEndPoint)a.TcpClient.Client.LocalEndPoint).Address;
                        Int16         port          = Int16.Parse(((IPEndPoint)a.TcpClient.Client.LocalEndPoint).Port.ToString());
                        ServerConnect serverConnect = new ServerConnect(addr, port, a.AccountID)
                        {
                            GameServerIp =
                                IPAddress.Parse(
                                    ((IPEndPoint)a.TcpClient.Client.RemoteEndPoint).Address.ToString())
                        };
                        serverConnect.Build();
                        a.NetworkStream.Write(serverConnect.Data, 0, serverConnect.PacketSize);
                    }
                    break;

                case 0x91:
                    a.LoadChars();
                    CharacterList characterList = new CharacterList(a.CharList);

                    characterList.Build();

                    a.NetworkStream.Write(characterList.Data, 0, characterList.PacketSize);
                    break;

                case 0x5D:
                    ClientVersion clientVersion = new ClientVersion();
                    clientVersion.Build();
                    clientVersion.Compress();
                    clientVersion.Send(a.NetworkStream);
                    break;



                case 0xBD:

                    UOPackets.ServerPackets.LoginConfirm loginConfirm = new UOPackets.ServerPackets.LoginConfirm();
                    loginConfirm.Body         = 400;
                    loginConfirm.Direction131 = Direction13.North;
                    loginConfirm.X            = 2520;
                    loginConfirm.Y            = 521;
                    loginConfirm.Z            = 0;
                    loginConfirm.MapHeight    = 4096;
                    loginConfirm.MapWidth     = 7168;
                    loginConfirm.Serial       = 2420;
                    loginConfirm.Build();
                    loginConfirm.Compress();

                    loginConfirm.Send(a.NetworkStream);


                    MapChange mapChange = new MapChange();
                    mapChange.MapId = Map102.felucca;
                    mapChange.Build();
                    mapChange.Compress();

                    mapChange.Send(a.NetworkStream);


                    MapPatches mapPatches = new MapPatches();
                    mapPatches.MapsCount = 4;
                    mapPatches.Build();
                    mapPatches.Compress();

                    mapPatches.Send(a.NetworkStream);


                    SeasonChange seasonChange = new SeasonChange();
                    seasonChange.Season750    = Season75.summer;
                    seasonChange.PlayMusic761 = PlayMusic76.yes;
                    seasonChange.Build();
                    seasonChange.Compress();

                    seasonChange.Send(a.NetworkStream);


                    Int16             feat = 0x00;
                    SupportedFeatures supportedFeatures = new SupportedFeatures();
                    feat  = (Int16)Flags73.enablethirddownfeatures;
                    feat += (Int16)Flags73.enableT2Afeatureschatbuttonregions;
                    feat += (Int16)Flags73.enableMLfeatureselvenracespellsskills;
                    feat += (Int16)Flags73.enableAOSfeaturesskillsspellsmapfightbook;
                    feat += (Int16)Flags73.enablerenaissancefeatures;
                    feat += (Int16)Flags73.enableLBRfeaturesskillsmap;
                    supportedFeatures.Flags730 = feat;
                    supportedFeatures.Build();
                    supportedFeatures.Compress();

                    supportedFeatures.Send(a.NetworkStream);


                    MobileUpdate mobileUpdate = new MobileUpdate();
                    mobileUpdate.Direction163 = Direction16.North;
                    mobileUpdate.Flags151     = Flags15.WarMode;
                    mobileUpdate.Hue          = 33770;
                    mobileUpdate.X            = 2520;
                    mobileUpdate.Y            = 521;
                    mobileUpdate.Z            = 0;
                    mobileUpdate.Serial       = 2420;
                    mobileUpdate.Body         = 400;
                    mobileUpdate.Build();
                    mobileUpdate.Compress();

                    mobileUpdate.Send(a.NetworkStream);
                    mobileUpdate.Send(a.NetworkStream);


                    GlobalLight globalLight = new GlobalLight();
                    globalLight.LightLevel240 = LightLevel24.Bright;
                    globalLight.Build();
                    globalLight.Compress();

                    globalLight.Send(a.NetworkStream);


                    Infravision infraVision = new Infravision();
                    infraVision.Active = 0x00;
                    infraVision.Serial = 2420;
                    infraVision.Build();
                    infraVision.Compress();

                    infraVision.Send(a.NetworkStream);


                    mobileUpdate.Send(a.NetworkStream);



                    //TODO: Pegar tudo do BD
                    MobileIncoming mobileIncoming = new MobileIncoming();
                    mobileIncoming.Body         = 400;
                    mobileIncoming.Direction490 = (Direction49)((short)(Direction49.Running) + (short)(Direction49.Up));
                    mobileIncoming.Flags501     = Flags50.Hidden;
                    mobileIncoming.Notoriety512 = Notoriety51.Canbeattacked;
                    mobileIncoming.Serial       = 2420;
                    mobileIncoming.X            = 2520;
                    mobileIncoming.Y            = 521;
                    mobileIncoming.Z            = 0;
                    mobileIncoming.Hue          = 0x83ea;
                    mobileIncoming.Items3.Add(new Items()
                    {
                        ItemSerial = 0x40000380, ItemID = 0x0e7c, ItemLayer = ItemLayer8.Bank, ItemHue = 0x00
                    });
                    mobileIncoming.Items3.Add(new Items()
                    {
                        ItemSerial = 0x7fffd62f, ItemID = 0xa03b, ItemLayer = ItemLayer8.Hair, ItemHue = 0x044e
                    });
                    mobileIncoming.Items3.Add(new Items()
                    {
                        ItemSerial = 0x66666666, ItemID = 0xa03b, ItemLayer = ItemLayer8.Hair, ItemHue = 0x044e
                    });
                    mobileIncoming.Build();
                    mobileIncoming.Compress();

                    mobileIncoming.Send(a.NetworkStream);


                    MobileStatus mobileStatus = new MobileStatus();
                    mobileStatus.Serial              = 2420;
                    mobileStatus.Name                = "lokis                         ".ToCharArray();
                    mobileStatus.HitPoints           = 0x50;
                    mobileStatus.MaximumHitPoints    = 0x50;
                    mobileStatus.AllowNameChange50   = AllowNameChange5.no;
                    mobileStatus.SupportedFeatures61 = SupportedFeatures6.MLattributes;
                    mobileStatus.Gender              = 0x00;
                    mobileStatus.Strength            = 0x3c;
                    mobileStatus.Dexterity           = 0x0a;
                    mobileStatus.Intelligence        = 0x0a;
                    mobileStatus.Stamina             = 0x0a;
                    mobileStatus.MaximumStamina      = 0x0a;
                    mobileStatus.Mana                = 0x0a;
                    mobileStatus.MaximumMana         = 0x0a;
                    mobileStatus.Gold                = 0;
                    mobileStatus.ArmorRating         = 0;
                    mobileStatus.Weight              = 0x0e;
                    mobileStatus.MaximumWeight       = 0x0136;
                    mobileStatus.Race72              = Race7.Human;
                    mobileStatus.StatCap             = 0xe1;
                    mobileStatus.Followers           = 0;
                    mobileStatus.MaximumFollowers    = 5;
                    mobileStatus.FireResistance      = 0;
                    mobileStatus.ColdResistance      = 0;
                    mobileStatus.PoisonResistance    = 0;
                    mobileStatus.EnergyResistance    = 0;
                    mobileStatus.Luck                = 0;
                    mobileStatus.MinimumWeaponDamage = 1;
                    mobileStatus.MaximumWeaponDamage = 5;
                    mobileStatus.TithingPoints       = 0;
                    mobileStatus.Build();
                    mobileStatus.Compress();

                    mobileStatus.Send(a.NetworkStream);


                    WarMode warMode = new WarMode();
                    warMode.Warmode = 0x00;
                    warMode.Build();
                    warMode.Compress();

                    warMode.Send(a.NetworkStream);


                    OPLInfo oplInfo2 = new OPLInfo();
                    oplInfo2.Serial = 2420;
                    oplInfo2.Hash   = 0x400f9705;
                    oplInfo2.Build();
                    oplInfo2.Compress();
                    oplInfo2.Send(a.NetworkStream);


                    //mobileIncoming.Send(a.TcpClient);

                    OPLInfo oplInfo = new OPLInfo();
                    //oplInfo.Serial = 2420;
                    oplInfo.Serial = 0x40013082;
                    //oplInfo.Hash = 0x4301baee;
                    oplInfo.Hash = 0x400f9705;
                    oplInfo.Build();
                    oplInfo.Compress();

                    oplInfo.Send(a.NetworkStream);
                    oplInfo2.Send(a.NetworkStream);


                    supportedFeatures.Send(a.NetworkStream);
                    mobileUpdate.Send(a.NetworkStream);
                    mobileStatus.Send(a.NetworkStream);
                    warMode.Send(a.NetworkStream);
                    mobileIncoming.Send(a.NetworkStream);

                    //oplInfo2.Send(a.NetworkStream);

                    LoginConfirmed loginConfirmed = new LoginConfirmed();
                    loginConfirmed.Build();
                    loginConfirmed.Compress();

                    loginConfirmed.Send(a.NetworkStream);


                    GameTime gameTime = new GameTime();
                    gameTime.Hour   = Convert.ToByte(DateTime.Now.Hour);
                    gameTime.Minute = Convert.ToByte(DateTime.Now.Minute);
                    gameTime.Second = Convert.ToByte(DateTime.Now.Second);
                    gameTime.Build();
                    gameTime.Compress();

                    gameTime.Send(a.NetworkStream);


                    seasonChange.Send(a.NetworkStream);


                    mapChange.Send(a.NetworkStream);


                    /*globalLight.Send(a.NetworkStream);
                     * infraVision.Send(a.NetworkStream);
                     * gameTime.Send(a.NetworkStream);
                     *
                     * DisplayPaperdoll displayPaperdoll = new DisplayPaperdoll();
                     * displayPaperdoll.Flags550 = Flags55.CanLift;
                     * displayPaperdoll.Serial = 400;
                     * displayPaperdoll.Text = "lokis, Apprentice smith                                    ".ToCharArray();
                     * displayPaperdoll.Build();
                     * displayPaperdoll.Compress();
                     *
                     *
                     * displayPaperdoll.Send(a.NetworkStream);
                     *
                     * oplInfo.Send(a.NetworkStream);
                     *
                     * //break;
                     *
                     * //case 0xD6:
                     * globalLight = new GlobalLight();
                     * globalLight.LightLevel240 = LightLevel24.Bright;
                     * globalLight.Build();
                     * globalLight.Compress();
                     *
                     * infraVision = new Infravision();
                     * infraVision.Active = 0x00;
                     * infraVision.Serial = 2420;
                     * infraVision.Build();
                     * infraVision.Compress();
                     *
                     * mapChange = new MapChange();
                     * mapChange.MapId = Map102.felucca;
                     * mapChange.Build();
                     * mapChange.Compress();
                     *
                     * mapChange.Send(a.NetworkStream);
                     * infraVision.Send(a.NetworkStream);
                     * globalLight.Send(a.NetworkStream);
                     *
                     *
                     * mobileUpdate.Send(a.NetworkStream);
                     * mobileStatus.Send(a.NetworkStream);
                     *
                     * warMode.Send(a.NetworkStream);
                     * mobileIncoming.Send(a.NetworkStream);
                     * oplInfo.Send(a.NetworkStream);
                     *
                     * SkillsUpdate skillsUpdate = new SkillsUpdate();
                     * skillsUpdate.ListType220 = ListType22.capped;
                     *
                     *
                     * for (int i = 0; i < 55; i++)
                     * {
                     *  Random rand = new Random();
                     *  Int16 skillBaseValue = 100;
                     *  Int16 skillCappedValue = 100;
                     *  Int16 skillValue = 100;
                     *
                     *  skillsUpdate.Skills.Add(new Skills() { SkillID = (SkillName)i, LockStatus = 0x00, SkillBaseValue = skillBaseValue, SkillCappedValue = skillCappedValue, SkillValue = skillValue });
                     * }
                     *
                     * skillsUpdate.Build();
                     * skillsUpdate.Compress();
                     * skillsUpdate.Send(a.NetworkStream);*/


                    DisplayPaperdoll displayPaperdoll = new DisplayPaperdoll();
                    displayPaperdoll.Flags550 = Flags55.CanLift;
                    displayPaperdoll.Serial   = 2420;
                    displayPaperdoll.Text     = "LoKiS, Apprentice smith";
                    displayPaperdoll.Build();
                    displayPaperdoll.Compress();


                    displayPaperdoll.Send(a.NetworkStream);

                    break;

                case 0x34:

                    SkillsUpdate skillsUpdate = new SkillsUpdate();
                    skillsUpdate.ListType220 = ListType22.capped;


                    for (int i = 0; i < 55; i++)
                    {
                        Random rand             = new Random();
                        Int16  skillBaseValue   = 100;
                        Int16  skillCappedValue = 100;
                        Int16  skillValue       = 100;

                        skillsUpdate.Skills.Add(new Skills()
                        {
                            SkillID = (SkillName)i + 1, LockStatus = 0x00, SkillBaseValue = skillBaseValue, SkillCappedValue = skillCappedValue, SkillValue = skillValue
                        });
                    }

                    skillsUpdate.Build();
                    skillsUpdate.Compress();
                    skillsUpdate.Send(a.NetworkStream);

                    break;

                case 0x02:
                    MovementAccepted movAccepted = new MovementAccepted();

                    movAccepted.Sequence = packet[2];
                    movAccepted.Status   = 0x03;
                    movAccepted.Build();
                    movAccepted.Compress();

                    movAccepted.Send(a.NetworkStream);



                    /*AsciiMessage asciiMessage = new AsciiMessage();
                     * asciiMessage.Serial = 0xFFFFFFFF;
                     * asciiMessage.Hue = 0x3b2;
                     * asciiMessage.Graphic = 0xFFFF;
                     * asciiMessage.Font = 3;
                     * asciiMessage.Name = "PELUPELUPELUPELUPELUPELUPELUU".ToCharArray();
                     * asciiMessage.TextMessage = "PELUDO";
                     * asciiMessage.MessageType140 = MessageType14.System;
                     * asciiMessage.Build();
                     * asciiMessage.Compress();
                     * asciiMessage.Send(a.NetworkStream);*/



                    /* Pacotes
                     * 5D - PlayCharacter CS
                     * BD - ClientVersion SC
                     * BD - ClientVersion CS
                     * 1B - LoginConfirm SC
                     * 34 - MobileQuery CS
                     * BD - ClientVersion CS
                     * BF.05 - ScreenSize CS
                     * BF.0B - ClientLanguage CS
                     * BF.0F - ClientInfo CS
                     * BF.08 - MapChange SC
                     * BF.18 - MapPatches SC
                     * BC - SeasonChange SC
                     * B9 - SupportedFeatures SC
                     * 20 - MobileUpdate SC
                     * 20 - MobileUpdate SC
                     * 4F - GlobalBright SC
                     * 4E - Infravision SC
                     * 20 - MobileUpdate SC
                     * 78 - MobileIncoming SC
                     * 11 - MobileStatus SC
                     * 72 - Warmode SC
                     * 78 - MobileIncoming SC
                     * DC - OPLInfo SC
                     * B9 - SupportedFeatures SC
                     * 20 - MobileUpdate SC
                     * 11 - MobileStatus SC
                     * 72 - Warmode SC
                     * 78 - MobileIncoming SC
                     * 55 - LoginConfirmed SC
                     * 06 - DoubleClick CS
                     * 5B - GameTime SC
                     * BC - SeasonChange SC
                     * BF - MapChange SC
                     * 4F - GlobalBright SC
                     * 4E - Infravision SC
                     * AE - UnicodeMessage SC
                     * D6 - BatchQueryProperties CS
                     * 1C - AsciiMessage SC
                     * 3A - SkillsUpdate SC
                     * 88 - DisplayPaperdoll SC
                     * DC - OPLInfo SC
                     * D6 - BatchQueryProperties CS
                     * BF.24 - Unknown CS
                     */

                    /* Ordem da DoLogin():
                     * LoginConfirm -
                     * MapChange -
                     * SeasonChange -
                     * SupportedFeatures -
                     * MobileUpdate-
                     * MobileUpdate-
                     * MobileUpdate-
                     * MobileIncoming
                     * MobileStatus -
                     * SetWarMode -
                     * SupportedFeatures -
                     * MobileUpdate -
                     * MobileStatus -
                     * MobileIncoming
                     * LoginComplete -
                     * CurrentTime
                     * SeasonChange -
                     * MapChange-
                     * LoginEventArgs
                     */
                    /*
                     * LoginConfirm loginConfirm = new LoginConfirm( a.CharList[0] );
                     * loginConfirm.Build();
                     * loginConfirm.Send(a.TcpClient);
                     *
                     *
                     * UOPackets.ServerPackets.LoginConfirm loginConfirm = new UOPackets.ServerPackets.LoginConfirm();
                     * loginConfirm.Body = 0;
                     * loginConfirm.Direction131 = Direction13.North;
                     * loginConfirm.X = 2520;
                     * loginConfirm.Y = 521;
                     * loginConfirm.Z = 0;
                     *
                     *
                     *
                     * //a.TcpClient.Client.Send(loginConfirm.Data, 0, loginConfirm.PacketSize, SocketFlags.None);
                     *
                     * CharacterMapChange characterMapChange = new CharacterMapChange(0x01);
                     * characterMapChange.Build();
                     * Subcommands subCommands = new Subcommands(characterMapChange);
                     * subCommands.Build();
                     *
                     * characterMapChange.Send(a.TcpClient);
                     * //a.TcpClient.Client.Send(characterMapChange.Data, 0, characterMapChange.PacketSize, SocketFlags.None);
                     *
                     * UOPackets.ServerPackets.SeasonChange seasonChange = new UOPackets.ServerPackets.SeasonChange();
                     * seasonChange.PlayMusic761 = PlayMusic76.yes;
                     * seasonChange.Season750 = Season75.summer;
                     * seasonChange.Build();
                     * seasonChange.Compress();
                     * seasonChange.Send(a.TcpClient);
                     *
                     * UOPackets.ServerPackets.SupportedFeatures supportedFeatures = new UOPackets.ServerPackets.SupportedFeatures();
                     * supportedFeatures.Flags730 = Flags73.enableAOSfeaturesskillsspellsmapfightbook;
                     * supportedFeatures.Build();
                     * supportedFeatures.Compress();
                     * supportedFeatures.Send(a.TcpClient);
                     *
                     * UOPackets.ServerPackets.MobileUpdate mobileUpdate = new UOPackets.ServerPackets.MobileUpdate();
                     * mobileUpdate.Body = 0;
                     * mobileUpdate.Direction163 = Direction16.North;
                     * mobileUpdate.Flags151 = 0;
                     * mobileUpdate.Hue = 0;
                     * mobileUpdate.X = 2520;
                     * mobileUpdate.Y = 521;
                     * mobileUpdate.Z = 0;
                     * mobileUpdate.Serial = 0;
                     * mobileUpdate.Build();
                     * mobileUpdate.Compress();
                     * mobileUpdate.Send(a.TcpClient);
                     * mobileUpdate.Send(a.TcpClient);
                     * mobileUpdate.Send(a.TcpClient);
                     *
                     *
                     * UOPackets.ServerPackets.MobileStatus mobileStatus = new UOPackets.ServerPackets.MobileStatus();
                     * mobileStatus.Serial = 0;
                     * mobileStatus.Name = "teste".ToCharArray();
                     * mobileStatus.HitPoints = 100;
                     * mobileStatus.MaximumHitPoints = 100;
                     * mobileStatus.AllowNameChange50 = AllowNameChange5.yes;
                     * mobileStatus.SupportedFeatures61 = SupportedFeatures6.AOSattributes;
                     * mobileStatus.Gender = 0;
                     * mobileStatus.Strength = 100;
                     * mobileStatus.Dexterity = 100;
                     * mobileStatus.Intelligence = 100;
                     * mobileStatus.Stamina = 100;
                     * mobileStatus.MaximumStamina = 100;
                     * mobileStatus.Mana = 100;
                     * mobileStatus.MaximumMana = 100;
                     * mobileStatus.Gold = 500;
                     * mobileStatus.ArmorRating = 100;
                     * mobileStatus.Weight = 50;
                     * mobileStatus.StatCap = 300;
                     * mobileStatus.Followers = 0;
                     * mobileStatus.MaximumFollowers = 6;
                     * mobileStatus.FireResistance = 0;
                     * mobileStatus.ColdResistance = 0;
                     * mobileStatus.PoisonResistance = 0;
                     * mobileStatus.EnergyResistance = 0;
                     * mobileStatus.Luck = 0;
                     * mobileStatus.MinimumWeaponDamage = 0;
                     * mobileStatus.MaximumWeaponDamage = 100;
                     * mobileStatus.TithingPoints = 0;
                     * mobileStatus.Build();
                     * mobileStatus.Compress();
                     * mobileStatus.Send(a.TcpClient);
                     *
                     *
                     * UOPackets.ServerPackets.WarMode setWarMode = new UOPackets.ServerPackets.WarMode();
                     * setWarMode.Warmode = 0;
                     * setWarMode.Build();
                     * setWarMode.Compress();
                     * setWarMode.Send(a.TcpClient);
                     *
                     *
                     * supportedFeatures.Send(a.TcpClient);
                     * mobileUpdate.Send(a.TcpClient);
                     * mobileStatus.Send(a.TcpClient);
                     *
                     *
                     * UOPackets.LoginComplete loginComplete = new LoginComplete();
                     * loginComplete.Build();
                     * loginComplete.Send(a.TcpClient);
                     *
                     *
                     * seasonChange.Send(a.TcpClient);
                     * UOPackets.ServerPackets.MapChange mapChange = new UOPackets.ServerPackets.MapChange();
                     * mapChange.Build();
                     * mapChange.Send(a.TcpClient);
                     *
                     *
                     *
                     *
                     * //ClientFeatures clientFeatures = new ClientFeatures();
                     * //clientFeatures.Build();
                     *
                     * //a.TcpClient.Client.Send(clientFeatures.m_Data, 0, clientFeatures.PacketSize, SocketFlags.None);
                     * /*
                     * CharacterWarmode characterWarmode = new CharacterWarmode();
                     * characterWarmode.Build();
                     *
                     * a.TcpClient.Client.Send( characterWarmode.Data, 0, characterWarmode.PacketSize, SocketFlags.None );
                     *
                     *
                     *
                     * a.TcpClient.Client.Send(subCommands.Data, 0, subCommands.PacketSize, SocketFlags.None);
                     *
                     *
                     * CharacterSync characterSync = new CharacterSync(a.CharList[0]);
                     * characterSync.Build();
                     *
                     * a.TcpClient.Client.Send(characterSync.Data, 0, characterSync.PacketSize, SocketFlags.None);
                     *
                     * LoginComplete loginComplete = new LoginComplete();
                     * loginComplete.Build();
                     *
                     * a.TcpClient.Client.Send(loginComplete.Data, 0, loginComplete.PacketSize, SocketFlags.None);
                     *
                     */
                    break;
                }
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 12
0
 protected AbstractRenderer3D(GlobalLight light)
 {
     Light = light;
     map   = new Dictionary <K, List <V> >();
     keys  = new List <K>();
 }
Exemplo n.º 13
0
        public void Process(byte[] packet, Account a)
        {
            try
            {
                switch (packet[0])
                {
                case 0x80:
                    ServerList serverList = new ServerList();
                    serverList.Build();
                    a.NetworkStream.Write(serverList.Data, 0, serverList.PacketSize);
                    break;

                case 0xA0:

                    if (a.TcpClient.Client.LocalEndPoint != null)
                    {
                        IPAddress     addr          = ((IPEndPoint)a.TcpClient.Client.LocalEndPoint).Address;
                        Int16         port          = Int16.Parse(((IPEndPoint)a.TcpClient.Client.LocalEndPoint).Port.ToString());
                        ServerConnect serverConnect = new ServerConnect(addr, port, a.AccountID)
                        {
                            GameServerIp = IPAddress.Parse(((IPEndPoint)a.TcpClient.Client.RemoteEndPoint).Address.ToString())
                        };
                        serverConnect.Build();
                        a.NetworkStream.Write(serverConnect.Data, 0, serverConnect.PacketSize);
                    }
                    break;

                case 0x91:
                    a.LoadChars();
                    CharacterList characterList = new CharacterList(a.CharList);

                    characterList.Build();

                    a.NetworkStream.Write(characterList.Data, 0, characterList.PacketSize);
                    break;

                case 0x5D:
                    ClientVersion clientVersion = new ClientVersion();
                    clientVersion.Build();
                    clientVersion.Compress();
                    clientVersion.Send(a.NetworkStream);
                    break;

                case 0xBD:

                    UOPackets.ServerPackets.LoginConfirm loginConfirm = new UOPackets.ServerPackets.LoginConfirm();
                    loginConfirm.Body         = 400;
                    loginConfirm.Direction131 = Direction13.North;
                    loginConfirm.X            = 2520;
                    loginConfirm.Y            = 521;
                    loginConfirm.Z            = 0;
                    loginConfirm.MapHeight    = 4096;
                    loginConfirm.MapWidth     = 7168;
                    loginConfirm.Serial       = 2420;
                    loginConfirm.Build();
                    loginConfirm.Compress();

                    loginConfirm.Send(a.NetworkStream);

                    MapChange mapChange = new MapChange();
                    mapChange.MapId = Map102.felucca;
                    mapChange.Build();
                    mapChange.Compress();

                    mapChange.Send(a.NetworkStream);

                    MapPatches mapPatches = new MapPatches();
                    mapPatches.MapsCount = 4;
                    mapPatches.Build();
                    mapPatches.Compress();

                    mapPatches.Send(a.NetworkStream);

                    SeasonChange seasonChange = new SeasonChange();
                    seasonChange.Season750    = Season75.summer;
                    seasonChange.PlayMusic761 = PlayMusic76.yes;
                    seasonChange.Build();
                    seasonChange.Compress();

                    seasonChange.Send(a.NetworkStream);

                    Int16             feat = 0x00;
                    SupportedFeatures supportedFeatures = new SupportedFeatures();
                    feat  = (Int16)Flags73.enablethirddownfeatures;
                    feat += (Int16)Flags73.enableT2Afeatureschatbuttonregions;
                    feat += (Int16)Flags73.enableMLfeatureselvenracespellsskills;
                    feat += (Int16)Flags73.enableAOSfeaturesskillsspellsmapfightbook;
                    feat += (Int16)Flags73.enablerenaissancefeatures;
                    feat += (Int16)Flags73.enableLBRfeaturesskillsmap;
                    supportedFeatures.Flags730 = feat;
                    supportedFeatures.Build();
                    supportedFeatures.Compress();

                    supportedFeatures.Send(a.NetworkStream);

                    MobileUpdate mobileUpdate = new MobileUpdate();
                    mobileUpdate.Direction163 = Direction16.North;
                    mobileUpdate.Flags151     = Flags15.WarMode;
                    mobileUpdate.Hue          = 33770;
                    mobileUpdate.X            = 2520;
                    mobileUpdate.Y            = 521;
                    mobileUpdate.Z            = 0;
                    mobileUpdate.Serial       = 2420;
                    mobileUpdate.Body         = 400;
                    mobileUpdate.Build();
                    mobileUpdate.Compress();

                    mobileUpdate.Send(a.NetworkStream);
                    mobileUpdate.Send(a.NetworkStream);

                    GlobalLight globalLight = new GlobalLight();
                    globalLight.LightLevel240 = LightLevel24.Bright;
                    globalLight.Build();
                    globalLight.Compress();

                    globalLight.Send(a.NetworkStream);

                    Infravision infraVision = new Infravision();
                    infraVision.Active = 0x00;
                    infraVision.Serial = 2420;
                    infraVision.Build();
                    infraVision.Compress();

                    infraVision.Send(a.NetworkStream);

                    mobileUpdate.Send(a.NetworkStream);

                    //TODO: Pegar tudo do BD
                    MobileIncoming mobileIncoming = new MobileIncoming();
                    mobileIncoming.Body         = 400;
                    mobileIncoming.Direction490 = (Direction49)((short)(Direction49.Running) + (short)(Direction49.Up));
                    mobileIncoming.Flags501     = Flags50.Hidden;
                    mobileIncoming.Notoriety512 = Notoriety51.Canbeattacked;
                    mobileIncoming.Serial       = 2420;
                    mobileIncoming.X            = 2520;
                    mobileIncoming.Y            = 521;
                    mobileIncoming.Z            = 0;
                    mobileIncoming.Hue          = 0x83ea;
                    mobileIncoming.Items3.Add(new Item()
                    {
                        ItemSerial = 0x40000380, ItemID = 0x0e7c, ItemLayer = ItemLayer8.Bank, ItemHue = 0x00
                    });
                    mobileIncoming.Items3.Add(new Item()
                    {
                        ItemSerial = 0x7fffd62f, ItemID = 0xa03b, ItemLayer = ItemLayer8.Hair, ItemHue = 0x044e
                    });
                    mobileIncoming.Items3.Add(new Item()
                    {
                        ItemSerial = 0x66666666, ItemID = 0xa03b, ItemLayer = ItemLayer8.Hair, ItemHue = 0x044e
                    });
                    mobileIncoming.Items3.Add(new Item()
                    {
                        ItemSerial = 0x40000223, ItemID = 0xe75,
                        ItemLayer  = ItemLayer8.Backpack, ItemHue = 0x00
                    });
                    mobileIncoming.Build();
                    mobileIncoming.Compress();

                    mobileIncoming.Send(a.NetworkStream);

                    MobileStatus mobileStatus = new MobileStatus();
                    mobileStatus.Serial              = 2420;
                    mobileStatus.Name                = "lokis                         ".ToCharArray();
                    mobileStatus.HitPoints           = 0x50;
                    mobileStatus.MaximumHitPoints    = 0x50;
                    mobileStatus.AllowNameChange50   = AllowNameChange5.no;
                    mobileStatus.SupportedFeatures61 = SupportedFeatures6.MLattributes;
                    mobileStatus.Gender              = 0x00;
                    mobileStatus.Strength            = 0x3c;
                    mobileStatus.Dexterity           = 0x0a;
                    mobileStatus.Intelligence        = 0x0a;
                    mobileStatus.Stamina             = 0x0a;
                    mobileStatus.MaximumStamina      = 0x0a;
                    mobileStatus.Mana                = 0x0a;
                    mobileStatus.MaximumMana         = 0x0a;
                    mobileStatus.Gold                = 0;
                    mobileStatus.ArmorRating         = 0;
                    mobileStatus.Weight              = 0x0e;
                    mobileStatus.MaximumWeight       = 0x0136;
                    mobileStatus.Race72              = Race7.Human;
                    mobileStatus.StatCap             = 0xe1;
                    mobileStatus.Followers           = 0;
                    mobileStatus.MaximumFollowers    = 5;
                    mobileStatus.FireResistance      = 0;
                    mobileStatus.ColdResistance      = 0;
                    mobileStatus.PoisonResistance    = 0;
                    mobileStatus.EnergyResistance    = 0;
                    mobileStatus.Luck                = 0;
                    mobileStatus.MinimumWeaponDamage = 1;
                    mobileStatus.MaximumWeaponDamage = 5;
                    mobileStatus.TithingPoints       = 0;
                    mobileStatus.Build();
                    mobileStatus.Compress();

                    mobileStatus.Send(a.NetworkStream);

                    WarMode warMode = new WarMode();
                    warMode.Warmode = 0x00;
                    warMode.Build();
                    warMode.Compress();

                    warMode.Send(a.NetworkStream);

                    OPLInfo oplInfo2 = new OPLInfo();
                    oplInfo2.Serial = 2420;
                    oplInfo2.Hash   = 0x400f9705;
                    oplInfo2.Build();
                    oplInfo2.Compress();
                    oplInfo2.Send(a.NetworkStream);


                    //mobileIncoming.Send(a.TcpClient);

                    OPLInfo oplInfo = new OPLInfo();
                    //oplInfo.Serial = 2420;
                    oplInfo.Serial = 0x40013082;
                    //oplInfo.Hash = 0x4301baee;
                    oplInfo.Hash = 0x400f9705;
                    oplInfo.Build();
                    oplInfo.Compress();

                    oplInfo.Send(a.NetworkStream);
                    oplInfo2.Send(a.NetworkStream);

                    supportedFeatures.Send(a.NetworkStream);
                    mobileUpdate.Send(a.NetworkStream);
                    mobileStatus.Send(a.NetworkStream);
                    warMode.Send(a.NetworkStream);
                    mobileIncoming.Send(a.NetworkStream);

                    LoginConfirmed loginConfirmed = new LoginConfirmed();
                    loginConfirmed.Build();
                    loginConfirmed.Compress();

                    loginConfirmed.Send(a.NetworkStream);

                    GameTime gameTime = new GameTime();
                    gameTime.Hour   = Convert.ToByte(DateTime.Now.Hour);
                    gameTime.Minute = Convert.ToByte(DateTime.Now.Minute);
                    gameTime.Second = Convert.ToByte(DateTime.Now.Second);
                    gameTime.Build();
                    gameTime.Compress();

                    gameTime.Send(a.NetworkStream);

                    seasonChange.Send(a.NetworkStream);

                    mapChange.Send(a.NetworkStream);

                    DisplayPaperdoll displayPaperdoll = new DisplayPaperdoll();
                    displayPaperdoll.Flags550 = Flags55.CanLift;
                    displayPaperdoll.Serial   = 2420;
                    displayPaperdoll.Text     = "LoKiS, Apprentice smith";
                    displayPaperdoll.Build();
                    displayPaperdoll.Compress();

                    displayPaperdoll.Send(a.NetworkStream);

                    break;

                case 0x34:

                    SkillsUpdate skillsUpdate = new SkillsUpdate();
                    skillsUpdate.ListType220 = ListType22.capped;

                    Random rand = new Random();
                    for (int i = 0; i < 55; i++)
                    {
                        rand = new Random(new Random().Next() * rand.Next() * DateTime.Now.Millisecond);
                        Int16 skillBaseValue   = (short)rand.Next(1, 500);
                        Int16 skillCappedValue = (short)rand.Next(501, 1000);
                        Int16 skillValue       = (short)rand.Next(skillBaseValue, skillCappedValue);

                        //skillsUpdate.Skills.Add(new UOPackets.Skill() { SkillID = (SkillName)i+1, LockStatus = 0x00, SkillBaseValue = skillBaseValue, SkillCappedValue = skillCappedValue, SkillValue = skillValue });
                    }

                    skillsUpdate.Build();
                    skillsUpdate.Compress();
                    skillsUpdate.Send(a.NetworkStream);

                    break;

                case 0x02:
                    MovementAccepted movAccepted = new MovementAccepted();

                    movAccepted.Sequence = packet[2];
                    movAccepted.Status   = 0x03;
                    movAccepted.Build();
                    movAccepted.Compress();

                    movAccepted.Send(a.NetworkStream);

                    break;

                case 0x06:
                    //Ask the server if we can use an object (double click).
                    //5 bytes
                    //from client
                    //byte	ID (06)
                    //dword	Item Serial

                    UOPackets.ClientPackets.UseRequest useRequest = new UOPackets.ClientPackets.UseRequest();



                    //useRequest.

                    break;
                }
            }
            catch (Exception ex)
            {
            }
        }
Exemplo n.º 14
0
 private void Start()
 {
     globalLight = GlobalLight.Instance;
     blindLight.SetActive(false);
 }
Exemplo n.º 15
0
        public unsafe SpriteBatch3D(GlobalLight light) : base(light)
        {
            GLUtilities.GenerateBuffers(out bufferId, out indexId);

            shader = new Shader();
            shader.Attach(ShaderTypes.Vertex, "Sprite3D.vert");
            shader.Attach(ShaderTypes.Fragment, "Sprite3D.frag");
            shader.AddAttribute <float>(3, GL_FLOAT);
            shader.AddAttribute <float>(2, GL_FLOAT);

            Bind(bufferId, indexId);

            // Buffer vertex data.
            vec2[] points =
            {
                -vec2.Ones,
                new vec2(-1,  1),
                new vec2(1,  -1),
                vec2.Ones
            };

            // Dividing each point by two gives the entire quad a unit length of one.
            for (int i = 0; i < points.Length; i++)
            {
                points[i] /= 2;
            }

            // Modifying the source order causes sprites to appear the right way up (and not flipped horizontally).
            vec2[] sources =
            {
                vec2.UnitY,
                vec2.Zero,
                vec2.Ones,
                vec2.UnitX
            };

            float[] data = new float[20];

            for (int i = 0; i < points.Length; i++)
            {
                var p = points[i];
                var s = sources[i];

                int start = i * 5;

                data[start]     = p.x;
                data[start + 1] = p.y;
                data[start + 2] = 0;
                data[start + 3] = s.x;
                data[start + 4] = s.y;
            }

            glBindBuffer(GL_ARRAY_BUFFER, bufferId);

            fixed(float *address = &data[0])
            {
                glBufferData(GL_ARRAY_BUFFER, sizeof(float) * (uint)data.Length, address, GL_STATIC_DRAW);
            }

            // Buffer index data.
            ushort[] indices = new ushort[4];

            for (int i = 0; i < indices.Length; i++)
            {
                indices[i] = (ushort)i;
            }

            glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexId);

            fixed(ushort *address = &indices[0])
            {
                glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(ushort) * 4, address, GL_STATIC_DRAW);
            }
        }