本文整理汇总了C#中Server.Mobile.ProcessDelta方法的典型用法代码示例。如果您正苦于以下问题:C# Mobile.ProcessDelta方法的具体用法?C# Mobile.ProcessDelta怎么用?C# Mobile.ProcessDelta使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Server.Mobile
的用法示例。
在下文中一共展示了Mobile.ProcessDelta方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnDoubleClick
public override void OnDoubleClick(Mobile from)
{
if ( m_TargLoc == Point3D.Zero || m_TargMap == null )
return;
if ( from.InRange( this, 2 ) && from.InLOS( this ) )
{
if ( ItemID == m_ID1 )
ItemID = m_ID2;
else
ItemID = m_ID1;
if ( m_Msg != null && m_Msg != "" )
from.SendAsciiMessage( m_Msg );
Effects.SendLocationParticles( EffectItem.Create( from.Location, from.Map, EffectItem.DefaultDuration ), 0x3728, 10, 10, 2023 );
from.MoveToWorld( m_TargLoc, m_TargMap );
from.ProcessDelta();
Effects.SendLocationParticles( EffectItem.Create( m_TargLoc, m_TargMap, EffectItem.DefaultDuration ), 0x3728, 10, 10, 5023 );
from.PlaySound( 0x1FE );
}
}
示例2: OnMoveOver
public override bool OnMoveOver(Mobile m)
{
Point3D NewLoc = new Point3D(m.X + m_XInc, m.Y + m_YInc, m.Z);
if (m_XInc != 0 || m_YInc != 0)
{
int inc = 0;
int dir = 0;
if (m_XInc > 0)
{
inc = m_XInc;
dir = 1;
}
else if (m_XInc < 0)
{
inc = -m_XInc;
dir = 2;
}
if (m_YInc > 0)
{
inc = m_YInc;
dir = 3;
}
else if (m_YInc < 0)
{
inc = -m_YInc;
dir = 4;
}
m.Location = NewLoc;
m.ProcessDelta();
new EffectTimer(dir, inc, Location, m).Start();
}
return false;
}
示例3: Thrown
private void Thrown( Mobile m )
{
Map map = this.Map;
if ( map != null )
{
for ( int i = 0; i < 10; ++i )
{
if ( this.Direction == Direction.Up || this.Direction == Direction.North || this.Direction == Direction.Right )
{
yaxis = this.Y - 6;
}
else if ( this.Direction == Direction.Down || this.Direction == Direction.South || this.Direction == Direction.Left )
{
yaxis = this.Y + 6;
}
else
{
yaxis = this.Y;
}
if ( this.Direction == Direction.Right || this.Direction == Direction.East || this.Direction == Direction.Down )
{
xaxis = this.X + 6;
}
else if ( this.Direction == Direction.Left || this.Direction == Direction.West || this.Direction == Direction.Up )
{
xaxis = this.X - 6;
}
else
{
xaxis = this.X;
}
int z = this.Z;
if ( !map.CanFit(xaxis, yaxis, z, 16, false, false ) )
continue;
Point3D from = this.Location;
Point3D to = new Point3D( xaxis, yaxis, z );
if ( !InLOS( to ) )
continue;
m.Location = to;
m.ProcessDelta();
}
}
}
示例4: MoveMobileOut
public static void MoveMobileOut( Mobile m )
{
if ( m != null )
{
if( m is PlayerMobile && !m.Alive )
{
if( m.Corpse != null && !m.Corpse.Deleted )
{
m.Corpse.MoveToWorld( lr_Exit, Map.Malas );
}
}
BaseCreature.TeleportPets( m, lr_Exit, Map.Malas );
m.Location = lr_Exit;
m.ProcessDelta();
}
}
示例5: Target
public void Target(IPoint3D p, Mobile defender)
{
Map map = defender.Map;
if (this.Parent == null || !(this.Parent is Mobile))
return;
Mobile attacker = (Mobile)this.Parent;
if (p is RecallRune)
{
RecallRune rune = (RecallRune)p;
if (rune.Marked)
{
defender.PublicOverheadMessage(Server.Network.MessageType.Regular, defender.SpeechHue, true, "*the earth trembles and time slows, a small rift appearing and drawing you both into its depth*");
attacker.SendMessage("You and your combatant have been sent to the rune\'s location.");
defender.MoveToWorld(rune.Target, rune.TargetMap);
attacker.MoveToWorld(rune.Target, rune.TargetMap);
Effects.PlaySound(defender, map, 510);
Effects.SendLocationParticles(defender, 0x37C4, 10, 10, 2023);
Effects.PlaySound(attacker, map, 510);
Effects.SendLocationParticles(attacker, 0x37C4, 10, 10, 2023);
}
else
attacker.SendMessage("That is not a valid target.");
}
else if (map == null || !map.CanSpawnMobile(p.X, p.Y, p.Z))
{
attacker.SendLocalizedMessage(501942); // That location is blocked.
}
else if (Server.Spells.SpellHelper.CheckMulti(new Point3D(p), map))
{
attacker.SendLocalizedMessage(501942); // That location is blocked.
}
else if (defender.BodyValue != 402 && defender.BodyValue != 403)
{
_lastUsed = DateTime.Now;
Point3D to = new Point3D(p);
defender.MoveToWorld(to, map);
defender.ProcessDelta();
Effects.PlaySound(defender, map, 510);
Effects.SendLocationParticles(defender, 0x37C4, 10, 10, 2023);
Effects.SendLocationParticles(EffectItem.Create(to, map, EffectItem.DefaultDuration), 0x37C4, 10, 10, 5023);
}
}
示例6: Teleport
public void Teleport( Mobile caster ) // Taken from questboss.cs and values changed (note this.Combatant = caster; was added and i have emailed you this change to questboss.cs too
{
Map map = this.Map;
if ( map != null )
{
for (int i = 0; i < 12; ++i)
{
int x = X + (Utility.RandomMinMax(-1, 1));
int y = Y + (Utility.RandomMinMax(-1, 1));
int z = Z;
if (!map.CanFit(x, y, z, 16, false, false))
continue;
Point3D from = caster.Location;
Point3D to = new Point3D(x, y, z);
if (!InLOS(to))
continue;
caster.Location = to;
caster.ProcessDelta();
caster.Combatant = null;
this.Combatant = caster;
caster.Freeze(TimeSpan.FromSeconds(1.5));
Effects.SendLocationParticles(EffectItem.Create(from, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
Effects.SendLocationParticles(EffectItem.Create(to, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
Effects.PlaySound(to, map, 0x1FE);
}
}
}
示例7: OnGotMeleeAttack
public override void OnGotMeleeAttack(Mobile attacker) //taken from ElementalChamp.cs
{
base.OnGotMeleeAttack(attacker);
if (0.25 >= Utility.RandomDouble())
DrainStam();
if (Utility.Random(4) < 1)
{
Map map = this.Map;
if (map != null)
{
for (int i = 0; i < 10; ++i)
{
int x = X + (Utility.RandomMinMax(-15, 15));
int y = Y + (Utility.RandomMinMax(-15, 15));
int z = Z;
if (!map.CanFit(x, y, z, 16, false, false))
continue;
Point3D from = attacker.Location;
Point3D to = new Point3D(x, y, z);
if (!InLOS(to))
continue;
attacker.Location = to;
attacker.ProcessDelta();
attacker.Combatant = null;
attacker.Freeze(TimeSpan.FromSeconds(10.0));
Effects.SendLocationParticles(EffectItem.Create(from, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
Effects.SendLocationParticles(EffectItem.Create(to, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
Effects.PlaySound(to, map, 0x1FE);
}
}
}
}
示例8: Teleport
public void Teleport( Mobile caster )
{
Map map = this.Map;
if ( map != null )
{
for (int i = 0; i < 10; ++i)
{
int x = X + (Utility.RandomMinMax(-1, 1));
int y = Y + (Utility.RandomMinMax(-1, 1));
int z = Z;
if (!map.CanFit(x, y, z, 16, false, false))
continue;
Point3D from = caster.Location;
Point3D to = new Point3D(x, y, z);
if (!InLOS(to))
continue;
caster.Location = to;
caster.ProcessDelta();
caster.Combatant = null;
this.Combatant = caster;
caster.Freeze(TimeSpan.FromSeconds(2.0));
Effects.SendLocationParticles(EffectItem.Create(from, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
Effects.SendLocationParticles(EffectItem.Create(to, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
Effects.PlaySound(to, map, 0x1FE);
}
}
}
示例9: SendIndividualFlashEffect
public static void SendIndividualFlashEffect(Mobile e, FlashType flash)
{
if (e == null || e.NetState == null) return;
Map map = e.Map;
if (map == null)
return;
e.ProcessDelta();
Packet flashEffect = null;
NetState state = e.NetState;
if (state.Version >= m_FlashEffectVersion)
{
if (flashEffect == null)
flashEffect = Packet.Acquire(new FlashEffect(flash));
state.Send(flashEffect);
}
Packet.Release(flashEffect);
}
示例10: OnTarget
private void OnTarget( Mobile from, object targeted )
{
IPoint3D p = targeted as IPoint3D;
Map map = from.Map;
SpellHelper.GetSurfaceTop( ref p );
Point3D to = new Point3D( p );
if ( Server.Misc.WeightOverloading.IsOverloaded( from ) )
{
from.SendLocalizedMessage( 502359, "", 0x22 ); // Thou art too encumbered to move.
}
else if ( map == null || !map.CanFit( p.X, p.Y, p.Z, 16 ) )
{
from.SendLocalizedMessage( 501942 ); // That location is blocked.
}
else if ( SpellHelper.CheckMulti( to, map ) )
{
from.SendLocalizedMessage( 501942 ); // That location is blocked.
}
else
{
SpellHelper.Turn( from, p );
Effects.SendLocationParticles( EffectItem.Create( from.Location, from.Map, EffectItem.DefaultDuration ), 0x3728, 10, 10, 2023 );
Regions.HouseRegion destRgn = Region.Find( to, from.Map ) as Regions.HouseRegion;
if ( destRgn != null && destRgn.House != null )
{
if ( ( from.Region == destRgn && destRgn.House is Multis.LargePatioHouse ) || ( from.Region != destRgn && destRgn.House.IsInside( to, 15 ) ) )
{
from.SendLocalizedMessage( 501942 ); // That location is blocked.
return;
}
}
from.Location = to;
from.ProcessDelta();
Effects.SendLocationParticles( EffectItem.Create( to, from.Map, EffectItem.DefaultDuration ), 0x3728, 10, 10, 5023 );
from.PlaySound( 0x1FE );
}
}
示例11: OnGaveMeleeAttack
public override void OnGaveMeleeAttack(Mobile defender)
{
if (DoElementalChamp && Utility.Random(2) < 1)
{
Map map = this.Map;
if ( map != null )
{
// try 10 times to find a teleport spot
for (int i = 0; i < 10; ++i)
{
int x = X + (Utility.RandomMinMax(-10, 15));
int y = Y + (Utility.RandomMinMax(-10, 15));
int z = Z;
if (!map.CanFit(x, y, z, 16, false, false))
continue;
Point3D from = defender.Location;
Point3D to = new Point3D(x, y, z);
if (!InLOS(to))
continue;
defender.Location = to;
defender.ProcessDelta();
defender.Combatant = null;
defender.Freeze(TimeSpan.FromSeconds(5.0));
Effects.SendLocationParticles(EffectItem.Create(from, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
Effects.SendLocationParticles(EffectItem.Create(to, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
Effects.PlaySound(to, map, 0x1FE);
DoECTeleport(this);
}
}
}
base.OnGaveMeleeAttack(defender);
}