|
Animal Tameng System |
|
|
|
  |
Ответов
ReSpoT |
15.4.2009, 12:27
|

    
Группа: Пользователи Наличность: 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 ); }
|
|
|
|
Сообщений в этой теме
ReSpoT Animal Tameng System 13.4.2009, 7:12 Soteric Требуемая экспа с каждым левелом и так вроде расте... 13.4.2009, 7:26 ReSpoT Нуда точно, експ на след лвл растет, я етого не за... 13.4.2009, 8:17 Soteric Думаю это вопрос математики и твоей фантазии, а не... 13.4.2009, 8:35 ReSpoT Вот с получением експы почти разобрался. но вот пр... 13.4.2009, 9:08 Soteric То что там отображается рассчитывается по той же ф... 13.4.2009, 10:02 ReSpoT Вот как я понял ето дело :
expgainmin = bc.Hi... 13.4.2009, 16:45 Soteric Понял все правильно, и в гампе все должно отражать... 13.4.2009, 17:15 ReSpoT Понял в чем была ошибка, в basecreature не было оп... 13.4.2009, 17:43 NonExistencE ищи в бейскриэйчер, в эвентах где после таминга пр... 13.4.2009, 20:31 ReSpoT Вот после того как доделал ету систему, решил пров... 14.4.2009, 11:46 Soteric В LesserHiryu.cs в методе Deserialize попробуй зам... 14.4.2009, 12:41 ReSpoT вот как у меня выгляит метод Deserialize в Lesser... 14.4.2009, 13:04 Soteric Может так :)
Timer.DelayCall( TimeSpan.Zero, d... 14.4.2009, 13:10 ReSpoT эх, и ето не помогло - аналогичный краш :( 14.4.2009, 15:46 Soteric Убери это вообще :)
if( version == 0 )
... 14.4.2009, 15:49 ReSpoT Ето помогло. Крашей не стало.
Запустил сервер, но... 14.4.2009, 22:13 Soteric Видимо что-то сделал не так с сериализацией в Base... 14.4.2009, 22:50 ReSpoT RE: Animal Tameng System 14.4.2009, 22:54 Soteric Вот это сериализовано
// Version 17 FS:ATS EDI... 14.4.2009, 23:01 ReSpoT Скорее всего ты ожидал ответа "а как ето сдел... 14.4.2009, 23:12 ReSpoT Оказалось достаточно включить голову :)
if ... 14.4.2009, 23:24 Soteric Нет, я ожидал что-то вроде "А... не доглядел,... 14.4.2009, 23:30 ReSpoT Но однако и после десереализации того куска, мне п... 15.4.2009, 0:08 Soteric Запость чего получилось 15.4.2009, 7:48 Soteric Allured десериализуешь раньше, чем остальное 15.4.2009, 13:09 ReSpoT if (version >= 17)
{
m_Is... 15.4.2009, 15:47 NonExistencE а в десереализации то что стоит? Он просит удалить... 15.4.2009, 16:40 ReSpoT можете конкретно сказать вот тут в чем ошибка и к... 15.4.2009, 17:21 Soteric Еще раз... Сервер запускается нормально. Сейвится.... 15.4.2009, 18:47 ReSpoT Запускается без ошибок, загрузка регионов, загрузк... 15.4.2009, 19:01 Soteric Нужно откатить скрипты до того состояния, в которо... 15.4.2009, 19:07 ReSpoT Откатил все скрипты до исходного состояния, сейвы ... 17.4.2009, 1:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|