Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - darklotus

Pages: [1]
1
New member introductions / Hey all
« on: December 22, 2010, 03:26:50 AM »
Im DarkLotus/Belgeran/Infotech1 Been playing UO since 98. Always free shards Santiago, Mythik, Demise, Pandora to name a few. The past 10 years or so ive only played to macro and script, i started with just easyuo, currently im working with uolite and uomachine as C# is my favoured language. I wrote a client similar to uostealth/uolite in C#, but dropped the project due to the amount of work feature completness was.
Currently im working with frontends for uolite to allow for easy creation of scripts( well easier ). code.google.com/p/darkliteuo/



2
UO Machine Corner / Loot Script
« on: December 18, 2010, 02:16:45 AM »
Update of the sample loot script to work with latest uomachine.

Rather nice app, Its a pity work stopped as the latest client and latest razor fail to work with it.
Memory editing is my weakest point, so i havnt worked out how to fix the offsets yet.

Code: [Select]
using System;
using System.Threading;
using UOMachine;
using UOMachine.Macros;
using UOMachine.Data;
using UOMachine.Utility;
using UOMachine.Events;
using System.Collections.Generic;

namespace UOMScript
{
    public class Script : IScriptInterface
    {
        private bool myScriptRunning = true;
        private PlayerMobile myPlayer;
        private const int myClient = 0, myActionDelay = 650;
        private static string[] EUOLootTypes = { "POF", "ZLF", "RWF", "OZF", "LZF" };
        private int[] LootTypes = { 3821, 3903, 3617 } ;
        private Item LootBag;
        private DateTime myLastActionTime;
        private int myTargetCorpse;
        private int targetCorpse
        {
            get { return Thread.VolatileRead(ref myTargetCorpse); }
            set { myTargetCorpse = value; }
        }
        public void Start()
        {
            IncomingPackets.ContainerContentsEvent +=new IncomingPackets.dContainerContents(IncomingPackets_ContainerContentsEvent);
            IncomingPackets.MobileDeathEvent +=new IncomingPackets.dMobileDeath(IncomingPackets_MobileDeathEvent);
            
            UOMachine.Macros.Macro.GetPlayer(myClient,out myPlayer);
            //myPlayer.GetEquippedItem(Layer.Backpack, out LootBag);
            if (!Macro.GetItem(myClient, 1077150318, out LootBag)) { Stop(); }
            UOMachine.Macros.Macro.Speak(0, Speech.Say, LootBag.Name);
            while (myScriptRunning)
            {
                //TODO: Implement functionality
                Thread.Sleep(5);
            }
        }
        public static int[] EUOToInt(string[] val)
        {
            List<int> outs = new List<int>();
            foreach (string s in val)
            {
                uint temp = EUOToInt(s);
                outs.Add(Convert.ToInt32(temp));
            }
            return outs.ToArray();
        }
        public static uint EUOToInt(String val)
        //Code by BtbN
        {
            val = val.ToUpper(); // Important!
            uint num = 0;
            for (int p = val.Length - 1; p >= 0; p--)
                num = num * 26 + (((uint)val[p]) - 65);
            num = (num - 7) ^ 0x45;
            return num;
        }
void  IncomingPackets_ContainerContentsEvent(int client, ItemCollection container)
{
    
    Item corpse;
    UOMachine.Macros.Macro.GetItem(client, container.Serial, out corpse);
    
if (corpse.ID == 8198)
            {
                Item[] goldItems;
                if (container.FindItems(LootTypes, out goldItems))
                {
                    
                    foreach (Item i in goldItems)
                    {
                        DelayAction();
                        MacroEx.DragItem(client, i.Serial, i.Count);
                        DelayAction();
                        Thread.Sleep(500);
                        MacroEx.DropItem(client, i.Serial, LootBag.Serial);
                        //myDropItem(i.Serial, LootBag.Serial);
                        
                        UOMachine.Macros.Macro.Speak(0, Speech.Say, "Looted:" + i.ID.ToString());
                    }
                }
                targetCorpse = 0;
            }
}
public static void myDropItem(int serial, int containerSerial)
{
    byte[] packet;
        packet = new byte[14];
        packet[10] = (byte)(containerSerial >> 24);
        packet[11] = (byte)(containerSerial >> 16);
        packet[12] = (byte)(containerSerial >> 8);
        packet[13] = (byte)(containerSerial);
        packet[0] = 0x08;
        packet[1] = (byte)(serial >> 24);
        packet[2] = (byte)(serial >> 16);
        packet[3] = (byte)(serial >> 8);
        packet[4] = (byte)(serial);
        packet[5] = 0xFF;
        packet[6] = 0xFF;
        packet[7] = 0xFF;
        packet[8] = 0xFF;
        MacroEx.SendPacketToServer(0, packet);
        
    
}
void  IncomingPackets_MobileDeathEvent(int client, int mobileSerial, int corpseSerial)
{
   Item i;
      UOMachine.Macros.Macro.Speak(client, Speech.Say, "Container event");
            if(UOMachine.Macros.Macro.GetItem(client,corpseSerial,out i))
            {
                double distance = UOMath.Distance(myPlayer.X, myPlayer.Y, i.X, i.Y);
                UOMachine.Macros.Macro.Speak(client, Speech.Say, "Container Opened" + distance);
                if (distance <= 2)
                {
                    targetCorpse = corpseSerial;
                    DelayAction();
                    MacroEx.UseItem(client, corpseSerial);
                    
                }
            }
}
private void DelayAction()
{
    if (myLastActionTime == null)
    {
        myLastActionTime = DateTime.Now;
        return;
    }
    TimeSpan t = DateTime.Now - myLastActionTime;
    int waitTime = myActionDelay - (int)t.TotalMilliseconds;
    if (waitTime > 0) Thread.Sleep(waitTime);
    myLastActionTime = DateTime.Now;
}
        public void Stop()
        {
            myScriptRunning = false;
            IncomingPackets.ContainerContentsEvent -= IncomingPackets_ContainerContentsEvent;
            IncomingPackets.MobileDeathEvent -= IncomingPackets_MobileDeathEvent;
        }

    }
}

Pages: [1]