示例#1
0
        internal void OnAvatarClicked(IntPtr sender)
        {
            if (Clicked == null) return;
            AvatarClick click;
            lock (instance)
                click = new AvatarClick(sender);

            Clicked(instance, click);
        }
示例#2
0
        void onClick(Instance bot, AvatarClick click)
        {
            if ( click.TargetSession == 0 )
                return;

            var source = app.GetUser(click.SourceSession);
            var target = app.GetUser(click.TargetSession);

            // Needed as there is no intermediate click event
            if ( source == null )
                return;

            // Null session suggests bot
            if ( target == null )
            {
                hitBot(source);
                return;
            }

            if ( !source.GetSettingBool(keyMode, false) || !target.GetSettingBool(keyMode, false) )
                return;

            var diffX = Math.Abs(source.X - target.X);
            var diffY = Math.Abs(source.Y - target.Y);
            var diffZ = Math.Abs(source.Z - target.Z);

            if ( diffX > .5 || diffY > .4 || diffZ > .5 )
                return;

            if ( cannotHit(source) || cannotHit(target) )
            {
                createHoverText(target.Position, 0, false);
                return;
            }

            var targetHealth = target.GetSettingInt(keyHealth, 100);
            var critical     = VPServices.Rand.Next(100) <= 10;
            var damage       = VPServices.Rand.Next(5, 25) * ( critical ? 3 : 1 );

            createHoverText(target.Position, damage, critical);
            createBloodSplat(target.Position);

            if ( targetHealth - damage <= 0 )
            {
                app.AlertAll(msgKill, target.Name, source.Name);

                target.SetSetting(keyDeath, DateTime.Now);
                target.SetSetting(keyHealth, 100);
                source.SetSetting(keyHealth, source.GetSettingInt(keyHealth) + 5);
                bot.Avatars.Teleport(click.TargetSession, AvatarPosition.GroundZero);
            }
            else
                target.SetSetting(keyHealth, targetHealth - damage);
        }