Object Factory

Datum: 22/11/2014 23:42:58

Staženo: 348x

Popis:

Autor Leny-m

// podpurny skript pro ziskavani grafik, barev a jmen itemu
// vystup do Phoenix/objects_print.txt v podobe Name Graphic Color
// skript ukoncite klavesou ESC pri vyberu
// ,scan


Hodnocení: 3.4/10 (71 hlasy)

Download file:cs

Příkazy:

  • ,scan

Kód:

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using Phoenix;
using Phoenix.WorldData;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Reflection;
using System.Security.Permissions;
 
// made by Leny-m
 
namespace Phoenix.Scripts
{
    public class ObjectFactory
    {
         
        List<ObjectFactoryItem> items = new List<ObjectFactoryItem>();
         
        [Command]
        public void Scan()
        {
            if(File.Exists(getPath("objects")))
            {
                loadObjects("objects");
            } 
             
            Scan(World.Ground);
            UOItem container = new UOItem(UIManager.TargetObject());
            while(container.Serial != 0xFFFFFFFF)
            {
                Scan(container);
                container = new UOItem(UIManager.TargetObject());
                UO.Print(container.Serial);
            }
             
            saveObjects("objects");
            printObjects("objects_print.txt");
            UO.Print("Done");        
        }
         
        private void Scan(ItemsCollection col)
        {
            foreach(UOItem item in col)
            {
                if(item.Graphic == 0x0E76 || item.Graphic == 0x0E75 || item.Graphic == 0x0E80
                || item.Graphic == 0x0E79 || item.Graphic == 0x09B0) // pytlik, batoh, drevena krabice, strong box, pouch
                {
                    item.Use();
                    Scan(item);
                }
                if(!AlreadyAdded(item))
                {
                    UO.ClickObject(item.Serial);
                    UO.Wait(500);               
                    items.Add(new ObjectFactoryItem(item.Graphic, item.Color, item.Name));
                }
            }           
        }
         
        private void Scan(UOItem container)
        {
            ItemsCollection col = container.AllItems;
            container.Use();
            UO.Wait(1000);
            Scan(col);
        }
         
        private void printObjects(string fileName)
        {
            string path = getPath(fileName);
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(path))
            {
                file.WriteLine("Name Graphic Color");
                foreach (ObjectFactoryItem item in items)
                {
                    file.WriteLine(item.n + " " + item.g + " " + item.c);
                }
            }           
        }
         
        private void saveObjects(string fileName)
        {
            string path = getPath(fileName);
            using (BinaryWriter writer = new BinaryWriter(File.Open(path, FileMode.Create, FileAccess.Write)))
                foreach (ObjectFactoryItem item in items)
                {
                    writer.Write(item.g);
                    writer.Write(item.c);
                    writer.Write(item.n);
                }             
             
        }
         
        private void loadObjects(string fileName)
        {
            string path = getPath(fileName);
            items = new List<ObjectFactoryItem>();
            using (BinaryReader reader = new BinaryReader(new System.IO.FileStream(path, FileMode.Open, FileAccess.Read),Encoding.ASCII))
            {
                while (reader.PeekChar() != -1)
                {
                    items.Add(new ObjectFactoryItem(reader.ReadUInt16(),reader.ReadUInt16(),(string)reader.ReadString()));
                }
            }       
        }
         
        private string getPath(string fileName)
        {
            string path = "";
             
            string currentDir = Environment.CurrentDirectory;
            DirectoryInfo parent = System.IO.Directory.GetParent(currentDir);
            path = parent+"Phoenix"+fileName;
            UO.Print("File path:");
            UO.Print(path);                     
             
            return path;
        }         
         
        private bool AlreadyAdded(UOItem item)
        {
            foreach(ObjectFactoryItem ite in items)
            {
                if(ite.g == item.Graphic && ite.c == item.Color)
                {
                    return true;
                }
            }  
            return false;
        }
         
    }
     
    class ObjectFactoryItem
    {
        public Graphic g;
        public ushort c;
        public string n;
         
        public ObjectFactoryItem(Graphic g, ushort c, string n)
        {
            this.g = g;
            this.c = c;
            this.n = n;
        }
    }
}
Khinkali
20 Apr 2026

Discover exciting ปั่นสล็อต gameplay features and bonus opportunities, while learning techniques that help you play smarter and more slotแท้ effectively.

Nový komentář