RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Changing a "Private" variable forcibly?

Jeff;660343 said:
wait just a min, YOUR movement speeds....thats client based....
Hmm, I guess there's no easy way to go through that one eh?

Only one thing I can think of is checking the [speedboost from the 2.0 core... But I think that just makes it act like you're on a mount... and i'm 1.0 :rolleyes:


Well that's just really a shame. I was looking forward to items with an EnhanceSpeed attribute or something like that.

Edit:
I attempted to use the following:

Type mobileType = Type.GetType("Server.Mobile");
FieldInfo walkFoot = mobileType.GetField("m_WalkFoot", BindingFlags.NonPublic);
walkFoot.SetValue(null, newVal);
I was unable to use the SetValue, after looking into it a bit I was still unsuccessful (likely due to what Jeff said, it's client based... I thought about that, but then was still wondering how speedhacks and stuff worked... bleh :\). Anywho, I ended up with this script:

Code:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Reflection;
using System.Collections;
using System.Diagnostics;
using Server;
using Server.Network;
using Server.Accounting;
using Server.Guilds;
using Server.Gumps;
using Server.Mobiles;
using Server.Items;
using System.Globalization;

namespace Server.Items
{ 
    public class ZDSSpeedEditor : Item 
    {
        private AccessLevel m_AccessLevelRequired = AccessLevel.Administrator;
        private TimeSpan m_NewWalkFoot = TimeSpan.FromSeconds( 0.4 );
        private TimeSpan m_NewRunFoot = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_NewWalkMount = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_NewRunMount = TimeSpan.FromSeconds( 0.1 );
        
        private TimeSpan m_WalkFoot = TimeSpan.FromSeconds( 0.4 );
        private TimeSpan m_RunFoot = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_WalkMount = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_RunMount = TimeSpan.FromSeconds( 0.1 );
        
        [CommandProperty( AccessLevel.Administrator )]
        public AccessLevel AccessLevelRequired { get{ return m_AccessLevelRequired; } set { m_AccessLevelRequired = value; } }

        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewWalkFoot { get{ return m_WalkFoot; } set { m_WalkFoot = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewRunFoot { get{ return m_RunFoot; } set { m_RunFoot = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewWalkMount { get{ return m_WalkMount; } set { m_WalkMount = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewRunMount { get{ return m_RunMount; } set { m_RunMount = value; } }
        
        [Constructable] 
        public ZDSSpeedEditor() : base( 0xED4 )
        { 
            Movable = false;
            Name = "Zeratuls Downfall In-Game Mobile Speed Editor [Admin Only]";
            Hue = 2243;
        } 

        public override void OnDoubleClick( Mobile from )
        {
            if( (from != null) && (from.AccessLevel >= m_AccessLevelRequired) )
            {
                int ErrorLoc = 0;
                string Comment = "//";
                StreamWriter op = new StreamWriter( "MobileSpeedEditor.log", true );
                StreamWriter op2 = new StreamWriter( "MobileSpeedEditorErrors.log", true );
                
                try
                {
                    from.SendMessage(94, "4. typeof(Server.Mobile): {0}", typeof(Server.Mobile).ToString());
                    
                    ErrorLoc = 1;
                    FieldInfo myFieldInfoWF = typeof(Server.Mobile).GetField("m_WalkFoot", BindingFlags.Public);
                    ErrorLoc = 2;
                    FieldInfo myFieldInfoRF = typeof(Server.Mobile).GetField("m_RunFoot", BindingFlags.Public | BindingFlags.Instance);
                    ErrorLoc = 3;
                    FieldInfo myFieldInfoWM = typeof(Server.Mobile).GetField("m_WalkMount", BindingFlags.NonPublic); //was "m_WalkMount"
                    ErrorLoc = 4;
                    FieldInfo myFieldInfoRM = typeof(Server.Mobile).GetField("m_RunMount", BindingFlags.NonPublic | BindingFlags.Instance); //
                    ErrorLoc = 5;
                    
                    
                    int i = 0;
                    int j = 0;
                    int k = 0;
                    
                    op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                    for( i = 0; i < 20; i++ )
                    {
                        if( i <= 9 )
                        {
                            object myObject = from;
                            if( i == 0 )
                                myObject = from;
                            if( i == 1 )
                                myObject = new Mobile();
                            if( i == 2 )
                                myObject = null;
                            if( i == 3 )
                                myObject = from as object;
                            if( i == 4 )
                                myObject = new Mobile() as object;
                            if( i == 5 )
                                myObject = null as object;
                            if( i == 6 )
                                myObject = from as Mobile;
                            if( i == 7 )
                                myObject = new Mobile() as Mobile;
                            if( i == 8 )
                                myObject = null as Mobile;
                                
                            for( j = 0; j < 30; j++ )
                            {
                                from.SendMessage(32, "try{0}.{1}.{2}", i, j, k);
                                op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                if( j == 1 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 2 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 3 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 4 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 5 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 6 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 7 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 8 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 9 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 10 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 11 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 12 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 13 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 14 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 15 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 16 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 17 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 18 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 19 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 20 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 21 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 22 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 23 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 24 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 25 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 26 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 27 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                            }
                        }
                        else
                        {
                            Mobile myObject = from;
                            if( i == 10 )
                                myObject = from;
                            if( i == 11 )
                                myObject = new Mobile();
                            if( i == 12 )
                                myObject = null;
                            if( i == 13 )
                                myObject = from as PlayerMobile;
                            if( i == 14 )
                                myObject = new Mobile() as PlayerMobile;
                            if( i == 15 )
                                myObject = null as PlayerMobile;
                            if( i == 16 )
                                myObject = from as Mobile;
                            if( i == 17 )
                                myObject = new Mobile() as Mobile;
                            if( i == 18 )
                                myObject = null as Mobile;
                                
                            for( k = 0; k < 30; k++ )
                            {
                                if( k == 0 )
                                    op.WriteLine( "\n\n\n\n\n\n\n\n\n\n\n" );
                                    
                                from.SendMessage(32, "try{0}.{1}.{2}", i, j, k);
                                op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                if( j == 1 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 2 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 3 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 4 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 5 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 6 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 7 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 8 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 9 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 10 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 11 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 12 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 13 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 14 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 15 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 16 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 17 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 18 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 19 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 20 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 21 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 22 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 23 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 24 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 25 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 26 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 27 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                            }
                        }
                    }
                    
                    //GetValue( object obj );
                    //SetValue( object obj, object value );
                    //GetValueDirect( TypedReference obj );
                    //SetValueDirect( TypedReference obj, object value );
                    //myFieldInfo.SetValue(myObject, "New value", BindingFlags.Public, null, null); 
                }
                catch (ArgumentNullException e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "ArgumentNullException\n{0}", e);
                }
                catch (NullReferenceException  e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "NullReferenceException\n{0}", e);
                }
                catch (InvalidCastException e) 
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "InvalidCastException\n{0}", e);
                }
                catch (Exception e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "Exception\n{0}", e);
                }
                catch
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                }
                
                if( ErrorLoc >= 9 )
                    from.SendMessage(64, "Work Complete.");
                else
                    from.SendMessage(32, "Error occured...");
                op.Close();
                op2.Close();
            }
            else if( (from != null) && (from.AccessLevel < m_AccessLevelRequired) )
            {
                from.SendMessage( 32, "Reserved for {0}+ at the current moment. Sorry!", m_AccessLevelRequired);
                return;
            }
        }
        
        public ZDSSpeedEditor( Serial serial ) : base( serial ) 
        {
        }
        
        public override void Serialize( GenericWriter writer ) 
        {
            base.Serialize( writer ); 
            writer.Write( (int) 0 ); // version 
        }
        
        public override void Deserialize( GenericReader reader ) 
        {
            base.Deserialize( reader ); 
            int version = reader.ReadInt(); 
        }
    } 
}
 

Jeff

Lord
IHaveRegistered;660448 said:
Hmm, I guess there's no easy way to go through that one eh?

Only one thing I can think of is checking the [speedboost from the 2.0 core... But I think that just makes it act like you're on a mount... and i'm 1.0 :rolleyes:


Well that's just really a shame. I was looking forward to items with an EnhanceSpeed attribute or something like that.

Edit:
I attempted to use the following:


I was unable to use the SetValue, after looking into it a bit I was still unsuccessful (likely due to what Jeff said, it's client based... I thought about that, but then was still wondering how speedhacks and stuff worked... bleh :\). Anywho, I ended up with this script:

Code:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Reflection;
using System.Collections;
using System.Diagnostics;
using Server;
using Server.Network;
using Server.Accounting;
using Server.Guilds;
using Server.Gumps;
using Server.Mobiles;
using Server.Items;
using System.Globalization;

namespace Server.Items
{ 
    public class ZDSSpeedEditor : Item 
    {
        private AccessLevel m_AccessLevelRequired = AccessLevel.Administrator;
        private TimeSpan m_NewWalkFoot = TimeSpan.FromSeconds( 0.4 );
        private TimeSpan m_NewRunFoot = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_NewWalkMount = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_NewRunMount = TimeSpan.FromSeconds( 0.1 );
        
        private TimeSpan m_WalkFoot = TimeSpan.FromSeconds( 0.4 );
        private TimeSpan m_RunFoot = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_WalkMount = TimeSpan.FromSeconds( 0.2 );
        private TimeSpan m_RunMount = TimeSpan.FromSeconds( 0.1 );
        
        [CommandProperty( AccessLevel.Administrator )]
        public AccessLevel AccessLevelRequired { get{ return m_AccessLevelRequired; } set { m_AccessLevelRequired = value; } }

        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewWalkFoot { get{ return m_WalkFoot; } set { m_WalkFoot = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewRunFoot { get{ return m_RunFoot; } set { m_RunFoot = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewWalkMount { get{ return m_WalkMount; } set { m_WalkMount = value; } }
        [CommandProperty( AccessLevel.Administrator )]
        public TimeSpan NewRunMount { get{ return m_RunMount; } set { m_RunMount = value; } }
        
        [Constructable] 
        public ZDSSpeedEditor() : base( 0xED4 )
        { 
            Movable = false;
            Name = "Zeratuls Downfall In-Game Mobile Speed Editor [Admin Only]";
            Hue = 2243;
        } 

        public override void OnDoubleClick( Mobile from )
        {
            if( (from != null) && (from.AccessLevel >= m_AccessLevelRequired) )
            {
                int ErrorLoc = 0;
                string Comment = "//";
                StreamWriter op = new StreamWriter( "MobileSpeedEditor.log", true );
                StreamWriter op2 = new StreamWriter( "MobileSpeedEditorErrors.log", true );
                
                try
                {
                    from.SendMessage(94, "4. typeof(Server.Mobile): {0}", typeof(Server.Mobile).ToString());
                    
                    ErrorLoc = 1;
                    FieldInfo myFieldInfoWF = typeof(Server.Mobile).GetField("m_WalkFoot", BindingFlags.Public);
                    ErrorLoc = 2;
                    FieldInfo myFieldInfoRF = typeof(Server.Mobile).GetField("m_RunFoot", BindingFlags.Public | BindingFlags.Instance);
                    ErrorLoc = 3;
                    FieldInfo myFieldInfoWM = typeof(Server.Mobile).GetField("m_WalkMount", BindingFlags.NonPublic); //was "m_WalkMount"
                    ErrorLoc = 4;
                    FieldInfo myFieldInfoRM = typeof(Server.Mobile).GetField("m_RunMount", BindingFlags.NonPublic | BindingFlags.Instance); //
                    ErrorLoc = 5;
                    
                    
                    int i = 0;
                    int j = 0;
                    int k = 0;
                    
                    op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                    for( i = 0; i < 20; i++ )
                    {
                        if( i <= 9 )
                        {
                            object myObject = from;
                            if( i == 0 )
                                myObject = from;
                            if( i == 1 )
                                myObject = new Mobile();
                            if( i == 2 )
                                myObject = null;
                            if( i == 3 )
                                myObject = from as object;
                            if( i == 4 )
                                myObject = new Mobile() as object;
                            if( i == 5 )
                                myObject = null as object;
                            if( i == 6 )
                                myObject = from as Mobile;
                            if( i == 7 )
                                myObject = new Mobile() as Mobile;
                            if( i == 8 )
                                myObject = null as Mobile;
                                
                            for( j = 0; j < 30; j++ )
                            {
                                from.SendMessage(32, "try{0}.{1}.{2}", i, j, k);
                                op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                if( j == 1 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 2 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 3 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 4 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 5 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 6 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 7 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 8 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 9 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 10 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 11 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 12 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 13 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 14 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 15 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 16 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 17 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 18 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 19 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 20 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 21 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 22 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 23 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 24 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 25 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 26 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 27 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                            }
                        }
                        else
                        {
                            Mobile myObject = from;
                            if( i == 10 )
                                myObject = from;
                            if( i == 11 )
                                myObject = new Mobile();
                            if( i == 12 )
                                myObject = null;
                            if( i == 13 )
                                myObject = from as PlayerMobile;
                            if( i == 14 )
                                myObject = new Mobile() as PlayerMobile;
                            if( i == 15 )
                                myObject = null as PlayerMobile;
                            if( i == 16 )
                                myObject = from as Mobile;
                            if( i == 17 )
                                myObject = new Mobile() as Mobile;
                            if( i == 18 )
                                myObject = null as Mobile;
                                
                            for( k = 0; k < 30; k++ )
                            {
                                if( k == 0 )
                                    op.WriteLine( "\n\n\n\n\n\n\n\n\n\n\n" );
                                    
                                from.SendMessage(32, "try{0}.{1}.{2}", i, j, k);
                                op.WriteLine( "{0}, ErrorLoc: {1}, myFieldInfoWF: {2}, i: {3}, j: {4}, k: {5} ({6}.{7}.{8})", Comment, ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                if( j == 1 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 2 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 3 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 4 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 5 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 6 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 7 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 8 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 9 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 10 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 11 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 12 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 13 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 14 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 15 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 16 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 17 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 18 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 19 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 20 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 21 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 22 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 23 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 24 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 25 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 26 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                                if( j == 27 )
                                {
                                    try
                                    {
                                        myFieldInfoWF.SetValue(myObject, m_WalkFoot, BindingFlags.Public & BindingFlags.NonPublic & BindingFlags.Static & BindingFlags.Instance, null, null);
                                        op.WriteLine( "ErrorLoc: {0}, myFieldInfoWF: {1}, i: {2}, j: {3}, k: {4} ({5}.{6}.{7})", ErrorLoc, myFieldInfoWF, i, j, k, i, j, k );
                                    } catch{}
                                }
                            }
                        }
                    }
                    
                    //GetValue( object obj );
                    //SetValue( object obj, object value );
                    //GetValueDirect( TypedReference obj );
                    //SetValueDirect( TypedReference obj, object value );
                    //myFieldInfo.SetValue(myObject, "New value", BindingFlags.Public, null, null); 
                }
                catch (ArgumentNullException e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "ArgumentNullException\n{0}", e);
                }
                catch (NullReferenceException  e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "NullReferenceException\n{0}", e);
                }
                catch (InvalidCastException e) 
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "InvalidCastException\n{0}", e);
                }
                catch (Exception e)
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                    op2.WriteLine( "Exception\n{0}", e);
                }
                catch
                {
                    from.SendMessage(32, "ErrorLoc: {0}", ErrorLoc);
                }
                
                if( ErrorLoc >= 9 )
                    from.SendMessage(64, "Work Complete.");
                else
                    from.SendMessage(32, "Error occured...");
                op.Close();
                op2.Close();
            }
            else if( (from != null) && (from.AccessLevel < m_AccessLevelRequired) )
            {
                from.SendMessage( 32, "Reserved for {0}+ at the current moment. Sorry!", m_AccessLevelRequired);
                return;
            }
        }
        
        public ZDSSpeedEditor( Serial serial ) : base( serial ) 
        {
        }
        
        public override void Serialize( GenericWriter writer ) 
        {
            base.Serialize( writer ); 
            writer.Write( (int) 0 ); // version 
        }
        
        public override void Deserialize( GenericReader reader ) 
        {
            base.Deserialize( reader ); 
            int version = reader.ReadInt(); 
        }
    } 
}

You can only make a client go 3 speeds, walk run and run on a horse. If you do anything to make these any different, you will open yourself up to speedhacking. Even if you were to import the [speedboost script, this script doesnt work for players because of packet throttling. And removing that opens you up to speedhacking.
 
Jeff;660460 said:
You can only make a client go 3 speeds, walk run and run on a horse. If you do anything to make these any different, you will open yourself up to speedhacking. Even if you were to import the [speedboost script, this script doesnt work for players because of packet throttling. And removing that opens you up to speedhacking.
Hmm.

Looking at both sides here:
I could open myself up to speed hacking... BUT, I would then have a pretty cool new property/Idea for spells/items/races etc etc... I'm guessing not many people try to use speedhacks on RunUO servers (because they don't work). So I'd say it's worth a shot...

You said the [speedboost doesn't work on a player due to packet throttling, therefore in order to enable something like speedhacking, I'd have to remove the packet throttling. I'd also need to have a script which can edit packets (i just so happen to have a rough script like that... it was for another idea a while back)...

Also, how fast can one get exactly by having a speedhacking effect on themselves? Would it be laggy to do?

Jeff, you're like a barrel of help :p
Thanks a bunch everyone!
 

Jeff

Lord
IHaveRegistered;660467 said:
Hmm.

Looking at both sides here:
I could open myself up to speed hacking... BUT, I would then have a pretty cool new property/Idea for spells/items/races etc etc... I'm guessing not many people try to use speedhacks on RunUO servers (because they don't work). So I'd say it's worth a shot...

You said the [speedboost doesn't work on a player due to packet throttling, therefore in order to enable something like speedhacking, I'd have to remove the packet throttling. I'd also need to have a script which can edit packets (i just so happen to have a rough script like that... it was for another idea a while back)...

Also, how fast can one get exactly by having a speedhacking effect on themselves? Would it be laggy to do?

Jeff, you're like a barrel of help :p
Thanks a bunch everyone!
As fast as their computer can push :( and btw, lots and lots of ppl use speedhacking when they can. And not all speed hacking is blocked :( but most known ones are. I know there are kuoc speedhacks that work with runuo, im just saying its not a good idea :)
 
Jeff;660470 said:
As fast as their computer can push :( and btw, lots and lots of ppl use speedhacking when they can. And not all speed hacking is blocked :( but most known ones are. I know there are kuoc speedhacks that work with runuo, im just saying its not a good idea :)
Well that's depressing news :(

More speed could have been pretty interesting, I didn't think there were any working speedhacks for RunUO (I haven't seen any speedhackers). I seem to have a nack for thinking up very hard to impossible tasks (like this, the text flying above the monsters head, etc etc)... Shame.

Thanks a lot for your help!
 

mordero

Knight
Would it be possible to use the packet throttling only for clients that dont have this speedboost ability or spell or whatnot?
 

b0b01

Sorceror
IHaveRegistered;660473 said:
Well that's depressing news :(

More speed could have been pretty interesting, I didn't think there were any working speedhacks for RunUO (I haven't seen any speedhackers). I seem to have a nack for thinking up very hard to impossible tasks (like this, the text flying above the monsters head, etc etc)... Shame.

Thanks a lot for your help!

There are speedhacks that work for sure. Runuo has a detection for it but there is always a grey area. You have to decide wether you want the player to have a chance to lag even when he doesn't speedhack and all speedhacks detected. Or have the players never lag and have a zone in which speedhacks work up to a certain degree.

Would it be possible to use the packet throttling only for clients that dont have this speedboost ability or spell or whatnot?

Yes it's possible, check the playermobile class for fastwalkprevention and throttle methods. However for someone to walk faster he would need a speedhack because the base-client doesn't support it.
 
mordero;660480 said:
Would it be possible to use the packet throttling only for clients that dont have this speedboost ability or spell or whatnot?
That's probably one of the most intelligent ideas today! :p

Now I just need to figure out the rest, make it so that the packet throttling will only be in use when the PlayerMobile is NOT using any type of spell, ability, or whatever to effect their speed. Yeh, they can speedhack for the duration of their spell I suppose, but that's a chance i'd say i'm willing to take. I was gonna make the abilities have a double-edged sword (as in, it'll hurt you at the cost of more speed, or remove all mana for more speed for a duration... something like that).

I'm gonna go find the source code for a speedhack now. That seems like a good place for me to start on this beauty.

Thanks to all of you for your help, again.
Wish me luck :rolleyes:


Edit: I've discovered a few arguments through the "speedhack" topic...

Argument #1: Speedhack in fact does not exist for UO, and is impossible to create.
Argument #2: Speedhack simply increases the rate at which your computer processes your client, thus giving it less of a choppy effect.
Argument #3a: Speedhack does exist...
Argument #3b: Speedhack exists, and it can "make you FLY"...
Argument #4: Speedhack once existed, but does not work anymore.

Basically, what i'd be trying to do is remove the speed cap from the client completely without recoding the client... Or send a packet to the player to remove this little "block" or whatever... Something to make them faster than they should be!
 

Courageous

Wanderer
I once accidentally created the most impressive seeming speed hack. It was when I was writing the LOS code. I would blast across the screen, zzzzzoooooooooom. Alas, this was just a client side effect. What was interesting about it was that with the right (i.e, wrong) response from the server, the client would lose sync and kind of do what it wanted. Was quite weird. For a while I was entertaining myself with the notion that I might provision admins with it to impress folks. Alas, no such luck.

C//
 
Courageous;664453 said:
I once accidentally created the most impressive seeming speed hack. It was when I was writing the LOS code. I would blast across the screen, zzzzzoooooooooom. Alas, this was just a client side effect. What was interesting about it was that with the right (i.e, wrong) response from the server, the client would lose sync and kind of do what it wanted. Was quite weird. For a while I was entertaining myself with the notion that I might provision admins with it to impress folks. Alas, no such luck.

C//
Shame. I do, however have yet another idea for this. I haven't started looking since I've continued work on my next patch update, but I believe this idea will work, though will look weird...

The idea was to simply increase their location... For instance, if they are moving North, their Y will increase by -1 every 1 second. Or their Y will increase by -1 every 0.5 seconds, depending on how fast they'll be enhanced.

Only issue with this is... bye bye walking animation, it'll seem like choppy motion I think... I could always have them animate the walking motion after the action is over, or something like that to try and make it look smoother... I dunno, I'll make a mental note to screw around with it later. :D

Still brainstorming ideas. The good part about this one is that I don't have to remove any anti-speedhack detectors and the such! So it'll still nab those nasty speed-hackateers :p

Well, IHR out for now. :cool:
 

Courageous

Wanderer
Only issue with this is... bye bye walking animation, it'll seem like choppy motion I think...

Have them trail fire instead. :)

I'm looking forward to the new client, to see what we can do with it.

C//
 
Courageous;664531 said:
Only issue with this is... bye bye walking animation, it'll seem like choppy motion I think...

Have them trail fire instead. :)

I'm looking forward to the new client, to see what we can do with it.

C//
Trail fire, not a bad idea there. Pretty good substitute. I also thought about this...

Have two people log on... Then use [set direction south on one of them, then [m inc y 1 on that same person. It looks like they're walking, so as long as I have it increase the direction they're running maybe it wont destroy my animation graphics...

If not, ohhh well. lol

PS. I hope they gimme some new cool stuff in the new client! :p
 

Courageous

Wanderer
Art has been the great bugaboo of the (cheap, free, open) gaming community ever since about 1990 or so, back when games started needing "producers" to pull off all the things we see and hear. Any "client" that anyone builds can at best be something like PlayUO, where all the art is borrowed from some other, original client. Hardly a "new" client at all.

C//
 
Top