Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Animal Tameng System
ReSpoT
сообщение 14.4.2009, 23:12
Сообщение #21


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Скорее всего ты ожидал ответа "а как ето сделать?"
ну чтож.. не буду тебя удивлять.. как ето сделать ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 14.4.2009, 23:24
Сообщение #22


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Оказалось достаточно включить голову (IMG:style_emoticons/default/smile.gif)
Код
            if ( version >= 17 )
            {
                m_IsMating = reader.ReadBool();
                m_ABPoints = reader.ReadInt();
                m_Exp = reader.ReadInt();
                m_NextLevel = reader.ReadInt();
                m_Level = reader.ReadInt();
                m_MaxLevel = reader.ReadInt();
                m_AllowMating = reader.ReadBool();
                m_Evolves = reader.ReadBool();
                m_Gen = reader.ReadInt();
                m_MatingDelay = reader.ReadDateTime();
                m_Form1 = reader.ReadInt();
                m_Form2 = reader.ReadInt();
                m_Form3 = reader.ReadInt();
                m_Form4 = reader.ReadInt();
                m_Form5 = reader.ReadInt();
                m_Form6 = reader.ReadInt();
                m_Form7 = reader.ReadInt();
                m_Form8 = reader.ReadInt();
                m_Form9 = reader.ReadInt();
                m_Sound1 = reader.ReadInt();
                m_Sound2 = reader.ReadInt();
                m_Sound3 = reader.ReadInt();
                m_Sound4 = reader.ReadInt();
                m_Sound5 = reader.ReadInt();
                m_Sound6 = reader.ReadInt();
                m_Sound7 = reader.ReadInt();
                m_Sound8 = reader.ReadInt();
                m_Sound9 = reader.ReadInt();
                m_UsesForm1 = reader.ReadBool();
                m_UsesForm2 = reader.ReadBool();
                m_UsesForm3 = reader.ReadBool();
                m_UsesForm4 = reader.ReadBool();
                m_UsesForm5 = reader.ReadBool();
                m_UsesForm6 = reader.ReadBool();
                m_UsesForm7 = reader.ReadBool();
                m_UsesForm8 = reader.ReadBool();
                m_UsesForm9 = reader.ReadBool();
                m_F0 = reader.ReadBool();
                m_F1 = reader.ReadBool();
                m_F2 = reader.ReadBool();
                m_F3 = reader.ReadBool();
                m_F4 = reader.ReadBool();
                m_F5 = reader.ReadBool();
                m_F6 = reader.ReadBool();
                m_F7 = reader.ReadBool();
                m_F8 = reader.ReadBool();
                m_F9 = reader.ReadBool();
                m_RoarAttack = reader.ReadInt();
                m_PetPoisonAttack = reader.ReadInt();
                m_FireBreathAttack = reader.ReadInt();
            }
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 14.4.2009, 23:30
Сообщение #23


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 507
Пользователь №: 7.166



Нет, я ожидал что-то вроде "А... не доглядел, сейчас исправлю" (IMG:style_emoticons/default/rolleyes.gif) Странно вообще, что это не было сделано автором скрипта. Смысл в том что если ты сериализовал какой-то объект, то обязательно должен его десериализовать. Например у тебя
Код
// Version 14
writer.Write( (bool)m_RemoveIfUntamed );
writer.Write( (int)m_RemoveStep );
// Version 17 FS:ATS EDITS
writer.Write((bool)m_IsMating);
writer.Write((int)m_ABPoints);

Значит в десериализации следом за
Код
m_RemoveIfUntamed = reader.ReadBool();
m_RemoveStep = reader.ReadInt();

должны быть десериализованы булево и целочисленное значение
Код
if ( version >= 17 )
{
    m_IsMating = reader.ReadBool();
    m_ABPoints = reader.ReadInt();
    ...
}

и так далее в том же порядке

P.S. Ну вот.. быстрее сообразил, чем я пример накатал (IMG:style_emoticons/default/biggrin.gif)

Сообщение отредактировал Soteric - 14.4.2009, 23:31
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 15.4.2009, 0:08
Сообщение #24


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Но однако и после десереализации того куска, мне предлогают удалять мобайлсов и нпц (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 15.4.2009, 7:48
Сообщение #25


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 507
Пользователь №: 7.166



Запость чего получилось
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 15.4.2009, 12:27
Сообщение #26


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



вот что получилось
Код
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int) 17 ); // version

            writer.Write( (int)m_CurrentAI );
            writer.Write( (int)m_DefaultAI );

            writer.Write( (int)m_iRangePerception );
            writer.Write( (int)m_iRangeFight );

            writer.Write( (int)m_iTeam );

            writer.Write( (double)m_dActiveSpeed );
            writer.Write( (double)m_dPassiveSpeed );
            writer.Write( (double)m_dCurrentSpeed );

            writer.Write( (int) m_pHome.X );
            writer.Write( (int) m_pHome.Y );
            writer.Write( (int) m_pHome.Z );

            // Version 1
            writer.Write( (int) m_iRangeHome );

            int i=0;

            writer.Write( (int) m_arSpellAttack.Count );
            for ( i=0; i< m_arSpellAttack.Count; i++ )
            {
                writer.Write( m_arSpellAttack[i].ToString() );
            }

            writer.Write( (int) m_arSpellDefense.Count );
            for ( i=0; i< m_arSpellDefense.Count; i++ )
            {
                writer.Write( m_arSpellDefense[i].ToString() );
            }

            // Version 2
            writer.Write( (int) m_FightMode );

            writer.Write( (bool) m_bControlled );
            writer.Write( (Mobile) m_ControlMaster );
            writer.Write( (Mobile) m_ControlTarget );
            writer.Write( (Point3D) m_ControlDest );
            writer.Write( (int) m_ControlOrder );
            writer.Write( (double) m_dMinTameSkill );
            // Removed in version 9
            //writer.Write( (double) m_dMaxTameSkill );
            writer.Write( (bool) m_bTamable );
            writer.Write( (bool) m_bSummoned );

            if ( m_bSummoned )
                writer.WriteDeltaTime( m_SummonEnd );

            writer.Write( (int) m_iControlSlots );

            // Version 3
            writer.Write( (int)m_Loyalty );

            // Version 4
            writer.Write( m_CurrentWayPoint );

            // Verison 5
            writer.Write( m_SummonMaster );

            // Version 6
            writer.Write( (int) m_HitsMax );
            writer.Write( (int) m_StamMax );
            writer.Write( (int) m_ManaMax );
            writer.Write( (int) m_DamageMin );
            writer.Write( (int) m_DamageMax );

            // Version 7
            writer.Write( (int) m_PhysicalResistance );
            writer.Write( (int) m_PhysicalDamage );

            writer.Write( (int) m_FireResistance );
            writer.Write( (int) m_FireDamage );

            writer.Write( (int) m_ColdResistance );
            writer.Write( (int) m_ColdDamage );

            writer.Write( (int) m_PoisonResistance );
            writer.Write( (int) m_PoisonDamage );

            writer.Write( (int) m_EnergyResistance );
            writer.Write( (int) m_EnergyDamage );

            // Version 8
            writer.Write( m_Owners, true );

            // Version 10
            writer.Write( (bool) m_IsDeadPet );
            writer.Write( (bool) m_IsBonded );
            writer.Write( (DateTime) m_BondingBegin );
            writer.Write( (DateTime) m_OwnerAbandonTime );

            // Version 11
            writer.Write( (bool) m_HasGeneratedLoot );

            // Version 12
            writer.Write( (bool) m_Paragon );

            // Version 13
            writer.Write( (bool) ( m_Friends != null && m_Friends.Count > 0 ) );

            if ( m_Friends != null && m_Friends.Count > 0 )
                writer.Write( m_Friends, true );

            // Version 14
            writer.Write( (bool)m_RemoveIfUntamed );
            writer.Write( (int)m_RemoveStep );

            // Version 17 FS:ATS EDITS
            writer.Write((bool)m_IsMating);
            writer.Write((int)m_ABPoints);
            writer.Write((int)m_Exp);
            writer.Write((int)m_NextLevel);
            writer.Write((int)m_Level);
            writer.Write((int)m_MaxLevel);
            writer.Write((bool)m_AllowMating);
            writer.Write((bool)m_Evolves);
            writer.Write((int)m_Gen);
            writer.Write((DateTime)m_MatingDelay);
            writer.Write((int)m_Form1);
            writer.Write((int)m_Form2);
            writer.Write((int)m_Form3);
            writer.Write((int)m_Form4);
            writer.Write((int)m_Form5);
            writer.Write((int)m_Form6);
            writer.Write((int)m_Form7);
            writer.Write((int)m_Form8);
            writer.Write((int)m_Form9);
            writer.Write((int)m_Sound1);
            writer.Write((int)m_Sound2);
            writer.Write((int)m_Sound3);
            writer.Write((int)m_Sound4);
            writer.Write((int)m_Sound5);
            writer.Write((int)m_Sound6);
            writer.Write((int)m_Sound7);
            writer.Write((int)m_Sound8);
            writer.Write((int)m_Sound9);
            writer.Write((bool)m_UsesForm1);
            writer.Write((bool)m_UsesForm2);
            writer.Write((bool)m_UsesForm3);
            writer.Write((bool)m_UsesForm4);
            writer.Write((bool)m_UsesForm5);
            writer.Write((bool)m_UsesForm6);
            writer.Write((bool)m_UsesForm7);
            writer.Write((bool)m_UsesForm8);
            writer.Write((bool)m_UsesForm9);
            writer.Write((bool)m_F0);
            writer.Write((bool)m_F1);
            writer.Write((bool)m_F2);
            writer.Write((bool)m_F3);
            writer.Write((bool)m_F4);
            writer.Write((bool)m_F5);
            writer.Write((bool)m_F6);
            writer.Write((bool)m_F7);
            writer.Write((bool)m_F8);
            writer.Write((bool)m_F9);
            writer.Write((int)m_RoarAttack);
            writer.Write((int)m_PetPoisonAttack);
            writer.Write((int)m_FireBreathAttack);

            #region Mondain's Legacy version 15
            writer.Write( (bool) m_Allured );
            #endregion
        }

        private static double[] m_StandardActiveSpeeds = new double[]
            {
                0.175, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.8
            };

        private static double[] m_StandardPassiveSpeeds = new double[]
            {
                0.350, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0, 1.2, 1.6, 2.0
            };

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            m_CurrentAI = (AIType)reader.ReadInt();
            m_DefaultAI = (AIType)reader.ReadInt();

            m_iRangePerception = reader.ReadInt();
            m_iRangeFight = reader.ReadInt();

            m_iTeam = reader.ReadInt();

            m_dActiveSpeed = reader.ReadDouble();
            m_dPassiveSpeed = reader.ReadDouble();
            m_dCurrentSpeed = reader.ReadDouble();

            if ( m_iRangePerception == OldRangePerception )
                m_iRangePerception = DefaultRangePerception;

            m_pHome.X = reader.ReadInt();
            m_pHome.Y = reader.ReadInt();
            m_pHome.Z = reader.ReadInt();

            if ( version >= 1 )
            {
                m_iRangeHome = reader.ReadInt();

                int i, iCount;
                
                iCount = reader.ReadInt();
                for ( i=0; i< iCount; i++ )
                {
                    string str = reader.ReadString();
                    Type type = Type.GetType( str );

                    if ( type != null )
                    {
                        m_arSpellAttack.Add( type );
                    }
                }

                iCount = reader.ReadInt();
                for ( i=0; i< iCount; i++ )
                {
                    string str = reader.ReadString();
                    Type type = Type.GetType( str );

                    if ( type != null )
                    {
                        m_arSpellDefense.Add( type );
                    }            
                }
            }
            else
            {
                m_iRangeHome = 0;
            }

            if ( version >= 2 )
            {
                m_FightMode = ( FightMode )reader.ReadInt();

                m_bControlled = reader.ReadBool();
                m_ControlMaster = reader.ReadMobile();
                m_ControlTarget = reader.ReadMobile();
                m_ControlDest = reader.ReadPoint3D();
                m_ControlOrder = (OrderType) reader.ReadInt();

                m_dMinTameSkill = reader.ReadDouble();

                if ( version < 9 )
                    reader.ReadDouble();

                m_bTamable = reader.ReadBool();
                m_bSummoned = reader.ReadBool();

                if ( m_bSummoned )
                {
                    m_SummonEnd = reader.ReadDeltaTime();
                    new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
                }

                m_iControlSlots = reader.ReadInt();
            }
            else
            {
                m_FightMode = FightMode.Closest;

                m_bControlled = false;
                m_ControlMaster = null;
                m_ControlTarget = null;
                m_ControlOrder = OrderType.None;
            }

            if ( version >= 3 )
                m_Loyalty = reader.ReadInt();
            else
                m_Loyalty = MaxLoyalty; // Wonderfully Happy

            if ( version >= 4 )
                m_CurrentWayPoint = reader.ReadItem() as WayPoint;

            if ( version >= 5 )
                m_SummonMaster = reader.ReadMobile();

            if ( version >= 6 )
            {
                m_HitsMax = reader.ReadInt();
                m_StamMax = reader.ReadInt();
                m_ManaMax = reader.ReadInt();
                m_DamageMin = reader.ReadInt();
                m_DamageMax = reader.ReadInt();
            }

            if ( version >= 7 )
            {
                m_PhysicalResistance = reader.ReadInt();
                m_PhysicalDamage = reader.ReadInt();

                m_FireResistance = reader.ReadInt();
                m_FireDamage = reader.ReadInt();

                m_ColdResistance = reader.ReadInt();
                m_ColdDamage = reader.ReadInt();

                m_PoisonResistance = reader.ReadInt();
                m_PoisonDamage = reader.ReadInt();

                m_EnergyResistance = reader.ReadInt();
                m_EnergyDamage = reader.ReadInt();
            }

            if ( version >= 8 )
                m_Owners = reader.ReadStrongMobileList();
            else
                m_Owners = new List<Mobile>();

            if ( version >= 10 )
            {
                m_IsDeadPet = reader.ReadBool();
                m_IsBonded = reader.ReadBool();
                m_BondingBegin = reader.ReadDateTime();
                m_OwnerAbandonTime = reader.ReadDateTime();
            }

            if ( version >= 11 )
                m_HasGeneratedLoot = reader.ReadBool();
            else
                m_HasGeneratedLoot = true;

            if ( version >= 12 )
                m_Paragon = reader.ReadBool();
            else
                m_Paragon = false;

            if ( version >= 13 && reader.ReadBool() )
                m_Friends = reader.ReadStrongMobileList();
            else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
                ++m_ControlOrder;

            if ( version < 16 )
                Loyalty *= 10;

            double activeSpeed = m_dActiveSpeed;
            double passiveSpeed = m_dPassiveSpeed;

            SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

            bool isStandardActive = false;
            for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
                isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

            bool isStandardPassive = false;
            for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
                isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

            if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
                m_dCurrentSpeed = activeSpeed;
            else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
                m_dCurrentSpeed = passiveSpeed;

            if ( isStandardActive && !m_Paragon )
                m_dActiveSpeed = activeSpeed;

            if ( isStandardPassive && !m_Paragon )
                m_dPassiveSpeed = passiveSpeed;

            if ( version >= 14 )
            {
                m_RemoveIfUntamed = reader.ReadBool();
                m_RemoveStep = reader.ReadInt();
            }

            #region Mondain's Legacy version 15
            if (version >= 17)
                m_Allured = reader.ReadBool();
            #endregion

            if (version >= 17)
            {
                m_IsMating = reader.ReadBool();
                m_ABPoints = reader.ReadInt();
                m_Exp = reader.ReadInt();
                m_NextLevel = reader.ReadInt();
                m_Level = reader.ReadInt();
                m_MaxLevel = reader.ReadInt();
                m_AllowMating = reader.ReadBool();
                m_Evolves = reader.ReadBool();
                m_Gen = reader.ReadInt();
                m_MatingDelay = reader.ReadDateTime();
                m_Form1 = reader.ReadInt();
                m_Form2 = reader.ReadInt();
                m_Form3 = reader.ReadInt();
                m_Form4 = reader.ReadInt();
                m_Form5 = reader.ReadInt();
                m_Form6 = reader.ReadInt();
                m_Form7 = reader.ReadInt();
                m_Form8 = reader.ReadInt();
                m_Form9 = reader.ReadInt();
                m_Sound1 = reader.ReadInt();
                m_Sound2 = reader.ReadInt();
                m_Sound3 = reader.ReadInt();
                m_Sound4 = reader.ReadInt();
                m_Sound5 = reader.ReadInt();
                m_Sound6 = reader.ReadInt();
                m_Sound7 = reader.ReadInt();
                m_Sound8 = reader.ReadInt();
                m_Sound9 = reader.ReadInt();
                m_UsesForm1 = reader.ReadBool();
                m_UsesForm2 = reader.ReadBool();
                m_UsesForm3 = reader.ReadBool();
                m_UsesForm4 = reader.ReadBool();
                m_UsesForm5 = reader.ReadBool();
                m_UsesForm6 = reader.ReadBool();
                m_UsesForm7 = reader.ReadBool();
                m_UsesForm8 = reader.ReadBool();
                m_UsesForm9 = reader.ReadBool();
                m_F0 = reader.ReadBool();
                m_F1 = reader.ReadBool();
                m_F2 = reader.ReadBool();
                m_F3 = reader.ReadBool();
                m_F4 = reader.ReadBool();
                m_F5 = reader.ReadBool();
                m_F6 = reader.ReadBool();
                m_F7 = reader.ReadBool();
                m_F8 = reader.ReadBool();
                m_F9 = reader.ReadBool();
                m_RoarAttack = reader.ReadInt();
                m_PetPoisonAttack = reader.ReadInt();
                m_FireBreathAttack = reader.ReadInt();
            }

            if( version <= 14 && m_Paragon && Hue == 0x31 )
            {
                Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
            }

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
        }
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 15.4.2009, 13:09
Сообщение #27


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 507
Пользователь №: 7.166



Allured десериализуешь раньше, чем остальное
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 15.4.2009, 15:47
Сообщение #28


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Код
                        if (version >= 17)
            {
                m_IsMating = reader.ReadBool();
                m_ABPoints = reader.ReadInt();
                m_Exp = reader.ReadInt();
                m_NextLevel = reader.ReadInt();
                m_Level = reader.ReadInt();
                m_MaxLevel = reader.ReadInt();
                m_AllowMating = reader.ReadBool();
                m_Evolves = reader.ReadBool();
                m_Gen = reader.ReadInt();
                m_MatingDelay = reader.ReadDateTime();
                m_Form1 = reader.ReadInt();
                m_Form2 = reader.ReadInt();
                m_Form3 = reader.ReadInt();
                m_Form4 = reader.ReadInt();
                m_Form5 = reader.ReadInt();
                m_Form6 = reader.ReadInt();
                m_Form7 = reader.ReadInt();
                m_Form8 = reader.ReadInt();
                m_Form9 = reader.ReadInt();
                m_Sound1 = reader.ReadInt();
                m_Sound2 = reader.ReadInt();
                m_Sound3 = reader.ReadInt();
                m_Sound4 = reader.ReadInt();
                m_Sound5 = reader.ReadInt();
                m_Sound6 = reader.ReadInt();
                m_Sound7 = reader.ReadInt();
                m_Sound8 = reader.ReadInt();
                m_Sound9 = reader.ReadInt();
                m_UsesForm1 = reader.ReadBool();
                m_UsesForm2 = reader.ReadBool();
                m_UsesForm3 = reader.ReadBool();
                m_UsesForm4 = reader.ReadBool();
                m_UsesForm5 = reader.ReadBool();
                m_UsesForm6 = reader.ReadBool();
                m_UsesForm7 = reader.ReadBool();
                m_UsesForm8 = reader.ReadBool();
                m_UsesForm9 = reader.ReadBool();
                m_F0 = reader.ReadBool();
                m_F1 = reader.ReadBool();
                m_F2 = reader.ReadBool();
                m_F3 = reader.ReadBool();
                m_F4 = reader.ReadBool();
                m_F5 = reader.ReadBool();
                m_F6 = reader.ReadBool();
                m_F7 = reader.ReadBool();
                m_F8 = reader.ReadBool();
                m_F9 = reader.ReadBool();
                m_RoarAttack = reader.ReadInt();
                m_PetPoisonAttack = reader.ReadInt();
                m_FireBreathAttack = reader.ReadInt();
            }

           #region Mondain's Legacy version 15
            if (version >= 17)
                m_Allured = reader.ReadBool();
            #endregion

            if( version <= 14 && m_Paragon && Hue == 0x31 )
            {
                Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
            }

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
        }

вот так вот сделал, тотже эффект - удаляй говорит всех мобайлов и все (IMG:style_emoticons/default/sad.gif)
В чем причина может быть етой беды ? (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NonExistencE
сообщение 15.4.2009, 16:40
Сообщение #29


******

Группа: Пользователи
Наличность: 0
Пользователь №: 10.626



а в десереализации то что стоит? Он просит удалить всех мобайлов, в том случае, если при десереализации(выгрузке) появляються те св-ва, которые не десереализуються, тоесть ты случайно пропустил какойто версион в десереализации( Пример: у тебя 17 кейсов, а ты начал с 16, или у тебя 2 16х кейса или из кейс 17 ты перекидываешься сразу в кейс 10(goto case 10;)


--------------------
2.3 – Запрещено размещение ссылок в подписи на сторонние ресурсы
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 15.4.2009, 17:21
Сообщение #30


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



можете конкретно сказать вот тут в чем ошибка и как ее исправить
сериализация/десиарилизация
Код
        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int) 17 ); // version

            writer.Write( (int)m_CurrentAI );
            writer.Write( (int)m_DefaultAI );

            writer.Write( (int)m_iRangePerception );
            writer.Write( (int)m_iRangeFight );

            writer.Write( (int)m_iTeam );

            writer.Write( (double)m_dActiveSpeed );
            writer.Write( (double)m_dPassiveSpeed );
            writer.Write( (double)m_dCurrentSpeed );

            writer.Write( (int) m_pHome.X );
            writer.Write( (int) m_pHome.Y );
            writer.Write( (int) m_pHome.Z );

            // Version 1
            writer.Write( (int) m_iRangeHome );

            int i=0;

            writer.Write( (int) m_arSpellAttack.Count );
            for ( i=0; i< m_arSpellAttack.Count; i++ )
            {
                writer.Write( m_arSpellAttack[i].ToString() );
            }

            writer.Write( (int) m_arSpellDefense.Count );
            for ( i=0; i< m_arSpellDefense.Count; i++ )
            {
                writer.Write( m_arSpellDefense[i].ToString() );
            }

            // Version 2
            writer.Write( (int) m_FightMode );

            writer.Write( (bool) m_bControlled );
            writer.Write( (Mobile) m_ControlMaster );
            writer.Write( (Mobile) m_ControlTarget );
            writer.Write( (Point3D) m_ControlDest );
            writer.Write( (int) m_ControlOrder );
            writer.Write( (double) m_dMinTameSkill );
            // Removed in version 9
            //writer.Write( (double) m_dMaxTameSkill );
            writer.Write( (bool) m_bTamable );
            writer.Write( (bool) m_bSummoned );

            if ( m_bSummoned )
                writer.WriteDeltaTime( m_SummonEnd );

            writer.Write( (int) m_iControlSlots );

            // Version 3
            writer.Write( (int)m_Loyalty );

            // Version 4
            writer.Write( m_CurrentWayPoint );

            // Verison 5
            writer.Write( m_SummonMaster );

            // Version 6
            writer.Write( (int) m_HitsMax );
            writer.Write( (int) m_StamMax );
            writer.Write( (int) m_ManaMax );
            writer.Write( (int) m_DamageMin );
            writer.Write( (int) m_DamageMax );

            // Version 7
            writer.Write( (int) m_PhysicalResistance );
            writer.Write( (int) m_PhysicalDamage );

            writer.Write( (int) m_FireResistance );
            writer.Write( (int) m_FireDamage );

            writer.Write( (int) m_ColdResistance );
            writer.Write( (int) m_ColdDamage );

            writer.Write( (int) m_PoisonResistance );
            writer.Write( (int) m_PoisonDamage );

            writer.Write( (int) m_EnergyResistance );
            writer.Write( (int) m_EnergyDamage );

            // Version 8
            writer.Write( m_Owners, true );

            // Version 10
            writer.Write( (bool) m_IsDeadPet );
            writer.Write( (bool) m_IsBonded );
            writer.Write( (DateTime) m_BondingBegin );
            writer.Write( (DateTime) m_OwnerAbandonTime );

            // Version 11
            writer.Write( (bool) m_HasGeneratedLoot );

            // Version 12
            writer.Write( (bool) m_Paragon );

            // Version 13
            writer.Write( (bool) ( m_Friends != null && m_Friends.Count > 0 ) );

            if ( m_Friends != null && m_Friends.Count > 0 )
                writer.Write( m_Friends, true );

            // Version 14
            writer.Write( (bool)m_RemoveIfUntamed );
            writer.Write( (int)m_RemoveStep );

            // Version 17 FS:ATS EDITS
            writer.Write((bool)m_IsMating);
            writer.Write((int)m_ABPoints);
            writer.Write((int)m_Exp);
            writer.Write((int)m_NextLevel);
            writer.Write((int)m_Level);
            writer.Write((int)m_MaxLevel);
            writer.Write((bool)m_AllowMating);
            writer.Write((bool)m_Evolves);
            writer.Write((int)m_Gen);
            writer.Write((DateTime)m_MatingDelay);
            writer.Write((int)m_Form1);
            writer.Write((int)m_Form2);
            writer.Write((int)m_Form3);
            writer.Write((int)m_Form4);
            writer.Write((int)m_Form5);
            writer.Write((int)m_Form6);
            writer.Write((int)m_Form7);
            writer.Write((int)m_Form8);
            writer.Write((int)m_Form9);
            writer.Write((int)m_Sound1);
            writer.Write((int)m_Sound2);
            writer.Write((int)m_Sound3);
            writer.Write((int)m_Sound4);
            writer.Write((int)m_Sound5);
            writer.Write((int)m_Sound6);
            writer.Write((int)m_Sound7);
            writer.Write((int)m_Sound8);
            writer.Write((int)m_Sound9);
            writer.Write((bool)m_UsesForm1);
            writer.Write((bool)m_UsesForm2);
            writer.Write((bool)m_UsesForm3);
            writer.Write((bool)m_UsesForm4);
            writer.Write((bool)m_UsesForm5);
            writer.Write((bool)m_UsesForm6);
            writer.Write((bool)m_UsesForm7);
            writer.Write((bool)m_UsesForm8);
            writer.Write((bool)m_UsesForm9);
            writer.Write((bool)m_F0);
            writer.Write((bool)m_F1);
            writer.Write((bool)m_F2);
            writer.Write((bool)m_F3);
            writer.Write((bool)m_F4);
            writer.Write((bool)m_F5);
            writer.Write((bool)m_F6);
            writer.Write((bool)m_F7);
            writer.Write((bool)m_F8);
            writer.Write((bool)m_F9);
            writer.Write((int)m_RoarAttack);
            writer.Write((int)m_PetPoisonAttack);
            writer.Write((int)m_FireBreathAttack);

            #region Mondain's Legacy version 15
            writer.Write( (bool) m_Allured );
            #endregion
        }

        private static double[] m_StandardActiveSpeeds = new double[]
            {
                0.175, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.6, 0.8
            };

        private static double[] m_StandardPassiveSpeeds = new double[]
            {
                0.350, 0.2, 0.4, 0.5, 0.6, 0.8, 1.0, 1.2, 1.6, 2.0
            };

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            m_CurrentAI = (AIType)reader.ReadInt();
            m_DefaultAI = (AIType)reader.ReadInt();

            m_iRangePerception = reader.ReadInt();
            m_iRangeFight = reader.ReadInt();

            m_iTeam = reader.ReadInt();

            m_dActiveSpeed = reader.ReadDouble();
            m_dPassiveSpeed = reader.ReadDouble();
            m_dCurrentSpeed = reader.ReadDouble();

            if ( m_iRangePerception == OldRangePerception )
                m_iRangePerception = DefaultRangePerception;

            m_pHome.X = reader.ReadInt();
            m_pHome.Y = reader.ReadInt();
            m_pHome.Z = reader.ReadInt();

            if ( version >= 1 )
            {
                m_iRangeHome = reader.ReadInt();

                int i, iCount;
                
                iCount = reader.ReadInt();
                for ( i=0; i< iCount; i++ )
                {
                    string str = reader.ReadString();
                    Type type = Type.GetType( str );

                    if ( type != null )
                    {
                        m_arSpellAttack.Add( type );
                    }
                }

                iCount = reader.ReadInt();
                for ( i=0; i< iCount; i++ )
                {
                    string str = reader.ReadString();
                    Type type = Type.GetType( str );

                    if ( type != null )
                    {
                        m_arSpellDefense.Add( type );
                    }            
                }
            }
            else
            {
                m_iRangeHome = 0;
            }

            if ( version >= 2 )
            {
                m_FightMode = ( FightMode )reader.ReadInt();

                m_bControlled = reader.ReadBool();
                m_ControlMaster = reader.ReadMobile();
                m_ControlTarget = reader.ReadMobile();
                m_ControlDest = reader.ReadPoint3D();
                m_ControlOrder = (OrderType) reader.ReadInt();

                m_dMinTameSkill = reader.ReadDouble();

                if ( version < 9 )
                    reader.ReadDouble();

                m_bTamable = reader.ReadBool();
                m_bSummoned = reader.ReadBool();

                if ( m_bSummoned )
                {
                    m_SummonEnd = reader.ReadDeltaTime();
                    new UnsummonTimer( m_ControlMaster, this, m_SummonEnd - DateTime.Now ).Start();
                }

                m_iControlSlots = reader.ReadInt();
            }
            else
            {
                m_FightMode = FightMode.Closest;

                m_bControlled = false;
                m_ControlMaster = null;
                m_ControlTarget = null;
                m_ControlOrder = OrderType.None;
            }

            if ( version >= 3 )
                m_Loyalty = reader.ReadInt();
            else
                m_Loyalty = MaxLoyalty; // Wonderfully Happy

            if ( version >= 4 )
                m_CurrentWayPoint = reader.ReadItem() as WayPoint;

            if ( version >= 5 )
                m_SummonMaster = reader.ReadMobile();

            if ( version >= 6 )
            {
                m_HitsMax = reader.ReadInt();
                m_StamMax = reader.ReadInt();
                m_ManaMax = reader.ReadInt();
                m_DamageMin = reader.ReadInt();
                m_DamageMax = reader.ReadInt();
            }

            if ( version >= 7 )
            {
                m_PhysicalResistance = reader.ReadInt();
                m_PhysicalDamage = reader.ReadInt();

                m_FireResistance = reader.ReadInt();
                m_FireDamage = reader.ReadInt();

                m_ColdResistance = reader.ReadInt();
                m_ColdDamage = reader.ReadInt();

                m_PoisonResistance = reader.ReadInt();
                m_PoisonDamage = reader.ReadInt();

                m_EnergyResistance = reader.ReadInt();
                m_EnergyDamage = reader.ReadInt();
            }

            if ( version >= 8 )
                m_Owners = reader.ReadStrongMobileList();
            else
                m_Owners = new List<Mobile>();

            if ( version >= 10 )
            {
                m_IsDeadPet = reader.ReadBool();
                m_IsBonded = reader.ReadBool();
                m_BondingBegin = reader.ReadDateTime();
                m_OwnerAbandonTime = reader.ReadDateTime();
            }

            if ( version >= 11 )
                m_HasGeneratedLoot = reader.ReadBool();
            else
                m_HasGeneratedLoot = true;

            if ( version >= 12 )
                m_Paragon = reader.ReadBool();
            else
                m_Paragon = false;

            if ( version >= 13 && reader.ReadBool() )
                m_Friends = reader.ReadStrongMobileList();
            else if ( version < 13 && m_ControlOrder >= OrderType.Unfriend )
                ++m_ControlOrder;

            if ( version < 16 )
                Loyalty *= 10;

            double activeSpeed = m_dActiveSpeed;
            double passiveSpeed = m_dPassiveSpeed;

            SpeedInfo.GetSpeeds( this, ref activeSpeed, ref passiveSpeed );

            bool isStandardActive = false;
            for ( int i = 0; !isStandardActive && i < m_StandardActiveSpeeds.Length; ++i )
                isStandardActive = ( m_dActiveSpeed == m_StandardActiveSpeeds[i] );

            bool isStandardPassive = false;
            for ( int i = 0; !isStandardPassive && i < m_StandardPassiveSpeeds.Length; ++i )
                isStandardPassive = ( m_dPassiveSpeed == m_StandardPassiveSpeeds[i] );

            if ( isStandardActive && m_dCurrentSpeed == m_dActiveSpeed )
                m_dCurrentSpeed = activeSpeed;
            else if ( isStandardPassive && m_dCurrentSpeed == m_dPassiveSpeed )
                m_dCurrentSpeed = passiveSpeed;

            if ( isStandardActive && !m_Paragon )
                m_dActiveSpeed = activeSpeed;

            if ( isStandardPassive && !m_Paragon )
                m_dPassiveSpeed = passiveSpeed;

            if ( version >= 14 )
            {
                m_RemoveIfUntamed = reader.ReadBool();
                m_RemoveStep = reader.ReadInt();
            }

            if (version >= 17)
            {
                m_IsMating = reader.ReadBool();
                m_ABPoints = reader.ReadInt();
                m_Exp = reader.ReadInt();
                m_NextLevel = reader.ReadInt();
                m_Level = reader.ReadInt();
                m_MaxLevel = reader.ReadInt();
                m_AllowMating = reader.ReadBool();
                m_Evolves = reader.ReadBool();
                m_Gen = reader.ReadInt();
                m_MatingDelay = reader.ReadDateTime();
                m_Form1 = reader.ReadInt();
                m_Form2 = reader.ReadInt();
                m_Form3 = reader.ReadInt();
                m_Form4 = reader.ReadInt();
                m_Form5 = reader.ReadInt();
                m_Form6 = reader.ReadInt();
                m_Form7 = reader.ReadInt();
                m_Form8 = reader.ReadInt();
                m_Form9 = reader.ReadInt();
                m_Sound1 = reader.ReadInt();
                m_Sound2 = reader.ReadInt();
                m_Sound3 = reader.ReadInt();
                m_Sound4 = reader.ReadInt();
                m_Sound5 = reader.ReadInt();
                m_Sound6 = reader.ReadInt();
                m_Sound7 = reader.ReadInt();
                m_Sound8 = reader.ReadInt();
                m_Sound9 = reader.ReadInt();
                m_UsesForm1 = reader.ReadBool();
                m_UsesForm2 = reader.ReadBool();
                m_UsesForm3 = reader.ReadBool();
                m_UsesForm4 = reader.ReadBool();
                m_UsesForm5 = reader.ReadBool();
                m_UsesForm6 = reader.ReadBool();
                m_UsesForm7 = reader.ReadBool();
                m_UsesForm8 = reader.ReadBool();
                m_UsesForm9 = reader.ReadBool();
                m_F0 = reader.ReadBool();
                m_F1 = reader.ReadBool();
                m_F2 = reader.ReadBool();
                m_F3 = reader.ReadBool();
                m_F4 = reader.ReadBool();
                m_F5 = reader.ReadBool();
                m_F6 = reader.ReadBool();
                m_F7 = reader.ReadBool();
                m_F8 = reader.ReadBool();
                m_F9 = reader.ReadBool();
                m_RoarAttack = reader.ReadInt();
                m_PetPoisonAttack = reader.ReadInt();
                m_FireBreathAttack = reader.ReadInt();
            }
            #region Mondain's Legacy version 15
            if (version >= 17)
                m_Allured = reader.ReadBool();
            #endregion

            if( version <= 14 && m_Paragon && Hue == 0x31 )
            {
                Hue = Paragon.Hue; //Paragon hue fixed, should now be 0x501.
            }

            CheckStatTimers();

            ChangeAIType(m_CurrentAI);

            AddFollowers();

            if ( IsAnimatedDead )
                Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
        }
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 15.4.2009, 18:47
Сообщение #31


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 507
Пользователь №: 7.166



Еще раз... Сервер запускается нормально. Сейвится. Рестартится с требованием удалить мобов. Последовательность такая?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 15.4.2009, 19:01
Сообщение #32


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Запускается без ошибок, загрузка регионов, загрузка мира - мир не загружается и начинает спрашивать про удаление мобов.

Со старыми сейвами (до того как я ставил ету систему) загружается мир, но както в произвольном порядке вещи делит (например у чара может пропасть шапка и сережки, у когото артефакт - чего-то общего в удаляемых вещах нету), но этот сейв старый, все последние сейвы из бекапа уже "инфецированы" т.е. при загрузке их также требуют удалить мобов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Soteric
сообщение 15.4.2009, 19:07
Сообщение #33


********

Master
Сообщений: 1.377
Регистрация: 7.8.2006
Группа: Пользователи
Наличность: 507
Пользователь №: 7.166



Нужно откатить скрипты до того состояния, в котором были сделаны "инфицированные" сейвы и установить систему по новой. Другого варианта как-то не видится, BaseCreature выглядит нормальным
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
ReSpoT
сообщение 17.4.2009, 1:26
Сообщение #34


*****

Группа: Пользователи
Наличность: 0
Пользователь №: 11.559
Возраст: 23



Откатил все скрипты до исходного состояния, сейвы тоже вставил примерно тогоже состояния, но теперь есть проблема : делит много вещей, причем как было сказано выше удаляюца произовольно, у одного чара пропала токуновская шапка, сережки (с моба выбитые) и рукава (тоже с моба выбитые), у другого почти все вещи.
Еще некоторые предметы "есть, но их нету", например админским чаром я вижу на чаре шапку, но у чара она лежит в бакпаке и одеть он ее не может (также как и любую другую, пробовал ее удалить, но одеть что-нибудь другое также нельзя), если чара убить, потом реснуть, то та шапка окажеца одетая на нем.
вот както так получилось.
Почему? Изза чего ? и как ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.7.2025, 12:38
Designed by Nickostyle